@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,226 @@
1
+ "use strict";
2
+ /**
3
+ * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
4
+ * Copyright 2025 by Keenthemes Inc
5
+ */
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19
+ if (ar || !(i in from)) {
20
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21
+ ar[i] = from[i];
22
+ }
23
+ }
24
+ return to.concat(ar || Array.prototype.slice.call(from));
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.SelectOptionDefaultConfig = exports.KTSelectState = exports.DefaultConfig = void 0;
28
+ exports.DefaultConfig = {
29
+ // ...other config options
30
+ loadMoreText: 'Load more...',
31
+ // General Display
32
+ debug: false,
33
+ placeholder: 'Select an option', // Default placeholder text when no option is selected
34
+ dropdownZindex: null, // Initial z-index value for the dropdown
35
+ // Data Handling
36
+ items: [], // Static list of options
37
+ isLoading: false, // Indicates if options are being loaded asynchronously
38
+ onFetch: null, // Callback function to fetch options asynchronously
39
+ // Remote Data Configuration
40
+ remote: false, // Enable/disable remote data fetching
41
+ dataUrl: null, // URL to fetch options from
42
+ apiDataProperty: null, // Property in the response object that contains the options
43
+ remoteErrorMessage: 'Failed to load data', // Error message to display if remote data fetch fails
44
+ // Field Mapping
45
+ dataValueField: null, // Property in the option object that contains the value (default: 'id')
46
+ dataFieldText: null, // Property in the option object that contains the text (default: 'title')
47
+ dataFieldDescription: null, // Property in the option object that contains the description
48
+ dataFieldIcon: null, // Property in the option object that contains the icon
49
+ dataFieldIconWidth: null, // Property in the option object that contains the icon width
50
+ dataFieldIconHeight: null, // Property in the option object that contains the icon height
51
+ // Search Configuration
52
+ searchParam: '', // Query parameter for API search requests
53
+ searchDebounce: 300, // Debounce delay for search (in ms)
54
+ // Pagination Configuration
55
+ pagination: false, // Enable/disable pagination for remote data
56
+ paginationLimit: 10, // Items per page
57
+ paginationPageParam: 'page', // Parameter name for page number
58
+ paginationLimitParam: 'limit', // Parameter name for items per page
59
+ paginationTotalParam: 'total', // Parameter name for total items
60
+ // Selection Behavior
61
+ multiple: false, // Enable/disable multi-select
62
+ maxSelections: null, // Maximum number of selections allowed in multi-select mode (null for unlimited)
63
+ closeOnSelect: true, // Close the dropdown after selecting an option (single-select only)
64
+ disabled: false, // Disable the select component
65
+ isRequired: false, // Make selection required
66
+ mode: null, // Select mode: tags or combobox
67
+ // Search Functionality
68
+ enableSearch: false, // Enable/disable search functionality within the dropdown
69
+ searchPlaceholder: 'Search...', // Placeholder text for the search input
70
+ searchAutofocus: true, // Autofocus on search input when dropdown opens
71
+ searchMinLength: 0, // Minimum characters required to trigger search
72
+ searchMaxItems: 50, // Maximum number of search results to display
73
+ searchNotFoundText: 'No results found', // Text to display when no search results are found
74
+ searchHighlight: true, // Highlight matching search terms within the options
75
+ clearSearchOnClose: true, // Clear search input when dropdown closes
76
+ // Multi-Select Display
77
+ selectAllText: 'Select all', // Text for the "Select All" option (if implemented)
78
+ clearAllText: 'Clear all', // Text for the "Clear All" option (if implemented)
79
+ showSelectedCount: true, // Show the number of selected options in multi-select mode
80
+ renderSelected: null, // Custom function to render the selected value(s) in the display area
81
+ // Accessibility & Usability
82
+ label: 'Select an option', // Label for the select component (for screen readers)
83
+ height: 250, // Maximum height of the dropdown menu in pixels (if exceeded, a scrollbar will appear)
84
+ // Dropdown Configuration
85
+ dropdownPlacement: null,
86
+ dropdownFlip: false,
87
+ dropdownPreventOverflow: false,
88
+ dropdownStrategy: null,
89
+ dropdownWidth: null, // Custom width for dropdown (e.g., '300px'), null to match toggle element width
90
+ // Styling
91
+ focusClass: 'option-focused',
92
+ hoverClass: 'hovered',
93
+ bgClass: 'bg-blue-50',
94
+ fontClass: 'font-medium',
95
+ };
96
+ var KTSelectState = /** @class */ (function () {
97
+ function KTSelectState(config) {
98
+ this._selectedOptions = [];
99
+ this._config = this._initDefaultConfig(config);
100
+ }
101
+ KTSelectState.prototype._initDefaultConfig = function (config) {
102
+ return __assign(__assign({}, exports.DefaultConfig), config);
103
+ };
104
+ KTSelectState.prototype.setItems = function (items, query) {
105
+ var _this = this;
106
+ return new Promise(function (resolve, reject) {
107
+ if (items) {
108
+ _this._config.items = items;
109
+ resolve();
110
+ }
111
+ else if (_this._config.dataUrl) {
112
+ _this._fetchRemoteData(query)
113
+ .then(resolve) // Resolve after _fetchRemoteData completes
114
+ .catch(reject);
115
+ }
116
+ else if (_this._config.onFetch) {
117
+ _this._config.isLoading = true;
118
+ _this._config
119
+ .onFetch(query)
120
+ .then(function (items) {
121
+ _this._config.items = items;
122
+ resolve(); // Resolve after onFetch completes
123
+ })
124
+ .catch(function (error) {
125
+ console.error('Error fetching data:', error);
126
+ reject(error); // Reject on error
127
+ })
128
+ .finally(function () {
129
+ _this._config.isLoading = false;
130
+ });
131
+ }
132
+ else {
133
+ resolve();
134
+ }
135
+ });
136
+ };
137
+ KTSelectState.prototype._fetchRemoteData = function (query) {
138
+ var _this = this;
139
+ this._config.isLoading = true; // Show loading indicator
140
+ var url = this._config.dataUrl;
141
+ if (query) {
142
+ url += "?".concat(this._config.searchParam, "=").concat(encodeURIComponent(query));
143
+ }
144
+ return fetch(url)
145
+ .then(function (response) { return response.json(); })
146
+ .then(function (data) {
147
+ if (_this._config.apiDataProperty) {
148
+ // Extract the data property from the response
149
+ if (_this._config.apiDataProperty in data) {
150
+ data = data[_this._config.apiDataProperty];
151
+ }
152
+ else {
153
+ console.error('Error fetching data:', "Property '".concat(_this._config.apiDataProperty, "' not found in response"));
154
+ return;
155
+ }
156
+ }
157
+ _this._config.items = data;
158
+ })
159
+ .catch(function (error) {
160
+ console.error('Error fetching data:', error);
161
+ // Handle error (e.g., display an error message)
162
+ })
163
+ .finally(function () {
164
+ _this._config.isLoading = false; // Hide loading indicator
165
+ });
166
+ };
167
+ KTSelectState.prototype.getItems = function () {
168
+ return this._config.items || [];
169
+ };
170
+ KTSelectState.prototype.setItemsFromOptions = function (options) {
171
+ this._config.items = options.map(function (option) { return ({
172
+ id: option.value,
173
+ title: option.textContent || '',
174
+ // Add other properties from option element if needed
175
+ }); });
176
+ };
177
+ KTSelectState.prototype.getConfig = function () {
178
+ return this._config;
179
+ };
180
+ KTSelectState.prototype.setSelectedOptions = function (value) {
181
+ if (this._config.multiple &&
182
+ typeof value === 'string' &&
183
+ !this._selectedOptions.includes(value)) {
184
+ this._selectedOptions.push(value);
185
+ }
186
+ else if (!this._config.multiple) {
187
+ // For single select, replace the previous selection with the new one
188
+ this._selectedOptions = typeof value === 'string' ? [value] : [value[0]];
189
+ }
190
+ else if (this._config.multiple && Array.isArray(value)) {
191
+ // For multiple select with array input, use the provided array
192
+ this._selectedOptions = __spreadArray([], value, true);
193
+ }
194
+ };
195
+ KTSelectState.prototype.toggleSelectedOptions = function (value) {
196
+ if (!this._config.multiple) {
197
+ // For non-multiple, always set the new value
198
+ this._selectedOptions = [value];
199
+ return;
200
+ }
201
+ // For multiple selection, toggle the value
202
+ var index = this._selectedOptions.indexOf(value);
203
+ if (index > -1) {
204
+ this._selectedOptions.splice(index, 1);
205
+ }
206
+ else {
207
+ this._selectedOptions.push(value);
208
+ }
209
+ };
210
+ KTSelectState.prototype.getSelectedOptions = function () {
211
+ return this._selectedOptions;
212
+ };
213
+ KTSelectState.prototype.isSelected = function (value) {
214
+ return this._selectedOptions.includes(value);
215
+ };
216
+ KTSelectState.prototype.modifyConfig = function (config) {
217
+ this._config = __assign(__assign({}, this._config), config);
218
+ };
219
+ return KTSelectState;
220
+ }());
221
+ exports.KTSelectState = KTSelectState;
222
+ exports.SelectOptionDefaultConfig = {
223
+ description: '',
224
+ icon: null,
225
+ };
226
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/components/select/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,429 @@
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.KTSelectDropdown = void 0;
23
+ var core_1 = require("@popperjs/core");
24
+ var dom_1 = require("../../helpers/dom");
25
+ var data_1 = require("../../helpers/data");
26
+ var component_1 = require("../component");
27
+ var utils_1 = require("./utils");
28
+ /**
29
+ * KTSelectDropdown
30
+ *
31
+ * A specialized dropdown implementation for the KTSelect component.
32
+ * This module handles the dropdown functionality for the select component,
33
+ * including positioning, showing/hiding, and keyboard navigation.
34
+ */
35
+ var KTSelectDropdown = /** @class */ (function (_super) {
36
+ __extends(KTSelectDropdown, _super);
37
+ /**
38
+ * Constructor
39
+ * @param element The parent element (select wrapper)
40
+ * @param toggleElement The element that triggers the dropdown
41
+ * @param dropdownElement The dropdown content element
42
+ * @param config The configuration options
43
+ */
44
+ function KTSelectDropdown(element, toggleElement, dropdownElement, config) {
45
+ var _this = _super.call(this) || this;
46
+ _this._name = 'select-dropdown';
47
+ // State
48
+ _this._isOpen = false;
49
+ _this._isTransitioning = false;
50
+ _this._popperInstance = null;
51
+ _this._element = element;
52
+ _this._toggleElement = toggleElement;
53
+ _this._dropdownElement = dropdownElement;
54
+ _this._config = config;
55
+ _this._eventManager = new utils_1.EventManager();
56
+ _this._focusManager = new utils_1.FocusManager(dropdownElement, '[data-kt-select-option]', config);
57
+ _this._setupEventListeners();
58
+ return _this;
59
+ }
60
+ /**
61
+ * Set up event listeners for the dropdown
62
+ */
63
+ KTSelectDropdown.prototype._setupEventListeners = function () {
64
+ // Toggle click
65
+ this._eventManager.addListener(this._toggleElement, 'click', this._handleToggleClick.bind(this));
66
+ // Keyboard navigation
67
+ this._eventManager.addListener(this._element, 'keydown', this._handleKeyDown.bind(this));
68
+ // Close on outside click
69
+ this._eventManager.addListener(document, 'click', this._handleOutsideClick.bind(this));
70
+ };
71
+ /**
72
+ * Handle toggle element click
73
+ */
74
+ KTSelectDropdown.prototype._handleToggleClick = function (event) {
75
+ event.preventDefault();
76
+ event.stopPropagation();
77
+ this.toggle();
78
+ };
79
+ /**
80
+ * Handle keyboard events
81
+ */
82
+ KTSelectDropdown.prototype._handleKeyDown = function (event) {
83
+ if (!this._isOpen)
84
+ return;
85
+ switch (event.key) {
86
+ case 'Escape':
87
+ event.preventDefault();
88
+ this.close();
89
+ this._toggleElement.focus();
90
+ break;
91
+ case 'ArrowDown':
92
+ event.preventDefault();
93
+ this._focusManager.focusNext();
94
+ break;
95
+ case 'ArrowUp':
96
+ event.preventDefault();
97
+ this._focusManager.focusPrevious();
98
+ break;
99
+ case 'Home':
100
+ event.preventDefault();
101
+ // Focus first visible option
102
+ var firstOption = this._focusManager.getVisibleOptions()[0];
103
+ if (firstOption) {
104
+ this._focusManager.applyFocus(firstOption);
105
+ this._focusManager.scrollIntoView(firstOption);
106
+ }
107
+ break;
108
+ case 'End':
109
+ event.preventDefault();
110
+ // Focus last visible option
111
+ var visibleOptions = this._focusManager.getVisibleOptions();
112
+ var lastOption = visibleOptions[visibleOptions.length - 1];
113
+ if (lastOption) {
114
+ this._focusManager.applyFocus(lastOption);
115
+ this._focusManager.scrollIntoView(lastOption);
116
+ }
117
+ break;
118
+ }
119
+ };
120
+ /**
121
+ * Handle clicks outside the dropdown
122
+ */
123
+ KTSelectDropdown.prototype._handleOutsideClick = function (event) {
124
+ if (!this._isOpen)
125
+ return;
126
+ var target = event.target;
127
+ if (!this._element.contains(target) &&
128
+ !this._dropdownElement.contains(target)) {
129
+ this.close();
130
+ }
131
+ };
132
+ /**
133
+ * Set width of dropdown based on toggle element
134
+ */
135
+ KTSelectDropdown.prototype._setDropdownWidth = function () {
136
+ if (!this._dropdownElement || !this._toggleElement)
137
+ return;
138
+ // Check if width is configured
139
+ if (this._config.dropdownWidth) {
140
+ // If custom width is set, use that
141
+ this._dropdownElement.style.width = this._config.dropdownWidth;
142
+ }
143
+ else {
144
+ // Otherwise, match toggle element width for a cleaner appearance
145
+ var toggleWidth = this._toggleElement.offsetWidth;
146
+ this._dropdownElement.style.width = "".concat(toggleWidth, "px");
147
+ }
148
+ };
149
+ /**
150
+ * Initialize the Popper instance for dropdown positioning
151
+ */
152
+ KTSelectDropdown.prototype._initPopper = function () {
153
+ // Destroy existing popper instance if it exists
154
+ this._destroyPopper();
155
+ // Default offset
156
+ var offsetValue = '0, 5';
157
+ // Get configuration options
158
+ var placement = this._config.dropdownPlacement || 'bottom-start';
159
+ var strategy = this._config.dropdownStrategy || 'fixed';
160
+ var preventOverflow = this._config.dropdownPreventOverflow !== false;
161
+ var flip = this._config.dropdownFlip !== false;
162
+ // Create new popper instance
163
+ this._popperInstance = (0, core_1.createPopper)(this._toggleElement, this._dropdownElement, {
164
+ placement: placement,
165
+ strategy: strategy,
166
+ modifiers: [
167
+ {
168
+ name: 'offset',
169
+ options: {
170
+ offset: this._parseOffset(offsetValue),
171
+ },
172
+ },
173
+ {
174
+ name: 'preventOverflow',
175
+ options: {
176
+ boundary: 'viewport',
177
+ altAxis: preventOverflow,
178
+ },
179
+ },
180
+ {
181
+ name: 'flip',
182
+ options: {
183
+ enabled: flip,
184
+ fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],
185
+ },
186
+ },
187
+ {
188
+ name: 'sameWidth',
189
+ enabled: !this._config.dropdownWidth,
190
+ phase: 'beforeWrite',
191
+ requires: ['computeStyles'],
192
+ fn: function (_a) {
193
+ var state = _a.state;
194
+ state.styles.popper.width = "".concat(state.rects.reference.width, "px");
195
+ },
196
+ effect: function (_a) {
197
+ var state = _a.state;
198
+ // Add type guard for HTMLElement
199
+ var reference = state.elements.reference;
200
+ if (reference && 'offsetWidth' in reference) {
201
+ state.elements.popper.style.width = "".concat(reference.offsetWidth, "px");
202
+ }
203
+ },
204
+ },
205
+ ],
206
+ });
207
+ };
208
+ /**
209
+ * Parse offset string into an array of numbers
210
+ */
211
+ KTSelectDropdown.prototype._parseOffset = function (offset) {
212
+ return offset.split(',').map(function (value) { return parseInt(value.trim(), 10); });
213
+ };
214
+ /**
215
+ * Destroy the Popper instance
216
+ */
217
+ KTSelectDropdown.prototype._destroyPopper = function () {
218
+ if (this._popperInstance) {
219
+ this._popperInstance.destroy();
220
+ this._popperInstance = null;
221
+ }
222
+ };
223
+ /**
224
+ * Update dropdown position
225
+ */
226
+ KTSelectDropdown.prototype.updatePosition = function () {
227
+ if (this._popperInstance) {
228
+ this._popperInstance.update();
229
+ }
230
+ };
231
+ /**
232
+ * Toggle the dropdown
233
+ */
234
+ KTSelectDropdown.prototype.toggle = function () {
235
+ if (this._config.debug)
236
+ console.log('KTSelectDropdown.toggle called - isOpen:', this._isOpen);
237
+ if (this._isTransitioning) {
238
+ if (this._config.debug)
239
+ console.log('KTSelectDropdown.toggle - ignoring during transition');
240
+ return;
241
+ }
242
+ if (this._isOpen) {
243
+ this.close();
244
+ }
245
+ else {
246
+ this.open();
247
+ }
248
+ };
249
+ /**
250
+ * Open the dropdown
251
+ */
252
+ KTSelectDropdown.prototype.open = function () {
253
+ var _this = this;
254
+ if (this._isOpen || this._isTransitioning)
255
+ return;
256
+ // Fire before show event
257
+ var beforeShowEvent = new CustomEvent('kt.select.dropdown.show', {
258
+ bubbles: true,
259
+ cancelable: true,
260
+ });
261
+ this._element.dispatchEvent(beforeShowEvent);
262
+ if (beforeShowEvent.defaultPrevented)
263
+ return;
264
+ // Begin opening transition
265
+ this._isTransitioning = true;
266
+ // Set initial styles - remove display: block and use class toggling instead
267
+ this._dropdownElement.classList.remove('hidden');
268
+ this._dropdownElement.style.opacity = '0';
269
+ // Set dropdown width
270
+ this._setDropdownWidth();
271
+ // Make sure the element is visible for transitioning
272
+ dom_1.default.reflow(this._dropdownElement);
273
+ // Apply z-index if configured
274
+ if (this._config.dropdownZindex) {
275
+ this._dropdownElement.style.zIndex =
276
+ this._config.dropdownZindex.toString();
277
+ }
278
+ else {
279
+ // Auto-calculate z-index
280
+ var parentZindex = dom_1.default.getHighestZindex(this._element);
281
+ if (parentZindex) {
282
+ this._dropdownElement.style.zIndex = (parentZindex + 1).toString();
283
+ }
284
+ }
285
+ // Initialize popper for positioning
286
+ this._initPopper();
287
+ // Add active classes
288
+ this._dropdownElement.classList.add('open');
289
+ this._toggleElement.classList.add('active');
290
+ this._toggleElement.setAttribute('aria-expanded', 'true');
291
+ // Start transition
292
+ this._dropdownElement.style.opacity = '1';
293
+ // Handle transition end
294
+ dom_1.default.transitionEnd(this._dropdownElement, function () {
295
+ _this._isTransitioning = false;
296
+ _this._isOpen = true;
297
+ // Focus the first item if search is enabled
298
+ if (_this._config.enableSearch) {
299
+ var searchInput = _this._dropdownElement.querySelector('input[type="search"]');
300
+ if (searchInput) {
301
+ searchInput.focus();
302
+ }
303
+ else {
304
+ _this._focusFirstOption();
305
+ }
306
+ }
307
+ else {
308
+ _this._focusFirstOption();
309
+ }
310
+ // Fire after show event
311
+ var afterShowEvent = new CustomEvent('kt.select.dropdown.shown', {
312
+ bubbles: true,
313
+ });
314
+ _this._element.dispatchEvent(afterShowEvent);
315
+ });
316
+ };
317
+ /**
318
+ * Focus the first option in the dropdown
319
+ */
320
+ KTSelectDropdown.prototype._focusFirstOption = function () {
321
+ var firstOption = this._focusManager.getVisibleOptions()[0];
322
+ if (firstOption) {
323
+ this._focusManager.applyFocus(firstOption);
324
+ this._focusManager.scrollIntoView(firstOption);
325
+ }
326
+ };
327
+ /**
328
+ * Close the dropdown
329
+ */
330
+ KTSelectDropdown.prototype.close = function () {
331
+ var _this = this;
332
+ if (this._config.debug)
333
+ console.log('KTSelectDropdown.close called - isOpen:', this._isOpen, 'isTransitioning:', this._isTransitioning);
334
+ if (!this._isOpen || this._isTransitioning) {
335
+ if (this._config.debug)
336
+ console.log('KTSelectDropdown.close - early return: dropdown not open or is transitioning');
337
+ return;
338
+ }
339
+ // Fire before hide event
340
+ var beforeHideEvent = new CustomEvent('kt.select.dropdown.hide', {
341
+ bubbles: true,
342
+ cancelable: true,
343
+ });
344
+ this._element.dispatchEvent(beforeHideEvent);
345
+ if (beforeHideEvent.defaultPrevented) {
346
+ if (this._config.debug)
347
+ console.log('KTSelectDropdown.close - canceling due to defaultPrevented on beforeHideEvent');
348
+ return;
349
+ }
350
+ if (this._config.debug)
351
+ console.log('KTSelectDropdown.close - starting transition');
352
+ // Begin closing transition
353
+ this._isTransitioning = true;
354
+ // Start transition
355
+ this._dropdownElement.style.opacity = '0';
356
+ // Use a combination of transition end and a fallback timer
357
+ var transitionComplete = false;
358
+ // Set a fixed-duration fallback in case the transition event doesn't fire
359
+ var fallbackTimer = setTimeout(function () {
360
+ if (!transitionComplete) {
361
+ if (_this._config.debug)
362
+ console.log('KTSelectDropdown.close - fallback timer triggered');
363
+ completeTransition();
364
+ }
365
+ }, 300); // 300ms should be enough for most transitions
366
+ // Setup the transition end function
367
+ var completeTransition = function () {
368
+ if (transitionComplete)
369
+ return;
370
+ transitionComplete = true;
371
+ clearTimeout(fallbackTimer);
372
+ if (_this._config.debug)
373
+ console.log('KTSelectDropdown.close - transition ended');
374
+ // Remove active classes
375
+ _this._dropdownElement.classList.add('hidden');
376
+ _this._dropdownElement.classList.remove('open');
377
+ _this._toggleElement.classList.remove('active');
378
+ _this._toggleElement.setAttribute('aria-expanded', 'false');
379
+ // Reset styles - replace display: none with adding hidden class
380
+ _this._dropdownElement.classList.add('hidden');
381
+ _this._dropdownElement.style.opacity = '';
382
+ _this._dropdownElement.style.zIndex = '';
383
+ // Destroy popper
384
+ _this._destroyPopper();
385
+ // Update state
386
+ _this._isTransitioning = false;
387
+ _this._isOpen = false;
388
+ // Fire after hide event
389
+ var afterHideEvent = new CustomEvent('kt.select.dropdown.hidden', {
390
+ bubbles: true,
391
+ });
392
+ _this._element.dispatchEvent(afterHideEvent);
393
+ if (_this._config.debug)
394
+ console.log('KTSelectDropdown.close - complete, events fired');
395
+ };
396
+ // Handle transition end via the utility but also have the fallback
397
+ dom_1.default.transitionEnd(this._dropdownElement, completeTransition);
398
+ };
399
+ /**
400
+ * Check if dropdown is open
401
+ */
402
+ KTSelectDropdown.prototype.isOpen = function () {
403
+ return this._isOpen;
404
+ };
405
+ /**
406
+ * Clean up component
407
+ */
408
+ KTSelectDropdown.prototype.dispose = function () {
409
+ // Destroy popper
410
+ this._destroyPopper();
411
+ // Remove event listeners
412
+ this._eventManager.removeAllListeners(this._element);
413
+ this._eventManager.removeAllListeners(this._toggleElement);
414
+ this._eventManager.removeAllListeners(document);
415
+ // Clean up focus manager
416
+ if (this._focusManager &&
417
+ typeof this._focusManager.dispose === 'function') {
418
+ this._focusManager.dispose();
419
+ }
420
+ // Clean up state
421
+ this._isOpen = false;
422
+ this._isTransitioning = false;
423
+ // Remove data reference
424
+ data_1.default.remove(this._element, this._name);
425
+ };
426
+ return KTSelectDropdown;
427
+ }(component_1.default));
428
+ exports.KTSelectDropdown = KTSelectDropdown;
429
+ //# sourceMappingURL=dropdown.js.map