@keenthemes/ktui 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/dist/ktui.js +16038 -17101
  2. package/dist/ktui.min.js +1 -1
  3. package/dist/ktui.min.js.map +1 -1
  4. package/lib/cjs/components/accordion/accordion.js +20 -11
  5. package/lib/cjs/components/accordion/accordion.js.map +1 -1
  6. package/lib/cjs/components/accordion/index.js +4 -0
  7. package/lib/cjs/components/accordion/index.js.map +1 -1
  8. package/lib/cjs/components/accordion/types.js +4 -0
  9. package/lib/cjs/components/accordion/types.js.map +1 -1
  10. package/lib/cjs/components/collapse/collapse.js +13 -7
  11. package/lib/cjs/components/collapse/collapse.js.map +1 -1
  12. package/lib/cjs/components/collapse/index.js +4 -0
  13. package/lib/cjs/components/collapse/index.js.map +1 -1
  14. package/lib/cjs/components/collapse/types.js +4 -0
  15. package/lib/cjs/components/collapse/types.js.map +1 -1
  16. package/lib/cjs/components/component.js +12 -41
  17. package/lib/cjs/components/component.js.map +1 -1
  18. package/lib/cjs/components/constants.js +4 -0
  19. package/lib/cjs/components/constants.js.map +1 -1
  20. package/lib/cjs/components/datatable/datatable-checkbox.js +217 -0
  21. package/lib/cjs/components/datatable/datatable-checkbox.js.map +1 -0
  22. package/lib/cjs/components/datatable/datatable-sort.js +91 -0
  23. package/lib/cjs/components/datatable/datatable-sort.js.map +1 -0
  24. package/lib/cjs/components/datatable/datatable.js +294 -349
  25. package/lib/cjs/components/datatable/datatable.js.map +1 -1
  26. package/lib/cjs/components/datatable/index.js +4 -0
  27. package/lib/cjs/components/datatable/index.js.map +1 -1
  28. package/lib/cjs/components/datatable/types.js +4 -0
  29. package/lib/cjs/components/datatable/types.js.map +1 -1
  30. package/lib/cjs/components/datepicker/calendar.js +1061 -0
  31. package/lib/cjs/components/datepicker/calendar.js.map +1 -0
  32. package/lib/cjs/components/datepicker/config.js +332 -0
  33. package/lib/cjs/components/datepicker/config.js.map +1 -0
  34. package/lib/cjs/components/datepicker/datepicker.js +949 -0
  35. package/lib/cjs/components/datepicker/datepicker.js.map +1 -0
  36. package/lib/cjs/components/datepicker/dropdown.js +635 -0
  37. package/lib/cjs/components/datepicker/dropdown.js.map +1 -0
  38. package/lib/cjs/components/datepicker/events.js +129 -0
  39. package/lib/cjs/components/datepicker/events.js.map +1 -0
  40. package/lib/cjs/components/datepicker/index.js +13 -0
  41. package/lib/cjs/components/datepicker/index.js.map +1 -0
  42. package/lib/cjs/components/datepicker/keyboard.js +536 -0
  43. package/lib/cjs/components/datepicker/keyboard.js.map +1 -0
  44. package/lib/cjs/components/datepicker/locales.js +78 -0
  45. package/lib/cjs/components/datepicker/locales.js.map +1 -0
  46. package/lib/cjs/components/datepicker/templates.js +403 -0
  47. package/lib/cjs/components/datepicker/templates.js.map +1 -0
  48. package/lib/cjs/components/datepicker/types.js +23 -0
  49. package/lib/cjs/components/datepicker/types.js.map +1 -0
  50. package/lib/cjs/components/datepicker/utils.js +524 -0
  51. package/lib/cjs/components/datepicker/utils.js.map +1 -0
  52. package/lib/cjs/components/dismiss/dismiss.js +10 -6
  53. package/lib/cjs/components/dismiss/dismiss.js.map +1 -1
  54. package/lib/cjs/components/dismiss/index.js +4 -0
  55. package/lib/cjs/components/dismiss/index.js.map +1 -1
  56. package/lib/cjs/components/dismiss/types.js +4 -0
  57. package/lib/cjs/components/dismiss/types.js.map +1 -1
  58. package/lib/cjs/components/drawer/drawer.js +54 -28
  59. package/lib/cjs/components/drawer/drawer.js.map +1 -1
  60. package/lib/cjs/components/drawer/index.js +4 -0
  61. package/lib/cjs/components/drawer/index.js.map +1 -1
  62. package/lib/cjs/components/drawer/types.js +4 -0
  63. package/lib/cjs/components/drawer/types.js.map +1 -1
  64. package/lib/cjs/components/dropdown/dropdown.js +145 -115
  65. package/lib/cjs/components/dropdown/dropdown.js.map +1 -1
  66. package/lib/cjs/components/dropdown/index.js +4 -0
  67. package/lib/cjs/components/dropdown/index.js.map +1 -1
  68. package/lib/cjs/components/dropdown/types.js +4 -0
  69. package/lib/cjs/components/dropdown/types.js.map +1 -1
  70. package/lib/cjs/components/image-input/image-input.js +21 -16
  71. package/lib/cjs/components/image-input/image-input.js.map +1 -1
  72. package/lib/cjs/components/image-input/index.js +4 -0
  73. package/lib/cjs/components/image-input/index.js.map +1 -1
  74. package/lib/cjs/components/image-input/types.js +4 -0
  75. package/lib/cjs/components/image-input/types.js.map +1 -1
  76. package/lib/cjs/components/modal/index.js +4 -0
  77. package/lib/cjs/components/modal/index.js.map +1 -1
  78. package/lib/cjs/components/modal/modal.js +26 -19
  79. package/lib/cjs/components/modal/modal.js.map +1 -1
  80. package/lib/cjs/components/modal/types.js +4 -0
  81. package/lib/cjs/components/modal/types.js.map +1 -1
  82. package/lib/cjs/components/reparent/index.js +4 -0
  83. package/lib/cjs/components/reparent/index.js.map +1 -1
  84. package/lib/cjs/components/reparent/reparent.js +13 -5
  85. package/lib/cjs/components/reparent/reparent.js.map +1 -1
  86. package/lib/cjs/components/reparent/types.js +4 -0
  87. package/lib/cjs/components/reparent/types.js.map +1 -1
  88. package/lib/cjs/components/scrollable/index.js +4 -0
  89. package/lib/cjs/components/scrollable/index.js.map +1 -1
  90. package/lib/cjs/components/scrollable/scrollable.js +17 -10
  91. package/lib/cjs/components/scrollable/scrollable.js.map +1 -1
  92. package/lib/cjs/components/scrollable/types.js +4 -0
  93. package/lib/cjs/components/scrollable/types.js.map +1 -1
  94. package/lib/cjs/components/scrollspy/index.js +4 -0
  95. package/lib/cjs/components/scrollspy/index.js.map +1 -1
  96. package/lib/cjs/components/scrollspy/scrollspy.js +28 -17
  97. package/lib/cjs/components/scrollspy/scrollspy.js.map +1 -1
  98. package/lib/cjs/components/scrollspy/types.js +4 -0
  99. package/lib/cjs/components/scrollspy/types.js.map +1 -1
  100. package/lib/cjs/components/scrollto/index.js +4 -0
  101. package/lib/cjs/components/scrollto/index.js.map +1 -1
  102. package/lib/cjs/components/scrollto/scrollto.js +14 -8
  103. package/lib/cjs/components/scrollto/scrollto.js.map +1 -1
  104. package/lib/cjs/components/scrollto/types.js +4 -0
  105. package/lib/cjs/components/scrollto/types.js.map +1 -1
  106. package/lib/cjs/components/select/combobox.js +237 -0
  107. package/lib/cjs/components/select/combobox.js.map +1 -0
  108. package/lib/cjs/components/select/config.js +226 -0
  109. package/lib/cjs/components/select/config.js.map +1 -0
  110. package/lib/cjs/components/select/dropdown.js +429 -0
  111. package/lib/cjs/components/select/dropdown.js.map +1 -0
  112. package/lib/cjs/components/select/index.js +24 -0
  113. package/lib/cjs/components/select/index.js.map +1 -0
  114. package/lib/cjs/components/select/option.js +53 -0
  115. package/lib/cjs/components/select/option.js.map +1 -0
  116. package/lib/cjs/components/select/remote.js +414 -0
  117. package/lib/cjs/components/select/remote.js.map +1 -0
  118. package/lib/cjs/components/select/search.js +339 -0
  119. package/lib/cjs/components/select/search.js.map +1 -0
  120. package/lib/cjs/components/select/select.js +1538 -0
  121. package/lib/cjs/components/select/select.js.map +1 -0
  122. package/lib/cjs/components/select/tags.js +110 -0
  123. package/lib/cjs/components/select/tags.js.map +1 -0
  124. package/lib/cjs/components/select/templates.js +337 -0
  125. package/lib/cjs/components/select/templates.js.map +1 -0
  126. package/lib/cjs/components/select/types.js +19 -0
  127. package/lib/cjs/components/select/types.js.map +1 -0
  128. package/lib/cjs/components/select/utils.js +606 -0
  129. package/lib/cjs/components/select/utils.js.map +1 -0
  130. package/lib/cjs/components/stepper/index.js +4 -0
  131. package/lib/cjs/components/stepper/index.js.map +1 -1
  132. package/lib/cjs/components/stepper/stepper.js +20 -13
  133. package/lib/cjs/components/stepper/stepper.js.map +1 -1
  134. package/lib/cjs/components/stepper/types.js +4 -0
  135. package/lib/cjs/components/stepper/types.js.map +1 -1
  136. package/lib/cjs/components/sticky/index.js +4 -0
  137. package/lib/cjs/components/sticky/index.js.map +1 -1
  138. package/lib/cjs/components/sticky/sticky.js +60 -38
  139. package/lib/cjs/components/sticky/sticky.js.map +1 -1
  140. package/lib/cjs/components/sticky/types.js +4 -0
  141. package/lib/cjs/components/sticky/types.js.map +1 -1
  142. package/lib/cjs/components/tabs/index.js +4 -0
  143. package/lib/cjs/components/tabs/index.js.map +1 -1
  144. package/lib/cjs/components/tabs/tabs.js +34 -24
  145. package/lib/cjs/components/tabs/tabs.js.map +1 -1
  146. package/lib/cjs/components/tabs/types.js +4 -0
  147. package/lib/cjs/components/tabs/types.js.map +1 -1
  148. package/lib/cjs/components/theme-switch/index.js +10 -0
  149. package/lib/cjs/components/theme-switch/index.js.map +1 -0
  150. package/lib/cjs/components/theme-switch/theme-switch.js +143 -0
  151. package/lib/cjs/components/theme-switch/theme-switch.js.map +1 -0
  152. package/lib/cjs/components/theme-switch/types.js +7 -0
  153. package/lib/cjs/components/theme-switch/types.js.map +1 -0
  154. package/lib/cjs/components/toggle/index.js +4 -0
  155. package/lib/cjs/components/toggle/index.js.map +1 -1
  156. package/lib/cjs/components/toggle/toggle.js +11 -7
  157. package/lib/cjs/components/toggle/toggle.js.map +1 -1
  158. package/lib/cjs/components/toggle/types.js +4 -0
  159. package/lib/cjs/components/toggle/types.js.map +1 -1
  160. package/lib/cjs/components/toggle-password/index.js +4 -0
  161. package/lib/cjs/components/toggle-password/index.js.map +1 -1
  162. package/lib/cjs/components/toggle-password/toggle-password.js +12 -7
  163. package/lib/cjs/components/toggle-password/toggle-password.js.map +1 -1
  164. package/lib/cjs/components/toggle-password/types.js +4 -0
  165. package/lib/cjs/components/toggle-password/types.js.map +1 -1
  166. package/lib/cjs/components/tooltip/index.js +4 -0
  167. package/lib/cjs/components/tooltip/index.js.map +1 -1
  168. package/lib/cjs/components/tooltip/tooltip.js +51 -21
  169. package/lib/cjs/components/tooltip/tooltip.js.map +1 -1
  170. package/lib/cjs/components/tooltip/types.js +4 -0
  171. package/lib/cjs/components/tooltip/types.js.map +1 -1
  172. package/lib/cjs/helpers/data.js +5 -1
  173. package/lib/cjs/helpers/data.js.map +1 -1
  174. package/lib/cjs/helpers/dom.js +34 -29
  175. package/lib/cjs/helpers/dom.js.map +1 -1
  176. package/lib/cjs/helpers/event-handler.js +5 -1
  177. package/lib/cjs/helpers/event-handler.js.map +1 -1
  178. package/lib/cjs/helpers/utils.js +65 -11
  179. package/lib/cjs/helpers/utils.js.map +1 -1
  180. package/lib/cjs/index.js +18 -22
  181. package/lib/cjs/index.js.map +1 -1
  182. package/lib/cjs/types.js +4 -0
  183. package/lib/cjs/types.js.map +1 -1
  184. package/lib/esm/components/accordion/accordion.js +20 -11
  185. package/lib/esm/components/accordion/accordion.js.map +1 -1
  186. package/lib/esm/components/accordion/index.js +4 -0
  187. package/lib/esm/components/accordion/index.js.map +1 -1
  188. package/lib/esm/components/accordion/types.js +4 -0
  189. package/lib/esm/components/accordion/types.js.map +1 -1
  190. package/lib/esm/components/collapse/collapse.js +13 -7
  191. package/lib/esm/components/collapse/collapse.js.map +1 -1
  192. package/lib/esm/components/collapse/index.js +4 -0
  193. package/lib/esm/components/collapse/index.js.map +1 -1
  194. package/lib/esm/components/collapse/types.js +4 -0
  195. package/lib/esm/components/collapse/types.js.map +1 -1
  196. package/lib/esm/components/component.js +12 -41
  197. package/lib/esm/components/component.js.map +1 -1
  198. package/lib/esm/components/constants.js +4 -0
  199. package/lib/esm/components/constants.js.map +1 -1
  200. package/lib/esm/components/datatable/datatable-checkbox.js +214 -0
  201. package/lib/esm/components/datatable/datatable-checkbox.js.map +1 -0
  202. package/lib/esm/components/datatable/datatable-sort.js +88 -0
  203. package/lib/esm/components/datatable/datatable-sort.js.map +1 -0
  204. package/lib/esm/components/datatable/datatable.js +294 -349
  205. package/lib/esm/components/datatable/datatable.js.map +1 -1
  206. package/lib/esm/components/datatable/index.js +4 -0
  207. package/lib/esm/components/datatable/index.js.map +1 -1
  208. package/lib/esm/components/datatable/types.js +4 -0
  209. package/lib/esm/components/datatable/types.js.map +1 -1
  210. package/lib/esm/components/datepicker/calendar.js +1058 -0
  211. package/lib/esm/components/datepicker/calendar.js.map +1 -0
  212. package/lib/esm/components/datepicker/config.js +329 -0
  213. package/lib/esm/components/datepicker/config.js.map +1 -0
  214. package/lib/esm/components/datepicker/datepicker.js +946 -0
  215. package/lib/esm/components/datepicker/datepicker.js.map +1 -0
  216. package/lib/esm/components/datepicker/dropdown.js +632 -0
  217. package/lib/esm/components/datepicker/dropdown.js.map +1 -0
  218. package/lib/esm/components/datepicker/events.js +126 -0
  219. package/lib/esm/components/datepicker/events.js.map +1 -0
  220. package/lib/esm/components/datepicker/index.js +9 -0
  221. package/lib/esm/components/datepicker/index.js.map +1 -0
  222. package/lib/esm/components/datepicker/keyboard.js +533 -0
  223. package/lib/esm/components/datepicker/keyboard.js.map +1 -0
  224. package/lib/esm/components/datepicker/locales.js +74 -0
  225. package/lib/esm/components/datepicker/locales.js.map +1 -0
  226. package/lib/esm/components/datepicker/templates.js +390 -0
  227. package/lib/esm/components/datepicker/templates.js.map +1 -0
  228. package/lib/esm/components/datepicker/types.js +20 -0
  229. package/lib/esm/components/datepicker/types.js.map +1 -0
  230. package/lib/esm/components/datepicker/utils.js +508 -0
  231. package/lib/esm/components/datepicker/utils.js.map +1 -0
  232. package/lib/esm/components/dismiss/dismiss.js +10 -6
  233. package/lib/esm/components/dismiss/dismiss.js.map +1 -1
  234. package/lib/esm/components/dismiss/index.js +4 -0
  235. package/lib/esm/components/dismiss/index.js.map +1 -1
  236. package/lib/esm/components/dismiss/types.js +4 -0
  237. package/lib/esm/components/dismiss/types.js.map +1 -1
  238. package/lib/esm/components/drawer/drawer.js +54 -28
  239. package/lib/esm/components/drawer/drawer.js.map +1 -1
  240. package/lib/esm/components/drawer/index.js +4 -0
  241. package/lib/esm/components/drawer/index.js.map +1 -1
  242. package/lib/esm/components/drawer/types.js +4 -0
  243. package/lib/esm/components/drawer/types.js.map +1 -1
  244. package/lib/esm/components/dropdown/dropdown.js +146 -116
  245. package/lib/esm/components/dropdown/dropdown.js.map +1 -1
  246. package/lib/esm/components/dropdown/index.js +4 -0
  247. package/lib/esm/components/dropdown/index.js.map +1 -1
  248. package/lib/esm/components/dropdown/types.js +4 -0
  249. package/lib/esm/components/dropdown/types.js.map +1 -1
  250. package/lib/esm/components/image-input/image-input.js +21 -16
  251. package/lib/esm/components/image-input/image-input.js.map +1 -1
  252. package/lib/esm/components/image-input/index.js +4 -0
  253. package/lib/esm/components/image-input/index.js.map +1 -1
  254. package/lib/esm/components/image-input/types.js +4 -0
  255. package/lib/esm/components/image-input/types.js.map +1 -1
  256. package/lib/esm/components/modal/index.js +4 -0
  257. package/lib/esm/components/modal/index.js.map +1 -1
  258. package/lib/esm/components/modal/modal.js +26 -19
  259. package/lib/esm/components/modal/modal.js.map +1 -1
  260. package/lib/esm/components/modal/types.js +4 -0
  261. package/lib/esm/components/modal/types.js.map +1 -1
  262. package/lib/esm/components/reparent/index.js +4 -0
  263. package/lib/esm/components/reparent/index.js.map +1 -1
  264. package/lib/esm/components/reparent/reparent.js +13 -5
  265. package/lib/esm/components/reparent/reparent.js.map +1 -1
  266. package/lib/esm/components/reparent/types.js +4 -0
  267. package/lib/esm/components/reparent/types.js.map +1 -1
  268. package/lib/esm/components/scrollable/index.js +4 -0
  269. package/lib/esm/components/scrollable/index.js.map +1 -1
  270. package/lib/esm/components/scrollable/scrollable.js +17 -10
  271. package/lib/esm/components/scrollable/scrollable.js.map +1 -1
  272. package/lib/esm/components/scrollable/types.js +4 -0
  273. package/lib/esm/components/scrollable/types.js.map +1 -1
  274. package/lib/esm/components/scrollspy/index.js +4 -0
  275. package/lib/esm/components/scrollspy/index.js.map +1 -1
  276. package/lib/esm/components/scrollspy/scrollspy.js +28 -17
  277. package/lib/esm/components/scrollspy/scrollspy.js.map +1 -1
  278. package/lib/esm/components/scrollspy/types.js +4 -0
  279. package/lib/esm/components/scrollspy/types.js.map +1 -1
  280. package/lib/esm/components/scrollto/index.js +4 -0
  281. package/lib/esm/components/scrollto/index.js.map +1 -1
  282. package/lib/esm/components/scrollto/scrollto.js +14 -8
  283. package/lib/esm/components/scrollto/scrollto.js.map +1 -1
  284. package/lib/esm/components/scrollto/types.js +4 -0
  285. package/lib/esm/components/scrollto/types.js.map +1 -1
  286. package/lib/esm/components/select/combobox.js +234 -0
  287. package/lib/esm/components/select/combobox.js.map +1 -0
  288. package/lib/esm/components/select/config.js +223 -0
  289. package/lib/esm/components/select/config.js.map +1 -0
  290. package/lib/esm/components/select/dropdown.js +426 -0
  291. package/lib/esm/components/select/dropdown.js.map +1 -0
  292. package/lib/esm/components/select/index.js +12 -0
  293. package/lib/esm/components/select/index.js.map +1 -0
  294. package/lib/esm/components/select/option.js +50 -0
  295. package/lib/esm/components/select/option.js.map +1 -0
  296. package/lib/esm/components/select/remote.js +411 -0
  297. package/lib/esm/components/select/remote.js.map +1 -0
  298. package/lib/esm/components/select/search.js +336 -0
  299. package/lib/esm/components/select/search.js.map +1 -0
  300. package/lib/esm/components/select/select.js +1535 -0
  301. package/lib/esm/components/select/select.js.map +1 -0
  302. package/lib/esm/components/select/tags.js +107 -0
  303. package/lib/esm/components/select/tags.js.map +1 -0
  304. package/lib/esm/components/select/templates.js +332 -0
  305. package/lib/esm/components/select/templates.js.map +1 -0
  306. package/lib/esm/components/select/types.js +16 -0
  307. package/lib/esm/components/select/types.js.map +1 -0
  308. package/lib/esm/components/select/utils.js +598 -0
  309. package/lib/esm/components/select/utils.js.map +1 -0
  310. package/lib/esm/components/stepper/index.js +4 -0
  311. package/lib/esm/components/stepper/index.js.map +1 -1
  312. package/lib/esm/components/stepper/stepper.js +20 -13
  313. package/lib/esm/components/stepper/stepper.js.map +1 -1
  314. package/lib/esm/components/stepper/types.js +4 -0
  315. package/lib/esm/components/stepper/types.js.map +1 -1
  316. package/lib/esm/components/sticky/index.js +4 -0
  317. package/lib/esm/components/sticky/index.js.map +1 -1
  318. package/lib/esm/components/sticky/sticky.js +60 -38
  319. package/lib/esm/components/sticky/sticky.js.map +1 -1
  320. package/lib/esm/components/sticky/types.js +4 -0
  321. package/lib/esm/components/sticky/types.js.map +1 -1
  322. package/lib/esm/components/tabs/index.js +4 -0
  323. package/lib/esm/components/tabs/index.js.map +1 -1
  324. package/lib/esm/components/tabs/tabs.js +34 -24
  325. package/lib/esm/components/tabs/tabs.js.map +1 -1
  326. package/lib/esm/components/tabs/types.js +4 -0
  327. package/lib/esm/components/tabs/types.js.map +1 -1
  328. package/lib/esm/components/theme-switch/index.js +6 -0
  329. package/lib/esm/components/theme-switch/index.js.map +1 -0
  330. package/lib/esm/components/theme-switch/theme-switch.js +140 -0
  331. package/lib/esm/components/theme-switch/theme-switch.js.map +1 -0
  332. package/lib/esm/components/theme-switch/types.js +6 -0
  333. package/lib/esm/components/theme-switch/types.js.map +1 -0
  334. package/lib/esm/components/toggle/index.js +4 -0
  335. package/lib/esm/components/toggle/index.js.map +1 -1
  336. package/lib/esm/components/toggle/toggle.js +11 -7
  337. package/lib/esm/components/toggle/toggle.js.map +1 -1
  338. package/lib/esm/components/toggle/types.js +4 -0
  339. package/lib/esm/components/toggle/types.js.map +1 -1
  340. package/lib/esm/components/toggle-password/index.js +4 -0
  341. package/lib/esm/components/toggle-password/index.js.map +1 -1
  342. package/lib/esm/components/toggle-password/toggle-password.js +12 -7
  343. package/lib/esm/components/toggle-password/toggle-password.js.map +1 -1
  344. package/lib/esm/components/toggle-password/types.js +4 -0
  345. package/lib/esm/components/toggle-password/types.js.map +1 -1
  346. package/lib/esm/components/tooltip/index.js +4 -0
  347. package/lib/esm/components/tooltip/index.js.map +1 -1
  348. package/lib/esm/components/tooltip/tooltip.js +52 -22
  349. package/lib/esm/components/tooltip/tooltip.js.map +1 -1
  350. package/lib/esm/components/tooltip/types.js +4 -0
  351. package/lib/esm/components/tooltip/types.js.map +1 -1
  352. package/lib/esm/helpers/data.js +5 -1
  353. package/lib/esm/helpers/data.js.map +1 -1
  354. package/lib/esm/helpers/dom.js +34 -29
  355. package/lib/esm/helpers/dom.js.map +1 -1
  356. package/lib/esm/helpers/event-handler.js +5 -1
  357. package/lib/esm/helpers/event-handler.js.map +1 -1
  358. package/lib/esm/helpers/utils.js +65 -11
  359. package/lib/esm/helpers/utils.js.map +1 -1
  360. package/lib/esm/index.js +14 -16
  361. package/lib/esm/index.js.map +1 -1
  362. package/lib/esm/types.js +4 -0
  363. package/lib/esm/types.js.map +1 -1
  364. package/package.json +16 -8
  365. package/src/components/accordion/accordion-menu.css +1 -2
  366. package/src/components/accordion/accordion.css +1 -1
  367. package/src/components/accordion/accordion.ts +1 -1
  368. package/src/components/accordion/index.ts +1 -1
  369. package/src/components/accordion/types.ts +1 -1
  370. package/src/components/alert/alert.css +1 -1
  371. package/src/components/avatar/avatar.css +1 -1
  372. package/src/components/badge/badge.css +1 -1
  373. package/src/components/breadcrumb/breadcrumb.css +1 -1
  374. package/src/components/btn/btn.css +1 -1
  375. package/src/components/card/card.css +1 -1
  376. package/src/components/checkbox/checkbox.css +1 -1
  377. package/src/components/collapse/collapse.css +1 -1
  378. package/src/components/collapse/collapse.ts +1 -1
  379. package/src/components/collapse/index.ts +1 -1
  380. package/src/components/collapse/types.ts +1 -1
  381. package/src/components/component.ts +1 -1
  382. package/src/components/constants.ts +1 -1
  383. package/src/components/datatable/datatable-checkbox.ts +1 -1
  384. package/src/components/datatable/datatable-sort.ts +1 -1
  385. package/src/components/datatable/datatable.css +1 -1
  386. package/src/components/datatable/datatable.ts +38 -2
  387. package/src/components/datatable/index.ts +1 -1
  388. package/src/components/datatable/types.ts +1 -1
  389. package/src/components/datepicker/calendar.ts +1 -1
  390. package/src/components/datepicker/config.ts +1 -1
  391. package/src/components/datepicker/datepicker.css +1 -1
  392. package/src/components/datepicker/datepicker.ts +1 -1
  393. package/src/components/datepicker/dropdown.ts +1 -1
  394. package/src/components/datepicker/events.ts +1 -1
  395. package/src/components/datepicker/index.ts +1 -1
  396. package/src/components/datepicker/keyboard.ts +1 -1
  397. package/src/components/datepicker/locales.ts +1 -1
  398. package/src/components/datepicker/templates.ts +1 -1
  399. package/src/components/datepicker/types.ts +1 -1
  400. package/src/components/datepicker/utils.ts +1 -1
  401. package/src/components/dismiss/dismiss.css +1 -1
  402. package/src/components/dismiss/dismiss.ts +1 -1
  403. package/src/components/dismiss/index.ts +1 -1
  404. package/src/components/dismiss/types.ts +1 -1
  405. package/src/components/drawer/drawer.css +1 -1
  406. package/src/components/drawer/drawer.ts +1 -1
  407. package/src/components/drawer/index.ts +1 -1
  408. package/src/components/drawer/types.ts +1 -1
  409. package/src/components/dropdown/dropdown-menu.css +1 -1
  410. package/src/components/dropdown/dropdown.css +1 -1
  411. package/src/components/dropdown/dropdown.ts +1 -1
  412. package/src/components/dropdown/index.ts +1 -1
  413. package/src/components/dropdown/types.ts +1 -1
  414. package/src/components/form/form.css +1 -1
  415. package/src/components/image-input/image-input.css +1 -1
  416. package/src/components/image-input/image-input.ts +1 -1
  417. package/src/components/image-input/index.ts +1 -1
  418. package/src/components/image-input/types.ts +1 -1
  419. package/src/components/input/input-group.css +8 -5
  420. package/src/components/input/input.css +1 -1
  421. package/src/components/kbd/kbd.css +1 -1
  422. package/src/components/label/label.css +1 -1
  423. package/src/components/link/link.css +1 -1
  424. package/src/components/modal/index.ts +1 -1
  425. package/src/components/modal/modal.css +1 -1
  426. package/src/components/modal/modal.ts +1 -1
  427. package/src/components/modal/types.ts +1 -1
  428. package/src/components/pagination/pagination.css +1 -1
  429. package/src/components/popover/popover.css +1 -1
  430. package/src/components/progress/progress.css +2 -2
  431. package/src/components/radio/radio.css +1 -1
  432. package/src/components/reparent/index.ts +1 -1
  433. package/src/components/reparent/reparent.ts +1 -1
  434. package/src/components/reparent/types.ts +1 -1
  435. package/src/components/scrollable/index.ts +1 -1
  436. package/src/components/scrollable/scrollable.css +1 -1
  437. package/src/components/scrollable/scrollable.ts +1 -1
  438. package/src/components/scrollable/types.ts +1 -1
  439. package/src/components/scrollspy/index.ts +1 -1
  440. package/src/components/scrollspy/scrollspy.css +1 -1
  441. package/src/components/scrollspy/scrollspy.ts +1 -1
  442. package/src/components/scrollspy/types.ts +1 -1
  443. package/src/components/scrollto/index.ts +1 -1
  444. package/src/components/scrollto/scrollto.ts +1 -1
  445. package/src/components/scrollto/types.ts +1 -1
  446. package/src/components/select/combobox.ts +1 -1
  447. package/src/components/select/config.ts +1 -1
  448. package/src/components/select/dropdown.ts +1 -1
  449. package/src/components/select/index.ts +1 -1
  450. package/src/components/select/option.ts +1 -1
  451. package/src/components/select/remote.ts +1 -1
  452. package/src/components/select/search.ts +1 -1
  453. package/src/components/select/select.css +1 -1
  454. package/src/components/select/select.ts +1 -1
  455. package/src/components/select/tags.ts +1 -1
  456. package/src/components/select/templates.ts +1 -1
  457. package/src/components/select/types.ts +1 -1
  458. package/src/components/select/utils.ts +1 -1
  459. package/src/components/select/variants.css +1 -1
  460. package/src/components/separator/separator.css +1 -1
  461. package/src/components/skeleton/skeleton.css +1 -1
  462. package/src/components/stepper/index.ts +1 -1
  463. package/src/components/stepper/stepper.css +1 -1
  464. package/src/components/stepper/stepper.ts +1 -1
  465. package/src/components/stepper/types.ts +1 -1
  466. package/src/components/sticky/index.ts +1 -1
  467. package/src/components/sticky/sticky.css +1 -1
  468. package/src/components/sticky/sticky.ts +1 -1
  469. package/src/components/sticky/types.ts +1 -1
  470. package/src/components/switch/switch.css +1 -1
  471. package/src/components/table/table.css +2 -2
  472. package/src/components/tabs/index.ts +1 -1
  473. package/src/components/tabs/tabs.css +1 -1
  474. package/src/components/tabs/tabs.ts +1 -1
  475. package/src/components/tabs/types.ts +1 -1
  476. package/src/components/textarea/textarea.css +1 -1
  477. package/src/components/theme-switch/index.ts +1 -1
  478. package/src/components/theme-switch/theme-switch.css +1 -1
  479. package/src/components/theme-switch/theme-switch.ts +1 -1
  480. package/src/components/theme-switch/types.ts +1 -1
  481. package/src/components/toggle/index.ts +1 -1
  482. package/src/components/toggle/toggle.css +1 -1
  483. package/src/components/toggle/toggle.ts +1 -1
  484. package/src/components/toggle/types.ts +1 -1
  485. package/src/components/toggle-group/toggle-group.css +1 -1
  486. package/src/components/toggle-password/index.ts +1 -1
  487. package/src/components/toggle-password/toggle-password.css +1 -1
  488. package/src/components/toggle-password/toggle-password.ts +1 -1
  489. package/src/components/toggle-password/types.ts +1 -1
  490. package/src/components/tooltip/index.ts +1 -1
  491. package/src/components/tooltip/tooltip.css +1 -1
  492. package/src/components/tooltip/tooltip.ts +1 -1
  493. package/src/components/tooltip/types.ts +1 -1
  494. package/src/helpers/data.ts +1 -1
  495. package/src/helpers/dom.ts +1 -1
  496. package/src/helpers/event-handler.ts +1 -1
  497. package/src/helpers/utils.ts +1 -1
  498. package/src/index.ts +1 -1
  499. package/src/types.ts +1 -1
@@ -0,0 +1,223 @@
1
+ /**
2
+ * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
3
+ * Copyright 2025 by Keenthemes Inc
4
+ */
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
17
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
18
+ if (ar || !(i in from)) {
19
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
20
+ ar[i] = from[i];
21
+ }
22
+ }
23
+ return to.concat(ar || Array.prototype.slice.call(from));
24
+ };
25
+ export var DefaultConfig = {
26
+ // ...other config options
27
+ loadMoreText: 'Load more...',
28
+ // General Display
29
+ debug: false,
30
+ placeholder: 'Select an option', // Default placeholder text when no option is selected
31
+ dropdownZindex: null, // Initial z-index value for the dropdown
32
+ // Data Handling
33
+ items: [], // Static list of options
34
+ isLoading: false, // Indicates if options are being loaded asynchronously
35
+ onFetch: null, // Callback function to fetch options asynchronously
36
+ // Remote Data Configuration
37
+ remote: false, // Enable/disable remote data fetching
38
+ dataUrl: null, // URL to fetch options from
39
+ apiDataProperty: null, // Property in the response object that contains the options
40
+ remoteErrorMessage: 'Failed to load data', // Error message to display if remote data fetch fails
41
+ // Field Mapping
42
+ dataValueField: null, // Property in the option object that contains the value (default: 'id')
43
+ dataFieldText: null, // Property in the option object that contains the text (default: 'title')
44
+ dataFieldDescription: null, // Property in the option object that contains the description
45
+ dataFieldIcon: null, // Property in the option object that contains the icon
46
+ dataFieldIconWidth: null, // Property in the option object that contains the icon width
47
+ dataFieldIconHeight: null, // Property in the option object that contains the icon height
48
+ // Search Configuration
49
+ searchParam: '', // Query parameter for API search requests
50
+ searchDebounce: 300, // Debounce delay for search (in ms)
51
+ // Pagination Configuration
52
+ pagination: false, // Enable/disable pagination for remote data
53
+ paginationLimit: 10, // Items per page
54
+ paginationPageParam: 'page', // Parameter name for page number
55
+ paginationLimitParam: 'limit', // Parameter name for items per page
56
+ paginationTotalParam: 'total', // Parameter name for total items
57
+ // Selection Behavior
58
+ multiple: false, // Enable/disable multi-select
59
+ maxSelections: null, // Maximum number of selections allowed in multi-select mode (null for unlimited)
60
+ closeOnSelect: true, // Close the dropdown after selecting an option (single-select only)
61
+ disabled: false, // Disable the select component
62
+ isRequired: false, // Make selection required
63
+ mode: null, // Select mode: tags or combobox
64
+ // Search Functionality
65
+ enableSearch: false, // Enable/disable search functionality within the dropdown
66
+ searchPlaceholder: 'Search...', // Placeholder text for the search input
67
+ searchAutofocus: true, // Autofocus on search input when dropdown opens
68
+ searchMinLength: 0, // Minimum characters required to trigger search
69
+ searchMaxItems: 50, // Maximum number of search results to display
70
+ searchNotFoundText: 'No results found', // Text to display when no search results are found
71
+ searchHighlight: true, // Highlight matching search terms within the options
72
+ clearSearchOnClose: true, // Clear search input when dropdown closes
73
+ // Multi-Select Display
74
+ selectAllText: 'Select all', // Text for the "Select All" option (if implemented)
75
+ clearAllText: 'Clear all', // Text for the "Clear All" option (if implemented)
76
+ showSelectedCount: true, // Show the number of selected options in multi-select mode
77
+ renderSelected: null, // Custom function to render the selected value(s) in the display area
78
+ // Accessibility & Usability
79
+ label: 'Select an option', // Label for the select component (for screen readers)
80
+ height: 250, // Maximum height of the dropdown menu in pixels (if exceeded, a scrollbar will appear)
81
+ // Dropdown Configuration
82
+ dropdownPlacement: null,
83
+ dropdownFlip: false,
84
+ dropdownPreventOverflow: false,
85
+ dropdownStrategy: null,
86
+ dropdownWidth: null, // Custom width for dropdown (e.g., '300px'), null to match toggle element width
87
+ // Styling
88
+ focusClass: 'option-focused',
89
+ hoverClass: 'hovered',
90
+ bgClass: 'bg-blue-50',
91
+ fontClass: 'font-medium',
92
+ };
93
+ var KTSelectState = /** @class */ (function () {
94
+ function KTSelectState(config) {
95
+ this._selectedOptions = [];
96
+ this._config = this._initDefaultConfig(config);
97
+ }
98
+ KTSelectState.prototype._initDefaultConfig = function (config) {
99
+ return __assign(__assign({}, DefaultConfig), config);
100
+ };
101
+ KTSelectState.prototype.setItems = function (items, query) {
102
+ var _this = this;
103
+ return new Promise(function (resolve, reject) {
104
+ if (items) {
105
+ _this._config.items = items;
106
+ resolve();
107
+ }
108
+ else if (_this._config.dataUrl) {
109
+ _this._fetchRemoteData(query)
110
+ .then(resolve) // Resolve after _fetchRemoteData completes
111
+ .catch(reject);
112
+ }
113
+ else if (_this._config.onFetch) {
114
+ _this._config.isLoading = true;
115
+ _this._config
116
+ .onFetch(query)
117
+ .then(function (items) {
118
+ _this._config.items = items;
119
+ resolve(); // Resolve after onFetch completes
120
+ })
121
+ .catch(function (error) {
122
+ console.error('Error fetching data:', error);
123
+ reject(error); // Reject on error
124
+ })
125
+ .finally(function () {
126
+ _this._config.isLoading = false;
127
+ });
128
+ }
129
+ else {
130
+ resolve();
131
+ }
132
+ });
133
+ };
134
+ KTSelectState.prototype._fetchRemoteData = function (query) {
135
+ var _this = this;
136
+ this._config.isLoading = true; // Show loading indicator
137
+ var url = this._config.dataUrl;
138
+ if (query) {
139
+ url += "?".concat(this._config.searchParam, "=").concat(encodeURIComponent(query));
140
+ }
141
+ return fetch(url)
142
+ .then(function (response) { return response.json(); })
143
+ .then(function (data) {
144
+ if (_this._config.apiDataProperty) {
145
+ // Extract the data property from the response
146
+ if (_this._config.apiDataProperty in data) {
147
+ data = data[_this._config.apiDataProperty];
148
+ }
149
+ else {
150
+ console.error('Error fetching data:', "Property '".concat(_this._config.apiDataProperty, "' not found in response"));
151
+ return;
152
+ }
153
+ }
154
+ _this._config.items = data;
155
+ })
156
+ .catch(function (error) {
157
+ console.error('Error fetching data:', error);
158
+ // Handle error (e.g., display an error message)
159
+ })
160
+ .finally(function () {
161
+ _this._config.isLoading = false; // Hide loading indicator
162
+ });
163
+ };
164
+ KTSelectState.prototype.getItems = function () {
165
+ return this._config.items || [];
166
+ };
167
+ KTSelectState.prototype.setItemsFromOptions = function (options) {
168
+ this._config.items = options.map(function (option) { return ({
169
+ id: option.value,
170
+ title: option.textContent || '',
171
+ // Add other properties from option element if needed
172
+ }); });
173
+ };
174
+ KTSelectState.prototype.getConfig = function () {
175
+ return this._config;
176
+ };
177
+ KTSelectState.prototype.setSelectedOptions = function (value) {
178
+ if (this._config.multiple &&
179
+ typeof value === 'string' &&
180
+ !this._selectedOptions.includes(value)) {
181
+ this._selectedOptions.push(value);
182
+ }
183
+ else if (!this._config.multiple) {
184
+ // For single select, replace the previous selection with the new one
185
+ this._selectedOptions = typeof value === 'string' ? [value] : [value[0]];
186
+ }
187
+ else if (this._config.multiple && Array.isArray(value)) {
188
+ // For multiple select with array input, use the provided array
189
+ this._selectedOptions = __spreadArray([], value, true);
190
+ }
191
+ };
192
+ KTSelectState.prototype.toggleSelectedOptions = function (value) {
193
+ if (!this._config.multiple) {
194
+ // For non-multiple, always set the new value
195
+ this._selectedOptions = [value];
196
+ return;
197
+ }
198
+ // For multiple selection, toggle the value
199
+ var index = this._selectedOptions.indexOf(value);
200
+ if (index > -1) {
201
+ this._selectedOptions.splice(index, 1);
202
+ }
203
+ else {
204
+ this._selectedOptions.push(value);
205
+ }
206
+ };
207
+ KTSelectState.prototype.getSelectedOptions = function () {
208
+ return this._selectedOptions;
209
+ };
210
+ KTSelectState.prototype.isSelected = function (value) {
211
+ return this._selectedOptions.includes(value);
212
+ };
213
+ KTSelectState.prototype.modifyConfig = function (config) {
214
+ this._config = __assign(__assign({}, this._config), config);
215
+ };
216
+ return KTSelectState;
217
+ }());
218
+ export { KTSelectState };
219
+ export var SelectOptionDefaultConfig = {
220
+ description: '',
221
+ icon: null,
222
+ };
223
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/components/select/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;AAIH,MAAM,CAAC,IAAM,aAAa,GAA4B;IACrD,0BAA0B;IAC1B,YAAY,EAAE,cAAc;IAC5B,kBAAkB;IAClB,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,kBAAkB,EAAE,sDAAsD;IACvF,cAAc,EAAE,IAAI,EAAE,yCAAyC;IAE/D,gBAAgB;IAChB,KAAK,EAAE,EAAE,EAAE,yBAAyB;IACpC,SAAS,EAAE,KAAK,EAAE,uDAAuD;IACzE,OAAO,EAAE,IAAI,EAAE,oDAAoD;IAEnE,4BAA4B;IAC5B,MAAM,EAAE,KAAK,EAAE,sCAAsC;IACrD,OAAO,EAAE,IAAI,EAAE,4BAA4B;IAC3C,eAAe,EAAE,IAAI,EAAE,4DAA4D;IACnF,kBAAkB,EAAE,qBAAqB,EAAE,sDAAsD;IAEjG,gBAAgB;IAChB,cAAc,EAAE,IAAI,EAAE,wEAAwE;IAC9F,aAAa,EAAE,IAAI,EAAE,0EAA0E;IAC/F,oBAAoB,EAAE,IAAI,EAAE,8DAA8D;IAC1F,aAAa,EAAE,IAAI,EAAE,uDAAuD;IAC5E,kBAAkB,EAAE,IAAI,EAAE,6DAA6D;IACvF,mBAAmB,EAAE,IAAI,EAAE,8DAA8D;IAEzF,uBAAuB;IACvB,WAAW,EAAE,EAAE,EAAE,0CAA0C;IAC3D,cAAc,EAAE,GAAG,EAAE,oCAAoC;IAEzD,2BAA2B;IAC3B,UAAU,EAAE,KAAK,EAAE,4CAA4C;IAC/D,eAAe,EAAE,EAAE,EAAE,iBAAiB;IACtC,mBAAmB,EAAE,MAAM,EAAE,iCAAiC;IAC9D,oBAAoB,EAAE,OAAO,EAAE,oCAAoC;IACnE,oBAAoB,EAAE,OAAO,EAAE,iCAAiC;IAEhE,qBAAqB;IACrB,QAAQ,EAAE,KAAK,EAAE,8BAA8B;IAC/C,aAAa,EAAE,IAAI,EAAE,iFAAiF;IACtG,aAAa,EAAE,IAAI,EAAE,oEAAoE;IACzF,QAAQ,EAAE,KAAK,EAAE,+BAA+B;IAChD,UAAU,EAAE,KAAK,EAAE,0BAA0B;IAC7C,IAAI,EAAE,IAAI,EAAE,gCAAgC;IAE5C,uBAAuB;IACvB,YAAY,EAAE,KAAK,EAAE,0DAA0D;IAC/E,iBAAiB,EAAE,WAAW,EAAE,wCAAwC;IACxE,eAAe,EAAE,IAAI,EAAE,gDAAgD;IACvE,eAAe,EAAE,CAAC,EAAE,gDAAgD;IACpE,cAAc,EAAE,EAAE,EAAE,8CAA8C;IAClE,kBAAkB,EAAE,kBAAkB,EAAE,mDAAmD;IAC3F,eAAe,EAAE,IAAI,EAAE,qDAAqD;IAC5E,kBAAkB,EAAE,IAAI,EAAE,0CAA0C;IAEpE,uBAAuB;IACvB,aAAa,EAAE,YAAY,EAAE,oDAAoD;IACjF,YAAY,EAAE,WAAW,EAAE,mDAAmD;IAC9E,iBAAiB,EAAE,IAAI,EAAE,2DAA2D;IACpF,cAAc,EAAE,IAAI,EAAE,sEAAsE;IAE5F,4BAA4B;IAC5B,KAAK,EAAE,kBAAkB,EAAE,sDAAsD;IACjF,MAAM,EAAE,GAAG,EAAE,uFAAuF;IAEpG,yBAAyB;IACzB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,uBAAuB,EAAE,KAAK;IAC9B,gBAAgB,EAAE,IAAI;IACtB,aAAa,EAAE,IAAI,EAAE,gFAAgF;IAErG,UAAU;IACV,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,aAAa;CACxB,CAAC;AAwFF;IAIC,uBAAY,MAAgC;QAFpC,qBAAgB,GAAa,EAAE,CAAC;QAGvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAEO,0CAAkB,GAA1B,UACC,MAA+B;QAE/B,6BACI,aAAa,GACb,MAAM,EACR;IACH,CAAC;IAEM,gCAAQ,GAAf,UAAgB,KAAa,EAAE,KAAc;QAA7C,iBA4BC;QA3BA,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;YACxC,IAAI,KAAK,EAAE,CAAC;gBACX,KAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC3B,OAAO,EAAE,CAAC;YACX,CAAC;iBAAM,IAAI,KAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACjC,KAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;qBAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,2CAA2C;qBACzD,KAAK,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,KAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACjC,KAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC9B,KAAI,CAAC,OAAO;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,IAAI,CAAC,UAAC,KAAK;oBACX,KAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;oBAC3B,OAAO,EAAE,CAAC,CAAC,kCAAkC;gBAC9C,CAAC,CAAC;qBACD,KAAK,CAAC,UAAC,KAAK;oBACZ,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;oBAC7C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;gBAClC,CAAC,CAAC;qBACD,OAAO,CAAC;oBACR,KAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;gBAChC,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACX,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,wCAAgB,GAAxB,UAAyB,KAAc;QAAvC,iBAgCC;QA/BA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,yBAAyB;QAExD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAQ,CAAC;QAChC,IAAI,KAAK,EAAE,CAAC;YACX,GAAG,IAAI,WAAI,IAAI,CAAC,OAAO,CAAC,WAAW,cAAI,kBAAkB,CAAC,KAAK,CAAC,CAAE,CAAC;QACpE,CAAC;QAED,OAAO,KAAK,CAAC,GAAG,CAAC;aACf,IAAI,CAAC,UAAC,QAAQ,IAAK,OAAA,QAAQ,CAAC,IAAI,EAAE,EAAf,CAAe,CAAC;aACnC,IAAI,CAAC,UAAC,IAAI;YACV,IAAI,KAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;gBAClC,8CAA8C;gBAC9C,IAAI,KAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;oBAC1C,IAAI,GAAG,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,KAAK,CACZ,sBAAsB,EACtB,oBAAa,KAAI,CAAC,OAAO,CAAC,eAAe,4BAAyB,CAClE,CAAC;oBACF,OAAO;gBACR,CAAC;YACF,CAAC;YACD,KAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC;aACD,KAAK,CAAC,UAAC,KAAK;YACZ,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,gDAAgD;QACjD,CAAC,CAAC;aACD,OAAO,CAAC;YACR,KAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,yBAAyB;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,gCAAQ,GAAf;QACC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,CAAC;IAEM,2CAAmB,GAA1B,UAA2B,OAA4B;QACtD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,CAAC;YAC7C,EAAE,EAAE,MAAM,CAAC,KAAK;YAChB,KAAK,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YAC/B,qDAAqD;SACrD,CAAC,EAJ2C,CAI3C,CAAC,CAAC;IACL,CAAC;IAEM,iCAAS,GAAhB;QACC,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAEM,0CAAkB,GAAzB,UAA0B,KAAwB;QACjD,IACC,IAAI,CAAC,OAAO,CAAC,QAAQ;YACrB,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EACrC,CAAC;YACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnC,qEAAqE;YACrE,IAAI,CAAC,gBAAgB,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,+DAA+D;YAC/D,IAAI,CAAC,gBAAgB,qBAAO,KAAK,OAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAEM,6CAAqB,GAA5B,UAA6B,KAAa;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5B,6CAA6C;YAC7C,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO;QACR,CAAC;QAED,2CAA2C;QAC3C,IAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAEM,0CAAkB,GAAzB;QACC,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC9B,CAAC;IAEM,kCAAU,GAAjB,UAAkB,KAAa;QAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEM,oCAAY,GAAnB,UAAoB,MAAwC;QAC3D,IAAI,CAAC,OAAO,yBAAQ,IAAI,CAAC,OAAO,GAAK,MAAM,CAAE,CAAC;IAC/C,CAAC;IACF,oBAAC;AAAD,CAAC,AA5ID,IA4IC;;AAED,MAAM,CAAC,IAAM,yBAAyB,GAAkC;IACvE,WAAW,EAAE,EAAE;IACf,IAAI,EAAE,IAAI;CACV,CAAC"}
@@ -0,0 +1,426 @@
1
+ /**
2
+ * KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
3
+ * Copyright 2025 by Keenthemes Inc
4
+ */
5
+ var __extends = (this && this.__extends) || (function () {
6
+ var extendStatics = function (d, b) {
7
+ extendStatics = Object.setPrototypeOf ||
8
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
9
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
10
+ return extendStatics(d, b);
11
+ };
12
+ return function (d, b) {
13
+ if (typeof b !== "function" && b !== null)
14
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
15
+ extendStatics(d, b);
16
+ function __() { this.constructor = d; }
17
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
18
+ };
19
+ })();
20
+ import { createPopper, } from '@popperjs/core';
21
+ import KTDom from '../../helpers/dom';
22
+ import KTData from '../../helpers/data';
23
+ import KTComponent from '../component';
24
+ import { FocusManager, EventManager } from './utils';
25
+ /**
26
+ * KTSelectDropdown
27
+ *
28
+ * A specialized dropdown implementation for the KTSelect component.
29
+ * This module handles the dropdown functionality for the select component,
30
+ * including positioning, showing/hiding, and keyboard navigation.
31
+ */
32
+ var KTSelectDropdown = /** @class */ (function (_super) {
33
+ __extends(KTSelectDropdown, _super);
34
+ /**
35
+ * Constructor
36
+ * @param element The parent element (select wrapper)
37
+ * @param toggleElement The element that triggers the dropdown
38
+ * @param dropdownElement The dropdown content element
39
+ * @param config The configuration options
40
+ */
41
+ function KTSelectDropdown(element, toggleElement, dropdownElement, config) {
42
+ var _this = _super.call(this) || this;
43
+ _this._name = 'select-dropdown';
44
+ // State
45
+ _this._isOpen = false;
46
+ _this._isTransitioning = false;
47
+ _this._popperInstance = null;
48
+ _this._element = element;
49
+ _this._toggleElement = toggleElement;
50
+ _this._dropdownElement = dropdownElement;
51
+ _this._config = config;
52
+ _this._eventManager = new EventManager();
53
+ _this._focusManager = new FocusManager(dropdownElement, '[data-kt-select-option]', config);
54
+ _this._setupEventListeners();
55
+ return _this;
56
+ }
57
+ /**
58
+ * Set up event listeners for the dropdown
59
+ */
60
+ KTSelectDropdown.prototype._setupEventListeners = function () {
61
+ // Toggle click
62
+ this._eventManager.addListener(this._toggleElement, 'click', this._handleToggleClick.bind(this));
63
+ // Keyboard navigation
64
+ this._eventManager.addListener(this._element, 'keydown', this._handleKeyDown.bind(this));
65
+ // Close on outside click
66
+ this._eventManager.addListener(document, 'click', this._handleOutsideClick.bind(this));
67
+ };
68
+ /**
69
+ * Handle toggle element click
70
+ */
71
+ KTSelectDropdown.prototype._handleToggleClick = function (event) {
72
+ event.preventDefault();
73
+ event.stopPropagation();
74
+ this.toggle();
75
+ };
76
+ /**
77
+ * Handle keyboard events
78
+ */
79
+ KTSelectDropdown.prototype._handleKeyDown = function (event) {
80
+ if (!this._isOpen)
81
+ return;
82
+ switch (event.key) {
83
+ case 'Escape':
84
+ event.preventDefault();
85
+ this.close();
86
+ this._toggleElement.focus();
87
+ break;
88
+ case 'ArrowDown':
89
+ event.preventDefault();
90
+ this._focusManager.focusNext();
91
+ break;
92
+ case 'ArrowUp':
93
+ event.preventDefault();
94
+ this._focusManager.focusPrevious();
95
+ break;
96
+ case 'Home':
97
+ event.preventDefault();
98
+ // Focus first visible option
99
+ var firstOption = this._focusManager.getVisibleOptions()[0];
100
+ if (firstOption) {
101
+ this._focusManager.applyFocus(firstOption);
102
+ this._focusManager.scrollIntoView(firstOption);
103
+ }
104
+ break;
105
+ case 'End':
106
+ event.preventDefault();
107
+ // Focus last visible option
108
+ var visibleOptions = this._focusManager.getVisibleOptions();
109
+ var lastOption = visibleOptions[visibleOptions.length - 1];
110
+ if (lastOption) {
111
+ this._focusManager.applyFocus(lastOption);
112
+ this._focusManager.scrollIntoView(lastOption);
113
+ }
114
+ break;
115
+ }
116
+ };
117
+ /**
118
+ * Handle clicks outside the dropdown
119
+ */
120
+ KTSelectDropdown.prototype._handleOutsideClick = function (event) {
121
+ if (!this._isOpen)
122
+ return;
123
+ var target = event.target;
124
+ if (!this._element.contains(target) &&
125
+ !this._dropdownElement.contains(target)) {
126
+ this.close();
127
+ }
128
+ };
129
+ /**
130
+ * Set width of dropdown based on toggle element
131
+ */
132
+ KTSelectDropdown.prototype._setDropdownWidth = function () {
133
+ if (!this._dropdownElement || !this._toggleElement)
134
+ return;
135
+ // Check if width is configured
136
+ if (this._config.dropdownWidth) {
137
+ // If custom width is set, use that
138
+ this._dropdownElement.style.width = this._config.dropdownWidth;
139
+ }
140
+ else {
141
+ // Otherwise, match toggle element width for a cleaner appearance
142
+ var toggleWidth = this._toggleElement.offsetWidth;
143
+ this._dropdownElement.style.width = "".concat(toggleWidth, "px");
144
+ }
145
+ };
146
+ /**
147
+ * Initialize the Popper instance for dropdown positioning
148
+ */
149
+ KTSelectDropdown.prototype._initPopper = function () {
150
+ // Destroy existing popper instance if it exists
151
+ this._destroyPopper();
152
+ // Default offset
153
+ var offsetValue = '0, 5';
154
+ // Get configuration options
155
+ var placement = this._config.dropdownPlacement || 'bottom-start';
156
+ var strategy = this._config.dropdownStrategy || 'fixed';
157
+ var preventOverflow = this._config.dropdownPreventOverflow !== false;
158
+ var flip = this._config.dropdownFlip !== false;
159
+ // Create new popper instance
160
+ this._popperInstance = createPopper(this._toggleElement, this._dropdownElement, {
161
+ placement: placement,
162
+ strategy: strategy,
163
+ modifiers: [
164
+ {
165
+ name: 'offset',
166
+ options: {
167
+ offset: this._parseOffset(offsetValue),
168
+ },
169
+ },
170
+ {
171
+ name: 'preventOverflow',
172
+ options: {
173
+ boundary: 'viewport',
174
+ altAxis: preventOverflow,
175
+ },
176
+ },
177
+ {
178
+ name: 'flip',
179
+ options: {
180
+ enabled: flip,
181
+ fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],
182
+ },
183
+ },
184
+ {
185
+ name: 'sameWidth',
186
+ enabled: !this._config.dropdownWidth,
187
+ phase: 'beforeWrite',
188
+ requires: ['computeStyles'],
189
+ fn: function (_a) {
190
+ var state = _a.state;
191
+ state.styles.popper.width = "".concat(state.rects.reference.width, "px");
192
+ },
193
+ effect: function (_a) {
194
+ var state = _a.state;
195
+ // Add type guard for HTMLElement
196
+ var reference = state.elements.reference;
197
+ if (reference && 'offsetWidth' in reference) {
198
+ state.elements.popper.style.width = "".concat(reference.offsetWidth, "px");
199
+ }
200
+ },
201
+ },
202
+ ],
203
+ });
204
+ };
205
+ /**
206
+ * Parse offset string into an array of numbers
207
+ */
208
+ KTSelectDropdown.prototype._parseOffset = function (offset) {
209
+ return offset.split(',').map(function (value) { return parseInt(value.trim(), 10); });
210
+ };
211
+ /**
212
+ * Destroy the Popper instance
213
+ */
214
+ KTSelectDropdown.prototype._destroyPopper = function () {
215
+ if (this._popperInstance) {
216
+ this._popperInstance.destroy();
217
+ this._popperInstance = null;
218
+ }
219
+ };
220
+ /**
221
+ * Update dropdown position
222
+ */
223
+ KTSelectDropdown.prototype.updatePosition = function () {
224
+ if (this._popperInstance) {
225
+ this._popperInstance.update();
226
+ }
227
+ };
228
+ /**
229
+ * Toggle the dropdown
230
+ */
231
+ KTSelectDropdown.prototype.toggle = function () {
232
+ if (this._config.debug)
233
+ console.log('KTSelectDropdown.toggle called - isOpen:', this._isOpen);
234
+ if (this._isTransitioning) {
235
+ if (this._config.debug)
236
+ console.log('KTSelectDropdown.toggle - ignoring during transition');
237
+ return;
238
+ }
239
+ if (this._isOpen) {
240
+ this.close();
241
+ }
242
+ else {
243
+ this.open();
244
+ }
245
+ };
246
+ /**
247
+ * Open the dropdown
248
+ */
249
+ KTSelectDropdown.prototype.open = function () {
250
+ var _this = this;
251
+ if (this._isOpen || this._isTransitioning)
252
+ return;
253
+ // Fire before show event
254
+ var beforeShowEvent = new CustomEvent('kt.select.dropdown.show', {
255
+ bubbles: true,
256
+ cancelable: true,
257
+ });
258
+ this._element.dispatchEvent(beforeShowEvent);
259
+ if (beforeShowEvent.defaultPrevented)
260
+ return;
261
+ // Begin opening transition
262
+ this._isTransitioning = true;
263
+ // Set initial styles - remove display: block and use class toggling instead
264
+ this._dropdownElement.classList.remove('hidden');
265
+ this._dropdownElement.style.opacity = '0';
266
+ // Set dropdown width
267
+ this._setDropdownWidth();
268
+ // Make sure the element is visible for transitioning
269
+ KTDom.reflow(this._dropdownElement);
270
+ // Apply z-index if configured
271
+ if (this._config.dropdownZindex) {
272
+ this._dropdownElement.style.zIndex =
273
+ this._config.dropdownZindex.toString();
274
+ }
275
+ else {
276
+ // Auto-calculate z-index
277
+ var parentZindex = KTDom.getHighestZindex(this._element);
278
+ if (parentZindex) {
279
+ this._dropdownElement.style.zIndex = (parentZindex + 1).toString();
280
+ }
281
+ }
282
+ // Initialize popper for positioning
283
+ this._initPopper();
284
+ // Add active classes
285
+ this._dropdownElement.classList.add('open');
286
+ this._toggleElement.classList.add('active');
287
+ this._toggleElement.setAttribute('aria-expanded', 'true');
288
+ // Start transition
289
+ this._dropdownElement.style.opacity = '1';
290
+ // Handle transition end
291
+ KTDom.transitionEnd(this._dropdownElement, function () {
292
+ _this._isTransitioning = false;
293
+ _this._isOpen = true;
294
+ // Focus the first item if search is enabled
295
+ if (_this._config.enableSearch) {
296
+ var searchInput = _this._dropdownElement.querySelector('input[type="search"]');
297
+ if (searchInput) {
298
+ searchInput.focus();
299
+ }
300
+ else {
301
+ _this._focusFirstOption();
302
+ }
303
+ }
304
+ else {
305
+ _this._focusFirstOption();
306
+ }
307
+ // Fire after show event
308
+ var afterShowEvent = new CustomEvent('kt.select.dropdown.shown', {
309
+ bubbles: true,
310
+ });
311
+ _this._element.dispatchEvent(afterShowEvent);
312
+ });
313
+ };
314
+ /**
315
+ * Focus the first option in the dropdown
316
+ */
317
+ KTSelectDropdown.prototype._focusFirstOption = function () {
318
+ var firstOption = this._focusManager.getVisibleOptions()[0];
319
+ if (firstOption) {
320
+ this._focusManager.applyFocus(firstOption);
321
+ this._focusManager.scrollIntoView(firstOption);
322
+ }
323
+ };
324
+ /**
325
+ * Close the dropdown
326
+ */
327
+ KTSelectDropdown.prototype.close = function () {
328
+ var _this = this;
329
+ if (this._config.debug)
330
+ console.log('KTSelectDropdown.close called - isOpen:', this._isOpen, 'isTransitioning:', this._isTransitioning);
331
+ if (!this._isOpen || this._isTransitioning) {
332
+ if (this._config.debug)
333
+ console.log('KTSelectDropdown.close - early return: dropdown not open or is transitioning');
334
+ return;
335
+ }
336
+ // Fire before hide event
337
+ var beforeHideEvent = new CustomEvent('kt.select.dropdown.hide', {
338
+ bubbles: true,
339
+ cancelable: true,
340
+ });
341
+ this._element.dispatchEvent(beforeHideEvent);
342
+ if (beforeHideEvent.defaultPrevented) {
343
+ if (this._config.debug)
344
+ console.log('KTSelectDropdown.close - canceling due to defaultPrevented on beforeHideEvent');
345
+ return;
346
+ }
347
+ if (this._config.debug)
348
+ console.log('KTSelectDropdown.close - starting transition');
349
+ // Begin closing transition
350
+ this._isTransitioning = true;
351
+ // Start transition
352
+ this._dropdownElement.style.opacity = '0';
353
+ // Use a combination of transition end and a fallback timer
354
+ var transitionComplete = false;
355
+ // Set a fixed-duration fallback in case the transition event doesn't fire
356
+ var fallbackTimer = setTimeout(function () {
357
+ if (!transitionComplete) {
358
+ if (_this._config.debug)
359
+ console.log('KTSelectDropdown.close - fallback timer triggered');
360
+ completeTransition();
361
+ }
362
+ }, 300); // 300ms should be enough for most transitions
363
+ // Setup the transition end function
364
+ var completeTransition = function () {
365
+ if (transitionComplete)
366
+ return;
367
+ transitionComplete = true;
368
+ clearTimeout(fallbackTimer);
369
+ if (_this._config.debug)
370
+ console.log('KTSelectDropdown.close - transition ended');
371
+ // Remove active classes
372
+ _this._dropdownElement.classList.add('hidden');
373
+ _this._dropdownElement.classList.remove('open');
374
+ _this._toggleElement.classList.remove('active');
375
+ _this._toggleElement.setAttribute('aria-expanded', 'false');
376
+ // Reset styles - replace display: none with adding hidden class
377
+ _this._dropdownElement.classList.add('hidden');
378
+ _this._dropdownElement.style.opacity = '';
379
+ _this._dropdownElement.style.zIndex = '';
380
+ // Destroy popper
381
+ _this._destroyPopper();
382
+ // Update state
383
+ _this._isTransitioning = false;
384
+ _this._isOpen = false;
385
+ // Fire after hide event
386
+ var afterHideEvent = new CustomEvent('kt.select.dropdown.hidden', {
387
+ bubbles: true,
388
+ });
389
+ _this._element.dispatchEvent(afterHideEvent);
390
+ if (_this._config.debug)
391
+ console.log('KTSelectDropdown.close - complete, events fired');
392
+ };
393
+ // Handle transition end via the utility but also have the fallback
394
+ KTDom.transitionEnd(this._dropdownElement, completeTransition);
395
+ };
396
+ /**
397
+ * Check if dropdown is open
398
+ */
399
+ KTSelectDropdown.prototype.isOpen = function () {
400
+ return this._isOpen;
401
+ };
402
+ /**
403
+ * Clean up component
404
+ */
405
+ KTSelectDropdown.prototype.dispose = function () {
406
+ // Destroy popper
407
+ this._destroyPopper();
408
+ // Remove event listeners
409
+ this._eventManager.removeAllListeners(this._element);
410
+ this._eventManager.removeAllListeners(this._toggleElement);
411
+ this._eventManager.removeAllListeners(document);
412
+ // Clean up focus manager
413
+ if (this._focusManager &&
414
+ typeof this._focusManager.dispose === 'function') {
415
+ this._focusManager.dispose();
416
+ }
417
+ // Clean up state
418
+ this._isOpen = false;
419
+ this._isTransitioning = false;
420
+ // Remove data reference
421
+ KTData.remove(this._element, this._name);
422
+ };
423
+ return KTSelectDropdown;
424
+ }(KTComponent));
425
+ export { KTSelectDropdown };
426
+ //# sourceMappingURL=dropdown.js.map