mirror of https://github.com/twbs/bootstrap.git
				
				
				
			Drop closest from SelectorEngine (#30653)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
This commit is contained in:
		
							parent
							
								
									06c3c144b6
								
							
						
					
					
						commit
						c8d68fbec7
					
				|  | @ -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) { | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -50,10 +50,6 @@ const SelectorEngine = { | |||
|     return parents | ||||
|   }, | ||||
| 
 | ||||
|   closest(element, selector) { | ||||
|     return element.closest(selector) | ||||
|   }, | ||||
| 
 | ||||
|   prev(element, selector) { | ||||
|     let previous = element.previousElementSibling | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 | ||||
|     } | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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 | ||||
|     ) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue