diff options
author | Rohit Sharma <rohit2sharma95@gmail.com> | 2020-11-11 09:37:04 +0300 |
---|---|---|
committer | XhmikosR <xhmikosr@gmail.com> | 2020-11-14 08:09:15 +0300 |
commit | e530118117af509ffb97029cd250a23ee08120b6 (patch) | |
tree | bb541e3d3c692df4391359001a7e679c146bb14c | |
parent | a7f04e9595205ed091a5bba71cedc4a80fc4da47 (diff) |
Get only bs prefixed data attributes
-rw-r--r-- | js/src/dom/manipulator.js | 8 | ||||
-rw-r--r-- | js/tests/unit/dom/manipulator.spec.js | 20 |
2 files changed, 5 insertions, 23 deletions
diff --git a/js/src/dom/manipulator.js b/js/src/dom/manipulator.js index 04b9543c8a..faab54b5ef 100644 --- a/js/src/dom/manipulator.js +++ b/js/src/dom/manipulator.js @@ -43,16 +43,14 @@ const Manipulator = { return {} } - const attributes = { - ...element.dataset - } + const attributes = {} - Object.keys(attributes) + Object.keys(element.dataset) .filter(key => key.startsWith('bs')) .forEach(key => { let pureKey = key.replace(/^bs/, '') pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length) - attributes[pureKey] = normalizeData(attributes[key]) + attributes[pureKey] = normalizeData(element.dataset[key]) }) return attributes diff --git a/js/tests/unit/dom/manipulator.spec.js b/js/tests/unit/dom/manipulator.spec.js index 747e8bfd74..4f5ef715e8 100644 --- a/js/tests/unit/dom/manipulator.spec.js +++ b/js/tests/unit/dom/manipulator.spec.js @@ -60,32 +60,16 @@ describe('Manipulator', () => { expect().nothing() }) - it('should get all data attributes, without bs prefixed as well', () => { - fixtureEl.innerHTML = '<div data-bs-toggle="tabs" data-bs-target="#element" data-another="value"></div>' + it('should get only bs prefixed data attributes without bs namespace', () => { + fixtureEl.innerHTML = '<div data-bs-toggle="tabs" data-bs-target="#element" data-another="value" data-target-bs="#element" data-in-bs-out="in-between"></div>' const div = fixtureEl.querySelector('div') expect(Manipulator.getDataAttributes(div)).toEqual({ - bsToggle: 'tabs', - bsTarget: '#element', - another: 'value', toggle: 'tabs', target: '#element' }) }) - - it('should remove just prefixed bs keyword from the attributes and override original attribute with bs prefixed', () => { - fixtureEl.innerHTML = '<div data-bs-toggle="tabs" data-toggle="override" data-target-bs="#element" data-in-bs-out="in-between"></div>' - - const div = fixtureEl.querySelector('div') - - expect(Manipulator.getDataAttributes(div)).toEqual({ - bsToggle: 'tabs', - targetBs: '#element', - inBsOut: 'in-between', - toggle: 'tabs' - }) - }) }) describe('getDataAttribute', () => { |