@@ -13,6 +13,7 @@ import SelectorEngine from './dom/selector-engine.js'
1313import {
1414 defineJQueryPlugin , getElement , getNextActiveElement , isRTL
1515} from './util/index.js'
16+ import FocusTrap from './util/focustrap.js'
1617import {
1718 convert12hTo24h ,
1819 convert24hTo12h ,
@@ -171,6 +172,8 @@ class TimePicker extends BaseComponent {
171172 this . _createTimePickerSelection ( )
172173 this . _addEventListeners ( )
173174 this . _setUpSelects ( )
175+
176+ this . _focustrap = this . _initializeFocusTrap ( )
174177 }
175178
176179 // Getters
@@ -206,6 +209,7 @@ class TimePicker extends BaseComponent {
206209 this . _menu . classList . add ( CLASS_NAME_SHOW )
207210 }
208211
212+ this . _focustrap . activate ( )
209213 EventHandler . trigger ( this . _element , EVENT_SHOWN )
210214
211215 this . _createPopper ( )
@@ -225,6 +229,7 @@ class TimePicker extends BaseComponent {
225229 this . _menu . classList . remove ( CLASS_NAME_SHOW )
226230 }
227231
232+ this . _focustrap . deactivate ( )
228233 EventHandler . trigger ( this . _element , EVENT_HIDDEN )
229234 }
230235
@@ -237,6 +242,8 @@ class TimePicker extends BaseComponent {
237242 clearTimeout ( this . _inputTimeout )
238243 }
239244
245+ this . _focustrap . deactivate ( )
246+
240247 super . dispose ( )
241248 }
242249
@@ -277,6 +284,13 @@ class TimePicker extends BaseComponent {
277284 }
278285
279286 // Private
287+ _initializeFocusTrap ( ) {
288+ return new FocusTrap ( {
289+ additionalElement : this . _config . container ? this . _menu : null ,
290+ trapElement : this . _element
291+ } )
292+ }
293+
280294 _addEventListeners ( ) {
281295 EventHandler . on ( this . _indicatorElement , EVENT_CLICK , ( ) => {
282296 if ( ! this . _config . disabled ) {
0 commit comments