Merge pull request #239 from staltz/dataset-fix

Fix dataset module to support old browsers
pull/245/head
André Staltz 8 years ago committed by GitHub
commit 12abb54ee1

@ -1,8 +1,10 @@
import {VNode, VNodeData} from '../vnode';
import {Module} from './module';
const CAPS_REGEX = /[A-Z]/g;
function updateDataset(oldVnode: VNode, vnode: VNode): void {
var elm: HTMLElement = vnode.elm as HTMLElement,
let elm: HTMLElement = vnode.elm as HTMLElement,
oldDataset = (oldVnode.data as VNodeData).dataset,
dataset = (vnode.data as VNodeData).dataset,
key: string;
@ -11,15 +13,24 @@ function updateDataset(oldVnode: VNode, vnode: VNode): void {
if (oldDataset === dataset) return;
oldDataset = oldDataset || {};
dataset = dataset || {};
const d = elm.dataset;
for (key in oldDataset) {
if (!dataset[key]) {
delete elm.dataset[key];
if (d) {
delete d[key];
} else {
elm.removeAttribute('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase());
}
}
}
for (key in dataset) {
if (oldDataset[key] !== dataset[key]) {
elm.dataset[key] = dataset[key];
if (d) {
d[key] = dataset[key];
} else {
elm.setAttribute('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase(), dataset[key]);
}
}
}
}

Loading…
Cancel
Save