@ncds/ui-admin 1.8.0 → 1.8.2

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 (448) hide show
  1. package/dist/cjs/src/components/badge/index.js +11 -0
  2. package/dist/cjs/src/components/combo-box/ComboBox.js +1 -0
  3. package/dist/cjs/src/components/date-picker/index.js +11 -0
  4. package/dist/cjs/src/components/image-file-input/components/index.js +16 -0
  5. package/dist/cjs/src/components/image-file-input/index.js +11 -0
  6. package/dist/cjs/src/components/progress-bar/components/index.js +27 -0
  7. package/dist/cjs/src/components/progress-bar/hooks/index.js +16 -0
  8. package/dist/cjs/src/components/progress-bar/index.js +33 -0
  9. package/dist/cjs/src/components/select/Select.js +0 -1
  10. package/dist/cjs/src/components/select-dropdown/index.js +11 -7
  11. package/dist/cjs/src/components/switch/index.js +11 -7
  12. package/dist/cjs/src/components/table/Table.js +128 -16
  13. package/dist/cjs/src/components/tooltip/Tooltip.js +170 -104
  14. package/dist/cjs/src/hooks/dropdown/index.js +61 -37
  15. package/dist/cjs/src/hooks/index.js +31 -25
  16. package/dist/cjs/vitest.config.js +13 -0
  17. package/dist/esm/src/components/badge/index.js +2 -1
  18. package/dist/esm/src/components/combo-box/ComboBox.js +1 -0
  19. package/dist/esm/src/components/date-picker/index.js +1 -0
  20. package/dist/esm/src/components/empty-state/EmptyState.js +2 -3
  21. package/dist/esm/src/components/image-file-input/components/index.js +1 -0
  22. package/dist/esm/src/components/image-file-input/index.js +2 -1
  23. package/dist/esm/src/components/progress-bar/components/index.js +2 -0
  24. package/dist/esm/src/components/progress-bar/hooks/index.js +1 -0
  25. package/dist/esm/src/components/progress-bar/index.js +4 -1
  26. package/dist/esm/src/components/select/Select.js +0 -1
  27. package/dist/esm/src/components/select-dropdown/index.js +1 -1
  28. package/dist/esm/src/components/switch/index.js +1 -1
  29. package/dist/esm/src/components/table/Table.js +129 -17
  30. package/dist/esm/src/components/tag/Tag.js +2 -3
  31. package/dist/esm/src/components/tooltip/Tooltip.js +172 -106
  32. package/dist/esm/src/hooks/dropdown/index.js +6 -6
  33. package/dist/esm/src/hooks/index.js +3 -3
  34. package/dist/esm/src/types/component-meta.js +2 -0
  35. package/dist/esm/vitest.config.js +7 -0
  36. package/dist/temp/src/components/badge/index.d.ts +1 -0
  37. package/dist/temp/src/components/badge/index.js +1 -0
  38. package/dist/temp/src/components/combo-box/ComboBox.js +1 -0
  39. package/dist/temp/src/components/date-picker/index.d.ts +1 -0
  40. package/dist/temp/src/components/date-picker/index.js +1 -0
  41. package/dist/temp/src/components/empty-state/EmptyState.d.ts +3 -5
  42. package/dist/temp/src/components/empty-state/EmptyState.js +1 -2
  43. package/dist/temp/src/components/image-file-input/components/index.d.ts +1 -0
  44. package/dist/temp/src/components/image-file-input/components/index.js +1 -0
  45. package/dist/temp/src/components/image-file-input/index.d.ts +1 -0
  46. package/dist/temp/src/components/image-file-input/index.js +1 -0
  47. package/dist/temp/src/components/progress-bar/components/index.d.ts +2 -0
  48. package/dist/temp/src/components/progress-bar/components/index.js +2 -0
  49. package/dist/temp/src/components/progress-bar/hooks/index.d.ts +1 -0
  50. package/dist/temp/src/components/progress-bar/hooks/index.js +1 -0
  51. package/dist/temp/src/components/progress-bar/index.d.ts +3 -0
  52. package/dist/temp/src/components/progress-bar/index.js +3 -0
  53. package/dist/temp/src/components/select/Select.js +1 -1
  54. package/dist/temp/src/components/select-dropdown/index.d.ts +1 -1
  55. package/dist/temp/src/components/select-dropdown/index.js +1 -1
  56. package/dist/temp/src/components/spinner/Spinner.d.ts +1 -2
  57. package/dist/temp/src/components/switch/index.d.ts +1 -2
  58. package/dist/temp/src/components/switch/index.js +1 -1
  59. package/dist/temp/src/components/table/Table.d.ts +4 -2
  60. package/dist/temp/src/components/table/Table.js +95 -11
  61. package/dist/temp/src/components/table/types.d.ts +3 -1
  62. package/dist/temp/src/components/tag/Tag.d.ts +3 -5
  63. package/dist/temp/src/components/tag/Tag.js +1 -2
  64. package/dist/temp/src/components/tooltip/Tooltip.d.ts +4 -2
  65. package/dist/temp/src/components/tooltip/Tooltip.js +126 -68
  66. package/dist/temp/src/hooks/dropdown/index.d.ts +6 -6
  67. package/dist/temp/src/hooks/dropdown/index.js +6 -6
  68. package/dist/temp/src/hooks/index.d.ts +3 -3
  69. package/dist/temp/src/hooks/index.js +3 -3
  70. package/dist/temp/src/types/component-meta.d.ts +26 -0
  71. package/dist/temp/src/types/component-meta.js +2 -0
  72. package/dist/temp/src/types/dropdown/option.d.ts +2 -4
  73. package/dist/temp/src/types/side-slot.d.ts +9 -1
  74. package/dist/temp/vitest.config.d.ts +2 -0
  75. package/dist/temp/vitest.config.js +7 -0
  76. package/dist/types/src/components/badge/index.d.ts +1 -0
  77. package/dist/types/src/components/date-picker/index.d.ts +1 -0
  78. package/dist/types/src/components/empty-state/EmptyState.d.ts +3 -5
  79. package/dist/types/src/components/image-file-input/components/index.d.ts +1 -0
  80. package/dist/types/src/components/image-file-input/index.d.ts +1 -0
  81. package/dist/types/src/components/progress-bar/components/index.d.ts +2 -0
  82. package/dist/types/src/components/progress-bar/hooks/index.d.ts +1 -0
  83. package/dist/types/src/components/progress-bar/index.d.ts +3 -0
  84. package/dist/types/src/components/select-dropdown/index.d.ts +1 -1
  85. package/dist/types/src/components/spinner/Spinner.d.ts +1 -2
  86. package/dist/types/src/components/switch/index.d.ts +1 -2
  87. package/dist/types/src/components/table/Table.d.ts +4 -2
  88. package/dist/types/src/components/table/types.d.ts +3 -1
  89. package/dist/types/src/components/tag/Tag.d.ts +3 -5
  90. package/dist/types/src/components/tooltip/Tooltip.d.ts +4 -2
  91. package/dist/types/src/hooks/dropdown/index.d.ts +6 -6
  92. package/dist/types/src/hooks/index.d.ts +3 -3
  93. package/dist/types/src/types/component-meta.d.ts +26 -0
  94. package/dist/types/src/types/dropdown/option.d.ts +2 -4
  95. package/dist/types/src/types/side-slot.d.ts +9 -1
  96. package/dist/types/vitest.config.d.ts +2 -0
  97. package/dist/ui-admin/assets/styles/style.css +178 -60
  98. package/package.json +6 -1
  99. package/dist/cjs/assets/scripts/baseBox.js +0 -146
  100. package/dist/cjs/assets/scripts/comboBox.js +0 -137
  101. package/dist/cjs/assets/scripts/datePicker.js +0 -671
  102. package/dist/cjs/assets/scripts/featuredIcon.js +0 -87
  103. package/dist/cjs/assets/scripts/fileInput/const/classNames.js +0 -25
  104. package/dist/cjs/assets/scripts/fileInput/const/index.js +0 -27
  105. package/dist/cjs/assets/scripts/fileInput/const/types.js +0 -13
  106. package/dist/cjs/assets/scripts/fileInput/fileInput.js +0 -78
  107. package/dist/cjs/assets/scripts/fileInput/fileInputModel.js +0 -53
  108. package/dist/cjs/assets/scripts/fileInput/fileInputView.js +0 -152
  109. package/dist/cjs/assets/scripts/fileInput/index.js +0 -44
  110. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +0 -184
  111. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -222
  112. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +0 -356
  113. package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +0 -31
  114. package/dist/cjs/assets/scripts/imageFileInput/const/index.js +0 -27
  115. package/dist/cjs/assets/scripts/imageFileInput/const/types.js +0 -13
  116. package/dist/cjs/assets/scripts/imageFileInput/index.js +0 -44
  117. package/dist/cjs/assets/scripts/index.js +0 -32
  118. package/dist/cjs/assets/scripts/modal/Modal.js +0 -104
  119. package/dist/cjs/assets/scripts/modal/ModalActions.js +0 -116
  120. package/dist/cjs/assets/scripts/modal/ModalContent.js +0 -46
  121. package/dist/cjs/assets/scripts/modal/ModalHeader.js +0 -104
  122. package/dist/cjs/assets/scripts/modal/const/classNames.js +0 -33
  123. package/dist/cjs/assets/scripts/modal/const/index.js +0 -27
  124. package/dist/cjs/assets/scripts/modal/index.js +0 -61
  125. package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +0 -35
  126. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +0 -178
  127. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +0 -132
  128. package/dist/cjs/assets/scripts/notification/MessageNotification.js +0 -159
  129. package/dist/cjs/assets/scripts/notification/Notification.js +0 -101
  130. package/dist/cjs/assets/scripts/notification/const/classNames.js +0 -50
  131. package/dist/cjs/assets/scripts/notification/const/icons.js +0 -31
  132. package/dist/cjs/assets/scripts/notification/const/index.js +0 -87
  133. package/dist/cjs/assets/scripts/notification/const/sizes.js +0 -46
  134. package/dist/cjs/assets/scripts/notification/const/types.js +0 -14
  135. package/dist/cjs/assets/scripts/notification/index.js +0 -92
  136. package/dist/cjs/assets/scripts/notification/utils.js +0 -97
  137. package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +0 -271
  138. package/dist/cjs/assets/scripts/progress-bar/index.js +0 -12
  139. package/dist/cjs/assets/scripts/selectBox.js +0 -169
  140. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +0 -45
  141. package/dist/cjs/assets/scripts/tab.js +0 -40
  142. package/dist/cjs/assets/scripts/table/Table.js +0 -377
  143. package/dist/cjs/assets/scripts/table/const/classNames.js +0 -33
  144. package/dist/cjs/assets/scripts/table/const/index.js +0 -27
  145. package/dist/cjs/assets/scripts/table/const/types.js +0 -5
  146. package/dist/cjs/assets/scripts/table/index.js +0 -43
  147. package/dist/cjs/assets/scripts/tag/Tag.js +0 -261
  148. package/dist/cjs/assets/scripts/tag/const/classNames.js +0 -20
  149. package/dist/cjs/assets/scripts/tag/const/index.js +0 -38
  150. package/dist/cjs/assets/scripts/tag/const/sizes.js +0 -13
  151. package/dist/cjs/assets/scripts/tag/const/types.js +0 -5
  152. package/dist/cjs/assets/scripts/tag/index.js +0 -44
  153. package/dist/cjs/assets/scripts/tooltip/Tooltip.js +0 -353
  154. package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +0 -82
  155. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +0 -29
  156. package/dist/cjs/assets/scripts/tooltip/const/constants.js +0 -56
  157. package/dist/cjs/assets/scripts/tooltip/const/icons.js +0 -15
  158. package/dist/cjs/assets/scripts/tooltip/const/index.js +0 -123
  159. package/dist/cjs/assets/scripts/tooltip/const/templates.js +0 -66
  160. package/dist/cjs/assets/scripts/tooltip/const/types.js +0 -5
  161. package/dist/cjs/assets/scripts/tooltip/index.js +0 -57
  162. package/dist/cjs/assets/scripts/tooltip/utils.js +0 -40
  163. package/dist/cjs/assets/scripts/utils/debounce.js +0 -32
  164. package/dist/cjs/assets/scripts/utils/unifiedBox/domRenderer.js +0 -370
  165. package/dist/cjs/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -285
  166. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -622
  167. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -473
  168. package/dist/esm/assets/scripts/baseBox.js +0 -139
  169. package/dist/esm/assets/scripts/comboBox.js +0 -130
  170. package/dist/esm/assets/scripts/datePicker.js +0 -663
  171. package/dist/esm/assets/scripts/featuredIcon.js +0 -80
  172. package/dist/esm/assets/scripts/fileInput/const/classNames.js +0 -16
  173. package/dist/esm/assets/scripts/fileInput/const/index.js +0 -2
  174. package/dist/esm/assets/scripts/fileInput/const/types.js +0 -7
  175. package/dist/esm/assets/scripts/fileInput/fileInput.js +0 -71
  176. package/dist/esm/assets/scripts/fileInput/fileInputModel.js +0 -46
  177. package/dist/esm/assets/scripts/fileInput/fileInputView.js +0 -145
  178. package/dist/esm/assets/scripts/fileInput/index.js +0 -9
  179. package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +0 -177
  180. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -215
  181. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +0 -349
  182. package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +0 -20
  183. package/dist/esm/assets/scripts/imageFileInput/const/index.js +0 -2
  184. package/dist/esm/assets/scripts/imageFileInput/const/types.js +0 -7
  185. package/dist/esm/assets/scripts/imageFileInput/index.js +0 -9
  186. package/dist/esm/assets/scripts/index.js +0 -30
  187. package/dist/esm/assets/scripts/modal/Modal.js +0 -98
  188. package/dist/esm/assets/scripts/modal/ModalActions.js +0 -109
  189. package/dist/esm/assets/scripts/modal/ModalContent.js +0 -39
  190. package/dist/esm/assets/scripts/modal/ModalHeader.js +0 -97
  191. package/dist/esm/assets/scripts/modal/const/classNames.js +0 -23
  192. package/dist/esm/assets/scripts/modal/const/index.js +0 -2
  193. package/dist/esm/assets/scripts/modal/const/types.js +0 -1
  194. package/dist/esm/assets/scripts/modal/index.js +0 -15
  195. package/dist/esm/assets/scripts/modal/utils/contentUtils.js +0 -28
  196. package/dist/esm/assets/scripts/notification/FloatingNotification.js +0 -172
  197. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +0 -125
  198. package/dist/esm/assets/scripts/notification/MessageNotification.js +0 -152
  199. package/dist/esm/assets/scripts/notification/Notification.js +0 -94
  200. package/dist/esm/assets/scripts/notification/const/classNames.js +0 -44
  201. package/dist/esm/assets/scripts/notification/const/icons.js +0 -25
  202. package/dist/esm/assets/scripts/notification/const/index.js +0 -4
  203. package/dist/esm/assets/scripts/notification/const/sizes.js +0 -40
  204. package/dist/esm/assets/scripts/notification/const/types.js +0 -8
  205. package/dist/esm/assets/scripts/notification/index.js +0 -11
  206. package/dist/esm/assets/scripts/notification/utils.js +0 -84
  207. package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +0 -264
  208. package/dist/esm/assets/scripts/progress-bar/index.js +0 -1
  209. package/dist/esm/assets/scripts/selectBox.js +0 -162
  210. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +0 -37
  211. package/dist/esm/assets/scripts/tab.js +0 -33
  212. package/dist/esm/assets/scripts/table/Table.js +0 -370
  213. package/dist/esm/assets/scripts/table/const/classNames.js +0 -27
  214. package/dist/esm/assets/scripts/table/const/index.js +0 -2
  215. package/dist/esm/assets/scripts/table/const/types.js +0 -1
  216. package/dist/esm/assets/scripts/table/index.js +0 -8
  217. package/dist/esm/assets/scripts/tag/Tag.js +0 -254
  218. package/dist/esm/assets/scripts/tag/const/classNames.js +0 -12
  219. package/dist/esm/assets/scripts/tag/const/index.js +0 -3
  220. package/dist/esm/assets/scripts/tag/const/sizes.js +0 -7
  221. package/dist/esm/assets/scripts/tag/const/types.js +0 -1
  222. package/dist/esm/assets/scripts/tag/index.js +0 -9
  223. package/dist/esm/assets/scripts/tooltip/Tooltip.js +0 -346
  224. package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +0 -75
  225. package/dist/esm/assets/scripts/tooltip/const/classNames.js +0 -23
  226. package/dist/esm/assets/scripts/tooltip/const/constants.js +0 -50
  227. package/dist/esm/assets/scripts/tooltip/const/icons.js +0 -9
  228. package/dist/esm/assets/scripts/tooltip/const/index.js +0 -4
  229. package/dist/esm/assets/scripts/tooltip/const/templates.js +0 -59
  230. package/dist/esm/assets/scripts/tooltip/const/types.js +0 -1
  231. package/dist/esm/assets/scripts/tooltip/index.js +0 -10
  232. package/dist/esm/assets/scripts/tooltip/utils.js +0 -34
  233. package/dist/esm/assets/scripts/utils/debounce.js +0 -26
  234. package/dist/esm/assets/scripts/utils/unifiedBox/domRenderer.js +0 -363
  235. package/dist/esm/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -279
  236. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -615
  237. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -466
  238. package/dist/temp/assets/scripts/baseBox.d.ts +0 -55
  239. package/dist/temp/assets/scripts/baseBox.js +0 -140
  240. package/dist/temp/assets/scripts/comboBox.d.ts +0 -60
  241. package/dist/temp/assets/scripts/comboBox.js +0 -132
  242. package/dist/temp/assets/scripts/datePicker.d.ts +0 -86
  243. package/dist/temp/assets/scripts/datePicker.js +0 -699
  244. package/dist/temp/assets/scripts/featuredIcon.d.ts +0 -22
  245. package/dist/temp/assets/scripts/featuredIcon.js +0 -79
  246. package/dist/temp/assets/scripts/fileInput/const/classNames.d.ts +0 -15
  247. package/dist/temp/assets/scripts/fileInput/const/classNames.js +0 -16
  248. package/dist/temp/assets/scripts/fileInput/const/index.d.ts +0 -2
  249. package/dist/temp/assets/scripts/fileInput/const/index.js +0 -2
  250. package/dist/temp/assets/scripts/fileInput/const/types.d.ts +0 -88
  251. package/dist/temp/assets/scripts/fileInput/const/types.js +0 -7
  252. package/dist/temp/assets/scripts/fileInput/fileInput.d.ts +0 -13
  253. package/dist/temp/assets/scripts/fileInput/fileInput.js +0 -71
  254. package/dist/temp/assets/scripts/fileInput/fileInputModel.d.ts +0 -12
  255. package/dist/temp/assets/scripts/fileInput/fileInputModel.js +0 -37
  256. package/dist/temp/assets/scripts/fileInput/fileInputView.d.ts +0 -42
  257. package/dist/temp/assets/scripts/fileInput/fileInputView.js +0 -145
  258. package/dist/temp/assets/scripts/fileInput/index.d.ts +0 -3
  259. package/dist/temp/assets/scripts/fileInput/index.js +0 -9
  260. package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -63
  261. package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.js +0 -180
  262. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -73
  263. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -214
  264. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -79
  265. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.js +0 -350
  266. package/dist/temp/assets/scripts/imageFileInput/const/classNames.d.ts +0 -19
  267. package/dist/temp/assets/scripts/imageFileInput/const/classNames.js +0 -20
  268. package/dist/temp/assets/scripts/imageFileInput/const/index.d.ts +0 -2
  269. package/dist/temp/assets/scripts/imageFileInput/const/index.js +0 -2
  270. package/dist/temp/assets/scripts/imageFileInput/const/types.d.ts +0 -125
  271. package/dist/temp/assets/scripts/imageFileInput/const/types.js +0 -7
  272. package/dist/temp/assets/scripts/imageFileInput/index.d.ts +0 -3
  273. package/dist/temp/assets/scripts/imageFileInput/index.js +0 -9
  274. package/dist/temp/assets/scripts/index.d.ts +0 -34
  275. package/dist/temp/assets/scripts/index.js +0 -30
  276. package/dist/temp/assets/scripts/modal/Modal.d.ts +0 -27
  277. package/dist/temp/assets/scripts/modal/Modal.js +0 -100
  278. package/dist/temp/assets/scripts/modal/ModalActions.d.ts +0 -18
  279. package/dist/temp/assets/scripts/modal/ModalActions.js +0 -117
  280. package/dist/temp/assets/scripts/modal/ModalContent.d.ts +0 -13
  281. package/dist/temp/assets/scripts/modal/ModalContent.js +0 -39
  282. package/dist/temp/assets/scripts/modal/ModalHeader.d.ts +0 -15
  283. package/dist/temp/assets/scripts/modal/ModalHeader.js +0 -96
  284. package/dist/temp/assets/scripts/modal/const/classNames.d.ts +0 -22
  285. package/dist/temp/assets/scripts/modal/const/classNames.js +0 -23
  286. package/dist/temp/assets/scripts/modal/const/index.d.ts +0 -2
  287. package/dist/temp/assets/scripts/modal/const/index.js +0 -2
  288. package/dist/temp/assets/scripts/modal/const/types.d.ts +0 -61
  289. package/dist/temp/assets/scripts/modal/const/types.js +0 -1
  290. package/dist/temp/assets/scripts/modal/index.d.ts +0 -7
  291. package/dist/temp/assets/scripts/modal/index.js +0 -15
  292. package/dist/temp/assets/scripts/modal/utils/contentUtils.d.ts +0 -10
  293. package/dist/temp/assets/scripts/modal/utils/contentUtils.js +0 -29
  294. package/dist/temp/assets/scripts/notification/FloatingNotification.d.ts +0 -24
  295. package/dist/temp/assets/scripts/notification/FloatingNotification.js +0 -157
  296. package/dist/temp/assets/scripts/notification/FullWidthNotification.d.ts +0 -21
  297. package/dist/temp/assets/scripts/notification/FullWidthNotification.js +0 -110
  298. package/dist/temp/assets/scripts/notification/MessageNotification.d.ts +0 -22
  299. package/dist/temp/assets/scripts/notification/MessageNotification.js +0 -140
  300. package/dist/temp/assets/scripts/notification/Notification.d.ts +0 -21
  301. package/dist/temp/assets/scripts/notification/Notification.js +0 -94
  302. package/dist/temp/assets/scripts/notification/const/classNames.d.ts +0 -43
  303. package/dist/temp/assets/scripts/notification/const/classNames.js +0 -44
  304. package/dist/temp/assets/scripts/notification/const/icons.d.ts +0 -25
  305. package/dist/temp/assets/scripts/notification/const/icons.js +0 -25
  306. package/dist/temp/assets/scripts/notification/const/index.d.ts +0 -5
  307. package/dist/temp/assets/scripts/notification/const/index.js +0 -4
  308. package/dist/temp/assets/scripts/notification/const/sizes.d.ts +0 -32
  309. package/dist/temp/assets/scripts/notification/const/sizes.js +0 -40
  310. package/dist/temp/assets/scripts/notification/const/types.d.ts +0 -19
  311. package/dist/temp/assets/scripts/notification/const/types.js +0 -8
  312. package/dist/temp/assets/scripts/notification/index.d.ts +0 -7
  313. package/dist/temp/assets/scripts/notification/index.js +0 -11
  314. package/dist/temp/assets/scripts/notification/utils.d.ts +0 -8
  315. package/dist/temp/assets/scripts/notification/utils.js +0 -89
  316. package/dist/temp/assets/scripts/progress-bar/ProgressBar.d.ts +0 -67
  317. package/dist/temp/assets/scripts/progress-bar/ProgressBar.js +0 -263
  318. package/dist/temp/assets/scripts/progress-bar/index.d.ts +0 -1
  319. package/dist/temp/assets/scripts/progress-bar/index.js +0 -1
  320. package/dist/temp/assets/scripts/selectBox.d.ts +0 -50
  321. package/dist/temp/assets/scripts/selectBox.js +0 -170
  322. package/dist/temp/assets/scripts/shared/ButtonCloseX.d.ts +0 -5
  323. package/dist/temp/assets/scripts/shared/ButtonCloseX.js +0 -33
  324. package/dist/temp/assets/scripts/tab.d.ts +0 -7
  325. package/dist/temp/assets/scripts/tab.js +0 -33
  326. package/dist/temp/assets/scripts/table/Table.d.ts +0 -41
  327. package/dist/temp/assets/scripts/table/Table.js +0 -378
  328. package/dist/temp/assets/scripts/table/const/classNames.d.ts +0 -27
  329. package/dist/temp/assets/scripts/table/const/classNames.js +0 -27
  330. package/dist/temp/assets/scripts/table/const/index.d.ts +0 -2
  331. package/dist/temp/assets/scripts/table/const/index.js +0 -2
  332. package/dist/temp/assets/scripts/table/const/types.d.ts +0 -23
  333. package/dist/temp/assets/scripts/table/const/types.js +0 -1
  334. package/dist/temp/assets/scripts/table/index.d.ts +0 -3
  335. package/dist/temp/assets/scripts/table/index.js +0 -8
  336. package/dist/temp/assets/scripts/tag/Tag.d.ts +0 -27
  337. package/dist/temp/assets/scripts/tag/Tag.js +0 -259
  338. package/dist/temp/assets/scripts/tag/const/classNames.d.ts +0 -11
  339. package/dist/temp/assets/scripts/tag/const/classNames.js +0 -12
  340. package/dist/temp/assets/scripts/tag/const/index.d.ts +0 -3
  341. package/dist/temp/assets/scripts/tag/const/index.js +0 -3
  342. package/dist/temp/assets/scripts/tag/const/sizes.d.ts +0 -7
  343. package/dist/temp/assets/scripts/tag/const/sizes.js +0 -7
  344. package/dist/temp/assets/scripts/tag/const/types.d.ts +0 -33
  345. package/dist/temp/assets/scripts/tag/const/types.js +0 -1
  346. package/dist/temp/assets/scripts/tag/index.d.ts +0 -3
  347. package/dist/temp/assets/scripts/tag/index.js +0 -9
  348. package/dist/temp/assets/scripts/tooltip/Tooltip.d.ts +0 -54
  349. package/dist/temp/assets/scripts/tooltip/Tooltip.js +0 -335
  350. package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -21
  351. package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.js +0 -71
  352. package/dist/temp/assets/scripts/tooltip/const/classNames.d.ts +0 -17
  353. package/dist/temp/assets/scripts/tooltip/const/classNames.js +0 -23
  354. package/dist/temp/assets/scripts/tooltip/const/constants.d.ts +0 -33
  355. package/dist/temp/assets/scripts/tooltip/const/constants.js +0 -46
  356. package/dist/temp/assets/scripts/tooltip/const/icons.d.ts +0 -4
  357. package/dist/temp/assets/scripts/tooltip/const/icons.js +0 -9
  358. package/dist/temp/assets/scripts/tooltip/const/index.d.ts +0 -5
  359. package/dist/temp/assets/scripts/tooltip/const/index.js +0 -4
  360. package/dist/temp/assets/scripts/tooltip/const/templates.d.ts +0 -16
  361. package/dist/temp/assets/scripts/tooltip/const/templates.js +0 -59
  362. package/dist/temp/assets/scripts/tooltip/const/types.d.ts +0 -14
  363. package/dist/temp/assets/scripts/tooltip/const/types.js +0 -1
  364. package/dist/temp/assets/scripts/tooltip/index.d.ts +0 -6
  365. package/dist/temp/assets/scripts/tooltip/index.js +0 -10
  366. package/dist/temp/assets/scripts/tooltip/utils.d.ts +0 -2
  367. package/dist/temp/assets/scripts/tooltip/utils.js +0 -33
  368. package/dist/temp/assets/scripts/utils/debounce.d.ts +0 -8
  369. package/dist/temp/assets/scripts/utils/debounce.js +0 -23
  370. package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.d.ts +0 -107
  371. package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.js +0 -367
  372. package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.d.ts +0 -142
  373. package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -286
  374. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.d.ts +0 -156
  375. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -604
  376. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.d.ts +0 -95
  377. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -482
  378. package/dist/types/assets/scripts/baseBox.d.ts +0 -55
  379. package/dist/types/assets/scripts/comboBox.d.ts +0 -60
  380. package/dist/types/assets/scripts/datePicker.d.ts +0 -86
  381. package/dist/types/assets/scripts/featuredIcon.d.ts +0 -22
  382. package/dist/types/assets/scripts/fileInput/const/classNames.d.ts +0 -15
  383. package/dist/types/assets/scripts/fileInput/const/index.d.ts +0 -2
  384. package/dist/types/assets/scripts/fileInput/const/types.d.ts +0 -88
  385. package/dist/types/assets/scripts/fileInput/fileInput.d.ts +0 -13
  386. package/dist/types/assets/scripts/fileInput/fileInputModel.d.ts +0 -12
  387. package/dist/types/assets/scripts/fileInput/fileInputView.d.ts +0 -42
  388. package/dist/types/assets/scripts/fileInput/index.d.ts +0 -3
  389. package/dist/types/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -63
  390. package/dist/types/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -73
  391. package/dist/types/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -79
  392. package/dist/types/assets/scripts/imageFileInput/const/classNames.d.ts +0 -19
  393. package/dist/types/assets/scripts/imageFileInput/const/index.d.ts +0 -2
  394. package/dist/types/assets/scripts/imageFileInput/const/types.d.ts +0 -125
  395. package/dist/types/assets/scripts/imageFileInput/index.d.ts +0 -3
  396. package/dist/types/assets/scripts/index.d.ts +0 -34
  397. package/dist/types/assets/scripts/modal/Modal.d.ts +0 -27
  398. package/dist/types/assets/scripts/modal/ModalActions.d.ts +0 -18
  399. package/dist/types/assets/scripts/modal/ModalContent.d.ts +0 -13
  400. package/dist/types/assets/scripts/modal/ModalHeader.d.ts +0 -15
  401. package/dist/types/assets/scripts/modal/const/classNames.d.ts +0 -22
  402. package/dist/types/assets/scripts/modal/const/index.d.ts +0 -2
  403. package/dist/types/assets/scripts/modal/const/types.d.ts +0 -61
  404. package/dist/types/assets/scripts/modal/index.d.ts +0 -7
  405. package/dist/types/assets/scripts/modal/utils/contentUtils.d.ts +0 -10
  406. package/dist/types/assets/scripts/notification/FloatingNotification.d.ts +0 -24
  407. package/dist/types/assets/scripts/notification/FullWidthNotification.d.ts +0 -21
  408. package/dist/types/assets/scripts/notification/MessageNotification.d.ts +0 -22
  409. package/dist/types/assets/scripts/notification/Notification.d.ts +0 -21
  410. package/dist/types/assets/scripts/notification/const/classNames.d.ts +0 -43
  411. package/dist/types/assets/scripts/notification/const/icons.d.ts +0 -25
  412. package/dist/types/assets/scripts/notification/const/index.d.ts +0 -5
  413. package/dist/types/assets/scripts/notification/const/sizes.d.ts +0 -32
  414. package/dist/types/assets/scripts/notification/const/types.d.ts +0 -19
  415. package/dist/types/assets/scripts/notification/index.d.ts +0 -7
  416. package/dist/types/assets/scripts/notification/utils.d.ts +0 -8
  417. package/dist/types/assets/scripts/progress-bar/ProgressBar.d.ts +0 -67
  418. package/dist/types/assets/scripts/progress-bar/index.d.ts +0 -1
  419. package/dist/types/assets/scripts/selectBox.d.ts +0 -50
  420. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +0 -5
  421. package/dist/types/assets/scripts/tab.d.ts +0 -7
  422. package/dist/types/assets/scripts/table/Table.d.ts +0 -41
  423. package/dist/types/assets/scripts/table/const/classNames.d.ts +0 -27
  424. package/dist/types/assets/scripts/table/const/index.d.ts +0 -2
  425. package/dist/types/assets/scripts/table/const/types.d.ts +0 -23
  426. package/dist/types/assets/scripts/table/index.d.ts +0 -3
  427. package/dist/types/assets/scripts/tag/Tag.d.ts +0 -27
  428. package/dist/types/assets/scripts/tag/const/classNames.d.ts +0 -11
  429. package/dist/types/assets/scripts/tag/const/index.d.ts +0 -3
  430. package/dist/types/assets/scripts/tag/const/sizes.d.ts +0 -7
  431. package/dist/types/assets/scripts/tag/const/types.d.ts +0 -33
  432. package/dist/types/assets/scripts/tag/index.d.ts +0 -3
  433. package/dist/types/assets/scripts/tooltip/Tooltip.d.ts +0 -54
  434. package/dist/types/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -21
  435. package/dist/types/assets/scripts/tooltip/const/classNames.d.ts +0 -17
  436. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +0 -33
  437. package/dist/types/assets/scripts/tooltip/const/icons.d.ts +0 -4
  438. package/dist/types/assets/scripts/tooltip/const/index.d.ts +0 -5
  439. package/dist/types/assets/scripts/tooltip/const/templates.d.ts +0 -16
  440. package/dist/types/assets/scripts/tooltip/const/types.d.ts +0 -14
  441. package/dist/types/assets/scripts/tooltip/index.d.ts +0 -6
  442. package/dist/types/assets/scripts/tooltip/utils.d.ts +0 -2
  443. package/dist/types/assets/scripts/utils/debounce.d.ts +0 -8
  444. package/dist/types/assets/scripts/utils/unifiedBox/domRenderer.d.ts +0 -107
  445. package/dist/types/assets/scripts/utils/unifiedBox/dropdownModel.d.ts +0 -142
  446. package/dist/types/assets/scripts/utils/unifiedBox/unifiedBoxController.d.ts +0 -156
  447. package/dist/types/assets/scripts/utils/unifiedBox/unifiedBoxManager.d.ts +0 -95
  448. /package/dist/cjs/{assets/scripts/modal/const/types.js → src/types/component-meta.js} +0 -0
@@ -1,482 +0,0 @@
1
- import { debounce } from '../debounce';
2
- import { DOMRenderer } from './domRenderer';
3
- import { DropdownModel } from './dropdownModel';
4
- import { UnifiedBoxController } from './unifiedBoxController';
5
- /**
6
- * 통합된 UnifiedBox 클래스
7
- * SelectBox와 ComboBox의 기능을 모두 포함
8
- */
9
- export class UnifiedBoxManager {
10
- constructor(element, config = {}) {
11
- this.lastSearchValue = ''; // 이전 검색어 추적 (API 모드에서 옵션 교체를 위해)
12
- this.hasInitialOptions = false; // 초기 옵션이 있는지 여부 (select 태그 등)
13
- this.element = element;
14
- this.isComboBox = config.type === 'combobox';
15
- this.baseClass = this.isComboBox ? 'ncua-combobox' : 'ncua-selectbox';
16
- this.config = {
17
- options: [],
18
- placeholder: this.isComboBox ? '검색하세요' : '선택하세요',
19
- maxHeight: 275,
20
- disabled: false,
21
- size: 'md',
22
- multiple: false,
23
- showFooterButtons: false,
24
- required: false,
25
- type: 'selectbox',
26
- ...config,
27
- searchDebounceMs: config.searchDebounceMs ?? 500,
28
- };
29
- this.debouncedSearch = debounce((value, isApiMode) => {
30
- if (isApiMode) {
31
- this.model.updateSearchValue(value);
32
- }
33
- else {
34
- this.model.updateSearchAndFilter(value);
35
- }
36
- this.config.onSearch?.(value);
37
- if (value.trim()) {
38
- this.controller.open();
39
- }
40
- else if (!this.model.getState().showAllItems) {
41
- this.controller.close();
42
- }
43
- }, this.config.searchDebounceMs);
44
- this.initialize();
45
- }
46
- initialize() {
47
- this.element.innerHTML = '';
48
- this.setupElementClasses();
49
- // 초기 옵션이 있는지 확인 (select 태그 등에서 파싱된 옵션이 있는 경우)
50
- this.hasInitialOptions = (this.config.options && this.config.options.length > 0) || false;
51
- const filterStrategy = this.isComboBox ? DropdownModel.comboBoxFilterStrategy : DropdownModel.defaultFilterStrategy;
52
- this.model = new DropdownModel(this.config.options || [], this.config.multiple || false, filterStrategy);
53
- this.renderer = new DOMRenderer();
54
- this.createUI();
55
- this.setupController();
56
- if (this.config.value) {
57
- this.model.setValue(this.config.value);
58
- }
59
- }
60
- setupElementClasses() {
61
- this.element.className = `${this.baseClass} ${this.baseClass}--${this.config.size}`;
62
- if (this.config.disabled) {
63
- this.element.classList.add(`${this.baseClass}--disabled`);
64
- }
65
- if (this.config.multiple) {
66
- this.element.classList.add(`${this.baseClass}--multiple`);
67
- }
68
- }
69
- createUI() {
70
- if (this.isComboBox) {
71
- this.createComboBoxUI();
72
- }
73
- else {
74
- this.createSelectBoxUI();
75
- }
76
- }
77
- createComboBoxUI() {
78
- // 컨텐츠 컨테이너
79
- const content = DOMRenderer.createElementWithClass('div', 'ncua-combobox__content');
80
- this.element.appendChild(content);
81
- // 입력 필드 생성
82
- this.inputField = this.renderer.createInputField({
83
- placeholder: this.config.placeholder || '검색하세요',
84
- disabled: this.config.disabled || false,
85
- size: this.config.size || 'md',
86
- showSearchIcon: true,
87
- onInput: (value) => this.handleInput(value),
88
- onClick: () => this.handleInputClick(),
89
- onClear: () => this.handleClearInput(),
90
- onShowAll: () => this.handleShowAll(),
91
- });
92
- content.appendChild(this.inputField.container);
93
- this.triggerElement = this.inputField.input;
94
- // 드롭다운 생성
95
- this.createDropdown(content);
96
- }
97
- createSelectBoxUI() {
98
- // 트리거 생성
99
- const trigger = DOMRenderer.createElementWithClass('div', 'ncua-selectbox__content');
100
- trigger.setAttribute('tabindex', this.config.disabled ? '-1' : '0');
101
- trigger.setAttribute('role', 'combobox');
102
- trigger.setAttribute('aria-expanded', 'false');
103
- trigger.setAttribute('aria-haspopup', 'listbox');
104
- const valueSpan = DOMRenderer.createElementWithClass('span', 'ncua-selectbox__value', this.config.placeholder);
105
- const arrow = DOMRenderer.createSvgIcon('chevron-down', this.config.size === 'xs' ? 14 : 16);
106
- arrow.classList.add('ncua-selectbox__arrow');
107
- trigger.appendChild(valueSpan);
108
- trigger.appendChild(arrow);
109
- this.element.appendChild(trigger);
110
- this.triggerElement = trigger;
111
- this.arrowElement = arrow;
112
- // 드롭다운 생성
113
- this.createDropdown(this.element);
114
- }
115
- createDropdown(parent) {
116
- const dropdownStructure = this.renderer.createDropdownStructure({
117
- maxHeight: this.config.maxHeight || 275,
118
- size: this.config.size || 'md',
119
- listboxId: `selectbox-${Date.now()}`,
120
- noResultsText: '일치하는 결과가 없습니다.',
121
- });
122
- this.dropdownElement = dropdownStructure.dropdown;
123
- // SelectBox 단일 선택 모드일 때 특별한 클래스 추가
124
- if (!this.isComboBox && !this.config.multiple) {
125
- this.dropdownElement.classList.add('ncua-select-dropdown--selectbox-single');
126
- }
127
- // 다중 선택 모드일 때 클래스 추가
128
- if (this.config.multiple) {
129
- this.dropdownElement.classList.add('ncua-select-dropdown--multiple');
130
- }
131
- parent.appendChild(this.dropdownElement);
132
- // 푸터 버튼 추가 (필요한 경우)
133
- if (this.config.multiple || this.config.showFooterButtons) {
134
- this.footerElement = this.renderer.createFooter({
135
- multiple: this.config.multiple,
136
- showFooterButtons: this.config.showFooterButtons,
137
- selectAllButtonText: this.model.getSelectAllButtonText(),
138
- onSelectAll: () => this.handleSelectAll(),
139
- onEdit: this.config.onEdit ? () => this.config.onEdit?.() : undefined,
140
- onComplete: () => this.handleComplete(),
141
- });
142
- this.dropdownElement.appendChild(this.footerElement);
143
- }
144
- }
145
- setupController() {
146
- if (!this.triggerElement || !this.dropdownElement) {
147
- throw new Error('Trigger or dropdown element not found');
148
- }
149
- const controllerConfig = {
150
- triggerElement: this.triggerElement,
151
- dropdownElement: this.dropdownElement,
152
- model: this.model,
153
- renderer: this.renderer,
154
- renderConfig: {
155
- maxHeight: this.config.maxHeight || 275,
156
- size: this.config.size || 'md',
157
- listboxId: `selectbox-${Date.now()}`,
158
- noResultsText: '일치하는 결과가 없습니다.',
159
- },
160
- onOpen: () => {
161
- this.element.classList.add(`${this.baseClass}--open`);
162
- if (this.triggerElement) {
163
- this.triggerElement.setAttribute('aria-expanded', 'true');
164
- }
165
- // 화살표 아이콘 회전 (selectbox 타입일 때만)
166
- if (!this.isComboBox && this.arrowElement) {
167
- this.arrowElement.classList.add('ncua-selectbox__arrow--up');
168
- }
169
- },
170
- onClose: () => {
171
- this.element.classList.remove(`${this.baseClass}--open`);
172
- if (this.triggerElement) {
173
- this.triggerElement.setAttribute('aria-expanded', 'false');
174
- }
175
- // 화살표 아이콘 원래대로 (selectbox 타입일 때만)
176
- if (!this.isComboBox && this.arrowElement) {
177
- this.arrowElement.classList.remove('ncua-selectbox__arrow--up');
178
- }
179
- },
180
- onSelectionChange: (selectedValues) => {
181
- this.handleSelectionChange(selectedValues);
182
- },
183
- onSearch: (searchValue) => {
184
- this.config.onSearch?.(searchValue);
185
- },
186
- onScrollBottom: this.config.onScrollBottom,
187
- disabled: this.config.disabled || false,
188
- canToggle: () => this.canToggleDropdown(),
189
- type: this.config.type, // 타입 정보 전달
190
- };
191
- this.controller = new UnifiedBoxController(controllerConfig);
192
- }
193
- // 이벤트 핸들러들
194
- handleInput(value) {
195
- this.debouncedSearch.cancel();
196
- const isApiMode = this.isComboBox && !this.hasInitialOptions;
197
- // API 모드에서는 검색어 변경 추적
198
- if (isApiMode && this.lastSearchValue !== value) {
199
- this.lastSearchValue = value;
200
- }
201
- // 디바운싱이 설정되어 있으면 디바운스 유틸리티 사용
202
- if (this.config.searchDebounceMs > 0) {
203
- this.debouncedSearch(value, isApiMode);
204
- }
205
- else {
206
- // 디바운싱이 0이면 즉시 실행
207
- this.model.updateSearchAndFilter(value);
208
- const hasOptions = this.model.getState().options.length > 0 || this.model.getState().filteredOptions.length > 0;
209
- if (value.trim() || hasOptions) {
210
- this.controller.open();
211
- }
212
- else if (!this.model.getState().showAllItems) {
213
- this.controller.close();
214
- }
215
- this.config.onSearch?.(value);
216
- }
217
- }
218
- handleInputClick() {
219
- if (!this.config.disabled) {
220
- this.inputField?.focus();
221
- if (this.isComboBox) {
222
- const currentInputValue = this.inputField?.input.value || '';
223
- if (currentInputValue.trim().length > 0 || this.model.getState().showAllItems) {
224
- this.controller.open();
225
- }
226
- }
227
- }
228
- }
229
- handleClearInput() {
230
- this.debouncedSearch.cancel();
231
- // input 필드 텍스트 지우기
232
- if (this.inputField) {
233
- this.inputField.setValue('');
234
- }
235
- // 모델의 검색값도 초기화
236
- this.model.clearInput();
237
- // ComboBox 타입이고 초기 옵션이 없는 경우 (API 모드)
238
- // Clear 버튼 클릭 시 옵션도 완전히 비우기
239
- const isApiMode = this.isComboBox && !this.hasInitialOptions;
240
- if (isApiMode) {
241
- this.model.updateOptions([]);
242
- this.lastSearchValue = '';
243
- }
244
- this.controller.close();
245
- }
246
- async handleShowAll() {
247
- if (!this.config.disabled) {
248
- this.inputField?.focus();
249
- this.inputField?.setValue('');
250
- this.model.updateSearchAndFilter('', true);
251
- // onSearchAll 콜백 호출 (async 함수일 경우를 대비해 Promise.resolve로 감싸서 처리)
252
- await Promise.resolve(this.config.onSearchAll?.());
253
- const hasOptions = this.model.getState().options.length > 0 || this.model.getState().filteredOptions.length > 0;
254
- if (hasOptions) {
255
- this.controller.open();
256
- }
257
- }
258
- }
259
- handleSelectionChange(selectedValues) {
260
- this.debouncedSearch.cancel();
261
- const result = this.config.multiple ? selectedValues : selectedValues[0] || '';
262
- this.config.onChange?.(result);
263
- // UI 업데이트
264
- if (!this.isComboBox) {
265
- this.updateSelectBoxValue();
266
- }
267
- // 다중 선택인 경우 전체 선택 버튼 텍스트 업데이트
268
- if (this.config.multiple) {
269
- this.updateSelectAllButtonText();
270
- }
271
- // 단일 선택 시 드롭다운 닫기
272
- if (!this.config.multiple && !this.config.showFooterButtons) {
273
- this.controller.close();
274
- }
275
- }
276
- updateSelectBoxValue() {
277
- const valueSpan = this.element.querySelector('.ncua-selectbox__value');
278
- if (valueSpan) {
279
- if (this.config.multiple) {
280
- // Multiple 모드일 때는 항상 placeholder 표시
281
- valueSpan.textContent = this.config.placeholder || '';
282
- }
283
- else {
284
- // Single 모드일 때는 선택된 옵션 또는 placeholder 표시
285
- const selectedOptions = this.model.getSelectedOptions();
286
- const selectedOption = selectedOptions[0];
287
- valueSpan.textContent = selectedOption ? selectedOption.label : this.config.placeholder || '';
288
- }
289
- }
290
- }
291
- canToggleDropdown() {
292
- if (this.isComboBox) {
293
- // ComboBox의 경우: 인풋에 텍스트가 있으면 항상 토글 가능
294
- const currentInputValue = this.inputField?.input.value || '';
295
- return currentInputValue.trim().length > 0 || this.model.getState().showAllItems;
296
- }
297
- return true; // SelectBox는 항상 토글 가능
298
- }
299
- // 푸터 버튼 핸들러들
300
- handleSelectAll() {
301
- if (this.config.multiple) {
302
- this.model.toggleSelectAll();
303
- this.updateSelectAllButtonText();
304
- // 외부 콜백 호출
305
- this.config.onSelectAll?.();
306
- }
307
- }
308
- handleComplete() {
309
- if (this.config.multiple || this.isComboBox) {
310
- const currentValues = this.model.getValue();
311
- // SelectBox 타입이고 multiple 모드일 때만 onChange 콜백으로 현재 선택된 값들 전달
312
- if (!this.isComboBox && this.config.multiple && Array.isArray(currentValues)) {
313
- this.config.onChange?.(currentValues);
314
- }
315
- this.config.onComplete?.();
316
- // ComboBox 타입인 경우에만 값 초기화 및 검색어 초기화
317
- if (this.isComboBox) {
318
- this.model.setValue([]);
319
- if (this.inputField) {
320
- this.inputField.setValue('');
321
- }
322
- this.model.clearInput();
323
- const isApiMode = !this.hasInitialOptions;
324
- if (isApiMode) {
325
- this.model.updateOptions([]);
326
- this.lastSearchValue = '';
327
- }
328
- }
329
- this.controller.close();
330
- }
331
- }
332
- updateSelectAllButtonText() {
333
- if (!this.config.multiple || !this.footerElement)
334
- return;
335
- this.renderer.updateSelectAllButtonText(this.footerElement, this.model.getSelectAllButtonText());
336
- }
337
- // Public API
338
- getValues() {
339
- const selectedIds = this.model.getValue();
340
- const allOptions = this.getOptions();
341
- // selectedIds가 배열이 아닌 경우 배열로 변환
342
- const ids = Array.isArray(selectedIds) ? selectedIds : selectedIds ? [selectedIds] : [];
343
- // 선택된 id에 해당하는 옵션 객체들을 찾아서 반환
344
- return ids
345
- .map((id) => allOptions.find((opt) => opt.id === id))
346
- .filter((opt) => opt !== undefined);
347
- }
348
- getOptions() {
349
- return this.config.options || [];
350
- }
351
- setValues(value) {
352
- // 옵션 객체 배열에서 id 배열로 변환
353
- const ids = value.map((option) => option.id);
354
- // 단일 선택 모드인 경우 첫 번째 값만 사용
355
- const finalIds = this.config.multiple ? ids : ids[0] || '';
356
- this.model.setValue(finalIds);
357
- if (!this.isComboBox) {
358
- this.updateSelectBoxValue();
359
- }
360
- else {
361
- // ComboBox의 경우 input 필드도 업데이트
362
- if (this.inputField) {
363
- const isEmpty = value.length === 0;
364
- if (isEmpty) {
365
- // 빈 값으로 설정할 때 input 필드와 검색값 모두 비우기
366
- this.inputField.setValue('');
367
- this.model.updateSearchAndFilter('');
368
- }
369
- }
370
- }
371
- }
372
- updateOptions(newOptions) {
373
- // config.options도 업데이트 (getOptions()가 이를 반환하므로)
374
- this.config.options = [...newOptions];
375
- this.model.updateOptions(newOptions);
376
- this.controller.updateOptions(newOptions);
377
- }
378
- setDisabled(disabled) {
379
- this.config.disabled = disabled;
380
- const disabledClass = `${this.baseClass}--disabled`;
381
- this.element.classList.toggle(disabledClass, disabled);
382
- if (this.controller) {
383
- this.controller.setDisabled(disabled);
384
- }
385
- if (this.isComboBox) {
386
- // 입력 필드 비활성화
387
- if (this.inputField?.input) {
388
- this.inputField.input.disabled = disabled;
389
- this.inputField.container?.classList.toggle('is-disabled', disabled);
390
- }
391
- }
392
- else if (this.triggerElement) {
393
- this.triggerElement.setAttribute('tabindex', disabled ? '-1' : '0');
394
- }
395
- }
396
- open() {
397
- this.controller.open();
398
- }
399
- close() {
400
- this.controller.close();
401
- }
402
- focus() {
403
- if (this.isComboBox) {
404
- this.inputField?.focus();
405
- }
406
- else {
407
- this.triggerElement?.focus();
408
- }
409
- }
410
- destroy() {
411
- this.debouncedSearch.cancel();
412
- this.controller.destroy();
413
- this.renderer.clearCache();
414
- this.inputField = undefined;
415
- }
416
- // Multiple 모드 전용 메서드들
417
- selectAll() {
418
- if (this.config.multiple) {
419
- const allOptionIds = this.config.options?.map((option) => option.id) || [];
420
- this.model.setValue(allOptionIds);
421
- }
422
- }
423
- deselectAll() {
424
- if (this.config.multiple) {
425
- this.model.setValue([]);
426
- }
427
- }
428
- isMultiple() {
429
- return this.config.multiple || false;
430
- }
431
- toggleSelectAll() {
432
- if (!this.config.multiple)
433
- return;
434
- const currentValues = this.model.getValue();
435
- const allOptionIds = this.config.options?.map((option) => option.id) || [];
436
- if (Array.isArray(currentValues) && currentValues.length === allOptionIds.length) {
437
- // 모든 옵션이 선택되어 있으면 전체 해제
438
- this.deselectAll();
439
- }
440
- else {
441
- // 일부만 선택되어 있거나 아무것도 선택되지 않았으면 전체 선택
442
- this.selectAll();
443
- }
444
- }
445
- // 디버깅용
446
- getDebugInfo() {
447
- return {
448
- config: this.config,
449
- modelState: this.model.getDebugInfo(),
450
- isOpen: this.model.getState().isOpen,
451
- };
452
- }
453
- /**
454
- * 드롭다운을 스크롤의 바닥으로 이동
455
- * 전체 선택 시 추가 데이터 로드를 트리거하기 위해 사용
456
- */
457
- scrollToBottom() {
458
- if (!this.dropdownElement)
459
- return;
460
- const optionsList = this.dropdownElement.querySelector('.ncua-select-dropdown__options');
461
- if (!optionsList)
462
- return;
463
- // 스크롤을 바닥으로 이동
464
- optionsList.scrollTop = optionsList.scrollHeight;
465
- }
466
- /**
467
- * 전체 선택 버튼의 텍스트를 외부에서 변경
468
- * @param text 버튼에 표시할 텍스트
469
- */
470
- setSelectAllButtonText(text) {
471
- if (!this.config.multiple || !this.footerElement)
472
- return;
473
- this.renderer.updateSelectAllButtonText(this.footerElement, text);
474
- }
475
- /**
476
- * 특정 인덱스의 옵션으로 포커스 이동
477
- * @param index 포커스를 이동할 옵션의 인덱스
478
- */
479
- setFocusIndex(index) {
480
- this.controller.setFocus(index);
481
- }
482
- }
@@ -1,55 +0,0 @@
1
- import { OptionValue } from '../../src/types';
2
- import { DropdownOption } from './utils/unifiedBox/dropdownModel';
3
- import { UnifiedBoxManager } from './utils/unifiedBox/unifiedBoxManager';
4
- /**
5
- * SelectBox와 ComboBox의 공통 기능을 담는 베이스 클래스
6
- */
7
- export declare abstract class BaseBox {
8
- protected element: HTMLElement;
9
- protected unifiedSelectBox: UnifiedBoxManager;
10
- protected targetSelect: HTMLSelectElement | null;
11
- protected isInitializing: boolean;
12
- protected lastValue: OptionValue;
13
- /** 서브클래스에서 기본 placeholder를 지정 */
14
- protected abstract get defaultPlaceholder(): string;
15
- constructor(element: HTMLElement);
16
- /** 초기화 완료 처리 (서브클래스 생성자 마지막에 호출) */
17
- protected completeInitialization(): void;
18
- /**
19
- * 타겟 select 요소 찾기
20
- */
21
- protected findTargetSelect(element: HTMLElement): HTMLSelectElement | null;
22
- /**
23
- * HTML에서 속성 파싱
24
- */
25
- protected parseAttributesFromHTML(): {
26
- placeholder?: string;
27
- value?: string;
28
- disabled?: boolean;
29
- size?: 'xs' | 'sm' | 'md';
30
- };
31
- /**
32
- * 값 변환 훅 - SelectBox에서 originalValue 매핑을 위해 오버라이드
33
- * 기본 동작: 그대로 문자열 변환
34
- */
35
- protected resolveValue(value: string | number): string;
36
- /**
37
- * 타겟 select와 동기화 (Single 모드)
38
- */
39
- protected syncWithTargetSelect(value: string | number): void;
40
- /**
41
- * 타겟 select와 동기화 (Multiple 모드)
42
- */
43
- protected syncWithTargetSelectMultiple(values: (string | number)[]): void;
44
- getOptions(): DropdownOption[];
45
- updateOptions(newOptions: DropdownOption[]): void;
46
- setDisabled(disabled: boolean): void;
47
- open(): void;
48
- close(): void;
49
- focus(): void;
50
- destroy(): void;
51
- selectAll(): void;
52
- deselectAll(): void;
53
- isMultiple(): boolean;
54
- toggleSelectAll(): void;
55
- }
@@ -1,60 +0,0 @@
1
- import type { Size } from '../../constant/size';
2
- import type { OptionValue } from '../../src/types';
3
- import { BaseBox } from './baseBox';
4
- import type { DropdownOption } from './utils/unifiedBox/dropdownModel';
5
- import { type UnifiedBoxManagerConfig } from './utils/unifiedBox/unifiedBoxManager';
6
- export interface ComboBoxOptionType {
7
- id: string | number;
8
- label: string;
9
- disabled?: boolean;
10
- }
11
- export interface ComboBoxConfig {
12
- options?: ComboBoxOptionType[];
13
- placeholder?: string;
14
- value?: OptionValue;
15
- onChange?: (value: OptionValue) => void;
16
- onSearch?: (searchValue: string) => void;
17
- onEdit?: () => void;
18
- onSelectAll?: () => void;
19
- onSearchAll?: () => void;
20
- onComplete?: () => void;
21
- onTagRemove?: (tagId: string | number) => void;
22
- onScrollBottom?: () => void;
23
- searchDebounceMs?: number;
24
- maxHeight?: number;
25
- disabled?: boolean;
26
- size?: Extract<Size, 'xs' | 'sm'>;
27
- multiple?: boolean;
28
- showFooterButtons?: boolean;
29
- label?: string;
30
- required?: boolean;
31
- }
32
- export declare class ComboBox extends BaseBox {
33
- protected get defaultPlaceholder(): string;
34
- constructor(element: HTMLElement, config?: ComboBoxConfig);
35
- /**
36
- * HTML select에서 옵션 파싱
37
- */
38
- private parseOptionsFromHTML;
39
- getValues(): DropdownOption[];
40
- setValues(value: DropdownOption[]): void;
41
- clearInput(): void;
42
- getDebugInfo(): {
43
- config: UnifiedBoxManagerConfig;
44
- modelState: any;
45
- isOpen: boolean;
46
- };
47
- getSelectedCount(): number;
48
- /**
49
- * 드롭다운을 스크롤의 바닥으로 이동
50
- */
51
- scrollToBottom(): void;
52
- /**
53
- * 전체 선택 버튼의 텍스트를 외부에서 변경
54
- */
55
- setSelectAllButtonText(text: string): void;
56
- /**
57
- * 특정 인덱스의 옵션으로 포커스 이동
58
- */
59
- setFocusIndex(index: number): void;
60
- }
@@ -1,86 +0,0 @@
1
- import { Options as FlatpickrOptions } from 'flatpickr/dist/types/options';
2
- export type DatePickerSize = 'xs' | 'sm';
3
- export interface ValidationError {
4
- index: number;
5
- date: string | Date;
6
- minDate?: string | Date;
7
- maxDate?: string | Date;
8
- violations: Array<'minDate' | 'maxDate'>;
9
- previousDate?: string | Date;
10
- }
11
- interface Options {
12
- buttons?: DatePickerButton[];
13
- size: DatePickerSize;
14
- autoComplete?: 'on' | 'off';
15
- datePickerOptions: DatePickerOptionWrapper[];
16
- onValidationError?: (error: ValidationError) => void;
17
- }
18
- interface DatePickerOptionWrapper {
19
- element: string;
20
- attrName?: string;
21
- placeholder?: string;
22
- options: FlatpickrOptions;
23
- }
24
- interface DatePickerButton {
25
- text: string;
26
- period: number;
27
- unit: 'days' | 'weeks' | 'months' | 'years';
28
- isCurrent: boolean;
29
- }
30
- export declare class DatePicker {
31
- private static instanceCounter;
32
- private static usedWrappers;
33
- private readonly contentWrapper;
34
- private readonly datePickerOptions;
35
- private readonly size;
36
- private readonly instanceId;
37
- private separator;
38
- private autoComplete;
39
- private buttons;
40
- private flatpickrInstances;
41
- private currentButton;
42
- private dateFormat;
43
- private onValidationError?;
44
- constructor(wrapper: HTMLElement, options: Options);
45
- private validateWrapper;
46
- private init;
47
- private validationDependencies;
48
- private initializeWrapper;
49
- private initButtonGroup;
50
- private createButtonElement;
51
- private reRenderButtonGroup;
52
- private initDatePicker;
53
- private initializeFlatpickr;
54
- private createBlurHandler;
55
- private setupFlatpickrLocale;
56
- private createInputHandler;
57
- private findFlatpickrInstanceByInput;
58
- private clearInputValue;
59
- private restorePreviousDate;
60
- private createHourInputHandler;
61
- private createMinuteInputHandler;
62
- private createMouseDownHandler;
63
- private createOnChangeHandler;
64
- private invokeOriginalOnChange;
65
- private isValidDate;
66
- private validateAndRestoreIfNeeded;
67
- private findFlatpickrInstanceIndexByInput;
68
- private restoreDateToInstance;
69
- private createOnReadyHandler;
70
- private createOnDestroyHandler;
71
- private convertDateOption;
72
- private validateDate;
73
- private checkDateViolations;
74
- setDate(dates: string[]): void;
75
- private formatDateForOption;
76
- private parseDateWithMultipleFormats;
77
- private formatMomentDate;
78
- private calculatePeriod;
79
- private updateDateWithButton;
80
- private setMultipleDates;
81
- private updateButtonsByPeriod;
82
- private calculateDatesFromButton;
83
- private convertFlatpickrFormatToMoment;
84
- getDates(): string[];
85
- }
86
- export {};