Skip to content

Commit

Permalink
Merge pull request #1 from rohit2sharma95/dom-data-map
Browse files Browse the repository at this point in the history
Update data to map
  • Loading branch information
alpadev committed Nov 20, 2020
2 parents 0f14a91 + 61c1c5d commit ba4728e
Show file tree
Hide file tree
Showing 13 changed files with 71 additions and 192 deletions.
8 changes: 4 additions & 4 deletions js/src/alert.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class Alert {
this._element = element

if (this._element) {
Data.setData(element, DATA_KEY, this)
Data.setData(element, this)
}
}

Expand All @@ -73,7 +73,7 @@ class Alert {
}

dispose() {
Data.removeData(this._element, DATA_KEY)
Data.removeData(this._element)
this._element = null
}

Expand Down Expand Up @@ -113,7 +113,7 @@ class Alert {

static jQueryInterface(config) {
return this.each(function () {
let data = Data.getData(this, DATA_KEY)
let data = Data.getData(this)

if (!data) {
data = new Alert(this)
Expand All @@ -136,7 +136,7 @@ class Alert {
}

static getInstance(element) {
return Data.getData(element, DATA_KEY)
return Data.getData(element)
}
}

Expand Down
10 changes: 5 additions & 5 deletions js/src/button.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
class Button {
constructor(element) {
this._element = element
Data.setData(element, DATA_KEY, this)
Data.setData(element, this)
}

// Getters
Expand All @@ -53,15 +53,15 @@ class Button {
}

dispose() {
Data.removeData(this._element, DATA_KEY)
Data.removeData(this._element)
this._element = null
}

// Static

static jQueryInterface(config) {
return this.each(function () {
let data = Data.getData(this, DATA_KEY)
let data = Data.getData(this)

if (!data) {
data = new Button(this)
Expand All @@ -74,7 +74,7 @@ class Button {
}

static getInstance(element) {
return Data.getData(element, DATA_KEY)
return Data.getData(element)
}
}

Expand All @@ -89,7 +89,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {

const button = event.target.closest(SELECTOR_DATA_TOGGLE)

let data = Data.getData(button, DATA_KEY)
let data = Data.getData(button)
if (!data) {
data = new Button(button)
}
Expand Down
12 changes: 6 additions & 6 deletions js/src/carousel.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ class Carousel {
this._pointerEvent = Boolean(window.PointerEvent)

this._addEventListeners()
Data.setData(element, DATA_KEY, this)
Data.setData(element, this)
}

// Getters
Expand Down Expand Up @@ -219,7 +219,7 @@ class Carousel {

dispose() {
EventHandler.off(this._element, EVENT_KEY)
Data.removeData(this._element, DATA_KEY)
Data.removeData(this._element)

this._items = null
this._config = null
Expand Down Expand Up @@ -526,7 +526,7 @@ class Carousel {
// Static

static carouselInterface(element, config) {
let data = Data.getData(element, DATA_KEY)
let data = Data.getData(element)
let _config = {
...Default,
...Manipulator.getDataAttributes(element)
Expand Down Expand Up @@ -585,14 +585,14 @@ class Carousel {
Carousel.carouselInterface(target, config)

if (slideIndex) {
Data.getData(target, DATA_KEY).to(slideIndex)
Data.getData(target).to(slideIndex)
}

event.preventDefault()
}

static getInstance(element) {
return Data.getData(element, DATA_KEY)
return Data.getData(element)
}
}

Expand All @@ -608,7 +608,7 @@ EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)

for (let i = 0, len = carousels.length; i < len; i++) {
Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))
Carousel.carouselInterface(carousels[i], Data.getData(carousels[i]))
}
})

Expand Down
14 changes: 7 additions & 7 deletions js/src/collapse.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class Collapse {
this.toggle()
}

Data.setData(element, DATA_KEY, this)
Data.setData(element, this)
}

// Getters
Expand Down Expand Up @@ -151,7 +151,7 @@ class Collapse {
const container = SelectorEngine.findOne(this._selector)
if (actives) {
const tempActiveData = actives.find(elem => container !== elem)
activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null
activesData = tempActiveData ? Data.getData(tempActiveData) : null

if (activesData && activesData._isTransitioning) {
return
Expand All @@ -170,7 +170,7 @@ class Collapse {
}

if (!activesData) {
Data.setData(elemActive, DATA_KEY, null)
Data.setData(elemActive, null)
}
})
}
Expand Down Expand Up @@ -266,7 +266,7 @@ class Collapse {
}

dispose() {
Data.removeData(this._element, DATA_KEY)
Data.removeData(this._element)

this._config = null
this._parent = null
Expand Down Expand Up @@ -339,7 +339,7 @@ class Collapse {
// Static

static collapseInterface(element, config) {
let data = Data.getData(element, DATA_KEY)
let data = Data.getData(element)
const _config = {
...Default,
...Manipulator.getDataAttributes(element),
Expand Down Expand Up @@ -370,7 +370,7 @@ class Collapse {
}

static getInstance(element) {
return Data.getData(element, DATA_KEY)
return Data.getData(element)
}
}

Expand All @@ -391,7 +391,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (
const selectorElements = SelectorEngine.find(selector)

selectorElements.forEach(element => {
const data = Data.getData(element, DATA_KEY)
const data = Data.getData(element)
let config
if (data) {
// update parent attribute
Expand Down
57 changes: 8 additions & 49 deletions js/src/dom/data.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,57 +11,16 @@
* ------------------------------------------------------------------------
*/

const mapData = (() => {
const storeData = new Map()
let id = 1
return {
set(element, key, data) {
if (typeof element.bsKey === 'undefined') {
element.bsKey = {
key,
id
}
id++
}
const mapData = new Map()

storeData.set(element.bsKey.id, data)
},
get(element, key) {
if (!element || typeof element.bsKey === 'undefined') {
return null
}

const keyProperties = element.bsKey
if (keyProperties.key === key) {
return storeData.get(keyProperties.id)
}

return null
},
delete(element, key) {
if (typeof element.bsKey === 'undefined') {
return
}

const keyProperties = element.bsKey
if (keyProperties.key === key) {
storeData.delete(keyProperties.id)
delete element.bsKey
}
}
}
})()

const Data = {
setData(instance, key, data) {
mapData.set(instance, key, data)
export default {
setData(element, data) {
mapData.set(element, data)
},
getData(instance, key) {
return mapData.get(instance, key)
getData(element) {
return mapData.get(element) || null
},
removeData(instance, key) {
mapData.delete(instance, key)
removeData(element) {
mapData.delete(element)
}
}

export default Data
10 changes: 5 additions & 5 deletions js/src/dropdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ class Dropdown {
this._inNavbar = this._detectNavbar()

this._addEventListeners()
Data.setData(element, DATA_KEY, this)
Data.setData(element, this)
}

// Getters
Expand Down Expand Up @@ -229,7 +229,7 @@ class Dropdown {
}

dispose() {
Data.removeData(this._element, DATA_KEY)
Data.removeData(this._element)
EventHandler.off(this._element, EVENT_KEY)
this._element = null
this._menu = null
Expand Down Expand Up @@ -345,7 +345,7 @@ class Dropdown {
// Static

static dropdownInterface(element, config) {
let data = Data.getData(element, DATA_KEY)
let data = Data.getData(element)
const _config = typeof config === 'object' ? config : null

if (!data) {
Expand Down Expand Up @@ -377,7 +377,7 @@ class Dropdown {

for (let i = 0, len = toggles.length; i < len; i++) {
const parent = Dropdown.getParentFromElement(toggles[i])
const context = Data.getData(toggles[i], DATA_KEY)
const context = Data.getData(toggles[i])
const relatedTarget = {
relatedTarget: toggles[i]
}
Expand Down Expand Up @@ -491,7 +491,7 @@ class Dropdown {
}

static getInstance(element) {
return Data.getData(element, DATA_KEY)
return Data.getData(element)
}
}

Expand Down
10 changes: 5 additions & 5 deletions js/src/modal.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ class Modal {
this._ignoreBackdropClick = false
this._isTransitioning = false
this._scrollbarWidth = 0
Data.setData(element, DATA_KEY, this)
Data.setData(element, this)
}

// Getters
Expand Down Expand Up @@ -208,7 +208,7 @@ class Modal {
*/
EventHandler.off(document, EVENT_FOCUSIN)

Data.removeData(this._element, DATA_KEY)
Data.removeData(this._element)

this._config = null
this._element = null
Expand Down Expand Up @@ -541,7 +541,7 @@ class Modal {

static jQueryInterface(config, relatedTarget) {
return this.each(function () {
let data = Data.getData(this, DATA_KEY)
let data = Data.getData(this)
const _config = {
...Default,
...Manipulator.getDataAttributes(this),
Expand All @@ -565,7 +565,7 @@ class Modal {
}

static getInstance(element) {
return Data.getData(element, DATA_KEY)
return Data.getData(element)
}
}

Expand Down Expand Up @@ -595,7 +595,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (
})
})

let data = Data.getData(target, DATA_KEY)
let data = Data.getData(target)
if (!data) {
const config = {
...Manipulator.getDataAttributes(target),
Expand Down
6 changes: 3 additions & 3 deletions js/src/popover.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ class Popover extends Tooltip {

static jQueryInterface(config) {
return this.each(function () {
let data = Data.getData(this, DATA_KEY)
let data = Data.getData(this)
const _config = typeof config === 'object' ? config : null

if (!data && /dispose|hide/.test(config)) {
Expand All @@ -149,7 +149,7 @@ class Popover extends Tooltip {

if (!data) {
data = new Popover(this, _config)
Data.setData(this, DATA_KEY, data)
Data.setData(this, data)
}

if (typeof config === 'string') {
Expand All @@ -163,7 +163,7 @@ class Popover extends Tooltip {
}

static getInstance(element) {
return Data.getData(element, DATA_KEY)
return Data.getData(element)
}
}

Expand Down
Loading

0 comments on commit ba4728e

Please sign in to comment.