8000 refactor(TimePicker): add focus trap for better accessibility handling · coreui/coreui-pro@6a2aa61 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6a2aa61

Browse files
committed
refactor(TimePicker): add focus trap for better accessibility handling
1 parent f64a287 commit 6a2aa61

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

js/src/time-picker.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import SelectorEngine from './dom/selector-engine.js'
1313
import {
1414
defineJQueryPlugin, getElement, getNextActiveElement, isRTL
1515
} from './util/index.js'
16+
import FocusTrap from './util/focustrap.js'
1617
import {
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

Comments
 (0)
0