@keenthemes/ktui 1.0.3
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/CONTRIBUTING.md +88 -0
- package/LICENSE.md +21 -0
- package/README.md +124 -0
- package/dist/ktui.js +19201 -0
- package/dist/ktui.min.js +2 -0
- package/dist/ktui.min.js.map +1 -0
- package/lib/cjs/components/accordion/accordion.js +168 -0
- package/lib/cjs/components/accordion/accordion.js.map +1 -0
- package/lib/cjs/components/accordion/index.js +6 -0
- package/lib/cjs/components/accordion/index.js.map +1 -0
- package/lib/cjs/components/accordion/types.js +3 -0
- package/lib/cjs/components/accordion/types.js.map +1 -0
- package/lib/cjs/components/collapse/collapse.js +169 -0
- package/lib/cjs/components/collapse/collapse.js.map +1 -0
- package/lib/cjs/components/collapse/index.js +6 -0
- package/lib/cjs/components/collapse/index.js.map +1 -0
- package/lib/cjs/components/collapse/types.js +3 -0
- package/lib/cjs/components/collapse/types.js.map +1 -0
- package/lib/cjs/components/component.js +135 -0
- package/lib/cjs/components/component.js.map +1 -0
- package/lib/cjs/components/config.js +26 -0
- package/lib/cjs/components/config.js.map +1 -0
- package/lib/cjs/components/config.umd.js +23 -0
- package/lib/cjs/components/config.umd.js.map +1 -0
- package/lib/cjs/components/constants.js +15 -0
- package/lib/cjs/components/constants.js.map +1 -0
- package/lib/cjs/components/datatable/datatable.js +1464 -0
- package/lib/cjs/components/datatable/datatable.js.map +1 -0
- package/lib/cjs/components/datatable/index.js +6 -0
- package/lib/cjs/components/datatable/index.js.map +1 -0
- package/lib/cjs/components/datatable/types.js +3 -0
- package/lib/cjs/components/datatable/types.js.map +1 -0
- package/lib/cjs/components/dismiss/dismiss.js +131 -0
- package/lib/cjs/components/dismiss/dismiss.js.map +1 -0
- package/lib/cjs/components/dismiss/index.js +6 -0
- package/lib/cjs/components/dismiss/index.js.map +1 -0
- package/lib/cjs/components/dismiss/types.js +3 -0
- package/lib/cjs/components/dismiss/types.js.map +1 -0
- package/lib/cjs/components/drawer/drawer.js +347 -0
- package/lib/cjs/components/drawer/drawer.js.map +1 -0
- package/lib/cjs/components/drawer/index.js +6 -0
- package/lib/cjs/components/drawer/index.js.map +1 -0
- package/lib/cjs/components/drawer/types.js +3 -0
- package/lib/cjs/components/drawer/types.js.map +1 -0
- package/lib/cjs/components/dropdown/dropdown.js +403 -0
- package/lib/cjs/components/dropdown/dropdown.js.map +1 -0
- package/lib/cjs/components/dropdown/index.js +6 -0
- package/lib/cjs/components/dropdown/index.js.map +1 -0
- package/lib/cjs/components/dropdown/types.js +3 -0
- package/lib/cjs/components/dropdown/types.js.map +1 -0
- package/lib/cjs/components/image-input/image-input.js +191 -0
- package/lib/cjs/components/image-input/image-input.js.map +1 -0
- package/lib/cjs/components/image-input/index.js +6 -0
- package/lib/cjs/components/image-input/index.js.map +1 -0
- package/lib/cjs/components/image-input/types.js +3 -0
- package/lib/cjs/components/image-input/types.js.map +1 -0
- package/lib/cjs/components/menu/index.js +6 -0
- package/lib/cjs/components/menu/index.js.map +1 -0
- package/lib/cjs/components/menu/menu.js +1021 -0
- package/lib/cjs/components/menu/menu.js.map +1 -0
- package/lib/cjs/components/menu/types.js +3 -0
- package/lib/cjs/components/menu/types.js.map +1 -0
- package/lib/cjs/components/modal/index.js +6 -0
- package/lib/cjs/components/modal/index.js.map +1 -0
- package/lib/cjs/components/modal/modal.js +316 -0
- package/lib/cjs/components/modal/modal.js.map +1 -0
- package/lib/cjs/components/modal/types.js +3 -0
- package/lib/cjs/components/modal/types.js.map +1 -0
- package/lib/cjs/components/reparent/index.js +6 -0
- package/lib/cjs/components/reparent/index.js.map +1 -0
- package/lib/cjs/components/reparent/reparent.js +93 -0
- package/lib/cjs/components/reparent/reparent.js.map +1 -0
- package/lib/cjs/components/reparent/types.js +3 -0
- package/lib/cjs/components/reparent/types.js.map +1 -0
- package/lib/cjs/components/scrollable/index.js +6 -0
- package/lib/cjs/components/scrollable/index.js.map +1 -0
- package/lib/cjs/components/scrollable/scrollable.js +259 -0
- package/lib/cjs/components/scrollable/scrollable.js.map +1 -0
- package/lib/cjs/components/scrollable/types.js +3 -0
- package/lib/cjs/components/scrollable/types.js.map +1 -0
- package/lib/cjs/components/scrollspy/index.js +6 -0
- package/lib/cjs/components/scrollspy/index.js.map +1 -0
- package/lib/cjs/components/scrollspy/scrollspy.js +174 -0
- package/lib/cjs/components/scrollspy/scrollspy.js.map +1 -0
- package/lib/cjs/components/scrollspy/types.js +3 -0
- package/lib/cjs/components/scrollspy/types.js.map +1 -0
- package/lib/cjs/components/scrollto/index.js +6 -0
- package/lib/cjs/components/scrollto/index.js.map +1 -0
- package/lib/cjs/components/scrollto/scrollto.js +103 -0
- package/lib/cjs/components/scrollto/scrollto.js.map +1 -0
- package/lib/cjs/components/scrollto/types.js +3 -0
- package/lib/cjs/components/scrollto/types.js.map +1 -0
- package/lib/cjs/components/stepper/index.js +6 -0
- package/lib/cjs/components/stepper/index.js.map +1 -0
- package/lib/cjs/components/stepper/stepper.js +258 -0
- package/lib/cjs/components/stepper/stepper.js.map +1 -0
- package/lib/cjs/components/stepper/types.js +3 -0
- package/lib/cjs/components/stepper/types.js.map +1 -0
- package/lib/cjs/components/sticky/index.js +6 -0
- package/lib/cjs/components/sticky/index.js.map +1 -0
- package/lib/cjs/components/sticky/sticky.js +297 -0
- package/lib/cjs/components/sticky/sticky.js.map +1 -0
- package/lib/cjs/components/sticky/types.js +3 -0
- package/lib/cjs/components/sticky/types.js.map +1 -0
- package/lib/cjs/components/tabs/index.js +6 -0
- package/lib/cjs/components/tabs/index.js.map +1 -0
- package/lib/cjs/components/tabs/tabs.js +146 -0
- package/lib/cjs/components/tabs/tabs.js.map +1 -0
- package/lib/cjs/components/tabs/types.js +3 -0
- package/lib/cjs/components/tabs/types.js.map +1 -0
- package/lib/cjs/components/theme/index.js +6 -0
- package/lib/cjs/components/theme/index.js.map +1 -0
- package/lib/cjs/components/theme/theme.js +147 -0
- package/lib/cjs/components/theme/theme.js.map +1 -0
- package/lib/cjs/components/theme/types.js +3 -0
- package/lib/cjs/components/theme/types.js.map +1 -0
- package/lib/cjs/components/toggle/index.js +6 -0
- package/lib/cjs/components/toggle/index.js.map +1 -0
- package/lib/cjs/components/toggle/toggle.js +139 -0
- package/lib/cjs/components/toggle/toggle.js.map +1 -0
- package/lib/cjs/components/toggle/types.js +3 -0
- package/lib/cjs/components/toggle/types.js.map +1 -0
- package/lib/cjs/components/toggle-password/index.js +6 -0
- package/lib/cjs/components/toggle-password/index.js.map +1 -0
- package/lib/cjs/components/toggle-password/toggle-password.js +131 -0
- package/lib/cjs/components/toggle-password/toggle-password.js.map +1 -0
- package/lib/cjs/components/toggle-password/types.js +3 -0
- package/lib/cjs/components/toggle-password/types.js.map +1 -0
- package/lib/cjs/components/tooltip/index.js +6 -0
- package/lib/cjs/components/tooltip/index.js.map +1 -0
- package/lib/cjs/components/tooltip/tooltip.js +271 -0
- package/lib/cjs/components/tooltip/tooltip.js.map +1 -0
- package/lib/cjs/components/tooltip/types.js +3 -0
- package/lib/cjs/components/tooltip/types.js.map +1 -0
- package/lib/cjs/helpers/data.js +33 -0
- package/lib/cjs/helpers/data.js.map +1 -0
- package/lib/cjs/helpers/dom.js +297 -0
- package/lib/cjs/helpers/dom.js.map +1 -0
- package/lib/cjs/helpers/event-handler.js +36 -0
- package/lib/cjs/helpers/event-handler.js.map +1 -0
- package/lib/cjs/helpers/utils.js +94 -0
- package/lib/cjs/helpers/utils.js.map +1 -0
- package/lib/cjs/index.js +105 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/types.js +3 -0
- package/lib/cjs/types.js.map +1 -0
- package/lib/esm/components/accordion/accordion.js +165 -0
- package/lib/esm/components/accordion/accordion.js.map +1 -0
- package/lib/esm/components/accordion/index.js +2 -0
- package/lib/esm/components/accordion/index.js.map +1 -0
- package/lib/esm/components/accordion/types.js +2 -0
- package/lib/esm/components/accordion/types.js.map +1 -0
- package/lib/esm/components/collapse/collapse.js +166 -0
- package/lib/esm/components/collapse/collapse.js.map +1 -0
- package/lib/esm/components/collapse/index.js +2 -0
- package/lib/esm/components/collapse/index.js.map +1 -0
- package/lib/esm/components/collapse/types.js +2 -0
- package/lib/esm/components/collapse/types.js.map +1 -0
- package/lib/esm/components/component.js +133 -0
- package/lib/esm/components/component.js.map +1 -0
- package/lib/esm/components/config.js +24 -0
- package/lib/esm/components/config.js.map +1 -0
- package/lib/esm/components/config.umd.js +23 -0
- package/lib/esm/components/config.umd.js.map +1 -0
- package/lib/esm/components/constants.js +12 -0
- package/lib/esm/components/constants.js.map +1 -0
- package/lib/esm/components/datatable/datatable.js +1461 -0
- package/lib/esm/components/datatable/datatable.js.map +1 -0
- package/lib/esm/components/datatable/index.js +2 -0
- package/lib/esm/components/datatable/index.js.map +1 -0
- package/lib/esm/components/datatable/types.js +2 -0
- package/lib/esm/components/datatable/types.js.map +1 -0
- package/lib/esm/components/dismiss/dismiss.js +128 -0
- package/lib/esm/components/dismiss/dismiss.js.map +1 -0
- package/lib/esm/components/dismiss/index.js +2 -0
- package/lib/esm/components/dismiss/index.js.map +1 -0
- package/lib/esm/components/dismiss/types.js +2 -0
- package/lib/esm/components/dismiss/types.js.map +1 -0
- package/lib/esm/components/drawer/drawer.js +344 -0
- package/lib/esm/components/drawer/drawer.js.map +1 -0
- package/lib/esm/components/drawer/index.js +2 -0
- package/lib/esm/components/drawer/index.js.map +1 -0
- package/lib/esm/components/drawer/types.js +2 -0
- package/lib/esm/components/drawer/types.js.map +1 -0
- package/lib/esm/components/dropdown/dropdown.js +400 -0
- package/lib/esm/components/dropdown/dropdown.js.map +1 -0
- package/lib/esm/components/dropdown/index.js +2 -0
- package/lib/esm/components/dropdown/index.js.map +1 -0
- package/lib/esm/components/dropdown/types.js +2 -0
- package/lib/esm/components/dropdown/types.js.map +1 -0
- package/lib/esm/components/image-input/image-input.js +188 -0
- package/lib/esm/components/image-input/image-input.js.map +1 -0
- package/lib/esm/components/image-input/index.js +2 -0
- package/lib/esm/components/image-input/index.js.map +1 -0
- package/lib/esm/components/image-input/types.js +2 -0
- package/lib/esm/components/image-input/types.js.map +1 -0
- package/lib/esm/components/menu/index.js +2 -0
- package/lib/esm/components/menu/index.js.map +1 -0
- package/lib/esm/components/menu/menu.js +1018 -0
- package/lib/esm/components/menu/menu.js.map +1 -0
- package/lib/esm/components/menu/types.js +2 -0
- package/lib/esm/components/menu/types.js.map +1 -0
- package/lib/esm/components/modal/index.js +2 -0
- package/lib/esm/components/modal/index.js.map +1 -0
- package/lib/esm/components/modal/modal.js +313 -0
- package/lib/esm/components/modal/modal.js.map +1 -0
- package/lib/esm/components/modal/types.js +2 -0
- package/lib/esm/components/modal/types.js.map +1 -0
- package/lib/esm/components/reparent/index.js +2 -0
- package/lib/esm/components/reparent/index.js.map +1 -0
- package/lib/esm/components/reparent/reparent.js +90 -0
- package/lib/esm/components/reparent/reparent.js.map +1 -0
- package/lib/esm/components/reparent/types.js +2 -0
- package/lib/esm/components/reparent/types.js.map +1 -0
- package/lib/esm/components/scrollable/index.js +2 -0
- package/lib/esm/components/scrollable/index.js.map +1 -0
- package/lib/esm/components/scrollable/scrollable.js +256 -0
- package/lib/esm/components/scrollable/scrollable.js.map +1 -0
- package/lib/esm/components/scrollable/types.js +2 -0
- package/lib/esm/components/scrollable/types.js.map +1 -0
- package/lib/esm/components/scrollspy/index.js +2 -0
- package/lib/esm/components/scrollspy/index.js.map +1 -0
- package/lib/esm/components/scrollspy/scrollspy.js +171 -0
- package/lib/esm/components/scrollspy/scrollspy.js.map +1 -0
- package/lib/esm/components/scrollspy/types.js +2 -0
- package/lib/esm/components/scrollspy/types.js.map +1 -0
- package/lib/esm/components/scrollto/index.js +2 -0
- package/lib/esm/components/scrollto/index.js.map +1 -0
- package/lib/esm/components/scrollto/scrollto.js +100 -0
- package/lib/esm/components/scrollto/scrollto.js.map +1 -0
- package/lib/esm/components/scrollto/types.js +2 -0
- package/lib/esm/components/scrollto/types.js.map +1 -0
- package/lib/esm/components/stepper/index.js +2 -0
- package/lib/esm/components/stepper/index.js.map +1 -0
- package/lib/esm/components/stepper/stepper.js +255 -0
- package/lib/esm/components/stepper/stepper.js.map +1 -0
- package/lib/esm/components/stepper/types.js +2 -0
- package/lib/esm/components/stepper/types.js.map +1 -0
- package/lib/esm/components/sticky/index.js +2 -0
- package/lib/esm/components/sticky/index.js.map +1 -0
- package/lib/esm/components/sticky/sticky.js +294 -0
- package/lib/esm/components/sticky/sticky.js.map +1 -0
- package/lib/esm/components/sticky/types.js +2 -0
- package/lib/esm/components/sticky/types.js.map +1 -0
- package/lib/esm/components/tabs/index.js +2 -0
- package/lib/esm/components/tabs/index.js.map +1 -0
- package/lib/esm/components/tabs/tabs.js +143 -0
- package/lib/esm/components/tabs/tabs.js.map +1 -0
- package/lib/esm/components/tabs/types.js +2 -0
- package/lib/esm/components/tabs/types.js.map +1 -0
- package/lib/esm/components/theme/index.js +2 -0
- package/lib/esm/components/theme/index.js.map +1 -0
- package/lib/esm/components/theme/theme.js +144 -0
- package/lib/esm/components/theme/theme.js.map +1 -0
- package/lib/esm/components/theme/types.js +2 -0
- package/lib/esm/components/theme/types.js.map +1 -0
- package/lib/esm/components/toggle/index.js +2 -0
- package/lib/esm/components/toggle/index.js.map +1 -0
- package/lib/esm/components/toggle/toggle.js +136 -0
- package/lib/esm/components/toggle/toggle.js.map +1 -0
- package/lib/esm/components/toggle/types.js +2 -0
- package/lib/esm/components/toggle/types.js.map +1 -0
- package/lib/esm/components/toggle-password/index.js +2 -0
- package/lib/esm/components/toggle-password/index.js.map +1 -0
- package/lib/esm/components/toggle-password/toggle-password.js +128 -0
- package/lib/esm/components/toggle-password/toggle-password.js.map +1 -0
- package/lib/esm/components/toggle-password/types.js +2 -0
- package/lib/esm/components/toggle-password/types.js.map +1 -0
- package/lib/esm/components/tooltip/index.js +2 -0
- package/lib/esm/components/tooltip/index.js.map +1 -0
- package/lib/esm/components/tooltip/tooltip.js +268 -0
- package/lib/esm/components/tooltip/tooltip.js.map +1 -0
- package/lib/esm/components/tooltip/types.js +2 -0
- package/lib/esm/components/tooltip/types.js.map +1 -0
- package/lib/esm/helpers/data.js +31 -0
- package/lib/esm/helpers/data.js.map +1 -0
- package/lib/esm/helpers/dom.js +295 -0
- package/lib/esm/helpers/dom.js.map +1 -0
- package/lib/esm/helpers/event-handler.js +34 -0
- package/lib/esm/helpers/event-handler.js.map +1 -0
- package/lib/esm/helpers/utils.js +92 -0
- package/lib/esm/helpers/utils.js.map +1 -0
- package/lib/esm/index.js +79 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/types.js +2 -0
- package/lib/esm/types.js.map +1 -0
- package/package.json +85 -0
- package/prettier.config.js +9 -0
- package/src/components/accordion/accordion-menu.css +51 -0
- package/src/components/accordion/accordion.css +86 -0
- package/src/components/accordion/accordion.ts +221 -0
- package/src/components/accordion/index.ts +7 -0
- package/src/components/accordion/types.ts +16 -0
- package/src/components/alert/alert.css +282 -0
- package/src/components/avatar/avatar.css +46 -0
- package/src/components/badge/badge.css +176 -0
- package/src/components/breadcrumb/breadcrumb.css +38 -0
- package/src/components/btn/btn.css +227 -0
- package/src/components/card/card.css +158 -0
- package/src/components/checkbox/checkbox.css +74 -0
- package/src/components/collapse/collapse.css +14 -0
- package/src/components/collapse/collapse.ts +200 -0
- package/src/components/collapse/index.ts +7 -0
- package/src/components/collapse/types.ts +16 -0
- package/src/components/component.ts +132 -0
- package/src/components/constants.ts +16 -0
- package/src/components/datatable/datatable-checkbox.ts +236 -0
- package/src/components/datatable/datatable-sort.ts +154 -0
- package/src/components/datatable/datatable.css +110 -0
- package/src/components/datatable/datatable.ts +1657 -0
- package/src/components/datatable/index.ts +19 -0
- package/src/components/datatable/types.ts +203 -0
- package/src/components/datepicker/calendar.ts +1397 -0
- package/src/components/datepicker/config.ts +368 -0
- package/src/components/datepicker/datepicker.css +7 -0
- package/src/components/datepicker/datepicker.ts +1287 -0
- package/src/components/datepicker/dropdown.ts +757 -0
- package/src/components/datepicker/events.ts +149 -0
- package/src/components/datepicker/index.ts +10 -0
- package/src/components/datepicker/keyboard.ts +646 -0
- package/src/components/datepicker/locales.ts +80 -0
- package/src/components/datepicker/templates.ts +792 -0
- package/src/components/datepicker/types.ts +154 -0
- package/src/components/datepicker/utils.ts +631 -0
- package/src/components/dismiss/dismiss.css +10 -0
- package/src/components/dismiss/dismiss.ts +152 -0
- package/src/components/dismiss/index.ts +7 -0
- package/src/components/dismiss/types.ts +17 -0
- package/src/components/drawer/drawer.css +97 -0
- package/src/components/drawer/drawer.ts +437 -0
- package/src/components/drawer/index.ts +7 -0
- package/src/components/drawer/types.ts +25 -0
- package/src/components/dropdown/dropdown-menu.css +56 -0
- package/src/components/dropdown/dropdown.css +46 -0
- package/src/components/dropdown/dropdown.ts +549 -0
- package/src/components/dropdown/index.ts +7 -0
- package/src/components/dropdown/types.ts +28 -0
- package/src/components/form/form.css +54 -0
- package/src/components/image-input/image-input.css +56 -0
- package/src/components/image-input/image-input.ts +249 -0
- package/src/components/image-input/index.ts +10 -0
- package/src/components/image-input/types.ts +12 -0
- package/src/components/input/input-group.css +42 -0
- package/src/components/input/input.css +136 -0
- package/src/components/kbd/kbd.css +30 -0
- package/src/components/label/label.css +20 -0
- package/src/components/link/link.css +81 -0
- package/src/components/modal/index.ts +7 -0
- package/src/components/modal/modal.css +73 -0
- package/src/components/modal/modal.ts +382 -0
- package/src/components/modal/types.ts +21 -0
- package/src/components/pagination/pagination.css +26 -0
- package/src/components/popover/popover.css +22 -0
- package/src/components/progress/progress.css +51 -0
- package/src/components/radio/radio.css +51 -0
- package/src/components/reparent/index.ts +7 -0
- package/src/components/reparent/reparent.ts +109 -0
- package/src/components/reparent/types.ts +15 -0
- package/src/components/scrollable/index.ts +10 -0
- package/src/components/scrollable/scrollable.css +29 -0
- package/src/components/scrollable/scrollable.ts +297 -0
- package/src/components/scrollable/types.ts +16 -0
- package/src/components/scrollspy/index.ts +7 -0
- package/src/components/scrollspy/scrollspy.css +13 -0
- package/src/components/scrollspy/scrollspy.ts +224 -0
- package/src/components/scrollspy/types.ts +15 -0
- package/src/components/scrollto/index.ts +7 -0
- package/src/components/scrollto/scrollto.ts +127 -0
- package/src/components/scrollto/types.ts +15 -0
- package/src/components/select/combobox.ts +305 -0
- package/src/components/select/config.ts +324 -0
- package/src/components/select/dropdown.ts +510 -0
- package/src/components/select/index.ts +13 -0
- package/src/components/select/option.ts +43 -0
- package/src/components/select/remote.ts +477 -0
- package/src/components/select/search.ts +430 -0
- package/src/components/select/select.css +105 -0
- package/src/components/select/select.ts +1916 -0
- package/src/components/select/tags.ts +123 -0
- package/src/components/select/templates.ts +531 -0
- package/src/components/select/types.ts +36 -0
- package/src/components/select/utils.ts +747 -0
- package/src/components/select/variants.css +5 -0
- package/src/components/separator/separator.css +14 -0
- package/src/components/skeleton/skeleton.css +10 -0
- package/src/components/stepper/index.ts +7 -0
- package/src/components/stepper/stepper.css +49 -0
- package/src/components/stepper/stepper.ts +308 -0
- package/src/components/stepper/types.ts +13 -0
- package/src/components/sticky/index.ts +7 -0
- package/src/components/sticky/sticky.css +22 -0
- package/src/components/sticky/sticky.ts +381 -0
- package/src/components/sticky/types.ts +23 -0
- package/src/components/switch/switch.css +110 -0
- package/src/components/table/table.css +168 -0
- package/src/components/tabs/index.ts +7 -0
- package/src/components/tabs/tabs.css +40 -0
- package/src/components/tabs/tabs.ts +190 -0
- package/src/components/tabs/types.ts +13 -0
- package/src/components/textarea/textarea.css +35 -0
- package/src/components/theme-switch/index.ts +10 -0
- package/src/components/theme-switch/theme-switch.css +22 -0
- package/src/components/theme-switch/theme-switch.ts +176 -0
- package/src/components/theme-switch/types.ts +15 -0
- package/src/components/toggle/index.ts +7 -0
- package/src/components/toggle/toggle.css +13 -0
- package/src/components/toggle/toggle.ts +173 -0
- package/src/components/toggle/types.ts +18 -0
- package/src/components/toggle-group/toggle-group.css +55 -0
- package/src/components/toggle-password/index.ts +10 -0
- package/src/components/toggle-password/toggle-password.css +13 -0
- package/src/components/toggle-password/toggle-password.ts +159 -0
- package/src/components/toggle-password/types.ts +13 -0
- package/src/components/tooltip/index.ts +7 -0
- package/src/components/tooltip/tooltip.css +18 -0
- package/src/components/tooltip/tooltip.ts +361 -0
- package/src/components/tooltip/types.ts +28 -0
- package/src/helpers/data.ts +46 -0
- package/src/helpers/dom.ts +405 -0
- package/src/helpers/event-handler.ts +61 -0
- package/src/helpers/utils.ts +183 -0
- package/src/index.ts +113 -0
- package/src/types.ts +23 -0
- package/styles.css +48 -0
- package/tsconfig.json +17 -0
- package/webpack.config.js +113 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import { SelectMode } from './types';
|
|
7
|
+
|
|
8
|
+
export const DefaultConfig: KTSelectConfigInterface = {
|
|
9
|
+
// ...other config options
|
|
10
|
+
loadMoreText: 'Load more...',
|
|
11
|
+
// General Display
|
|
12
|
+
debug: false,
|
|
13
|
+
placeholder: 'Select an option', // Default placeholder text when no option is selected
|
|
14
|
+
dropdownZindex: null, // Initial z-index value for the dropdown
|
|
15
|
+
|
|
16
|
+
// Data Handling
|
|
17
|
+
items: [], // Static list of options
|
|
18
|
+
isLoading: false, // Indicates if options are being loaded asynchronously
|
|
19
|
+
onFetch: null, // Callback function to fetch options asynchronously
|
|
20
|
+
|
|
21
|
+
// Remote Data Configuration
|
|
22
|
+
remote: false, // Enable/disable remote data fetching
|
|
23
|
+
dataUrl: null, // URL to fetch options from
|
|
24
|
+
apiDataProperty: null, // Property in the response object that contains the options
|
|
25
|
+
remoteErrorMessage: 'Failed to load data', // Error message to display if remote data fetch fails
|
|
26
|
+
|
|
27
|
+
// Field Mapping
|
|
28
|
+
dataValueField: null, // Property in the option object that contains the value (default: 'id')
|
|
29
|
+
dataFieldText: null, // Property in the option object that contains the text (default: 'title')
|
|
30
|
+
dataFieldDescription: null, // Property in the option object that contains the description
|
|
31
|
+
dataFieldIcon: null, // Property in the option object that contains the icon
|
|
32
|
+
dataFieldIconWidth: null, // Property in the option object that contains the icon width
|
|
33
|
+
dataFieldIconHeight: null, // Property in the option object that contains the icon height
|
|
34
|
+
|
|
35
|
+
// Search Configuration
|
|
36
|
+
searchParam: '', // Query parameter for API search requests
|
|
37
|
+
searchDebounce: 300, // Debounce delay for search (in ms)
|
|
38
|
+
|
|
39
|
+
// Pagination Configuration
|
|
40
|
+
pagination: false, // Enable/disable pagination for remote data
|
|
41
|
+
paginationLimit: 10, // Items per page
|
|
42
|
+
paginationPageParam: 'page', // Parameter name for page number
|
|
43
|
+
paginationLimitParam: 'limit', // Parameter name for items per page
|
|
44
|
+
paginationTotalParam: 'total', // Parameter name for total items
|
|
45
|
+
|
|
46
|
+
// Selection Behavior
|
|
47
|
+
multiple: false, // Enable/disable multi-select
|
|
48
|
+
maxSelections: null, // Maximum number of selections allowed in multi-select mode (null for unlimited)
|
|
49
|
+
closeOnSelect: true, // Close the dropdown after selecting an option (single-select only)
|
|
50
|
+
disabled: false, // Disable the select component
|
|
51
|
+
isRequired: false, // Make selection required
|
|
52
|
+
mode: null, // Select mode: tags or combobox
|
|
53
|
+
|
|
54
|
+
// Search Functionality
|
|
55
|
+
enableSearch: false, // Enable/disable search functionality within the dropdown
|
|
56
|
+
searchPlaceholder: 'Search...', // Placeholder text for the search input
|
|
57
|
+
searchAutofocus: true, // Autofocus on search input when dropdown opens
|
|
58
|
+
searchMinLength: 0, // Minimum characters required to trigger search
|
|
59
|
+
searchMaxItems: 50, // Maximum number of search results to display
|
|
60
|
+
searchNotFoundText: 'No results found', // Text to display when no search results are found
|
|
61
|
+
searchHighlight: true, // Highlight matching search terms within the options
|
|
62
|
+
clearSearchOnClose: true, // Clear search input when dropdown closes
|
|
63
|
+
|
|
64
|
+
// Multi-Select Display
|
|
65
|
+
selectAllText: 'Select all', // Text for the "Select All" option (if implemented)
|
|
66
|
+
clearAllText: 'Clear all', // Text for the "Clear All" option (if implemented)
|
|
67
|
+
showSelectedCount: true, // Show the number of selected options in multi-select mode
|
|
68
|
+
renderSelected: null, // Custom function to render the selected value(s) in the display area
|
|
69
|
+
|
|
70
|
+
// Accessibility & Usability
|
|
71
|
+
label: 'Select an option', // Label for the select component (for screen readers)
|
|
72
|
+
height: 250, // Maximum height of the dropdown menu in pixels (if exceeded, a scrollbar will appear)
|
|
73
|
+
|
|
74
|
+
// Dropdown Configuration
|
|
75
|
+
dropdownPlacement: null,
|
|
76
|
+
dropdownFlip: false,
|
|
77
|
+
dropdownPreventOverflow: false,
|
|
78
|
+
dropdownStrategy: null,
|
|
79
|
+
dropdownWidth: null, // Custom width for dropdown (e.g., '300px'), null to match toggle element width
|
|
80
|
+
|
|
81
|
+
// Styling
|
|
82
|
+
focusClass: 'option-focused',
|
|
83
|
+
hoverClass: 'hovered',
|
|
84
|
+
bgClass: 'bg-blue-50',
|
|
85
|
+
fontClass: 'font-medium',
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export interface KTSelectConfigInterface {
|
|
89
|
+
// ...other config options
|
|
90
|
+
loadMoreText?: string;
|
|
91
|
+
// General Display
|
|
92
|
+
debug?: boolean;
|
|
93
|
+
placeholder?: string;
|
|
94
|
+
dropdownZindex?: number | null;
|
|
95
|
+
|
|
96
|
+
// Selection Behavior
|
|
97
|
+
multiple?: boolean;
|
|
98
|
+
maxSelections?: number | null;
|
|
99
|
+
closeOnSelect?: boolean;
|
|
100
|
+
disabled?: boolean;
|
|
101
|
+
isRequired?: boolean;
|
|
102
|
+
mode?: SelectMode | null;
|
|
103
|
+
|
|
104
|
+
// Search Functionality
|
|
105
|
+
enableSearch?: boolean;
|
|
106
|
+
searchPlaceholder?: string;
|
|
107
|
+
searchAutofocus?: boolean;
|
|
108
|
+
searchMinLength?: number;
|
|
109
|
+
searchMaxItems?: number;
|
|
110
|
+
searchNotFoundText?: string;
|
|
111
|
+
searchHighlight?: boolean;
|
|
112
|
+
searchDebounce?: number;
|
|
113
|
+
searchParam?: string;
|
|
114
|
+
clearSearchOnClose?: boolean;
|
|
115
|
+
|
|
116
|
+
// Multi-Select Display
|
|
117
|
+
selectAllText?: string;
|
|
118
|
+
clearAllText?: string;
|
|
119
|
+
showSelectedCount?: boolean;
|
|
120
|
+
renderSelected?: (selectedOptions: any[]) => string; // Assuming any[] for now, adjust based on your option data structure
|
|
121
|
+
|
|
122
|
+
// Accessibility & Usability
|
|
123
|
+
label?: string;
|
|
124
|
+
height: number;
|
|
125
|
+
|
|
126
|
+
// Data Handling
|
|
127
|
+
items?: KTSelectOption[];
|
|
128
|
+
isLoading?: boolean;
|
|
129
|
+
onFetch?: (query?: string) => Promise<KTSelectOption[]>;
|
|
130
|
+
|
|
131
|
+
// Remote Data Configuration
|
|
132
|
+
remote?: boolean;
|
|
133
|
+
dataUrl?: string;
|
|
134
|
+
apiDataProperty?: string;
|
|
135
|
+
remoteErrorMessage?: string;
|
|
136
|
+
|
|
137
|
+
// Field Mapping
|
|
138
|
+
dataValueField?: string;
|
|
139
|
+
dataFieldText?: string;
|
|
140
|
+
dataFieldDescription?: string;
|
|
141
|
+
dataFieldIcon?: string;
|
|
142
|
+
dataFieldIconWidth?: string;
|
|
143
|
+
dataFieldIconHeight?: string;
|
|
144
|
+
|
|
145
|
+
// Pagination Configuration
|
|
146
|
+
pagination?: boolean;
|
|
147
|
+
paginationLimit?: number;
|
|
148
|
+
paginationPageParam?: string;
|
|
149
|
+
paginationLimitParam?: string;
|
|
150
|
+
paginationTotalParam?: string;
|
|
151
|
+
|
|
152
|
+
// Dropdown Configuration
|
|
153
|
+
dropdownPlacement?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
|
|
154
|
+
dropdownFlip?: boolean;
|
|
155
|
+
dropdownPreventOverflow?: boolean;
|
|
156
|
+
dropdownStrategy?: 'fixed' | 'absolute';
|
|
157
|
+
dropdownWidth?: string | null; // Custom width for dropdown, null to match toggle element width
|
|
158
|
+
|
|
159
|
+
// Styling
|
|
160
|
+
focusClass?: string;
|
|
161
|
+
hoverClass?: string;
|
|
162
|
+
bgClass?: string;
|
|
163
|
+
fontClass?: string;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export interface KTSelectOption {
|
|
167
|
+
id: string;
|
|
168
|
+
title: string;
|
|
169
|
+
icon?: string;
|
|
170
|
+
description?: string;
|
|
171
|
+
selected?: boolean;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export class KTSelectState {
|
|
175
|
+
private _config: KTSelectConfigInterface;
|
|
176
|
+
private _selectedOptions: string[] = [];
|
|
177
|
+
|
|
178
|
+
constructor(config?: KTSelectConfigInterface) {
|
|
179
|
+
this._config = this._initDefaultConfig(config);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
private _initDefaultConfig(
|
|
183
|
+
config: KTSelectConfigInterface,
|
|
184
|
+
): KTSelectConfigInterface {
|
|
185
|
+
return {
|
|
186
|
+
...DefaultConfig,
|
|
187
|
+
...config,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
public setItems(items?: any[], query?: string): Promise<void> {
|
|
192
|
+
return new Promise<void>((resolve, reject) => {
|
|
193
|
+
if (items) {
|
|
194
|
+
this._config.items = items;
|
|
195
|
+
resolve();
|
|
196
|
+
} else if (this._config.dataUrl) {
|
|
197
|
+
this._fetchRemoteData(query)
|
|
198
|
+
.then(resolve) // Resolve after _fetchRemoteData completes
|
|
199
|
+
.catch(reject);
|
|
200
|
+
} else if (this._config.onFetch) {
|
|
201
|
+
this._config.isLoading = true;
|
|
202
|
+
this._config
|
|
203
|
+
.onFetch(query)
|
|
204
|
+
.then((items) => {
|
|
205
|
+
this._config.items = items;
|
|
206
|
+
resolve(); // Resolve after onFetch completes
|
|
207
|
+
})
|
|
208
|
+
.catch((error) => {
|
|
209
|
+
console.error('Error fetching data:', error);
|
|
210
|
+
reject(error); // Reject on error
|
|
211
|
+
})
|
|
212
|
+
.finally(() => {
|
|
213
|
+
this._config.isLoading = false;
|
|
214
|
+
});
|
|
215
|
+
} else {
|
|
216
|
+
resolve();
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
private _fetchRemoteData(query?: string): Promise<void> {
|
|
222
|
+
this._config.isLoading = true; // Show loading indicator
|
|
223
|
+
|
|
224
|
+
let url = this._config.dataUrl!;
|
|
225
|
+
if (query) {
|
|
226
|
+
url += `?${this._config.searchParam}=${encodeURIComponent(query)}`;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return fetch(url)
|
|
230
|
+
.then((response) => response.json())
|
|
231
|
+
.then((data) => {
|
|
232
|
+
if (this._config.apiDataProperty) {
|
|
233
|
+
// Extract the data property from the response
|
|
234
|
+
if (this._config.apiDataProperty in data) {
|
|
235
|
+
data = data[this._config.apiDataProperty];
|
|
236
|
+
} else {
|
|
237
|
+
console.error(
|
|
238
|
+
'Error fetching data:',
|
|
239
|
+
`Property '${this._config.apiDataProperty}' not found in response`,
|
|
240
|
+
);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
this._config.items = data;
|
|
245
|
+
})
|
|
246
|
+
.catch((error) => {
|
|
247
|
+
console.error('Error fetching data:', error);
|
|
248
|
+
// Handle error (e.g., display an error message)
|
|
249
|
+
})
|
|
250
|
+
.finally(() => {
|
|
251
|
+
this._config.isLoading = false; // Hide loading indicator
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
public getItems(): KTSelectOption[] {
|
|
256
|
+
return this._config.items || [];
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
public setItemsFromOptions(options: HTMLOptionElement[]): void {
|
|
260
|
+
this._config.items = options.map((option) => ({
|
|
261
|
+
id: option.value,
|
|
262
|
+
title: option.textContent || '',
|
|
263
|
+
// Add other properties from option element if needed
|
|
264
|
+
}));
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
public getConfig(): KTSelectConfigInterface {
|
|
268
|
+
return this._config;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
public setSelectedOptions(value: string | string[]): void {
|
|
272
|
+
if (
|
|
273
|
+
this._config.multiple &&
|
|
274
|
+
typeof value === 'string' &&
|
|
275
|
+
!this._selectedOptions.includes(value)
|
|
276
|
+
) {
|
|
277
|
+
this._selectedOptions.push(value);
|
|
278
|
+
} else if (!this._config.multiple) {
|
|
279
|
+
// For single select, replace the previous selection with the new one
|
|
280
|
+
this._selectedOptions = typeof value === 'string' ? [value] : [value[0]];
|
|
281
|
+
} else if (this._config.multiple && Array.isArray(value)) {
|
|
282
|
+
// For multiple select with array input, use the provided array
|
|
283
|
+
this._selectedOptions = [...value];
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
public toggleSelectedOptions(value: string): void {
|
|
288
|
+
if (!this._config.multiple) {
|
|
289
|
+
// For non-multiple, always set the new value
|
|
290
|
+
this._selectedOptions = [value];
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// For multiple selection, toggle the value
|
|
295
|
+
const index = this._selectedOptions.indexOf(value);
|
|
296
|
+
if (index > -1) {
|
|
297
|
+
this._selectedOptions.splice(index, 1);
|
|
298
|
+
} else {
|
|
299
|
+
this._selectedOptions.push(value);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
public getSelectedOptions(): string[] {
|
|
304
|
+
return this._selectedOptions;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
public isSelected(value: string): boolean {
|
|
308
|
+
return this._selectedOptions.includes(value);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
public modifyConfig(config: Partial<KTSelectConfigInterface>): void {
|
|
312
|
+
this._config = { ...this._config, ...config };
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export const SelectOptionDefaultConfig: KTSelectOptionConfigInterface = {
|
|
317
|
+
description: '',
|
|
318
|
+
icon: null,
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
export interface KTSelectOptionConfigInterface {
|
|
322
|
+
description: string;
|
|
323
|
+
icon: string;
|
|
324
|
+
}
|