@keenthemes/ktui 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/dist/ktui.js +16038 -17101
  2. package/dist/ktui.min.js +1 -1
  3. package/dist/ktui.min.js.map +1 -1
  4. package/lib/cjs/components/accordion/accordion.js +20 -11
  5. package/lib/cjs/components/accordion/accordion.js.map +1 -1
  6. package/lib/cjs/components/accordion/index.js +4 -0
  7. package/lib/cjs/components/accordion/index.js.map +1 -1
  8. package/lib/cjs/components/accordion/types.js +4 -0
  9. package/lib/cjs/components/accordion/types.js.map +1 -1
  10. package/lib/cjs/components/collapse/collapse.js +13 -7
  11. package/lib/cjs/components/collapse/collapse.js.map +1 -1
  12. package/lib/cjs/components/collapse/index.js +4 -0
  13. package/lib/cjs/components/collapse/index.js.map +1 -1
  14. package/lib/cjs/components/collapse/types.js +4 -0
  15. package/lib/cjs/components/collapse/types.js.map +1 -1
  16. package/lib/cjs/components/component.js +12 -41
  17. package/lib/cjs/components/component.js.map +1 -1
  18. package/lib/cjs/components/constants.js +4 -0
  19. package/lib/cjs/components/constants.js.map +1 -1
  20. package/lib/cjs/components/datatable/datatable-checkbox.js +217 -0
  21. package/lib/cjs/components/datatable/datatable-checkbox.js.map +1 -0
  22. package/lib/cjs/components/datatable/datatable-sort.js +91 -0
  23. package/lib/cjs/components/datatable/datatable-sort.js.map +1 -0
  24. package/lib/cjs/components/datatable/datatable.js +294 -349
  25. package/lib/cjs/components/datatable/datatable.js.map +1 -1
  26. package/lib/cjs/components/datatable/index.js +4 -0
  27. package/lib/cjs/components/datatable/index.js.map +1 -1
  28. package/lib/cjs/components/datatable/types.js +4 -0
  29. package/lib/cjs/components/datatable/types.js.map +1 -1
  30. package/lib/cjs/components/datepicker/calendar.js +1061 -0
  31. package/lib/cjs/components/datepicker/calendar.js.map +1 -0
  32. package/lib/cjs/components/datepicker/config.js +332 -0
  33. package/lib/cjs/components/datepicker/config.js.map +1 -0
  34. package/lib/cjs/components/datepicker/datepicker.js +949 -0
  35. package/lib/cjs/components/datepicker/datepicker.js.map +1 -0
  36. package/lib/cjs/components/datepicker/dropdown.js +635 -0
  37. package/lib/cjs/components/datepicker/dropdown.js.map +1 -0
  38. package/lib/cjs/components/datepicker/events.js +129 -0
  39. package/lib/cjs/components/datepicker/events.js.map +1 -0
  40. package/lib/cjs/components/datepicker/index.js +13 -0
  41. package/lib/cjs/components/datepicker/index.js.map +1 -0
  42. package/lib/cjs/components/datepicker/keyboard.js +536 -0
  43. package/lib/cjs/components/datepicker/keyboard.js.map +1 -0
  44. package/lib/cjs/components/datepicker/locales.js +78 -0
  45. package/lib/cjs/components/datepicker/locales.js.map +1 -0
  46. package/lib/cjs/components/datepicker/templates.js +403 -0
  47. package/lib/cjs/components/datepicker/templates.js.map +1 -0
  48. package/lib/cjs/components/datepicker/types.js +23 -0
  49. package/lib/cjs/components/datepicker/types.js.map +1 -0
  50. package/lib/cjs/components/datepicker/utils.js +524 -0
  51. package/lib/cjs/components/datepicker/utils.js.map +1 -0
  52. package/lib/cjs/components/dismiss/dismiss.js +10 -6
  53. package/lib/cjs/components/dismiss/dismiss.js.map +1 -1
  54. package/lib/cjs/components/dismiss/index.js +4 -0
  55. package/lib/cjs/components/dismiss/index.js.map +1 -1
  56. package/lib/cjs/components/dismiss/types.js +4 -0
  57. package/lib/cjs/components/dismiss/types.js.map +1 -1
  58. package/lib/cjs/components/drawer/drawer.js +54 -28
  59. package/lib/cjs/components/drawer/drawer.js.map +1 -1
  60. package/lib/cjs/components/drawer/index.js +4 -0
  61. package/lib/cjs/components/drawer/index.js.map +1 -1
  62. package/lib/cjs/components/drawer/types.js +4 -0
  63. package/lib/cjs/components/drawer/types.js.map +1 -1
  64. package/lib/cjs/components/dropdown/dropdown.js +145 -115
  65. package/lib/cjs/components/dropdown/dropdown.js.map +1 -1
  66. package/lib/cjs/components/dropdown/index.js +4 -0
  67. package/lib/cjs/components/dropdown/index.js.map +1 -1
  68. package/lib/cjs/components/dropdown/types.js +4 -0
  69. package/lib/cjs/components/dropdown/types.js.map +1 -1
  70. package/lib/cjs/components/image-input/image-input.js +21 -16
  71. package/lib/cjs/components/image-input/image-input.js.map +1 -1
  72. package/lib/cjs/components/image-input/index.js +4 -0
  73. package/lib/cjs/components/image-input/index.js.map +1 -1
  74. package/lib/cjs/components/image-input/types.js +4 -0
  75. package/lib/cjs/components/image-input/types.js.map +1 -1
  76. package/lib/cjs/components/modal/index.js +4 -0
  77. package/lib/cjs/components/modal/index.js.map +1 -1
  78. package/lib/cjs/components/modal/modal.js +26 -19
  79. package/lib/cjs/components/modal/modal.js.map +1 -1
  80. package/lib/cjs/components/modal/types.js +4 -0
  81. package/lib/cjs/components/modal/types.js.map +1 -1
  82. package/lib/cjs/components/reparent/index.js +4 -0
  83. package/lib/cjs/components/reparent/index.js.map +1 -1
  84. package/lib/cjs/components/reparent/reparent.js +13 -5
  85. package/lib/cjs/components/reparent/reparent.js.map +1 -1
  86. package/lib/cjs/components/reparent/types.js +4 -0
  87. package/lib/cjs/components/reparent/types.js.map +1 -1
  88. package/lib/cjs/components/scrollable/index.js +4 -0
  89. package/lib/cjs/components/scrollable/index.js.map +1 -1
  90. package/lib/cjs/components/scrollable/scrollable.js +17 -10
  91. package/lib/cjs/components/scrollable/scrollable.js.map +1 -1
  92. package/lib/cjs/components/scrollable/types.js +4 -0
  93. package/lib/cjs/components/scrollable/types.js.map +1 -1
  94. package/lib/cjs/components/scrollspy/index.js +4 -0
  95. package/lib/cjs/components/scrollspy/index.js.map +1 -1
  96. package/lib/cjs/components/scrollspy/scrollspy.js +28 -17
  97. package/lib/cjs/components/scrollspy/scrollspy.js.map +1 -1
  98. package/lib/cjs/components/scrollspy/types.js +4 -0
  99. package/lib/cjs/components/scrollspy/types.js.map +1 -1
  100. package/lib/cjs/components/scrollto/index.js +4 -0
  101. package/lib/cjs/components/scrollto/index.js.map +1 -1
  102. package/lib/cjs/components/scrollto/scrollto.js +14 -8
  103. package/lib/cjs/components/scrollto/scrollto.js.map +1 -1
  104. package/lib/cjs/components/scrollto/types.js +4 -0
  105. package/lib/cjs/components/scrollto/types.js.map +1 -1
  106. package/lib/cjs/components/select/combobox.js +237 -0
  107. package/lib/cjs/components/select/combobox.js.map +1 -0
  108. package/lib/cjs/components/select/config.js +226 -0
  109. package/lib/cjs/components/select/config.js.map +1 -0
  110. package/lib/cjs/components/select/dropdown.js +429 -0
  111. package/lib/cjs/components/select/dropdown.js.map +1 -0
  112. package/lib/cjs/components/select/index.js +24 -0
  113. package/lib/cjs/components/select/index.js.map +1 -0
  114. package/lib/cjs/components/select/option.js +53 -0
  115. package/lib/cjs/components/select/option.js.map +1 -0
  116. package/lib/cjs/components/select/remote.js +414 -0
  117. package/lib/cjs/components/select/remote.js.map +1 -0
  118. package/lib/cjs/components/select/search.js +339 -0
  119. package/lib/cjs/components/select/search.js.map +1 -0
  120. package/lib/cjs/components/select/select.js +1538 -0
  121. package/lib/cjs/components/select/select.js.map +1 -0
  122. package/lib/cjs/components/select/tags.js +110 -0
  123. package/lib/cjs/components/select/tags.js.map +1 -0
  124. package/lib/cjs/components/select/templates.js +337 -0
  125. package/lib/cjs/components/select/templates.js.map +1 -0
  126. package/lib/cjs/components/select/types.js +19 -0
  127. package/lib/cjs/components/select/types.js.map +1 -0
  128. package/lib/cjs/components/select/utils.js +606 -0
  129. package/lib/cjs/components/select/utils.js.map +1 -0
  130. package/lib/cjs/components/stepper/index.js +4 -0
  131. package/lib/cjs/components/stepper/index.js.map +1 -1
  132. package/lib/cjs/components/stepper/stepper.js +20 -13
  133. package/lib/cjs/components/stepper/stepper.js.map +1 -1
  134. package/lib/cjs/components/stepper/types.js +4 -0
  135. package/lib/cjs/components/stepper/types.js.map +1 -1
  136. package/lib/cjs/components/sticky/index.js +4 -0
  137. package/lib/cjs/components/sticky/index.js.map +1 -1
  138. package/lib/cjs/components/sticky/sticky.js +60 -38
  139. package/lib/cjs/components/sticky/sticky.js.map +1 -1
  140. package/lib/cjs/components/sticky/types.js +4 -0
  141. package/lib/cjs/components/sticky/types.js.map +1 -1
  142. package/lib/cjs/components/tabs/index.js +4 -0
  143. package/lib/cjs/components/tabs/index.js.map +1 -1
  144. package/lib/cjs/components/tabs/tabs.js +34 -24
  145. package/lib/cjs/components/tabs/tabs.js.map +1 -1
  146. package/lib/cjs/components/tabs/types.js +4 -0
  147. package/lib/cjs/components/tabs/types.js.map +1 -1
  148. package/lib/cjs/components/theme-switch/index.js +10 -0
  149. package/lib/cjs/components/theme-switch/index.js.map +1 -0
  150. package/lib/cjs/components/theme-switch/theme-switch.js +143 -0
  151. package/lib/cjs/components/theme-switch/theme-switch.js.map +1 -0
  152. package/lib/cjs/components/theme-switch/types.js +7 -0
  153. package/lib/cjs/components/theme-switch/types.js.map +1 -0
  154. package/lib/cjs/components/toggle/index.js +4 -0
  155. package/lib/cjs/components/toggle/index.js.map +1 -1
  156. package/lib/cjs/components/toggle/toggle.js +11 -7
  157. package/lib/cjs/components/toggle/toggle.js.map +1 -1
  158. package/lib/cjs/components/toggle/types.js +4 -0
  159. package/lib/cjs/components/toggle/types.js.map +1 -1
  160. package/lib/cjs/components/toggle-password/index.js +4 -0
  161. package/lib/cjs/components/toggle-password/index.js.map +1 -1
  162. package/lib/cjs/components/toggle-password/toggle-password.js +12 -7
  163. package/lib/cjs/components/toggle-password/toggle-password.js.map +1 -1
  164. package/lib/cjs/components/toggle-password/types.js +4 -0
  165. package/lib/cjs/components/toggle-password/types.js.map +1 -1
  166. package/lib/cjs/components/tooltip/index.js +4 -0
  167. package/lib/cjs/components/tooltip/index.js.map +1 -1
  168. package/lib/cjs/components/tooltip/tooltip.js +51 -21
  169. package/lib/cjs/components/tooltip/tooltip.js.map +1 -1
  170. package/lib/cjs/components/tooltip/types.js +4 -0
  171. package/lib/cjs/components/tooltip/types.js.map +1 -1
  172. package/lib/cjs/helpers/data.js +5 -1
  173. package/lib/cjs/helpers/data.js.map +1 -1
  174. package/lib/cjs/helpers/dom.js +34 -29
  175. package/lib/cjs/helpers/dom.js.map +1 -1
  176. package/lib/cjs/helpers/event-handler.js +5 -1
  177. package/lib/cjs/helpers/event-handler.js.map +1 -1
  178. package/lib/cjs/helpers/utils.js +65 -11
  179. package/lib/cjs/helpers/utils.js.map +1 -1
  180. package/lib/cjs/index.js +18 -22
  181. package/lib/cjs/index.js.map +1 -1
  182. package/lib/cjs/types.js +4 -0
  183. package/lib/cjs/types.js.map +1 -1
  184. package/lib/esm/components/accordion/accordion.js +20 -11
  185. package/lib/esm/components/accordion/accordion.js.map +1 -1
  186. package/lib/esm/components/accordion/index.js +4 -0
  187. package/lib/esm/components/accordion/index.js.map +1 -1
  188. package/lib/esm/components/accordion/types.js +4 -0
  189. package/lib/esm/components/accordion/types.js.map +1 -1
  190. package/lib/esm/components/collapse/collapse.js +13 -7
  191. package/lib/esm/components/collapse/collapse.js.map +1 -1
  192. package/lib/esm/components/collapse/index.js +4 -0
  193. package/lib/esm/components/collapse/index.js.map +1 -1
  194. package/lib/esm/components/collapse/types.js +4 -0
  195. package/lib/esm/components/collapse/types.js.map +1 -1
  196. package/lib/esm/components/component.js +12 -41
  197. package/lib/esm/components/component.js.map +1 -1
  198. package/lib/esm/components/constants.js +4 -0
  199. package/lib/esm/components/constants.js.map +1 -1
  200. package/lib/esm/components/datatable/datatable-checkbox.js +214 -0
  201. package/lib/esm/components/datatable/datatable-checkbox.js.map +1 -0
  202. package/lib/esm/components/datatable/datatable-sort.js +88 -0
  203. package/lib/esm/components/datatable/datatable-sort.js.map +1 -0
  204. package/lib/esm/components/datatable/datatable.js +294 -349
  205. package/lib/esm/components/datatable/datatable.js.map +1 -1
  206. package/lib/esm/components/datatable/index.js +4 -0
  207. package/lib/esm/components/datatable/index.js.map +1 -1
  208. package/lib/esm/components/datatable/types.js +4 -0
  209. package/lib/esm/components/datatable/types.js.map +1 -1
  210. package/lib/esm/components/datepicker/calendar.js +1058 -0
  211. package/lib/esm/components/datepicker/calendar.js.map +1 -0
  212. package/lib/esm/components/datepicker/config.js +329 -0
  213. package/lib/esm/components/datepicker/config.js.map +1 -0
  214. package/lib/esm/components/datepicker/datepicker.js +946 -0
  215. package/lib/esm/components/datepicker/datepicker.js.map +1 -0
  216. package/lib/esm/components/datepicker/dropdown.js +632 -0
  217. package/lib/esm/components/datepicker/dropdown.js.map +1 -0
  218. package/lib/esm/components/datepicker/events.js +126 -0
  219. package/lib/esm/components/datepicker/events.js.map +1 -0
  220. package/lib/esm/components/datepicker/index.js +9 -0
  221. package/lib/esm/components/datepicker/index.js.map +1 -0
  222. package/lib/esm/components/datepicker/keyboard.js +533 -0
  223. package/lib/esm/components/datepicker/keyboard.js.map +1 -0
  224. package/lib/esm/components/datepicker/locales.js +74 -0
  225. package/lib/esm/components/datepicker/locales.js.map +1 -0
  226. package/lib/esm/components/datepicker/templates.js +390 -0
  227. package/lib/esm/components/datepicker/templates.js.map +1 -0
  228. package/lib/esm/components/datepicker/types.js +20 -0
  229. package/lib/esm/components/datepicker/types.js.map +1 -0
  230. package/lib/esm/components/datepicker/utils.js +508 -0
  231. package/lib/esm/components/datepicker/utils.js.map +1 -0
  232. package/lib/esm/components/dismiss/dismiss.js +10 -6
  233. package/lib/esm/components/dismiss/dismiss.js.map +1 -1
  234. package/lib/esm/components/dismiss/index.js +4 -0
  235. package/lib/esm/components/dismiss/index.js.map +1 -1
  236. package/lib/esm/components/dismiss/types.js +4 -0
  237. package/lib/esm/components/dismiss/types.js.map +1 -1
  238. package/lib/esm/components/drawer/drawer.js +54 -28
  239. package/lib/esm/components/drawer/drawer.js.map +1 -1
  240. package/lib/esm/components/drawer/index.js +4 -0
  241. package/lib/esm/components/drawer/index.js.map +1 -1
  242. package/lib/esm/components/drawer/types.js +4 -0
  243. package/lib/esm/components/drawer/types.js.map +1 -1
  244. package/lib/esm/components/dropdown/dropdown.js +146 -116
  245. package/lib/esm/components/dropdown/dropdown.js.map +1 -1
  246. package/lib/esm/components/dropdown/index.js +4 -0
  247. package/lib/esm/components/dropdown/index.js.map +1 -1
  248. package/lib/esm/components/dropdown/types.js +4 -0
  249. package/lib/esm/components/dropdown/types.js.map +1 -1
  250. package/lib/esm/components/image-input/image-input.js +21 -16
  251. package/lib/esm/components/image-input/image-input.js.map +1 -1
  252. package/lib/esm/components/image-input/index.js +4 -0
  253. package/lib/esm/components/image-input/index.js.map +1 -1
  254. package/lib/esm/components/image-input/types.js +4 -0
  255. package/lib/esm/components/image-input/types.js.map +1 -1
  256. package/lib/esm/components/modal/index.js +4 -0
  257. package/lib/esm/components/modal/index.js.map +1 -1
  258. package/lib/esm/components/modal/modal.js +26 -19
  259. package/lib/esm/components/modal/modal.js.map +1 -1
  260. package/lib/esm/components/modal/types.js +4 -0
  261. package/lib/esm/components/modal/types.js.map +1 -1
  262. package/lib/esm/components/reparent/index.js +4 -0
  263. package/lib/esm/components/reparent/index.js.map +1 -1
  264. package/lib/esm/components/reparent/reparent.js +13 -5
  265. package/lib/esm/components/reparent/reparent.js.map +1 -1
  266. package/lib/esm/components/reparent/types.js +4 -0
  267. package/lib/esm/components/reparent/types.js.map +1 -1
  268. package/lib/esm/components/scrollable/index.js +4 -0
  269. package/lib/esm/components/scrollable/index.js.map +1 -1
  270. package/lib/esm/components/scrollable/scrollable.js +17 -10
  271. package/lib/esm/components/scrollable/scrollable.js.map +1 -1
  272. package/lib/esm/components/scrollable/types.js +4 -0
  273. package/lib/esm/components/scrollable/types.js.map +1 -1
  274. package/lib/esm/components/scrollspy/index.js +4 -0
  275. package/lib/esm/components/scrollspy/index.js.map +1 -1
  276. package/lib/esm/components/scrollspy/scrollspy.js +28 -17
  277. package/lib/esm/components/scrollspy/scrollspy.js.map +1 -1
  278. package/lib/esm/components/scrollspy/types.js +4 -0
  279. package/lib/esm/components/scrollspy/types.js.map +1 -1
  280. package/lib/esm/components/scrollto/index.js +4 -0
  281. package/lib/esm/components/scrollto/index.js.map +1 -1
  282. package/lib/esm/components/scrollto/scrollto.js +14 -8
  283. package/lib/esm/components/scrollto/scrollto.js.map +1 -1
  284. package/lib/esm/components/scrollto/types.js +4 -0
  285. package/lib/esm/components/scrollto/types.js.map +1 -1
  286. package/lib/esm/components/select/combobox.js +234 -0
  287. package/lib/esm/components/select/combobox.js.map +1 -0
  288. package/lib/esm/components/select/config.js +223 -0
  289. package/lib/esm/components/select/config.js.map +1 -0
  290. package/lib/esm/components/select/dropdown.js +426 -0
  291. package/lib/esm/components/select/dropdown.js.map +1 -0
  292. package/lib/esm/components/select/index.js +12 -0
  293. package/lib/esm/components/select/index.js.map +1 -0
  294. package/lib/esm/components/select/option.js +50 -0
  295. package/lib/esm/components/select/option.js.map +1 -0
  296. package/lib/esm/components/select/remote.js +411 -0
  297. package/lib/esm/components/select/remote.js.map +1 -0
  298. package/lib/esm/components/select/search.js +336 -0
  299. package/lib/esm/components/select/search.js.map +1 -0
  300. package/lib/esm/components/select/select.js +1535 -0
  301. package/lib/esm/components/select/select.js.map +1 -0
  302. package/lib/esm/components/select/tags.js +107 -0
  303. package/lib/esm/components/select/tags.js.map +1 -0
  304. package/lib/esm/components/select/templates.js +332 -0
  305. package/lib/esm/components/select/templates.js.map +1 -0
  306. package/lib/esm/components/select/types.js +16 -0
  307. package/lib/esm/components/select/types.js.map +1 -0
  308. package/lib/esm/components/select/utils.js +598 -0
  309. package/lib/esm/components/select/utils.js.map +1 -0
  310. package/lib/esm/components/stepper/index.js +4 -0
  311. package/lib/esm/components/stepper/index.js.map +1 -1
  312. package/lib/esm/components/stepper/stepper.js +20 -13
  313. package/lib/esm/components/stepper/stepper.js.map +1 -1
  314. package/lib/esm/components/stepper/types.js +4 -0
  315. package/lib/esm/components/stepper/types.js.map +1 -1
  316. package/lib/esm/components/sticky/index.js +4 -0
  317. package/lib/esm/components/sticky/index.js.map +1 -1
  318. package/lib/esm/components/sticky/sticky.js +60 -38
  319. package/lib/esm/components/sticky/sticky.js.map +1 -1
  320. package/lib/esm/components/sticky/types.js +4 -0
  321. package/lib/esm/components/sticky/types.js.map +1 -1
  322. package/lib/esm/components/tabs/index.js +4 -0
  323. package/lib/esm/components/tabs/index.js.map +1 -1
  324. package/lib/esm/components/tabs/tabs.js +34 -24
  325. package/lib/esm/components/tabs/tabs.js.map +1 -1
  326. package/lib/esm/components/tabs/types.js +4 -0
  327. package/lib/esm/components/tabs/types.js.map +1 -1
  328. package/lib/esm/components/theme-switch/index.js +6 -0
  329. package/lib/esm/components/theme-switch/index.js.map +1 -0
  330. package/lib/esm/components/theme-switch/theme-switch.js +140 -0
  331. package/lib/esm/components/theme-switch/theme-switch.js.map +1 -0
  332. package/lib/esm/components/theme-switch/types.js +6 -0
  333. package/lib/esm/components/theme-switch/types.js.map +1 -0
  334. package/lib/esm/components/toggle/index.js +4 -0
  335. package/lib/esm/components/toggle/index.js.map +1 -1
  336. package/lib/esm/components/toggle/toggle.js +11 -7
  337. package/lib/esm/components/toggle/toggle.js.map +1 -1
  338. package/lib/esm/components/toggle/types.js +4 -0
  339. package/lib/esm/components/toggle/types.js.map +1 -1
  340. package/lib/esm/components/toggle-password/index.js +4 -0
  341. package/lib/esm/components/toggle-password/index.js.map +1 -1
  342. package/lib/esm/components/toggle-password/toggle-password.js +12 -7
  343. package/lib/esm/components/toggle-password/toggle-password.js.map +1 -1
  344. package/lib/esm/components/toggle-password/types.js +4 -0
  345. package/lib/esm/components/toggle-password/types.js.map +1 -1
  346. package/lib/esm/components/tooltip/index.js +4 -0
  347. package/lib/esm/components/tooltip/index.js.map +1 -1
  348. package/lib/esm/components/tooltip/tooltip.js +52 -22
  349. package/lib/esm/components/tooltip/tooltip.js.map +1 -1
  350. package/lib/esm/components/tooltip/types.js +4 -0
  351. package/lib/esm/components/tooltip/types.js.map +1 -1
  352. package/lib/esm/helpers/data.js +5 -1
  353. package/lib/esm/helpers/data.js.map +1 -1
  354. package/lib/esm/helpers/dom.js +34 -29
  355. package/lib/esm/helpers/dom.js.map +1 -1
  356. package/lib/esm/helpers/event-handler.js +5 -1
  357. package/lib/esm/helpers/event-handler.js.map +1 -1
  358. package/lib/esm/helpers/utils.js +65 -11
  359. package/lib/esm/helpers/utils.js.map +1 -1
  360. package/lib/esm/index.js +14 -16
  361. package/lib/esm/index.js.map +1 -1
  362. package/lib/esm/types.js +4 -0
  363. package/lib/esm/types.js.map +1 -1
  364. package/package.json +16 -8
  365. package/src/components/accordion/accordion-menu.css +1 -2
  366. package/src/components/accordion/accordion.css +1 -1
  367. package/src/components/accordion/accordion.ts +1 -1
  368. package/src/components/accordion/index.ts +1 -1
  369. package/src/components/accordion/types.ts +1 -1
  370. package/src/components/alert/alert.css +1 -1
  371. package/src/components/avatar/avatar.css +1 -1
  372. package/src/components/badge/badge.css +1 -1
  373. package/src/components/breadcrumb/breadcrumb.css +1 -1
  374. package/src/components/btn/btn.css +1 -1
  375. package/src/components/card/card.css +1 -1
  376. package/src/components/checkbox/checkbox.css +1 -1
  377. package/src/components/collapse/collapse.css +1 -1
  378. package/src/components/collapse/collapse.ts +1 -1
  379. package/src/components/collapse/index.ts +1 -1
  380. package/src/components/collapse/types.ts +1 -1
  381. package/src/components/component.ts +1 -1
  382. package/src/components/constants.ts +1 -1
  383. package/src/components/datatable/datatable-checkbox.ts +1 -1
  384. package/src/components/datatable/datatable-sort.ts +1 -1
  385. package/src/components/datatable/datatable.css +1 -1
  386. package/src/components/datatable/datatable.ts +38 -2
  387. package/src/components/datatable/index.ts +1 -1
  388. package/src/components/datatable/types.ts +1 -1
  389. package/src/components/datepicker/calendar.ts +1 -1
  390. package/src/components/datepicker/config.ts +1 -1
  391. package/src/components/datepicker/datepicker.css +1 -1
  392. package/src/components/datepicker/datepicker.ts +1 -1
  393. package/src/components/datepicker/dropdown.ts +1 -1
  394. package/src/components/datepicker/events.ts +1 -1
  395. package/src/components/datepicker/index.ts +1 -1
  396. package/src/components/datepicker/keyboard.ts +1 -1
  397. package/src/components/datepicker/locales.ts +1 -1
  398. package/src/components/datepicker/templates.ts +1 -1
  399. package/src/components/datepicker/types.ts +1 -1
  400. package/src/components/datepicker/utils.ts +1 -1
  401. package/src/components/dismiss/dismiss.css +1 -1
  402. package/src/components/dismiss/dismiss.ts +1 -1
  403. package/src/components/dismiss/index.ts +1 -1
  404. package/src/components/dismiss/types.ts +1 -1
  405. package/src/components/drawer/drawer.css +1 -1
  406. package/src/components/drawer/drawer.ts +1 -1
  407. package/src/components/drawer/index.ts +1 -1
  408. package/src/components/drawer/types.ts +1 -1
  409. package/src/components/dropdown/dropdown-menu.css +1 -1
  410. package/src/components/dropdown/dropdown.css +1 -1
  411. package/src/components/dropdown/dropdown.ts +1 -1
  412. package/src/components/dropdown/index.ts +1 -1
  413. package/src/components/dropdown/types.ts +1 -1
  414. package/src/components/form/form.css +1 -1
  415. package/src/components/image-input/image-input.css +1 -1
  416. package/src/components/image-input/image-input.ts +1 -1
  417. package/src/components/image-input/index.ts +1 -1
  418. package/src/components/image-input/types.ts +1 -1
  419. package/src/components/input/input-group.css +8 -5
  420. package/src/components/input/input.css +1 -1
  421. package/src/components/kbd/kbd.css +1 -1
  422. package/src/components/label/label.css +1 -1
  423. package/src/components/link/link.css +1 -1
  424. package/src/components/modal/index.ts +1 -1
  425. package/src/components/modal/modal.css +1 -1
  426. package/src/components/modal/modal.ts +1 -1
  427. package/src/components/modal/types.ts +1 -1
  428. package/src/components/pagination/pagination.css +1 -1
  429. package/src/components/popover/popover.css +1 -1
  430. package/src/components/progress/progress.css +2 -2
  431. package/src/components/radio/radio.css +1 -1
  432. package/src/components/reparent/index.ts +1 -1
  433. package/src/components/reparent/reparent.ts +1 -1
  434. package/src/components/reparent/types.ts +1 -1
  435. package/src/components/scrollable/index.ts +1 -1
  436. package/src/components/scrollable/scrollable.css +1 -1
  437. package/src/components/scrollable/scrollable.ts +1 -1
  438. package/src/components/scrollable/types.ts +1 -1
  439. package/src/components/scrollspy/index.ts +1 -1
  440. package/src/components/scrollspy/scrollspy.css +1 -1
  441. package/src/components/scrollspy/scrollspy.ts +1 -1
  442. package/src/components/scrollspy/types.ts +1 -1
  443. package/src/components/scrollto/index.ts +1 -1
  444. package/src/components/scrollto/scrollto.ts +1 -1
  445. package/src/components/scrollto/types.ts +1 -1
  446. package/src/components/select/combobox.ts +1 -1
  447. package/src/components/select/config.ts +1 -1
  448. package/src/components/select/dropdown.ts +1 -1
  449. package/src/components/select/index.ts +1 -1
  450. package/src/components/select/option.ts +1 -1
  451. package/src/components/select/remote.ts +1 -1
  452. package/src/components/select/search.ts +1 -1
  453. package/src/components/select/select.css +1 -1
  454. package/src/components/select/select.ts +1 -1
  455. package/src/components/select/tags.ts +1 -1
  456. package/src/components/select/templates.ts +1 -1
  457. package/src/components/select/types.ts +1 -1
  458. package/src/components/select/utils.ts +1 -1
  459. package/src/components/select/variants.css +1 -1
  460. package/src/components/separator/separator.css +1 -1
  461. package/src/components/skeleton/skeleton.css +1 -1
  462. package/src/components/stepper/index.ts +1 -1
  463. package/src/components/stepper/stepper.css +1 -1
  464. package/src/components/stepper/stepper.ts +1 -1
  465. package/src/components/stepper/types.ts +1 -1
  466. package/src/components/sticky/index.ts +1 -1
  467. package/src/components/sticky/sticky.css +1 -1
  468. package/src/components/sticky/sticky.ts +1 -1
  469. package/src/components/sticky/types.ts +1 -1
  470. package/src/components/switch/switch.css +1 -1
  471. package/src/components/table/table.css +2 -2
  472. package/src/components/tabs/index.ts +1 -1
  473. package/src/components/tabs/tabs.css +1 -1
  474. package/src/components/tabs/tabs.ts +1 -1
  475. package/src/components/tabs/types.ts +1 -1
  476. package/src/components/textarea/textarea.css +1 -1
  477. package/src/components/theme-switch/index.ts +1 -1
  478. package/src/components/theme-switch/theme-switch.css +1 -1
  479. package/src/components/theme-switch/theme-switch.ts +1 -1
  480. package/src/components/theme-switch/types.ts +1 -1
  481. package/src/components/toggle/index.ts +1 -1
  482. package/src/components/toggle/toggle.css +1 -1
  483. package/src/components/toggle/toggle.ts +1 -1
  484. package/src/components/toggle/types.ts +1 -1
  485. package/src/components/toggle-group/toggle-group.css +1 -1
  486. package/src/components/toggle-password/index.ts +1 -1
  487. package/src/components/toggle-password/toggle-password.css +1 -1
  488. package/src/components/toggle-password/toggle-password.ts +1 -1
  489. package/src/components/toggle-password/types.ts +1 -1
  490. package/src/components/tooltip/index.ts +1 -1
  491. package/src/components/tooltip/tooltip.css +1 -1
  492. package/src/components/tooltip/tooltip.ts +1 -1
  493. package/src/components/tooltip/types.ts +1 -1
  494. package/src/helpers/data.ts +1 -1
  495. package/src/helpers/dom.ts +1 -1
  496. package/src/helpers/event-handler.ts +1 -1
  497. package/src/helpers/utils.ts +1 -1
  498. package/src/index.ts +1 -1
  499. package/src/types.ts +1 -1
@@ -0,0 +1,946 @@
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 KTComponent from '../component';
21
+ import { KTDatepickerCalendar } from './calendar';
22
+ import { KTDatepickerStateManager } from './config';
23
+ import { KTDatepickerKeyboard } from './keyboard';
24
+ import { formatDate, parseDate, isDateDisabled } from './utils';
25
+ import { segmentedDateInputTemplate, segmentedDateRangeInputTemplate, placeholderTemplate, } from './templates';
26
+ import { KTDatepickerEventName } from './events';
27
+ // Helper function to replace stringToElement
28
+ function createElement(html) {
29
+ var template = document.createElement('template');
30
+ template.innerHTML = html.trim();
31
+ return template.content.firstChild;
32
+ }
33
+ /**
34
+ * KTDatepicker - Main datepicker component class
35
+ * Manages the datepicker functionality and integration with input elements
36
+ */
37
+ var KTDatepicker = /** @class */ (function (_super) {
38
+ __extends(KTDatepicker, _super);
39
+ /**
40
+ * Constructor for the KTDatepicker class.
41
+ */
42
+ function KTDatepicker(element, config) {
43
+ var _this = _super.call(this) || this;
44
+ _this._name = 'datepicker';
45
+ _this._dateInputElement = null;
46
+ _this._startDateInputElement = null;
47
+ _this._endDateInputElement = null;
48
+ _this._displayElement = null;
49
+ _this._useSegmentedDisplay = false;
50
+ _this._displayWrapper = null;
51
+ _this._displayText = null;
52
+ _this._currentDate = null;
53
+ _this._currentRange = null;
54
+ _this._segmentFocused = null;
55
+ // Check if the element already has a datepicker instance attached to it
56
+ if (element.getAttribute('data-kt-datepicker-initialized') === 'true') {
57
+ return _this;
58
+ }
59
+ // Initialize the datepicker with the provided element
60
+ _this._init(element);
61
+ // Build the configuration object by merging the default config with the provided config
62
+ _this._buildConfig(config);
63
+ // Store the instance of the datepicker directly on the element
64
+ element.instance = _this;
65
+ // Ensure the element is focusable
66
+ _this._element.setAttribute('tabindex', '0');
67
+ _this._element.classList.add('kt-datepicker', 'relative', 'focus:outline-none');
68
+ // Mark as initialized
69
+ _this._element.setAttribute('data-kt-datepicker-initialized', 'true');
70
+ // Find input elements
71
+ _this._initializeInputElements();
72
+ // Create display element if needed
73
+ _this._createDisplayElement();
74
+ // Create state manager first
75
+ _this._state = new KTDatepickerStateManager(_this._element, _this._config);
76
+ _this._config = _this._state.getConfig();
77
+ // Initialize the calendar and keyboard after creating the state manager
78
+ _this._calendar = new KTDatepickerCalendar(_this._element, _this._state);
79
+ _this._keyboard = new KTDatepickerKeyboard(_this._element, _this._state);
80
+ // Initialize event manager
81
+ _this._eventManager = _this._state.getEventManager();
82
+ // Set up event listeners
83
+ _this._setupEventListeners();
84
+ // Initialize with any default values
85
+ _this._initializeDefaultValues();
86
+ return _this;
87
+ }
88
+ /**
89
+ * Initialize input elements
90
+ */
91
+ KTDatepicker.prototype._initializeInputElements = function () {
92
+ // Get main input element - will be hidden
93
+ this._dateInputElement = this._element.querySelector('[data-kt-datepicker-input]');
94
+ // Hide the input element and make it only for data storage
95
+ if (this._dateInputElement) {
96
+ this._dateInputElement.classList.add('hidden', 'sr-only');
97
+ this._dateInputElement.setAttribute('aria-hidden', 'true');
98
+ this._dateInputElement.tabIndex = -1;
99
+ }
100
+ // Get range input elements if applicable
101
+ this._startDateInputElement = this._element.querySelector('[data-kt-datepicker-start]');
102
+ this._endDateInputElement = this._element.querySelector('[data-kt-datepicker-end]');
103
+ // Get display element if exists
104
+ this._displayElement = this._element.querySelector('[data-kt-datepicker-display]');
105
+ // Check if we should use segmented display
106
+ this._useSegmentedDisplay =
107
+ this._element.hasAttribute('data-kt-datepicker-segmented') ||
108
+ this._element.hasAttribute('data-kt-datepicker-segmented-input');
109
+ };
110
+ /**
111
+ * Create display element for datepicker
112
+ */
113
+ KTDatepicker.prototype._createDisplayElement = function () {
114
+ var _this = this;
115
+ var _a;
116
+ // Skip if already created
117
+ if (this._displayElement) {
118
+ return;
119
+ }
120
+ // Get format from config or use default
121
+ var format = this._config.format || 'mm/dd/yyyy';
122
+ var placeholder = ((_a = this._dateInputElement) === null || _a === void 0 ? void 0 : _a.getAttribute('placeholder')) || format;
123
+ // Create wrapper for display element
124
+ this._displayWrapper = document.createElement('div');
125
+ this._displayWrapper.className =
126
+ 'kt-datepicker-display-wrapper kt-datepicker-display-segment';
127
+ this._displayWrapper.setAttribute('role', 'combobox');
128
+ this._displayWrapper.setAttribute('aria-haspopup', 'dialog');
129
+ this._displayWrapper.setAttribute('aria-expanded', 'false');
130
+ this._element.appendChild(this._displayWrapper);
131
+ if (this._useSegmentedDisplay) {
132
+ // Create segmented display for better date part selection
133
+ var displayContainer = document.createElement('div');
134
+ displayContainer.className = 'kt-datepicker-display-element';
135
+ displayContainer.setAttribute('tabindex', '0');
136
+ displayContainer.setAttribute('role', 'textbox');
137
+ displayContainer.setAttribute('aria-label', placeholder);
138
+ displayContainer.setAttribute('data-kt-datepicker-display', '');
139
+ // Add segmented template based on range mode
140
+ if (this._config.range) {
141
+ displayContainer.innerHTML = segmentedDateRangeInputTemplate(this._config.format || 'mm/dd/yyyy');
142
+ }
143
+ else {
144
+ displayContainer.innerHTML = segmentedDateInputTemplate(this._config.format || 'mm/dd/yyyy');
145
+ }
146
+ this._displayElement = displayContainer;
147
+ this._displayWrapper.appendChild(this._displayElement);
148
+ // Add click handlers for segments
149
+ var segments = this._displayElement.querySelectorAll('[data-segment]');
150
+ segments.forEach(function (segment) {
151
+ segment.addEventListener('click', function (e) {
152
+ e.stopPropagation();
153
+ var segmentType = segment.getAttribute('data-segment');
154
+ _this._handleSegmentClick(segmentType);
155
+ });
156
+ });
157
+ }
158
+ else {
159
+ // Create simple display element
160
+ this._displayElement = document.createElement('div');
161
+ this._displayElement.className = 'kt-datepicker-display-element';
162
+ this._displayElement.setAttribute('tabindex', '0');
163
+ this._displayElement.setAttribute('role', 'textbox');
164
+ this._displayElement.setAttribute('aria-label', placeholder);
165
+ this._displayElement.setAttribute('data-placeholder', placeholder);
166
+ this._displayElement.setAttribute('data-kt-datepicker-display', '');
167
+ // Create display text element
168
+ this._displayText = document.createElement('span');
169
+ this._displayText.className = 'kt-datepicker-display-text';
170
+ this._displayText.textContent = placeholder;
171
+ this._displayText.classList.add('text-gray-400');
172
+ this._displayElement.appendChild(this._displayText);
173
+ this._displayWrapper.appendChild(this._displayElement);
174
+ }
175
+ // Add click event to display element
176
+ this._displayElement.addEventListener('click', function (e) {
177
+ e.preventDefault();
178
+ if (!_this._state.getState().isOpen) {
179
+ _this._state.setOpen(true);
180
+ }
181
+ });
182
+ // Enhanced keyboard event handling for display element
183
+ this._displayElement.addEventListener('keydown', function (e) {
184
+ if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
185
+ e.preventDefault();
186
+ e.stopPropagation();
187
+ // If not already open, open the dropdown
188
+ if (!_this._state.getState().isOpen) {
189
+ _this._state.setOpen(true);
190
+ // Dispatch a custom event to notify about the keyboard open
191
+ _this._eventManager.dispatchKeyboardOpenEvent();
192
+ }
193
+ }
194
+ });
195
+ };
196
+ /**
197
+ * Handle segment click to focus and open appropriate view
198
+ *
199
+ * @param segmentType - Type of segment clicked
200
+ */
201
+ KTDatepicker.prototype._handleSegmentClick = function (segmentType) {
202
+ if (!segmentType)
203
+ return;
204
+ // Store the focused segment
205
+ this._segmentFocused = segmentType;
206
+ // Remove highlight from all segments
207
+ this._removeSegmentHighlights();
208
+ // Add highlight to clicked segment
209
+ if (this._displayElement) {
210
+ var segment = this._displayElement.querySelector("[data-segment=\"".concat(segmentType, "\"]"));
211
+ if (segment) {
212
+ segment.classList.add('kt-datepicker-segment-focused');
213
+ }
214
+ }
215
+ // Set the appropriate view mode based on segment type
216
+ if (segmentType.includes('day')) {
217
+ // Day segment - open in days view (default)
218
+ this._state.setViewMode('days');
219
+ this._state.setOpen(true);
220
+ }
221
+ else if (segmentType.includes('month')) {
222
+ // Month segment - open in months view
223
+ this._state.setViewMode('months');
224
+ this._state.setOpen(true);
225
+ }
226
+ else if (segmentType.includes('year')) {
227
+ // Year segment - open in years view
228
+ this._state.setViewMode('years');
229
+ this._state.setOpen(true);
230
+ }
231
+ };
232
+ /**
233
+ * Set up event listeners
234
+ */
235
+ KTDatepicker.prototype._setupEventListeners = function () {
236
+ var _this = this;
237
+ // Listen for state changes
238
+ this._eventManager.addEventListener(KTDatepickerEventName.STATE_CHANGE, function (e) {
239
+ var state = e.detail.state;
240
+ // Update ARIA attributes based on open state
241
+ if (_this._displayWrapper) {
242
+ _this._displayWrapper.setAttribute('aria-expanded', state.isOpen.toString());
243
+ }
244
+ // Update display when closing
245
+ if (!state.isOpen && state.prevIsOpen) {
246
+ _this._syncDisplayWithSelectedDate();
247
+ }
248
+ });
249
+ // Set up change event listener to update input values
250
+ this._eventManager.addEventListener(KTDatepickerEventName.DATE_CHANGE, this._handleDateChange.bind(this));
251
+ // Add keyboard events to the root element
252
+ this._element.addEventListener('keydown', function (e) {
253
+ if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
254
+ var state = _this._state.getState();
255
+ if (!state.isOpen) {
256
+ e.preventDefault();
257
+ _this._state.setOpen(true);
258
+ }
259
+ }
260
+ });
261
+ // Add keyboard navigation for segments
262
+ if (this._displayElement && this._useSegmentedDisplay) {
263
+ this._displayElement.addEventListener('keydown', this._handleSegmentKeydown.bind(this));
264
+ }
265
+ };
266
+ /**
267
+ * Handle keyboard navigation between segments
268
+ *
269
+ * @param e - Keyboard event
270
+ */
271
+ KTDatepicker.prototype._handleSegmentKeydown = function (e) {
272
+ // Only handle if we have a focused segment
273
+ if (!this._segmentFocused)
274
+ return;
275
+ var target = e.target;
276
+ var segmentType = target.getAttribute('data-segment');
277
+ if (!segmentType)
278
+ return;
279
+ // Handle keyboard navigation
280
+ switch (e.key) {
281
+ case 'ArrowLeft':
282
+ e.preventDefault();
283
+ this._navigateSegments('prev', segmentType);
284
+ break;
285
+ case 'ArrowRight':
286
+ e.preventDefault();
287
+ this._navigateSegments('next', segmentType);
288
+ break;
289
+ case 'Tab':
290
+ // Let default tab behavior work, but update focus segment when tabbing
291
+ this._segmentFocused = segmentType;
292
+ // Remove highlight from all segments
293
+ this._removeSegmentHighlights();
294
+ // Add highlight to current segment
295
+ target.classList.add('segment-focused');
296
+ break;
297
+ case 'Enter':
298
+ case ' ':
299
+ e.preventDefault();
300
+ this._handleSegmentClick(segmentType);
301
+ break;
302
+ }
303
+ };
304
+ /**
305
+ * Navigate between segments with keyboard
306
+ *
307
+ * @param direction - 'prev' or 'next'
308
+ * @param currentSegment - Current segment identifier
309
+ */
310
+ KTDatepicker.prototype._navigateSegments = function (direction, currentSegment) {
311
+ if (!this._displayElement)
312
+ return;
313
+ // Define segment order
314
+ var segments;
315
+ if (this._config.range) {
316
+ segments = [
317
+ 'start-month',
318
+ 'start-day',
319
+ 'start-year',
320
+ 'end-month',
321
+ 'end-day',
322
+ 'end-year',
323
+ ];
324
+ }
325
+ else {
326
+ segments = ['month', 'day', 'year'];
327
+ }
328
+ // Find current index
329
+ var currentIndex = segments.indexOf(currentSegment);
330
+ if (currentIndex === -1)
331
+ return;
332
+ // Calculate new index
333
+ var newIndex;
334
+ if (direction === 'prev') {
335
+ newIndex = currentIndex === 0 ? segments.length - 1 : currentIndex - 1;
336
+ }
337
+ else {
338
+ newIndex = currentIndex === segments.length - 1 ? 0 : currentIndex + 1;
339
+ }
340
+ // Find new segment element
341
+ var newSegment = this._displayElement.querySelector("[data-segment=\"".concat(segments[newIndex], "\"]"));
342
+ if (!newSegment)
343
+ return;
344
+ // Update focus
345
+ newSegment.focus();
346
+ this._segmentFocused = segments[newIndex];
347
+ // Remove highlight from all segments
348
+ this._removeSegmentHighlights();
349
+ // Add highlight to new segment
350
+ newSegment.classList.add('segment-focused');
351
+ };
352
+ /**
353
+ * Remove highlight from all segments
354
+ */
355
+ KTDatepicker.prototype._removeSegmentHighlights = function () {
356
+ if (!this._displayElement)
357
+ return;
358
+ var segments = this._displayElement.querySelectorAll('.segment-part');
359
+ segments.forEach(function (segment) {
360
+ segment.classList.remove('segment-focused');
361
+ });
362
+ };
363
+ /**
364
+ * Sync display element with the selected date
365
+ */
366
+ KTDatepicker.prototype._syncDisplayWithSelectedDate = function () {
367
+ var _a;
368
+ if (!this._displayElement)
369
+ return;
370
+ var state = this._state.getState();
371
+ var selectedDate = state.selectedDate;
372
+ var selectedDateRange = state.selectedDateRange;
373
+ if (this._useSegmentedDisplay) {
374
+ // Update segmented display elements
375
+ if (selectedDate) {
376
+ // Single date
377
+ var daySegment = this._displayElement.querySelector('[data-segment="day"]');
378
+ var monthSegment = this._displayElement.querySelector('[data-segment="month"]');
379
+ var yearSegment = this._displayElement.querySelector('[data-segment="year"]');
380
+ if (daySegment) {
381
+ daySegment.textContent = selectedDate
382
+ .getDate()
383
+ .toString()
384
+ .padStart(2, '0');
385
+ }
386
+ if (monthSegment) {
387
+ monthSegment.textContent = (selectedDate.getMonth() + 1)
388
+ .toString()
389
+ .padStart(2, '0');
390
+ }
391
+ if (yearSegment) {
392
+ yearSegment.textContent = selectedDate.getFullYear().toString();
393
+ }
394
+ }
395
+ else if (selectedDateRange && selectedDateRange.startDate) {
396
+ // Range selection
397
+ var startDay = this._displayElement.querySelector('[data-segment="start-day"]');
398
+ var startMonth = this._displayElement.querySelector('[data-segment="start-month"]');
399
+ var startYear = this._displayElement.querySelector('[data-segment="start-year"]');
400
+ if (startDay) {
401
+ startDay.textContent = selectedDateRange.startDate
402
+ .getDate()
403
+ .toString()
404
+ .padStart(2, '0');
405
+ }
406
+ if (startMonth) {
407
+ startMonth.textContent = (selectedDateRange.startDate.getMonth() + 1)
408
+ .toString()
409
+ .padStart(2, '0');
410
+ }
411
+ if (startYear) {
412
+ startYear.textContent = selectedDateRange.startDate
413
+ .getFullYear()
414
+ .toString();
415
+ }
416
+ if (selectedDateRange.endDate) {
417
+ var endDay = this._displayElement.querySelector('[data-segment="end-day"]');
418
+ var endMonth = this._displayElement.querySelector('[data-segment="end-month"]');
419
+ var endYear = this._displayElement.querySelector('[data-segment="end-year"]');
420
+ if (endDay) {
421
+ endDay.textContent = selectedDateRange.endDate
422
+ .getDate()
423
+ .toString()
424
+ .padStart(2, '0');
425
+ }
426
+ if (endMonth) {
427
+ endMonth.textContent = (selectedDateRange.endDate.getMonth() + 1)
428
+ .toString()
429
+ .padStart(2, '0');
430
+ }
431
+ if (endYear) {
432
+ endYear.textContent = selectedDateRange.endDate
433
+ .getFullYear()
434
+ .toString();
435
+ }
436
+ }
437
+ }
438
+ }
439
+ else if (this._displayText) {
440
+ // Simple display
441
+ if (selectedDate) {
442
+ // Clear placeholder styling
443
+ this._displayText.classList.remove('placeholder');
444
+ // Format date(s) based on config
445
+ if (this._config.range &&
446
+ selectedDateRange &&
447
+ selectedDateRange.startDate &&
448
+ selectedDateRange.endDate) {
449
+ this._displayText.textContent = "".concat(formatDate(selectedDateRange.startDate, this._config.format, this._config), " - ").concat(formatDate(selectedDateRange.endDate, this._config.format, this._config));
450
+ }
451
+ else {
452
+ this._displayText.textContent = formatDate(selectedDate, this._config.format, this._config);
453
+ }
454
+ }
455
+ else {
456
+ // No date selected, show format as placeholder
457
+ var placeholder = ((_a = this._displayElement) === null || _a === void 0 ? void 0 : _a.getAttribute('data-placeholder')) ||
458
+ this._config.format;
459
+ this._displayText.textContent = placeholder;
460
+ this._displayText.classList.add('placeholder');
461
+ }
462
+ }
463
+ };
464
+ /**
465
+ * Handle date change events
466
+ *
467
+ * @param e - Custom event with date change details
468
+ */
469
+ KTDatepicker.prototype._handleDateChange = function (e) {
470
+ var _a;
471
+ var detail = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.payload;
472
+ if (!detail)
473
+ return;
474
+ // Handle single date selection
475
+ if (detail.selectedDate) {
476
+ var formattedDate = formatDate(detail.selectedDate, this._config.format, this._config);
477
+ // Update hidden input value
478
+ if (this._dateInputElement) {
479
+ this._dateInputElement.value = formattedDate;
480
+ // Dispatch change event on input to trigger form validation
481
+ this._dateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
482
+ }
483
+ // Update display element
484
+ this._updateDisplayElement(detail.selectedDate);
485
+ }
486
+ // Handle date range selection
487
+ if (detail.selectedDateRange && this._config.range) {
488
+ var _b = detail.selectedDateRange, startDate = _b.startDate, endDate = _b.endDate;
489
+ // Format the range for the hidden input
490
+ if (this._dateInputElement) {
491
+ var displayValue = '';
492
+ if (startDate) {
493
+ displayValue = formatDate(startDate, this._config.format, this._config);
494
+ if (endDate) {
495
+ var endFormatted = formatDate(endDate, this._config.format, this._config);
496
+ displayValue += "".concat(this._config.rangeSeparator).concat(endFormatted);
497
+ }
498
+ }
499
+ this._dateInputElement.value = displayValue;
500
+ // Dispatch change event on input
501
+ this._dateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
502
+ }
503
+ // Update individual start/end inputs if they exist
504
+ if (this._startDateInputElement && startDate) {
505
+ this._startDateInputElement.value = formatDate(startDate, this._config.format, this._config);
506
+ this._startDateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
507
+ }
508
+ if (this._endDateInputElement && endDate) {
509
+ this._endDateInputElement.value = formatDate(endDate, this._config.format, this._config);
510
+ this._endDateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
511
+ }
512
+ // Update display element for range
513
+ this._updateRangeDisplayElement(startDate, endDate);
514
+ }
515
+ };
516
+ /**
517
+ * Update the display element for a single date
518
+ *
519
+ * @param date - The date to display
520
+ */
521
+ KTDatepicker.prototype._updateDisplayElement = function (date) {
522
+ var _a;
523
+ if (!this._displayElement)
524
+ return;
525
+ if (!date) {
526
+ // If no date, show placeholder
527
+ var placeholder = ((_a = this._dateInputElement) === null || _a === void 0 ? void 0 : _a.getAttribute('placeholder')) || 'Select date';
528
+ this._displayElement.innerHTML = placeholderTemplate(placeholder);
529
+ return;
530
+ }
531
+ if (this._useSegmentedDisplay) {
532
+ // Update segmented display
533
+ var day = date.getDate();
534
+ var month = date.getMonth() + 1;
535
+ var year = date.getFullYear();
536
+ var daySegment = this._displayElement.querySelector('[data-segment="day"]');
537
+ var monthSegment = this._displayElement.querySelector('[data-segment="month"]');
538
+ var yearSegment = this._displayElement.querySelector('[data-segment="year"]');
539
+ if (daySegment)
540
+ daySegment.textContent = day < 10 ? "0".concat(day) : "".concat(day);
541
+ if (monthSegment)
542
+ monthSegment.textContent = month < 10 ? "0".concat(month) : "".concat(month);
543
+ if (yearSegment)
544
+ yearSegment.textContent = "".concat(year);
545
+ }
546
+ else {
547
+ // Simple display
548
+ this._displayElement.textContent = formatDate(date, this._config.format, this._config);
549
+ }
550
+ };
551
+ /**
552
+ * Update the display element for a date range
553
+ *
554
+ * @param startDate - The start date of the range
555
+ * @param endDate - The end date of the range
556
+ */
557
+ KTDatepicker.prototype._updateRangeDisplayElement = function (startDate, endDate) {
558
+ var _a;
559
+ if (!this._displayElement)
560
+ return;
561
+ if (!startDate) {
562
+ // If no date, show placeholder
563
+ var placeholder = ((_a = this._dateInputElement) === null || _a === void 0 ? void 0 : _a.getAttribute('placeholder')) ||
564
+ 'Select date range';
565
+ this._displayElement.innerHTML = placeholderTemplate(placeholder);
566
+ return;
567
+ }
568
+ if (this._useSegmentedDisplay) {
569
+ // Update segmented range display
570
+ // Start date segments
571
+ var startDay = this._displayElement.querySelector('[data-segment="start-day"]');
572
+ var startMonth = this._displayElement.querySelector('[data-segment="start-month"]');
573
+ var startYear = this._displayElement.querySelector('[data-segment="start-year"]');
574
+ if (startDay)
575
+ startDay.textContent =
576
+ startDate.getDate() < 10
577
+ ? "0".concat(startDate.getDate())
578
+ : "".concat(startDate.getDate());
579
+ if (startMonth)
580
+ startMonth.textContent =
581
+ startDate.getMonth() + 1 < 10
582
+ ? "0".concat(startDate.getMonth() + 1)
583
+ : "".concat(startDate.getMonth() + 1);
584
+ if (startYear)
585
+ startYear.textContent = "".concat(startDate.getFullYear());
586
+ // End date segments
587
+ if (endDate) {
588
+ var endDay = this._displayElement.querySelector('[data-segment="end-day"]');
589
+ var endMonth = this._displayElement.querySelector('[data-segment="end-month"]');
590
+ var endYear = this._displayElement.querySelector('[data-segment="end-year"]');
591
+ if (endDay)
592
+ endDay.textContent =
593
+ endDate.getDate() < 10
594
+ ? "0".concat(endDate.getDate())
595
+ : "".concat(endDate.getDate());
596
+ if (endMonth)
597
+ endMonth.textContent =
598
+ endDate.getMonth() + 1 < 10
599
+ ? "0".concat(endDate.getMonth() + 1)
600
+ : "".concat(endDate.getMonth() + 1);
601
+ if (endYear)
602
+ endYear.textContent = "".concat(endDate.getFullYear());
603
+ }
604
+ }
605
+ else {
606
+ // Simple display
607
+ var displayText = formatDate(startDate, this._config.format, this._config);
608
+ if (endDate) {
609
+ var endFormatted = formatDate(endDate, this._config.format, this._config);
610
+ displayText += "".concat(this._config.rangeSeparator).concat(endFormatted);
611
+ }
612
+ this._displayElement.textContent = displayText;
613
+ }
614
+ };
615
+ /**
616
+ * Handle input change events
617
+ *
618
+ * @param e - Input change event
619
+ */
620
+ KTDatepicker.prototype._handleInputChange = function (e) {
621
+ var input = e.target;
622
+ var inputValue = input.value.trim();
623
+ if (!inputValue) {
624
+ // Clear selection if input is empty
625
+ this._state.setSelectedDate(null);
626
+ return;
627
+ }
628
+ if (this._config.range) {
629
+ // Handle range input
630
+ var rangeParts = inputValue.split(this._config.rangeSeparator);
631
+ if (rangeParts.length === 2) {
632
+ var startDate = parseDate(rangeParts[0].trim(), this._config.format, this._config);
633
+ var endDate = parseDate(rangeParts[1].trim(), this._config.format, this._config);
634
+ // Validate dates are within min/max constraints
635
+ if (startDate && isDateDisabled(startDate, this._config)) {
636
+ console.log('Start date from input is outside allowed range:', startDate.toISOString());
637
+ return;
638
+ }
639
+ if (endDate && isDateDisabled(endDate, this._config)) {
640
+ console.log('End date from input is outside allowed range:', endDate.toISOString());
641
+ return;
642
+ }
643
+ if (startDate && endDate) {
644
+ this.setDateRange(startDate, endDate);
645
+ }
646
+ }
647
+ else if (rangeParts.length === 1) {
648
+ var singleDate = parseDate(rangeParts[0].trim(), this._config.format, this._config);
649
+ // Validate date is within min/max constraints
650
+ if (singleDate && isDateDisabled(singleDate, this._config)) {
651
+ console.log('Date from input is outside allowed range:', singleDate.toISOString());
652
+ return;
653
+ }
654
+ if (singleDate) {
655
+ this.setDateRange(singleDate, null);
656
+ }
657
+ }
658
+ }
659
+ else {
660
+ // Handle single date input
661
+ var parsedDate = parseDate(inputValue, this._config.format, this._config);
662
+ // Validate date is within min/max constraints
663
+ if (parsedDate && isDateDisabled(parsedDate, this._config)) {
664
+ console.log('Date from input is outside allowed range:', parsedDate.toISOString());
665
+ return;
666
+ }
667
+ if (parsedDate) {
668
+ this.setDate(parsedDate);
669
+ }
670
+ }
671
+ };
672
+ /**
673
+ * Initialize with default values from input
674
+ */
675
+ KTDatepicker.prototype._initializeDefaultValues = function () {
676
+ // Set min and max dates from attributes if they exist
677
+ var minDateAttr = this._element.getAttribute('data-kt-datepicker-min-date');
678
+ var maxDateAttr = this._element.getAttribute('data-kt-datepicker-max-date');
679
+ if (minDateAttr) {
680
+ var minDate = parseDate(minDateAttr, this._config.format, this._config);
681
+ if (minDate) {
682
+ this.setMinDate(minDate);
683
+ }
684
+ }
685
+ if (maxDateAttr) {
686
+ var maxDate = parseDate(maxDateAttr, this._config.format, this._config);
687
+ if (maxDate) {
688
+ this.setMaxDate(maxDate);
689
+ }
690
+ }
691
+ // Check for default value in main input
692
+ if (this._dateInputElement && this._dateInputElement.value) {
693
+ this._handleInputChange({
694
+ target: this._dateInputElement,
695
+ });
696
+ }
697
+ // Check for default values in range inputs
698
+ else if (this._config.range &&
699
+ this._startDateInputElement &&
700
+ this._startDateInputElement.value) {
701
+ var startDate = parseDate(this._startDateInputElement.value, this._config.format, this._config);
702
+ var endDate = null;
703
+ if (this._endDateInputElement && this._endDateInputElement.value) {
704
+ endDate = parseDate(this._endDateInputElement.value, this._config.format, this._config);
705
+ }
706
+ if (startDate) {
707
+ this.setDateRange(startDate, endDate);
708
+ }
709
+ }
710
+ };
711
+ /**
712
+ * ========================================================================
713
+ * Public API
714
+ * ========================================================================
715
+ */
716
+ /**
717
+ * Get the currently selected date
718
+ *
719
+ * @returns Selected date, null if no selection, or date range object
720
+ */
721
+ KTDatepicker.prototype.getDate = function () {
722
+ var state = this._state.getState();
723
+ var config = this._state.getConfig();
724
+ if (config.range) {
725
+ return state.selectedDateRange || { startDate: null, endDate: null };
726
+ }
727
+ else {
728
+ return state.selectedDate;
729
+ }
730
+ };
731
+ /**
732
+ * Set the selected date
733
+ *
734
+ * @param date - Date to select or null to clear selection
735
+ */
736
+ KTDatepicker.prototype.setDate = function (date) {
737
+ // Skip if the date is disabled (outside min/max range)
738
+ if (date && isDateDisabled(date, this._config)) {
739
+ console.log('Date is disabled in setDate, ignoring selection:', date.toISOString());
740
+ return;
741
+ }
742
+ this._state.setSelectedDate(date);
743
+ if (date) {
744
+ this._state.setCurrentDate(date);
745
+ }
746
+ // Update the display
747
+ this._updateDisplayElement(date);
748
+ // Update hidden input
749
+ if (this._dateInputElement && date) {
750
+ this._dateInputElement.value = formatDate(date, this._config.format, this._config);
751
+ this._dateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
752
+ }
753
+ else if (this._dateInputElement) {
754
+ this._dateInputElement.value = '';
755
+ this._dateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
756
+ }
757
+ };
758
+ /**
759
+ * Get the currently selected date range
760
+ *
761
+ * @returns Selected date range or null if no selection
762
+ */
763
+ KTDatepicker.prototype.getDateRange = function () {
764
+ var state = this._state.getState();
765
+ return state.selectedDateRange;
766
+ };
767
+ /**
768
+ * Set the selected date range
769
+ *
770
+ * @param start - Start date of the range
771
+ * @param end - End date of the range
772
+ */
773
+ KTDatepicker.prototype.setDateRange = function (start, end) {
774
+ var _a;
775
+ var state = this._state.getState();
776
+ // Ensure we're in range mode
777
+ if (!this._config.range) {
778
+ console.warn('Cannot set date range when range mode is disabled');
779
+ return;
780
+ }
781
+ // Validate start and end dates are within min/max range
782
+ if (start && isDateDisabled(start, this._config)) {
783
+ console.log('Start date is disabled in setDateRange, ignoring selection:', start.toISOString());
784
+ return;
785
+ }
786
+ if (end && isDateDisabled(end, this._config)) {
787
+ console.log('End date is disabled in setDateRange, ignoring selection:', end.toISOString());
788
+ return;
789
+ }
790
+ // Reset range selection state
791
+ this._state.getState().isRangeSelectionStart = true;
792
+ // Set start date
793
+ if (start) {
794
+ if (!state.selectedDateRange) {
795
+ state.selectedDateRange = { startDate: null, endDate: null };
796
+ }
797
+ state.selectedDateRange.startDate = start;
798
+ this._state.setCurrentDate(start);
799
+ // Set end date if provided
800
+ if (end) {
801
+ state.selectedDateRange.endDate = end;
802
+ }
803
+ else {
804
+ state.selectedDateRange.endDate = null;
805
+ }
806
+ // Update display element
807
+ this._updateRangeDisplayElement(start, end);
808
+ // Update hidden inputs
809
+ if (this._dateInputElement) {
810
+ var inputValue = formatDate(start, this._config.format, this._config);
811
+ if (end) {
812
+ inputValue += "".concat(this._config.rangeSeparator).concat(formatDate(end, this._config.format, this._config));
813
+ }
814
+ this._dateInputElement.value = inputValue;
815
+ this._dateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
816
+ }
817
+ if (this._startDateInputElement) {
818
+ this._startDateInputElement.value = formatDate(start, this._config.format, this._config);
819
+ this._startDateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
820
+ }
821
+ if (this._endDateInputElement && end) {
822
+ this._endDateInputElement.value = formatDate(end, this._config.format, this._config);
823
+ this._endDateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
824
+ }
825
+ else if (this._endDateInputElement) {
826
+ this._endDateInputElement.value = '';
827
+ }
828
+ // Dispatch change event
829
+ this._eventManager.dispatchEvent(KTDatepickerEventName.DATE_CHANGE, {
830
+ selectedDateRange: state.selectedDateRange,
831
+ });
832
+ }
833
+ else {
834
+ // Clear selection
835
+ this._state.getState().selectedDateRange = null;
836
+ // Clear display
837
+ if (this._displayElement) {
838
+ var placeholder = ((_a = this._dateInputElement) === null || _a === void 0 ? void 0 : _a.getAttribute('placeholder')) ||
839
+ 'Select date range';
840
+ this._displayElement.innerHTML = placeholderTemplate(placeholder);
841
+ }
842
+ // Clear inputs
843
+ if (this._dateInputElement) {
844
+ this._dateInputElement.value = '';
845
+ this._dateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
846
+ }
847
+ if (this._startDateInputElement) {
848
+ this._startDateInputElement.value = '';
849
+ this._startDateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
850
+ }
851
+ if (this._endDateInputElement) {
852
+ this._endDateInputElement.value = '';
853
+ this._endDateInputElement.dispatchEvent(new Event('change', { bubbles: true }));
854
+ }
855
+ this._eventManager.dispatchEvent(KTDatepickerEventName.DATE_CHANGE, {
856
+ selectedDateRange: null,
857
+ });
858
+ }
859
+ };
860
+ /**
861
+ * Set the minimum selectable date
862
+ *
863
+ * @param minDate - Minimum date or null to remove constraint
864
+ */
865
+ KTDatepicker.prototype.setMinDate = function (minDate) {
866
+ this._config.minDate = minDate;
867
+ // Refresh calendar view to apply new constraints
868
+ this._eventManager.dispatchEvent(KTDatepickerEventName.UPDATE);
869
+ };
870
+ /**
871
+ * Set the maximum selectable date
872
+ *
873
+ * @param maxDate - Maximum date or null to remove constraint
874
+ */
875
+ KTDatepicker.prototype.setMaxDate = function (maxDate) {
876
+ this._config.maxDate = maxDate;
877
+ // Refresh calendar view to apply new constraints
878
+ this._eventManager.dispatchEvent(KTDatepickerEventName.UPDATE);
879
+ };
880
+ /**
881
+ * Update the datepicker (refresh view)
882
+ */
883
+ KTDatepicker.prototype.update = function () {
884
+ // Trigger calendar update through events
885
+ this._eventManager.dispatchEvent(KTDatepickerEventName.UPDATE);
886
+ };
887
+ /**
888
+ * Destroy the datepicker instance and clean up
889
+ */
890
+ KTDatepicker.prototype.destroy = function () {
891
+ // Remove event listeners
892
+ this._eventManager.removeEventListener(KTDatepickerEventName.DATE_CHANGE, this._handleDateChange.bind(this));
893
+ if (this._dateInputElement) {
894
+ this._dateInputElement.removeEventListener('change', this._handleInputChange.bind(this));
895
+ }
896
+ if (this._displayElement) {
897
+ this._displayElement.remove();
898
+ }
899
+ // Remove instance from element
900
+ this._element.removeAttribute('data-kt-datepicker-initialized');
901
+ delete this._element.instance;
902
+ // Remove initialized class
903
+ this._element.classList.remove('relative');
904
+ // Remove from instances map
905
+ KTDatepicker._instances.delete(this._element);
906
+ };
907
+ /**
908
+ * Dispatch a custom event
909
+ *
910
+ * @param eventName - Name of the event
911
+ * @param payload - Optional event payload
912
+ */
913
+ KTDatepicker.prototype._dispatchEvent = function (eventName, payload) {
914
+ this._eventManager.dispatchEvent(eventName, payload);
915
+ };
916
+ /**
917
+ * Create instances for all datepicker elements on the page
918
+ */
919
+ KTDatepicker.createInstances = function () {
920
+ var _this = this;
921
+ var elements = document.querySelectorAll('[data-kt-datepicker]');
922
+ elements.forEach(function (element) {
923
+ if (element.hasAttribute('data-kt-datepicker') &&
924
+ !element.getAttribute('data-kt-datepicker-initialized')) {
925
+ // Create instance
926
+ var instance = new KTDatepicker(element);
927
+ _this._instances.set(element, instance);
928
+ }
929
+ });
930
+ };
931
+ /**
932
+ * Initialize all datepickers on the page
933
+ */
934
+ KTDatepicker.init = function () {
935
+ KTDatepicker.createInstances();
936
+ };
937
+ /**
938
+ * ========================================================================
939
+ * Static instances
940
+ * ========================================================================
941
+ */
942
+ KTDatepicker._instances = new Map();
943
+ return KTDatepicker;
944
+ }(KTComponent));
945
+ export { KTDatepicker };
946
+ //# sourceMappingURL=datepicker.js.map