@keenthemes/ktui 1.0.28 → 1.1.0

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.
Files changed (288) hide show
  1. package/README.md +27 -0
  2. package/dist/ktui.js +8780 -6199
  3. package/dist/ktui.min.js +1 -1
  4. package/dist/ktui.min.js.map +1 -1
  5. package/dist/styles.css +2744 -1367
  6. package/lib/cjs/components/alert/alert.js +1025 -0
  7. package/lib/cjs/components/alert/alert.js.map +1 -0
  8. package/lib/cjs/components/alert/index.js +20 -0
  9. package/lib/cjs/components/alert/index.js.map +1 -0
  10. package/lib/cjs/components/alert/templates.js +120 -0
  11. package/lib/cjs/components/alert/templates.js.map +1 -0
  12. package/lib/cjs/components/alert/types.js +7 -0
  13. package/lib/cjs/components/alert/types.js.map +1 -0
  14. package/lib/cjs/components/datepicker/config/config.js +42 -0
  15. package/lib/cjs/components/datepicker/config/config.js.map +1 -0
  16. package/lib/cjs/components/datepicker/config/index.js +24 -0
  17. package/lib/cjs/components/datepicker/config/index.js.map +1 -0
  18. package/lib/cjs/components/datepicker/config/interfaces.js +7 -0
  19. package/lib/cjs/components/datepicker/config/interfaces.js.map +1 -0
  20. package/lib/cjs/components/datepicker/config/types.js +7 -0
  21. package/lib/cjs/components/datepicker/config/types.js.map +1 -0
  22. package/lib/cjs/components/datepicker/core/event-manager.js +135 -0
  23. package/lib/cjs/components/datepicker/core/event-manager.js.map +1 -0
  24. package/lib/cjs/components/datepicker/core/focus-manager.js +167 -0
  25. package/lib/cjs/components/datepicker/core/focus-manager.js.map +1 -0
  26. package/lib/cjs/components/datepicker/core/helpers.js +219 -0
  27. package/lib/cjs/components/datepicker/core/helpers.js.map +1 -0
  28. package/lib/cjs/components/datepicker/core/index.js +25 -0
  29. package/lib/cjs/components/datepicker/core/index.js.map +1 -0
  30. package/lib/cjs/components/datepicker/core/unified-state-manager.js +394 -0
  31. package/lib/cjs/components/datepicker/core/unified-state-manager.js.map +1 -0
  32. package/lib/cjs/components/datepicker/datepicker.js +2066 -763
  33. package/lib/cjs/components/datepicker/datepicker.js.map +1 -1
  34. package/lib/cjs/components/datepicker/index.js +19 -8
  35. package/lib/cjs/components/datepicker/index.js.map +1 -1
  36. package/lib/cjs/components/datepicker/ui/index.js +23 -0
  37. package/lib/cjs/components/datepicker/ui/index.js.map +1 -0
  38. package/lib/cjs/components/datepicker/ui/input/dropdown.js +489 -0
  39. package/lib/cjs/components/datepicker/ui/input/dropdown.js.map +1 -0
  40. package/lib/cjs/components/datepicker/ui/input/index.js +23 -0
  41. package/lib/cjs/components/datepicker/ui/input/index.js.map +1 -0
  42. package/lib/cjs/components/datepicker/ui/input/segmented-input.js +640 -0
  43. package/lib/cjs/components/datepicker/ui/input/segmented-input.js.map +1 -0
  44. package/lib/cjs/components/datepicker/ui/renderers/calendar.js +446 -0
  45. package/lib/cjs/components/datepicker/ui/renderers/calendar.js.map +1 -0
  46. package/lib/cjs/components/datepicker/ui/renderers/footer.js +42 -0
  47. package/lib/cjs/components/datepicker/ui/renderers/footer.js.map +1 -0
  48. package/lib/cjs/components/datepicker/ui/renderers/header.js +32 -0
  49. package/lib/cjs/components/datepicker/ui/renderers/header.js.map +1 -0
  50. package/lib/cjs/components/datepicker/ui/renderers/index.js +25 -0
  51. package/lib/cjs/components/datepicker/ui/renderers/index.js.map +1 -0
  52. package/lib/cjs/components/datepicker/ui/renderers/time-picker.js +384 -0
  53. package/lib/cjs/components/datepicker/ui/renderers/time-picker.js.map +1 -0
  54. package/lib/cjs/components/datepicker/ui/templates/index.js +22 -0
  55. package/lib/cjs/components/datepicker/ui/templates/index.js.map +1 -0
  56. package/lib/cjs/components/datepicker/ui/templates/templates.js +253 -0
  57. package/lib/cjs/components/datepicker/ui/templates/templates.js.map +1 -0
  58. package/lib/cjs/components/datepicker/utils/date-formatters.js +88 -0
  59. package/lib/cjs/components/datepicker/utils/date-formatters.js.map +1 -0
  60. package/lib/cjs/components/datepicker/utils/date-utils.js +194 -0
  61. package/lib/cjs/components/datepicker/utils/date-utils.js.map +1 -0
  62. package/lib/cjs/components/datepicker/utils/index.js +24 -0
  63. package/lib/cjs/components/datepicker/utils/index.js.map +1 -0
  64. package/lib/cjs/components/datepicker/utils/time-utils.js +213 -0
  65. package/lib/cjs/components/datepicker/utils/time-utils.js.map +1 -0
  66. package/lib/cjs/index.js +6 -1
  67. package/lib/cjs/index.js.map +1 -1
  68. package/lib/esm/components/alert/alert.js +1022 -0
  69. package/lib/esm/components/alert/alert.js.map +1 -0
  70. package/lib/esm/components/alert/index.js +4 -0
  71. package/lib/esm/components/alert/index.js.map +1 -0
  72. package/lib/esm/components/alert/templates.js +112 -0
  73. package/lib/esm/components/alert/templates.js.map +1 -0
  74. package/lib/esm/components/alert/types.js +6 -0
  75. package/lib/esm/components/alert/types.js.map +1 -0
  76. package/lib/esm/components/datepicker/config/config.js +39 -0
  77. package/lib/esm/components/datepicker/config/config.js.map +1 -0
  78. package/lib/esm/components/datepicker/config/index.js +8 -0
  79. package/lib/esm/components/datepicker/config/index.js.map +1 -0
  80. package/lib/esm/components/datepicker/config/interfaces.js +6 -0
  81. package/lib/esm/components/datepicker/config/interfaces.js.map +1 -0
  82. package/lib/esm/components/datepicker/config/types.js +6 -0
  83. package/lib/esm/components/datepicker/config/types.js.map +1 -0
  84. package/lib/esm/components/datepicker/core/event-manager.js +133 -0
  85. package/lib/esm/components/datepicker/core/event-manager.js.map +1 -0
  86. package/lib/esm/components/datepicker/core/focus-manager.js +164 -0
  87. package/lib/esm/components/datepicker/core/focus-manager.js.map +1 -0
  88. package/lib/esm/components/datepicker/core/helpers.js +211 -0
  89. package/lib/esm/components/datepicker/core/helpers.js.map +1 -0
  90. package/lib/esm/components/datepicker/core/index.js +9 -0
  91. package/lib/esm/components/datepicker/core/index.js.map +1 -0
  92. package/lib/esm/components/datepicker/core/unified-state-manager.js +391 -0
  93. package/lib/esm/components/datepicker/core/unified-state-manager.js.map +1 -0
  94. package/lib/esm/components/datepicker/datepicker.js +2065 -763
  95. package/lib/esm/components/datepicker/datepicker.js.map +1 -1
  96. package/lib/esm/components/datepicker/index.js +6 -8
  97. package/lib/esm/components/datepicker/index.js.map +1 -1
  98. package/lib/esm/components/datepicker/ui/index.js +7 -0
  99. package/lib/esm/components/datepicker/ui/index.js.map +1 -0
  100. package/lib/esm/components/datepicker/ui/input/dropdown.js +486 -0
  101. package/lib/esm/components/datepicker/ui/input/dropdown.js.map +1 -0
  102. package/lib/esm/components/datepicker/ui/input/index.js +7 -0
  103. package/lib/esm/components/datepicker/ui/input/index.js.map +1 -0
  104. package/lib/esm/components/datepicker/ui/input/segmented-input.js +637 -0
  105. package/lib/esm/components/datepicker/ui/input/segmented-input.js.map +1 -0
  106. package/lib/esm/components/datepicker/ui/renderers/calendar.js +443 -0
  107. package/lib/esm/components/datepicker/ui/renderers/calendar.js.map +1 -0
  108. package/lib/esm/components/datepicker/ui/renderers/footer.js +39 -0
  109. package/lib/esm/components/datepicker/ui/renderers/footer.js.map +1 -0
  110. package/lib/esm/components/datepicker/ui/renderers/header.js +29 -0
  111. package/lib/esm/components/datepicker/ui/renderers/header.js.map +1 -0
  112. package/lib/esm/components/datepicker/ui/renderers/index.js +9 -0
  113. package/lib/esm/components/datepicker/ui/renderers/index.js.map +1 -0
  114. package/lib/esm/components/datepicker/ui/renderers/time-picker.js +381 -0
  115. package/lib/esm/components/datepicker/ui/renderers/time-picker.js.map +1 -0
  116. package/lib/esm/components/datepicker/ui/templates/index.js +6 -0
  117. package/lib/esm/components/datepicker/ui/templates/index.js.map +1 -0
  118. package/lib/esm/components/datepicker/ui/templates/templates.js +242 -0
  119. package/lib/esm/components/datepicker/ui/templates/templates.js.map +1 -0
  120. package/lib/esm/components/datepicker/utils/date-formatters.js +83 -0
  121. package/lib/esm/components/datepicker/utils/date-formatters.js.map +1 -0
  122. package/lib/esm/components/datepicker/utils/date-utils.js +184 -0
  123. package/lib/esm/components/datepicker/utils/date-utils.js.map +1 -0
  124. package/lib/esm/components/datepicker/utils/index.js +8 -0
  125. package/lib/esm/components/datepicker/utils/index.js.map +1 -0
  126. package/lib/esm/components/datepicker/utils/time-utils.js +201 -0
  127. package/lib/esm/components/datepicker/utils/time-utils.js.map +1 -0
  128. package/lib/esm/index.js +4 -0
  129. package/lib/esm/index.js.map +1 -1
  130. package/package.json +22 -3
  131. package/src/components/alert/alert.css +429 -188
  132. package/src/components/alert/alert.ts +990 -0
  133. package/src/components/alert/index.ts +4 -0
  134. package/src/components/alert/templates.ts +110 -0
  135. package/src/components/alert/tests/accessibility/aria-roles.test.ts +19 -0
  136. package/src/components/alert/tests/accessibility/focus-management.test.ts +19 -0
  137. package/src/components/alert/tests/accessibility/keyboard-nav.test.ts +22 -0
  138. package/src/components/alert/tests/actions/confirm-cancel.test.ts +122 -0
  139. package/src/components/alert/tests/actions/input-field.test.ts +180 -0
  140. package/src/components/alert/tests/alert.basic.test.ts +126 -0
  141. package/src/components/alert/tests/alert.config.test.ts +75 -0
  142. package/src/components/alert/tests/alert.templates.test.ts +17 -0
  143. package/src/components/alert/tests/config/attribute-config.test.ts +94 -0
  144. package/src/components/alert/tests/config/json-config.test.ts +119 -0
  145. package/src/components/alert/tests/config/merging.test.ts +89 -0
  146. package/src/components/alert/tests/dismissal/auto-dismiss.test.ts +96 -0
  147. package/src/components/alert/tests/dismissal/escape-key-dismiss.test.ts +105 -0
  148. package/src/components/alert/tests/dismissal/manual-dismiss.test.ts +90 -0
  149. package/src/components/alert/tests/dismissal/outside-click-dismiss.test.ts +91 -0
  150. package/src/components/alert/tests/edge-cases/invalid-config.test.ts +19 -0
  151. package/src/components/alert/tests/edge-cases/multiple-alerts.test.ts +19 -0
  152. package/src/components/alert/tests/rendering/custom-content.test.ts +81 -0
  153. package/src/components/alert/tests/rendering/info-alert.test.ts +84 -0
  154. package/src/components/alert/tests/rendering/success-alert.test.ts +100 -0
  155. package/src/components/alert/tests/templates/default-templates.test.ts +16 -0
  156. package/src/components/alert/tests/templates/user-templates.test.ts +16 -0
  157. package/src/components/alert/types.ts +145 -0
  158. package/src/components/datepicker/__tests__/datepicker-events.test.ts +356 -0
  159. package/src/components/datepicker/__tests__/datepicker-init.test.ts +343 -0
  160. package/src/components/datepicker/__tests__/datepicker-integration.test.ts +435 -0
  161. package/src/components/datepicker/__tests__/datepicker-timezone.test.ts +220 -0
  162. package/src/components/datepicker/__tests__/segmented-input-focus.test.ts +380 -0
  163. package/src/components/datepicker/__tests__/selective-state-updates.test.ts +400 -0
  164. package/src/components/datepicker/__tests__/state-manager.test.ts +421 -0
  165. package/src/components/datepicker/__tests__/time-preservation.test.ts +387 -0
  166. package/src/components/datepicker/config/config.ts +40 -0
  167. package/src/components/datepicker/config/index.ts +8 -0
  168. package/src/components/datepicker/config/interfaces.ts +82 -0
  169. package/src/components/datepicker/config/types.ts +188 -0
  170. package/src/components/datepicker/core/event-manager.ts +159 -0
  171. package/src/components/datepicker/core/focus-manager.ts +201 -0
  172. package/src/components/datepicker/core/helpers.ts +231 -0
  173. package/src/components/datepicker/core/index.ts +9 -0
  174. package/src/components/datepicker/core/unified-state-manager.ts +459 -0
  175. package/src/components/datepicker/datepicker.css +429 -1
  176. package/src/components/datepicker/datepicker.ts +2538 -1277
  177. package/src/components/datepicker/index.ts +6 -8
  178. package/src/components/datepicker/ui/index.ts +7 -0
  179. package/src/components/datepicker/ui/input/dropdown.ts +552 -0
  180. package/src/components/datepicker/ui/input/index.ts +7 -0
  181. package/src/components/datepicker/ui/input/segmented-input.ts +638 -0
  182. package/src/components/datepicker/ui/renderers/__tests__/calendar-optimizations.test.ts +611 -0
  183. package/src/components/datepicker/ui/renderers/calendar.ts +530 -0
  184. package/src/components/datepicker/ui/renderers/footer.ts +43 -0
  185. package/src/components/datepicker/ui/renderers/header.ts +33 -0
  186. package/src/components/datepicker/ui/renderers/index.ts +9 -0
  187. package/src/components/datepicker/ui/renderers/time-picker.ts +438 -0
  188. package/src/components/datepicker/ui/templates/index.ts +6 -0
  189. package/src/components/datepicker/ui/templates/templates.ts +306 -0
  190. package/src/components/datepicker/utils/__tests__/date-formatters.test.ts +160 -0
  191. package/src/components/datepicker/utils/__tests__/date-utils-keys.test.ts +86 -0
  192. package/src/components/datepicker/utils/__tests__/date-utils-timezone.test.ts +215 -0
  193. package/src/components/datepicker/utils/date-formatters.ts +85 -0
  194. package/src/components/datepicker/utils/date-utils.ts +172 -0
  195. package/src/components/datepicker/utils/index.ts +8 -0
  196. package/src/components/datepicker/utils/time-utils.ts +221 -0
  197. package/src/index.ts +7 -1
  198. package/CONTRIBUTING.md +0 -101
  199. package/examples/datatable/checkbox-events-test.html +0 -400
  200. package/examples/datatable/credentials-test.html +0 -423
  201. package/examples/datatable/remote-checkbox-test.html +0 -365
  202. package/examples/datatable/sorting-test.html +0 -258
  203. package/examples/image-input/file-upload-example.html +0 -189
  204. package/examples/modal/persistent.html +0 -205
  205. package/examples/modal/remote-select-dropdown.html +0 -166
  206. package/examples/modal/select-dropdown-container.html +0 -129
  207. package/examples/select/avatar.html +0 -47
  208. package/examples/select/basic-usage.html +0 -39
  209. package/examples/select/country.html +0 -43
  210. package/examples/select/dark-mode.html +0 -93
  211. package/examples/select/description.html +0 -53
  212. package/examples/select/disable-option.html +0 -37
  213. package/examples/select/disable-select.html +0 -35
  214. package/examples/select/dropdowncontainer.html +0 -111
  215. package/examples/select/dynamic-methods.html +0 -273
  216. package/examples/select/formdata-remote.html +0 -161
  217. package/examples/select/global-config.html +0 -81
  218. package/examples/select/icon-multiple.html +0 -50
  219. package/examples/select/icon.html +0 -48
  220. package/examples/select/max-selection.html +0 -38
  221. package/examples/select/modal-container.html +0 -128
  222. package/examples/select/modal-positioning-test.html +0 -338
  223. package/examples/select/modal.html +0 -80
  224. package/examples/select/multiple.html +0 -40
  225. package/examples/select/native-selected.html +0 -64
  226. package/examples/select/placeholder.html +0 -40
  227. package/examples/select/remote-data-preselected.html +0 -283
  228. package/examples/select/remote-data.html +0 -38
  229. package/examples/select/search.html +0 -57
  230. package/examples/select/sizes.html +0 -94
  231. package/examples/select/tags-enhanced.html +0 -86
  232. package/examples/select/tags-icons.html +0 -57
  233. package/examples/select/template-customization.html +0 -61
  234. package/examples/sticky/README.md +0 -158
  235. package/examples/sticky/debug-sticky.html +0 -144
  236. package/examples/sticky/test-runner.html +0 -175
  237. package/examples/sticky/test-sticky-logic.js +0 -369
  238. package/examples/sticky/test-sticky-positioning.html +0 -386
  239. package/examples/toast/example.html +0 -479
  240. package/lib/cjs/components/datepicker/calendar.js +0 -1061
  241. package/lib/cjs/components/datepicker/calendar.js.map +0 -1
  242. package/lib/cjs/components/datepicker/config.js +0 -332
  243. package/lib/cjs/components/datepicker/config.js.map +0 -1
  244. package/lib/cjs/components/datepicker/dropdown.js +0 -635
  245. package/lib/cjs/components/datepicker/dropdown.js.map +0 -1
  246. package/lib/cjs/components/datepicker/events.js +0 -129
  247. package/lib/cjs/components/datepicker/events.js.map +0 -1
  248. package/lib/cjs/components/datepicker/keyboard.js +0 -536
  249. package/lib/cjs/components/datepicker/keyboard.js.map +0 -1
  250. package/lib/cjs/components/datepicker/locales.js +0 -78
  251. package/lib/cjs/components/datepicker/locales.js.map +0 -1
  252. package/lib/cjs/components/datepicker/templates.js +0 -403
  253. package/lib/cjs/components/datepicker/templates.js.map +0 -1
  254. package/lib/cjs/components/datepicker/types.js +0 -23
  255. package/lib/cjs/components/datepicker/types.js.map +0 -1
  256. package/lib/cjs/components/datepicker/utils.js +0 -524
  257. package/lib/cjs/components/datepicker/utils.js.map +0 -1
  258. package/lib/esm/components/datepicker/calendar.js +0 -1058
  259. package/lib/esm/components/datepicker/calendar.js.map +0 -1
  260. package/lib/esm/components/datepicker/config.js +0 -329
  261. package/lib/esm/components/datepicker/config.js.map +0 -1
  262. package/lib/esm/components/datepicker/dropdown.js +0 -632
  263. package/lib/esm/components/datepicker/dropdown.js.map +0 -1
  264. package/lib/esm/components/datepicker/events.js +0 -126
  265. package/lib/esm/components/datepicker/events.js.map +0 -1
  266. package/lib/esm/components/datepicker/keyboard.js +0 -533
  267. package/lib/esm/components/datepicker/keyboard.js.map +0 -1
  268. package/lib/esm/components/datepicker/locales.js +0 -74
  269. package/lib/esm/components/datepicker/locales.js.map +0 -1
  270. package/lib/esm/components/datepicker/templates.js +0 -390
  271. package/lib/esm/components/datepicker/templates.js.map +0 -1
  272. package/lib/esm/components/datepicker/types.js +0 -20
  273. package/lib/esm/components/datepicker/types.js.map +0 -1
  274. package/lib/esm/components/datepicker/utils.js +0 -508
  275. package/lib/esm/components/datepicker/utils.js.map +0 -1
  276. package/prettier.config.js +0 -9
  277. package/src/components/datepicker/calendar.ts +0 -1397
  278. package/src/components/datepicker/config.ts +0 -368
  279. package/src/components/datepicker/dropdown.ts +0 -757
  280. package/src/components/datepicker/events.ts +0 -149
  281. package/src/components/datepicker/keyboard.ts +0 -646
  282. package/src/components/datepicker/locales.ts +0 -80
  283. package/src/components/datepicker/templates.ts +0 -792
  284. package/src/components/datepicker/types.ts +0 -154
  285. package/src/components/datepicker/utils.ts +0 -631
  286. package/src/components/select/variants.css +0 -4
  287. package/tsconfig.json +0 -17
  288. package/webpack.config.js +0 -118
@@ -1,632 +0,0 @@
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
- /**
25
- * Class to manage focus within the dropdown
26
- */
27
- var FocusManager = /** @class */ (function () {
28
- function FocusManager(element) {
29
- this._focusableSelector = 'button:not([disabled]), [tabindex]:not([tabindex="-1"])';
30
- this._element = element;
31
- }
32
- /**
33
- * Get all visible focusable options
34
- */
35
- FocusManager.prototype.getVisibleOptions = function () {
36
- return Array.from(this._element.querySelectorAll(this._focusableSelector)).filter(function (el) {
37
- var element = el;
38
- return element.offsetParent !== null; // Only visible elements
39
- });
40
- };
41
- /**
42
- * Apply focus to an element
43
- */
44
- FocusManager.prototype.applyFocus = function (element) {
45
- if (element && typeof element.focus === 'function') {
46
- element.focus();
47
- }
48
- };
49
- /**
50
- * Focus next element
51
- */
52
- FocusManager.prototype.focusNext = function () {
53
- var options = this.getVisibleOptions();
54
- var currentFocused = document.activeElement;
55
- var nextIndex = 0;
56
- if (currentFocused) {
57
- var currentIndex = options.indexOf(currentFocused);
58
- nextIndex = currentIndex >= 0 ? (currentIndex + 1) % options.length : 0;
59
- }
60
- if (options.length > 0) {
61
- this.applyFocus(options[nextIndex]);
62
- }
63
- };
64
- /**
65
- * Focus previous element
66
- */
67
- FocusManager.prototype.focusPrevious = function () {
68
- var options = this.getVisibleOptions();
69
- var currentFocused = document.activeElement;
70
- var prevIndex = options.length - 1;
71
- if (currentFocused) {
72
- var currentIndex = options.indexOf(currentFocused);
73
- prevIndex =
74
- currentIndex >= 0
75
- ? (currentIndex - 1 + options.length) % options.length
76
- : prevIndex;
77
- }
78
- if (options.length > 0) {
79
- this.applyFocus(options[prevIndex]);
80
- }
81
- };
82
- /**
83
- * Scroll element into view
84
- */
85
- FocusManager.prototype.scrollIntoView = function (element) {
86
- if (element && typeof element.scrollIntoView === 'function') {
87
- element.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
88
- }
89
- };
90
- /**
91
- * Clean up resources
92
- */
93
- FocusManager.prototype.dispose = function () {
94
- // Nothing to clean up yet
95
- };
96
- return FocusManager;
97
- }());
98
- /**
99
- * Class to manage event listeners
100
- */
101
- var EventManager = /** @class */ (function () {
102
- function EventManager() {
103
- this._listeners = new Map();
104
- }
105
- /**
106
- * Add event listener and track it
107
- */
108
- EventManager.prototype.addListener = function (element, eventType, handler) {
109
- if (!this._listeners.has(element)) {
110
- this._listeners.set(element, new Map());
111
- }
112
- var elementListeners = this._listeners.get(element);
113
- if (!elementListeners.has(eventType)) {
114
- elementListeners.set(eventType, []);
115
- }
116
- var handlers = elementListeners.get(eventType);
117
- element.addEventListener(eventType, handler);
118
- handlers.push(handler);
119
- };
120
- /**
121
- * Remove all listeners for an element
122
- */
123
- EventManager.prototype.removeAllListeners = function (element) {
124
- if (this._listeners.has(element)) {
125
- var elementListeners = this._listeners.get(element);
126
- elementListeners.forEach(function (handlers, eventType) {
127
- handlers.forEach(function (handler) {
128
- element.removeEventListener(eventType, handler);
129
- });
130
- });
131
- this._listeners.delete(element);
132
- }
133
- };
134
- return EventManager;
135
- }());
136
- /**
137
- * Focus trap class to manage keyboard focus within the dropdown
138
- */
139
- var FocusTrap = /** @class */ (function () {
140
- /**
141
- * Constructor
142
- *
143
- * @param element - Element to trap focus within
144
- */
145
- function FocusTrap(element) {
146
- this._focusableElements = [];
147
- this._firstFocusableElement = null;
148
- this._lastFocusableElement = null;
149
- this._element = element;
150
- this._update();
151
- }
152
- /**
153
- * Update the focusable elements
154
- */
155
- FocusTrap.prototype.update = function () {
156
- this._update();
157
- };
158
- /**
159
- * Update the list of focusable elements
160
- */
161
- FocusTrap.prototype._update = function () {
162
- // Get all focusable elements
163
- var focusableElements = this._element.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
164
- // Convert to array and filter out disabled elements
165
- this._focusableElements = Array.from(focusableElements).filter(function (el) { return !el.hasAttribute('disabled'); });
166
- // Get first and last focusable elements
167
- this._firstFocusableElement = this._focusableElements[0] || null;
168
- this._lastFocusableElement =
169
- this._focusableElements[this._focusableElements.length - 1] || null;
170
- };
171
- /**
172
- * Handle tab key press to trap focus
173
- *
174
- * @param event - Keyboard event
175
- */
176
- FocusTrap.prototype.handleTab = function (event) {
177
- // If no focusable elements, do nothing
178
- if (!this._firstFocusableElement || !this._lastFocusableElement) {
179
- event.preventDefault();
180
- return;
181
- }
182
- var isTabPressed = event.key === 'Tab' || event.keyCode === 9;
183
- if (!isTabPressed)
184
- return;
185
- // Handle Shift+Tab to focus last element when on first
186
- if (event.shiftKey) {
187
- if (document.activeElement === this._firstFocusableElement) {
188
- this._lastFocusableElement.focus();
189
- event.preventDefault();
190
- }
191
- }
192
- else {
193
- // Handle Tab to focus first element when on last
194
- if (document.activeElement === this._lastFocusableElement) {
195
- this._firstFocusableElement.focus();
196
- event.preventDefault();
197
- }
198
- }
199
- };
200
- /**
201
- * Focus the first interactive element
202
- */
203
- FocusTrap.prototype.focusFirstElement = function () {
204
- if (this._firstFocusableElement) {
205
- this._firstFocusableElement.focus();
206
- }
207
- };
208
- return FocusTrap;
209
- }());
210
- /**
211
- * KTDatepickerDropdown
212
- *
213
- * A specialized dropdown implementation for the KTDatepicker component.
214
- * This module handles the dropdown functionality for the datepicker component,
215
- * including positioning, showing/hiding, and keyboard navigation.
216
- */
217
- var KTDatepickerDropdown = /** @class */ (function (_super) {
218
- __extends(KTDatepickerDropdown, _super);
219
- /**
220
- * Constructor
221
- * @param element The parent element (datepicker wrapper)
222
- * @param toggleElement The element that triggers the dropdown
223
- * @param dropdownElement The dropdown content element
224
- * @param config The configuration options
225
- */
226
- function KTDatepickerDropdown(element, toggleElement, dropdownElement, config) {
227
- var _this = _super.call(this) || this;
228
- _this._name = 'datepicker-dropdown';
229
- // State
230
- _this._isOpen = false;
231
- _this._isTransitioning = false;
232
- _this._popperInstance = null;
233
- _this._focusTrap = null;
234
- _this._activeElement = null;
235
- _this._element = element;
236
- _this._toggleElement = toggleElement;
237
- _this._dropdownElement = dropdownElement;
238
- _this._config = config;
239
- _this._eventManager = new EventManager();
240
- _this._focusManager = new FocusManager(dropdownElement);
241
- _this._setupEventListeners();
242
- return _this;
243
- }
244
- /**
245
- * Set up event listeners for the dropdown
246
- */
247
- KTDatepickerDropdown.prototype._setupEventListeners = function () {
248
- // Toggle click
249
- this._eventManager.addListener(this._toggleElement, 'click', this._handleToggleClick.bind(this));
250
- // Keyboard navigation
251
- this._eventManager.addListener(this._element, 'keydown', this._handleKeyDown.bind(this));
252
- // Close on outside click
253
- this._eventManager.addListener(document, 'click', this._handleOutsideClick.bind(this));
254
- };
255
- /**
256
- * Handle toggle element click
257
- */
258
- KTDatepickerDropdown.prototype._handleToggleClick = function (event) {
259
- event.preventDefault();
260
- event.stopPropagation();
261
- this.toggle();
262
- };
263
- /**
264
- * Handle keyboard events
265
- */
266
- KTDatepickerDropdown.prototype._handleKeyDown = function (event) {
267
- if (!this._isOpen)
268
- return;
269
- switch (event.key) {
270
- case 'Escape':
271
- event.preventDefault();
272
- this.close();
273
- this._toggleElement.focus();
274
- break;
275
- case 'ArrowDown':
276
- event.preventDefault();
277
- this._focusManager.focusNext();
278
- break;
279
- case 'ArrowUp':
280
- event.preventDefault();
281
- this._focusManager.focusPrevious();
282
- break;
283
- case 'Home':
284
- event.preventDefault();
285
- // Focus first visible option
286
- var firstOption = this._focusManager.getVisibleOptions()[0];
287
- if (firstOption) {
288
- this._focusManager.applyFocus(firstOption);
289
- this._focusManager.scrollIntoView(firstOption);
290
- }
291
- break;
292
- case 'End':
293
- event.preventDefault();
294
- // Focus last visible option
295
- var visibleOptions = this._focusManager.getVisibleOptions();
296
- var lastOption = visibleOptions[visibleOptions.length - 1];
297
- if (lastOption) {
298
- this._focusManager.applyFocus(lastOption);
299
- this._focusManager.scrollIntoView(lastOption);
300
- }
301
- break;
302
- }
303
- };
304
- /**
305
- * Handle clicks outside the dropdown
306
- */
307
- KTDatepickerDropdown.prototype._handleOutsideClick = function (event) {
308
- var _a;
309
- if (!this._isOpen)
310
- return;
311
- var target = event.target;
312
- if (!this._element.contains(target) &&
313
- !this._dropdownElement.contains(target)) {
314
- // Before closing, check if a range selection is in progress
315
- var datepickerElement = this._element.closest('[data-kt-datepicker]');
316
- if (datepickerElement) {
317
- // Get the state manager through the calendar instance or directly
318
- var stateManager = (_a = datepickerElement.instance) === null || _a === void 0 ? void 0 : _a._state;
319
- if (stateManager) {
320
- var state = stateManager.getState();
321
- var config = stateManager.getConfig();
322
- // If we're in range mode and range selection is in progress, don't close
323
- if (config.range && state.isRangeSelectionInProgress) {
324
- console.log('Outside click detected but range selection in progress - keeping dropdown open');
325
- return;
326
- }
327
- }
328
- }
329
- this.close();
330
- }
331
- };
332
- /**
333
- * Set width of dropdown based on toggle element
334
- */
335
- KTDatepickerDropdown.prototype._setDropdownWidth = function () {
336
- if (!this._dropdownElement || !this._toggleElement)
337
- return;
338
- // Get the datepicker configuration
339
- var datepickerElement = this._element.closest('[data-kt-datepicker]');
340
- var visibleMonths = 1;
341
- if (datepickerElement) {
342
- // Get visible months from config
343
- var instance = datepickerElement.instance;
344
- if (instance && instance._config) {
345
- visibleMonths = instance._config.visibleMonths || 1;
346
- }
347
- }
348
- // Calculate appropriate width based on number of visible months
349
- if (visibleMonths > 1) {
350
- // For multiple months, calculate a fixed width per month plus padding and gaps
351
- var monthWidth = 280; // Fixed width for each month
352
- var padding = 24; // Left/right padding (p-3 = 0.75rem × 2 × 16px = 24px)
353
- var spacing = 16 * (visibleMonths - 1); // Gap between months (gap-4 = 1rem × 16px)
354
- // Limit to showing max 3 months at once for UX (user can scroll to see more)
355
- var visibleWidth = Math.min(visibleMonths, 3);
356
- var totalWidth = monthWidth * visibleWidth + spacing + padding;
357
- // Set fixed width for the dropdown
358
- this._dropdownElement.style.width = "".concat(totalWidth, "px");
359
- this._dropdownElement.style.minWidth = "".concat(totalWidth, "px");
360
- }
361
- else {
362
- // For single month, use a fixed width that works well for most calendars
363
- this._dropdownElement.style.width = '332px'; // 280px calendar width + 24px padding + border
364
- this._dropdownElement.style.minWidth = '332px';
365
- }
366
- };
367
- /**
368
- * Initialize the Popper instance for dropdown positioning
369
- */
370
- KTDatepickerDropdown.prototype._initPopper = function () {
371
- // Destroy existing popper instance if it exists
372
- this._destroyPopper();
373
- // Default offset
374
- var offsetValue = '0, 5';
375
- // Get configuration options
376
- var placement = 'bottom-start';
377
- var strategy = 'absolute';
378
- var preventOverflow = true;
379
- var flip = true;
380
- // Create new popper instance
381
- this._popperInstance = createPopper(this._toggleElement, this._dropdownElement, {
382
- placement: placement,
383
- strategy: strategy,
384
- modifiers: [
385
- {
386
- name: 'offset',
387
- options: {
388
- offset: this._parseOffset(offsetValue),
389
- },
390
- },
391
- {
392
- name: 'preventOverflow',
393
- options: {
394
- boundary: 'viewport',
395
- altAxis: preventOverflow,
396
- },
397
- },
398
- {
399
- name: 'flip',
400
- options: {
401
- enabled: flip,
402
- fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],
403
- },
404
- },
405
- ],
406
- });
407
- };
408
- /**
409
- * Parse offset string into an array of numbers
410
- */
411
- KTDatepickerDropdown.prototype._parseOffset = function (offset) {
412
- return offset.split(',').map(function (value) { return parseInt(value.trim(), 10); });
413
- };
414
- /**
415
- * Destroy the Popper instance
416
- */
417
- KTDatepickerDropdown.prototype._destroyPopper = function () {
418
- if (this._popperInstance) {
419
- this._popperInstance.destroy();
420
- this._popperInstance = null;
421
- }
422
- };
423
- /**
424
- * Update dropdown position
425
- */
426
- KTDatepickerDropdown.prototype.updatePosition = function () {
427
- // Look for the display element rather than using the input directly
428
- var displayElement = this._element.querySelector('[data-kt-datepicker-display]');
429
- var triggerElement = displayElement || this._toggleElement;
430
- if (!triggerElement || !this._dropdownElement)
431
- return;
432
- // Reset position styles
433
- this._dropdownElement.style.top = '';
434
- this._dropdownElement.style.bottom = '';
435
- this._dropdownElement.style.left = '';
436
- this._dropdownElement.style.right = '';
437
- // Set width before positioning
438
- this._setDropdownWidth();
439
- // Get position information
440
- var triggerRect = triggerElement.getBoundingClientRect();
441
- var containerRect = this._element.getBoundingClientRect();
442
- var dropdownRect = this._dropdownElement.getBoundingClientRect();
443
- var viewportHeight = window.innerHeight;
444
- var viewportWidth = window.innerWidth;
445
- // Calculate available space below and above the trigger
446
- var spaceBelow = viewportHeight - triggerRect.bottom;
447
- var spaceAbove = triggerRect.top;
448
- // Calculate if dropdown would overflow horizontally
449
- var overflowRight = triggerRect.left + dropdownRect.width > viewportWidth;
450
- // Position dropdown
451
- this._dropdownElement.style.position = 'absolute';
452
- // Determine vertical position
453
- if (spaceBelow >= dropdownRect.height || spaceBelow >= spaceAbove) {
454
- // Position below the trigger
455
- this._dropdownElement.style.top = "".concat(triggerRect.height + 5, "px");
456
- }
457
- else {
458
- // Position above the trigger
459
- this._dropdownElement.style.bottom = "".concat(triggerRect.height + 5, "px");
460
- }
461
- // Determine horizontal position - handle potential overflow
462
- if (overflowRight) {
463
- // Align with right edge of trigger to prevent overflow
464
- var rightOffset = Math.max(0, dropdownRect.width - triggerRect.width);
465
- this._dropdownElement.style.right = "0px";
466
- }
467
- else {
468
- // Align with left edge of trigger
469
- this._dropdownElement.style.left = "0px";
470
- }
471
- };
472
- /**
473
- * Toggle the dropdown
474
- */
475
- KTDatepickerDropdown.prototype.toggle = function () {
476
- if (this._isOpen) {
477
- this.close();
478
- }
479
- else {
480
- this.open();
481
- }
482
- };
483
- /**
484
- * Open the dropdown
485
- */
486
- KTDatepickerDropdown.prototype.open = function () {
487
- var _this = this;
488
- if (this._isOpen || this._isTransitioning)
489
- return;
490
- // Fire before show event
491
- var beforeShowEvent = new CustomEvent('kt.datepicker.dropdown.show', {
492
- bubbles: true,
493
- cancelable: true,
494
- });
495
- this._element.dispatchEvent(beforeShowEvent);
496
- if (beforeShowEvent.defaultPrevented)
497
- return;
498
- // Begin opening transition
499
- this._isTransitioning = true;
500
- // Set dropdown visibility
501
- this._dropdownElement.classList.remove('hidden');
502
- this._dropdownElement.setAttribute('aria-hidden', 'false');
503
- // Set dropdown width
504
- this._setDropdownWidth();
505
- // Make sure the element is visible for transitioning
506
- KTDom.reflow(this._dropdownElement);
507
- // Apply z-index
508
- this._dropdownElement.style.zIndex = '1000';
509
- // Initialize popper for positioning
510
- this._initPopper();
511
- // Add active classes
512
- this._toggleElement.classList.add('ring', 'ring-blue-300');
513
- this._toggleElement.setAttribute('aria-expanded', 'true');
514
- // Start transition
515
- this._dropdownElement.classList.remove('opacity-0', 'translate-y-2');
516
- this._dropdownElement.classList.add('opacity-100', 'translate-y-0');
517
- // Handle transition end
518
- KTDom.transitionEnd(this._dropdownElement, function () {
519
- _this._isTransitioning = false;
520
- _this._isOpen = true;
521
- // Focus the first interactive element
522
- _this._focusFirstInteractiveElement();
523
- // Fire after show event
524
- var afterShowEvent = new CustomEvent('kt.datepicker.dropdown.shown', {
525
- bubbles: true,
526
- });
527
- _this._element.dispatchEvent(afterShowEvent);
528
- });
529
- };
530
- /**
531
- * Focus the first interactive element in the dropdown
532
- */
533
- KTDatepickerDropdown.prototype._focusFirstInteractiveElement = function () {
534
- // Priority of elements to focus:
535
- // 1. A "Today" button if available
536
- // 2. The first day in the current month
537
- // 3. Any other focusable element
538
- // Find the Today button using standard DOM selectors
539
- var todayBtn = null;
540
- var buttons = this._dropdownElement.querySelectorAll('button');
541
- for (var i = 0; i < buttons.length; i++) {
542
- if (buttons[i].textContent && buttons[i].textContent.trim() === 'Today') {
543
- todayBtn = buttons[i];
544
- break;
545
- }
546
- }
547
- if (todayBtn) {
548
- todayBtn.focus();
549
- return;
550
- }
551
- var currentMonthDay = this._dropdownElement.querySelector('button[data-date]:not(.text-gray-400)');
552
- if (currentMonthDay) {
553
- currentMonthDay.focus();
554
- return;
555
- }
556
- var firstOption = this._focusManager.getVisibleOptions()[0];
557
- if (firstOption) {
558
- this._focusManager.applyFocus(firstOption);
559
- }
560
- };
561
- /**
562
- * Close the dropdown
563
- */
564
- KTDatepickerDropdown.prototype.close = function () {
565
- var _this = this;
566
- if (!this._isOpen || this._isTransitioning)
567
- return;
568
- // Fire before hide event
569
- var beforeHideEvent = new CustomEvent('kt.datepicker.dropdown.hide', {
570
- bubbles: true,
571
- cancelable: true,
572
- });
573
- this._element.dispatchEvent(beforeHideEvent);
574
- if (beforeHideEvent.defaultPrevented)
575
- return;
576
- // Begin closing transition
577
- this._isTransitioning = true;
578
- // Start transition
579
- this._dropdownElement.classList.add('opacity-0', 'translate-y-2');
580
- this._dropdownElement.classList.remove('opacity-100', 'translate-y-0');
581
- // Handle transition end
582
- KTDom.transitionEnd(this._dropdownElement, function () {
583
- // Remove active classes
584
- _this._dropdownElement.classList.add('hidden');
585
- _this._dropdownElement.setAttribute('aria-hidden', 'true');
586
- // Reset styles
587
- _this._dropdownElement.style.opacity = '';
588
- _this._dropdownElement.style.transform = '';
589
- _this._dropdownElement.style.zIndex = '';
590
- // Destroy popper
591
- _this._destroyPopper();
592
- // Update state
593
- _this._isTransitioning = false;
594
- _this._isOpen = false;
595
- // Fire after hide event
596
- var afterHideEvent = new CustomEvent('kt.datepicker.dropdown.hidden', {
597
- bubbles: true,
598
- });
599
- _this._element.dispatchEvent(afterHideEvent);
600
- });
601
- };
602
- /**
603
- * Check if dropdown is open
604
- */
605
- KTDatepickerDropdown.prototype.isOpen = function () {
606
- return this._isOpen;
607
- };
608
- /**
609
- * Clean up component
610
- */
611
- KTDatepickerDropdown.prototype.dispose = function () {
612
- // Destroy popper
613
- this._destroyPopper();
614
- // Remove event listeners
615
- this._eventManager.removeAllListeners(this._element);
616
- this._eventManager.removeAllListeners(this._toggleElement);
617
- this._eventManager.removeAllListeners(document);
618
- // Clean up focus manager
619
- if (this._focusManager &&
620
- typeof this._focusManager.dispose === 'function') {
621
- this._focusManager.dispose();
622
- }
623
- // Clean up state
624
- this._isOpen = false;
625
- this._isTransitioning = false;
626
- // Remove data reference
627
- KTData.remove(this._element, this._name);
628
- };
629
- return KTDatepickerDropdown;
630
- }(KTComponent));
631
- export { KTDatepickerDropdown };
632
- //# sourceMappingURL=dropdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../../src/components/datepicker/dropdown.ts"],"names":[],"mappings":"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"}