diff options
author | galczo5 <kamil.galek@gmail.com> | 2018-10-20 14:27:51 +0300 |
---|---|---|
committer | XhmikosR <xhmikosr@gmail.com> | 2018-10-20 14:27:51 +0300 |
commit | 6cbcd03efbcb58e37e4a4d31048758c82ed6c849 (patch) | |
tree | c8ae64576c1c56d7f4f944ab89fe381ffe5976e2 /js/src | |
parent | 5088f02730a38bf833db3a8ac1f3c53c154278bc (diff) |
Add `show` and `hide` methods to dropdown (#27370)
Diffstat (limited to 'js/src')
-rw-r--r-- | js/src/dropdown.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/js/src/dropdown.js b/js/src/dropdown.js index a7a77cb3b6..e52c51e4db 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -194,6 +194,52 @@ class Dropdown { .trigger($.Event(Event.SHOWN, relatedTarget)) } + show() { + if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) { + return + } + + const relatedTarget = { + relatedTarget: this._element + } + const showEvent = $.Event(Event.SHOW, relatedTarget) + + const parent = Dropdown._getParentFromElement(this._element) + $(parent).trigger(showEvent) + + if (showEvent.isDefaultPrevented()) { + return + } + + $(this._menu).toggleClass(ClassName.SHOW) + $(parent) + .toggleClass(ClassName.SHOW) + .trigger($.Event(Event.SHOWN, relatedTarget)) + } + + hide() { + if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) { + return + } + + const relatedTarget = { + relatedTarget: this._element + } + const hideEvent = $.Event(Event.HIDE, relatedTarget) + + const parent = Dropdown._getParentFromElement(this._element) + $(parent).trigger(hideEvent) + + if (hideEvent.isDefaultPrevented()) { + return + } + + $(this._menu).toggleClass(ClassName.SHOW) + $(parent) + .toggleClass(ClassName.SHOW) + .trigger($.Event(Event.HIDDEN, relatedTarget)) + } + dispose() { $.removeData(this._element, DATA_KEY) $(this._element).off(EVENT_KEY) |