getElementFromSelector,
getTransitionDurationFromElement,
isVisible,
- makeArray,
reflow,
triggerTransitionEnd,
typeCheckConfig
}
}
- makeArray(SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)).forEach(itemImg => {
+ SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {
EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())
})
_getItemIndex(element) {
this._items = element && element.parentNode ?
- makeArray(SelectorEngine.find(SELECTOR_ITEM, element.parentNode)) :
+ SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :
[]
return this._items.indexOf(element)
.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)
EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
- const carousels = makeArray(SelectorEngine.find(SELECTOR_DATA_RIDE))
+ 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))
}
getElementFromSelector,
getTransitionDurationFromElement,
isElement,
- makeArray,
reflow,
typeCheckConfig
} from './util/index'
this._isTransitioning = false
this._element = element
this._config = this._getConfig(config)
- this._triggerArray = makeArray(SelectorEngine.find(
+ this._triggerArray = SelectorEngine.find(
`${SELECTOR_DATA_TOGGLE}[href="#${element.id}"],` +
`${SELECTOR_DATA_TOGGLE}[data-target="#${element.id}"]`
- ))
+ )
+
+ const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)
- const toggleList = makeArray(SelectorEngine.find(SELECTOR_DATA_TOGGLE))
for (let i = 0, len = toggleList.length; i < len; i++) {
const elem = toggleList[i]
const selector = getSelectorFromElement(elem)
- const filterElement = makeArray(SelectorEngine.find(selector))
+ const filterElement = SelectorEngine.find(selector)
.filter(foundElem => foundElem === element)
if (selector !== null && filterElement.length) {
let activesData
if (this._parent) {
- actives = makeArray(SelectorEngine.find(SELECTOR_ACTIVES, this._parent))
+ actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)
.filter(elem => {
if (typeof this._config.parent === 'string') {
return elem.getAttribute('data-parent') === this._config.parent
const selector = `${SELECTOR_DATA_TOGGLE}[data-parent="${parent}"]`
- makeArray(SelectorEngine.find(selector, parent))
+ SelectorEngine.find(selector, parent)
.forEach(element => {
const selected = getElementFromSelector(element)
const triggerData = Manipulator.getDataAttributes(this)
const selector = getSelectorFromElement(this)
- const selectorElements = makeArray(SelectorEngine.find(selector))
+ const selectorElements = SelectorEngine.find(selector)
selectorElements.forEach(element => {
const data = Data.getData(element, DATA_KEY)
*/
import { find as findFn, findOne } from './polyfill'
-import { makeArray } from '../util/index'
/**
* ------------------------------------------------------------------------
},
find(selector, element = document.documentElement) {
- return findFn.call(element, selector)
+ return [].concat(...findFn.call(element, selector))
},
findOne(selector, element = document.documentElement) {
},
children(element, selector) {
- const children = makeArray(element.children)
+ const children = [].concat(...element.children)
- return children.filter(child => this.matches(child, selector))
+ return children.filter(child => child.matches(selector))
},
parents(element, selector) {
let previous = element.previousElementSibling
while (previous) {
- if (this.matches(previous, selector)) {
+ if (previous.matches(selector)) {
return [previous]
}
getElementFromSelector,
isElement,
isVisible,
- makeArray,
noop,
typeCheckConfig
} from './util/index'
// only needed because of broken event delegation on iOS
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
if ('ontouchstart' in document.documentElement &&
- !makeArray(SelectorEngine.closest(parent, SELECTOR_NAVBAR_NAV)).length) {
- makeArray(document.body.children)
+ !SelectorEngine.closest(parent, SELECTOR_NAVBAR_NAV)) {
+ [].concat(...document.body.children)
.forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))
}
return
}
- const toggles = makeArray(SelectorEngine.find(SELECTOR_DATA_TOGGLE))
+ const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)
+
for (let i = 0, len = toggles.length; i < len; i++) {
const parent = Dropdown.getParentFromElement(toggles[i])
const context = Data.getData(toggles[i], DATA_KEY)
// If this is a touch-enabled device we remove the extra
// empty mouseover listeners we added for iOS support
if ('ontouchstart' in document.documentElement) {
- makeArray(document.body.children)
+ [].concat(...document.body.children)
.forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))
}
return
}
- const items = makeArray(SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent))
+ const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent)
.filter(isVisible)
if (!items.length) {
getElementFromSelector,
getTransitionDurationFromElement,
isVisible,
- makeArray,
reflow,
typeCheckConfig
} from './util/index'
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
// Adjust fixed content padding
- makeArray(SelectorEngine.find(SELECTOR_FIXED_CONTENT))
+ SelectorEngine.find(SELECTOR_FIXED_CONTENT)
.forEach(element => {
const actualPadding = element.style.paddingRight
const calculatedPadding = window.getComputedStyle(element)['padding-right']
})
// Adjust sticky content margin
- makeArray(SelectorEngine.find(SELECTOR_STICKY_CONTENT))
+ SelectorEngine.find(SELECTOR_STICKY_CONTENT)
.forEach(element => {
const actualMargin = element.style.marginRight
const calculatedMargin = window.getComputedStyle(element)['margin-right']
_resetScrollbar() {
// Restore fixed content padding
- makeArray(SelectorEngine.find(SELECTOR_FIXED_CONTENT))
+ SelectorEngine.find(SELECTOR_FIXED_CONTENT)
.forEach(element => {
const padding = Manipulator.getDataAttribute(element, 'padding-right')
if (typeof padding !== 'undefined') {
})
// Restore sticky content and navbar-toggler margin
- makeArray(SelectorEngine.find(`${SELECTOR_STICKY_CONTENT}`))
+ SelectorEngine.find(`${SELECTOR_STICKY_CONTENT}`)
.forEach(element => {
const margin = Manipulator.getDataAttribute(element, 'margin-right')
if (typeof margin !== 'undefined') {
getjQuery,
getSelectorFromElement,
getUID,
- makeArray,
typeCheckConfig
} from './util/index'
import Data from './dom/data'
this._scrollHeight = this._getScrollHeight()
- const targets = makeArray(SelectorEngine.find(this._selector))
+ const targets = SelectorEngine.find(this._selector)
targets
.map(element => {
}
_clear() {
- makeArray(SelectorEngine.find(this._selector))
+ SelectorEngine.find(this._selector)
.filter(node => node.classList.contains(CLASS_NAME_ACTIVE))
.forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))
}
*/
EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
- makeArray(SelectorEngine.find(SELECTOR_DATA_SPY))
+ SelectorEngine.find(SELECTOR_DATA_SPY)
.forEach(spy => new ScrollSpy(spy, Manipulator.getDataAttributes(spy)))
})
emulateTransitionEnd,
getElementFromSelector,
getTransitionDurationFromElement,
- makeArray,
reflow
} from './util/index'
import Data from './dom/data'
if (listElement) {
const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE
- previous = makeArray(SelectorEngine.find(itemSelector, listElement))
+ previous = SelectorEngine.find(itemSelector, listElement)
previous = previous[previous.length - 1]
}
const dropdownElement = SelectorEngine.closest(element, SELECTOR_DROPDOWN)
if (dropdownElement) {
- makeArray(SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE))
+ SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)
.forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))
}
getTransitionDurationFromElement,
getUID,
isElement,
- makeArray,
noop,
typeCheckConfig
} from './util/index'
// only needed because of broken event delegation on iOS
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
if ('ontouchstart' in document.documentElement) {
- makeArray(document.body.children).forEach(element => {
+ [].concat(...document.body.children).forEach(element => {
EventHandler.on(element, 'mouseover', noop())
})
}
// If this is a touch-enabled device we remove the extra
// empty mouseover listeners we added for iOS support
if ('ontouchstart' in document.documentElement) {
- makeArray(document.body.children)
+ [].concat(...document.body.children)
.forEach(element => EventHandler.off(element, 'mouseover', noop))
}
})
}
-const makeArray = nodeList => {
- if (!nodeList) {
- return []
- }
-
- return [].slice.call(nodeList)
-}
-
const isVisible = element => {
if (!element) {
return false
isElement,
emulateTransitionEnd,
typeCheckConfig,
- makeArray,
isVisible,
findShadowRoot,
noop,
* --------------------------------------------------------------------------
*/
-import { makeArray } from './index'
-
const uriAttrs = [
'background',
'cite',
const domParser = new window.DOMParser()
const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')
const whitelistKeys = Object.keys(whiteList)
- const elements = makeArray(createdDocument.body.querySelectorAll('*'))
+ const elements = [].concat(...createdDocument.body.querySelectorAll('*'))
for (let i = 0, len = elements.length; i < len; i++) {
const el = elements[i]
continue
}
- const attributeList = makeArray(el.attributes)
+ const attributeList = [].concat(...el.attributes)
const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
attributeList.forEach(attr => {
import Alert from '../../src/alert'
-import { makeArray, getTransitionDurationFromElement } from '../../src/util/index'
+import { getTransitionDurationFromElement } from '../../src/util/index'
/** Test helpers */
import { getFixture, clearFixture, jQueryMock } from '../helpers/fixture'
const button = document.querySelector('button')
button.click()
- expect(makeArray(document.querySelectorAll('.alert')).length).toEqual(0)
+ expect(document.querySelectorAll('.alert').length).toEqual(0)
})
it('should close an alert without instantiating it manually with the parent selector', () => {
const button = document.querySelector('button')
button.click()
- expect(makeArray(document.querySelectorAll('.alert')).length).toEqual(0)
+ expect(document.querySelectorAll('.alert').length).toEqual(0)
})
})
const alert = new Alert(alertEl)
alertEl.addEventListener('closed.bs.alert', () => {
- expect(makeArray(document.querySelectorAll('.alert')).length).toEqual(0)
+ expect(document.querySelectorAll('.alert').length).toEqual(0)
expect(spy).not.toHaveBeenCalled()
done()
})
})
alertEl.addEventListener('closed.bs.alert', () => {
- expect(makeArray(document.querySelectorAll('.alert')).length).toEqual(0)
+ expect(document.querySelectorAll('.alert').length).toEqual(0)
done()
})
import Collapse from '../../src/collapse'
import EventHandler from '../../src/dom/event-handler'
-import { makeArray } from '../../src/util/index'
/** Test helpers */
import { getFixture, clearFixture, jQueryMock } from '../helpers/fixture'
const collapseEl1 = fixtureEl.querySelector('#collapse1')
const collapseEl2 = fixtureEl.querySelector('#collapse2')
- const collapseList = makeArray(fixtureEl.querySelectorAll('.collapse'))
+ const collapseList = [].concat(...fixtureEl.querySelectorAll('.collapse'))
.map(el => new Collapse(el, {
parent,
toggle: false
import SelectorEngine from '../../../src/dom/selector-engine'
-import { makeArray } from '../../../src/util/index'
/** Test helpers */
import { getFixture, clearFixture } from '../../helpers/fixture'
const div = fixtureEl.querySelector('div')
- expect(makeArray(SelectorEngine.find('div', fixtureEl))).toEqual([div])
+ expect(SelectorEngine.find('div', fixtureEl)).toEqual([div])
})
it('should find elements globaly', () => {
const div = fixtureEl.querySelector('#test')
- expect(makeArray(SelectorEngine.find('#test'))).toEqual([div])
+ expect(SelectorEngine.find('#test')).toEqual([div])
})
it('should handle :scope selectors', () => {
const listEl = fixtureEl.querySelector('ul')
const aActive = fixtureEl.querySelector('.active')
- expect(makeArray(SelectorEngine.find(':scope > li > .active', listEl))).toEqual([aActive])
+ expect(SelectorEngine.find(':scope > li > .active', listEl)).toEqual([aActive])
})
})
</ul>`
const list = fixtureEl.querySelector('ul')
- const liList = makeArray(fixtureEl.querySelectorAll('li'))
- const result = makeArray(SelectorEngine.children(list, 'li'))
+ const liList = [].concat(...fixtureEl.querySelectorAll('li'))
+ const result = SelectorEngine.children(list, 'li')
expect(result).toEqual(liList)
})
import Modal from '../../src/modal'
import EventHandler from '../../src/dom/event-handler'
-import { makeArray } from '../../src/util/index'
/** Test helpers */
import { getFixture, clearFixture, createEvent, jQueryMock } from '../helpers/fixture'
document.body.classList.remove('modal-open')
document.body.removeAttribute('style')
document.body.removeAttribute('data-padding-right')
- const backdropList = makeArray(document.querySelectorAll('.modal-backdrop'))
- backdropList.forEach(backdrop => {
- document.body.removeChild(backdrop)
- })
+ document.querySelectorAll('.modal-backdrop')
+ .forEach(backdrop => {
+ document.body.removeChild(backdrop)
+ })
document.body.style.paddingRight = '0px'
})
import Popover from '../../src/popover'
-import { makeArray } from '../../src/util/index'
/** Test helpers */
import { getFixture, clearFixture, jQueryMock } from '../helpers/fixture'
afterEach(() => {
clearFixture()
- const popoverList = makeArray(document.querySelectorAll('.popover'))
+ const popoverList = document.querySelectorAll('.popover')
popoverList.forEach(popoverEl => {
document.body.removeChild(popoverEl)
import Tooltip from '../../src/tooltip'
import EventHandler from '../../src/dom/event-handler'
-import { makeArray, noop } from '../../src/util/index'
+import { noop } from '../../src/util/index'
/** Test helpers */
import { getFixture, clearFixture, jQueryMock, createEvent } from '../helpers/fixture'
afterEach(() => {
clearFixture()
- const tooltipList = makeArray(document.querySelectorAll('.tooltip'))
-
- tooltipList.forEach(tooltipEl => {
+ document.querySelectorAll('.tooltip').forEach(tooltipEl => {
document.body.removeChild(tooltipEl)
})
})
})
})
- describe('makeArray', () => {
- it('should convert node list to array', () => {
- const nodeList = document.querySelectorAll('div')
-
- expect(Array.isArray(nodeList)).toEqual(false)
- expect(Array.isArray(Util.makeArray(nodeList))).toEqual(true)
- })
-
- it('should return an empty array if the nodeList is undefined', () => {
- expect(Util.makeArray(null)).toEqual([])
- expect(Util.makeArray(undefined)).toEqual([])
- })
- })
-
describe('isVisible', () => {
it('should return false if the element is not defined', () => {
expect(Util.isVisible(null)).toEqual(false)