diff options
| author | Rohit Sharma <[email protected]> | 2020-11-11 12:07:04 +0530 |
|---|---|---|
| committer | XhmikosR <[email protected]> | 2020-11-14 07:09:15 +0200 |
| commit | e530118117af509ffb97029cd250a23ee08120b6 (patch) | |
| tree | bb541e3d3c692df4391359001a7e679c146bb14c /js | |
| parent | a7f04e9595205ed091a5bba71cedc4a80fc4da47 (diff) | |
| download | bootstrap-e530118117af509ffb97029cd250a23ee08120b6.tar.xz bootstrap-e530118117af509ffb97029cd250a23ee08120b6.zip | |
Get only bs prefixed data attributes
Diffstat (limited to 'js')
| -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 04b9543c8..faab54b5e 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 747e8bfd7..4f5ef715e 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', () => { |
