@keenthemes/ktui 1.0.8 → 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 +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,1061 @@
1
+ "use strict";
2
+ /**
3
+ * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
4
+ * Copyright 2025 by Keenthemes Inc
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.KTDatepickerCalendar = void 0;
8
+ var templates_1 = require("./templates");
9
+ var utils_1 = require("./utils");
10
+ var dropdown_1 = require("./dropdown");
11
+ var events_1 = require("./events");
12
+ /**
13
+ * Calendar component for the KTDatepicker
14
+ * Handles rendering and interactions with the calendar
15
+ */
16
+ var KTDatepickerCalendar = /** @class */ (function () {
17
+ /**
18
+ * Constructor for the KTDatepickerCalendar class
19
+ *
20
+ * @param element - The datepicker element
21
+ * @param stateManager - State manager for the datepicker
22
+ */
23
+ function KTDatepickerCalendar(element, stateManager) {
24
+ this._calendarContainer = null;
25
+ this._dropdownElement = null;
26
+ this._dropdownManager = null;
27
+ this._isVisible = false;
28
+ this._element = element;
29
+ this._stateManager = stateManager;
30
+ this._eventManager = stateManager.getEventManager();
31
+ // Get current date/time
32
+ var now = new Date();
33
+ this._currentViewMonth = now.getMonth();
34
+ this._currentViewYear = now.getFullYear();
35
+ this._initializeCalendar();
36
+ this._setupEventListeners();
37
+ }
38
+ /**
39
+ * Initialize the calendar
40
+ */
41
+ KTDatepickerCalendar.prototype._initializeCalendar = function () {
42
+ var _this = this;
43
+ var config = this._stateManager.getConfig();
44
+ var locale = (0, utils_1.getLocaleConfig)(config);
45
+ // Create calendar container
46
+ this._dropdownElement = document.createElement('div');
47
+ this._dropdownElement.className = 'kt-datepicker-dropdown';
48
+ this._dropdownElement.setAttribute('role', 'dialog');
49
+ this._dropdownElement.setAttribute('aria-modal', 'true');
50
+ this._dropdownElement.setAttribute('aria-label', 'Calendar');
51
+ // Hidden by default
52
+ this._dropdownElement.classList.add('hidden');
53
+ this._dropdownElement.setAttribute('aria-hidden', 'true');
54
+ // Create header for navigation
55
+ var headerElement = document.createElement('div');
56
+ headerElement.className = 'kt-datepicker-calendar-header';
57
+ // Left navigation button
58
+ var leftNavButton = document.createElement('button');
59
+ leftNavButton.type = 'button';
60
+ leftNavButton.className = 'kt-datepicker-calendar-left-nav-btn';
61
+ leftNavButton.setAttribute('aria-label', 'Previous month');
62
+ leftNavButton.innerHTML =
63
+ '<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" /></svg>';
64
+ leftNavButton.addEventListener('click', function () { return _this._navigateMonth(-1); });
65
+ // Month and Year selector (center)
66
+ var headerCenter = document.createElement('div');
67
+ headerCenter.className = 'kt-datepicker-datepicker-header-middle';
68
+ // Right navigation button
69
+ var rightNavButton = document.createElement('button');
70
+ rightNavButton.type = 'button';
71
+ rightNavButton.className = 'kt-dropdown-calendar-right-nav-btn';
72
+ rightNavButton.setAttribute('aria-label', 'Next month');
73
+ rightNavButton.innerHTML =
74
+ '<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" /></svg>';
75
+ rightNavButton.addEventListener('click', function () { return _this._navigateMonth(1); });
76
+ // Assemble header
77
+ headerElement.appendChild(leftNavButton);
78
+ headerElement.appendChild(headerCenter);
79
+ headerElement.appendChild(rightNavButton);
80
+ this._dropdownElement.appendChild(headerElement);
81
+ // Create calendar content container
82
+ this._calendarContainer = document.createElement('div');
83
+ this._calendarContainer.className = 'kt-datepicker-calendar-container';
84
+ this._dropdownElement.appendChild(this._calendarContainer);
85
+ // Add calendar footer with action buttons
86
+ var footerElement = document.createElement('div');
87
+ footerElement.className = 'kt-datepicker-calendar-footer';
88
+ // Today button
89
+ var todayButton = document.createElement('button');
90
+ todayButton.type = 'button';
91
+ todayButton.className = 'kt-datepicker-calendar-today-btn';
92
+ todayButton.textContent = 'Today';
93
+ todayButton.addEventListener('click', function () { return _this._goToToday(); });
94
+ // Clear button
95
+ var clearButton = document.createElement('button');
96
+ clearButton.type = 'button';
97
+ clearButton.className = 'kt-datepicker-calendar-clear-btn';
98
+ clearButton.textContent = 'Clear';
99
+ clearButton.addEventListener('click', function () { return _this._clearSelection(); });
100
+ // Apply button
101
+ var applyButton = document.createElement('button');
102
+ applyButton.type = 'button';
103
+ applyButton.className = 'kt-datepicker-calendar-clear-btn';
104
+ applyButton.textContent = 'Apply';
105
+ applyButton.addEventListener('click', function () { return _this._applySelection(); });
106
+ // Assemble footer
107
+ footerElement.appendChild(todayButton);
108
+ var rightFooter = document.createElement('div');
109
+ rightFooter.className = 'kt-datepicker-calendar-footer-right';
110
+ rightFooter.appendChild(clearButton);
111
+ rightFooter.appendChild(applyButton);
112
+ footerElement.appendChild(rightFooter);
113
+ this._dropdownElement.appendChild(footerElement);
114
+ // Add to document
115
+ this._element.appendChild(this._dropdownElement);
116
+ // Initialize dropdown manager
117
+ this._initDropdownManager();
118
+ // Initialize calendar view
119
+ this._renderCalendarView();
120
+ };
121
+ /**
122
+ * Initialize the dropdown manager
123
+ */
124
+ KTDatepickerCalendar.prototype._initDropdownManager = function () {
125
+ var _this = this;
126
+ var config = this._stateManager.getConfig();
127
+ // Use the display element rather than the input element
128
+ var displayElement = this._element.querySelector('[data-kt-datepicker-display]');
129
+ var inputElement = this._element.querySelector('[data-kt-datepicker-input]');
130
+ var triggerElement = displayElement || inputElement;
131
+ if (triggerElement && this._dropdownElement) {
132
+ this._dropdownManager = new dropdown_1.KTDatepickerDropdown(this._element, triggerElement, this._dropdownElement, config);
133
+ // Add keyboard event listener to the trigger element
134
+ triggerElement.addEventListener('keydown', function (e) {
135
+ if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
136
+ e.preventDefault();
137
+ if (!_this._isVisible) {
138
+ // Open the dropdown
139
+ _this._stateManager.setOpen(true);
140
+ }
141
+ }
142
+ });
143
+ }
144
+ };
145
+ /**
146
+ * Set up event listeners for calendar interactions
147
+ */
148
+ KTDatepickerCalendar.prototype._setupEventListeners = function () {
149
+ var _this = this;
150
+ if (!this._dropdownElement)
151
+ return;
152
+ // Get elements
153
+ var prevMonthBtn = this._dropdownElement.querySelector('button[aria-label="Previous Month"]');
154
+ var nextMonthBtn = this._dropdownElement.querySelector('button[aria-label="Next Month"]');
155
+ // Find buttons by text content instead of using jQuery-style selectors
156
+ var buttons = this._dropdownElement.querySelectorAll('button');
157
+ var todayBtn = null;
158
+ var clearBtn = null;
159
+ var applyBtn = null;
160
+ buttons.forEach(function (btn) {
161
+ var _a;
162
+ var btnText = (_a = btn.textContent) === null || _a === void 0 ? void 0 : _a.trim();
163
+ if (btnText === 'Today')
164
+ todayBtn = btn;
165
+ else if (btnText === 'Clear')
166
+ clearBtn = btn;
167
+ else if (btnText === 'Apply')
168
+ applyBtn = btn;
169
+ });
170
+ var monthYearText = this._dropdownElement.querySelector('.kt-datepicker-calendar-monthyear-text');
171
+ // Month navigation
172
+ if (prevMonthBtn) {
173
+ prevMonthBtn.addEventListener('click', function () { return _this._navigateMonth(-1); });
174
+ }
175
+ if (nextMonthBtn) {
176
+ nextMonthBtn.addEventListener('click', function () { return _this._navigateMonth(1); });
177
+ }
178
+ // Month/year view toggle
179
+ if (monthYearText) {
180
+ monthYearText.addEventListener('click', function () {
181
+ return _this._toggleMonthYearView();
182
+ });
183
+ }
184
+ // Today, Clear, Apply buttons
185
+ if (todayBtn) {
186
+ todayBtn.addEventListener('click', function () { return _this._goToToday(); });
187
+ }
188
+ if (clearBtn) {
189
+ clearBtn.addEventListener('click', function () { return _this._clearSelection(); });
190
+ }
191
+ if (applyBtn) {
192
+ applyBtn.addEventListener('click', function () { return _this._applySelection(); });
193
+ }
194
+ // Handle day selection through event delegation
195
+ if (this._calendarContainer) {
196
+ this._calendarContainer.addEventListener('click', function (e) {
197
+ var target = e.target;
198
+ var dayButton = target.closest('button[data-date]');
199
+ if (dayButton && !dayButton.hasAttribute('disabled')) {
200
+ // Get the date ID directly from the clicked button (YYYY-MM-DD format)
201
+ var dateIdAttr = dayButton.getAttribute('data-date-id');
202
+ if (dateIdAttr) {
203
+ // Parse the ISO date string to get exact year, month, day
204
+ var _a = dateIdAttr
205
+ .split('-')
206
+ .map(function (part) { return parseInt(part, 10); }), year = _a[0], month = _a[1], day = _a[2];
207
+ // Create the date object from the parsed components
208
+ var clickedDate = new Date(year, month - 1, day); // Month is 0-indexed in JS
209
+ clickedDate.setHours(0, 0, 0, 0); // Set to midnight
210
+ // Handle this date directly instead of using day number
211
+ _this._handleDateSelection(clickedDate, dayButton);
212
+ }
213
+ else {
214
+ // Fallback to old method using day number if date-id is not present
215
+ var dateAttr = dayButton.getAttribute('data-date');
216
+ if (dateAttr) {
217
+ var day = parseInt(dateAttr, 10);
218
+ _this._handleDaySelection(day);
219
+ }
220
+ }
221
+ }
222
+ });
223
+ // Add hover effect for range selection
224
+ this._calendarContainer.addEventListener('mouseover', function (e) {
225
+ var state = _this._stateManager.getState();
226
+ var config = _this._stateManager.getConfig();
227
+ // Only apply hover effect in range mode when start date is selected but end date is not
228
+ if (!config.range ||
229
+ !state.selectedDateRange ||
230
+ !state.selectedDateRange.startDate ||
231
+ state.selectedDateRange.endDate) {
232
+ return;
233
+ }
234
+ var target = e.target;
235
+ var dayButton = target.closest('button[data-date]');
236
+ if (dayButton && !dayButton.hasAttribute('disabled')) {
237
+ // Clear any existing hover classes
238
+ _this._clearRangeHoverClasses();
239
+ // Get the proper date from the data-date-id attribute
240
+ var dateIdAttr = dayButton.getAttribute('data-date-id');
241
+ if (dateIdAttr) {
242
+ // Parse the ISO date string (YYYY-MM-DD)
243
+ var _a = dateIdAttr
244
+ .split('-')
245
+ .map(function (part) { return parseInt(part, 10); }), year = _a[0], month = _a[1], day = _a[2];
246
+ var hoverDate = new Date(year, month - 1, day); // Month is 0-indexed in JS Date
247
+ // Apply hover effect between start date and current hover date
248
+ _this._applyRangeHoverEffect(state.selectedDateRange.startDate, hoverDate);
249
+ }
250
+ else {
251
+ // Fallback to old method if data-date-id is not present
252
+ var dateAttr = dayButton.getAttribute('data-date');
253
+ if (dateAttr) {
254
+ var day = parseInt(dateAttr, 10);
255
+ var hoverDate = new Date(state.currentDate);
256
+ hoverDate.setDate(day);
257
+ // Apply hover effect between start date and current hover date
258
+ _this._applyRangeHoverEffect(state.selectedDateRange.startDate, hoverDate);
259
+ }
260
+ }
261
+ }
262
+ });
263
+ // Clear hover effect when mouse leaves the calendar
264
+ this._calendarContainer.addEventListener('mouseleave', function () {
265
+ _this._clearRangeHoverClasses();
266
+ });
267
+ }
268
+ // Listen for state changes
269
+ this._eventManager.addEventListener(events_1.KTDatepickerEventName.STATE_CHANGE, function (e) {
270
+ var _a;
271
+ var detail = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.payload;
272
+ var config = _this._stateManager.getConfig();
273
+ // For range selection, check if we need to keep the dropdown open
274
+ if (config.range && detail && detail.selectedDateRange) {
275
+ var _b = detail.selectedDateRange, startDate = _b.startDate, endDate = _b.endDate;
276
+ // If start date is set but no end date, keep dropdown open
277
+ if (startDate && !endDate) {
278
+ _this._stateManager.getState().isRangeSelectionInProgress = true;
279
+ }
280
+ else if (startDate && endDate) {
281
+ _this._stateManager.getState().isRangeSelectionInProgress = false;
282
+ }
283
+ }
284
+ // Update calendar view
285
+ _this._updateCalendarView();
286
+ });
287
+ // Listen for other state changes
288
+ this._eventManager.addEventListener(events_1.KTDatepickerEventName.VIEW_CHANGE, function () {
289
+ return _this._updateViewMode();
290
+ });
291
+ this._eventManager.addEventListener(events_1.KTDatepickerEventName.OPEN, function () {
292
+ return _this.show();
293
+ });
294
+ this._eventManager.addEventListener(events_1.KTDatepickerEventName.CLOSE, function () {
295
+ return _this.hide();
296
+ });
297
+ this._eventManager.addEventListener(events_1.KTDatepickerEventName.UPDATE, function () {
298
+ return _this._updateCalendarView();
299
+ });
300
+ // Time inputs
301
+ var timeContainer = this._dropdownElement.querySelector('.kt-datepicker-calendar-time-container');
302
+ if (timeContainer) {
303
+ var hourInput = timeContainer.querySelector('input[aria-label="Hour"]');
304
+ var minuteInput = timeContainer.querySelector('input[aria-label="Minute"]');
305
+ var secondInput = timeContainer.querySelector('input[aria-label="Second"]');
306
+ var amButton = timeContainer.querySelector('button[aria-label="AM"]');
307
+ var pmButton = timeContainer.querySelector('button[aria-label="PM"]');
308
+ // Update AM/PM button texts
309
+ var config = this._stateManager.getConfig();
310
+ if (amButton)
311
+ amButton.textContent = config.am;
312
+ if (pmButton)
313
+ pmButton.textContent = config.pm;
314
+ // Time input listeners
315
+ if (hourInput) {
316
+ hourInput.addEventListener('change', function () { return _this._handleTimeChange(); });
317
+ }
318
+ if (minuteInput) {
319
+ minuteInput.addEventListener('change', function () { return _this._handleTimeChange(); });
320
+ }
321
+ if (secondInput) {
322
+ secondInput.addEventListener('change', function () { return _this._handleTimeChange(); });
323
+ }
324
+ // AM/PM selection
325
+ if (amButton) {
326
+ amButton.addEventListener('click', function () { return _this._setAmPm('AM'); });
327
+ }
328
+ if (pmButton) {
329
+ pmButton.addEventListener('click', function () { return _this._setAmPm('PM'); });
330
+ }
331
+ }
332
+ };
333
+ /**
334
+ * Render the calendar view based on current state
335
+ */
336
+ KTDatepickerCalendar.prototype._renderCalendarView = function () {
337
+ var _this = this;
338
+ if (!this._calendarContainer)
339
+ return;
340
+ var state = this._stateManager.getState();
341
+ var config = this._stateManager.getConfig();
342
+ var locale = (0, utils_1.getLocaleConfig)(config);
343
+ // Clear existing content
344
+ this._calendarContainer.innerHTML = '';
345
+ // Set up proper container classes for multiple months view
346
+ if (config.visibleMonths > 1) {
347
+ // For multiple months, use a flex container with no wrapping
348
+ this._calendarContainer.className = 'kt-datepicker-calendar-container-mt';
349
+ }
350
+ else {
351
+ this._calendarContainer.className = 'kt-datepicker-calendar-container';
352
+ }
353
+ // Render based on view mode
354
+ switch (state.viewMode) {
355
+ case 'days':
356
+ // For each visible month, create a calendar
357
+ for (var i = 0; i < config.visibleMonths; i++) {
358
+ // Calculate the month to display
359
+ var tempDate = new Date(state.currentDate);
360
+ tempDate.setMonth(state.currentDate.getMonth() + i);
361
+ var month = tempDate.getMonth();
362
+ var year = tempDate.getFullYear();
363
+ // Create month container
364
+ var monthContainer = document.createElement('div');
365
+ // Set appropriate class based on number of months
366
+ if (config.visibleMonths > 1) {
367
+ // For multiple months, use fixed width and properly spaced
368
+ monthContainer.className = 'kt-datepicker-calendar-month-mt';
369
+ monthContainer.setAttribute('data-month-id', "".concat(month, "-").concat(year));
370
+ }
371
+ else {
372
+ monthContainer.className = 'kt-datepicker-calendar-month';
373
+ }
374
+ // Add month header
375
+ var monthHeader = document.createElement('div');
376
+ monthHeader.className = 'kt-datepicker-calendar-month-header';
377
+ monthHeader.textContent = "".concat(locale.monthNames[month], " ").concat(year);
378
+ monthContainer.appendChild(monthHeader);
379
+ // Generate calendar grid
380
+ monthContainer.innerHTML += (0, templates_1.calendarGridTemplate)(locale, config.weekDays);
381
+ // Get days for the month
382
+ var calendarMatrix = (0, utils_1.generateCalendarMonth)(year, month, config);
383
+ // Render days
384
+ var daysBody = monthContainer.querySelector('tbody');
385
+ if (daysBody) {
386
+ daysBody.innerHTML = this._renderDays(calendarMatrix, month, year);
387
+ }
388
+ // Add to container
389
+ this._calendarContainer.appendChild(monthContainer);
390
+ }
391
+ // Update the month/year display in header
392
+ this._updateMonthYearDisplay();
393
+ break;
394
+ case 'months':
395
+ // Render month selection view with current month
396
+ var currentMonth = state.currentDate.getMonth();
397
+ this._calendarContainer.innerHTML = (0, templates_1.monthSelectionTemplate)(locale, currentMonth);
398
+ // Add click events to month buttons
399
+ var monthButtons = this._calendarContainer.querySelectorAll('button[data-month]');
400
+ monthButtons.forEach(function (btn) {
401
+ btn.addEventListener('click', function (e) {
402
+ var target = e.target;
403
+ var monthIdx = target.getAttribute('data-month');
404
+ if (monthIdx) {
405
+ _this._selectMonth(parseInt(monthIdx, 10));
406
+ }
407
+ });
408
+ });
409
+ break;
410
+ case 'years':
411
+ // Get current year and calculate year range
412
+ var currentYear = state.currentDate.getFullYear();
413
+ var startYear_1 = currentYear - Math.floor(config.visibleYears / 2);
414
+ var endYear_1 = startYear_1 + config.visibleYears - 1;
415
+ // Render year selection view
416
+ this._calendarContainer.innerHTML = (0, templates_1.yearSelectionTemplate)(startYear_1, endYear_1, currentYear);
417
+ // Add click events to year buttons
418
+ var yearButtons = this._calendarContainer.querySelectorAll('button[data-year]');
419
+ yearButtons.forEach(function (btn) {
420
+ btn.addEventListener('click', function (e) {
421
+ var target = e.target;
422
+ var year = target.getAttribute('data-year');
423
+ if (year) {
424
+ _this._selectYear(parseInt(year, 10));
425
+ }
426
+ });
427
+ });
428
+ // Add navigation for year ranges
429
+ var prevYearsBtn = this._calendarContainer.querySelector('button[data-year-nav="prev"]');
430
+ if (prevYearsBtn) {
431
+ prevYearsBtn.addEventListener('click', function () {
432
+ var newYear = startYear_1 - config.visibleYears;
433
+ var newDate = new Date(state.currentDate);
434
+ newDate.setFullYear(newYear);
435
+ _this._stateManager.setCurrentDate(newDate);
436
+ _this._renderCalendarView();
437
+ });
438
+ }
439
+ var nextYearsBtn = this._calendarContainer.querySelector('button[data-year-nav="next"]');
440
+ if (nextYearsBtn) {
441
+ nextYearsBtn.addEventListener('click', function () {
442
+ var newYear = endYear_1 + 1;
443
+ var newDate = new Date(state.currentDate);
444
+ newDate.setFullYear(newYear);
445
+ _this._stateManager.setCurrentDate(newDate);
446
+ _this._renderCalendarView();
447
+ });
448
+ }
449
+ break;
450
+ }
451
+ };
452
+ /**
453
+ * Render days for a calendar month
454
+ *
455
+ * @param calendarMatrix - Matrix of dates for the month
456
+ * @param currentMonth - Current month
457
+ * @param currentYear - Current year
458
+ * @returns HTML string for the days
459
+ */
460
+ KTDatepickerCalendar.prototype._renderDays = function (calendarMatrix, currentMonth, currentYear) {
461
+ var state = this._stateManager.getState();
462
+ var config = this._stateManager.getConfig();
463
+ var today = new Date();
464
+ today.setHours(0, 0, 0, 0);
465
+ var html = '';
466
+ // Loop through each week
467
+ for (var _i = 0, calendarMatrix_1 = calendarMatrix; _i < calendarMatrix_1.length; _i++) {
468
+ var week = calendarMatrix_1[_i];
469
+ html += '<tr>';
470
+ var _loop_1 = function (date) {
471
+ // Determine cell properties
472
+ var isCurrentMonth = date.getMonth() === currentMonth;
473
+ var isToday = (0, utils_1.isSameDay)(date, today);
474
+ var isSelected = false;
475
+ var isRangeStart = false;
476
+ var isRangeEnd = false;
477
+ var isInRange = false;
478
+ // Check if date is selected
479
+ if (state.selectedDate && (0, utils_1.isSameDay)(date, state.selectedDate)) {
480
+ isSelected = true;
481
+ }
482
+ // Check if date is in range for range selection
483
+ if (config.range && state.selectedDateRange) {
484
+ var _b = state.selectedDateRange, startDate = _b.startDate, endDate = _b.endDate;
485
+ if (startDate && (0, utils_1.isSameDay)(date, startDate)) {
486
+ isRangeStart = true;
487
+ isSelected = true;
488
+ }
489
+ if (endDate && (0, utils_1.isSameDay)(date, endDate)) {
490
+ isRangeEnd = true;
491
+ isSelected = true;
492
+ }
493
+ if (startDate && endDate && (0, utils_1.isDateBetween)(date, startDate, endDate)) {
494
+ isInRange = true;
495
+ }
496
+ }
497
+ // Check if date is in multi-date selection
498
+ if (config.multiDateSelection && state.selectedDates.length > 0) {
499
+ isSelected = state.selectedDates.some(function (d) { return (0, utils_1.isSameDay)(date, d); });
500
+ }
501
+ // Check if date is disabled
502
+ var isDisabled = (0, utils_1.isDateDisabled)(date, config);
503
+ // Check if weekend
504
+ var isWeekendDay = (0, utils_1.isWeekend)(date);
505
+ // Get the actual month and year of this date (may differ from currentMonth/currentYear for adjacent months)
506
+ var actualMonth = date.getMonth();
507
+ var actualYear = date.getFullYear();
508
+ // Generate day cell
509
+ html += (0, templates_1.dayTemplate)(date.getDate(), actualMonth, actualYear, isCurrentMonth, isToday, isSelected, isDisabled, isRangeStart, isRangeEnd, isInRange, isWeekendDay);
510
+ };
511
+ // Loop through each day in the week
512
+ for (var _a = 0, week_1 = week; _a < week_1.length; _a++) {
513
+ var date = week_1[_a];
514
+ _loop_1(date);
515
+ }
516
+ html += '</tr>';
517
+ }
518
+ return html;
519
+ };
520
+ /**
521
+ * Update the month and year display in the header
522
+ */
523
+ KTDatepickerCalendar.prototype._updateMonthYearDisplay = function () {
524
+ var _this = this;
525
+ if (!this._dropdownElement)
526
+ return;
527
+ var state = this._stateManager.getState();
528
+ var config = this._stateManager.getConfig();
529
+ var locale = (0, utils_1.getLocaleConfig)(config);
530
+ // Find the calendar header
531
+ var calendarHeader = this._dropdownElement.querySelector('.kt-datepicker-calendar-header');
532
+ if (!calendarHeader)
533
+ return;
534
+ var currentMonth = state.currentDate.getMonth();
535
+ var currentYear = state.currentDate.getFullYear();
536
+ // Update the header with month/year selectors
537
+ calendarHeader.innerHTML = (0, templates_1.monthYearSelectTemplate)(locale, currentMonth, currentYear);
538
+ // Add event listeners to the month and year selectors
539
+ var monthSelector = calendarHeader.querySelector('.kt-datepicker-calendar-month-selector');
540
+ var yearSelector = calendarHeader.querySelector('.kt-datepicker-calendar-year-selector');
541
+ if (monthSelector) {
542
+ monthSelector.addEventListener('click', function () {
543
+ // Switch to months view
544
+ _this._stateManager.setViewMode('months');
545
+ _this._renderCalendarView();
546
+ });
547
+ }
548
+ if (yearSelector) {
549
+ yearSelector.addEventListener('click', function () {
550
+ // Switch to years view
551
+ _this._stateManager.setViewMode('years');
552
+ _this._renderCalendarView();
553
+ });
554
+ }
555
+ };
556
+ /**
557
+ * Navigate to a different month
558
+ *
559
+ * @param offset - Number of months to offset by
560
+ */
561
+ KTDatepickerCalendar.prototype._navigateMonth = function (offset) {
562
+ var state = this._stateManager.getState();
563
+ var newDate = new Date(state.currentDate);
564
+ newDate.setMonth(newDate.getMonth() + offset);
565
+ this._stateManager.setCurrentDate(newDate);
566
+ this._renderCalendarView();
567
+ };
568
+ /**
569
+ * Handle direct date selection (new method that takes the actual date object)
570
+ *
571
+ * @param selectedDate - The exact date that was selected
572
+ * @param clickedButton - The button element that was clicked
573
+ */
574
+ KTDatepickerCalendar.prototype._handleDateSelection = function (selectedDate, clickedButton) {
575
+ var state = this._stateManager.getState();
576
+ var config = this._stateManager.getConfig();
577
+ // Check if the date is disabled (outside min/max range or explicitly disabled)
578
+ if ((0, utils_1.isDateDisabled)(selectedDate, config)) {
579
+ console.log('Date is disabled, ignoring selection:', selectedDate.toISOString());
580
+ return;
581
+ }
582
+ // Create a new date object set to noon of the selected date in local timezone
583
+ // This prevents timezone shifts causing the wrong date to be selected
584
+ var localSelectedDate = new Date(selectedDate);
585
+ localSelectedDate.setHours(12, 0, 0, 0);
586
+ // Set time if enabled
587
+ if (config.enableTime && state.selectedTime) {
588
+ localSelectedDate.setHours(state.selectedTime.hours, state.selectedTime.minutes, state.selectedTime.seconds, 0);
589
+ }
590
+ // Get the current range state before updating
591
+ var currentRange = state.selectedDateRange;
592
+ var isStartingNewRange = !currentRange ||
593
+ !currentRange.startDate ||
594
+ (currentRange.startDate && currentRange.endDate);
595
+ // Determine if we're in a month different from the currently displayed one
596
+ var selectedMonth = localSelectedDate.getMonth();
597
+ var currentViewMonth = state.currentDate.getMonth();
598
+ var isInDifferentMonth = selectedMonth !== currentViewMonth;
599
+ console.log('Selected date:', localSelectedDate.toISOString(), 'Month:', selectedMonth, 'Current view month:', currentViewMonth, 'Day of month:', localSelectedDate.getDate());
600
+ // Call the state manager's setSelectedDate method
601
+ this._stateManager.setSelectedDate(localSelectedDate);
602
+ // After setting the date, get the updated range state
603
+ var updatedRange = state.selectedDateRange;
604
+ // If we're in range mode, handle specific range selection behavior
605
+ if (config.range) {
606
+ if (isStartingNewRange) {
607
+ console.log('Starting new range selection with date:', localSelectedDate.toISOString());
608
+ // If starting a range with a date in a different month, update the view
609
+ if (isInDifferentMonth) {
610
+ this._stateManager.setCurrentDate(localSelectedDate);
611
+ }
612
+ // Explicitly clear any hover effects when starting a new range
613
+ this._clearRangeHoverClasses();
614
+ }
615
+ else {
616
+ // This is the second click to complete a range
617
+ console.log('Completing range selection with date:', localSelectedDate.toISOString());
618
+ // If the selected range spans different months and we have multiple visible months
619
+ if (updatedRange &&
620
+ updatedRange.startDate &&
621
+ updatedRange.endDate &&
622
+ config.visibleMonths > 1) {
623
+ // Determine range start and end months
624
+ var startMonth = updatedRange.startDate.getMonth();
625
+ var endMonth = updatedRange.endDate.getMonth();
626
+ // If range spans multiple months, update view to show the earlier month
627
+ if (startMonth !== endMonth) {
628
+ // Show the earlier month as the first visible month
629
+ var earlierDate = updatedRange.startDate < updatedRange.endDate
630
+ ? updatedRange.startDate
631
+ : updatedRange.endDate;
632
+ this._stateManager.setCurrentDate(earlierDate);
633
+ }
634
+ }
635
+ }
636
+ // Close dropdown only if range selection is complete
637
+ if (updatedRange && updatedRange.startDate && updatedRange.endDate) {
638
+ this._stateManager.setOpen(false);
639
+ }
640
+ }
641
+ else {
642
+ // For single date selection, close the dropdown
643
+ this._stateManager.setOpen(false);
644
+ }
645
+ // Update calendar view to reflect changes
646
+ this._updateCalendarView();
647
+ };
648
+ /**
649
+ * Handle day selection (legacy method, kept for backward compatibility)
650
+ *
651
+ * @param day - Day number
652
+ */
653
+ KTDatepickerCalendar.prototype._handleDaySelection = function (day) {
654
+ var _a;
655
+ var state = this._stateManager.getState();
656
+ var config = this._stateManager.getConfig();
657
+ // Find the clicked button element using data-date attribute
658
+ var dayButtons = (_a = this._calendarContainer) === null || _a === void 0 ? void 0 : _a.querySelectorAll("button[data-date=\"".concat(day, "\"]"));
659
+ if (!dayButtons || dayButtons.length === 0)
660
+ return;
661
+ // First look for the button that matches the clicked target in the current month
662
+ var clickedButton = null;
663
+ // Find the actual button that was likely clicked (prefer current month days)
664
+ for (var i = 0; i < dayButtons.length; i++) {
665
+ var button = dayButtons[i];
666
+ var parentCell = button.closest('td');
667
+ // Check if the day is in the current month (not faded)
668
+ var isCurrentMonth = !button.classList.contains('current') &&
669
+ (!parentCell || !parentCell.classList.contains('current'));
670
+ if (isCurrentMonth) {
671
+ clickedButton = button;
672
+ break;
673
+ }
674
+ }
675
+ // If no current month button found, use the first one
676
+ if (!clickedButton && dayButtons.length > 0) {
677
+ clickedButton = dayButtons[0];
678
+ }
679
+ if (!clickedButton)
680
+ return;
681
+ // Get the proper date from the data-date-id attribute which contains YYYY-MM-DD
682
+ var dateIdAttr = clickedButton.getAttribute('data-date-id');
683
+ if (!dateIdAttr)
684
+ return;
685
+ // Parse the ISO date string
686
+ var _b = dateIdAttr
687
+ .split('-')
688
+ .map(function (part) { return parseInt(part, 10); }), year = _b[0], month = _b[1], dayOfMonth = _b[2];
689
+ // Create the date object with the proper timezone handling
690
+ // We'll set it to noon in local time to avoid timezone issues
691
+ var selectedDate = new Date(year, month - 1, dayOfMonth, 12, 0, 0, 0); // Month is 0-indexed in JS Date, and setting time to noon
692
+ // First check if this date is disabled (outside min/max range)
693
+ if ((0, utils_1.isDateDisabled)(selectedDate, config)) {
694
+ console.log('Date is disabled, ignoring selection:', selectedDate.toISOString());
695
+ return;
696
+ }
697
+ // Use the new direct date selection method
698
+ this._handleDateSelection(selectedDate, clickedButton);
699
+ };
700
+ /**
701
+ * Toggle between days, months, and years view
702
+ */
703
+ KTDatepickerCalendar.prototype._toggleMonthYearView = function () {
704
+ var state = this._stateManager.getState();
705
+ var newMode;
706
+ switch (state.viewMode) {
707
+ case 'days':
708
+ newMode = 'months';
709
+ break;
710
+ case 'months':
711
+ newMode = 'years';
712
+ break;
713
+ case 'years':
714
+ newMode = 'days';
715
+ break;
716
+ default:
717
+ newMode = 'days';
718
+ }
719
+ this._stateManager.setViewMode(newMode);
720
+ this._renderCalendarView();
721
+ };
722
+ /**
723
+ * Update view mode based on state change
724
+ */
725
+ KTDatepickerCalendar.prototype._updateViewMode = function () {
726
+ this._renderCalendarView();
727
+ };
728
+ /**
729
+ * Go to today's date
730
+ */
731
+ KTDatepickerCalendar.prototype._goToToday = function () {
732
+ var today = new Date();
733
+ this._stateManager.setCurrentDate(today);
734
+ this._renderCalendarView();
735
+ };
736
+ /**
737
+ * Clear date selection
738
+ */
739
+ KTDatepickerCalendar.prototype._clearSelection = function () {
740
+ this._stateManager.setSelectedDate(null);
741
+ this._updateCalendarView();
742
+ };
743
+ /**
744
+ * Apply current selection and close dropdown
745
+ */
746
+ KTDatepickerCalendar.prototype._applySelection = function () {
747
+ var state = this._stateManager.getState();
748
+ var config = this._stateManager.getConfig();
749
+ // For range selection, check if range selection is in progress
750
+ if (config.range && state.isRangeSelectionInProgress) {
751
+ console.log('Apply button clicked, but range selection in progress - keeping dropdown open');
752
+ // Don't close when range selection is in progress
753
+ return;
754
+ }
755
+ // Close dropdown for other cases
756
+ this._stateManager.setOpen(false);
757
+ };
758
+ /**
759
+ * Handle time input changes
760
+ */
761
+ KTDatepickerCalendar.prototype._handleTimeChange = function () {
762
+ if (!this._dropdownElement)
763
+ return;
764
+ var timeContainer = this._dropdownElement.querySelector('.kt-datepicker-calendar-time-container');
765
+ if (!timeContainer)
766
+ return;
767
+ var hourInput = timeContainer.querySelector('input[aria-label="Hour"]');
768
+ var minuteInput = timeContainer.querySelector('input[aria-label="Minute"]');
769
+ var secondInput = timeContainer.querySelector('input[aria-label="Second"]');
770
+ var amButton = timeContainer.querySelector('button[aria-label="AM"]');
771
+ var pmButton = timeContainer.querySelector('button[aria-label="PM"]');
772
+ if (!hourInput || !minuteInput || !secondInput)
773
+ return;
774
+ // Get input values
775
+ var hours = parseInt(hourInput.value, 10);
776
+ var minutes = parseInt(minuteInput.value, 10);
777
+ var seconds = parseInt(secondInput.value, 10);
778
+ // Validate values
779
+ var isValidHours = !isNaN(hours) && hours >= 0 && hours <= 23;
780
+ var isValidMinutes = !isNaN(minutes) && minutes >= 0 && minutes <= 59;
781
+ var isValidSeconds = !isNaN(seconds) && seconds >= 0 && seconds <= 59;
782
+ if (!isValidHours || !isValidMinutes || !isValidSeconds)
783
+ return;
784
+ // Check if using 12-hour format and adjust for AM/PM
785
+ var isPM = amButton && amButton.classList.contains('bg-blue-500');
786
+ if (isPM && hours < 12) {
787
+ hours += 12;
788
+ }
789
+ else if (!isPM && hours === 12) {
790
+ hours = 0;
791
+ }
792
+ // Update time in state
793
+ this._stateManager.setSelectedTime({
794
+ hours: hours,
795
+ minutes: minutes,
796
+ seconds: seconds,
797
+ ampm: isPM ? 'PM' : 'AM',
798
+ });
799
+ // Update selected date with new time if a date is selected
800
+ var state = this._stateManager.getState();
801
+ if (state.selectedDate) {
802
+ var updatedDate = new Date(state.selectedDate);
803
+ updatedDate.setHours(hours, minutes, seconds, 0);
804
+ this._stateManager.setSelectedDate(updatedDate);
805
+ }
806
+ };
807
+ /**
808
+ * Set AM/PM selection
809
+ *
810
+ * @param period - 'AM' or 'PM'
811
+ */
812
+ KTDatepickerCalendar.prototype._setAmPm = function (period) {
813
+ if (!this._dropdownElement)
814
+ return;
815
+ var timeContainer = this._dropdownElement.querySelector('.py-3.border-t');
816
+ if (!timeContainer)
817
+ return;
818
+ var amButton = timeContainer.querySelector('button[aria-label="AM"]');
819
+ var pmButton = timeContainer.querySelector('button[aria-label="PM"]');
820
+ if (!amButton || !pmButton)
821
+ return;
822
+ // Update button states
823
+ if (period === 'AM') {
824
+ amButton.classList.add('bg-blue-500', 'text-white', 'border-blue-500');
825
+ amButton.classList.remove('bg-gray-50', 'hover:bg-gray-100');
826
+ pmButton.classList.remove('bg-blue-500', 'text-white', 'border-blue-500');
827
+ pmButton.classList.add('bg-gray-50', 'hover:bg-gray-100');
828
+ }
829
+ else {
830
+ amButton.classList.remove('bg-blue-500', 'text-white', 'border-blue-500');
831
+ amButton.classList.add('bg-gray-50', 'hover:bg-gray-100');
832
+ pmButton.classList.add('bg-blue-500', 'text-white', 'border-blue-500');
833
+ pmButton.classList.remove('bg-gray-50', 'hover:bg-gray-100');
834
+ }
835
+ // Update time
836
+ this._handleTimeChange();
837
+ };
838
+ /**
839
+ * Select a month
840
+ *
841
+ * @param month - Month index (0-11)
842
+ */
843
+ KTDatepickerCalendar.prototype._selectMonth = function (month) {
844
+ var state = this._stateManager.getState();
845
+ var config = this._stateManager.getConfig();
846
+ var newDate = new Date(state.currentDate);
847
+ newDate.setMonth(month);
848
+ this._stateManager.setCurrentDate(newDate);
849
+ // Only change view mode if keepViewModeOnSelection is false
850
+ if (!config.keepViewModeOnSelection) {
851
+ this._stateManager.setViewMode('days');
852
+ }
853
+ this._renderCalendarView();
854
+ };
855
+ /**
856
+ * Select a year
857
+ *
858
+ * @param year - Year value
859
+ */
860
+ KTDatepickerCalendar.prototype._selectYear = function (year) {
861
+ var state = this._stateManager.getState();
862
+ var config = this._stateManager.getConfig();
863
+ var newDate = new Date(state.currentDate);
864
+ newDate.setFullYear(year);
865
+ this._stateManager.setCurrentDate(newDate);
866
+ // Only change view mode if keepViewModeOnSelection is false
867
+ if (!config.keepViewModeOnSelection) {
868
+ this._stateManager.setViewMode('months');
869
+ }
870
+ this._renderCalendarView();
871
+ };
872
+ /**
873
+ * Update calendar view to reflect state changes
874
+ */
875
+ KTDatepickerCalendar.prototype._updateCalendarView = function () {
876
+ this._renderCalendarView();
877
+ this._updateTimeDisplay();
878
+ };
879
+ /**
880
+ * Update time inputs to reflect current time selection
881
+ */
882
+ KTDatepickerCalendar.prototype._updateTimeDisplay = function () {
883
+ if (!this._dropdownElement)
884
+ return;
885
+ var state = this._stateManager.getState();
886
+ var config = this._stateManager.getConfig();
887
+ // Skip if time is not enabled
888
+ if (!config.enableTime)
889
+ return;
890
+ var timeContainer = this._dropdownElement.querySelector('.py-3.border-t');
891
+ if (!timeContainer)
892
+ return;
893
+ var hourInput = timeContainer.querySelector('input[aria-label="Hour"]');
894
+ var minuteInput = timeContainer.querySelector('input[aria-label="Minute"]');
895
+ var secondInput = timeContainer.querySelector('input[aria-label="Second"]');
896
+ var amButton = timeContainer.querySelector('button[aria-label="AM"]');
897
+ var pmButton = timeContainer.querySelector('button[aria-label="PM"]');
898
+ // Get time from selected date or default to current time
899
+ var hours = 0;
900
+ var minutes = 0;
901
+ var seconds = 0;
902
+ var isAM = true;
903
+ if (state.selectedTime) {
904
+ hours = state.selectedTime.hours;
905
+ minutes = state.selectedTime.minutes;
906
+ seconds = state.selectedTime.seconds;
907
+ isAM = state.selectedTime.ampm === 'AM';
908
+ }
909
+ else if (state.selectedDate) {
910
+ hours = state.selectedDate.getHours();
911
+ minutes = state.selectedDate.getMinutes();
912
+ seconds = state.selectedDate.getSeconds();
913
+ isAM = hours < 12;
914
+ }
915
+ else {
916
+ var now = new Date();
917
+ hours = now.getHours();
918
+ minutes = now.getMinutes();
919
+ seconds = now.getSeconds();
920
+ isAM = hours < 12;
921
+ }
922
+ // Adjust for 12-hour display if needed
923
+ var displayHours = hours;
924
+ if (hourInput && config.timeFormat.includes('h')) {
925
+ displayHours = hours % 12;
926
+ if (displayHours === 0)
927
+ displayHours = 12;
928
+ }
929
+ // Update input values
930
+ if (hourInput)
931
+ hourInput.value =
932
+ config.forceLeadingZero && displayHours < 10
933
+ ? "0".concat(displayHours)
934
+ : "".concat(displayHours);
935
+ if (minuteInput)
936
+ minuteInput.value =
937
+ config.forceLeadingZero && minutes < 10 ? "0".concat(minutes) : "".concat(minutes);
938
+ if (secondInput)
939
+ secondInput.value =
940
+ config.forceLeadingZero && seconds < 10 ? "0".concat(seconds) : "".concat(seconds);
941
+ // Update AM/PM buttons
942
+ if (amButton && pmButton) {
943
+ if (isAM) {
944
+ amButton.classList.add('bg-blue-500', 'text-white', 'border-blue-500');
945
+ amButton.classList.remove('bg-gray-50', 'hover:bg-gray-100');
946
+ pmButton.classList.remove('bg-blue-500', 'text-white', 'border-blue-500');
947
+ pmButton.classList.add('bg-gray-50', 'hover:bg-gray-100');
948
+ }
949
+ else {
950
+ amButton.classList.remove('bg-blue-500', 'text-white', 'border-blue-500');
951
+ amButton.classList.add('bg-gray-50', 'hover:bg-gray-100');
952
+ pmButton.classList.add('bg-blue-500', 'text-white', 'border-blue-500');
953
+ pmButton.classList.remove('bg-gray-50', 'hover:bg-gray-100');
954
+ }
955
+ }
956
+ };
957
+ /**
958
+ * Show the calendar dropdown
959
+ */
960
+ KTDatepickerCalendar.prototype.show = function () {
961
+ if (!this._dropdownElement || this._isVisible)
962
+ return;
963
+ // Ensure we're in days view
964
+ var state = this._stateManager.getState();
965
+ if (state.viewMode !== 'days') {
966
+ this._stateManager.setViewMode('days');
967
+ }
968
+ // Render calendar before showing
969
+ this._renderCalendarView();
970
+ this._updateTimeDisplay();
971
+ // Show dropdown using dropdown manager
972
+ if (this._dropdownManager) {
973
+ this._dropdownManager.open();
974
+ this._isVisible = true;
975
+ }
976
+ };
977
+ /**
978
+ * Hide the calendar dropdown
979
+ */
980
+ KTDatepickerCalendar.prototype.hide = function () {
981
+ if (!this._dropdownElement || !this._isVisible)
982
+ return;
983
+ // Hide dropdown using dropdown manager
984
+ if (this._dropdownManager) {
985
+ this._dropdownManager.close();
986
+ this._isVisible = false;
987
+ }
988
+ };
989
+ /**
990
+ * Update dropdown position
991
+ */
992
+ KTDatepickerCalendar.prototype.updatePosition = function () {
993
+ if (this._dropdownManager) {
994
+ this._dropdownManager.updatePosition();
995
+ }
996
+ };
997
+ /**
998
+ * Clear range hover classes from all day cells
999
+ */
1000
+ KTDatepickerCalendar.prototype._clearRangeHoverClasses = function () {
1001
+ if (!this._calendarContainer)
1002
+ return;
1003
+ // Find all day cells with hover classes across all month containers
1004
+ var hoverCells = this._calendarContainer.querySelectorAll('.bg-blue-50, .text-blue-600, button[data-hover-date="true"]');
1005
+ hoverCells.forEach(function (cell) {
1006
+ cell.classList.remove('bg-blue-50', 'text-blue-600');
1007
+ });
1008
+ };
1009
+ /**
1010
+ * Apply hover effect to show potential range selection
1011
+ *
1012
+ * @param startDate - Start date of the range
1013
+ * @param hoverDate - Current date being hovered
1014
+ */
1015
+ KTDatepickerCalendar.prototype._applyRangeHoverEffect = function (startDate, hoverDate) {
1016
+ var _this = this;
1017
+ if (!this._calendarContainer)
1018
+ return;
1019
+ // Clear any existing hover effects first
1020
+ this._clearRangeHoverClasses();
1021
+ // Normalize dates to midnight for comparison
1022
+ var startDateMidnight = new Date(startDate);
1023
+ startDateMidnight.setHours(0, 0, 0, 0);
1024
+ var hoverDateMidnight = new Date(hoverDate);
1025
+ hoverDateMidnight.setHours(0, 0, 0, 0);
1026
+ // Ensure proper order for comparison (start date <= end date)
1027
+ var rangeStart = startDateMidnight <= hoverDateMidnight
1028
+ ? startDateMidnight
1029
+ : hoverDateMidnight;
1030
+ var rangeEnd = startDateMidnight <= hoverDateMidnight
1031
+ ? hoverDateMidnight
1032
+ : startDateMidnight;
1033
+ // Generate all dates in the range as ISO strings (YYYY-MM-DD)
1034
+ var dateRangeISOStrings = [];
1035
+ var currentDate = new Date(rangeStart);
1036
+ while (currentDate <= rangeEnd) {
1037
+ // Format as YYYY-MM-DD
1038
+ var year = currentDate.getFullYear();
1039
+ var month = String(currentDate.getMonth() + 1).padStart(2, '0');
1040
+ var day = String(currentDate.getDate()).padStart(2, '0');
1041
+ dateRangeISOStrings.push("".concat(year, "-").concat(month, "-").concat(day));
1042
+ // Move to the next day
1043
+ currentDate.setDate(currentDate.getDate() + 1);
1044
+ }
1045
+ // Apply hover effect to all day cells in the range using the date-id attribute
1046
+ dateRangeISOStrings.forEach(function (dateStr) {
1047
+ // Find the day cell with matching date-id
1048
+ var dayCells = _this._calendarContainer.querySelectorAll("button[data-date-id=\"".concat(dateStr, "\"]"));
1049
+ dayCells.forEach(function (cell) {
1050
+ // Skip if this is already a selected date (has blue background)
1051
+ if (cell.classList.contains('bg-blue-600'))
1052
+ return;
1053
+ // Apply hover effect
1054
+ cell.classList.add('bg-blue-50', 'text-blue-600');
1055
+ });
1056
+ });
1057
+ };
1058
+ return KTDatepickerCalendar;
1059
+ }());
1060
+ exports.KTDatepickerCalendar = KTDatepickerCalendar;
1061
+ //# sourceMappingURL=calendar.js.map