@ncds/ui-admin 1.3.0 → 1.4.1

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 (368) hide show
  1. package/dist/cjs/assets/scripts/comboBox.js +262 -0
  2. package/dist/cjs/assets/scripts/datePicker.js +178 -60
  3. package/dist/cjs/assets/scripts/featuredIcon.js +95 -0
  4. package/dist/cjs/assets/scripts/fileInput/FileInput.js +183 -0
  5. package/dist/cjs/assets/scripts/fileInput/FileInputModel.js +246 -0
  6. package/dist/cjs/assets/scripts/fileInput/FileInputView.js +455 -0
  7. package/dist/cjs/assets/scripts/fileInput/const/classNames.js +35 -0
  8. package/dist/cjs/assets/scripts/fileInput/const/index.js +27 -0
  9. package/dist/cjs/assets/scripts/fileInput/const/types.js +13 -0
  10. package/dist/cjs/assets/scripts/fileInput/index.js +44 -0
  11. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +187 -0
  12. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +268 -0
  13. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +354 -0
  14. package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +41 -0
  15. package/dist/cjs/assets/scripts/imageFileInput/const/index.js +27 -0
  16. package/dist/cjs/assets/scripts/imageFileInput/const/types.js +13 -0
  17. package/dist/cjs/assets/scripts/imageFileInput/index.js +44 -0
  18. package/dist/cjs/assets/scripts/index.js +21 -1
  19. package/dist/cjs/assets/scripts/modal/Modal.js +116 -0
  20. package/dist/cjs/assets/scripts/modal/ModalActions.js +128 -0
  21. package/dist/cjs/assets/scripts/modal/ModalContent.js +46 -0
  22. package/dist/cjs/assets/scripts/modal/ModalHeader.js +115 -0
  23. package/dist/cjs/assets/scripts/modal/const/classNames.js +41 -0
  24. package/dist/cjs/assets/scripts/modal/const/index.js +27 -0
  25. package/dist/cjs/assets/scripts/modal/const/types.js +5 -0
  26. package/dist/cjs/assets/scripts/modal/index.js +61 -0
  27. package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +35 -0
  28. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +180 -0
  29. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +120 -0
  30. package/dist/cjs/assets/scripts/notification/Notification.js +113 -0
  31. package/dist/cjs/assets/scripts/notification/const/classNames.js +36 -0
  32. package/dist/cjs/assets/scripts/notification/const/icons.js +45 -0
  33. package/dist/cjs/assets/scripts/notification/const/index.js +74 -0
  34. package/dist/cjs/assets/scripts/notification/const/sizes.js +48 -0
  35. package/dist/cjs/assets/scripts/notification/const/types.js +5 -0
  36. package/dist/cjs/assets/scripts/notification/index.js +84 -0
  37. package/dist/cjs/assets/scripts/notification/utils.js +92 -0
  38. package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +272 -0
  39. package/dist/cjs/assets/scripts/progress-bar/index.js +12 -0
  40. package/dist/cjs/assets/scripts/selectBox.js +319 -0
  41. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +46 -0
  42. package/dist/cjs/assets/scripts/tag/Tag.js +268 -0
  43. package/dist/cjs/assets/scripts/tag/const/classNames.js +24 -0
  44. package/dist/cjs/assets/scripts/tag/const/index.js +38 -0
  45. package/dist/cjs/assets/scripts/tag/const/sizes.js +13 -0
  46. package/dist/cjs/assets/scripts/tag/const/types.js +5 -0
  47. package/dist/cjs/assets/scripts/tag/index.js +44 -0
  48. package/dist/cjs/assets/scripts/tooltip/Tooltip.js +380 -0
  49. package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +84 -0
  50. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +29 -0
  51. package/dist/cjs/assets/scripts/tooltip/const/constants.js +56 -0
  52. package/dist/cjs/assets/scripts/tooltip/const/icons.js +15 -0
  53. package/dist/cjs/assets/scripts/tooltip/const/index.js +123 -0
  54. package/dist/cjs/assets/scripts/tooltip/const/templates.js +49 -0
  55. package/dist/cjs/assets/scripts/tooltip/const/types.js +5 -0
  56. package/dist/cjs/assets/scripts/tooltip/index.js +57 -0
  57. package/dist/cjs/assets/scripts/tooltip/utils.js +41 -0
  58. package/dist/cjs/assets/scripts/utils/selectbox/DOMRenderer.js +384 -0
  59. package/dist/cjs/assets/scripts/utils/selectbox/DropdownModel.js +361 -0
  60. package/dist/cjs/assets/scripts/utils/selectbox/SelectBoxController.js +681 -0
  61. package/dist/cjs/assets/scripts/utils/selectbox/UnifiedSelectBox.js +677 -0
  62. package/dist/cjs/constant/color.js +2 -0
  63. package/dist/cjs/src/components/button/Button.js +9 -35
  64. package/dist/cjs/src/components/button/ButtonGroup.js +9 -10
  65. package/dist/cjs/src/components/checkbox/Checkbox.js +20 -19
  66. package/dist/cjs/src/components/checkbox/CheckboxInput.js +22 -45
  67. package/dist/cjs/src/components/combobox/ComboBox.js +337 -0
  68. package/dist/cjs/src/components/combobox/index.js +12 -0
  69. package/dist/cjs/src/components/date-picker/CustomInput.js +52 -0
  70. package/dist/cjs/src/components/date-picker/DatePicker.js +86 -23
  71. package/dist/cjs/src/components/date-picker/RangeDatePicker.js +1 -1
  72. package/dist/cjs/src/components/{input → file-upload}/FileInput.js +17 -9
  73. package/dist/cjs/src/components/file-upload/index.js +16 -0
  74. package/dist/cjs/src/components/image-file-input/ImageFileInput.js +263 -0
  75. package/dist/cjs/src/components/image-file-input/components/ImagePreview.js +44 -0
  76. package/dist/cjs/src/components/image-file-input/index.js +16 -0
  77. package/dist/cjs/src/components/index.js +44 -0
  78. package/dist/cjs/src/components/input/InputBase.js +54 -10
  79. package/dist/cjs/src/components/input/Textarea.js +12 -20
  80. package/dist/cjs/src/components/input/index.js +0 -11
  81. package/dist/cjs/src/components/modal/Modal.js +7 -3
  82. package/dist/cjs/src/components/notification/FloatingNotification.js +34 -3
  83. package/dist/cjs/src/components/notification/FullWidthNotification.js +54 -5
  84. package/dist/cjs/src/components/pagination/NavButton.js +1 -13
  85. package/dist/cjs/src/components/pagination/Pagination.js +6 -20
  86. package/dist/cjs/src/components/progress-bar/ProgressBar.js +89 -20
  87. package/dist/cjs/src/components/progress-bar/components/SegmentBar.js +25 -0
  88. package/dist/cjs/src/components/progress-bar/components/SegmentLabels.js +74 -0
  89. package/dist/cjs/src/components/progress-bar/hooks/useProgressBar.js +119 -0
  90. package/dist/cjs/src/components/progress-bar/index.js +11 -0
  91. package/dist/cjs/src/components/progress-bar/types.js +5 -0
  92. package/dist/cjs/src/components/progress-bar/utils.js +31 -0
  93. package/dist/cjs/src/components/radio/Radio.js +5 -6
  94. package/dist/cjs/src/components/select/Select.js +7 -4
  95. package/dist/cjs/src/components/select-dropdown/SelectDropdown.js +146 -0
  96. package/dist/cjs/src/components/select-dropdown/index.js +12 -0
  97. package/dist/cjs/src/components/selectbox/SelectBox.js +283 -0
  98. package/dist/cjs/src/components/selectbox/index.js +12 -0
  99. package/dist/cjs/src/components/shared/hintText/HintText.js +1 -1
  100. package/dist/cjs/src/components/switch/Switch.js +123 -0
  101. package/dist/cjs/src/components/switch/index.js +12 -0
  102. package/dist/cjs/src/components/tab/HorizontalTab.js +8 -20
  103. package/dist/cjs/src/components/tab/TabButton.js +33 -16
  104. package/dist/cjs/src/components/tab/VerticalTab.js +15 -30
  105. package/dist/cjs/src/components/tag/Tag.js +92 -3
  106. package/dist/cjs/src/components/tooltip/Tooltip.js +125 -28
  107. package/dist/cjs/src/hooks/dropdown/index.js +47 -0
  108. package/dist/cjs/src/hooks/dropdown/useDropdown.js +109 -0
  109. package/dist/cjs/src/hooks/dropdown/useDropdownKeyboard.js +131 -0
  110. package/dist/cjs/src/hooks/dropdown/useDropdownPosition.js +27 -0
  111. package/dist/cjs/src/hooks/dropdown/useOutsideClick.js +33 -0
  112. package/dist/cjs/src/hooks/dropdown/useScrollLock.js +78 -0
  113. package/dist/cjs/src/hooks/dropdown/useWindowResize.js +52 -0
  114. package/dist/cjs/src/hooks/index.js +18 -1
  115. package/dist/cjs/src/types/dropdown/dropdown.js +5 -0
  116. package/dist/cjs/src/types/dropdown/index.js +27 -0
  117. package/dist/cjs/src/types/dropdown/option.js +5 -0
  118. package/dist/cjs/src/types/index.js +16 -0
  119. package/dist/cjs/src/utils/date-picker.js +37 -1
  120. package/dist/cjs/src/utils/dropdown/dropdownUtils.js +107 -0
  121. package/dist/cjs/src/utils/dropdown/index.js +27 -0
  122. package/dist/cjs/src/utils/dropdown/multiSelect.js +100 -0
  123. package/dist/cjs/src/utils/index.js +27 -0
  124. package/dist/esm/assets/scripts/comboBox.js +257 -0
  125. package/dist/esm/assets/scripts/datePicker.js +175 -59
  126. package/dist/esm/assets/scripts/featuredIcon.js +90 -0
  127. package/dist/esm/assets/scripts/fileInput/FileInput.js +178 -0
  128. package/dist/esm/assets/scripts/fileInput/FileInputModel.js +241 -0
  129. package/dist/esm/assets/scripts/fileInput/FileInputView.js +450 -0
  130. package/dist/esm/assets/scripts/fileInput/const/classNames.js +25 -0
  131. package/dist/esm/assets/scripts/fileInput/const/index.js +2 -0
  132. package/dist/esm/assets/scripts/fileInput/const/types.js +7 -0
  133. package/dist/esm/assets/scripts/fileInput/index.js +9 -0
  134. package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +182 -0
  135. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +263 -0
  136. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +349 -0
  137. package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +30 -0
  138. package/dist/esm/assets/scripts/imageFileInput/const/index.js +2 -0
  139. package/dist/esm/assets/scripts/imageFileInput/const/types.js +7 -0
  140. package/dist/esm/assets/scripts/imageFileInput/index.js +9 -0
  141. package/dist/esm/assets/scripts/index.js +21 -1
  142. package/dist/esm/assets/scripts/modal/Modal.js +110 -0
  143. package/dist/esm/assets/scripts/modal/ModalActions.js +123 -0
  144. package/dist/esm/assets/scripts/modal/ModalContent.js +41 -0
  145. package/dist/esm/assets/scripts/modal/ModalHeader.js +110 -0
  146. package/dist/esm/assets/scripts/modal/const/classNames.js +31 -0
  147. package/dist/esm/assets/scripts/modal/const/index.js +2 -0
  148. package/dist/esm/assets/scripts/modal/const/types.js +1 -0
  149. package/dist/esm/assets/scripts/modal/index.js +15 -0
  150. package/dist/esm/assets/scripts/modal/utils/contentUtils.js +28 -0
  151. package/dist/esm/assets/scripts/notification/FloatingNotification.js +176 -0
  152. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +115 -0
  153. package/dist/esm/assets/scripts/notification/Notification.js +108 -0
  154. package/dist/esm/assets/scripts/notification/const/classNames.js +30 -0
  155. package/dist/esm/assets/scripts/notification/const/icons.js +39 -0
  156. package/dist/esm/assets/scripts/notification/const/index.js +3 -0
  157. package/dist/esm/assets/scripts/notification/const/sizes.js +42 -0
  158. package/dist/esm/assets/scripts/notification/const/types.js +1 -0
  159. package/dist/esm/assets/scripts/notification/index.js +10 -0
  160. package/dist/esm/assets/scripts/notification/utils.js +79 -0
  161. package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +267 -0
  162. package/dist/esm/assets/scripts/progress-bar/index.js +1 -0
  163. package/dist/esm/assets/scripts/selectBox.js +314 -0
  164. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +38 -0
  165. package/dist/esm/assets/scripts/tag/Tag.js +263 -0
  166. package/dist/esm/assets/scripts/tag/const/classNames.js +16 -0
  167. package/dist/esm/assets/scripts/tag/const/index.js +3 -0
  168. package/dist/esm/assets/scripts/tag/const/sizes.js +7 -0
  169. package/dist/esm/assets/scripts/tag/const/types.js +1 -0
  170. package/dist/esm/assets/scripts/tag/index.js +9 -0
  171. package/dist/esm/assets/scripts/tooltip/Tooltip.js +375 -0
  172. package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +79 -0
  173. package/dist/esm/assets/scripts/tooltip/const/classNames.js +23 -0
  174. package/dist/esm/assets/scripts/tooltip/const/constants.js +50 -0
  175. package/dist/esm/assets/scripts/tooltip/const/icons.js +9 -0
  176. package/dist/esm/assets/scripts/tooltip/const/index.js +4 -0
  177. package/dist/esm/assets/scripts/tooltip/const/templates.js +42 -0
  178. package/dist/esm/assets/scripts/tooltip/const/types.js +1 -0
  179. package/dist/esm/assets/scripts/tooltip/index.js +10 -0
  180. package/dist/esm/assets/scripts/tooltip/utils.js +35 -0
  181. package/dist/esm/assets/scripts/utils/selectbox/DOMRenderer.js +379 -0
  182. package/dist/esm/assets/scripts/utils/selectbox/DropdownModel.js +356 -0
  183. package/dist/esm/assets/scripts/utils/selectbox/SelectBoxController.js +676 -0
  184. package/dist/esm/assets/scripts/utils/selectbox/UnifiedSelectBox.js +672 -0
  185. package/dist/esm/constant/color.js +2 -0
  186. package/dist/esm/src/components/button/Button.js +10 -36
  187. package/dist/esm/src/components/button/ButtonGroup.js +9 -10
  188. package/dist/esm/src/components/checkbox/Checkbox.js +21 -19
  189. package/dist/esm/src/components/checkbox/CheckboxInput.js +24 -47
  190. package/dist/esm/src/components/combobox/ComboBox.js +330 -0
  191. package/dist/esm/src/components/combobox/index.js +1 -0
  192. package/dist/esm/src/components/date-picker/CustomInput.js +45 -0
  193. package/dist/esm/src/components/date-picker/DatePicker.js +87 -24
  194. package/dist/esm/src/components/date-picker/RangeDatePicker.js +1 -1
  195. package/dist/esm/src/components/{input → file-upload}/FileInput.js +17 -9
  196. package/dist/esm/src/components/file-upload/index.js +1 -0
  197. package/dist/esm/src/components/image-file-input/ImageFileInput.js +256 -0
  198. package/dist/esm/src/components/image-file-input/components/ImagePreview.js +37 -0
  199. package/dist/esm/src/components/image-file-input/index.js +1 -0
  200. package/dist/esm/src/components/index.js +4 -0
  201. package/dist/esm/src/components/input/InputBase.js +55 -11
  202. package/dist/esm/src/components/input/Textarea.js +12 -20
  203. package/dist/esm/src/components/input/index.js +1 -2
  204. package/dist/esm/src/components/modal/Modal.js +7 -3
  205. package/dist/esm/src/components/notification/FloatingNotification.js +35 -4
  206. package/dist/esm/src/components/notification/FullWidthNotification.js +55 -6
  207. package/dist/esm/src/components/pagination/NavButton.js +1 -13
  208. package/dist/esm/src/components/pagination/Pagination.js +6 -20
  209. package/dist/esm/src/components/progress-bar/ProgressBar.js +89 -20
  210. package/dist/esm/src/components/progress-bar/components/SegmentBar.js +18 -0
  211. package/dist/esm/src/components/progress-bar/components/SegmentLabels.js +66 -0
  212. package/dist/esm/src/components/progress-bar/hooks/useProgressBar.js +112 -0
  213. package/dist/esm/src/components/progress-bar/index.js +2 -1
  214. package/dist/esm/src/components/progress-bar/types.js +1 -0
  215. package/dist/esm/src/components/progress-bar/utils.js +22 -0
  216. package/dist/esm/src/components/radio/Radio.js +5 -5
  217. package/dist/esm/src/components/select/Select.js +7 -4
  218. package/dist/esm/src/components/select-dropdown/SelectDropdown.js +139 -0
  219. package/dist/esm/src/components/select-dropdown/index.js +1 -0
  220. package/dist/esm/src/components/selectbox/SelectBox.js +276 -0
  221. package/dist/esm/src/components/selectbox/index.js +1 -0
  222. package/dist/esm/src/components/shared/hintText/HintText.js +1 -1
  223. package/dist/esm/src/components/switch/Switch.js +116 -0
  224. package/dist/esm/src/components/switch/index.js +1 -0
  225. package/dist/esm/src/components/tab/HorizontalTab.js +7 -19
  226. package/dist/esm/src/components/tab/TabButton.js +34 -17
  227. package/dist/esm/src/components/tab/VerticalTab.js +15 -30
  228. package/dist/esm/src/components/tag/Tag.js +92 -3
  229. package/dist/esm/src/components/tooltip/Tooltip.js +125 -28
  230. package/dist/esm/src/hooks/dropdown/index.js +6 -0
  231. package/dist/esm/src/hooks/dropdown/useDropdown.js +102 -0
  232. package/dist/esm/src/hooks/dropdown/useDropdownKeyboard.js +124 -0
  233. package/dist/esm/src/hooks/dropdown/useDropdownPosition.js +20 -0
  234. package/dist/esm/src/hooks/dropdown/useOutsideClick.js +26 -0
  235. package/dist/esm/src/hooks/dropdown/useScrollLock.js +71 -0
  236. package/dist/esm/src/hooks/dropdown/useWindowResize.js +45 -0
  237. package/dist/esm/src/hooks/index.js +4 -1
  238. package/dist/esm/src/types/dropdown/dropdown.js +1 -0
  239. package/dist/esm/src/types/dropdown/index.js +2 -0
  240. package/dist/esm/src/types/dropdown/option.js +1 -0
  241. package/dist/esm/src/types/index.js +2 -0
  242. package/dist/esm/src/utils/date-picker.js +33 -1
  243. package/dist/esm/src/utils/dropdown/dropdownUtils.js +97 -0
  244. package/dist/esm/src/utils/dropdown/index.js +2 -0
  245. package/dist/esm/src/utils/dropdown/multiSelect.js +88 -0
  246. package/dist/esm/src/utils/index.js +4 -0
  247. package/dist/types/assets/scripts/comboBox.d.ts +79 -0
  248. package/dist/types/assets/scripts/datePicker.d.ts +16 -13
  249. package/dist/types/assets/scripts/featuredIcon.d.ts +23 -0
  250. package/dist/types/assets/scripts/fileInput/FileInput.d.ts +67 -0
  251. package/dist/types/assets/scripts/fileInput/FileInputModel.d.ts +70 -0
  252. package/dist/types/assets/scripts/fileInput/FileInputView.d.ts +77 -0
  253. package/dist/types/assets/scripts/fileInput/const/classNames.d.ts +17 -0
  254. package/dist/types/assets/scripts/fileInput/const/index.d.ts +3 -0
  255. package/dist/types/assets/scripts/fileInput/const/types.d.ts +132 -0
  256. package/dist/types/assets/scripts/fileInput/index.d.ts +4 -0
  257. package/dist/types/assets/scripts/imageFileInput/ImageFileInput.d.ts +64 -0
  258. package/dist/types/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +74 -0
  259. package/dist/types/assets/scripts/imageFileInput/ImageFileInputView.d.ts +80 -0
  260. package/dist/types/assets/scripts/imageFileInput/const/classNames.d.ts +20 -0
  261. package/dist/types/assets/scripts/imageFileInput/const/index.d.ts +3 -0
  262. package/dist/types/assets/scripts/imageFileInput/const/types.d.ts +126 -0
  263. package/dist/types/assets/scripts/imageFileInput/index.d.ts +4 -0
  264. package/dist/types/assets/scripts/index.d.ts +28 -2
  265. package/dist/types/assets/scripts/modal/Modal.d.ts +28 -0
  266. package/dist/types/assets/scripts/modal/ModalActions.d.ts +19 -0
  267. package/dist/types/assets/scripts/modal/ModalContent.d.ts +14 -0
  268. package/dist/types/assets/scripts/modal/ModalHeader.d.ts +16 -0
  269. package/dist/types/assets/scripts/modal/const/classNames.d.ts +23 -0
  270. package/dist/types/assets/scripts/modal/const/index.d.ts +3 -0
  271. package/dist/types/assets/scripts/modal/const/types.d.ts +62 -0
  272. package/dist/types/assets/scripts/modal/index.d.ts +8 -0
  273. package/dist/types/assets/scripts/modal/utils/contentUtils.d.ts +11 -0
  274. package/dist/types/assets/scripts/notification/FloatingNotification.d.ts +25 -0
  275. package/dist/types/assets/scripts/notification/FullWidthNotification.d.ts +22 -0
  276. package/dist/types/assets/scripts/notification/Notification.d.ts +22 -0
  277. package/dist/types/assets/scripts/notification/const/classNames.d.ts +30 -0
  278. package/dist/types/assets/scripts/notification/const/icons.d.ts +26 -0
  279. package/dist/types/assets/scripts/notification/const/index.d.ts +5 -0
  280. package/dist/types/assets/scripts/notification/const/sizes.d.ts +28 -0
  281. package/dist/types/assets/scripts/notification/const/types.d.ts +19 -0
  282. package/dist/types/assets/scripts/notification/index.d.ts +7 -0
  283. package/dist/types/assets/scripts/notification/utils.d.ts +9 -0
  284. package/dist/types/assets/scripts/progress-bar/ProgressBar.d.ts +68 -0
  285. package/dist/types/assets/scripts/progress-bar/index.d.ts +2 -0
  286. package/dist/types/assets/scripts/selectBox.d.ts +77 -0
  287. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +6 -0
  288. package/dist/types/assets/scripts/tag/Tag.d.ts +28 -0
  289. package/dist/types/assets/scripts/tag/const/classNames.d.ts +12 -0
  290. package/dist/types/assets/scripts/tag/const/index.d.ts +4 -0
  291. package/dist/types/assets/scripts/tag/const/sizes.d.ts +8 -0
  292. package/dist/types/assets/scripts/tag/const/types.d.ts +34 -0
  293. package/dist/types/assets/scripts/tag/index.d.ts +4 -0
  294. package/dist/types/assets/scripts/tooltip/Tooltip.d.ts +55 -0
  295. package/dist/types/assets/scripts/tooltip/TooltipLayerManager.d.ts +22 -0
  296. package/dist/types/assets/scripts/tooltip/const/classNames.d.ts +18 -0
  297. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +34 -0
  298. package/dist/types/assets/scripts/tooltip/const/icons.d.ts +5 -0
  299. package/dist/types/assets/scripts/tooltip/const/index.d.ts +6 -0
  300. package/dist/types/assets/scripts/tooltip/const/templates.d.ts +17 -0
  301. package/dist/types/assets/scripts/tooltip/const/types.d.ts +15 -0
  302. package/dist/types/assets/scripts/tooltip/index.d.ts +7 -0
  303. package/dist/types/assets/scripts/tooltip/utils.d.ts +3 -0
  304. package/dist/types/assets/scripts/utils/selectbox/DOMRenderer.d.ts +108 -0
  305. package/dist/types/assets/scripts/utils/selectbox/DropdownModel.d.ts +154 -0
  306. package/dist/types/assets/scripts/utils/selectbox/SelectBoxController.d.ts +171 -0
  307. package/dist/types/assets/scripts/utils/selectbox/UnifiedSelectBox.d.ts +80 -0
  308. package/dist/types/constant/color.d.ts +3 -1
  309. package/dist/types/src/components/button/Button.d.ts +14 -12
  310. package/dist/types/src/components/button/ButtonGroup.d.ts +4 -289
  311. package/dist/types/src/components/checkbox/Checkbox.d.ts +2 -3
  312. package/dist/types/src/components/combobox/ComboBox.d.ts +28 -0
  313. package/dist/types/src/components/combobox/index.d.ts +3 -0
  314. package/dist/types/src/components/date-picker/CustomInput.d.ts +12 -0
  315. package/dist/types/src/components/date-picker/DatePicker.d.ts +2 -0
  316. package/dist/types/src/components/{input → file-upload}/FileInput.d.ts +1 -1
  317. package/dist/types/src/components/file-upload/index.d.ts +2 -0
  318. package/dist/types/src/components/image-file-input/ImageFileInput.d.ts +78 -0
  319. package/dist/types/src/components/image-file-input/components/ImagePreview.d.ts +6 -0
  320. package/dist/types/src/components/image-file-input/index.d.ts +2 -0
  321. package/dist/types/src/components/index.d.ts +4 -0
  322. package/dist/types/src/components/input/InputBase.d.ts +2 -0
  323. package/dist/types/src/components/input/index.d.ts +0 -1
  324. package/dist/types/src/components/modal/Modal.d.ts +3 -2
  325. package/dist/types/src/components/notification/FloatingNotification.d.ts +5 -0
  326. package/dist/types/src/components/notification/FullWidthNotification.d.ts +15 -1
  327. package/dist/types/src/components/notification/Notification.d.ts +8 -2
  328. package/dist/types/src/components/pagination/NavButton.d.ts +1 -4
  329. package/dist/types/src/components/pagination/Pagination.d.ts +2 -13
  330. package/dist/types/src/components/progress-bar/ProgressBar.d.ts +2 -6
  331. package/dist/types/src/components/progress-bar/components/SegmentBar.d.ts +8 -0
  332. package/dist/types/src/components/progress-bar/components/SegmentLabels.d.ts +16 -0
  333. package/dist/types/src/components/progress-bar/hooks/useProgressBar.d.ts +14 -0
  334. package/dist/types/src/components/progress-bar/index.d.ts +1 -0
  335. package/dist/types/src/components/progress-bar/types.d.ts +16 -0
  336. package/dist/types/src/components/progress-bar/utils.d.ts +13 -0
  337. package/dist/types/src/components/radio/Radio.d.ts +2 -3
  338. package/dist/types/src/components/select/Select.d.ts +1 -4
  339. package/dist/types/src/components/select-dropdown/SelectDropdown.d.ts +28 -0
  340. package/dist/types/src/components/select-dropdown/index.d.ts +2 -0
  341. package/dist/types/src/components/selectbox/SelectBox.d.ts +25 -0
  342. package/dist/types/src/components/selectbox/index.d.ts +2 -0
  343. package/dist/types/src/components/switch/Switch.d.ts +22 -0
  344. package/dist/types/src/components/switch/index.d.ts +3 -0
  345. package/dist/types/src/components/tab/HorizontalTab.d.ts +1 -2
  346. package/dist/types/src/components/tab/TabButton.d.ts +9 -12
  347. package/dist/types/src/components/tab/VerticalTab.d.ts +2 -2
  348. package/dist/types/src/components/tag/Tag.d.ts +3 -1
  349. package/dist/types/src/components/tooltip/Tooltip.d.ts +4 -2
  350. package/dist/types/src/hooks/dropdown/index.d.ts +7 -0
  351. package/dist/types/src/hooks/dropdown/useDropdown.d.ts +30 -0
  352. package/dist/types/src/hooks/dropdown/useDropdownKeyboard.d.ts +11 -0
  353. package/dist/types/src/hooks/dropdown/useDropdownPosition.d.ts +10 -0
  354. package/dist/types/src/hooks/dropdown/useOutsideClick.d.ts +6 -0
  355. package/dist/types/src/hooks/dropdown/useScrollLock.d.ts +5 -0
  356. package/dist/types/src/hooks/dropdown/useWindowResize.d.ts +8 -0
  357. package/dist/types/src/hooks/index.d.ts +2 -1
  358. package/dist/types/src/types/dropdown/dropdown.d.ts +40 -0
  359. package/dist/types/src/types/dropdown/index.d.ts +3 -0
  360. package/dist/types/src/types/dropdown/option.d.ts +20 -0
  361. package/dist/types/src/types/index.d.ts +2 -0
  362. package/dist/types/src/utils/date-picker.d.ts +3 -0
  363. package/dist/types/src/utils/dropdown/dropdownUtils.d.ts +18 -0
  364. package/dist/types/src/utils/dropdown/index.d.ts +3 -0
  365. package/dist/types/src/utils/dropdown/multiSelect.d.ts +32 -0
  366. package/dist/types/src/utils/index.d.ts +3 -0
  367. package/dist/ui-admin/assets/styles/style.css +1744 -358
  368. package/package.json +8 -4
@@ -0,0 +1,672 @@
1
+ var __assign = this && this.__assign || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
6
+ }
7
+ return t;
8
+ };
9
+ return __assign.apply(this, arguments);
10
+ };
11
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) {
13
+ return value instanceof P ? value : new P(function (resolve) {
14
+ resolve(value);
15
+ });
16
+ }
17
+ return new (P || (P = Promise))(function (resolve, reject) {
18
+ function fulfilled(value) {
19
+ try {
20
+ step(generator.next(value));
21
+ } catch (e) {
22
+ reject(e);
23
+ }
24
+ }
25
+ function rejected(value) {
26
+ try {
27
+ step(generator["throw"](value));
28
+ } catch (e) {
29
+ reject(e);
30
+ }
31
+ }
32
+ function step(result) {
33
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
34
+ }
35
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
36
+ });
37
+ };
38
+ var __generator = this && this.__generator || function (thisArg, body) {
39
+ var _ = {
40
+ label: 0,
41
+ sent: function () {
42
+ if (t[0] & 1) throw t[1];
43
+ return t[1];
44
+ },
45
+ trys: [],
46
+ ops: []
47
+ },
48
+ f,
49
+ y,
50
+ t,
51
+ g;
52
+ return g = {
53
+ next: verb(0),
54
+ "throw": verb(1),
55
+ "return": verb(2)
56
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
57
+ return this;
58
+ }), g;
59
+ function verb(n) {
60
+ return function (v) {
61
+ return step([n, v]);
62
+ };
63
+ }
64
+ function step(op) {
65
+ if (f) throw new TypeError("Generator is already executing.");
66
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
67
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
68
+ if (y = 0, t) op = [op[0] & 2, t.value];
69
+ switch (op[0]) {
70
+ case 0:
71
+ case 1:
72
+ t = op;
73
+ break;
74
+ case 4:
75
+ _.label++;
76
+ return {
77
+ value: op[1],
78
+ done: false
79
+ };
80
+ case 5:
81
+ _.label++;
82
+ y = op[1];
83
+ op = [0];
84
+ continue;
85
+ case 7:
86
+ op = _.ops.pop();
87
+ _.trys.pop();
88
+ continue;
89
+ default:
90
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
91
+ _ = 0;
92
+ continue;
93
+ }
94
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
95
+ _.label = op[1];
96
+ break;
97
+ }
98
+ if (op[0] === 6 && _.label < t[1]) {
99
+ _.label = t[1];
100
+ t = op;
101
+ break;
102
+ }
103
+ if (t && _.label < t[2]) {
104
+ _.label = t[2];
105
+ _.ops.push(op);
106
+ break;
107
+ }
108
+ if (t[2]) _.ops.pop();
109
+ _.trys.pop();
110
+ continue;
111
+ }
112
+ op = body.call(thisArg, _);
113
+ } catch (e) {
114
+ op = [6, e];
115
+ y = 0;
116
+ } finally {
117
+ f = t = 0;
118
+ }
119
+ if (op[0] & 5) throw op[1];
120
+ return {
121
+ value: op[0] ? op[1] : void 0,
122
+ done: true
123
+ };
124
+ }
125
+ };
126
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
127
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
128
+ if (ar || !(i in from)) {
129
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
130
+ ar[i] = from[i];
131
+ }
132
+ }
133
+ return to.concat(ar || Array.prototype.slice.call(from));
134
+ };
135
+ import { DOMRenderer } from './DOMRenderer';
136
+ import { DropdownModel } from './DropdownModel';
137
+ import { SelectBoxController } from './SelectBoxController';
138
+ /**
139
+ * 통합된 SelectBox 클래스
140
+ * SelectBox와 ComboBox의 기능을 모두 포함
141
+ */
142
+ var UnifiedSelectBox = /** @class */function () {
143
+ function UnifiedSelectBox(element, config) {
144
+ if (config === void 0) {
145
+ config = {};
146
+ }
147
+ var _a;
148
+ this.lastSearchValue = ''; // 이전 검색어 추적 (API 모드에서 옵션 교체를 위해)
149
+ this.hasInitialOptions = false; // 초기 옵션이 있는지 여부 (select 태그 등)
150
+ this.element = element;
151
+ this.config = __assign(__assign({
152
+ options: [],
153
+ placeholder: config.type === 'combobox' ? '검색하세요' : '선택하세요',
154
+ maxHeight: 275,
155
+ disabled: false,
156
+ size: 'md',
157
+ multiple: false,
158
+ showFooterButtons: false,
159
+ required: false,
160
+ type: 'selectbox'
161
+ }, config), {
162
+ searchDebounceMs: (_a = config.searchDebounceMs) !== null && _a !== void 0 ? _a : 500
163
+ });
164
+ this.initialize();
165
+ }
166
+ UnifiedSelectBox.prototype.initialize = function () {
167
+ this.element.innerHTML = '';
168
+ this.setupElementClasses();
169
+ // 초기 옵션이 있는지 확인 (select 태그 등에서 파싱된 옵션이 있는 경우)
170
+ this.hasInitialOptions = this.config.options && this.config.options.length > 0 || false;
171
+ this.model = new DropdownModel(this.config.options || [], this.config.multiple || false);
172
+ // ComboBox 타입인 경우 모델에 설정
173
+ if (this.config.type === 'combobox') {
174
+ this.model.setComboBoxMode(true);
175
+ }
176
+ this.renderer = new DOMRenderer();
177
+ this.createUI();
178
+ this.setupController();
179
+ if (this.config.value) {
180
+ this.model.setValue(this.config.value);
181
+ }
182
+ };
183
+ UnifiedSelectBox.prototype.setupElementClasses = function () {
184
+ var baseClass = this.config.type === 'combobox' ? 'ncua-combobox' : 'ncua-selectbox';
185
+ this.element.className = "".concat(baseClass, " ").concat(baseClass, "--").concat(this.config.size);
186
+ if (this.config.disabled) {
187
+ this.element.classList.add("".concat(baseClass, "--disabled"));
188
+ }
189
+ if (this.config.multiple) {
190
+ this.element.classList.add("".concat(baseClass, "--multiple"));
191
+ }
192
+ };
193
+ UnifiedSelectBox.prototype.createUI = function () {
194
+ if (this.config.type === 'combobox') {
195
+ this.createComboBoxUI();
196
+ } else {
197
+ this.createSelectBoxUI();
198
+ }
199
+ };
200
+ UnifiedSelectBox.prototype.createComboBoxUI = function () {
201
+ var _this = this;
202
+ // 컨텐츠 컨테이너
203
+ var content = DOMRenderer.createElementWithClass('div', 'ncua-combobox__content');
204
+ this.element.appendChild(content);
205
+ // 입력 필드 생성
206
+ this.inputField = this.renderer.createInputField({
207
+ placeholder: this.config.placeholder || '검색하세요',
208
+ disabled: this.config.disabled || false,
209
+ size: this.config.size || 'md',
210
+ showSearchIcon: true,
211
+ onInput: function (value) {
212
+ return _this.handleInput(value);
213
+ },
214
+ onClick: function () {
215
+ return _this.handleInputClick();
216
+ },
217
+ onClear: function () {
218
+ return _this.handleClearInput();
219
+ },
220
+ onShowAll: function () {
221
+ return _this.handleShowAll();
222
+ }
223
+ });
224
+ content.appendChild(this.inputField.container);
225
+ this.triggerElement = this.inputField.input;
226
+ // 드롭다운 생성
227
+ this.createDropdown(content);
228
+ };
229
+ UnifiedSelectBox.prototype.createSelectBoxUI = function () {
230
+ // 트리거 생성
231
+ var trigger = DOMRenderer.createElementWithClass('div', 'ncua-selectbox__content');
232
+ trigger.setAttribute('tabindex', this.config.disabled ? '-1' : '0');
233
+ trigger.setAttribute('role', 'combobox');
234
+ trigger.setAttribute('aria-expanded', 'false');
235
+ trigger.setAttribute('aria-haspopup', 'listbox');
236
+ var valueSpan = DOMRenderer.createElementWithClass('span', 'ncua-selectbox__value', this.config.placeholder);
237
+ var arrow = DOMRenderer.createSvgIcon('chevron-down', this.config.size === 'xs' ? 14 : 16);
238
+ arrow.classList.add('ncua-selectbox__arrow');
239
+ trigger.appendChild(valueSpan);
240
+ trigger.appendChild(arrow);
241
+ this.element.appendChild(trigger);
242
+ this.triggerElement = trigger;
243
+ this.arrowElement = arrow;
244
+ // 드롭다운 생성
245
+ this.createDropdown(this.element);
246
+ };
247
+ UnifiedSelectBox.prototype.createDropdown = function (parent) {
248
+ var _this = this;
249
+ var dropdownStructure = this.renderer.createDropdownStructure({
250
+ maxHeight: this.config.maxHeight || 275,
251
+ size: this.config.size || 'md',
252
+ listboxId: "selectbox-".concat(Date.now()),
253
+ noResultsText: '일치하는 결과가 없습니다.'
254
+ });
255
+ this.dropdownElement = dropdownStructure.dropdown;
256
+ // SelectBox 단일 선택 모드일 때 특별한 클래스 추가
257
+ if (this.config.type === 'selectbox' && !this.config.multiple) {
258
+ this.dropdownElement.classList.add('ncua-select-dropdown--selectbox-single');
259
+ }
260
+ // 다중 선택 모드일 때 클래스 추가
261
+ if (this.config.multiple) {
262
+ this.dropdownElement.classList.add('ncua-select-dropdown--multiple');
263
+ }
264
+ parent.appendChild(this.dropdownElement);
265
+ // 푸터 버튼 추가 (필요한 경우)
266
+ if (this.config.multiple || this.config.showFooterButtons) {
267
+ this.footerElement = this.renderer.createFooter({
268
+ multiple: this.config.multiple,
269
+ showFooterButtons: this.config.showFooterButtons,
270
+ selectAllButtonText: this.model.getSelectAllButtonText(),
271
+ onSelectAll: function () {
272
+ return _this.handleSelectAll();
273
+ },
274
+ onEdit: this.config.onEdit ? function () {
275
+ var _a, _b;
276
+ return (_b = (_a = _this.config).onEdit) === null || _b === void 0 ? void 0 : _b.call(_a);
277
+ } : undefined,
278
+ onComplete: function () {
279
+ return _this.handleComplete();
280
+ }
281
+ });
282
+ this.dropdownElement.appendChild(this.footerElement);
283
+ }
284
+ };
285
+ UnifiedSelectBox.prototype.setupController = function () {
286
+ var _this = this;
287
+ if (!this.triggerElement || !this.dropdownElement) {
288
+ throw new Error('Trigger or dropdown element not found');
289
+ }
290
+ var controllerConfig = {
291
+ triggerElement: this.triggerElement,
292
+ dropdownElement: this.dropdownElement,
293
+ model: this.model,
294
+ renderer: this.renderer,
295
+ renderConfig: {
296
+ maxHeight: this.config.maxHeight || 275,
297
+ size: this.config.size || 'md',
298
+ listboxId: "selectbox-".concat(Date.now()),
299
+ noResultsText: '일치하는 결과가 없습니다.'
300
+ },
301
+ onOpen: function () {
302
+ var baseClass = _this.config.type === 'combobox' ? 'ncua-combobox' : 'ncua-selectbox';
303
+ _this.element.classList.add("".concat(baseClass, "--open"));
304
+ if (_this.triggerElement) {
305
+ _this.triggerElement.setAttribute('aria-expanded', 'true');
306
+ }
307
+ // 화살표 아이콘 회전 (selectbox 타입일 때만)
308
+ if (_this.config.type === 'selectbox' && _this.arrowElement) {
309
+ _this.arrowElement.classList.add('ncua-selectbox__arrow--up');
310
+ }
311
+ },
312
+ onClose: function () {
313
+ var baseClass = _this.config.type === 'combobox' ? 'ncua-combobox' : 'ncua-selectbox';
314
+ _this.element.classList.remove("".concat(baseClass, "--open"));
315
+ if (_this.triggerElement) {
316
+ _this.triggerElement.setAttribute('aria-expanded', 'false');
317
+ }
318
+ // 화살표 아이콘 원래대로 (selectbox 타입일 때만)
319
+ if (_this.config.type === 'selectbox' && _this.arrowElement) {
320
+ _this.arrowElement.classList.remove('ncua-selectbox__arrow--up');
321
+ }
322
+ },
323
+ onSelectionChange: function (selectedValues) {
324
+ _this.handleSelectionChange(selectedValues);
325
+ },
326
+ onSearch: function (searchValue) {
327
+ var _a, _b;
328
+ (_b = (_a = _this.config).onSearch) === null || _b === void 0 ? void 0 : _b.call(_a, searchValue);
329
+ },
330
+ onScrollBottom: this.config.onScrollBottom,
331
+ disabled: this.config.disabled || false,
332
+ canToggle: function () {
333
+ return _this.canToggleDropdown();
334
+ },
335
+ type: this.config.type // 타입 정보 전달
336
+ };
337
+ this.controller = new SelectBoxController(controllerConfig);
338
+ };
339
+ // 이벤트 핸들러들
340
+ UnifiedSelectBox.prototype.handleInput = function (value) {
341
+ var _this = this;
342
+ var _a, _b;
343
+ // 기존 디바운스 타이머 제거
344
+ if (this.searchDebounceTimer) {
345
+ clearTimeout(this.searchDebounceTimer);
346
+ this.searchDebounceTimer = undefined;
347
+ }
348
+ // 필터링은 즉시 업데이트 (사용자가 입력하는 동안 필터링 결과를 즉시 보여줌)
349
+ // 하지만 onSearch 콜백은 디바운싱 적용
350
+ var isApiMode = this.config.type === 'combobox' && !this.hasInitialOptions;
351
+ if (isApiMode) {
352
+ // 텍스트가 변경되었거나 비워졌으면 즉시 옵션 완전히 제거
353
+ if (this.lastSearchValue !== value) {
354
+ if (!value.trim()) {
355
+ // 검색어가 비워졌으면 옵션 완전히 비우기
356
+ this.model.updateOptions([]);
357
+ } else {
358
+ // 검색어가 변경되었으면 이전 옵션 즉시 제거
359
+ this.model.updateOptions([]);
360
+ }
361
+ this.lastSearchValue = value;
362
+ }
363
+ }
364
+ // 디바운싱이 설정되어 있으면 입력이 멈춘 후 onSearch 콜백만 실행
365
+ if (this.config.searchDebounceMs > 0) {
366
+ // 새로운 타이머 ID 생성 (각 타이머를 고유하게 식별)
367
+ var timerId_1 = Date.now() + Math.random();
368
+ this.currentDebounceTimerId = timerId_1;
369
+ this.searchDebounceTimer = window.setTimeout(function () {
370
+ var _a, _b;
371
+ // 타이머가 취소되었는지 확인 (다른 타이머가 시작되었으면 현재 타이머는 무시)
372
+ if (_this.currentDebounceTimerId !== timerId_1) {
373
+ return; // 이 타이머는 취소되었으므로 실행하지 않음
374
+ }
375
+ // 타이머가 여전히 유효하면 실행
376
+ _this.searchDebounceTimer = undefined;
377
+ _this.currentDebounceTimerId = undefined;
378
+ // API 모드인 경우 필터링 업데이트 (디바운싱 후 실행)
379
+ if (isApiMode) {
380
+ _this.model.updateSearchAndFilter(value);
381
+ }
382
+ // 텍스트가 있을 때만 드롭다운 열기
383
+ if (value.trim()) {
384
+ _this.controller.open();
385
+ } else if (!_this.model.getState().showAllItems) {
386
+ _this.controller.close();
387
+ }
388
+ // onSearch 콜백 호출 (디바운싱 적용, 최종 타이머만 실행)
389
+ (_b = (_a = _this.config).onSearch) === null || _b === void 0 ? void 0 : _b.call(_a, value);
390
+ }, this.config.searchDebounceMs);
391
+ } else {
392
+ // 디바운싱이 0으로 명시적으로 설정되었으면 즉시 실행
393
+ this.model.updateSearchAndFilter(value);
394
+ // 텍스트가 있거나 옵션이 있으면 드롭다운 열기
395
+ var hasOptions = this.model.getState().options.length > 0 || this.model.getState().filteredOptions.length > 0;
396
+ if (value.trim() || hasOptions) {
397
+ this.controller.open();
398
+ } else if (!this.model.getState().showAllItems) {
399
+ this.controller.close();
400
+ }
401
+ // onSearch 콜백 호출 (디바운싱 없음)
402
+ (_b = (_a = this.config).onSearch) === null || _b === void 0 ? void 0 : _b.call(_a, value);
403
+ }
404
+ };
405
+ UnifiedSelectBox.prototype.handleInputClick = function () {
406
+ var _a, _b;
407
+ if (!this.config.disabled) {
408
+ (_a = this.inputField) === null || _a === void 0 ? void 0 : _a.focus();
409
+ if (this.config.type === 'combobox') {
410
+ var currentInputValue = ((_b = this.inputField) === null || _b === void 0 ? void 0 : _b.input.value) || '';
411
+ if (currentInputValue.trim().length > 0 || this.model.getState().showAllItems) {
412
+ this.controller.open();
413
+ }
414
+ }
415
+ }
416
+ };
417
+ UnifiedSelectBox.prototype.handleClearInput = function () {
418
+ // input 필드 텍스트 지우기
419
+ if (this.inputField) {
420
+ this.inputField.setValue('');
421
+ }
422
+ // 모델의 검색값도 초기화
423
+ this.model.clearInput();
424
+ // ComboBox 타입이고 초기 옵션이 없는 경우 (API 모드)
425
+ // Clear 버튼 클릭 시 옵션도 완전히 비우기
426
+ var isApiMode = this.config.type === 'combobox' && !this.hasInitialOptions;
427
+ if (isApiMode) {
428
+ this.model.updateOptions([]);
429
+ this.lastSearchValue = '';
430
+ }
431
+ this.controller.close();
432
+ };
433
+ UnifiedSelectBox.prototype.handleShowAll = function () {
434
+ var _a, _b, _c, _d;
435
+ return __awaiter(this, void 0, void 0, function () {
436
+ var hasOptions;
437
+ return __generator(this, function (_e) {
438
+ switch (_e.label) {
439
+ case 0:
440
+ if (!!this.config.disabled) return [3 /*break*/, 2];
441
+ (_a = this.inputField) === null || _a === void 0 ? void 0 : _a.focus();
442
+ (_b = this.inputField) === null || _b === void 0 ? void 0 : _b.setValue('');
443
+ this.model.updateSearchAndFilter('', true);
444
+ // onSearchAll 콜백 호출 (async 함수일 경우를 대비해 Promise.resolve로 감싸서 처리)
445
+ return [4 /*yield*/, Promise.resolve((_d = (_c = this.config).onSearchAll) === null || _d === void 0 ? void 0 : _d.call(_c))];
446
+ case 1:
447
+ // onSearchAll 콜백 호출 (async 함수일 경우를 대비해 Promise.resolve로 감싸서 처리)
448
+ _e.sent();
449
+ hasOptions = this.model.getState().options.length > 0 || this.model.getState().filteredOptions.length > 0;
450
+ if (hasOptions) {
451
+ this.controller.open();
452
+ }
453
+ _e.label = 2;
454
+ case 2:
455
+ return [2 /*return*/];
456
+ }
457
+ });
458
+ });
459
+ };
460
+ UnifiedSelectBox.prototype.handleSelectionChange = function (selectedValues) {
461
+ var _a, _b;
462
+ var result = this.config.multiple ? selectedValues : selectedValues[0] || '';
463
+ (_b = (_a = this.config).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, result);
464
+ // UI 업데이트
465
+ if (this.config.type === 'selectbox') {
466
+ this.updateSelectBoxValue();
467
+ }
468
+ // 다중 선택인 경우 전체 선택 버튼 텍스트 업데이트
469
+ if (this.config.multiple) {
470
+ this.updateSelectAllButtonText();
471
+ }
472
+ // 단일 선택 시 드롭다운 닫기
473
+ if (!this.config.multiple && !this.config.showFooterButtons) {
474
+ this.controller.close();
475
+ }
476
+ };
477
+ UnifiedSelectBox.prototype.updateSelectBoxValue = function () {
478
+ var valueSpan = this.element.querySelector('.ncua-selectbox__value');
479
+ if (valueSpan) {
480
+ if (this.config.multiple) {
481
+ // Multiple 모드일 때는 항상 placeholder 표시
482
+ valueSpan.textContent = this.config.placeholder || '';
483
+ } else {
484
+ // Single 모드일 때는 선택된 옵션 또는 placeholder 표시
485
+ var selectedOptions = this.model.getSelectedOptions();
486
+ var selectedOption = selectedOptions[0];
487
+ valueSpan.textContent = selectedOption ? selectedOption.label : this.config.placeholder || '';
488
+ }
489
+ }
490
+ };
491
+ UnifiedSelectBox.prototype.canToggleDropdown = function () {
492
+ var _a;
493
+ if (this.config.type === 'combobox') {
494
+ // ComboBox의 경우: 인풋에 텍스트가 있으면 항상 토글 가능
495
+ var currentInputValue = ((_a = this.inputField) === null || _a === void 0 ? void 0 : _a.input.value) || '';
496
+ return currentInputValue.trim().length > 0 || this.model.getState().showAllItems;
497
+ }
498
+ return true; // SelectBox는 항상 토글 가능
499
+ };
500
+ // 푸터 버튼 핸들러들
501
+ UnifiedSelectBox.prototype.handleSelectAll = function () {
502
+ var _a, _b;
503
+ if (this.config.multiple) {
504
+ this.model.toggleSelectAll();
505
+ this.updateSelectAllButtonText();
506
+ // 외부 콜백 호출
507
+ (_b = (_a = this.config).onSelectAll) === null || _b === void 0 ? void 0 : _b.call(_a);
508
+ }
509
+ };
510
+ UnifiedSelectBox.prototype.handleComplete = function () {
511
+ var _a, _b, _c, _d;
512
+ if (this.config.multiple || this.config.type === 'combobox') {
513
+ var currentValues = this.model.getValue();
514
+ // SelectBox 타입이고 multiple 모드일 때만 onChange 콜백으로 현재 선택된 값들 전달
515
+ if (this.config.type === 'selectbox' && this.config.multiple && Array.isArray(currentValues)) {
516
+ (_b = (_a = this.config).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, currentValues);
517
+ }
518
+ (_d = (_c = this.config).onComplete) === null || _d === void 0 ? void 0 : _d.call(_c);
519
+ // ComboBox 타입인 경우에만 값 초기화 및 검색어 초기화
520
+ if (this.config.type === 'combobox') {
521
+ this.model.setValue([]);
522
+ if (this.inputField) {
523
+ this.inputField.setValue('');
524
+ }
525
+ this.model.clearInput();
526
+ var isApiMode = !this.hasInitialOptions;
527
+ if (isApiMode) {
528
+ this.model.updateOptions([]);
529
+ this.lastSearchValue = '';
530
+ }
531
+ }
532
+ this.controller.close();
533
+ }
534
+ };
535
+ UnifiedSelectBox.prototype.updateSelectAllButtonText = function () {
536
+ if (!this.config.multiple || !this.footerElement) return;
537
+ this.renderer.updateSelectAllButtonText(this.footerElement, this.model.getSelectAllButtonText());
538
+ };
539
+ // Public API
540
+ UnifiedSelectBox.prototype.getValues = function () {
541
+ var selectedIds = this.model.getValue();
542
+ var allOptions = this.getOptions();
543
+ // selectedIds가 배열이 아닌 경우 배열로 변환
544
+ var ids = Array.isArray(selectedIds) ? selectedIds : selectedIds ? [selectedIds] : [];
545
+ // 선택된 id에 해당하는 옵션 객체들을 찾아서 반환
546
+ return ids.map(function (id) {
547
+ return allOptions.find(function (opt) {
548
+ return opt.id === id;
549
+ });
550
+ }).filter(function (opt) {
551
+ return opt !== undefined;
552
+ });
553
+ };
554
+ UnifiedSelectBox.prototype.getOptions = function () {
555
+ return this.config.options || [];
556
+ };
557
+ UnifiedSelectBox.prototype.setValues = function (value) {
558
+ // 옵션 객체 배열에서 id 배열로 변환
559
+ var ids = value.map(function (option) {
560
+ return option.id;
561
+ });
562
+ // 단일 선택 모드인 경우 첫 번째 값만 사용
563
+ var finalIds = this.config.multiple ? ids : ids[0] || '';
564
+ this.model.setValue(finalIds);
565
+ if (this.config.type === 'selectbox') {
566
+ this.updateSelectBoxValue();
567
+ } else {
568
+ // ComboBox의 경우 input 필드도 업데이트
569
+ if (this.inputField) {
570
+ var isEmpty = value.length === 0;
571
+ if (isEmpty) {
572
+ // 빈 값으로 설정할 때 input 필드와 검색값 모두 비우기
573
+ this.inputField.setValue('');
574
+ this.model.updateSearchAndFilter('');
575
+ }
576
+ }
577
+ }
578
+ };
579
+ UnifiedSelectBox.prototype.updateOptions = function (newOptions) {
580
+ // config.options도 업데이트 (getOptions()가 이를 반환하므로)
581
+ this.config.options = __spreadArray([], newOptions, true);
582
+ this.model.updateOptions(newOptions);
583
+ this.controller.updateOptions(newOptions);
584
+ };
585
+ UnifiedSelectBox.prototype.setDisabled = function (disabled) {
586
+ var _a, _b;
587
+ this.config.disabled = disabled;
588
+ var baseClass = this.config.type === 'combobox' ? 'ncua-combobox' : 'ncua-selectbox';
589
+ var disabledClass = "".concat(baseClass, "--disabled");
590
+ this.element.classList.toggle(disabledClass, disabled);
591
+ if (this.controller) {
592
+ this.controller.setDisabled(disabled);
593
+ }
594
+ if (this.config.type === 'combobox') {
595
+ // 입력 필드 비활성화
596
+ if ((_a = this.inputField) === null || _a === void 0 ? void 0 : _a.input) {
597
+ this.inputField.input.disabled = disabled;
598
+ (_b = this.inputField.container) === null || _b === void 0 ? void 0 : _b.classList.toggle('is-disabled', disabled);
599
+ }
600
+ } else if (this.triggerElement) {
601
+ this.triggerElement.setAttribute('tabindex', disabled ? '-1' : '0');
602
+ }
603
+ };
604
+ UnifiedSelectBox.prototype.open = function () {
605
+ this.controller.open();
606
+ };
607
+ UnifiedSelectBox.prototype.close = function () {
608
+ this.controller.close();
609
+ };
610
+ UnifiedSelectBox.prototype.focus = function () {
611
+ var _a, _b;
612
+ if (this.config.type === 'combobox') {
613
+ (_a = this.inputField) === null || _a === void 0 ? void 0 : _a.focus();
614
+ } else {
615
+ (_b = this.triggerElement) === null || _b === void 0 ? void 0 : _b.focus();
616
+ }
617
+ };
618
+ UnifiedSelectBox.prototype.destroy = function () {
619
+ // 디바운스 타이머 정리
620
+ if (this.searchDebounceTimer) {
621
+ clearTimeout(this.searchDebounceTimer);
622
+ this.searchDebounceTimer = undefined;
623
+ }
624
+ this.currentDebounceTimerId = undefined;
625
+ this.controller.destroy();
626
+ this.renderer.clearCache();
627
+ this.inputField = undefined;
628
+ };
629
+ // Multiple 모드 전용 메서드들
630
+ UnifiedSelectBox.prototype.selectAll = function () {
631
+ var _a;
632
+ if (this.config.multiple) {
633
+ var allOptionIds = ((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.map(function (option) {
634
+ return option.id;
635
+ })) || [];
636
+ this.model.setValue(allOptionIds);
637
+ }
638
+ };
639
+ UnifiedSelectBox.prototype.deselectAll = function () {
640
+ if (this.config.multiple) {
641
+ this.model.setValue([]);
642
+ }
643
+ };
644
+ UnifiedSelectBox.prototype.isMultiple = function () {
645
+ return this.config.multiple || false;
646
+ };
647
+ UnifiedSelectBox.prototype.toggleSelectAll = function () {
648
+ var _a;
649
+ if (!this.config.multiple) return;
650
+ var currentValues = this.model.getValue();
651
+ var allOptionIds = ((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.map(function (option) {
652
+ return option.id;
653
+ })) || [];
654
+ if (Array.isArray(currentValues) && currentValues.length === allOptionIds.length) {
655
+ // 모든 옵션이 선택되어 있으면 전체 해제
656
+ this.deselectAll();
657
+ } else {
658
+ // 일부만 선택되어 있거나 아무것도 선택되지 않았으면 전체 선택
659
+ this.selectAll();
660
+ }
661
+ };
662
+ // 디버깅용
663
+ UnifiedSelectBox.prototype.getDebugInfo = function () {
664
+ return {
665
+ config: this.config,
666
+ modelState: this.model.getDebugInfo(),
667
+ isOpen: this.model.getState().isOpen
668
+ };
669
+ };
670
+ return UnifiedSelectBox;
671
+ }();
672
+ export { UnifiedSelectBox };
@@ -17,6 +17,8 @@ export var COLOR = {
17
17
  pink100: '#fce7f6',
18
18
  pink600: '#c11574',
19
19
  yellow600: '#c27004',
20
+ violet300: '#C3B5FD',
21
+ violet600: '#5720B7',
20
22
  white: '#fff',
21
23
  currentColor: 'currentColor',
22
24
  black: '',