]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Drop closest from SelectorEngine (#30653)
authorMartijn Cuppens <martijn.cuppens@gmail.com>
Tue, 28 Apr 2020 19:17:23 +0000 (21:17 +0200)
committerGitHub <noreply@github.com>
Tue, 28 Apr 2020 19:17:23 +0000 (22:17 +0300)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
js/src/alert.js
js/src/button.js
js/src/dom/selector-engine.js
js/src/dropdown.js
js/src/scrollspy.js
js/src/tab.js
js/src/tooltip.js

index 6de3fa7f875a7e41463ab0cfb601fab71b567418..7badd8f60ea0174a66251821b4ce663ae82bdf70 100644 (file)
@@ -14,7 +14,6 @@ import {
 } from './util/index'
 import Data from './dom/data'
 import EventHandler from './dom/event-handler'
-import SelectorEngine from './dom/selector-engine'
 
 /**
  * ------------------------------------------------------------------------
@@ -84,13 +83,7 @@ class Alert {
   // Private
 
   _getRootElement(element) {
-    let parent = getElementFromSelector(element)
-
-    if (!parent) {
-      parent = SelectorEngine.closest(element, `.${CLASSNAME_ALERT}`)
-    }
-
-    return parent
+    return getElementFromSelector(element) || element.closest(`.${CLASSNAME_ALERT}`)
   }
 
   _triggerCloseEvent(element) {
index 9c68862b21d723ee849c32cc782367324633cd7c..cf346863dc07b3093ceacdbd0d463cfa66fd9b4c 100644 (file)
@@ -23,7 +23,6 @@ const EVENT_KEY = `.${DATA_KEY}`
 const DATA_API_KEY = '.data-api'
 
 const CLASS_NAME_ACTIVE = 'active'
-const CLASS_NAME_BUTTON = 'btn'
 const CLASS_NAME_DISABLED = 'disabled'
 const CLASS_NAME_FOCUS = 'focus'
 
@@ -61,10 +60,7 @@ class Button {
     let triggerChangeEvent = true
     let addAriaPressed = true
 
-    const rootElement = SelectorEngine.closest(
-      this._element,
-      SELECTOR_DATA_TOGGLE
-    )
+    const rootElement = this._element.closest(SELECTOR_DATA_TOGGLE)
 
     if (rootElement) {
       const input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)
@@ -143,10 +139,7 @@ class Button {
 EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {
   event.preventDefault()
 
-  let button = event.target
-  if (!button.classList.contains(CLASS_NAME_BUTTON)) {
-    button = SelectorEngine.closest(button, SELECTOR_BUTTON)
-  }
+  const button = event.target.closest(SELECTOR_BUTTON)
 
   let data = Data.getData(button, DATA_KEY)
   if (!data) {
@@ -157,7 +150,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, eve
 })
 
 EventHandler.on(document, EVENT_FOCUS_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {
-  const button = SelectorEngine.closest(event.target, SELECTOR_BUTTON)
+  const button = event.target.closest(SELECTOR_BUTTON)
 
   if (button) {
     button.classList.add(CLASS_NAME_FOCUS)
@@ -165,7 +158,7 @@ EventHandler.on(document, EVENT_FOCUS_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, eve
 })
 
 EventHandler.on(document, EVENT_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {
-  const button = SelectorEngine.closest(event.target, SELECTOR_BUTTON)
+  const button = event.target.closest(SELECTOR_BUTTON)
 
   if (button) {
     button.classList.remove(CLASS_NAME_FOCUS)
index bbed1b720ee3eebaa311b3bf15085c7245808b2f..494f0d18e12f177452c71125673242144eb88281 100644 (file)
@@ -50,10 +50,6 @@ const SelectorEngine = {
     return parents
   },
 
-  closest(element, selector) {
-    return element.closest(selector)
-  },
-
   prev(element, selector) {
     let previous = element.previousElementSibling
 
index 2fe707f152c777d9473060db26b6dada694b9021..83623b93d669fda21e24ac5cd0efe6cefa8a0256 100644 (file)
@@ -189,7 +189,7 @@ class Dropdown {
     // 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 &&
-      !SelectorEngine.closest(parent, SELECTOR_NAVBAR_NAV)) {
+      !parent.closest(SELECTOR_NAVBAR_NAV)) {
       [].concat(...document.body.children)
         .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))
     }
@@ -297,7 +297,7 @@ class Dropdown {
   }
 
   _detectNavbar() {
-    return Boolean(SelectorEngine.closest(this._element, `.${CLASS_NAME_NAVBAR}`))
+    return Boolean(this._element.closest(`.${CLASS_NAME_NAVBAR}`))
   }
 
   _getOffset() {
@@ -445,7 +445,7 @@ class Dropdown {
     if (/input|textarea/i.test(event.target.tagName) ?
       event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&
       ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||
-        SelectorEngine.closest(event.target, SELECTOR_MENU))) :
+        event.target.closest(SELECTOR_MENU))) :
       !REGEXP_KEYDOWN.test(event.key)) {
       return
     }
index 0f04020f84c7997e2122dd2556fcbc68eba52a49..0bcd80e3eeb88ea4f98627b0fa91cff49044dfdf 100644 (file)
@@ -254,7 +254,7 @@ class ScrollSpy {
 
     if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
       SelectorEngine
-        .findOne(SELECTOR_DROPDOWN_TOGGLE, SelectorEngine.closest(link, SELECTOR_DROPDOWN))
+        .findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))
         .classList.add(CLASS_NAME_ACTIVE)
 
       link.classList.add(CLASS_NAME_ACTIVE)
index 29985872c9a13c2326b253d36996aa092111f6f7..c69ac3146784ee65e3d63fadeb4409c9aefd23e2 100644 (file)
@@ -80,7 +80,7 @@ class Tab {
 
     let previous
     const target = getElementFromSelector(this._element)
-    const listElement = SelectorEngine.closest(this._element, SELECTOR_NAV_LIST_GROUP)
+    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)
 
     if (listElement) {
       const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE
@@ -186,7 +186,7 @@ class Tab {
     }
 
     if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
-      const dropdownElement = SelectorEngine.closest(element, SELECTOR_DROPDOWN)
+      const dropdownElement = element.closest(SELECTOR_DROPDOWN)
 
       if (dropdownElement) {
         SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)
index 6b31acf49c260cf1a8e924f180ebdd5890e678ad..b86ddb2c89db4f586c2d742ff28bacf1a4ac5967 100644 (file)
@@ -227,7 +227,7 @@ class Tooltip {
     Data.removeData(this.element, this.constructor.DATA_KEY)
 
     EventHandler.off(this.element, this.constructor.EVENT_KEY)
-    EventHandler.off(SelectorEngine.closest(this.element, `.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)
+    EventHandler.off(this.element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)
 
     if (this.tip) {
       this.tip.parentNode.removeChild(this.tip)
@@ -556,7 +556,7 @@ class Tooltip {
       }
     }
 
-    EventHandler.on(SelectorEngine.closest(this.element, `.${CLASS_NAME_MODAL}`),
+    EventHandler.on(this.element.closest(`.${CLASS_NAME_MODAL}`),
       'hide.bs.modal',
       this._hideModalHandler
     )