@keenthemes/ktui 1.2.0 → 1.2.2
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 +8355 -5213
- package/dist/ktui.min.js +1 -1
- package/dist/ktui.min.js.map +1 -1
- package/dist/styles.css +24 -1
- package/lib/cjs/components/carousel/carousel.d.ts +102 -0
- package/lib/cjs/components/carousel/carousel.d.ts.map +1 -0
- package/lib/cjs/components/carousel/carousel.js +769 -0
- package/lib/cjs/components/carousel/carousel.js.map +1 -0
- package/lib/cjs/components/carousel/index.d.ts +7 -0
- package/lib/cjs/components/carousel/index.d.ts.map +1 -0
- package/lib/cjs/components/carousel/index.js +10 -0
- package/lib/cjs/components/carousel/index.js.map +1 -0
- package/lib/cjs/components/carousel/types.d.ts +36 -0
- package/lib/cjs/components/carousel/types.d.ts.map +1 -0
- package/lib/cjs/components/carousel/types.js +7 -0
- package/lib/cjs/components/carousel/types.js.map +1 -0
- package/lib/cjs/components/clipboard/clipboard.d.ts +37 -0
- package/lib/cjs/components/clipboard/clipboard.d.ts.map +1 -0
- package/lib/cjs/components/clipboard/clipboard.js +402 -0
- package/lib/cjs/components/clipboard/clipboard.js.map +1 -0
- package/lib/cjs/components/clipboard/index.d.ts +3 -0
- package/lib/cjs/components/clipboard/index.d.ts.map +1 -0
- package/lib/cjs/components/clipboard/index.js +6 -0
- package/lib/cjs/components/clipboard/index.js.map +1 -0
- package/lib/cjs/components/clipboard/types.d.ts +44 -0
- package/lib/cjs/components/clipboard/types.d.ts.map +1 -0
- package/lib/cjs/components/clipboard/types.js +7 -0
- package/lib/cjs/components/clipboard/types.js.map +1 -0
- package/lib/cjs/components/component.d.ts +3 -3
- package/lib/cjs/components/component.d.ts.map +1 -1
- package/lib/cjs/components/component.js +9 -1
- package/lib/cjs/components/component.js.map +1 -1
- package/lib/cjs/components/datatable/datatable-checkbox.d.ts +1 -1
- package/lib/cjs/components/datatable/datatable-checkbox.d.ts.map +1 -1
- package/lib/cjs/components/datatable/datatable-checkbox.js +1 -1
- package/lib/cjs/components/datatable/datatable-checkbox.js.map +1 -1
- package/lib/cjs/components/datatable/datatable-sort.d.ts +1 -1
- package/lib/cjs/components/datatable/datatable-sort.d.ts.map +1 -1
- package/lib/cjs/components/datatable/datatable-sort.js.map +1 -1
- package/lib/cjs/components/datatable/datatable.d.ts +2 -0
- package/lib/cjs/components/datatable/datatable.d.ts.map +1 -1
- package/lib/cjs/components/datatable/datatable.js +29 -16
- package/lib/cjs/components/datatable/datatable.js.map +1 -1
- package/lib/cjs/components/datatable/types.d.ts +2 -1
- package/lib/cjs/components/datatable/types.d.ts.map +1 -1
- package/lib/cjs/components/drawer/drawer.d.ts.map +1 -1
- package/lib/cjs/components/drawer/drawer.js +3 -16
- package/lib/cjs/components/drawer/drawer.js.map +1 -1
- package/lib/cjs/components/dropdown/dropdown.d.ts +1 -1
- package/lib/cjs/components/dropdown/dropdown.d.ts.map +1 -1
- package/lib/cjs/components/dropdown/dropdown.js +2 -3
- package/lib/cjs/components/dropdown/dropdown.js.map +1 -1
- package/lib/cjs/components/pin-input/index.d.ts +3 -0
- package/lib/cjs/components/pin-input/index.d.ts.map +1 -0
- package/lib/cjs/components/pin-input/index.js +6 -0
- package/lib/cjs/components/pin-input/index.js.map +1 -0
- package/lib/cjs/components/pin-input/pin-input.d.ts +56 -0
- package/lib/cjs/components/pin-input/pin-input.d.ts.map +1 -0
- package/lib/cjs/components/pin-input/pin-input.js +455 -0
- package/lib/cjs/components/pin-input/pin-input.js.map +1 -0
- package/lib/cjs/components/pin-input/types.d.ts +41 -0
- package/lib/cjs/components/pin-input/types.d.ts.map +1 -0
- package/lib/cjs/components/pin-input/types.js +6 -0
- package/lib/cjs/components/pin-input/types.js.map +1 -0
- package/lib/cjs/components/range-slider/index.d.ts +7 -0
- package/lib/cjs/components/range-slider/index.d.ts.map +1 -0
- package/lib/cjs/components/range-slider/index.js +10 -0
- package/lib/cjs/components/range-slider/index.js.map +1 -0
- package/lib/cjs/components/range-slider/range-slider.d.ts +42 -0
- package/lib/cjs/components/range-slider/range-slider.d.ts.map +1 -0
- package/lib/cjs/components/range-slider/range-slider.js +254 -0
- package/lib/cjs/components/range-slider/range-slider.js.map +1 -0
- package/lib/cjs/components/range-slider/types.d.ts +33 -0
- package/lib/cjs/components/range-slider/types.d.ts.map +1 -0
- package/lib/cjs/components/range-slider/types.js +7 -0
- package/lib/cjs/components/range-slider/types.js.map +1 -0
- package/lib/cjs/components/rating/rating.d.ts.map +1 -1
- package/lib/cjs/components/rating/rating.js +8 -3
- package/lib/cjs/components/rating/rating.js.map +1 -1
- package/lib/cjs/components/repeater/repeater.d.ts.map +1 -1
- package/lib/cjs/components/repeater/repeater.js +3 -2
- package/lib/cjs/components/repeater/repeater.js.map +1 -1
- package/lib/cjs/components/select/combobox.d.ts.map +1 -1
- package/lib/cjs/components/select/combobox.js +25 -15
- package/lib/cjs/components/select/combobox.js.map +1 -1
- package/lib/cjs/components/select/config.d.ts +2 -2
- package/lib/cjs/components/select/config.d.ts.map +1 -1
- package/lib/cjs/components/select/config.js +10 -9
- package/lib/cjs/components/select/config.js.map +1 -1
- package/lib/cjs/components/select/dropdown.js.map +1 -1
- package/lib/cjs/components/select/option.d.ts +2 -1
- package/lib/cjs/components/select/option.d.ts.map +1 -1
- package/lib/cjs/components/select/option.js +9 -3
- package/lib/cjs/components/select/option.js.map +1 -1
- package/lib/cjs/components/select/remote.d.ts +1 -0
- package/lib/cjs/components/select/remote.d.ts.map +1 -1
- package/lib/cjs/components/select/remote.js +21 -14
- package/lib/cjs/components/select/remote.js.map +1 -1
- package/lib/cjs/components/select/search.d.ts +1 -1
- package/lib/cjs/components/select/search.d.ts.map +1 -1
- package/lib/cjs/components/select/search.js +34 -25
- package/lib/cjs/components/select/search.js.map +1 -1
- package/lib/cjs/components/select/select.d.ts +5 -3
- package/lib/cjs/components/select/select.d.ts.map +1 -1
- package/lib/cjs/components/select/select.js +31 -31
- package/lib/cjs/components/select/select.js.map +1 -1
- package/lib/cjs/components/select/tags.d.ts.map +1 -1
- package/lib/cjs/components/select/tags.js +22 -13
- package/lib/cjs/components/select/tags.js.map +1 -1
- package/lib/cjs/components/select/templates.d.ts.map +1 -1
- package/lib/cjs/components/select/templates.js +4 -4
- package/lib/cjs/components/select/templates.js.map +1 -1
- package/lib/cjs/components/select/types.d.ts +1 -1
- package/lib/cjs/components/select/types.d.ts.map +1 -1
- package/lib/cjs/components/select/utils.d.ts +4 -4
- package/lib/cjs/components/select/utils.d.ts.map +1 -1
- package/lib/cjs/components/select/utils.js +5 -4
- package/lib/cjs/components/select/utils.js.map +1 -1
- package/lib/cjs/components/sticky/sticky.d.ts +1 -1
- package/lib/cjs/components/sticky/sticky.d.ts.map +1 -1
- package/lib/cjs/components/sticky/sticky.js +16 -14
- package/lib/cjs/components/sticky/sticky.js.map +1 -1
- package/lib/cjs/components/toast/toast.d.ts.map +1 -1
- package/lib/cjs/components/toast/toast.js +17 -9
- package/lib/cjs/components/toast/toast.js.map +1 -1
- package/lib/cjs/components/toast/types.d.ts +3 -0
- package/lib/cjs/components/toast/types.d.ts.map +1 -1
- package/lib/cjs/components/toggle-password/toggle-password.d.ts.map +1 -1
- package/lib/cjs/components/toggle-password/toggle-password.js.map +1 -1
- package/lib/cjs/helpers/dom.d.ts +4 -4
- package/lib/cjs/helpers/dom.d.ts.map +1 -1
- package/lib/cjs/helpers/dom.js +8 -10
- package/lib/cjs/helpers/dom.js.map +1 -1
- package/lib/cjs/helpers/event-handler.d.ts +1 -1
- package/lib/cjs/helpers/event-handler.d.ts.map +1 -1
- package/lib/cjs/helpers/event-handler.js +3 -1
- package/lib/cjs/helpers/event-handler.js.map +1 -1
- package/lib/cjs/helpers/utils.d.ts +1 -1
- package/lib/cjs/helpers/utils.d.ts.map +1 -1
- package/lib/cjs/helpers/utils.js +4 -1
- package/lib/cjs/helpers/utils.js.map +1 -1
- package/lib/cjs/index.d.ts +16 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +17 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/types.d.ts +1 -1
- package/lib/cjs/types.d.ts.map +1 -1
- package/lib/esm/components/carousel/carousel.d.ts +102 -0
- package/lib/esm/components/carousel/carousel.d.ts.map +1 -0
- package/lib/esm/components/carousel/carousel.js +766 -0
- package/lib/esm/components/carousel/carousel.js.map +1 -0
- package/lib/esm/components/carousel/index.d.ts +7 -0
- package/lib/esm/components/carousel/index.d.ts.map +1 -0
- package/lib/esm/components/carousel/index.js +6 -0
- package/lib/esm/components/carousel/index.js.map +1 -0
- package/lib/esm/components/carousel/types.d.ts +36 -0
- package/lib/esm/components/carousel/types.d.ts.map +1 -0
- package/lib/esm/components/carousel/types.js +6 -0
- package/lib/esm/components/carousel/types.js.map +1 -0
- package/lib/esm/components/clipboard/clipboard.d.ts +37 -0
- package/lib/esm/components/clipboard/clipboard.d.ts.map +1 -0
- package/lib/esm/components/clipboard/clipboard.js +399 -0
- package/lib/esm/components/clipboard/clipboard.js.map +1 -0
- package/lib/esm/components/clipboard/index.d.ts +3 -0
- package/lib/esm/components/clipboard/index.d.ts.map +1 -0
- package/lib/esm/components/clipboard/index.js +2 -0
- package/lib/esm/components/clipboard/index.js.map +1 -0
- package/lib/esm/components/clipboard/types.d.ts +44 -0
- package/lib/esm/components/clipboard/types.d.ts.map +1 -0
- package/lib/esm/components/clipboard/types.js +6 -0
- package/lib/esm/components/clipboard/types.js.map +1 -0
- package/lib/esm/components/component.d.ts +3 -3
- package/lib/esm/components/component.d.ts.map +1 -1
- package/lib/esm/components/component.js +9 -1
- package/lib/esm/components/component.js.map +1 -1
- package/lib/esm/components/datatable/datatable-checkbox.d.ts +1 -1
- package/lib/esm/components/datatable/datatable-checkbox.d.ts.map +1 -1
- package/lib/esm/components/datatable/datatable-checkbox.js +1 -1
- package/lib/esm/components/datatable/datatable-checkbox.js.map +1 -1
- package/lib/esm/components/datatable/datatable-sort.d.ts +1 -1
- package/lib/esm/components/datatable/datatable-sort.d.ts.map +1 -1
- package/lib/esm/components/datatable/datatable-sort.js.map +1 -1
- package/lib/esm/components/datatable/datatable.d.ts +2 -0
- package/lib/esm/components/datatable/datatable.d.ts.map +1 -1
- package/lib/esm/components/datatable/datatable.js +29 -16
- package/lib/esm/components/datatable/datatable.js.map +1 -1
- package/lib/esm/components/datatable/types.d.ts +2 -1
- package/lib/esm/components/datatable/types.d.ts.map +1 -1
- package/lib/esm/components/drawer/drawer.d.ts.map +1 -1
- package/lib/esm/components/drawer/drawer.js +3 -16
- package/lib/esm/components/drawer/drawer.js.map +1 -1
- package/lib/esm/components/dropdown/dropdown.d.ts +1 -1
- package/lib/esm/components/dropdown/dropdown.d.ts.map +1 -1
- package/lib/esm/components/dropdown/dropdown.js +2 -3
- package/lib/esm/components/dropdown/dropdown.js.map +1 -1
- package/lib/esm/components/pin-input/index.d.ts +3 -0
- package/lib/esm/components/pin-input/index.d.ts.map +1 -0
- package/lib/esm/components/pin-input/index.js +2 -0
- package/lib/esm/components/pin-input/index.js.map +1 -0
- package/lib/esm/components/pin-input/pin-input.d.ts +56 -0
- package/lib/esm/components/pin-input/pin-input.d.ts.map +1 -0
- package/lib/esm/components/pin-input/pin-input.js +452 -0
- package/lib/esm/components/pin-input/pin-input.js.map +1 -0
- package/lib/esm/components/pin-input/types.d.ts +41 -0
- package/lib/esm/components/pin-input/types.d.ts.map +1 -0
- package/lib/esm/components/pin-input/types.js +5 -0
- package/lib/esm/components/pin-input/types.js.map +1 -0
- package/lib/esm/components/range-slider/index.d.ts +7 -0
- package/lib/esm/components/range-slider/index.d.ts.map +1 -0
- package/lib/esm/components/range-slider/index.js +6 -0
- package/lib/esm/components/range-slider/index.js.map +1 -0
- package/lib/esm/components/range-slider/range-slider.d.ts +42 -0
- package/lib/esm/components/range-slider/range-slider.d.ts.map +1 -0
- package/lib/esm/components/range-slider/range-slider.js +251 -0
- package/lib/esm/components/range-slider/range-slider.js.map +1 -0
- package/lib/esm/components/range-slider/types.d.ts +33 -0
- package/lib/esm/components/range-slider/types.d.ts.map +1 -0
- package/lib/esm/components/range-slider/types.js +6 -0
- package/lib/esm/components/range-slider/types.js.map +1 -0
- package/lib/esm/components/rating/rating.d.ts.map +1 -1
- package/lib/esm/components/rating/rating.js +8 -3
- package/lib/esm/components/rating/rating.js.map +1 -1
- package/lib/esm/components/repeater/repeater.d.ts.map +1 -1
- package/lib/esm/components/repeater/repeater.js +3 -2
- package/lib/esm/components/repeater/repeater.js.map +1 -1
- package/lib/esm/components/select/combobox.d.ts.map +1 -1
- package/lib/esm/components/select/combobox.js +25 -15
- package/lib/esm/components/select/combobox.js.map +1 -1
- package/lib/esm/components/select/config.d.ts +2 -2
- package/lib/esm/components/select/config.d.ts.map +1 -1
- package/lib/esm/components/select/config.js +10 -9
- package/lib/esm/components/select/config.js.map +1 -1
- package/lib/esm/components/select/dropdown.js.map +1 -1
- package/lib/esm/components/select/option.d.ts +2 -1
- package/lib/esm/components/select/option.d.ts.map +1 -1
- package/lib/esm/components/select/option.js +9 -3
- package/lib/esm/components/select/option.js.map +1 -1
- package/lib/esm/components/select/remote.d.ts +1 -0
- package/lib/esm/components/select/remote.d.ts.map +1 -1
- package/lib/esm/components/select/remote.js +21 -14
- package/lib/esm/components/select/remote.js.map +1 -1
- package/lib/esm/components/select/search.d.ts +1 -1
- package/lib/esm/components/select/search.d.ts.map +1 -1
- package/lib/esm/components/select/search.js +34 -25
- package/lib/esm/components/select/search.js.map +1 -1
- package/lib/esm/components/select/select.d.ts +5 -3
- package/lib/esm/components/select/select.d.ts.map +1 -1
- package/lib/esm/components/select/select.js +31 -31
- package/lib/esm/components/select/select.js.map +1 -1
- package/lib/esm/components/select/tags.d.ts.map +1 -1
- package/lib/esm/components/select/tags.js +22 -13
- package/lib/esm/components/select/tags.js.map +1 -1
- package/lib/esm/components/select/templates.d.ts.map +1 -1
- package/lib/esm/components/select/templates.js +4 -4
- package/lib/esm/components/select/templates.js.map +1 -1
- package/lib/esm/components/select/types.d.ts +1 -1
- package/lib/esm/components/select/types.d.ts.map +1 -1
- package/lib/esm/components/select/utils.d.ts +4 -4
- package/lib/esm/components/select/utils.d.ts.map +1 -1
- package/lib/esm/components/select/utils.js +5 -4
- package/lib/esm/components/select/utils.js.map +1 -1
- package/lib/esm/components/sticky/sticky.d.ts +1 -1
- package/lib/esm/components/sticky/sticky.d.ts.map +1 -1
- package/lib/esm/components/sticky/sticky.js +16 -14
- package/lib/esm/components/sticky/sticky.js.map +1 -1
- package/lib/esm/components/toast/toast.d.ts.map +1 -1
- package/lib/esm/components/toast/toast.js +17 -9
- package/lib/esm/components/toast/toast.js.map +1 -1
- package/lib/esm/components/toast/types.d.ts +3 -0
- package/lib/esm/components/toast/types.d.ts.map +1 -1
- package/lib/esm/components/toggle-password/toggle-password.d.ts.map +1 -1
- package/lib/esm/components/toggle-password/toggle-password.js.map +1 -1
- package/lib/esm/helpers/dom.d.ts +4 -4
- package/lib/esm/helpers/dom.d.ts.map +1 -1
- package/lib/esm/helpers/dom.js +8 -10
- package/lib/esm/helpers/dom.js.map +1 -1
- package/lib/esm/helpers/event-handler.d.ts +1 -1
- package/lib/esm/helpers/event-handler.d.ts.map +1 -1
- package/lib/esm/helpers/event-handler.js +3 -1
- package/lib/esm/helpers/event-handler.js.map +1 -1
- package/lib/esm/helpers/utils.d.ts +1 -1
- package/lib/esm/helpers/utils.d.ts.map +1 -1
- package/lib/esm/helpers/utils.js +4 -1
- package/lib/esm/helpers/utils.js.map +1 -1
- package/lib/esm/index.d.ts +16 -0
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +12 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/types.d.ts +1 -1
- package/lib/esm/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/components/carousel/__tests__/carousel.test.ts +326 -0
- package/src/components/carousel/carousel.css +42 -0
- package/src/components/carousel/carousel.ts +847 -0
- package/src/components/carousel/index.ts +11 -0
- package/src/components/carousel/types.ts +38 -0
- package/src/components/clipboard/__tests__/clipboard.test.ts +438 -0
- package/src/components/clipboard/clipboard.ts +416 -0
- package/src/components/clipboard/index.ts +2 -0
- package/src/components/clipboard/types.ts +51 -0
- package/src/components/component.ts +15 -5
- package/src/components/datatable/__tests__/currency-sort.test.ts +6 -13
- package/src/components/datatable/__tests__/multi-row-headers.test.ts +2 -2
- package/src/components/datatable/__tests__/pagination-reset.test.ts +7 -4
- package/src/components/datatable/__tests__/race-conditions.test.ts +11 -14
- package/src/components/datatable/__tests__/setup.ts +1 -1
- package/src/components/datatable/datatable-checkbox.ts +6 -4
- package/src/components/datatable/datatable-sort.ts +27 -7
- package/src/components/datatable/datatable.ts +67 -42
- package/src/components/datatable/types.ts +3 -1
- package/src/components/drawer/drawer.ts +3 -18
- package/src/components/dropdown/dropdown.ts +2 -3
- package/src/components/pin-input/__tests__/pin-input.test.ts +928 -0
- package/src/components/pin-input/index.ts +6 -0
- package/src/components/pin-input/pin-input.ts +499 -0
- package/src/components/pin-input/types.ts +45 -0
- package/src/components/range-slider/__tests__/range-slider.test.ts +659 -0
- package/src/components/range-slider/index.ts +11 -0
- package/src/components/range-slider/range-slider.ts +276 -0
- package/src/components/range-slider/types.ts +36 -0
- package/src/components/rating/__tests__/rating.test.ts +11 -4
- package/src/components/rating/rating.ts +22 -12
- package/src/components/repeater/__tests__/repeater.test.ts +24 -11
- package/src/components/repeater/repeater.ts +5 -3
- package/src/components/select/__tests__/ux-behaviors.test.ts +25 -6
- package/src/components/select/combobox.ts +23 -16
- package/src/components/select/config.ts +15 -14
- package/src/components/select/dropdown.ts +1 -1
- package/src/components/select/option.ts +14 -4
- package/src/components/select/remote.ts +68 -56
- package/src/components/select/search.ts +30 -27
- package/src/components/select/select.ts +41 -37
- package/src/components/select/tags.ts +14 -8
- package/src/components/select/templates.ts +11 -6
- package/src/components/select/types.ts +1 -1
- package/src/components/select/utils.ts +12 -10
- package/src/components/sticky/__tests__/sticky.test.ts +10 -3
- package/src/components/sticky/sticky.ts +16 -26
- package/src/components/sticky/types.ts +3 -3
- package/src/components/toast/toast.ts +34 -21
- package/src/components/toast/types.ts +5 -1
- package/src/components/toggle-password/toggle-password.ts +0 -1
- package/src/helpers/dom.ts +14 -17
- package/src/helpers/event-handler.ts +5 -6
- package/src/helpers/utils.ts +5 -2
- package/src/index.ts +35 -0
- package/src/types.ts +1 -1
- package/styles.css +1 -0
|
@@ -29,7 +29,8 @@ export class KTSelect extends KTComponent {
|
|
|
29
29
|
// Core properties
|
|
30
30
|
protected override readonly _name: string = 'select';
|
|
31
31
|
protected override readonly _dataOptionPrefix: string = 'kt-'; // Use 'kt-' prefix to support data-kt-select-option attributes
|
|
32
|
-
protected override
|
|
32
|
+
protected override _element!: HTMLElement;
|
|
33
|
+
protected override _config: KTSelectConfigInterface;
|
|
33
34
|
protected override _defaultConfig: KTSelectConfigInterface;
|
|
34
35
|
|
|
35
36
|
// Static global configuration
|
|
@@ -81,7 +82,7 @@ export class KTSelect extends KTComponent {
|
|
|
81
82
|
this._state = new KTSelectState(this._config);
|
|
82
83
|
this._config = this._state.getConfig();
|
|
83
84
|
|
|
84
|
-
(
|
|
85
|
+
(this._element as HTMLElement & { instance?: KTSelect }).instance = this;
|
|
85
86
|
|
|
86
87
|
// Initialize event manager
|
|
87
88
|
this._eventManager = new EventManager();
|
|
@@ -125,8 +126,7 @@ export class KTSelect extends KTComponent {
|
|
|
125
126
|
protected override _buildConfig(config: object = {}): void {
|
|
126
127
|
if (!this._element) return;
|
|
127
128
|
|
|
128
|
-
|
|
129
|
-
(this._config as any) = {
|
|
129
|
+
this._config = {
|
|
130
130
|
...this._defaultConfig,
|
|
131
131
|
...KTSelect.globalConfig,
|
|
132
132
|
...this._getGlobalConfig(),
|
|
@@ -143,7 +143,7 @@ export class KTSelect extends KTComponent {
|
|
|
143
143
|
*/
|
|
144
144
|
protected override _dispatchEvent(
|
|
145
145
|
eventType: string,
|
|
146
|
-
payload: object = null,
|
|
146
|
+
payload: object | null = null,
|
|
147
147
|
): void {
|
|
148
148
|
// Call parent method to dispatch on element (existing behavior)
|
|
149
149
|
super._dispatchEvent(eventType, payload);
|
|
@@ -179,6 +179,10 @@ export class KTSelect extends KTComponent {
|
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
+
public override getElement(): HTMLElement {
|
|
183
|
+
return this._element;
|
|
184
|
+
}
|
|
185
|
+
|
|
182
186
|
/**
|
|
183
187
|
* Initialize remote data fetching
|
|
184
188
|
*/
|
|
@@ -461,7 +465,10 @@ export class KTSelect extends KTComponent {
|
|
|
461
465
|
optionsContainer.appendChild(
|
|
462
466
|
defaultTemplates.error({
|
|
463
467
|
...this._config,
|
|
464
|
-
errorMessage:
|
|
468
|
+
errorMessage:
|
|
469
|
+
message ??
|
|
470
|
+
this._config.remoteErrorMessage ??
|
|
471
|
+
'Failed to load data',
|
|
465
472
|
}),
|
|
466
473
|
);
|
|
467
474
|
break;
|
|
@@ -754,7 +761,7 @@ export class KTSelect extends KTComponent {
|
|
|
754
761
|
// Create an empty dropdown first (without options) using template
|
|
755
762
|
const dropdownElement = defaultTemplates.dropdown({
|
|
756
763
|
...this._config,
|
|
757
|
-
zindex: this._config.dropdownZindex,
|
|
764
|
+
zindex: this._config.dropdownZindex ?? undefined,
|
|
758
765
|
});
|
|
759
766
|
|
|
760
767
|
// Add search input if needed
|
|
@@ -1007,13 +1014,20 @@ export class KTSelect extends KTComponent {
|
|
|
1007
1014
|
/**
|
|
1008
1015
|
* Extract nested property value from object using dot notation
|
|
1009
1016
|
*/
|
|
1010
|
-
private _getValueByKey(obj:
|
|
1017
|
+
private _getValueByKey(obj: unknown, key: string): unknown {
|
|
1011
1018
|
if (!key || !obj) return null;
|
|
1012
1019
|
|
|
1013
1020
|
// Use reduce to walk through the object by splitting the key on dots
|
|
1014
|
-
const result = key
|
|
1015
|
-
|
|
1016
|
-
|
|
1021
|
+
const result = key.split('.').reduce((o: unknown, k: string) => {
|
|
1022
|
+
if (
|
|
1023
|
+
o &&
|
|
1024
|
+
typeof o === 'object' &&
|
|
1025
|
+
(o as Record<string, unknown>)[k] !== undefined
|
|
1026
|
+
) {
|
|
1027
|
+
return (o as Record<string, unknown>)[k];
|
|
1028
|
+
}
|
|
1029
|
+
return null;
|
|
1030
|
+
}, obj);
|
|
1017
1031
|
|
|
1018
1032
|
return result;
|
|
1019
1033
|
}
|
|
@@ -1300,7 +1314,7 @@ export class KTSelect extends KTComponent {
|
|
|
1300
1314
|
// Sync native select value for FormData support
|
|
1301
1315
|
this._syncNativeSelectValue();
|
|
1302
1316
|
|
|
1303
|
-
if (
|
|
1317
|
+
if (this._config.tags && this._tagsModule) {
|
|
1304
1318
|
// Tags module will render tags if selectedOptions > 0, or clear them if selectedOptions === 0.
|
|
1305
1319
|
this._tagsModule.updateTagsDisplay(selectedOptions);
|
|
1306
1320
|
}
|
|
@@ -1508,19 +1522,6 @@ export class KTSelect extends KTComponent {
|
|
|
1508
1522
|
if (focusedOption) {
|
|
1509
1523
|
const selectedValue = focusedOption.dataset.value;
|
|
1510
1524
|
|
|
1511
|
-
// Extract just the title text, not including description
|
|
1512
|
-
let selectedText = '';
|
|
1513
|
-
const titleElement = focusedOption.querySelector(
|
|
1514
|
-
'[data-kt-option-title]',
|
|
1515
|
-
);
|
|
1516
|
-
if (titleElement) {
|
|
1517
|
-
// If it has a structured content with title element
|
|
1518
|
-
selectedText = titleElement.textContent?.trim() || '';
|
|
1519
|
-
} else {
|
|
1520
|
-
// Fallback to the whole text content
|
|
1521
|
-
selectedText = focusedOption.textContent?.trim() || '';
|
|
1522
|
-
}
|
|
1523
|
-
|
|
1524
1525
|
// First trigger the selection to ensure state is updated properly
|
|
1525
1526
|
if (selectedValue) {
|
|
1526
1527
|
this._selectOption(selectedValue);
|
|
@@ -1621,7 +1622,7 @@ export class KTSelect extends KTComponent {
|
|
|
1621
1622
|
/**
|
|
1622
1623
|
* Get the search input element
|
|
1623
1624
|
*/
|
|
1624
|
-
public getSearchInput(): HTMLInputElement {
|
|
1625
|
+
public getSearchInput(): HTMLInputElement | null {
|
|
1625
1626
|
return this._searchInputElement;
|
|
1626
1627
|
}
|
|
1627
1628
|
|
|
@@ -1685,7 +1686,7 @@ export class KTSelect extends KTComponent {
|
|
|
1685
1686
|
if (option.hasAttribute('style')) {
|
|
1686
1687
|
const styleAttr = option.getAttribute('style');
|
|
1687
1688
|
|
|
1688
|
-
if (styleAttr.includes('display:')) {
|
|
1689
|
+
if (styleAttr && styleAttr.includes('display:')) {
|
|
1689
1690
|
// If style only contains display property, remove the entire attribute
|
|
1690
1691
|
if (
|
|
1691
1692
|
styleAttr.trim() === 'display: none;' ||
|
|
@@ -1696,7 +1697,7 @@ export class KTSelect extends KTComponent {
|
|
|
1696
1697
|
// Otherwise, remove just the display property
|
|
1697
1698
|
option.setAttribute(
|
|
1698
1699
|
'style',
|
|
1699
|
-
styleAttr
|
|
1700
|
+
styleAttr.replace(/display:\s*[^;]+;?/gi, '').trim(),
|
|
1700
1701
|
);
|
|
1701
1702
|
}
|
|
1702
1703
|
}
|
|
@@ -1816,7 +1817,7 @@ export class KTSelect extends KTComponent {
|
|
|
1816
1817
|
*/
|
|
1817
1818
|
public override dispose(): void {
|
|
1818
1819
|
// Clean up event listeners
|
|
1819
|
-
this._eventManager.removeAllListeners(
|
|
1820
|
+
this._eventManager.removeAllListeners(this._wrapperElement);
|
|
1820
1821
|
|
|
1821
1822
|
// Dispose modules
|
|
1822
1823
|
if (this._dropdownModule) {
|
|
@@ -2464,7 +2465,6 @@ export class KTSelect extends KTComponent {
|
|
|
2464
2465
|
}
|
|
2465
2466
|
|
|
2466
2467
|
const isOpen = this._dropdownIsOpen;
|
|
2467
|
-
const config = this._config;
|
|
2468
2468
|
const focusManager = this._focusManager;
|
|
2469
2469
|
const buffer = this._typeToSearchBuffer;
|
|
2470
2470
|
|
|
@@ -2588,7 +2588,7 @@ export class KTSelect extends KTComponent {
|
|
|
2588
2588
|
}
|
|
2589
2589
|
|
|
2590
2590
|
public renderDisplayTemplateForSelected(selectedValues: string[]): string {
|
|
2591
|
-
const optionsConfig =
|
|
2591
|
+
const optionsConfig = this._config.optionsConfig || {};
|
|
2592
2592
|
const displaySeparator = this._config.displaySeparator || ', ';
|
|
2593
2593
|
const contentArray = Array.from(
|
|
2594
2594
|
new Set(
|
|
@@ -2599,7 +2599,7 @@ export class KTSelect extends KTComponent {
|
|
|
2599
2599
|
);
|
|
2600
2600
|
if (!option) return '';
|
|
2601
2601
|
|
|
2602
|
-
let displayTemplate = this._config.displayTemplate;
|
|
2602
|
+
let displayTemplate = this._config.displayTemplate || '{{text}}';
|
|
2603
2603
|
const text = option.getAttribute('data-text') || '';
|
|
2604
2604
|
|
|
2605
2605
|
// Replace all {{varname}} in option.innerHTML with values from _config
|
|
@@ -2757,21 +2757,25 @@ export class KTSelect extends KTComponent {
|
|
|
2757
2757
|
.getVisibleOptions()
|
|
2758
2758
|
.filter((opt) => opt.getAttribute('aria-disabled') !== 'true');
|
|
2759
2759
|
|
|
2760
|
+
const selectAllButton = this._selectAllButton;
|
|
2761
|
+
const selectAllButtonToggle = this._selectAllButtonToggle;
|
|
2762
|
+
if (!selectAllButton || !selectAllButtonToggle) return;
|
|
2763
|
+
|
|
2760
2764
|
if (visibleOptions.length === 0) {
|
|
2761
|
-
|
|
2765
|
+
selectAllButton.style.display = 'none';
|
|
2762
2766
|
return;
|
|
2763
2767
|
}
|
|
2764
2768
|
|
|
2765
|
-
|
|
2769
|
+
selectAllButton.style.display = '';
|
|
2766
2770
|
|
|
2767
2771
|
const selectedValues = new Set(this.getSelectedOptions());
|
|
2768
2772
|
const isAllSelected = visibleOptions.every((opt) =>
|
|
2769
2773
|
selectedValues.has(opt.dataset.value as string),
|
|
2770
2774
|
);
|
|
2771
2775
|
|
|
2772
|
-
|
|
2773
|
-
? this._config.clearAllText
|
|
2774
|
-
: this._config.selectAllText;
|
|
2776
|
+
selectAllButtonToggle.textContent = isAllSelected
|
|
2777
|
+
? (this._config.clearAllText ?? 'Clear all')
|
|
2778
|
+
: (this._config.selectAllText ?? 'Select all');
|
|
2775
2779
|
}
|
|
2776
2780
|
|
|
2777
2781
|
/**
|
|
@@ -14,7 +14,7 @@ import { EventManager } from './utils';
|
|
|
14
14
|
export class KTSelectTags {
|
|
15
15
|
private _select: KTSelect;
|
|
16
16
|
private _config: KTSelectConfigInterface;
|
|
17
|
-
private _valueDisplayElement: HTMLElement;
|
|
17
|
+
private _valueDisplayElement: HTMLElement | null;
|
|
18
18
|
private _eventManager: EventManager;
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -32,21 +32,23 @@ export class KTSelectTags {
|
|
|
32
32
|
* Renders selected options as tags in the display element
|
|
33
33
|
*/
|
|
34
34
|
public updateTagsDisplay(selectedOptions: string[]): void {
|
|
35
|
+
if (!this._valueDisplayElement) return;
|
|
36
|
+
const valueDisplayElement = this._valueDisplayElement;
|
|
35
37
|
// Remove any existing tag elements
|
|
36
|
-
const wrapper =
|
|
38
|
+
const wrapper = valueDisplayElement.parentElement;
|
|
37
39
|
if (!wrapper) return;
|
|
38
40
|
|
|
39
41
|
// If no options selected, ensure placeholder is shown
|
|
40
42
|
if (selectedOptions.length === 0) {
|
|
41
43
|
// Clear any existing content and show placeholder
|
|
42
|
-
|
|
44
|
+
valueDisplayElement.innerHTML = '';
|
|
43
45
|
const placeholderEl = defaultTemplates.placeholder(this._config);
|
|
44
|
-
|
|
46
|
+
valueDisplayElement.appendChild(placeholderEl);
|
|
45
47
|
return;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
// Clear all existing content before adding tags
|
|
49
|
-
|
|
51
|
+
valueDisplayElement.innerHTML = '';
|
|
50
52
|
|
|
51
53
|
// Insert each tag before the display element
|
|
52
54
|
selectedOptions.forEach((optionValue) => {
|
|
@@ -62,7 +64,8 @@ export class KTSelectTags {
|
|
|
62
64
|
if (!optionElement) {
|
|
63
65
|
const originalOptions = this._select
|
|
64
66
|
.getElement()
|
|
65
|
-
|
|
67
|
+
?.querySelectorAll('option');
|
|
68
|
+
if (!originalOptions) return;
|
|
66
69
|
for (const opt of Array.from(originalOptions)) {
|
|
67
70
|
if ((opt as HTMLOptionElement).value === optionValue) {
|
|
68
71
|
optionElement = opt as HTMLOptionElement;
|
|
@@ -70,6 +73,7 @@ export class KTSelectTags {
|
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
75
|
}
|
|
76
|
+
if (!optionElement) return;
|
|
73
77
|
|
|
74
78
|
const tag = defaultTemplates.tag(optionElement, this._config);
|
|
75
79
|
|
|
@@ -85,7 +89,7 @@ export class KTSelectTags {
|
|
|
85
89
|
}
|
|
86
90
|
|
|
87
91
|
// Insert tag inside the display element
|
|
88
|
-
|
|
92
|
+
valueDisplayElement.appendChild(tag);
|
|
89
93
|
});
|
|
90
94
|
}
|
|
91
95
|
|
|
@@ -101,6 +105,8 @@ export class KTSelectTags {
|
|
|
101
105
|
* Clean up resources used by this module
|
|
102
106
|
*/
|
|
103
107
|
public destroy(): void {
|
|
104
|
-
this.
|
|
108
|
+
if (this._valueDisplayElement) {
|
|
109
|
+
this._eventManager.removeAllListeners(this._valueDisplayElement);
|
|
110
|
+
}
|
|
105
111
|
}
|
|
106
112
|
}
|
|
@@ -136,7 +136,7 @@ export function getTemplateStrings(
|
|
|
136
136
|
): typeof coreTemplateStrings {
|
|
137
137
|
const templates =
|
|
138
138
|
config && typeof config === 'object' && 'templates' in config
|
|
139
|
-
? (config as
|
|
139
|
+
? (config as KTSelectConfigInterface).templates
|
|
140
140
|
: undefined;
|
|
141
141
|
|
|
142
142
|
if (templates) {
|
|
@@ -264,7 +264,7 @@ export const defaultTemplates: KTSelectTemplateInterface = {
|
|
|
264
264
|
config: KTSelectConfigInterface,
|
|
265
265
|
): HTMLElement => {
|
|
266
266
|
const isHtmlOption = option instanceof HTMLOptionElement;
|
|
267
|
-
let optionData: Record<string,
|
|
267
|
+
let optionData: Record<string, unknown>;
|
|
268
268
|
|
|
269
269
|
if (isHtmlOption) {
|
|
270
270
|
// If it's a plain HTMLOptionElement, construct data similarly to how KTSelectOption would
|
|
@@ -288,14 +288,14 @@ export const defaultTemplates: KTSelectTemplateInterface = {
|
|
|
288
288
|
).getOptionDataForTemplate();
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
-
let content = optionData?.text
|
|
291
|
+
let content = String(optionData?.text || '').trim(); // Default content to option's text
|
|
292
292
|
|
|
293
293
|
if (config.optionTemplate) {
|
|
294
294
|
// Use the user-provided template string, rendering with the full optionData.
|
|
295
295
|
// renderTemplateString will replace {{key}} with values from optionData.
|
|
296
296
|
content = renderTemplateString(config.optionTemplate, optionData);
|
|
297
297
|
} else {
|
|
298
|
-
content = optionData.text || optionData.content
|
|
298
|
+
content = String(optionData.text || optionData.content || '');
|
|
299
299
|
}
|
|
300
300
|
|
|
301
301
|
// Use the core option template string as the base structure.
|
|
@@ -326,7 +326,7 @@ export const defaultTemplates: KTSelectTemplateInterface = {
|
|
|
326
326
|
}
|
|
327
327
|
|
|
328
328
|
// Ensure data-text attribute is set to the original, clean text for searching/filtering
|
|
329
|
-
element.setAttribute('data-text', optionData?.text
|
|
329
|
+
element.setAttribute('data-text', String(optionData?.text || '').trim());
|
|
330
330
|
|
|
331
331
|
return element;
|
|
332
332
|
},
|
|
@@ -402,7 +402,12 @@ export const defaultTemplates: KTSelectTemplateInterface = {
|
|
|
402
402
|
|
|
403
403
|
// Replace all {{varname}} in option.innerHTML with values from _config.optionsConfig
|
|
404
404
|
Object.entries(
|
|
405
|
-
(
|
|
405
|
+
(
|
|
406
|
+
config.optionsConfig as unknown as Record<
|
|
407
|
+
string,
|
|
408
|
+
Record<string, unknown>
|
|
409
|
+
>
|
|
410
|
+
)?.[optionValue] || {},
|
|
406
411
|
).forEach(([key, val]) => {
|
|
407
412
|
if (
|
|
408
413
|
typeof val === 'string' ||
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
// utils.ts
|
|
7
7
|
|
|
8
|
-
import { defaultTemplates } from './templates';
|
|
9
8
|
import { KTSelectConfigInterface } from './config';
|
|
10
9
|
|
|
11
10
|
/**
|
|
@@ -99,7 +98,7 @@ export class FocusManager {
|
|
|
99
98
|
constructor(
|
|
100
99
|
element: HTMLElement,
|
|
101
100
|
optionsSelector: string = '[data-kt-select-option]',
|
|
102
|
-
|
|
101
|
+
_config?: KTSelectConfigInterface,
|
|
103
102
|
) {
|
|
104
103
|
this._element = element;
|
|
105
104
|
this._optionsSelector = optionsSelector;
|
|
@@ -121,8 +120,7 @@ export class FocusManager {
|
|
|
121
120
|
const target = e.target as HTMLElement;
|
|
122
121
|
const optionElement = target.closest(this._optionsSelector);
|
|
123
122
|
|
|
124
|
-
|
|
125
|
-
}
|
|
123
|
+
void optionElement;
|
|
126
124
|
});
|
|
127
125
|
}
|
|
128
126
|
|
|
@@ -372,7 +370,11 @@ export class FocusManager {
|
|
|
372
370
|
const focusedEl = this._element.querySelector(
|
|
373
371
|
`${this._optionsSelector}.${this._focusClass}`,
|
|
374
372
|
) as HTMLElement | null;
|
|
375
|
-
if (
|
|
373
|
+
if (
|
|
374
|
+
focusedEl &&
|
|
375
|
+
!focusedEl.classList.contains('hidden') &&
|
|
376
|
+
focusedEl.style.display !== 'none'
|
|
377
|
+
) {
|
|
376
378
|
const idx = options.indexOf(focusedEl);
|
|
377
379
|
if (idx >= 0) {
|
|
378
380
|
this._focusedOptionIndex = idx;
|
|
@@ -438,7 +440,7 @@ export class EventManager {
|
|
|
438
440
|
element: HTMLElement,
|
|
439
441
|
event: string,
|
|
440
442
|
handler: EventListenerOrEventListenerObject,
|
|
441
|
-
context?:
|
|
443
|
+
context?: unknown,
|
|
442
444
|
): void {
|
|
443
445
|
if (!element) return;
|
|
444
446
|
|
|
@@ -510,12 +512,12 @@ export class EventManager {
|
|
|
510
512
|
* Debounce function to limit how often a function can be called
|
|
511
513
|
*/
|
|
512
514
|
export function debounce(
|
|
513
|
-
func: (...args:
|
|
515
|
+
func: (...args: unknown[]) => void,
|
|
514
516
|
delay: number,
|
|
515
|
-
): (...args:
|
|
517
|
+
): (...args: unknown[]) => void {
|
|
516
518
|
let timeout: ReturnType<typeof setTimeout>;
|
|
517
519
|
|
|
518
|
-
return function (...args:
|
|
520
|
+
return function (...args: unknown[]) {
|
|
519
521
|
clearTimeout(timeout);
|
|
520
522
|
timeout = setTimeout(() => func(...args), delay);
|
|
521
523
|
};
|
|
@@ -527,7 +529,7 @@ export function debounce(
|
|
|
527
529
|
*/
|
|
528
530
|
export function renderTemplateString(
|
|
529
531
|
template: string,
|
|
530
|
-
data: Record<string,
|
|
532
|
+
data: Record<string, unknown>,
|
|
531
533
|
): string {
|
|
532
534
|
return template.replace(/{{(\w+)}}/g, (_, key) =>
|
|
533
535
|
data[key] !== undefined && data[key] !== null ? String(data[key]) : '',
|
|
@@ -15,8 +15,13 @@ describe('KTSticky', () => {
|
|
|
15
15
|
beforeEach(() => {
|
|
16
16
|
document.body.innerHTML = '';
|
|
17
17
|
scrollTop = 0;
|
|
18
|
-
vi.spyOn(KTDomModule.default, 'getScrollTop').mockImplementation(
|
|
19
|
-
|
|
18
|
+
vi.spyOn(KTDomModule.default, 'getScrollTop').mockImplementation(
|
|
19
|
+
() => scrollTop,
|
|
20
|
+
);
|
|
21
|
+
vi.spyOn(KTDomModule.default, 'getViewPort').mockReturnValue({
|
|
22
|
+
height: 800,
|
|
23
|
+
width: 1024,
|
|
24
|
+
});
|
|
20
25
|
|
|
21
26
|
wrapper = document.createElement('div');
|
|
22
27
|
wrapper.setAttribute('data-kt-sticky-wrapper', 'true');
|
|
@@ -151,7 +156,9 @@ describe('KTSticky', () => {
|
|
|
151
156
|
it('fires change event when sticky becomes active and when released', async () => {
|
|
152
157
|
const instance = new KTSticky(stickyEl);
|
|
153
158
|
const changes: { active: boolean }[] = [];
|
|
154
|
-
instance.on('change', (payload: { active: boolean }) =>
|
|
159
|
+
instance.on('change', (payload: { active: boolean }) =>
|
|
160
|
+
changes.push(payload),
|
|
161
|
+
);
|
|
155
162
|
|
|
156
163
|
scrollTop = 150;
|
|
157
164
|
window.dispatchEvent(new Event('scroll', { bubbles: true }));
|
|
@@ -119,42 +119,35 @@ export class KTSticky extends KTComponent implements KTStickyInterface {
|
|
|
119
119
|
|
|
120
120
|
// Store scroll handler reference for cleanup
|
|
121
121
|
this._scrollHandler = () => {
|
|
122
|
-
|
|
123
122
|
this._isScrolling = true;
|
|
124
123
|
|
|
125
|
-
if(this._isActive() === true){
|
|
126
|
-
|
|
124
|
+
if (this._isActive() === true) {
|
|
127
125
|
this._debounceScroll(() => {
|
|
128
|
-
|
|
129
126
|
this._isScrolling = false;
|
|
130
127
|
this._process();
|
|
131
|
-
|
|
132
128
|
}, 200);
|
|
133
|
-
|
|
134
|
-
}else{
|
|
135
|
-
|
|
129
|
+
} else {
|
|
136
130
|
this._isScrolling = false;
|
|
137
131
|
this._process();
|
|
138
|
-
|
|
139
132
|
}
|
|
140
|
-
|
|
141
133
|
};
|
|
142
134
|
|
|
143
135
|
if (this._targetElement) {
|
|
144
136
|
if (this._targetElement === document) {
|
|
145
|
-
window.addEventListener('scroll', this._scrollHandler, {
|
|
137
|
+
window.addEventListener('scroll', this._scrollHandler, {
|
|
138
|
+
passive: true,
|
|
139
|
+
});
|
|
146
140
|
} else {
|
|
147
141
|
(this._targetElement as HTMLElement).addEventListener(
|
|
148
142
|
'scroll',
|
|
149
143
|
this._scrollHandler,
|
|
150
|
-
{ passive: true }
|
|
144
|
+
{ passive: true },
|
|
151
145
|
);
|
|
152
146
|
}
|
|
153
147
|
}
|
|
154
148
|
}
|
|
155
149
|
|
|
156
150
|
protected _debounceScroll(callback: () => void, delay: number = 200): void {
|
|
157
|
-
|
|
158
151
|
if (this._scrollTimeout) {
|
|
159
152
|
clearTimeout(this._scrollTimeout);
|
|
160
153
|
}
|
|
@@ -162,7 +155,6 @@ export class KTSticky extends KTComponent implements KTStickyInterface {
|
|
|
162
155
|
this._scrollTimeout = setTimeout(() => {
|
|
163
156
|
callback();
|
|
164
157
|
}, delay);
|
|
165
|
-
|
|
166
158
|
}
|
|
167
159
|
|
|
168
160
|
protected _process(): void {
|
|
@@ -352,7 +344,7 @@ export class KTSticky extends KTComponent implements KTStickyInterface {
|
|
|
352
344
|
const activeClassList = this._getOption('activeClass') as string;
|
|
353
345
|
if (activeClassList) {
|
|
354
346
|
KTDom.addClass(this._element, activeClassList);
|
|
355
|
-
}else{
|
|
347
|
+
} else {
|
|
356
348
|
const classList = this._getOption('class') as string;
|
|
357
349
|
if (classList) {
|
|
358
350
|
KTDom.addClass(this._element, classList);
|
|
@@ -387,10 +379,10 @@ export class KTSticky extends KTComponent implements KTStickyInterface {
|
|
|
387
379
|
const activeClassList = this._getOption('activeClass') as string;
|
|
388
380
|
if (activeClassList) {
|
|
389
381
|
KTDom.removeClass(this._element, activeClassList);
|
|
390
|
-
}else{
|
|
382
|
+
} else {
|
|
391
383
|
const classList = this._getOption('class') as string;
|
|
392
384
|
if (classList) {
|
|
393
|
-
|
|
385
|
+
KTDom.removeClass(this._element, classList);
|
|
394
386
|
}
|
|
395
387
|
}
|
|
396
388
|
|
|
@@ -399,12 +391,11 @@ export class KTSticky extends KTComponent implements KTStickyInterface {
|
|
|
399
391
|
KTDom.addClass(this._element, releaseClassList);
|
|
400
392
|
}
|
|
401
393
|
|
|
402
|
-
if(this._eventTriggerState === false){
|
|
394
|
+
if (this._eventTriggerState === false) {
|
|
403
395
|
const releaseDelay = this._getOption('releaseDelay') as number;
|
|
404
|
-
if(releaseDelay && this._timeoutState === null){
|
|
396
|
+
if (releaseDelay && this._timeoutState === null) {
|
|
405
397
|
this._timeoutState = setTimeout(() => {
|
|
406
|
-
|
|
407
|
-
if (!this._element){
|
|
398
|
+
if (!this._element) {
|
|
408
399
|
return;
|
|
409
400
|
}
|
|
410
401
|
|
|
@@ -413,17 +404,16 @@ export class KTSticky extends KTComponent implements KTStickyInterface {
|
|
|
413
404
|
}
|
|
414
405
|
|
|
415
406
|
this._timeoutState = null;
|
|
416
|
-
|
|
417
407
|
}, releaseDelay);
|
|
418
|
-
}else{
|
|
408
|
+
} else {
|
|
419
409
|
this._resetStyles();
|
|
420
410
|
}
|
|
421
|
-
}else{
|
|
411
|
+
} else {
|
|
422
412
|
this._timeoutState = null;
|
|
423
413
|
}
|
|
424
414
|
}
|
|
425
415
|
|
|
426
|
-
protected _resetStyles
|
|
416
|
+
protected _resetStyles(): void {
|
|
427
417
|
this._element.style.top = '';
|
|
428
418
|
this._element.style.bottom = '';
|
|
429
419
|
this._element.style.insetInlineStart = '';
|
|
@@ -435,7 +425,7 @@ export class KTSticky extends KTComponent implements KTStickyInterface {
|
|
|
435
425
|
this._element.style.right = '';
|
|
436
426
|
this._element.style.zIndex = '';
|
|
437
427
|
this._element.style.position = '';
|
|
438
|
-
}
|
|
428
|
+
}
|
|
439
429
|
|
|
440
430
|
protected _update(): void {
|
|
441
431
|
this._timeoutState = null;
|
|
@@ -19,9 +19,9 @@ export interface KTStickyConfigInterface {
|
|
|
19
19
|
reverse: boolean;
|
|
20
20
|
release: string;
|
|
21
21
|
activate: string;
|
|
22
|
-
releaseDelay: number
|
|
23
|
-
activeClass: string
|
|
24
|
-
releaseClass: string
|
|
22
|
+
releaseDelay: number;
|
|
23
|
+
activeClass: string;
|
|
24
|
+
releaseClass: string;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export interface KTStickyInterface {
|