diff options
author | Mario <mario@mariovavti.com> | 2021-07-29 09:31:47 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2021-07-29 09:31:47 +0000 |
commit | cb57c4ea188b982119f515f043a72f037f943025 (patch) | |
tree | 11144c1107f16047ed37f543fc34859d0c649e08 /vendor/twbs/bootstrap/js/src/dom/selector-engine.js | |
parent | c6133d2558ce29e44342fa7be8bb65e0059aea02 (diff) | |
parent | b7ffec6fbe77eff3c550a922f50bd79321b293ed (diff) | |
download | volse-hubzilla-cb57c4ea188b982119f515f043a72f037f943025.tar.gz volse-hubzilla-cb57c4ea188b982119f515f043a72f037f943025.tar.bz2 volse-hubzilla-cb57c4ea188b982119f515f043a72f037f943025.zip |
Merge branch 'bs5' into 'dev'
Update to bootstrap 5 and implement next generation app menu (work in progress)
See merge request hubzilla/core!1980
Diffstat (limited to 'vendor/twbs/bootstrap/js/src/dom/selector-engine.js')
-rw-r--r-- | vendor/twbs/bootstrap/js/src/dom/selector-engine.js | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/vendor/twbs/bootstrap/js/src/dom/selector-engine.js b/vendor/twbs/bootstrap/js/src/dom/selector-engine.js new file mode 100644 index 000000000..381e45fe8 --- /dev/null +++ b/vendor/twbs/bootstrap/js/src/dom/selector-engine.js @@ -0,0 +1,75 @@ +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.0.2): dom/selector-engine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NODE_TEXT = 3 + +const SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)) + }, + + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector) + }, + + children(element, selector) { + return [].concat(...element.children) + .filter(child => child.matches(selector)) + }, + + parents(element, selector) { + const parents = [] + + let ancestor = element.parentNode + + while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { + if (ancestor.matches(selector)) { + parents.push(ancestor) + } + + ancestor = ancestor.parentNode + } + + return parents + }, + + prev(element, selector) { + let previous = element.previousElementSibling + + while (previous) { + if (previous.matches(selector)) { + return [previous] + } + + previous = previous.previousElementSibling + } + + return [] + }, + + next(element, selector) { + let next = element.nextElementSibling + + while (next) { + if (next.matches(selector)) { + return [next] + } + + next = next.nextElementSibling + } + + return [] + } +} + +export default SelectorEngine |