@keenthemes/ktui 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ktui.js +16038 -17101
- package/dist/ktui.min.js +1 -1
- package/dist/ktui.min.js.map +1 -1
- package/lib/cjs/components/accordion/accordion.js +20 -11
- package/lib/cjs/components/accordion/accordion.js.map +1 -1
- package/lib/cjs/components/accordion/index.js +4 -0
- package/lib/cjs/components/accordion/index.js.map +1 -1
- package/lib/cjs/components/accordion/types.js +4 -0
- package/lib/cjs/components/accordion/types.js.map +1 -1
- package/lib/cjs/components/collapse/collapse.js +13 -7
- package/lib/cjs/components/collapse/collapse.js.map +1 -1
- package/lib/cjs/components/collapse/index.js +4 -0
- package/lib/cjs/components/collapse/index.js.map +1 -1
- package/lib/cjs/components/collapse/types.js +4 -0
- package/lib/cjs/components/collapse/types.js.map +1 -1
- package/lib/cjs/components/component.js +12 -41
- package/lib/cjs/components/component.js.map +1 -1
- package/lib/cjs/components/constants.js +4 -0
- package/lib/cjs/components/constants.js.map +1 -1
- package/lib/cjs/components/datatable/datatable-checkbox.js +217 -0
- package/lib/cjs/components/datatable/datatable-checkbox.js.map +1 -0
- package/lib/cjs/components/datatable/datatable-sort.js +91 -0
- package/lib/cjs/components/datatable/datatable-sort.js.map +1 -0
- package/lib/cjs/components/datatable/datatable.js +294 -349
- package/lib/cjs/components/datatable/datatable.js.map +1 -1
- package/lib/cjs/components/datatable/index.js +4 -0
- package/lib/cjs/components/datatable/index.js.map +1 -1
- package/lib/cjs/components/datatable/types.js +4 -0
- package/lib/cjs/components/datatable/types.js.map +1 -1
- package/lib/cjs/components/datepicker/calendar.js +1061 -0
- package/lib/cjs/components/datepicker/calendar.js.map +1 -0
- package/lib/cjs/components/datepicker/config.js +332 -0
- package/lib/cjs/components/datepicker/config.js.map +1 -0
- package/lib/cjs/components/datepicker/datepicker.js +949 -0
- package/lib/cjs/components/datepicker/datepicker.js.map +1 -0
- package/lib/cjs/components/datepicker/dropdown.js +635 -0
- package/lib/cjs/components/datepicker/dropdown.js.map +1 -0
- package/lib/cjs/components/datepicker/events.js +129 -0
- package/lib/cjs/components/datepicker/events.js.map +1 -0
- package/lib/cjs/components/datepicker/index.js +13 -0
- package/lib/cjs/components/datepicker/index.js.map +1 -0
- package/lib/cjs/components/datepicker/keyboard.js +536 -0
- package/lib/cjs/components/datepicker/keyboard.js.map +1 -0
- package/lib/cjs/components/datepicker/locales.js +78 -0
- package/lib/cjs/components/datepicker/locales.js.map +1 -0
- package/lib/cjs/components/datepicker/templates.js +403 -0
- package/lib/cjs/components/datepicker/templates.js.map +1 -0
- package/lib/cjs/components/datepicker/types.js +23 -0
- package/lib/cjs/components/datepicker/types.js.map +1 -0
- package/lib/cjs/components/datepicker/utils.js +524 -0
- package/lib/cjs/components/datepicker/utils.js.map +1 -0
- package/lib/cjs/components/dismiss/dismiss.js +10 -6
- package/lib/cjs/components/dismiss/dismiss.js.map +1 -1
- package/lib/cjs/components/dismiss/index.js +4 -0
- package/lib/cjs/components/dismiss/index.js.map +1 -1
- package/lib/cjs/components/dismiss/types.js +4 -0
- package/lib/cjs/components/dismiss/types.js.map +1 -1
- package/lib/cjs/components/drawer/drawer.js +54 -28
- package/lib/cjs/components/drawer/drawer.js.map +1 -1
- package/lib/cjs/components/drawer/index.js +4 -0
- package/lib/cjs/components/drawer/index.js.map +1 -1
- package/lib/cjs/components/drawer/types.js +4 -0
- package/lib/cjs/components/drawer/types.js.map +1 -1
- package/lib/cjs/components/dropdown/dropdown.js +145 -115
- package/lib/cjs/components/dropdown/dropdown.js.map +1 -1
- package/lib/cjs/components/dropdown/index.js +4 -0
- package/lib/cjs/components/dropdown/index.js.map +1 -1
- package/lib/cjs/components/dropdown/types.js +4 -0
- package/lib/cjs/components/dropdown/types.js.map +1 -1
- package/lib/cjs/components/image-input/image-input.js +21 -16
- package/lib/cjs/components/image-input/image-input.js.map +1 -1
- package/lib/cjs/components/image-input/index.js +4 -0
- package/lib/cjs/components/image-input/index.js.map +1 -1
- package/lib/cjs/components/image-input/types.js +4 -0
- package/lib/cjs/components/image-input/types.js.map +1 -1
- package/lib/cjs/components/modal/index.js +4 -0
- package/lib/cjs/components/modal/index.js.map +1 -1
- package/lib/cjs/components/modal/modal.js +26 -19
- package/lib/cjs/components/modal/modal.js.map +1 -1
- package/lib/cjs/components/modal/types.js +4 -0
- package/lib/cjs/components/modal/types.js.map +1 -1
- package/lib/cjs/components/reparent/index.js +4 -0
- package/lib/cjs/components/reparent/index.js.map +1 -1
- package/lib/cjs/components/reparent/reparent.js +13 -5
- package/lib/cjs/components/reparent/reparent.js.map +1 -1
- package/lib/cjs/components/reparent/types.js +4 -0
- package/lib/cjs/components/reparent/types.js.map +1 -1
- package/lib/cjs/components/scrollable/index.js +4 -0
- package/lib/cjs/components/scrollable/index.js.map +1 -1
- package/lib/cjs/components/scrollable/scrollable.js +17 -10
- package/lib/cjs/components/scrollable/scrollable.js.map +1 -1
- package/lib/cjs/components/scrollable/types.js +4 -0
- package/lib/cjs/components/scrollable/types.js.map +1 -1
- package/lib/cjs/components/scrollspy/index.js +4 -0
- package/lib/cjs/components/scrollspy/index.js.map +1 -1
- package/lib/cjs/components/scrollspy/scrollspy.js +28 -17
- package/lib/cjs/components/scrollspy/scrollspy.js.map +1 -1
- package/lib/cjs/components/scrollspy/types.js +4 -0
- package/lib/cjs/components/scrollspy/types.js.map +1 -1
- package/lib/cjs/components/scrollto/index.js +4 -0
- package/lib/cjs/components/scrollto/index.js.map +1 -1
- package/lib/cjs/components/scrollto/scrollto.js +14 -8
- package/lib/cjs/components/scrollto/scrollto.js.map +1 -1
- package/lib/cjs/components/scrollto/types.js +4 -0
- package/lib/cjs/components/scrollto/types.js.map +1 -1
- package/lib/cjs/components/select/combobox.js +237 -0
- package/lib/cjs/components/select/combobox.js.map +1 -0
- package/lib/cjs/components/select/config.js +226 -0
- package/lib/cjs/components/select/config.js.map +1 -0
- package/lib/cjs/components/select/dropdown.js +429 -0
- package/lib/cjs/components/select/dropdown.js.map +1 -0
- package/lib/cjs/components/select/index.js +24 -0
- package/lib/cjs/components/select/index.js.map +1 -0
- package/lib/cjs/components/select/option.js +53 -0
- package/lib/cjs/components/select/option.js.map +1 -0
- package/lib/cjs/components/select/remote.js +414 -0
- package/lib/cjs/components/select/remote.js.map +1 -0
- package/lib/cjs/components/select/search.js +339 -0
- package/lib/cjs/components/select/search.js.map +1 -0
- package/lib/cjs/components/select/select.js +1538 -0
- package/lib/cjs/components/select/select.js.map +1 -0
- package/lib/cjs/components/select/tags.js +110 -0
- package/lib/cjs/components/select/tags.js.map +1 -0
- package/lib/cjs/components/select/templates.js +337 -0
- package/lib/cjs/components/select/templates.js.map +1 -0
- package/lib/cjs/components/select/types.js +19 -0
- package/lib/cjs/components/select/types.js.map +1 -0
- package/lib/cjs/components/select/utils.js +606 -0
- package/lib/cjs/components/select/utils.js.map +1 -0
- package/lib/cjs/components/stepper/index.js +4 -0
- package/lib/cjs/components/stepper/index.js.map +1 -1
- package/lib/cjs/components/stepper/stepper.js +20 -13
- package/lib/cjs/components/stepper/stepper.js.map +1 -1
- package/lib/cjs/components/stepper/types.js +4 -0
- package/lib/cjs/components/stepper/types.js.map +1 -1
- package/lib/cjs/components/sticky/index.js +4 -0
- package/lib/cjs/components/sticky/index.js.map +1 -1
- package/lib/cjs/components/sticky/sticky.js +60 -38
- package/lib/cjs/components/sticky/sticky.js.map +1 -1
- package/lib/cjs/components/sticky/types.js +4 -0
- package/lib/cjs/components/sticky/types.js.map +1 -1
- package/lib/cjs/components/tabs/index.js +4 -0
- package/lib/cjs/components/tabs/index.js.map +1 -1
- package/lib/cjs/components/tabs/tabs.js +34 -24
- package/lib/cjs/components/tabs/tabs.js.map +1 -1
- package/lib/cjs/components/tabs/types.js +4 -0
- package/lib/cjs/components/tabs/types.js.map +1 -1
- package/lib/cjs/components/theme-switch/index.js +10 -0
- package/lib/cjs/components/theme-switch/index.js.map +1 -0
- package/lib/cjs/components/theme-switch/theme-switch.js +143 -0
- package/lib/cjs/components/theme-switch/theme-switch.js.map +1 -0
- package/lib/cjs/components/theme-switch/types.js +7 -0
- package/lib/cjs/components/theme-switch/types.js.map +1 -0
- package/lib/cjs/components/toggle/index.js +4 -0
- package/lib/cjs/components/toggle/index.js.map +1 -1
- package/lib/cjs/components/toggle/toggle.js +11 -7
- package/lib/cjs/components/toggle/toggle.js.map +1 -1
- package/lib/cjs/components/toggle/types.js +4 -0
- package/lib/cjs/components/toggle/types.js.map +1 -1
- package/lib/cjs/components/toggle-password/index.js +4 -0
- package/lib/cjs/components/toggle-password/index.js.map +1 -1
- package/lib/cjs/components/toggle-password/toggle-password.js +12 -7
- package/lib/cjs/components/toggle-password/toggle-password.js.map +1 -1
- package/lib/cjs/components/toggle-password/types.js +4 -0
- package/lib/cjs/components/toggle-password/types.js.map +1 -1
- package/lib/cjs/components/tooltip/index.js +4 -0
- package/lib/cjs/components/tooltip/index.js.map +1 -1
- package/lib/cjs/components/tooltip/tooltip.js +51 -21
- package/lib/cjs/components/tooltip/tooltip.js.map +1 -1
- package/lib/cjs/components/tooltip/types.js +4 -0
- package/lib/cjs/components/tooltip/types.js.map +1 -1
- package/lib/cjs/helpers/data.js +5 -1
- package/lib/cjs/helpers/data.js.map +1 -1
- package/lib/cjs/helpers/dom.js +34 -29
- package/lib/cjs/helpers/dom.js.map +1 -1
- package/lib/cjs/helpers/event-handler.js +5 -1
- package/lib/cjs/helpers/event-handler.js.map +1 -1
- package/lib/cjs/helpers/utils.js +65 -11
- package/lib/cjs/helpers/utils.js.map +1 -1
- package/lib/cjs/index.js +18 -22
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/types.js +4 -0
- package/lib/cjs/types.js.map +1 -1
- package/lib/esm/components/accordion/accordion.js +20 -11
- package/lib/esm/components/accordion/accordion.js.map +1 -1
- package/lib/esm/components/accordion/index.js +4 -0
- package/lib/esm/components/accordion/index.js.map +1 -1
- package/lib/esm/components/accordion/types.js +4 -0
- package/lib/esm/components/accordion/types.js.map +1 -1
- package/lib/esm/components/collapse/collapse.js +13 -7
- package/lib/esm/components/collapse/collapse.js.map +1 -1
- package/lib/esm/components/collapse/index.js +4 -0
- package/lib/esm/components/collapse/index.js.map +1 -1
- package/lib/esm/components/collapse/types.js +4 -0
- package/lib/esm/components/collapse/types.js.map +1 -1
- package/lib/esm/components/component.js +12 -41
- package/lib/esm/components/component.js.map +1 -1
- package/lib/esm/components/constants.js +4 -0
- package/lib/esm/components/constants.js.map +1 -1
- package/lib/esm/components/datatable/datatable-checkbox.js +214 -0
- package/lib/esm/components/datatable/datatable-checkbox.js.map +1 -0
- package/lib/esm/components/datatable/datatable-sort.js +88 -0
- package/lib/esm/components/datatable/datatable-sort.js.map +1 -0
- package/lib/esm/components/datatable/datatable.js +294 -349
- package/lib/esm/components/datatable/datatable.js.map +1 -1
- package/lib/esm/components/datatable/index.js +4 -0
- package/lib/esm/components/datatable/index.js.map +1 -1
- package/lib/esm/components/datatable/types.js +4 -0
- package/lib/esm/components/datatable/types.js.map +1 -1
- package/lib/esm/components/datepicker/calendar.js +1058 -0
- package/lib/esm/components/datepicker/calendar.js.map +1 -0
- package/lib/esm/components/datepicker/config.js +329 -0
- package/lib/esm/components/datepicker/config.js.map +1 -0
- package/lib/esm/components/datepicker/datepicker.js +946 -0
- package/lib/esm/components/datepicker/datepicker.js.map +1 -0
- package/lib/esm/components/datepicker/dropdown.js +632 -0
- package/lib/esm/components/datepicker/dropdown.js.map +1 -0
- package/lib/esm/components/datepicker/events.js +126 -0
- package/lib/esm/components/datepicker/events.js.map +1 -0
- package/lib/esm/components/datepicker/index.js +9 -0
- package/lib/esm/components/datepicker/index.js.map +1 -0
- package/lib/esm/components/datepicker/keyboard.js +533 -0
- package/lib/esm/components/datepicker/keyboard.js.map +1 -0
- package/lib/esm/components/datepicker/locales.js +74 -0
- package/lib/esm/components/datepicker/locales.js.map +1 -0
- package/lib/esm/components/datepicker/templates.js +390 -0
- package/lib/esm/components/datepicker/templates.js.map +1 -0
- package/lib/esm/components/datepicker/types.js +20 -0
- package/lib/esm/components/datepicker/types.js.map +1 -0
- package/lib/esm/components/datepicker/utils.js +508 -0
- package/lib/esm/components/datepicker/utils.js.map +1 -0
- package/lib/esm/components/dismiss/dismiss.js +10 -6
- package/lib/esm/components/dismiss/dismiss.js.map +1 -1
- package/lib/esm/components/dismiss/index.js +4 -0
- package/lib/esm/components/dismiss/index.js.map +1 -1
- package/lib/esm/components/dismiss/types.js +4 -0
- package/lib/esm/components/dismiss/types.js.map +1 -1
- package/lib/esm/components/drawer/drawer.js +54 -28
- package/lib/esm/components/drawer/drawer.js.map +1 -1
- package/lib/esm/components/drawer/index.js +4 -0
- package/lib/esm/components/drawer/index.js.map +1 -1
- package/lib/esm/components/drawer/types.js +4 -0
- package/lib/esm/components/drawer/types.js.map +1 -1
- package/lib/esm/components/dropdown/dropdown.js +146 -116
- package/lib/esm/components/dropdown/dropdown.js.map +1 -1
- package/lib/esm/components/dropdown/index.js +4 -0
- package/lib/esm/components/dropdown/index.js.map +1 -1
- package/lib/esm/components/dropdown/types.js +4 -0
- package/lib/esm/components/dropdown/types.js.map +1 -1
- package/lib/esm/components/image-input/image-input.js +21 -16
- package/lib/esm/components/image-input/image-input.js.map +1 -1
- package/lib/esm/components/image-input/index.js +4 -0
- package/lib/esm/components/image-input/index.js.map +1 -1
- package/lib/esm/components/image-input/types.js +4 -0
- package/lib/esm/components/image-input/types.js.map +1 -1
- package/lib/esm/components/modal/index.js +4 -0
- package/lib/esm/components/modal/index.js.map +1 -1
- package/lib/esm/components/modal/modal.js +26 -19
- package/lib/esm/components/modal/modal.js.map +1 -1
- package/lib/esm/components/modal/types.js +4 -0
- package/lib/esm/components/modal/types.js.map +1 -1
- package/lib/esm/components/reparent/index.js +4 -0
- package/lib/esm/components/reparent/index.js.map +1 -1
- package/lib/esm/components/reparent/reparent.js +13 -5
- package/lib/esm/components/reparent/reparent.js.map +1 -1
- package/lib/esm/components/reparent/types.js +4 -0
- package/lib/esm/components/reparent/types.js.map +1 -1
- package/lib/esm/components/scrollable/index.js +4 -0
- package/lib/esm/components/scrollable/index.js.map +1 -1
- package/lib/esm/components/scrollable/scrollable.js +17 -10
- package/lib/esm/components/scrollable/scrollable.js.map +1 -1
- package/lib/esm/components/scrollable/types.js +4 -0
- package/lib/esm/components/scrollable/types.js.map +1 -1
- package/lib/esm/components/scrollspy/index.js +4 -0
- package/lib/esm/components/scrollspy/index.js.map +1 -1
- package/lib/esm/components/scrollspy/scrollspy.js +28 -17
- package/lib/esm/components/scrollspy/scrollspy.js.map +1 -1
- package/lib/esm/components/scrollspy/types.js +4 -0
- package/lib/esm/components/scrollspy/types.js.map +1 -1
- package/lib/esm/components/scrollto/index.js +4 -0
- package/lib/esm/components/scrollto/index.js.map +1 -1
- package/lib/esm/components/scrollto/scrollto.js +14 -8
- package/lib/esm/components/scrollto/scrollto.js.map +1 -1
- package/lib/esm/components/scrollto/types.js +4 -0
- package/lib/esm/components/scrollto/types.js.map +1 -1
- package/lib/esm/components/select/combobox.js +234 -0
- package/lib/esm/components/select/combobox.js.map +1 -0
- package/lib/esm/components/select/config.js +223 -0
- package/lib/esm/components/select/config.js.map +1 -0
- package/lib/esm/components/select/dropdown.js +426 -0
- package/lib/esm/components/select/dropdown.js.map +1 -0
- package/lib/esm/components/select/index.js +12 -0
- package/lib/esm/components/select/index.js.map +1 -0
- package/lib/esm/components/select/option.js +50 -0
- package/lib/esm/components/select/option.js.map +1 -0
- package/lib/esm/components/select/remote.js +411 -0
- package/lib/esm/components/select/remote.js.map +1 -0
- package/lib/esm/components/select/search.js +336 -0
- package/lib/esm/components/select/search.js.map +1 -0
- package/lib/esm/components/select/select.js +1535 -0
- package/lib/esm/components/select/select.js.map +1 -0
- package/lib/esm/components/select/tags.js +107 -0
- package/lib/esm/components/select/tags.js.map +1 -0
- package/lib/esm/components/select/templates.js +332 -0
- package/lib/esm/components/select/templates.js.map +1 -0
- package/lib/esm/components/select/types.js +16 -0
- package/lib/esm/components/select/types.js.map +1 -0
- package/lib/esm/components/select/utils.js +598 -0
- package/lib/esm/components/select/utils.js.map +1 -0
- package/lib/esm/components/stepper/index.js +4 -0
- package/lib/esm/components/stepper/index.js.map +1 -1
- package/lib/esm/components/stepper/stepper.js +20 -13
- package/lib/esm/components/stepper/stepper.js.map +1 -1
- package/lib/esm/components/stepper/types.js +4 -0
- package/lib/esm/components/stepper/types.js.map +1 -1
- package/lib/esm/components/sticky/index.js +4 -0
- package/lib/esm/components/sticky/index.js.map +1 -1
- package/lib/esm/components/sticky/sticky.js +60 -38
- package/lib/esm/components/sticky/sticky.js.map +1 -1
- package/lib/esm/components/sticky/types.js +4 -0
- package/lib/esm/components/sticky/types.js.map +1 -1
- package/lib/esm/components/tabs/index.js +4 -0
- package/lib/esm/components/tabs/index.js.map +1 -1
- package/lib/esm/components/tabs/tabs.js +34 -24
- package/lib/esm/components/tabs/tabs.js.map +1 -1
- package/lib/esm/components/tabs/types.js +4 -0
- package/lib/esm/components/tabs/types.js.map +1 -1
- package/lib/esm/components/theme-switch/index.js +6 -0
- package/lib/esm/components/theme-switch/index.js.map +1 -0
- package/lib/esm/components/theme-switch/theme-switch.js +140 -0
- package/lib/esm/components/theme-switch/theme-switch.js.map +1 -0
- package/lib/esm/components/theme-switch/types.js +6 -0
- package/lib/esm/components/theme-switch/types.js.map +1 -0
- package/lib/esm/components/toggle/index.js +4 -0
- package/lib/esm/components/toggle/index.js.map +1 -1
- package/lib/esm/components/toggle/toggle.js +11 -7
- package/lib/esm/components/toggle/toggle.js.map +1 -1
- package/lib/esm/components/toggle/types.js +4 -0
- package/lib/esm/components/toggle/types.js.map +1 -1
- package/lib/esm/components/toggle-password/index.js +4 -0
- package/lib/esm/components/toggle-password/index.js.map +1 -1
- package/lib/esm/components/toggle-password/toggle-password.js +12 -7
- package/lib/esm/components/toggle-password/toggle-password.js.map +1 -1
- package/lib/esm/components/toggle-password/types.js +4 -0
- package/lib/esm/components/toggle-password/types.js.map +1 -1
- package/lib/esm/components/tooltip/index.js +4 -0
- package/lib/esm/components/tooltip/index.js.map +1 -1
- package/lib/esm/components/tooltip/tooltip.js +52 -22
- package/lib/esm/components/tooltip/tooltip.js.map +1 -1
- package/lib/esm/components/tooltip/types.js +4 -0
- package/lib/esm/components/tooltip/types.js.map +1 -1
- package/lib/esm/helpers/data.js +5 -1
- package/lib/esm/helpers/data.js.map +1 -1
- package/lib/esm/helpers/dom.js +34 -29
- package/lib/esm/helpers/dom.js.map +1 -1
- package/lib/esm/helpers/event-handler.js +5 -1
- package/lib/esm/helpers/event-handler.js.map +1 -1
- package/lib/esm/helpers/utils.js +65 -11
- package/lib/esm/helpers/utils.js.map +1 -1
- package/lib/esm/index.js +14 -16
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/types.js +4 -0
- package/lib/esm/types.js.map +1 -1
- package/package.json +16 -8
- package/src/components/accordion/accordion-menu.css +1 -2
- package/src/components/accordion/accordion.css +1 -1
- package/src/components/accordion/accordion.ts +1 -1
- package/src/components/accordion/index.ts +1 -1
- package/src/components/accordion/types.ts +1 -1
- package/src/components/alert/alert.css +1 -1
- package/src/components/avatar/avatar.css +1 -1
- package/src/components/badge/badge.css +1 -1
- package/src/components/breadcrumb/breadcrumb.css +1 -1
- package/src/components/btn/btn.css +1 -1
- package/src/components/card/card.css +1 -1
- package/src/components/checkbox/checkbox.css +1 -1
- package/src/components/collapse/collapse.css +1 -1
- package/src/components/collapse/collapse.ts +1 -1
- package/src/components/collapse/index.ts +1 -1
- package/src/components/collapse/types.ts +1 -1
- package/src/components/component.ts +1 -1
- package/src/components/constants.ts +1 -1
- package/src/components/datatable/datatable-checkbox.ts +1 -1
- package/src/components/datatable/datatable-sort.ts +1 -1
- package/src/components/datatable/datatable.css +1 -1
- package/src/components/datatable/datatable.ts +38 -2
- package/src/components/datatable/index.ts +1 -1
- package/src/components/datatable/types.ts +1 -1
- package/src/components/datepicker/calendar.ts +1 -1
- package/src/components/datepicker/config.ts +1 -1
- package/src/components/datepicker/datepicker.css +1 -1
- package/src/components/datepicker/datepicker.ts +1 -1
- package/src/components/datepicker/dropdown.ts +1 -1
- package/src/components/datepicker/events.ts +1 -1
- package/src/components/datepicker/index.ts +1 -1
- package/src/components/datepicker/keyboard.ts +1 -1
- package/src/components/datepicker/locales.ts +1 -1
- package/src/components/datepicker/templates.ts +1 -1
- package/src/components/datepicker/types.ts +1 -1
- package/src/components/datepicker/utils.ts +1 -1
- package/src/components/dismiss/dismiss.css +1 -1
- package/src/components/dismiss/dismiss.ts +1 -1
- package/src/components/dismiss/index.ts +1 -1
- package/src/components/dismiss/types.ts +1 -1
- package/src/components/drawer/drawer.css +1 -1
- package/src/components/drawer/drawer.ts +1 -1
- package/src/components/drawer/index.ts +1 -1
- package/src/components/drawer/types.ts +1 -1
- package/src/components/dropdown/dropdown-menu.css +1 -1
- package/src/components/dropdown/dropdown.css +1 -1
- package/src/components/dropdown/dropdown.ts +1 -1
- package/src/components/dropdown/index.ts +1 -1
- package/src/components/dropdown/types.ts +1 -1
- package/src/components/form/form.css +1 -1
- package/src/components/image-input/image-input.css +1 -1
- package/src/components/image-input/image-input.ts +1 -1
- package/src/components/image-input/index.ts +1 -1
- package/src/components/image-input/types.ts +1 -1
- package/src/components/input/input-group.css +8 -5
- package/src/components/input/input.css +1 -1
- package/src/components/kbd/kbd.css +1 -1
- package/src/components/label/label.css +1 -1
- package/src/components/link/link.css +1 -1
- package/src/components/modal/index.ts +1 -1
- package/src/components/modal/modal.css +1 -1
- package/src/components/modal/modal.ts +1 -1
- package/src/components/modal/types.ts +1 -1
- package/src/components/pagination/pagination.css +1 -1
- package/src/components/popover/popover.css +1 -1
- package/src/components/progress/progress.css +2 -2
- package/src/components/radio/radio.css +1 -1
- package/src/components/reparent/index.ts +1 -1
- package/src/components/reparent/reparent.ts +1 -1
- package/src/components/reparent/types.ts +1 -1
- package/src/components/scrollable/index.ts +1 -1
- package/src/components/scrollable/scrollable.css +1 -1
- package/src/components/scrollable/scrollable.ts +1 -1
- package/src/components/scrollable/types.ts +1 -1
- package/src/components/scrollspy/index.ts +1 -1
- package/src/components/scrollspy/scrollspy.css +1 -1
- package/src/components/scrollspy/scrollspy.ts +1 -1
- package/src/components/scrollspy/types.ts +1 -1
- package/src/components/scrollto/index.ts +1 -1
- package/src/components/scrollto/scrollto.ts +1 -1
- package/src/components/scrollto/types.ts +1 -1
- package/src/components/select/combobox.ts +1 -1
- package/src/components/select/config.ts +1 -1
- package/src/components/select/dropdown.ts +1 -1
- package/src/components/select/index.ts +1 -1
- package/src/components/select/option.ts +1 -1
- package/src/components/select/remote.ts +1 -1
- package/src/components/select/search.ts +1 -1
- package/src/components/select/select.css +1 -1
- package/src/components/select/select.ts +1 -1
- package/src/components/select/tags.ts +1 -1
- package/src/components/select/templates.ts +1 -1
- package/src/components/select/types.ts +1 -1
- package/src/components/select/utils.ts +1 -1
- package/src/components/select/variants.css +1 -1
- package/src/components/separator/separator.css +1 -1
- package/src/components/skeleton/skeleton.css +1 -1
- package/src/components/stepper/index.ts +1 -1
- package/src/components/stepper/stepper.css +1 -1
- package/src/components/stepper/stepper.ts +1 -1
- package/src/components/stepper/types.ts +1 -1
- package/src/components/sticky/index.ts +1 -1
- package/src/components/sticky/sticky.css +1 -1
- package/src/components/sticky/sticky.ts +1 -1
- package/src/components/sticky/types.ts +1 -1
- package/src/components/switch/switch.css +1 -1
- package/src/components/table/table.css +2 -2
- package/src/components/tabs/index.ts +1 -1
- package/src/components/tabs/tabs.css +1 -1
- package/src/components/tabs/tabs.ts +1 -1
- package/src/components/tabs/types.ts +1 -1
- package/src/components/textarea/textarea.css +1 -1
- package/src/components/theme-switch/index.ts +1 -1
- package/src/components/theme-switch/theme-switch.css +1 -1
- package/src/components/theme-switch/theme-switch.ts +1 -1
- package/src/components/theme-switch/types.ts +1 -1
- package/src/components/toggle/index.ts +1 -1
- package/src/components/toggle/toggle.css +1 -1
- package/src/components/toggle/toggle.ts +1 -1
- package/src/components/toggle/types.ts +1 -1
- package/src/components/toggle-group/toggle-group.css +1 -1
- package/src/components/toggle-password/index.ts +1 -1
- package/src/components/toggle-password/toggle-password.css +1 -1
- package/src/components/toggle-password/toggle-password.ts +1 -1
- package/src/components/toggle-password/types.ts +1 -1
- package/src/components/tooltip/index.ts +1 -1
- package/src/components/tooltip/tooltip.css +1 -1
- package/src/components/tooltip/tooltip.ts +1 -1
- package/src/components/tooltip/types.ts +1 -1
- package/src/helpers/data.ts +1 -1
- package/src/helpers/dom.ts +1 -1
- package/src/helpers/event-handler.ts +1 -1
- package/src/helpers/utils.ts +1 -1
- package/src/index.ts +1 -1
- package/src/types.ts +1 -1
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
*/
|
|
5
|
+
var __assign = (this && this.__assign) || function () {
|
|
6
|
+
__assign = Object.assign || function(t) {
|
|
7
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8
|
+
s = arguments[i];
|
|
9
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
10
|
+
t[p] = s[p];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
return __assign.apply(this, arguments);
|
|
15
|
+
};
|
|
16
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
17
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
18
|
+
if (ar || !(i in from)) {
|
|
19
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
20
|
+
ar[i] = from[i];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
24
|
+
};
|
|
25
|
+
export var DefaultConfig = {
|
|
26
|
+
// ...other config options
|
|
27
|
+
loadMoreText: 'Load more...',
|
|
28
|
+
// General Display
|
|
29
|
+
debug: false,
|
|
30
|
+
placeholder: 'Select an option', // Default placeholder text when no option is selected
|
|
31
|
+
dropdownZindex: null, // Initial z-index value for the dropdown
|
|
32
|
+
// Data Handling
|
|
33
|
+
items: [], // Static list of options
|
|
34
|
+
isLoading: false, // Indicates if options are being loaded asynchronously
|
|
35
|
+
onFetch: null, // Callback function to fetch options asynchronously
|
|
36
|
+
// Remote Data Configuration
|
|
37
|
+
remote: false, // Enable/disable remote data fetching
|
|
38
|
+
dataUrl: null, // URL to fetch options from
|
|
39
|
+
apiDataProperty: null, // Property in the response object that contains the options
|
|
40
|
+
remoteErrorMessage: 'Failed to load data', // Error message to display if remote data fetch fails
|
|
41
|
+
// Field Mapping
|
|
42
|
+
dataValueField: null, // Property in the option object that contains the value (default: 'id')
|
|
43
|
+
dataFieldText: null, // Property in the option object that contains the text (default: 'title')
|
|
44
|
+
dataFieldDescription: null, // Property in the option object that contains the description
|
|
45
|
+
dataFieldIcon: null, // Property in the option object that contains the icon
|
|
46
|
+
dataFieldIconWidth: null, // Property in the option object that contains the icon width
|
|
47
|
+
dataFieldIconHeight: null, // Property in the option object that contains the icon height
|
|
48
|
+
// Search Configuration
|
|
49
|
+
searchParam: '', // Query parameter for API search requests
|
|
50
|
+
searchDebounce: 300, // Debounce delay for search (in ms)
|
|
51
|
+
// Pagination Configuration
|
|
52
|
+
pagination: false, // Enable/disable pagination for remote data
|
|
53
|
+
paginationLimit: 10, // Items per page
|
|
54
|
+
paginationPageParam: 'page', // Parameter name for page number
|
|
55
|
+
paginationLimitParam: 'limit', // Parameter name for items per page
|
|
56
|
+
paginationTotalParam: 'total', // Parameter name for total items
|
|
57
|
+
// Selection Behavior
|
|
58
|
+
multiple: false, // Enable/disable multi-select
|
|
59
|
+
maxSelections: null, // Maximum number of selections allowed in multi-select mode (null for unlimited)
|
|
60
|
+
closeOnSelect: true, // Close the dropdown after selecting an option (single-select only)
|
|
61
|
+
disabled: false, // Disable the select component
|
|
62
|
+
isRequired: false, // Make selection required
|
|
63
|
+
mode: null, // Select mode: tags or combobox
|
|
64
|
+
// Search Functionality
|
|
65
|
+
enableSearch: false, // Enable/disable search functionality within the dropdown
|
|
66
|
+
searchPlaceholder: 'Search...', // Placeholder text for the search input
|
|
67
|
+
searchAutofocus: true, // Autofocus on search input when dropdown opens
|
|
68
|
+
searchMinLength: 0, // Minimum characters required to trigger search
|
|
69
|
+
searchMaxItems: 50, // Maximum number of search results to display
|
|
70
|
+
searchNotFoundText: 'No results found', // Text to display when no search results are found
|
|
71
|
+
searchHighlight: true, // Highlight matching search terms within the options
|
|
72
|
+
clearSearchOnClose: true, // Clear search input when dropdown closes
|
|
73
|
+
// Multi-Select Display
|
|
74
|
+
selectAllText: 'Select all', // Text for the "Select All" option (if implemented)
|
|
75
|
+
clearAllText: 'Clear all', // Text for the "Clear All" option (if implemented)
|
|
76
|
+
showSelectedCount: true, // Show the number of selected options in multi-select mode
|
|
77
|
+
renderSelected: null, // Custom function to render the selected value(s) in the display area
|
|
78
|
+
// Accessibility & Usability
|
|
79
|
+
label: 'Select an option', // Label for the select component (for screen readers)
|
|
80
|
+
height: 250, // Maximum height of the dropdown menu in pixels (if exceeded, a scrollbar will appear)
|
|
81
|
+
// Dropdown Configuration
|
|
82
|
+
dropdownPlacement: null,
|
|
83
|
+
dropdownFlip: false,
|
|
84
|
+
dropdownPreventOverflow: false,
|
|
85
|
+
dropdownStrategy: null,
|
|
86
|
+
dropdownWidth: null, // Custom width for dropdown (e.g., '300px'), null to match toggle element width
|
|
87
|
+
// Styling
|
|
88
|
+
focusClass: 'option-focused',
|
|
89
|
+
hoverClass: 'hovered',
|
|
90
|
+
bgClass: 'bg-blue-50',
|
|
91
|
+
fontClass: 'font-medium',
|
|
92
|
+
};
|
|
93
|
+
var KTSelectState = /** @class */ (function () {
|
|
94
|
+
function KTSelectState(config) {
|
|
95
|
+
this._selectedOptions = [];
|
|
96
|
+
this._config = this._initDefaultConfig(config);
|
|
97
|
+
}
|
|
98
|
+
KTSelectState.prototype._initDefaultConfig = function (config) {
|
|
99
|
+
return __assign(__assign({}, DefaultConfig), config);
|
|
100
|
+
};
|
|
101
|
+
KTSelectState.prototype.setItems = function (items, query) {
|
|
102
|
+
var _this = this;
|
|
103
|
+
return new Promise(function (resolve, reject) {
|
|
104
|
+
if (items) {
|
|
105
|
+
_this._config.items = items;
|
|
106
|
+
resolve();
|
|
107
|
+
}
|
|
108
|
+
else if (_this._config.dataUrl) {
|
|
109
|
+
_this._fetchRemoteData(query)
|
|
110
|
+
.then(resolve) // Resolve after _fetchRemoteData completes
|
|
111
|
+
.catch(reject);
|
|
112
|
+
}
|
|
113
|
+
else if (_this._config.onFetch) {
|
|
114
|
+
_this._config.isLoading = true;
|
|
115
|
+
_this._config
|
|
116
|
+
.onFetch(query)
|
|
117
|
+
.then(function (items) {
|
|
118
|
+
_this._config.items = items;
|
|
119
|
+
resolve(); // Resolve after onFetch completes
|
|
120
|
+
})
|
|
121
|
+
.catch(function (error) {
|
|
122
|
+
console.error('Error fetching data:', error);
|
|
123
|
+
reject(error); // Reject on error
|
|
124
|
+
})
|
|
125
|
+
.finally(function () {
|
|
126
|
+
_this._config.isLoading = false;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
resolve();
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
KTSelectState.prototype._fetchRemoteData = function (query) {
|
|
135
|
+
var _this = this;
|
|
136
|
+
this._config.isLoading = true; // Show loading indicator
|
|
137
|
+
var url = this._config.dataUrl;
|
|
138
|
+
if (query) {
|
|
139
|
+
url += "?".concat(this._config.searchParam, "=").concat(encodeURIComponent(query));
|
|
140
|
+
}
|
|
141
|
+
return fetch(url)
|
|
142
|
+
.then(function (response) { return response.json(); })
|
|
143
|
+
.then(function (data) {
|
|
144
|
+
if (_this._config.apiDataProperty) {
|
|
145
|
+
// Extract the data property from the response
|
|
146
|
+
if (_this._config.apiDataProperty in data) {
|
|
147
|
+
data = data[_this._config.apiDataProperty];
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
console.error('Error fetching data:', "Property '".concat(_this._config.apiDataProperty, "' not found in response"));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
_this._config.items = data;
|
|
155
|
+
})
|
|
156
|
+
.catch(function (error) {
|
|
157
|
+
console.error('Error fetching data:', error);
|
|
158
|
+
// Handle error (e.g., display an error message)
|
|
159
|
+
})
|
|
160
|
+
.finally(function () {
|
|
161
|
+
_this._config.isLoading = false; // Hide loading indicator
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
KTSelectState.prototype.getItems = function () {
|
|
165
|
+
return this._config.items || [];
|
|
166
|
+
};
|
|
167
|
+
KTSelectState.prototype.setItemsFromOptions = function (options) {
|
|
168
|
+
this._config.items = options.map(function (option) { return ({
|
|
169
|
+
id: option.value,
|
|
170
|
+
title: option.textContent || '',
|
|
171
|
+
// Add other properties from option element if needed
|
|
172
|
+
}); });
|
|
173
|
+
};
|
|
174
|
+
KTSelectState.prototype.getConfig = function () {
|
|
175
|
+
return this._config;
|
|
176
|
+
};
|
|
177
|
+
KTSelectState.prototype.setSelectedOptions = function (value) {
|
|
178
|
+
if (this._config.multiple &&
|
|
179
|
+
typeof value === 'string' &&
|
|
180
|
+
!this._selectedOptions.includes(value)) {
|
|
181
|
+
this._selectedOptions.push(value);
|
|
182
|
+
}
|
|
183
|
+
else if (!this._config.multiple) {
|
|
184
|
+
// For single select, replace the previous selection with the new one
|
|
185
|
+
this._selectedOptions = typeof value === 'string' ? [value] : [value[0]];
|
|
186
|
+
}
|
|
187
|
+
else if (this._config.multiple && Array.isArray(value)) {
|
|
188
|
+
// For multiple select with array input, use the provided array
|
|
189
|
+
this._selectedOptions = __spreadArray([], value, true);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
KTSelectState.prototype.toggleSelectedOptions = function (value) {
|
|
193
|
+
if (!this._config.multiple) {
|
|
194
|
+
// For non-multiple, always set the new value
|
|
195
|
+
this._selectedOptions = [value];
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
// For multiple selection, toggle the value
|
|
199
|
+
var index = this._selectedOptions.indexOf(value);
|
|
200
|
+
if (index > -1) {
|
|
201
|
+
this._selectedOptions.splice(index, 1);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
this._selectedOptions.push(value);
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
KTSelectState.prototype.getSelectedOptions = function () {
|
|
208
|
+
return this._selectedOptions;
|
|
209
|
+
};
|
|
210
|
+
KTSelectState.prototype.isSelected = function (value) {
|
|
211
|
+
return this._selectedOptions.includes(value);
|
|
212
|
+
};
|
|
213
|
+
KTSelectState.prototype.modifyConfig = function (config) {
|
|
214
|
+
this._config = __assign(__assign({}, this._config), config);
|
|
215
|
+
};
|
|
216
|
+
return KTSelectState;
|
|
217
|
+
}());
|
|
218
|
+
export { KTSelectState };
|
|
219
|
+
export var SelectOptionDefaultConfig = {
|
|
220
|
+
description: '',
|
|
221
|
+
icon: null,
|
|
222
|
+
};
|
|
223
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/components/select/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
*/
|
|
5
|
+
var __extends = (this && this.__extends) || (function () {
|
|
6
|
+
var extendStatics = function (d, b) {
|
|
7
|
+
extendStatics = Object.setPrototypeOf ||
|
|
8
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
9
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
10
|
+
return extendStatics(d, b);
|
|
11
|
+
};
|
|
12
|
+
return function (d, b) {
|
|
13
|
+
if (typeof b !== "function" && b !== null)
|
|
14
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
15
|
+
extendStatics(d, b);
|
|
16
|
+
function __() { this.constructor = d; }
|
|
17
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
18
|
+
};
|
|
19
|
+
})();
|
|
20
|
+
import { createPopper, } from '@popperjs/core';
|
|
21
|
+
import KTDom from '../../helpers/dom';
|
|
22
|
+
import KTData from '../../helpers/data';
|
|
23
|
+
import KTComponent from '../component';
|
|
24
|
+
import { FocusManager, EventManager } from './utils';
|
|
25
|
+
/**
|
|
26
|
+
* KTSelectDropdown
|
|
27
|
+
*
|
|
28
|
+
* A specialized dropdown implementation for the KTSelect component.
|
|
29
|
+
* This module handles the dropdown functionality for the select component,
|
|
30
|
+
* including positioning, showing/hiding, and keyboard navigation.
|
|
31
|
+
*/
|
|
32
|
+
var KTSelectDropdown = /** @class */ (function (_super) {
|
|
33
|
+
__extends(KTSelectDropdown, _super);
|
|
34
|
+
/**
|
|
35
|
+
* Constructor
|
|
36
|
+
* @param element The parent element (select wrapper)
|
|
37
|
+
* @param toggleElement The element that triggers the dropdown
|
|
38
|
+
* @param dropdownElement The dropdown content element
|
|
39
|
+
* @param config The configuration options
|
|
40
|
+
*/
|
|
41
|
+
function KTSelectDropdown(element, toggleElement, dropdownElement, config) {
|
|
42
|
+
var _this = _super.call(this) || this;
|
|
43
|
+
_this._name = 'select-dropdown';
|
|
44
|
+
// State
|
|
45
|
+
_this._isOpen = false;
|
|
46
|
+
_this._isTransitioning = false;
|
|
47
|
+
_this._popperInstance = null;
|
|
48
|
+
_this._element = element;
|
|
49
|
+
_this._toggleElement = toggleElement;
|
|
50
|
+
_this._dropdownElement = dropdownElement;
|
|
51
|
+
_this._config = config;
|
|
52
|
+
_this._eventManager = new EventManager();
|
|
53
|
+
_this._focusManager = new FocusManager(dropdownElement, '[data-kt-select-option]', config);
|
|
54
|
+
_this._setupEventListeners();
|
|
55
|
+
return _this;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Set up event listeners for the dropdown
|
|
59
|
+
*/
|
|
60
|
+
KTSelectDropdown.prototype._setupEventListeners = function () {
|
|
61
|
+
// Toggle click
|
|
62
|
+
this._eventManager.addListener(this._toggleElement, 'click', this._handleToggleClick.bind(this));
|
|
63
|
+
// Keyboard navigation
|
|
64
|
+
this._eventManager.addListener(this._element, 'keydown', this._handleKeyDown.bind(this));
|
|
65
|
+
// Close on outside click
|
|
66
|
+
this._eventManager.addListener(document, 'click', this._handleOutsideClick.bind(this));
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Handle toggle element click
|
|
70
|
+
*/
|
|
71
|
+
KTSelectDropdown.prototype._handleToggleClick = function (event) {
|
|
72
|
+
event.preventDefault();
|
|
73
|
+
event.stopPropagation();
|
|
74
|
+
this.toggle();
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Handle keyboard events
|
|
78
|
+
*/
|
|
79
|
+
KTSelectDropdown.prototype._handleKeyDown = function (event) {
|
|
80
|
+
if (!this._isOpen)
|
|
81
|
+
return;
|
|
82
|
+
switch (event.key) {
|
|
83
|
+
case 'Escape':
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
this.close();
|
|
86
|
+
this._toggleElement.focus();
|
|
87
|
+
break;
|
|
88
|
+
case 'ArrowDown':
|
|
89
|
+
event.preventDefault();
|
|
90
|
+
this._focusManager.focusNext();
|
|
91
|
+
break;
|
|
92
|
+
case 'ArrowUp':
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
this._focusManager.focusPrevious();
|
|
95
|
+
break;
|
|
96
|
+
case 'Home':
|
|
97
|
+
event.preventDefault();
|
|
98
|
+
// Focus first visible option
|
|
99
|
+
var firstOption = this._focusManager.getVisibleOptions()[0];
|
|
100
|
+
if (firstOption) {
|
|
101
|
+
this._focusManager.applyFocus(firstOption);
|
|
102
|
+
this._focusManager.scrollIntoView(firstOption);
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
case 'End':
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
// Focus last visible option
|
|
108
|
+
var visibleOptions = this._focusManager.getVisibleOptions();
|
|
109
|
+
var lastOption = visibleOptions[visibleOptions.length - 1];
|
|
110
|
+
if (lastOption) {
|
|
111
|
+
this._focusManager.applyFocus(lastOption);
|
|
112
|
+
this._focusManager.scrollIntoView(lastOption);
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Handle clicks outside the dropdown
|
|
119
|
+
*/
|
|
120
|
+
KTSelectDropdown.prototype._handleOutsideClick = function (event) {
|
|
121
|
+
if (!this._isOpen)
|
|
122
|
+
return;
|
|
123
|
+
var target = event.target;
|
|
124
|
+
if (!this._element.contains(target) &&
|
|
125
|
+
!this._dropdownElement.contains(target)) {
|
|
126
|
+
this.close();
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Set width of dropdown based on toggle element
|
|
131
|
+
*/
|
|
132
|
+
KTSelectDropdown.prototype._setDropdownWidth = function () {
|
|
133
|
+
if (!this._dropdownElement || !this._toggleElement)
|
|
134
|
+
return;
|
|
135
|
+
// Check if width is configured
|
|
136
|
+
if (this._config.dropdownWidth) {
|
|
137
|
+
// If custom width is set, use that
|
|
138
|
+
this._dropdownElement.style.width = this._config.dropdownWidth;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Otherwise, match toggle element width for a cleaner appearance
|
|
142
|
+
var toggleWidth = this._toggleElement.offsetWidth;
|
|
143
|
+
this._dropdownElement.style.width = "".concat(toggleWidth, "px");
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Initialize the Popper instance for dropdown positioning
|
|
148
|
+
*/
|
|
149
|
+
KTSelectDropdown.prototype._initPopper = function () {
|
|
150
|
+
// Destroy existing popper instance if it exists
|
|
151
|
+
this._destroyPopper();
|
|
152
|
+
// Default offset
|
|
153
|
+
var offsetValue = '0, 5';
|
|
154
|
+
// Get configuration options
|
|
155
|
+
var placement = this._config.dropdownPlacement || 'bottom-start';
|
|
156
|
+
var strategy = this._config.dropdownStrategy || 'fixed';
|
|
157
|
+
var preventOverflow = this._config.dropdownPreventOverflow !== false;
|
|
158
|
+
var flip = this._config.dropdownFlip !== false;
|
|
159
|
+
// Create new popper instance
|
|
160
|
+
this._popperInstance = createPopper(this._toggleElement, this._dropdownElement, {
|
|
161
|
+
placement: placement,
|
|
162
|
+
strategy: strategy,
|
|
163
|
+
modifiers: [
|
|
164
|
+
{
|
|
165
|
+
name: 'offset',
|
|
166
|
+
options: {
|
|
167
|
+
offset: this._parseOffset(offsetValue),
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
name: 'preventOverflow',
|
|
172
|
+
options: {
|
|
173
|
+
boundary: 'viewport',
|
|
174
|
+
altAxis: preventOverflow,
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: 'flip',
|
|
179
|
+
options: {
|
|
180
|
+
enabled: flip,
|
|
181
|
+
fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
name: 'sameWidth',
|
|
186
|
+
enabled: !this._config.dropdownWidth,
|
|
187
|
+
phase: 'beforeWrite',
|
|
188
|
+
requires: ['computeStyles'],
|
|
189
|
+
fn: function (_a) {
|
|
190
|
+
var state = _a.state;
|
|
191
|
+
state.styles.popper.width = "".concat(state.rects.reference.width, "px");
|
|
192
|
+
},
|
|
193
|
+
effect: function (_a) {
|
|
194
|
+
var state = _a.state;
|
|
195
|
+
// Add type guard for HTMLElement
|
|
196
|
+
var reference = state.elements.reference;
|
|
197
|
+
if (reference && 'offsetWidth' in reference) {
|
|
198
|
+
state.elements.popper.style.width = "".concat(reference.offsetWidth, "px");
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
],
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* Parse offset string into an array of numbers
|
|
207
|
+
*/
|
|
208
|
+
KTSelectDropdown.prototype._parseOffset = function (offset) {
|
|
209
|
+
return offset.split(',').map(function (value) { return parseInt(value.trim(), 10); });
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Destroy the Popper instance
|
|
213
|
+
*/
|
|
214
|
+
KTSelectDropdown.prototype._destroyPopper = function () {
|
|
215
|
+
if (this._popperInstance) {
|
|
216
|
+
this._popperInstance.destroy();
|
|
217
|
+
this._popperInstance = null;
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* Update dropdown position
|
|
222
|
+
*/
|
|
223
|
+
KTSelectDropdown.prototype.updatePosition = function () {
|
|
224
|
+
if (this._popperInstance) {
|
|
225
|
+
this._popperInstance.update();
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* Toggle the dropdown
|
|
230
|
+
*/
|
|
231
|
+
KTSelectDropdown.prototype.toggle = function () {
|
|
232
|
+
if (this._config.debug)
|
|
233
|
+
console.log('KTSelectDropdown.toggle called - isOpen:', this._isOpen);
|
|
234
|
+
if (this._isTransitioning) {
|
|
235
|
+
if (this._config.debug)
|
|
236
|
+
console.log('KTSelectDropdown.toggle - ignoring during transition');
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
if (this._isOpen) {
|
|
240
|
+
this.close();
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
this.open();
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
/**
|
|
247
|
+
* Open the dropdown
|
|
248
|
+
*/
|
|
249
|
+
KTSelectDropdown.prototype.open = function () {
|
|
250
|
+
var _this = this;
|
|
251
|
+
if (this._isOpen || this._isTransitioning)
|
|
252
|
+
return;
|
|
253
|
+
// Fire before show event
|
|
254
|
+
var beforeShowEvent = new CustomEvent('kt.select.dropdown.show', {
|
|
255
|
+
bubbles: true,
|
|
256
|
+
cancelable: true,
|
|
257
|
+
});
|
|
258
|
+
this._element.dispatchEvent(beforeShowEvent);
|
|
259
|
+
if (beforeShowEvent.defaultPrevented)
|
|
260
|
+
return;
|
|
261
|
+
// Begin opening transition
|
|
262
|
+
this._isTransitioning = true;
|
|
263
|
+
// Set initial styles - remove display: block and use class toggling instead
|
|
264
|
+
this._dropdownElement.classList.remove('hidden');
|
|
265
|
+
this._dropdownElement.style.opacity = '0';
|
|
266
|
+
// Set dropdown width
|
|
267
|
+
this._setDropdownWidth();
|
|
268
|
+
// Make sure the element is visible for transitioning
|
|
269
|
+
KTDom.reflow(this._dropdownElement);
|
|
270
|
+
// Apply z-index if configured
|
|
271
|
+
if (this._config.dropdownZindex) {
|
|
272
|
+
this._dropdownElement.style.zIndex =
|
|
273
|
+
this._config.dropdownZindex.toString();
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
// Auto-calculate z-index
|
|
277
|
+
var parentZindex = KTDom.getHighestZindex(this._element);
|
|
278
|
+
if (parentZindex) {
|
|
279
|
+
this._dropdownElement.style.zIndex = (parentZindex + 1).toString();
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
// Initialize popper for positioning
|
|
283
|
+
this._initPopper();
|
|
284
|
+
// Add active classes
|
|
285
|
+
this._dropdownElement.classList.add('open');
|
|
286
|
+
this._toggleElement.classList.add('active');
|
|
287
|
+
this._toggleElement.setAttribute('aria-expanded', 'true');
|
|
288
|
+
// Start transition
|
|
289
|
+
this._dropdownElement.style.opacity = '1';
|
|
290
|
+
// Handle transition end
|
|
291
|
+
KTDom.transitionEnd(this._dropdownElement, function () {
|
|
292
|
+
_this._isTransitioning = false;
|
|
293
|
+
_this._isOpen = true;
|
|
294
|
+
// Focus the first item if search is enabled
|
|
295
|
+
if (_this._config.enableSearch) {
|
|
296
|
+
var searchInput = _this._dropdownElement.querySelector('input[type="search"]');
|
|
297
|
+
if (searchInput) {
|
|
298
|
+
searchInput.focus();
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
_this._focusFirstOption();
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
_this._focusFirstOption();
|
|
306
|
+
}
|
|
307
|
+
// Fire after show event
|
|
308
|
+
var afterShowEvent = new CustomEvent('kt.select.dropdown.shown', {
|
|
309
|
+
bubbles: true,
|
|
310
|
+
});
|
|
311
|
+
_this._element.dispatchEvent(afterShowEvent);
|
|
312
|
+
});
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* Focus the first option in the dropdown
|
|
316
|
+
*/
|
|
317
|
+
KTSelectDropdown.prototype._focusFirstOption = function () {
|
|
318
|
+
var firstOption = this._focusManager.getVisibleOptions()[0];
|
|
319
|
+
if (firstOption) {
|
|
320
|
+
this._focusManager.applyFocus(firstOption);
|
|
321
|
+
this._focusManager.scrollIntoView(firstOption);
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* Close the dropdown
|
|
326
|
+
*/
|
|
327
|
+
KTSelectDropdown.prototype.close = function () {
|
|
328
|
+
var _this = this;
|
|
329
|
+
if (this._config.debug)
|
|
330
|
+
console.log('KTSelectDropdown.close called - isOpen:', this._isOpen, 'isTransitioning:', this._isTransitioning);
|
|
331
|
+
if (!this._isOpen || this._isTransitioning) {
|
|
332
|
+
if (this._config.debug)
|
|
333
|
+
console.log('KTSelectDropdown.close - early return: dropdown not open or is transitioning');
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
// Fire before hide event
|
|
337
|
+
var beforeHideEvent = new CustomEvent('kt.select.dropdown.hide', {
|
|
338
|
+
bubbles: true,
|
|
339
|
+
cancelable: true,
|
|
340
|
+
});
|
|
341
|
+
this._element.dispatchEvent(beforeHideEvent);
|
|
342
|
+
if (beforeHideEvent.defaultPrevented) {
|
|
343
|
+
if (this._config.debug)
|
|
344
|
+
console.log('KTSelectDropdown.close - canceling due to defaultPrevented on beforeHideEvent');
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
if (this._config.debug)
|
|
348
|
+
console.log('KTSelectDropdown.close - starting transition');
|
|
349
|
+
// Begin closing transition
|
|
350
|
+
this._isTransitioning = true;
|
|
351
|
+
// Start transition
|
|
352
|
+
this._dropdownElement.style.opacity = '0';
|
|
353
|
+
// Use a combination of transition end and a fallback timer
|
|
354
|
+
var transitionComplete = false;
|
|
355
|
+
// Set a fixed-duration fallback in case the transition event doesn't fire
|
|
356
|
+
var fallbackTimer = setTimeout(function () {
|
|
357
|
+
if (!transitionComplete) {
|
|
358
|
+
if (_this._config.debug)
|
|
359
|
+
console.log('KTSelectDropdown.close - fallback timer triggered');
|
|
360
|
+
completeTransition();
|
|
361
|
+
}
|
|
362
|
+
}, 300); // 300ms should be enough for most transitions
|
|
363
|
+
// Setup the transition end function
|
|
364
|
+
var completeTransition = function () {
|
|
365
|
+
if (transitionComplete)
|
|
366
|
+
return;
|
|
367
|
+
transitionComplete = true;
|
|
368
|
+
clearTimeout(fallbackTimer);
|
|
369
|
+
if (_this._config.debug)
|
|
370
|
+
console.log('KTSelectDropdown.close - transition ended');
|
|
371
|
+
// Remove active classes
|
|
372
|
+
_this._dropdownElement.classList.add('hidden');
|
|
373
|
+
_this._dropdownElement.classList.remove('open');
|
|
374
|
+
_this._toggleElement.classList.remove('active');
|
|
375
|
+
_this._toggleElement.setAttribute('aria-expanded', 'false');
|
|
376
|
+
// Reset styles - replace display: none with adding hidden class
|
|
377
|
+
_this._dropdownElement.classList.add('hidden');
|
|
378
|
+
_this._dropdownElement.style.opacity = '';
|
|
379
|
+
_this._dropdownElement.style.zIndex = '';
|
|
380
|
+
// Destroy popper
|
|
381
|
+
_this._destroyPopper();
|
|
382
|
+
// Update state
|
|
383
|
+
_this._isTransitioning = false;
|
|
384
|
+
_this._isOpen = false;
|
|
385
|
+
// Fire after hide event
|
|
386
|
+
var afterHideEvent = new CustomEvent('kt.select.dropdown.hidden', {
|
|
387
|
+
bubbles: true,
|
|
388
|
+
});
|
|
389
|
+
_this._element.dispatchEvent(afterHideEvent);
|
|
390
|
+
if (_this._config.debug)
|
|
391
|
+
console.log('KTSelectDropdown.close - complete, events fired');
|
|
392
|
+
};
|
|
393
|
+
// Handle transition end via the utility but also have the fallback
|
|
394
|
+
KTDom.transitionEnd(this._dropdownElement, completeTransition);
|
|
395
|
+
};
|
|
396
|
+
/**
|
|
397
|
+
* Check if dropdown is open
|
|
398
|
+
*/
|
|
399
|
+
KTSelectDropdown.prototype.isOpen = function () {
|
|
400
|
+
return this._isOpen;
|
|
401
|
+
};
|
|
402
|
+
/**
|
|
403
|
+
* Clean up component
|
|
404
|
+
*/
|
|
405
|
+
KTSelectDropdown.prototype.dispose = function () {
|
|
406
|
+
// Destroy popper
|
|
407
|
+
this._destroyPopper();
|
|
408
|
+
// Remove event listeners
|
|
409
|
+
this._eventManager.removeAllListeners(this._element);
|
|
410
|
+
this._eventManager.removeAllListeners(this._toggleElement);
|
|
411
|
+
this._eventManager.removeAllListeners(document);
|
|
412
|
+
// Clean up focus manager
|
|
413
|
+
if (this._focusManager &&
|
|
414
|
+
typeof this._focusManager.dispose === 'function') {
|
|
415
|
+
this._focusManager.dispose();
|
|
416
|
+
}
|
|
417
|
+
// Clean up state
|
|
418
|
+
this._isOpen = false;
|
|
419
|
+
this._isTransitioning = false;
|
|
420
|
+
// Remove data reference
|
|
421
|
+
KTData.remove(this._element, this._name);
|
|
422
|
+
};
|
|
423
|
+
return KTSelectDropdown;
|
|
424
|
+
}(KTComponent));
|
|
425
|
+
export { KTSelectDropdown };
|
|
426
|
+
//# sourceMappingURL=dropdown.js.map
|