@keenthemes/ktui 1.0.8 → 1.0.10

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