@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
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ /*
3
+ * templates.ts - Unified template system for KTDatepicker
4
+ * Consolidates all template functionality including default templates, merging logic,
5
+ * rendering utilities, and template management into a single, unified system.
6
+ */
7
+ var __assign = (this && this.__assign) || function () {
8
+ __assign = Object.assign || function(t) {
9
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
10
+ s = arguments[i];
11
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12
+ t[p] = s[p];
13
+ }
14
+ return t;
15
+ };
16
+ return __assign.apply(this, arguments);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.TemplateRenderer = exports.defaultTemplates = void 0;
20
+ exports.mergeTemplates = mergeTemplates;
21
+ exports.getMergedTemplates = getMergedTemplates;
22
+ exports.renderTemplateString = renderTemplateString;
23
+ exports.mergeClassData = mergeClassData;
24
+ exports.isTemplateFunction = isTemplateFunction;
25
+ exports.renderTemplateToDOM = renderTemplateToDOM;
26
+ exports.createTemplateRenderer = createTemplateRenderer;
27
+ exports.getTemplateStrings = getTemplateStrings;
28
+ // Default template strings for all UI fragments
29
+ exports.defaultTemplates = {
30
+ // Add role="dialog" and aria-modal to the dropdown container
31
+ container: "<div data-kt-datepicker-container {{class}}></div>",
32
+ header: "<div data-kt-datepicker-header {{class}}\">{{prevButton}}<span data-kt-datepicker-month-year>{{month}} {{year}}</span>{{nextButton}}</div>",
33
+ footer: "<div data-kt-datepicker-footer {{class}}\">{{todayButton}} {{clearButton}} {{applyButton}}</div>",
34
+ // Add role="grid" and aria-label to the calendar grid
35
+ calendarGrid: "<table data-kt-datepicker-calendar-grid role=\"grid\" aria-label=\"Calendar\" aria-readonly=\"true\" {{class}}>{{calendar}}</table>",
36
+ // Add role="gridcell" to dayCell, aria-selected, and tabindex for keyboard nav
37
+ dayCell: "<td data-kt-datepicker-day role=\"gridcell\" {{attributes}} {{class}}><button type=\"button\" data-day=\"{{day}}\" aria-label=\"Select {{day}}\" tabindex=\"-1\">{{day}}</button></td>",
38
+ // Month/year selectors (add aria-live for dynamic updates)
39
+ monthYearSelect: "<div data-kt-datepicker-monthyear-select aria-live=\"polite\" {{class}}>{{monthSelect}} {{yearSelect}}</div>",
40
+ monthSelection: "<div data-kt-datepicker-month-selection {{class}}>{{months}}</div>",
41
+ yearSelection: "<div data-kt-datepicker-year-selection {{class}}>{{years}}</div>",
42
+ inputWrapper: "<div data-kt-datepicker-input-wrapper class=\"flex items-center {{class}}\">{{input}} {{icon}}</div>",
43
+ segmentedDateInput: "<div data-kt-datepicker-segmented-input class=\"flex items-center {{class}}\">{{segments}}</div>",
44
+ segmentedDateRangeInput: "<div data-kt-datepicker-segmented-range-input class=\"flex items-center {{class}}\">{{start}}{{separator}}{{end}}</div>",
45
+ /**
46
+ * Template for a single date segment (e.g., day, month, year)
47
+ * Placeholders: segmentType, segmentValue, ariaLabel, ariaValueNow, ariaValueText, ariaValueMin, ariaValueMax, tabindex, contenteditable
48
+ */
49
+ dateSegment: "<span data-segment=\"{{segmentType}}\" role=\"spinbutton\" aria-label=\"{{ariaLabel}}\" aria-valuenow=\"{{ariaValueNow}}\" aria-valuetext=\"{{ariaValueText}}\" aria-valuemin=\"{{ariaValueMin}}\" aria-valuemax=\"{{ariaValueMax}}\" tabindex=\"{{tabindex}}\" contenteditable=\"{{contenteditable}}\" {{class}}>{{segmentValue}}</span>",
50
+ /**
51
+ * Template for a segment separator (e.g., / or space)
52
+ * Placeholders: separator
53
+ */
54
+ segmentSeparator: "<span data-segment-separator {{class}}>{{separator}}</span>",
55
+ placeholder: "<span data-kt-datepicker-placeholder {{class}}>{{placeholder}}</span>",
56
+ displayWrapper: "<div data-kt-datepicker-display-wrapper {{class}}>{{value}}</div>",
57
+ displayElement: "<span data-kt-datepicker-display-element {{class}}>{{value}}</span>",
58
+ timePanel: "<div data-kt-datepicker-time-panel {{class}}>{{hours}}:{{minutes}}:{{seconds}} {{amPm}}</div>",
59
+ multiDateTag: "<span data-kt-datepicker-multidate-tag {{class}}>{{date}} <button>{{removeButton}}</button></span>",
60
+ emptyState: "<div data-kt-datepicker-empty {{class}}>{{message}}</div>",
61
+ // Add aria-haspopup and aria-expanded to calendar button
62
+ calendarButton: "<button type=\"button\" data-kt-datepicker-calendar-btn aria-label=\"Open calendar\" aria-haspopup=\"dialog\" aria-expanded=\"false\" {{class}}>\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"/>\n <path d=\"M16 2v4M8 2v4M3 10h18\"/>\n </svg>\n </button>",
63
+ // Add role="dialog" and aria-modal to dropdown
64
+ dropdown: "<div data-kt-datepicker-dropdown role=\"dialog\" aria-modal=\"true\" aria-label=\"Date picker\" class=\"hidden {{class}}\"></div>",
65
+ prevButton: "<button type=\"button\" data-kt-datepicker-prev aria-label=\"Previous month\" {{class}}>\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\"/>\n </svg>\n </button>",
66
+ nextButton: "<button type=\"button\" data-kt-datepicker-next aria-label=\"Next month\" {{class}}>\n <svg width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\"/>\n </svg>\n </button>",
67
+ // Add role="row" to calendar table rows
68
+ calendarTable: "<table data-kt-datepicker-calendar-table role=\"grid\" aria-label=\"Calendar\" aria-readonly=\"true\" {{class}}><thead><tr role=\"row\">\n <th class=\"py-1 px-1 text-xs font-semibold text-gray-500 dark:text-gray-400\">{{sunday}}</th>\n <th class=\"py-1 px-1 text-xs font-semibold text-gray-500 dark:text-gray-400\">{{monday}}</th>\n <th class=\"py-1 px-1 text-xs font-semibold text-gray-500 dark:text-gray-400\">{{tuesday}}</th>\n <th class=\"py-1 px-1 text-xs font-semibold text-gray-500 dark:text-gray-400\">{{wednesday}}</th>\n <th class=\"py-1 px-1 text-xs font-semibold text-gray-500 dark:text-gray-400\">{{thursday}}</th>\n <th class=\"py-1 px-1 text-xs font-semibold text-gray-500 dark:text-gray-400\">{{friday}}</th>\n <th class=\"py-1 px-1 text-xs font-semibold text-gray-500 dark:text-gray-400\">{{saturday}}</th>\n </tr></thead>{{body}}</table>",
69
+ calendarBody: "<tbody data-kt-datepicker-calendar-body {{class}}>{{rows}}</tbody>",
70
+ calendarRow: "<tr data-kt-datepicker-calendar-row role=\"row\" {{class}}>{{cells}}</tr>",
71
+ todayButton: "<button type=\"button\" data-kt-datepicker-today {{class}}>Today</button>",
72
+ clearButton: "<button type=\"button\" data-kt-datepicker-clear {{class}}>Clear</button>",
73
+ applyButton: "<button type=\"button\" data-kt-datepicker-apply {{class}}>Apply</button>",
74
+ /**
75
+ * Container for multiple calendar months (horizontal multi-month view)
76
+ */
77
+ multiMonthContainer: "<div data-kt-datepicker-multimonth-container class=\"flex flex-col md:flex-row gap-4 {{class}}\">{{calendars}}</div>",
78
+ // Time picker templates
79
+ timePickerWrapper: "<div data-kt-datepicker-time-picker {{class}}>{{timeDisplay}} {{timeControls}}</div>",
80
+ timeDisplay: "<div data-kt-datepicker-time-display {{class}}>{{timeValue}}</div>",
81
+ timeControls: "<div data-kt-datepicker-time-controls {{class}}>{{timeUnits}} {{ampmControl}}</div>",
82
+ timeUnit: "<div data-kt-datepicker-time-unit data-kt-datepicker-time-unit=\"{{unitType}}\" {{class}}>{{upButton}} {{valueDisplay}} {{downButton}}</div>",
83
+ timeUpButton: "<button type=\"button\" data-kt-datepicker-time-up aria-label=\"Increment {{unitType}}\" {{class}} {{disabled}}>\u25B2</button>",
84
+ timeDownButton: "<button type=\"button\" data-kt-datepicker-time-down aria-label=\"Decrement {{unitType}}\" {{class}} {{disabled}}>\u25BC</button>",
85
+ timeValue: "<span data-kt-datepicker-time-value {{class}}>{{value}}</span>",
86
+ timeSeparator: "<span data-kt-datepicker-time-separator {{class}}>{{separator}}</span>",
87
+ ampmControl: "<div data-kt-datepicker-ampm-control {{class}}>{{ampmButton}}</div>",
88
+ ampmButton: "<button type=\"button\" data-kt-datepicker-ampm-button aria-label=\"Toggle AM/PM\" {{class}} {{disabled}}>{{ampmValue}}</button>",
89
+ /**
90
+ * Panel wrapper for header + calendar
91
+ */
92
+ panel: "<div data-kt-datepicker-panel {{class}}>{{header}}{{calendar}}</div>",
93
+ /**
94
+ * Live region for accessibility announcements
95
+ */
96
+ liveRegion: "<div data-kt-datepicker-live aria-live=\"polite\" {{class}}></div>",
97
+ /**
98
+ * Container for range input start date segment
99
+ */
100
+ rangeStartContainer: "<div data-kt-datepicker-segmented-start {{class}}></div>",
101
+ /**
102
+ * Container for range input end date segment
103
+ */
104
+ rangeEndContainer: "<div data-kt-datepicker-segmented-end {{class}}></div>",
105
+ };
106
+ /**
107
+ * Merges default templates with user overrides.
108
+ * User overrides take precedence.
109
+ */
110
+ function mergeTemplates(defaults, overrides) {
111
+ return __assign(__assign({}, defaults), (overrides || {}));
112
+ }
113
+ /**
114
+ * Merges default, config, and user templates (string or function)
115
+ * Precedence: default < config < user
116
+ */
117
+ function getMergedTemplates(configTemplates, userTemplates) {
118
+ return __assign(__assign(__assign({}, exports.defaultTemplates), (configTemplates || {})), (userTemplates || {}));
119
+ }
120
+ /**
121
+ * Renders a template string with data using {{key}} placeholders.
122
+ * Enhanced to handle class placeholders specifically.
123
+ */
124
+ function renderTemplateString(template, data) {
125
+ return template.replace(/{{(\w+)}}/g, function (_, key) {
126
+ var value = data[key];
127
+ if (value !== undefined) {
128
+ return String(value);
129
+ }
130
+ return '';
131
+ });
132
+ }
133
+ /**
134
+ * Merges class data with template data for rendering.
135
+ * Extracts class for specific template key from config classes object.
136
+ */
137
+ function mergeClassData(templateKey, templateData, configClasses) {
138
+ var classValue = (configClasses === null || configClasses === void 0 ? void 0 : configClasses[templateKey]) || '';
139
+ return __assign(__assign({}, templateData), { class: classValue });
140
+ }
141
+ /**
142
+ * Checks if a template is a function.
143
+ */
144
+ function isTemplateFunction(tpl) {
145
+ return typeof tpl === 'function';
146
+ }
147
+ /**
148
+ * Renders a template string with data and returns a DocumentFragment.
149
+ * Usage: const frag = renderTemplateToDOM(template, data)
150
+ */
151
+ function renderTemplateToDOM(template, data) {
152
+ if (data === void 0) { data = {}; }
153
+ var html = renderTemplateString(template, data);
154
+ var frag = document.createDocumentFragment();
155
+ var temp = document.createElement('div');
156
+ temp.innerHTML = html;
157
+ while (temp.firstChild) {
158
+ frag.appendChild(temp.firstChild);
159
+ }
160
+ return frag;
161
+ }
162
+ /**
163
+ * Unified template renderer for all datepicker UI components
164
+ * Ensures consistent template usage and eliminates scattered rendering logic
165
+ */
166
+ var TemplateRenderer = /** @class */ (function () {
167
+ function TemplateRenderer(templates) {
168
+ this._templates = templates;
169
+ }
170
+ /**
171
+ * Render a template with data and return HTML string
172
+ */
173
+ TemplateRenderer.prototype.renderTemplateString = function (options) {
174
+ var templateKey = options.templateKey, data = options.data, configClasses = options.configClasses, fallbackTemplate = options.fallbackTemplate;
175
+ // Get template from template set
176
+ var template = this._templates[templateKey];
177
+ // Use fallback if template not found
178
+ if (!template && fallbackTemplate) {
179
+ template = fallbackTemplate;
180
+ }
181
+ // Validate template exists
182
+ if (!template) {
183
+ throw new Error("Template not found for key: ".concat(templateKey));
184
+ }
185
+ // Merge class data
186
+ var mergedData = mergeClassData(templateKey, data, configClasses);
187
+ // Render template
188
+ if (isTemplateFunction(template)) {
189
+ return template(mergedData);
190
+ }
191
+ else {
192
+ return renderTemplateString(template, mergedData);
193
+ }
194
+ };
195
+ /**
196
+ * Render a template with data and return HTMLElement
197
+ */
198
+ TemplateRenderer.prototype.renderTemplateToElement = function (options) {
199
+ var html = this.renderTemplateString(options);
200
+ var fragment = renderTemplateToDOM(html);
201
+ var element = fragment.firstElementChild;
202
+ if (!element) {
203
+ throw new Error("Failed to render template to element for key: ".concat(options.templateKey));
204
+ }
205
+ return element;
206
+ };
207
+ /**
208
+ * Render a template with data and return DocumentFragment
209
+ */
210
+ TemplateRenderer.prototype.renderTemplateToFragment = function (options) {
211
+ var html = this.renderTemplateString(options);
212
+ return renderTemplateToDOM(html);
213
+ };
214
+ /**
215
+ * Check if a template exists
216
+ */
217
+ TemplateRenderer.prototype.hasTemplate = function (templateKey) {
218
+ return !!this._templates[templateKey];
219
+ };
220
+ /**
221
+ * Get template by key
222
+ */
223
+ TemplateRenderer.prototype.getTemplate = function (templateKey) {
224
+ return this._templates[templateKey];
225
+ };
226
+ /**
227
+ * Update templates
228
+ */
229
+ TemplateRenderer.prototype.updateTemplates = function (templates) {
230
+ this._templates = templates;
231
+ };
232
+ /**
233
+ * Get all templates
234
+ */
235
+ TemplateRenderer.prototype.getTemplates = function () {
236
+ return __assign({}, this._templates);
237
+ };
238
+ return TemplateRenderer;
239
+ }());
240
+ exports.TemplateRenderer = TemplateRenderer;
241
+ /**
242
+ * Factory function to create a template renderer
243
+ */
244
+ function createTemplateRenderer(templates) {
245
+ return new TemplateRenderer(templates);
246
+ }
247
+ /**
248
+ * Returns the merged template set for a given config.
249
+ */
250
+ function getTemplateStrings(config) {
251
+ return mergeTemplates(exports.defaultTemplates, config === null || config === void 0 ? void 0 : config.templates);
252
+ }
253
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../../../src/components/datepicker/ui/templates/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ /*
3
+ * date-formatters.ts - Date formatting and comparison utilities for KTDatepicker
4
+ * Provides pure utility functions for date formatting, comparison, and normalization.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.formatDate = formatDate;
8
+ exports.isSameDay = isSameDay;
9
+ exports.normalizeDateToMidnight = normalizeDateToMidnight;
10
+ /**
11
+ * Formats a Date object according to the provided format string.
12
+ *
13
+ * Supported tokens:
14
+ * yyyy - 4-digit year
15
+ * yy - 2-digit year
16
+ * MM - 2-digit month (01-12)
17
+ * M - 1/2-digit month (1-12)
18
+ * dd - 2-digit day (01-31)
19
+ * d - 1/2-digit day (1-31)
20
+ * HH - 2-digit hour (00-23)
21
+ * H - 1/2-digit hour (0-23)
22
+ * mm - 2-digit minute (00-59)
23
+ * m - 1/2-digit minute (0-59)
24
+ * ss - 2-digit second (00-59)
25
+ * s - 1/2-digit second (0-59)
26
+ * a - AM/PM indicator
27
+ *
28
+ * @param date Date object to format
29
+ * @param format Format string with tokens
30
+ * @returns Formatted date string, or empty string if date is invalid
31
+ *
32
+ * @example
33
+ * formatDate(new Date(2024, 0, 15), 'yyyy-MM-dd') // Returns "2024-01-15"
34
+ * formatDate(new Date(2024, 0, 15, 14, 30), 'HH:mm') // Returns "14:30"
35
+ */
36
+ function formatDate(date, format) {
37
+ if (!(date instanceof Date) || isNaN(date.getTime()))
38
+ return '';
39
+ return format
40
+ .replace(/yyyy/g, date.getFullYear().toString())
41
+ .replace(/yy/g, date.getFullYear().toString().slice(-2))
42
+ .replace(/MM/g, String(date.getMonth() + 1).padStart(2, '0'))
43
+ .replace(/M(?![a-zA-Z])/g, String(date.getMonth() + 1))
44
+ .replace(/dd/g, String(date.getDate()).padStart(2, '0'))
45
+ .replace(/d(?![a-zA-Z])/g, String(date.getDate()))
46
+ .replace(/HH/g, String(date.getHours()).padStart(2, '0'))
47
+ .replace(/H(?![a-zA-Z])/g, String(date.getHours()))
48
+ .replace(/mm/g, String(date.getMinutes()).padStart(2, '0'))
49
+ .replace(/m(?![a-zA-Z])/g, String(date.getMinutes()))
50
+ .replace(/ss/g, String(date.getSeconds()).padStart(2, '0'))
51
+ .replace(/s(?![a-zA-Z])/g, String(date.getSeconds()))
52
+ .replace(/a/g, date.getHours() >= 12 ? 'PM' : 'AM');
53
+ }
54
+ /**
55
+ * Checks if two dates represent the same calendar day.
56
+ * Compares year, month, and day components, ignoring time.
57
+ *
58
+ * @param a First date to compare
59
+ * @param b Second date to compare
60
+ * @returns True if both dates represent the same day, false otherwise
61
+ *
62
+ * @example
63
+ * isSameDay(new Date(2024, 0, 15, 10, 30), new Date(2024, 0, 15, 14, 45)) // Returns true
64
+ * isSameDay(new Date(2024, 0, 15), new Date(2024, 0, 16)) // Returns false
65
+ */
66
+ function isSameDay(a, b) {
67
+ return a.getFullYear() === b.getFullYear() &&
68
+ a.getMonth() === b.getMonth() &&
69
+ a.getDate() === b.getDate();
70
+ }
71
+ /**
72
+ * Normalizes a date to local midnight (00:00:00) in the local timezone.
73
+ * Useful for date-only comparisons where time components should be ignored.
74
+ *
75
+ * @param date Date object to normalize
76
+ * @returns New Date object set to local midnight (00:00:00)
77
+ *
78
+ * @example
79
+ * const date = new Date(2024, 0, 15, 14, 30, 45);
80
+ * const normalized = normalizeDateToMidnight(date);
81
+ * // normalized represents 2024-01-15 00:00:00 in local timezone
82
+ */
83
+ function normalizeDateToMidnight(date) {
84
+ var normalized = new Date(date);
85
+ normalized.setHours(0, 0, 0, 0);
86
+ return normalized;
87
+ }
88
+ //# sourceMappingURL=date-formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-formatters.js","sourceRoot":"","sources":["../../../../../src/components/datepicker/utils/date-formatters.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA4BH,gCAgBC;AAcD,8BAIC;AAcD,0DAIC;AA9ED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,UAAU,CAAC,IAAU,EAAE,MAAc;IACpD,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAChE,OAAO,MAAM;SACX,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC/C,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC5D,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;SACtD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACvD,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SACjD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACxD,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SAClD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC1D,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACpD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC1D,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACpD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,SAAS,CAAC,CAAO,EAAE,CAAO;IACzC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE;QACzC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC7B,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,uBAAuB,CAAC,IAAU;IACjD,IAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,OAAO,UAAU,CAAC;AACnB,CAAC"}
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ /*
3
+ * date-utils.ts - Shared date parsing/formatting utilities for KTDatepicker
4
+ * Exports parseDateFromFormat for use in datepicker and segmented input.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.parseDateFromFormat = parseDateFromFormat;
8
+ exports.getSegmentOrderFromFormat = getSegmentOrderFromFormat;
9
+ exports.formatDateToLocalString = formatDateToLocalString;
10
+ exports.normalizeDateToLocalMidnight = normalizeDateToLocalMidnight;
11
+ exports.isSameLocalDay = isSameLocalDay;
12
+ exports.parseLocalDate = parseLocalDate;
13
+ exports.getDateKey = getDateKey;
14
+ exports.isSameDayByKey = isSameDayByKey;
15
+ /**
16
+ * Parses a date string according to a format string (supports yyyy, yy, MM, M, dd, d).
17
+ * @param str Date string
18
+ * @param format Format string
19
+ * @returns Date object or null if parsing fails
20
+ */
21
+ function parseDateFromFormat(str, format) {
22
+ if (!str || !format)
23
+ return null;
24
+ // Supported tokens: yyyy, yy, MM, M, dd, d
25
+ var tokenRegex = /(yyyy|yy|MM|M|dd|d)/g;
26
+ var tokens = [];
27
+ var regexStr = '';
28
+ var lastIndex = 0;
29
+ var match;
30
+ while ((match = tokenRegex.exec(format)) !== null) {
31
+ // Add any literal text between tokens
32
+ if (match.index > lastIndex) {
33
+ regexStr += format.slice(lastIndex, match.index).replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
34
+ }
35
+ tokens.push(match[0]);
36
+ switch (match[0]) {
37
+ case 'yyyy':
38
+ regexStr += '(\\d{4})';
39
+ break;
40
+ case 'yy':
41
+ regexStr += '(\\d{2})';
42
+ break;
43
+ case 'MM':
44
+ regexStr += '(\\d{2})';
45
+ break;
46
+ case 'M':
47
+ regexStr += '(\\d{1,2})';
48
+ break;
49
+ case 'dd':
50
+ regexStr += '(\\d{2})';
51
+ break;
52
+ case 'd':
53
+ regexStr += '(\\d{1,2})';
54
+ break;
55
+ }
56
+ lastIndex = match.index + match[0].length;
57
+ }
58
+ // Add any trailing literal text
59
+ if (lastIndex < format.length) {
60
+ regexStr += format.slice(lastIndex).replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
61
+ }
62
+ var regex = new RegExp('^' + regexStr + '$');
63
+ var matchResult = regex.exec(str);
64
+ if (!matchResult)
65
+ return null;
66
+ var year = 1970, month = 1, day = 1;
67
+ var matchIdx = 1;
68
+ for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {
69
+ var token = tokens_1[_i];
70
+ var val = matchResult[matchIdx++] || '';
71
+ switch (token) {
72
+ case 'yyyy':
73
+ year = parseInt(val, 10);
74
+ break;
75
+ case 'yy':
76
+ year = 2000 + parseInt(val, 10);
77
+ break;
78
+ case 'MM':
79
+ case 'M':
80
+ month = parseInt(val, 10);
81
+ break;
82
+ case 'dd':
83
+ case 'd':
84
+ day = parseInt(val, 10);
85
+ break;
86
+ }
87
+ }
88
+ return new Date(year, month - 1, day);
89
+ }
90
+ /**
91
+ * Extracts segment order from a format string for use in segmented input.
92
+ * @param format Format string (e.g., 'dd/MM/yyyy', 'yyyy-MM-dd')
93
+ * @returns Array of segment types in the order they appear in the format
94
+ */
95
+ function getSegmentOrderFromFormat(format) {
96
+ if (!format)
97
+ return ['month', 'day', 'year']; // Default fallback
98
+ var segments = [];
99
+ var tokenRegex = /(yyyy|yy|MM|M|dd|d)/g;
100
+ var match;
101
+ while ((match = tokenRegex.exec(format)) !== null) {
102
+ switch (match[0]) {
103
+ case 'yyyy':
104
+ case 'yy':
105
+ segments.push('year');
106
+ break;
107
+ case 'MM':
108
+ case 'M':
109
+ segments.push('month');
110
+ break;
111
+ case 'dd':
112
+ case 'd':
113
+ segments.push('day');
114
+ break;
115
+ }
116
+ }
117
+ // Remove duplicates while preserving order
118
+ var uniqueSegments = segments.filter(function (segment, index) { return segments.indexOf(segment) === index; });
119
+ // Ensure we have all required segments, add missing ones at the end
120
+ var requiredSegments = ['day', 'month', 'year'];
121
+ requiredSegments.forEach(function (segment) {
122
+ if (!uniqueSegments.includes(segment)) {
123
+ uniqueSegments.push(segment);
124
+ }
125
+ });
126
+ return uniqueSegments;
127
+ }
128
+ /**
129
+ * Formats a date to a local timezone string in YYYY-MM-DD format.
130
+ * Uses local timezone components to prevent date shifts from UTC conversion.
131
+ * @param date Date object to format
132
+ * @returns Date string in YYYY-MM-DD format using local timezone
133
+ */
134
+ function formatDateToLocalString(date) {
135
+ var year = date.getFullYear();
136
+ var month = String(date.getMonth() + 1).padStart(2, '0');
137
+ var day = String(date.getDate()).padStart(2, '0');
138
+ return "".concat(year, "-").concat(month, "-").concat(day);
139
+ }
140
+ /**
141
+ * Normalizes a date to local midnight (00:00:00) in the local timezone.
142
+ * Useful for date-only comparisons where time components should be ignored.
143
+ * @param date Date object to normalize
144
+ * @returns New Date object set to local midnight
145
+ */
146
+ function normalizeDateToLocalMidnight(date) {
147
+ var normalized = new Date(date);
148
+ normalized.setHours(0, 0, 0, 0);
149
+ return normalized;
150
+ }
151
+ /**
152
+ * Checks if two dates represent the same calendar day in local timezone.
153
+ * Compares year, month, and day components, ignoring time.
154
+ * @param a First date
155
+ * @param b Second date
156
+ * @returns True if both dates represent the same day in local timezone
157
+ */
158
+ function isSameLocalDay(a, b) {
159
+ return a.getFullYear() === b.getFullYear() &&
160
+ a.getMonth() === b.getMonth() &&
161
+ a.getDate() === b.getDate();
162
+ }
163
+ /**
164
+ * Parses a date string (YYYY-MM-DD format) into a Date object at local midnight.
165
+ * Creates a local timezone date to avoid timezone-related date shifts.
166
+ * @param dateStr Date string in YYYY-MM-DD format
167
+ * @returns Date object representing the date at local midnight
168
+ */
169
+ function parseLocalDate(dateStr) {
170
+ // Parse YYYY-MM-DD string and create local date at midnight
171
+ var _a = dateStr.split('-').map(Number), year = _a[0], month = _a[1], day = _a[2];
172
+ return new Date(year, month - 1, day, 0, 0, 0, 0);
173
+ }
174
+ /**
175
+ * Converts a date to a numeric key for O(1) date comparisons.
176
+ * Format: year * 10000 + month * 100 + day
177
+ * This enables efficient Set/Map lookups for date matching.
178
+ * @param date Date object to convert
179
+ * @returns Numeric key representing the date (e.g., 20241225 for Dec 25, 2024)
180
+ */
181
+ function getDateKey(date) {
182
+ return date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate();
183
+ }
184
+ /**
185
+ * Checks if two dates have the same date key (same calendar day).
186
+ * Optimized version using numeric keys for O(1) comparison.
187
+ * @param a First date
188
+ * @param b Second date
189
+ * @returns True if both dates have the same date key
190
+ */
191
+ function isSameDayByKey(a, b) {
192
+ return getDateKey(a) === getDateKey(b);
193
+ }
194
+ //# sourceMappingURL=date-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-utils.js","sourceRoot":"","sources":["../../../../../src/components/datepicker/utils/date-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /*
3
+ * utils/index.ts - Utility module exports
4
+ * Provides date and time utility functions for KTDatepicker
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ __exportStar(require("./date-utils"), exports);
22
+ __exportStar(require("./date-formatters"), exports);
23
+ __exportStar(require("./time-utils"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/datepicker/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,+CAA6B;AAC7B,oDAAkC;AAClC,+CAA6B"}