diff options
| author | Pierre-Denis Vanduynslager <[email protected]> | 2017-01-02 17:44:27 -0500 |
|---|---|---|
| committer | Mark Otto <[email protected]> | 2017-01-02 14:44:27 -0800 |
| commit | bbb0d2b573c28793358be66a1c05f2d68ded4db6 (patch) | |
| tree | 24e4c0d7000c596f7f5790d929776d0a9ec8cc59 /js/src/dropdown.js | |
| parent | 9fc54f89f4d7a15c4118835b7eeae810cc8c5c0a (diff) | |
| download | bootstrap-bbb0d2b573c28793358be66a1c05f2d68ded4db6.tar.xz bootstrap-bbb0d2b573c28793358be66a1c05f2d68ded4db6.zip | |
Dropdown: close menu when focusing outside element (#21375)
* Close dropdown menu when focusing an outside element
* Update unit test to new markup
Diffstat (limited to 'js/src/dropdown.js')
| -rw-r--r-- | js/src/dropdown.js | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/js/src/dropdown.js b/js/src/dropdown.js index 97bba1c76..29c4efe04 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -35,6 +35,7 @@ const Dropdown = (($) => { SHOWN : `shown${EVENT_KEY}`, CLICK : `click${EVENT_KEY}`, CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`, + FOCUSIN_DATA_API : `focusin${EVENT_KEY}${DATA_API_KEY}`, KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}` } @@ -180,9 +181,9 @@ const Dropdown = (($) => { continue } - if (event && event.type === 'click' && - /input|textarea/i.test(event.target.tagName) && - $.contains(parent, event.target)) { + if (event && (event.type === 'click' && + /input|textarea/i.test(event.target.tagName) || event.type === 'focusin') + && $.contains(parent, event.target)) { continue } @@ -275,7 +276,7 @@ const Dropdown = (($) => { .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler) .on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler) .on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler) - .on(Event.CLICK_DATA_API, Dropdown._clearMenus) + .on(`${Event.CLICK_DATA_API} ${Event.FOCUSIN_DATA_API}`, Dropdown._clearMenus) .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle) .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => { e.stopPropagation() |
