Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js/src
diff options
context:
space:
mode:
authorgalczo5 <kamil.galek@gmail.com>2018-10-20 14:27:51 +0300
committerXhmikosR <xhmikosr@gmail.com>2018-10-20 14:27:51 +0300
commit6cbcd03efbcb58e37e4a4d31048758c82ed6c849 (patch)
treec8ae64576c1c56d7f4f944ab89fe381ffe5976e2 /js/src
parent5088f02730a38bf833db3a8ac1f3c53c154278bc (diff)
Add `show` and `hide` methods to dropdown (#27370)
Diffstat (limited to 'js/src')
-rw-r--r--js/src/dropdown.js46
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)