@ncds/ui-admin 1.3.0 → 1.5.0

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