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