@ncds/ui-admin 1.8.1 → 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 (438) hide show
  1. package/dist/cjs/src/components/badge/index.js +11 -0
  2. package/dist/cjs/src/components/date-picker/index.js +11 -0
  3. package/dist/cjs/src/components/image-file-input/components/index.js +16 -0
  4. package/dist/cjs/src/components/image-file-input/index.js +11 -0
  5. package/dist/cjs/src/components/progress-bar/components/index.js +27 -0
  6. package/dist/cjs/src/components/progress-bar/hooks/index.js +16 -0
  7. package/dist/cjs/src/components/progress-bar/index.js +33 -0
  8. package/dist/cjs/src/components/select/Select.js +0 -1
  9. package/dist/cjs/src/components/select-dropdown/index.js +11 -7
  10. package/dist/cjs/src/components/switch/index.js +11 -7
  11. package/dist/cjs/src/components/tooltip/Tooltip.js +170 -104
  12. package/dist/cjs/src/hooks/dropdown/index.js +61 -37
  13. package/dist/cjs/src/hooks/index.js +31 -25
  14. package/dist/cjs/vitest.config.js +13 -0
  15. package/dist/esm/src/components/badge/index.js +2 -1
  16. package/dist/esm/src/components/date-picker/index.js +1 -0
  17. package/dist/esm/src/components/empty-state/EmptyState.js +2 -3
  18. package/dist/esm/src/components/image-file-input/components/index.js +1 -0
  19. package/dist/esm/src/components/image-file-input/index.js +2 -1
  20. package/dist/esm/src/components/progress-bar/components/index.js +2 -0
  21. package/dist/esm/src/components/progress-bar/hooks/index.js +1 -0
  22. package/dist/esm/src/components/progress-bar/index.js +4 -1
  23. package/dist/esm/src/components/select/Select.js +0 -1
  24. package/dist/esm/src/components/select-dropdown/index.js +1 -1
  25. package/dist/esm/src/components/switch/index.js +1 -1
  26. package/dist/esm/src/components/tag/Tag.js +2 -3
  27. package/dist/esm/src/components/tooltip/Tooltip.js +172 -106
  28. package/dist/esm/src/hooks/dropdown/index.js +6 -6
  29. package/dist/esm/src/hooks/index.js +3 -3
  30. package/dist/esm/src/types/component-meta.js +2 -0
  31. package/dist/esm/vitest.config.js +7 -0
  32. package/dist/temp/src/components/badge/index.d.ts +1 -0
  33. package/dist/temp/src/components/badge/index.js +1 -0
  34. package/dist/temp/src/components/date-picker/index.d.ts +1 -0
  35. package/dist/temp/src/components/date-picker/index.js +1 -0
  36. package/dist/temp/src/components/empty-state/EmptyState.d.ts +3 -5
  37. package/dist/temp/src/components/empty-state/EmptyState.js +1 -2
  38. package/dist/temp/src/components/image-file-input/components/index.d.ts +1 -0
  39. package/dist/temp/src/components/image-file-input/components/index.js +1 -0
  40. package/dist/temp/src/components/image-file-input/index.d.ts +1 -0
  41. package/dist/temp/src/components/image-file-input/index.js +1 -0
  42. package/dist/temp/src/components/progress-bar/components/index.d.ts +2 -0
  43. package/dist/temp/src/components/progress-bar/components/index.js +2 -0
  44. package/dist/temp/src/components/progress-bar/hooks/index.d.ts +1 -0
  45. package/dist/temp/src/components/progress-bar/hooks/index.js +1 -0
  46. package/dist/temp/src/components/progress-bar/index.d.ts +3 -0
  47. package/dist/temp/src/components/progress-bar/index.js +3 -0
  48. package/dist/temp/src/components/select/Select.js +1 -1
  49. package/dist/temp/src/components/select-dropdown/index.d.ts +1 -1
  50. package/dist/temp/src/components/select-dropdown/index.js +1 -1
  51. package/dist/temp/src/components/spinner/Spinner.d.ts +1 -2
  52. package/dist/temp/src/components/switch/index.d.ts +1 -2
  53. package/dist/temp/src/components/switch/index.js +1 -1
  54. package/dist/temp/src/components/tag/Tag.d.ts +3 -5
  55. package/dist/temp/src/components/tag/Tag.js +1 -2
  56. package/dist/temp/src/components/tooltip/Tooltip.d.ts +4 -2
  57. package/dist/temp/src/components/tooltip/Tooltip.js +126 -68
  58. package/dist/temp/src/hooks/dropdown/index.d.ts +6 -6
  59. package/dist/temp/src/hooks/dropdown/index.js +6 -6
  60. package/dist/temp/src/hooks/index.d.ts +3 -3
  61. package/dist/temp/src/hooks/index.js +3 -3
  62. package/dist/temp/src/types/component-meta.d.ts +26 -0
  63. package/dist/temp/src/types/component-meta.js +2 -0
  64. package/dist/temp/src/types/dropdown/option.d.ts +2 -4
  65. package/dist/temp/src/types/side-slot.d.ts +9 -1
  66. package/dist/temp/vitest.config.d.ts +2 -0
  67. package/dist/temp/vitest.config.js +7 -0
  68. package/dist/types/src/components/badge/index.d.ts +1 -0
  69. package/dist/types/src/components/date-picker/index.d.ts +1 -0
  70. package/dist/types/src/components/empty-state/EmptyState.d.ts +3 -5
  71. package/dist/types/src/components/image-file-input/components/index.d.ts +1 -0
  72. package/dist/types/src/components/image-file-input/index.d.ts +1 -0
  73. package/dist/types/src/components/progress-bar/components/index.d.ts +2 -0
  74. package/dist/types/src/components/progress-bar/hooks/index.d.ts +1 -0
  75. package/dist/types/src/components/progress-bar/index.d.ts +3 -0
  76. package/dist/types/src/components/select-dropdown/index.d.ts +1 -1
  77. package/dist/types/src/components/spinner/Spinner.d.ts +1 -2
  78. package/dist/types/src/components/switch/index.d.ts +1 -2
  79. package/dist/types/src/components/tag/Tag.d.ts +3 -5
  80. package/dist/types/src/components/tooltip/Tooltip.d.ts +4 -2
  81. package/dist/types/src/hooks/dropdown/index.d.ts +6 -6
  82. package/dist/types/src/hooks/index.d.ts +3 -3
  83. package/dist/types/src/types/component-meta.d.ts +26 -0
  84. package/dist/types/src/types/dropdown/option.d.ts +2 -4
  85. package/dist/types/src/types/side-slot.d.ts +9 -1
  86. package/dist/types/vitest.config.d.ts +2 -0
  87. package/dist/ui-admin/assets/styles/style.css +18 -7
  88. package/package.json +6 -1
  89. package/dist/cjs/assets/scripts/baseBox.js +0 -146
  90. package/dist/cjs/assets/scripts/comboBox.js +0 -137
  91. package/dist/cjs/assets/scripts/datePicker.js +0 -671
  92. package/dist/cjs/assets/scripts/featuredIcon.js +0 -87
  93. package/dist/cjs/assets/scripts/fileInput/const/classNames.js +0 -25
  94. package/dist/cjs/assets/scripts/fileInput/const/index.js +0 -27
  95. package/dist/cjs/assets/scripts/fileInput/const/types.js +0 -13
  96. package/dist/cjs/assets/scripts/fileInput/fileInput.js +0 -78
  97. package/dist/cjs/assets/scripts/fileInput/fileInputModel.js +0 -53
  98. package/dist/cjs/assets/scripts/fileInput/fileInputView.js +0 -152
  99. package/dist/cjs/assets/scripts/fileInput/index.js +0 -44
  100. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +0 -184
  101. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -222
  102. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +0 -356
  103. package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +0 -31
  104. package/dist/cjs/assets/scripts/imageFileInput/const/index.js +0 -27
  105. package/dist/cjs/assets/scripts/imageFileInput/const/types.js +0 -13
  106. package/dist/cjs/assets/scripts/imageFileInput/index.js +0 -44
  107. package/dist/cjs/assets/scripts/index.js +0 -32
  108. package/dist/cjs/assets/scripts/modal/Modal.js +0 -104
  109. package/dist/cjs/assets/scripts/modal/ModalActions.js +0 -116
  110. package/dist/cjs/assets/scripts/modal/ModalContent.js +0 -46
  111. package/dist/cjs/assets/scripts/modal/ModalHeader.js +0 -104
  112. package/dist/cjs/assets/scripts/modal/const/classNames.js +0 -33
  113. package/dist/cjs/assets/scripts/modal/const/index.js +0 -27
  114. package/dist/cjs/assets/scripts/modal/index.js +0 -61
  115. package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +0 -35
  116. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +0 -178
  117. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +0 -132
  118. package/dist/cjs/assets/scripts/notification/MessageNotification.js +0 -159
  119. package/dist/cjs/assets/scripts/notification/Notification.js +0 -101
  120. package/dist/cjs/assets/scripts/notification/const/classNames.js +0 -50
  121. package/dist/cjs/assets/scripts/notification/const/icons.js +0 -31
  122. package/dist/cjs/assets/scripts/notification/const/index.js +0 -87
  123. package/dist/cjs/assets/scripts/notification/const/sizes.js +0 -46
  124. package/dist/cjs/assets/scripts/notification/const/types.js +0 -14
  125. package/dist/cjs/assets/scripts/notification/index.js +0 -92
  126. package/dist/cjs/assets/scripts/notification/utils.js +0 -97
  127. package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +0 -271
  128. package/dist/cjs/assets/scripts/progress-bar/index.js +0 -12
  129. package/dist/cjs/assets/scripts/selectBox.js +0 -169
  130. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +0 -45
  131. package/dist/cjs/assets/scripts/tab.js +0 -40
  132. package/dist/cjs/assets/scripts/table/Table.js +0 -377
  133. package/dist/cjs/assets/scripts/table/const/classNames.js +0 -33
  134. package/dist/cjs/assets/scripts/table/const/index.js +0 -27
  135. package/dist/cjs/assets/scripts/table/const/types.js +0 -5
  136. package/dist/cjs/assets/scripts/table/index.js +0 -43
  137. package/dist/cjs/assets/scripts/tag/Tag.js +0 -261
  138. package/dist/cjs/assets/scripts/tag/const/classNames.js +0 -20
  139. package/dist/cjs/assets/scripts/tag/const/index.js +0 -38
  140. package/dist/cjs/assets/scripts/tag/const/sizes.js +0 -13
  141. package/dist/cjs/assets/scripts/tag/const/types.js +0 -5
  142. package/dist/cjs/assets/scripts/tag/index.js +0 -44
  143. package/dist/cjs/assets/scripts/tooltip/Tooltip.js +0 -353
  144. package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +0 -82
  145. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +0 -29
  146. package/dist/cjs/assets/scripts/tooltip/const/constants.js +0 -56
  147. package/dist/cjs/assets/scripts/tooltip/const/icons.js +0 -15
  148. package/dist/cjs/assets/scripts/tooltip/const/index.js +0 -123
  149. package/dist/cjs/assets/scripts/tooltip/const/templates.js +0 -66
  150. package/dist/cjs/assets/scripts/tooltip/const/types.js +0 -5
  151. package/dist/cjs/assets/scripts/tooltip/index.js +0 -57
  152. package/dist/cjs/assets/scripts/tooltip/utils.js +0 -40
  153. package/dist/cjs/assets/scripts/utils/debounce.js +0 -32
  154. package/dist/cjs/assets/scripts/utils/unifiedBox/domRenderer.js +0 -370
  155. package/dist/cjs/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -285
  156. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -622
  157. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -473
  158. package/dist/esm/assets/scripts/baseBox.js +0 -139
  159. package/dist/esm/assets/scripts/comboBox.js +0 -130
  160. package/dist/esm/assets/scripts/datePicker.js +0 -663
  161. package/dist/esm/assets/scripts/featuredIcon.js +0 -80
  162. package/dist/esm/assets/scripts/fileInput/const/classNames.js +0 -16
  163. package/dist/esm/assets/scripts/fileInput/const/index.js +0 -2
  164. package/dist/esm/assets/scripts/fileInput/const/types.js +0 -7
  165. package/dist/esm/assets/scripts/fileInput/fileInput.js +0 -71
  166. package/dist/esm/assets/scripts/fileInput/fileInputModel.js +0 -46
  167. package/dist/esm/assets/scripts/fileInput/fileInputView.js +0 -145
  168. package/dist/esm/assets/scripts/fileInput/index.js +0 -9
  169. package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +0 -177
  170. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -215
  171. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +0 -349
  172. package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +0 -20
  173. package/dist/esm/assets/scripts/imageFileInput/const/index.js +0 -2
  174. package/dist/esm/assets/scripts/imageFileInput/const/types.js +0 -7
  175. package/dist/esm/assets/scripts/imageFileInput/index.js +0 -9
  176. package/dist/esm/assets/scripts/index.js +0 -30
  177. package/dist/esm/assets/scripts/modal/Modal.js +0 -98
  178. package/dist/esm/assets/scripts/modal/ModalActions.js +0 -109
  179. package/dist/esm/assets/scripts/modal/ModalContent.js +0 -39
  180. package/dist/esm/assets/scripts/modal/ModalHeader.js +0 -97
  181. package/dist/esm/assets/scripts/modal/const/classNames.js +0 -23
  182. package/dist/esm/assets/scripts/modal/const/index.js +0 -2
  183. package/dist/esm/assets/scripts/modal/const/types.js +0 -1
  184. package/dist/esm/assets/scripts/modal/index.js +0 -15
  185. package/dist/esm/assets/scripts/modal/utils/contentUtils.js +0 -28
  186. package/dist/esm/assets/scripts/notification/FloatingNotification.js +0 -172
  187. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +0 -125
  188. package/dist/esm/assets/scripts/notification/MessageNotification.js +0 -152
  189. package/dist/esm/assets/scripts/notification/Notification.js +0 -94
  190. package/dist/esm/assets/scripts/notification/const/classNames.js +0 -44
  191. package/dist/esm/assets/scripts/notification/const/icons.js +0 -25
  192. package/dist/esm/assets/scripts/notification/const/index.js +0 -4
  193. package/dist/esm/assets/scripts/notification/const/sizes.js +0 -40
  194. package/dist/esm/assets/scripts/notification/const/types.js +0 -8
  195. package/dist/esm/assets/scripts/notification/index.js +0 -11
  196. package/dist/esm/assets/scripts/notification/utils.js +0 -84
  197. package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +0 -264
  198. package/dist/esm/assets/scripts/progress-bar/index.js +0 -1
  199. package/dist/esm/assets/scripts/selectBox.js +0 -162
  200. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +0 -37
  201. package/dist/esm/assets/scripts/tab.js +0 -33
  202. package/dist/esm/assets/scripts/table/Table.js +0 -370
  203. package/dist/esm/assets/scripts/table/const/classNames.js +0 -27
  204. package/dist/esm/assets/scripts/table/const/index.js +0 -2
  205. package/dist/esm/assets/scripts/table/const/types.js +0 -1
  206. package/dist/esm/assets/scripts/table/index.js +0 -8
  207. package/dist/esm/assets/scripts/tag/Tag.js +0 -254
  208. package/dist/esm/assets/scripts/tag/const/classNames.js +0 -12
  209. package/dist/esm/assets/scripts/tag/const/index.js +0 -3
  210. package/dist/esm/assets/scripts/tag/const/sizes.js +0 -7
  211. package/dist/esm/assets/scripts/tag/const/types.js +0 -1
  212. package/dist/esm/assets/scripts/tag/index.js +0 -9
  213. package/dist/esm/assets/scripts/tooltip/Tooltip.js +0 -346
  214. package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +0 -75
  215. package/dist/esm/assets/scripts/tooltip/const/classNames.js +0 -23
  216. package/dist/esm/assets/scripts/tooltip/const/constants.js +0 -50
  217. package/dist/esm/assets/scripts/tooltip/const/icons.js +0 -9
  218. package/dist/esm/assets/scripts/tooltip/const/index.js +0 -4
  219. package/dist/esm/assets/scripts/tooltip/const/templates.js +0 -59
  220. package/dist/esm/assets/scripts/tooltip/const/types.js +0 -1
  221. package/dist/esm/assets/scripts/tooltip/index.js +0 -10
  222. package/dist/esm/assets/scripts/tooltip/utils.js +0 -34
  223. package/dist/esm/assets/scripts/utils/debounce.js +0 -26
  224. package/dist/esm/assets/scripts/utils/unifiedBox/domRenderer.js +0 -363
  225. package/dist/esm/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -279
  226. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -615
  227. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -466
  228. package/dist/temp/assets/scripts/baseBox.d.ts +0 -55
  229. package/dist/temp/assets/scripts/baseBox.js +0 -140
  230. package/dist/temp/assets/scripts/comboBox.d.ts +0 -60
  231. package/dist/temp/assets/scripts/comboBox.js +0 -132
  232. package/dist/temp/assets/scripts/datePicker.d.ts +0 -86
  233. package/dist/temp/assets/scripts/datePicker.js +0 -699
  234. package/dist/temp/assets/scripts/featuredIcon.d.ts +0 -22
  235. package/dist/temp/assets/scripts/featuredIcon.js +0 -79
  236. package/dist/temp/assets/scripts/fileInput/const/classNames.d.ts +0 -15
  237. package/dist/temp/assets/scripts/fileInput/const/classNames.js +0 -16
  238. package/dist/temp/assets/scripts/fileInput/const/index.d.ts +0 -2
  239. package/dist/temp/assets/scripts/fileInput/const/index.js +0 -2
  240. package/dist/temp/assets/scripts/fileInput/const/types.d.ts +0 -88
  241. package/dist/temp/assets/scripts/fileInput/const/types.js +0 -7
  242. package/dist/temp/assets/scripts/fileInput/fileInput.d.ts +0 -13
  243. package/dist/temp/assets/scripts/fileInput/fileInput.js +0 -71
  244. package/dist/temp/assets/scripts/fileInput/fileInputModel.d.ts +0 -12
  245. package/dist/temp/assets/scripts/fileInput/fileInputModel.js +0 -37
  246. package/dist/temp/assets/scripts/fileInput/fileInputView.d.ts +0 -42
  247. package/dist/temp/assets/scripts/fileInput/fileInputView.js +0 -145
  248. package/dist/temp/assets/scripts/fileInput/index.d.ts +0 -3
  249. package/dist/temp/assets/scripts/fileInput/index.js +0 -9
  250. package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -63
  251. package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.js +0 -180
  252. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -73
  253. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -214
  254. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -79
  255. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.js +0 -350
  256. package/dist/temp/assets/scripts/imageFileInput/const/classNames.d.ts +0 -19
  257. package/dist/temp/assets/scripts/imageFileInput/const/classNames.js +0 -20
  258. package/dist/temp/assets/scripts/imageFileInput/const/index.d.ts +0 -2
  259. package/dist/temp/assets/scripts/imageFileInput/const/index.js +0 -2
  260. package/dist/temp/assets/scripts/imageFileInput/const/types.d.ts +0 -125
  261. package/dist/temp/assets/scripts/imageFileInput/const/types.js +0 -7
  262. package/dist/temp/assets/scripts/imageFileInput/index.d.ts +0 -3
  263. package/dist/temp/assets/scripts/imageFileInput/index.js +0 -9
  264. package/dist/temp/assets/scripts/index.d.ts +0 -34
  265. package/dist/temp/assets/scripts/index.js +0 -30
  266. package/dist/temp/assets/scripts/modal/Modal.d.ts +0 -27
  267. package/dist/temp/assets/scripts/modal/Modal.js +0 -100
  268. package/dist/temp/assets/scripts/modal/ModalActions.d.ts +0 -18
  269. package/dist/temp/assets/scripts/modal/ModalActions.js +0 -117
  270. package/dist/temp/assets/scripts/modal/ModalContent.d.ts +0 -13
  271. package/dist/temp/assets/scripts/modal/ModalContent.js +0 -39
  272. package/dist/temp/assets/scripts/modal/ModalHeader.d.ts +0 -15
  273. package/dist/temp/assets/scripts/modal/ModalHeader.js +0 -96
  274. package/dist/temp/assets/scripts/modal/const/classNames.d.ts +0 -22
  275. package/dist/temp/assets/scripts/modal/const/classNames.js +0 -23
  276. package/dist/temp/assets/scripts/modal/const/index.d.ts +0 -2
  277. package/dist/temp/assets/scripts/modal/const/index.js +0 -2
  278. package/dist/temp/assets/scripts/modal/const/types.d.ts +0 -61
  279. package/dist/temp/assets/scripts/modal/const/types.js +0 -1
  280. package/dist/temp/assets/scripts/modal/index.d.ts +0 -7
  281. package/dist/temp/assets/scripts/modal/index.js +0 -15
  282. package/dist/temp/assets/scripts/modal/utils/contentUtils.d.ts +0 -10
  283. package/dist/temp/assets/scripts/modal/utils/contentUtils.js +0 -29
  284. package/dist/temp/assets/scripts/notification/FloatingNotification.d.ts +0 -24
  285. package/dist/temp/assets/scripts/notification/FloatingNotification.js +0 -157
  286. package/dist/temp/assets/scripts/notification/FullWidthNotification.d.ts +0 -21
  287. package/dist/temp/assets/scripts/notification/FullWidthNotification.js +0 -110
  288. package/dist/temp/assets/scripts/notification/MessageNotification.d.ts +0 -22
  289. package/dist/temp/assets/scripts/notification/MessageNotification.js +0 -140
  290. package/dist/temp/assets/scripts/notification/Notification.d.ts +0 -21
  291. package/dist/temp/assets/scripts/notification/Notification.js +0 -94
  292. package/dist/temp/assets/scripts/notification/const/classNames.d.ts +0 -43
  293. package/dist/temp/assets/scripts/notification/const/classNames.js +0 -44
  294. package/dist/temp/assets/scripts/notification/const/icons.d.ts +0 -25
  295. package/dist/temp/assets/scripts/notification/const/icons.js +0 -25
  296. package/dist/temp/assets/scripts/notification/const/index.d.ts +0 -5
  297. package/dist/temp/assets/scripts/notification/const/index.js +0 -4
  298. package/dist/temp/assets/scripts/notification/const/sizes.d.ts +0 -32
  299. package/dist/temp/assets/scripts/notification/const/sizes.js +0 -40
  300. package/dist/temp/assets/scripts/notification/const/types.d.ts +0 -19
  301. package/dist/temp/assets/scripts/notification/const/types.js +0 -8
  302. package/dist/temp/assets/scripts/notification/index.d.ts +0 -7
  303. package/dist/temp/assets/scripts/notification/index.js +0 -11
  304. package/dist/temp/assets/scripts/notification/utils.d.ts +0 -8
  305. package/dist/temp/assets/scripts/notification/utils.js +0 -89
  306. package/dist/temp/assets/scripts/progress-bar/ProgressBar.d.ts +0 -67
  307. package/dist/temp/assets/scripts/progress-bar/ProgressBar.js +0 -263
  308. package/dist/temp/assets/scripts/progress-bar/index.d.ts +0 -1
  309. package/dist/temp/assets/scripts/progress-bar/index.js +0 -1
  310. package/dist/temp/assets/scripts/selectBox.d.ts +0 -50
  311. package/dist/temp/assets/scripts/selectBox.js +0 -170
  312. package/dist/temp/assets/scripts/shared/ButtonCloseX.d.ts +0 -5
  313. package/dist/temp/assets/scripts/shared/ButtonCloseX.js +0 -33
  314. package/dist/temp/assets/scripts/tab.d.ts +0 -7
  315. package/dist/temp/assets/scripts/tab.js +0 -33
  316. package/dist/temp/assets/scripts/table/Table.d.ts +0 -41
  317. package/dist/temp/assets/scripts/table/Table.js +0 -378
  318. package/dist/temp/assets/scripts/table/const/classNames.d.ts +0 -27
  319. package/dist/temp/assets/scripts/table/const/classNames.js +0 -27
  320. package/dist/temp/assets/scripts/table/const/index.d.ts +0 -2
  321. package/dist/temp/assets/scripts/table/const/index.js +0 -2
  322. package/dist/temp/assets/scripts/table/const/types.d.ts +0 -23
  323. package/dist/temp/assets/scripts/table/const/types.js +0 -1
  324. package/dist/temp/assets/scripts/table/index.d.ts +0 -3
  325. package/dist/temp/assets/scripts/table/index.js +0 -8
  326. package/dist/temp/assets/scripts/tag/Tag.d.ts +0 -27
  327. package/dist/temp/assets/scripts/tag/Tag.js +0 -259
  328. package/dist/temp/assets/scripts/tag/const/classNames.d.ts +0 -11
  329. package/dist/temp/assets/scripts/tag/const/classNames.js +0 -12
  330. package/dist/temp/assets/scripts/tag/const/index.d.ts +0 -3
  331. package/dist/temp/assets/scripts/tag/const/index.js +0 -3
  332. package/dist/temp/assets/scripts/tag/const/sizes.d.ts +0 -7
  333. package/dist/temp/assets/scripts/tag/const/sizes.js +0 -7
  334. package/dist/temp/assets/scripts/tag/const/types.d.ts +0 -33
  335. package/dist/temp/assets/scripts/tag/const/types.js +0 -1
  336. package/dist/temp/assets/scripts/tag/index.d.ts +0 -3
  337. package/dist/temp/assets/scripts/tag/index.js +0 -9
  338. package/dist/temp/assets/scripts/tooltip/Tooltip.d.ts +0 -54
  339. package/dist/temp/assets/scripts/tooltip/Tooltip.js +0 -335
  340. package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -21
  341. package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.js +0 -71
  342. package/dist/temp/assets/scripts/tooltip/const/classNames.d.ts +0 -17
  343. package/dist/temp/assets/scripts/tooltip/const/classNames.js +0 -23
  344. package/dist/temp/assets/scripts/tooltip/const/constants.d.ts +0 -33
  345. package/dist/temp/assets/scripts/tooltip/const/constants.js +0 -46
  346. package/dist/temp/assets/scripts/tooltip/const/icons.d.ts +0 -4
  347. package/dist/temp/assets/scripts/tooltip/const/icons.js +0 -9
  348. package/dist/temp/assets/scripts/tooltip/const/index.d.ts +0 -5
  349. package/dist/temp/assets/scripts/tooltip/const/index.js +0 -4
  350. package/dist/temp/assets/scripts/tooltip/const/templates.d.ts +0 -16
  351. package/dist/temp/assets/scripts/tooltip/const/templates.js +0 -59
  352. package/dist/temp/assets/scripts/tooltip/const/types.d.ts +0 -14
  353. package/dist/temp/assets/scripts/tooltip/const/types.js +0 -1
  354. package/dist/temp/assets/scripts/tooltip/index.d.ts +0 -6
  355. package/dist/temp/assets/scripts/tooltip/index.js +0 -10
  356. package/dist/temp/assets/scripts/tooltip/utils.d.ts +0 -2
  357. package/dist/temp/assets/scripts/tooltip/utils.js +0 -33
  358. package/dist/temp/assets/scripts/utils/debounce.d.ts +0 -8
  359. package/dist/temp/assets/scripts/utils/debounce.js +0 -23
  360. package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.d.ts +0 -107
  361. package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.js +0 -367
  362. package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.d.ts +0 -142
  363. package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -286
  364. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.d.ts +0 -156
  365. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -604
  366. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.d.ts +0 -95
  367. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -482
  368. package/dist/types/assets/scripts/baseBox.d.ts +0 -55
  369. package/dist/types/assets/scripts/comboBox.d.ts +0 -60
  370. package/dist/types/assets/scripts/datePicker.d.ts +0 -86
  371. package/dist/types/assets/scripts/featuredIcon.d.ts +0 -22
  372. package/dist/types/assets/scripts/fileInput/const/classNames.d.ts +0 -15
  373. package/dist/types/assets/scripts/fileInput/const/index.d.ts +0 -2
  374. package/dist/types/assets/scripts/fileInput/const/types.d.ts +0 -88
  375. package/dist/types/assets/scripts/fileInput/fileInput.d.ts +0 -13
  376. package/dist/types/assets/scripts/fileInput/fileInputModel.d.ts +0 -12
  377. package/dist/types/assets/scripts/fileInput/fileInputView.d.ts +0 -42
  378. package/dist/types/assets/scripts/fileInput/index.d.ts +0 -3
  379. package/dist/types/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -63
  380. package/dist/types/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -73
  381. package/dist/types/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -79
  382. package/dist/types/assets/scripts/imageFileInput/const/classNames.d.ts +0 -19
  383. package/dist/types/assets/scripts/imageFileInput/const/index.d.ts +0 -2
  384. package/dist/types/assets/scripts/imageFileInput/const/types.d.ts +0 -125
  385. package/dist/types/assets/scripts/imageFileInput/index.d.ts +0 -3
  386. package/dist/types/assets/scripts/index.d.ts +0 -34
  387. package/dist/types/assets/scripts/modal/Modal.d.ts +0 -27
  388. package/dist/types/assets/scripts/modal/ModalActions.d.ts +0 -18
  389. package/dist/types/assets/scripts/modal/ModalContent.d.ts +0 -13
  390. package/dist/types/assets/scripts/modal/ModalHeader.d.ts +0 -15
  391. package/dist/types/assets/scripts/modal/const/classNames.d.ts +0 -22
  392. package/dist/types/assets/scripts/modal/const/index.d.ts +0 -2
  393. package/dist/types/assets/scripts/modal/const/types.d.ts +0 -61
  394. package/dist/types/assets/scripts/modal/index.d.ts +0 -7
  395. package/dist/types/assets/scripts/modal/utils/contentUtils.d.ts +0 -10
  396. package/dist/types/assets/scripts/notification/FloatingNotification.d.ts +0 -24
  397. package/dist/types/assets/scripts/notification/FullWidthNotification.d.ts +0 -21
  398. package/dist/types/assets/scripts/notification/MessageNotification.d.ts +0 -22
  399. package/dist/types/assets/scripts/notification/Notification.d.ts +0 -21
  400. package/dist/types/assets/scripts/notification/const/classNames.d.ts +0 -43
  401. package/dist/types/assets/scripts/notification/const/icons.d.ts +0 -25
  402. package/dist/types/assets/scripts/notification/const/index.d.ts +0 -5
  403. package/dist/types/assets/scripts/notification/const/sizes.d.ts +0 -32
  404. package/dist/types/assets/scripts/notification/const/types.d.ts +0 -19
  405. package/dist/types/assets/scripts/notification/index.d.ts +0 -7
  406. package/dist/types/assets/scripts/notification/utils.d.ts +0 -8
  407. package/dist/types/assets/scripts/progress-bar/ProgressBar.d.ts +0 -67
  408. package/dist/types/assets/scripts/progress-bar/index.d.ts +0 -1
  409. package/dist/types/assets/scripts/selectBox.d.ts +0 -50
  410. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +0 -5
  411. package/dist/types/assets/scripts/tab.d.ts +0 -7
  412. package/dist/types/assets/scripts/table/Table.d.ts +0 -41
  413. package/dist/types/assets/scripts/table/const/classNames.d.ts +0 -27
  414. package/dist/types/assets/scripts/table/const/index.d.ts +0 -2
  415. package/dist/types/assets/scripts/table/const/types.d.ts +0 -23
  416. package/dist/types/assets/scripts/table/index.d.ts +0 -3
  417. package/dist/types/assets/scripts/tag/Tag.d.ts +0 -27
  418. package/dist/types/assets/scripts/tag/const/classNames.d.ts +0 -11
  419. package/dist/types/assets/scripts/tag/const/index.d.ts +0 -3
  420. package/dist/types/assets/scripts/tag/const/sizes.d.ts +0 -7
  421. package/dist/types/assets/scripts/tag/const/types.d.ts +0 -33
  422. package/dist/types/assets/scripts/tag/index.d.ts +0 -3
  423. package/dist/types/assets/scripts/tooltip/Tooltip.d.ts +0 -54
  424. package/dist/types/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -21
  425. package/dist/types/assets/scripts/tooltip/const/classNames.d.ts +0 -17
  426. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +0 -33
  427. package/dist/types/assets/scripts/tooltip/const/icons.d.ts +0 -4
  428. package/dist/types/assets/scripts/tooltip/const/index.d.ts +0 -5
  429. package/dist/types/assets/scripts/tooltip/const/templates.d.ts +0 -16
  430. package/dist/types/assets/scripts/tooltip/const/types.d.ts +0 -14
  431. package/dist/types/assets/scripts/tooltip/index.d.ts +0 -6
  432. package/dist/types/assets/scripts/tooltip/utils.d.ts +0 -2
  433. package/dist/types/assets/scripts/utils/debounce.d.ts +0 -8
  434. package/dist/types/assets/scripts/utils/unifiedBox/domRenderer.d.ts +0 -107
  435. package/dist/types/assets/scripts/utils/unifiedBox/dropdownModel.d.ts +0 -142
  436. package/dist/types/assets/scripts/utils/unifiedBox/unifiedBoxController.d.ts +0 -156
  437. package/dist/types/assets/scripts/utils/unifiedBox/unifiedBoxManager.d.ts +0 -95
  438. /package/dist/cjs/{assets/scripts/modal/const/types.js → src/types/component-meta.js} +0 -0
@@ -1,363 +0,0 @@
1
- export class DOMRenderer {
2
- constructor() {
3
- this.optionElementCache = new Map();
4
- }
5
- /**
6
- * 드롭다운 컨테이너 생성 (구조만)
7
- */
8
- createDropdownStructure(config) {
9
- const dropdown = document.createElement('div');
10
- dropdown.className = `ncua-select-dropdown ncua-select-dropdown--down ncua-select-dropdown--${config.size}`;
11
- dropdown.style.display = 'none';
12
- const content = document.createElement('div');
13
- content.className = 'ncua-select-dropdown__content';
14
- const optionsList = document.createElement('ul');
15
- optionsList.className = 'ncua-select-dropdown__options';
16
- optionsList.setAttribute('role', 'listbox');
17
- optionsList.setAttribute('id', config.listboxId);
18
- optionsList.style.maxHeight = `${config.maxHeight}px`;
19
- optionsList.style.overflowY = 'auto'; // 스크롤 활성화
20
- content.appendChild(optionsList);
21
- dropdown.appendChild(content);
22
- return {
23
- dropdown,
24
- content,
25
- optionsList
26
- };
27
- }
28
- /**
29
- * 단일 옵션 엘리먼트 생성 (재사용 가능)
30
- */
31
- createOptionElement(option, index, config) {
32
- const cached = this.optionElementCache.get(option.id);
33
- if (cached) {
34
- this.updateOptionElement(cached, option, index, config);
35
- return cached;
36
- }
37
- const element = document.createElement('li');
38
- element.className = 'ncua-select-dropdown__option';
39
- element.setAttribute('data-value', String(option.id));
40
- element.setAttribute('data-index', String(index));
41
- element.setAttribute('role', 'option');
42
- element.id = `${config.listboxId}-${option.id}`;
43
- const span = document.createElement('span');
44
- span.className = 'ncua-select-dropdown__option-text';
45
- span.textContent = option.label;
46
- element.appendChild(span);
47
- this.updateOptionElement(element, option, index, config);
48
- this.optionElementCache.set(option.id, element);
49
- return element;
50
- }
51
- /**
52
- * 옵션 엘리먼트 상태 업데이트 (DOM 조작 최소화)
53
- */
54
- updateOptionElement(element, option, index, config) {
55
- // 클래스 업데이트 (필요한 경우에만)
56
- const shouldHaveSelected = option.selected || false;
57
- const shouldHaveFocused = option.focused || false;
58
- const shouldHaveDisabled = option.disabled || false;
59
- this.toggleClass(element, 'ncua-select-dropdown__option--selected', shouldHaveSelected);
60
- this.toggleClass(element, 'ncua-select-dropdown__option--focused', shouldHaveFocused);
61
- this.toggleClass(element, 'ncua-select-dropdown__option--disabled', shouldHaveDisabled);
62
- // 속성 업데이트 (필요한 경우에만)
63
- element.setAttribute('aria-selected', String(shouldHaveSelected));
64
- element.setAttribute('data-index', String(index));
65
- }
66
- /**
67
- * "결과 없음" 엘리먼트 생성
68
- */
69
- createNoResultsElement() {
70
- let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '일치하는 결과가 없습니다.';
71
- const noResults = document.createElement('li');
72
- noResults.className = 'ncua-select-dropdown__no-results';
73
- noResults.textContent = text;
74
- return noResults;
75
- }
76
- /**
77
- * 옵션 리스트 효율적 업데이트 (Differential Rendering)
78
- */
79
- updateOptionsList(container, newOptions, config) {
80
- let showNoResults = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
81
- // 스크롤 위치 저장
82
- const scrollTop = container.scrollTop;
83
- // 결과 없음 처리
84
- if (showNoResults) {
85
- container.innerHTML = '';
86
- container.appendChild(this.createNoResultsElement(config.noResultsText));
87
- return [];
88
- }
89
- const newElements = [];
90
- // 새 옵션들로 엘리먼트 생성/업데이트
91
- newOptions.forEach((option, index) => {
92
- const element = this.createOptionElement(option, index, config);
93
- newElements.push(element);
94
- });
95
- // DOM 업데이트 최소화 - 변경된 부분만 업데이트
96
- this.updateContainerChildren(container, newElements);
97
- // 스크롤 위치 복원 (다음 프레임에서 실행)
98
- requestAnimationFrame(() => {
99
- container.scrollTop = scrollTop;
100
- });
101
- return newElements;
102
- }
103
- /**
104
- * 컨테이너 자식 엘리먼트 효율적 업데이트
105
- */
106
- updateContainerChildren(container, newChildren) {
107
- // 기존 엘리먼트 제거 (새 리스트에 없는 것들)
108
- Array.from(container.children).forEach(child => {
109
- if (!newChildren.includes(child)) {
110
- child.remove();
111
- }
112
- });
113
- // 새 엘리먼트 추가 (순서 유지)
114
- newChildren.forEach((child, index) => {
115
- const currentChild = container.children[index];
116
- if (currentChild !== child) {
117
- if (currentChild) {
118
- container.insertBefore(child, currentChild);
119
- } else {
120
- container.appendChild(child);
121
- }
122
- }
123
- });
124
- }
125
- /**
126
- * 클래스 토글 (변경이 필요한 경우에만)
127
- */
128
- toggleClass(element, className, shouldHave) {
129
- const hasClass = element.classList.contains(className);
130
- if (shouldHave && !hasClass) {
131
- element.classList.add(className);
132
- } else if (!shouldHave && hasClass) {
133
- element.classList.remove(className);
134
- }
135
- }
136
- /**
137
- * 입력 필드 생성 (InputFieldUtils에서 이동)
138
- */
139
- createInputField(config) {
140
- const actualSize = config.size === 'md' ? 'sm' : config.size || 'sm';
141
- // 최상위 ncua-input 컨테이너 (React 버전과 동일)
142
- const inputContainer = document.createElement('div');
143
- inputContainer.className = `ncua-input ncua-input--${actualSize}`;
144
- if (config.disabled) inputContainer.classList.add('is-disabled');
145
- // ncua-input__content 래퍼 (React 버전과 동일)
146
- const inputContent = document.createElement('div');
147
- inputContent.className = 'ncua-input__content';
148
- // ncua-input__field 래퍼 (React 버전과 동일, size 포함)
149
- const inputField = document.createElement('div');
150
- inputField.className = `ncua-input__field ncua-input__field--${actualSize}`;
151
- // 실제 입력 필드 (React 버전과 동일)
152
- const input = document.createElement('input');
153
- input.type = 'text';
154
- input.placeholder = config.placeholder || '';
155
- if (config.disabled) input.disabled = true;
156
- // 이벤트 리스너
157
- if (config.onInput) {
158
- input.addEventListener('input', e => {
159
- config.onInput(e.target.value);
160
- });
161
- }
162
- if (config.onClick) {
163
- input.addEventListener('click', event => {
164
- event.stopPropagation(); // 이벤트 버블링 방지
165
- config.onClick();
166
- });
167
- }
168
- // 클리어 버튼 (React 버전의 renderClearButton과 동일)
169
- let clearButton = null;
170
- if (config.onClear) {
171
- clearButton = document.createElement('button');
172
- clearButton.type = 'button';
173
- clearButton.className = 'ncua-input__icon-wrap ncua-input__right-icon ncua-input__clear';
174
- clearButton.style.display = 'none'; // 초기에는 숨김
175
- clearButton.addEventListener('click', config.onClear);
176
- // 클리어 아이콘 (React와 동일한 크기)
177
- const iconSize = actualSize === 'xs' ? 14 : 16;
178
- const clearIcon = DOMRenderer.createSvgIcon('close', iconSize);
179
- clearIcon.setAttribute('class', 'ncua-input__clear-icon');
180
- clearButton.appendChild(clearIcon);
181
- // 입력값 변경 시 클리어 버튼 표시/숨김
182
- input.addEventListener('input', () => {
183
- if (clearButton) {
184
- clearButton.style.display = input.value ? 'flex' : 'none';
185
- }
186
- });
187
- }
188
- // 전체 보기 버튼 (React 버전의 trailingElement와 동일)
189
- let showAllButton = null;
190
- if (config.onShowAll) {
191
- showAllButton = document.createElement('div');
192
- showAllButton.className = 'ncua-input__icon-wrap ncua-input__right-icon';
193
- showAllButton.addEventListener('click', config.onShowAll);
194
- // 전체 버튼 (React Button 컴포넌트와 유사한 구조)
195
- const button = document.createElement('button');
196
- button.type = 'button';
197
- button.className = 'ncua-btn ncua-btn--xxs ncua-btn--text';
198
- // 아이콘
199
- const iconSize = 14;
200
- const showAllIcon = DOMRenderer.createSvgIcon('chevron-selector-vertical', iconSize);
201
- button.appendChild(showAllIcon);
202
- // 텍스트
203
- const label = document.createElement('span');
204
- label.className = 'ncua-btn__label';
205
- label.textContent = '전체';
206
- button.appendChild(label);
207
- showAllButton.appendChild(button);
208
- }
209
- // 검색 아이콘 (React 버전의 leadingElement와 동일)
210
- let searchIcon = null;
211
- if (config.showSearchIcon) {
212
- searchIcon = document.createElement('div');
213
- searchIcon.className = 'ncua-input__icon-wrap ncua-input__left-icon';
214
- // 검색 아이콘 (React와 동일한 크기와 색상)
215
- const searchSvg = DOMRenderer.createSvgIcon('search', 14);
216
- searchSvg.style.color = '#98a2b3'; // gray300에 해당하는 색상
217
- searchIcon.appendChild(searchSvg);
218
- }
219
- // 구조 조립 (React 버전과 동일한 순서)
220
- if (searchIcon) inputField.appendChild(searchIcon);
221
- inputField.appendChild(input);
222
- if (clearButton) inputField.appendChild(clearButton);
223
- if (showAllButton) inputField.appendChild(showAllButton);
224
- inputContent.appendChild(inputField);
225
- inputContainer.appendChild(inputContent);
226
- return {
227
- container: inputContainer,
228
- input,
229
- setValue: value => {
230
- input.value = value;
231
- // 클리어 버튼 표시 상태 업데이트
232
- if (clearButton) {
233
- clearButton.style.display = value ? 'flex' : 'none';
234
- }
235
- },
236
- focus: () => input.focus(),
237
- blur: () => input.blur()
238
- };
239
- }
240
- /**
241
- * 캐시 정리
242
- */
243
- clearCache() {
244
- this.optionElementCache.clear();
245
- }
246
- /**
247
- * 특정 옵션 캐시 제거
248
- */
249
- removeCachedOption(optionId) {
250
- this.optionElementCache.delete(optionId);
251
- }
252
- /**
253
- * 공통 DOM 생성 유틸리티
254
- */
255
- static createElementWithClass(tagName, className, textContent) {
256
- const element = document.createElement(tagName);
257
- element.className = className;
258
- if (textContent) {
259
- element.textContent = textContent;
260
- }
261
- return element;
262
- }
263
- /**
264
- * 버튼 엘리먼트 생성
265
- */
266
- static createButton(className, textContent, onClick) {
267
- const button = document.createElement('button');
268
- button.className = className;
269
- // React 컴포넌트와 일치하도록 span.ncua-btn__label 구조 사용
270
- const label = document.createElement('span');
271
- label.className = 'ncua-btn__label';
272
- label.textContent = textContent;
273
- button.appendChild(label);
274
- if (onClick) {
275
- button.addEventListener('click', onClick);
276
- }
277
- return button;
278
- }
279
- /**
280
- * SVG 아이콘 생성
281
- */
282
- static createSvgIcon(iconName) {
283
- let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;
284
- const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
285
- svg.setAttribute('width', size.toString());
286
- svg.setAttribute('height', size.toString());
287
- svg.setAttribute('viewBox', '0 0 24 24');
288
- svg.setAttribute('fill', 'none');
289
- // 기본 아이콘들
290
- switch (iconName) {
291
- case 'close':
292
- svg.innerHTML = '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 7 7 17M7 7l10 10"/>';
293
- break;
294
- case 'chevron-down':
295
- svg.innerHTML = '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>';
296
- break;
297
- case 'chevron-selector-vertical':
298
- svg.innerHTML = '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m7 15 5 5 5-5M7 9l5-5 5 5"/>';
299
- break;
300
- case 'search':
301
- svg.innerHTML = '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21 21-3.5-3.5m2.5-6a8.5 8.5 0 1 1-17 0 8.5 8.5 0 0 1 17 0"></path>';
302
- break;
303
- }
304
- return svg;
305
- }
306
- /**
307
- * 푸터 생성
308
- */
309
- createFooter(config) {
310
- // 푸터 생성
311
- const footer = document.createElement('div');
312
- footer.className = 'ncua-select-dropdown__footer';
313
- const footerButtons = document.createElement('div');
314
- footerButtons.className = 'ncua-select-dropdown__footer-buttons';
315
- const footerLeft = document.createElement('div');
316
- footerLeft.className = 'ncua-select-dropdown__footer-left';
317
- const footerRight = document.createElement('div');
318
- footerRight.className = 'ncua-select-dropdown__footer-right';
319
- // 다중 선택인 경우 전체 선택 버튼 추가
320
- if (config.multiple) {
321
- const selectAllButton = DOMRenderer.createButton('ncua-btn ncua-btn--xs ncua-btn--text has-underline', config.selectAllButtonText || '전체 선택', e => {
322
- e.preventDefault();
323
- e.stopPropagation();
324
- config.onSelectAll?.();
325
- });
326
- footerLeft.appendChild(selectAllButton);
327
- }
328
- // 편집 버튼 (showFooterButtons가 true이고 onEdit가 있는 경우)
329
- if (config.showFooterButtons && config.onEdit) {
330
- const editButton = DOMRenderer.createButton('ncua-btn ncua-btn--xs ncua-btn--secondary-gray', '편집', e => {
331
- e.preventDefault();
332
- e.stopPropagation();
333
- config.onEdit?.();
334
- });
335
- footerRight.appendChild(editButton);
336
- }
337
- // 선택 완료 버튼 (다중 선택이거나 showFooterButtons가 true인 경우)
338
- if (config.multiple || config.showFooterButtons) {
339
- const completeButton = DOMRenderer.createButton('ncua-btn ncua-btn--xs ncua-btn--secondary', '선택 완료', e => {
340
- e.preventDefault();
341
- e.stopPropagation();
342
- config.onComplete?.();
343
- });
344
- footerRight.appendChild(completeButton);
345
- }
346
- footerButtons.appendChild(footerLeft);
347
- footerButtons.appendChild(footerRight);
348
- footer.appendChild(footerButtons);
349
- return footer;
350
- }
351
- /**
352
- * 전체 선택 버튼 텍스트 업데이트
353
- */
354
- updateSelectAllButtonText(footerElement, text) {
355
- const selectAllButton = footerElement.querySelector('.ncua-select-dropdown__footer-left .ncua-btn');
356
- if (selectAllButton) {
357
- const label = selectAllButton.querySelector('.ncua-btn__label');
358
- if (label) {
359
- label.textContent = text;
360
- }
361
- }
362
- }
363
- }
@@ -1,279 +0,0 @@
1
- class DropdownModel {
2
- constructor(initialOptions) {
3
- let multiple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4
- let filterStrategy = arguments.length > 2 ? arguments[2] : undefined;
5
- this.listeners = [];
6
- this.multiple = multiple;
7
- this.filterStrategy = filterStrategy ?? DropdownModel.defaultFilterStrategy;
8
- this.state = {
9
- isOpen: false,
10
- focusedIndex: -1,
11
- selectedValues: [],
12
- searchValue: '',
13
- showAllItems: false,
14
- options: [...initialOptions],
15
- filteredOptions: this.filterStrategy([...initialOptions], '', false)
16
- };
17
- }
18
- /**
19
- * 상태 변경 리스너 등록
20
- */
21
- addListener(listener) {
22
- this.listeners.push(listener);
23
- }
24
- /**
25
- * 상태 변경 리스너 제거
26
- */
27
- removeListener(listener) {
28
- const index = this.listeners.indexOf(listener);
29
- if (index > -1) {
30
- this.listeners.splice(index, 1);
31
- }
32
- }
33
- /**
34
- * 상태 변경 알림
35
- */
36
- notifyListeners(changedFields) {
37
- this.listeners.forEach(listener => {
38
- listener.onStateChange({
39
- ...this.state
40
- }, changedFields);
41
- });
42
- }
43
- /**
44
- * 드롭다운 열기/닫기
45
- */
46
- setOpen(isOpen) {
47
- if (this.state.isOpen !== isOpen) {
48
- this.state.isOpen = isOpen;
49
- if (!isOpen) {
50
- this.state.focusedIndex = -1;
51
- this.state.showAllItems = false;
52
- }
53
- this.notifyListeners(['isOpen', 'focusedIndex', 'showAllItems']);
54
- }
55
- }
56
- /**
57
- * 포커스 인덱스 설정
58
- */
59
- setFocusedIndex(index) {
60
- const maxIndex = this.state.filteredOptions.length - 1;
61
- const clampedIndex = Math.max(-1, Math.min(index, maxIndex));
62
- if (this.state.focusedIndex !== clampedIndex) {
63
- this.state.focusedIndex = clampedIndex;
64
- this.notifyListeners(['focusedIndex']);
65
- }
66
- }
67
- /**
68
- * 검색어 설정 및 필터링
69
- */
70
- setSearchValue(searchValue) {
71
- if (this.state.searchValue !== searchValue) {
72
- this.state.searchValue = searchValue;
73
- this.updateFilteredOptions();
74
- this.notifyListeners(['searchValue', 'filteredOptions']);
75
- }
76
- }
77
- /**
78
- * 전체 보기 토글
79
- */
80
- setShowAllItems(showAll) {
81
- if (this.state.showAllItems !== showAll) {
82
- this.state.showAllItems = showAll;
83
- this.updateFilteredOptions();
84
- this.notifyListeners(['showAllItems', 'filteredOptions']);
85
- }
86
- }
87
- /**
88
- * 선택된 값들을 직접 설정 (protected)
89
- */
90
- setSelectedValues(values) {
91
- this.state.selectedValues = [...values];
92
- this.notifyListeners(['selectedValues']);
93
- }
94
- /**
95
- * 옵션 선택/해제
96
- */
97
- toggleOption(optionId) {
98
- const currentValues = [...this.state.selectedValues];
99
- if (this.multiple) {
100
- const index = currentValues.indexOf(optionId);
101
- if (index > -1) {
102
- currentValues.splice(index, 1);
103
- } else {
104
- currentValues.push(optionId);
105
- }
106
- } else {
107
- currentValues.length = 0;
108
- currentValues.push(optionId);
109
- }
110
- this.state.selectedValues = currentValues;
111
- this.notifyListeners(['selectedValues']);
112
- }
113
- /**
114
- * 옵션 업데이트
115
- */
116
- updateOptions(newOptions) {
117
- // 현재 상태 저장
118
- const wasOpen = this.state.isOpen;
119
- const wasShowAllItems = this.state.showAllItems;
120
- this.state.options = [...newOptions];
121
- this.state.selectedValues = this.state.selectedValues.filter(value => newOptions.some(opt => opt.id === value));
122
- // 드롭다운이 열려있었다면 상태 유지
123
- if (wasOpen) {
124
- this.state.isOpen = true;
125
- this.state.showAllItems = wasShowAllItems;
126
- }
127
- this.updateFilteredOptions();
128
- this.notifyListeners(['options', 'selectedValues', 'filteredOptions', 'isOpen', 'showAllItems']);
129
- }
130
- /**
131
- * 필터링된 옵션 업데이트
132
- */
133
- updateFilteredOptions() {
134
- this.state.filteredOptions = this.filterStrategy(this.state.options, this.state.searchValue, this.state.showAllItems);
135
- }
136
- /**
137
- * 현재 상태 반환 (읽기 전용)
138
- */
139
- getState() {
140
- return {
141
- ...this.state
142
- };
143
- }
144
- /**
145
- * 다중 선택 모드 여부 반환
146
- */
147
- isMultiple() {
148
- return this.multiple;
149
- }
150
- /**
151
- * 선택된 옵션들 반환
152
- */
153
- getSelectedOptions() {
154
- return this.state.options.filter(opt => this.state.selectedValues.includes(opt.id));
155
- }
156
- /**
157
- * 옵션이 선택되었는지 확인
158
- */
159
- isOptionSelected(optionId) {
160
- return this.state.selectedValues.includes(optionId);
161
- }
162
- /**
163
- * 상태 리셋
164
- */
165
- reset() {
166
- this.state.isOpen = false;
167
- this.state.focusedIndex = -1;
168
- this.state.selectedValues = [];
169
- this.state.searchValue = '';
170
- this.state.showAllItems = false;
171
- this.state.filteredOptions = [];
172
- this.notifyListeners(['isOpen', 'focusedIndex', 'selectedValues', 'searchValue', 'showAllItems', 'filteredOptions']);
173
- }
174
- /**
175
- * 전체 선택/해제 토글 (MultiSelectUtils에서 이동)
176
- */
177
- toggleSelectAll() {
178
- if (!this.multiple) return;
179
- const availableOptions = this.state.options.filter(opt => !opt.disabled);
180
- const allSelected = this.state.selectedValues.length === availableOptions.length;
181
- let newValue;
182
- if (allSelected) {
183
- newValue = [];
184
- } else {
185
- newValue = availableOptions.map(opt => opt.id);
186
- }
187
- this.state.selectedValues = newValue;
188
- this.notifyListeners(['selectedValues']);
189
- }
190
- /**
191
- * 전체 선택 버튼 텍스트 반환 (MultiSelectUtils에서 이동)
192
- */
193
- getSelectAllButtonText() {
194
- if (!this.multiple) return '전체 선택';
195
- return this.isAllItemsSelected() ? '전체 해제' : '전체 선택';
196
- }
197
- /**
198
- * 모든 항목이 선택되었는지 확인 (MultiSelectUtils에서 이동)
199
- */
200
- isAllItemsSelected() {
201
- if (!this.multiple) return false;
202
- const availableOptions = this.state.options.filter(opt => !opt.disabled);
203
- if (availableOptions.length === 0) return false;
204
- const availableIds = availableOptions.map(opt => opt.id);
205
- return availableIds.length > 0 && availableIds.every(id => this.state.selectedValues.includes(id));
206
- }
207
- /**
208
- * 검색 및 필터링 업데이트 (SearchFilterUtils에서 이동)
209
- */
210
- updateSearchAndFilter(searchValue) {
211
- let showAllItems = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
212
- this.state.searchValue = searchValue;
213
- this.state.showAllItems = showAllItems;
214
- this.updateFilteredOptions();
215
- this.notifyListeners(['searchValue', 'filteredOptions', 'showAllItems']);
216
- }
217
- /**
218
- * 검색어만 업데이트 (필터링 없이, API 모드용)
219
- */
220
- updateSearchValue(searchValue) {
221
- this.state.searchValue = searchValue;
222
- this.notifyListeners(['searchValue']);
223
- }
224
- /**
225
- * 드롭다운이 열릴 수 있는지 확인 (ComboBox용)
226
- */
227
- canOpenDropdown() {
228
- return this.state.showAllItems || this.state.searchValue.trim().length > 0;
229
- }
230
- /**
231
- * 검색 결과가 없는지 확인
232
- */
233
- hasNoResults() {
234
- return this.state.filteredOptions.length === 0 && (this.state.showAllItems || Boolean(this.state.searchValue));
235
- }
236
- /**
237
- * 값 설정 (API 호환성)
238
- */
239
- setValue(value) {
240
- const values = Array.isArray(value) ? value : [value];
241
- this.setSelectedValues(values);
242
- }
243
- /**
244
- * 값 가져오기 (API 호환성)
245
- */
246
- getValue() {
247
- return this.multiple ? this.state.selectedValues : this.state.selectedValues[0] || '';
248
- }
249
- /**
250
- * 입력 초기화 (ComboBox용)
251
- */
252
- clearInput() {
253
- this.updateSearchAndFilter('');
254
- }
255
- /**
256
- * 디버그 정보 (개발용)
257
- */
258
- getDebugInfo() {
259
- return {
260
- state: this.state,
261
- multiple: this.multiple,
262
- listeners: this.listeners.length
263
- };
264
- }
265
- }
266
- /** SelectBox 기본 전략: 항상 모든 옵션 표시 */
267
- DropdownModel.defaultFilterStrategy = options => [...options];
268
- /** ComboBox 전략: 검색어/전체보기 기반 필터링 */
269
- DropdownModel.comboBoxFilterStrategy = (options, searchValue, showAllItems) => {
270
- if (!showAllItems && !searchValue) {
271
- return [];
272
- }
273
- if (searchValue) {
274
- const searchLower = searchValue.toLowerCase();
275
- return options.filter(option => option.label.toLowerCase().includes(searchLower));
276
- }
277
- return [...options];
278
- };
279
- export { DropdownModel };