@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,123 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CLASS_NAMES", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _classNames.CLASS_NAMES;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "CSS_TEMPLATES", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _templates.CSS_TEMPLATES;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "DEFAULT_TOOLTIP_HEIGHT", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _constants.DEFAULT_TOOLTIP_HEIGHT;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "DEFAULT_TOOLTIP_WIDTH", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _constants.DEFAULT_TOOLTIP_WIDTH;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "EVENT_OPTIONS", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _constants.EVENT_OPTIONS;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "FALLBACK_ICON_SVG", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _templates.FALLBACK_ICON_SVG;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "HTML_TEMPLATES", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _templates.HTML_TEMPLATES;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "ICON_SIZES", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _constants.ICON_SIZES;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "MARGIN", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _constants.MARGIN;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "OFFSCREEN_POSITION", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _constants.OFFSCREEN_POSITION;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "OPACITY", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _constants.OPACITY;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "POSITION", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _constants.POSITION;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "POSITION_PRIORITY", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _constants.POSITION_PRIORITY;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "SVG_ICONS", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _icons.SVG_ICONS;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "TOOLTIP_DEFAULT_VALUE", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _constants.TOOLTIP_DEFAULT_VALUE;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "TOOLTIP_OFFSET", {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _constants.TOOLTIP_OFFSET;
100
+ }
101
+ });
102
+ Object.defineProperty(exports, "TRANSITION_DURATION", {
103
+ enumerable: true,
104
+ get: function () {
105
+ return _constants.TRANSITION_DURATION;
106
+ }
107
+ });
108
+ Object.defineProperty(exports, "VIEWPORT_MARGIN", {
109
+ enumerable: true,
110
+ get: function () {
111
+ return _constants.VIEWPORT_MARGIN;
112
+ }
113
+ });
114
+ Object.defineProperty(exports, "Z_INDEX", {
115
+ enumerable: true,
116
+ get: function () {
117
+ return _constants.Z_INDEX;
118
+ }
119
+ });
120
+ var _icons = require("./icons");
121
+ var _classNames = require("./classNames");
122
+ var _constants = require("./constants");
123
+ var _templates = require("./templates");
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HTML_TEMPLATES = exports.FALLBACK_ICON_SVG = exports.CSS_TEMPLATES = void 0;
7
+ var _constants = require("./constants");
8
+ /**
9
+ * 툴팁 관련 CSS 및 HTML 템플릿
10
+ */
11
+ // CSS 템플릿
12
+ var CSS_TEMPLATES = exports.CSS_TEMPLATES = {
13
+ // 레이어 컨테이너 스타일 (클릭 통과)
14
+ LAYER_CONTAINER: function (zIndex) {
15
+ return "\n position: fixed;\n inset: 0;\n pointer-events: none;\n z-index: ".concat(zIndex, ";\n display: block;\n ");
16
+ },
17
+ // 툴팁 패널 스타일 (클릭 허용)
18
+ TOOLTIP_PANEL: function (zIndex) {
19
+ return "\n position: fixed;\n left: ".concat(_constants.OFFSCREEN_POSITION, "; \n top: ").concat(_constants.OFFSCREEN_POSITION, ";\n opacity: 0;\n transition: opacity ").concat(_constants.TRANSITION_DURATION, " ease;\n pointer-events: auto;\n z-index: ").concat(zIndex, ";\n right: auto;\n bottom: auto;\n transform: none;\n ");
20
+ },
21
+ // 앵커 래퍼 스타일
22
+ ANCHOR_WRAPPER: "\n display: inline-flex;\n vertical-align: middle;\n margin: 0 4px;\n ",
23
+ // Shadow DOM 기본 스타일
24
+ SHADOW_DOM_HOST: "\n :host { \n all: unset; \n display: block; \n font-family: system-ui; \n color: black; \n }\n "
25
+ };
26
+ // HTML 템플릿
27
+ var HTML_TEMPLATES = exports.HTML_TEMPLATES = {
28
+ // 아이콘 래퍼
29
+ ICON_WRAPPER: function (className, iconSvg) {
30
+ return "<span class=\"".concat(className, "\">").concat(iconSvg, "</span>");
31
+ },
32
+ // 툴팁 제목
33
+ TOOLTIP_TITLE: function (className, title) {
34
+ return "<span class=\"".concat(className, "\">").concat(title, "</span>");
35
+ },
36
+ // 툴팁 콘텐츠 (일반)
37
+ TOOLTIP_CONTENT: function (className, content) {
38
+ return "<span class=\"".concat(className, "\">").concat(content, "</span>");
39
+ },
40
+ // 툴팁 콘텐츠 (Shadow DOM)
41
+ TOOLTIP_CONTENT_SHADOW: function (className) {
42
+ return "<span class=\"".concat(className, "\" data-shadow-content></span>");
43
+ }
44
+ };
45
+ // 폴백 아이콘 SVG
46
+ var FALLBACK_ICON_SVG = function (size) {
47
+ return "<svg width=\"".concat(size, "\" height=\"").concat(size, "\" viewBox=\"0 0 16 16\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" fill=\"none\"/>\n <text x=\"8\" y=\"11\" font-size=\"8\" text-anchor=\"middle\" fill=\"currentColor\">?</text>\n </svg>");
48
+ };
49
+ exports.FALLBACK_ICON_SVG = FALLBACK_ICON_SVG;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DEFAULT_TOOLTIP_HEIGHT", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _const.DEFAULT_TOOLTIP_HEIGHT;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "DEFAULT_TOOLTIP_WIDTH", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _const.DEFAULT_TOOLTIP_WIDTH;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "MARGIN", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _const.MARGIN;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "POSITION_PRIORITY", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _const.POSITION_PRIORITY;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "SVG_ICONS", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _const.SVG_ICONS;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "Tooltip", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _Tooltip.Tooltip;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "calculateOptimalPosition", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _utils.calculateOptimalPosition;
46
+ }
47
+ });
48
+ exports.default = void 0;
49
+ var _Tooltip = require("./Tooltip");
50
+ var _utils = require("./utils");
51
+ var _const = require("./const");
52
+ // 전역 등록 ( 추후 index.ts와 개별동작 할 수 있게끔 대비 )
53
+ if (typeof window !== 'undefined') {
54
+ window.ncua = window.ncua || {};
55
+ window.ncua.Tooltip = _Tooltip.Tooltip;
56
+ }
57
+ var _default = exports.default = _Tooltip.Tooltip;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.calculateOptimalPosition = calculateOptimalPosition;
7
+ var _const = require("./const");
8
+ function calculateOptimalPosition(triggerElement, tooltipElement, preferredPosition) {
9
+ if (preferredPosition === void 0) {
10
+ preferredPosition = 'bottom';
11
+ }
12
+ var triggerRect = triggerElement.getBoundingClientRect();
13
+ var tooltipRect = tooltipElement.getBoundingClientRect();
14
+ var viewportWidth = window.innerWidth,
15
+ viewportHeight = window.innerHeight;
16
+ var spaces = {
17
+ top: triggerRect.top,
18
+ bottom: viewportHeight - triggerRect.bottom,
19
+ left: triggerRect.left,
20
+ right: viewportWidth - triggerRect.right
21
+ };
22
+ var tooltipWidth = tooltipRect.width || _const.DEFAULT_TOOLTIP_WIDTH;
23
+ var tooltipHeight = tooltipRect.height || _const.DEFAULT_TOOLTIP_HEIGHT;
24
+ for (var _i = 0, POSITION_PRIORITY_1 = _const.POSITION_PRIORITY; _i < POSITION_PRIORITY_1.length; _i++) {
25
+ var position = POSITION_PRIORITY_1[_i];
26
+ var hasSpace = position === 'bottom' || position === 'top' ? spaces[position] >= tooltipHeight + _const.MARGIN : spaces[position] >= tooltipWidth + _const.MARGIN;
27
+ if (hasSpace) {
28
+ if (position === 'bottom' || position === 'top') {
29
+ var centerX = triggerRect.left + triggerRect.width / 2;
30
+ var tooltipHalfWidth = tooltipWidth / 2;
31
+ if (centerX - tooltipHalfWidth < _const.MARGIN) {
32
+ return "".concat(position, "-left");
33
+ } else if (centerX + tooltipHalfWidth > viewportWidth - _const.MARGIN) {
34
+ return "".concat(position, "-right");
35
+ }
36
+ }
37
+ return position;
38
+ }
39
+ }
40
+ return preferredPosition;
41
+ }
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DOMRenderer = void 0;
7
+ var DOMRenderer = exports.DOMRenderer = /** @class */function () {
8
+ function DOMRenderer() {
9
+ this.optionElementCache = new Map();
10
+ }
11
+ /**
12
+ * 드롭다운 컨테이너 생성 (구조만)
13
+ */
14
+ DOMRenderer.prototype.createDropdownStructure = function (config) {
15
+ var dropdown = document.createElement('div');
16
+ dropdown.className = "ncua-select-dropdown ncua-select-dropdown--down ncua-select-dropdown--".concat(config.size);
17
+ dropdown.style.display = 'none';
18
+ var content = document.createElement('div');
19
+ content.className = 'ncua-select-dropdown__content';
20
+ var optionsList = document.createElement('ul');
21
+ optionsList.className = 'ncua-select-dropdown__options';
22
+ optionsList.setAttribute('role', 'listbox');
23
+ optionsList.setAttribute('id', config.listboxId);
24
+ optionsList.style.maxHeight = "".concat(config.maxHeight, "px");
25
+ optionsList.style.overflowY = 'auto'; // 스크롤 활성화
26
+ content.appendChild(optionsList);
27
+ dropdown.appendChild(content);
28
+ return {
29
+ dropdown: dropdown,
30
+ content: content,
31
+ optionsList: optionsList
32
+ };
33
+ };
34
+ /**
35
+ * 단일 옵션 엘리먼트 생성 (재사용 가능)
36
+ */
37
+ DOMRenderer.prototype.createOptionElement = function (option, index, config) {
38
+ var cached = this.optionElementCache.get(option.id);
39
+ if (cached) {
40
+ this.updateOptionElement(cached, option, index, config);
41
+ return cached;
42
+ }
43
+ var element = document.createElement('li');
44
+ element.className = 'ncua-select-dropdown__option';
45
+ element.setAttribute('data-value', String(option.id));
46
+ element.setAttribute('data-index', String(index));
47
+ element.setAttribute('role', 'option');
48
+ element.id = "".concat(config.listboxId, "-").concat(option.id);
49
+ var span = document.createElement('span');
50
+ span.className = 'ncua-select-dropdown__option-text';
51
+ span.textContent = option.label;
52
+ element.appendChild(span);
53
+ this.updateOptionElement(element, option, index, config);
54
+ this.optionElementCache.set(option.id, element);
55
+ return element;
56
+ };
57
+ /**
58
+ * 옵션 엘리먼트 상태 업데이트 (DOM 조작 최소화)
59
+ */
60
+ DOMRenderer.prototype.updateOptionElement = function (element, option, index, config) {
61
+ // 클래스 업데이트 (필요한 경우에만)
62
+ var shouldHaveSelected = option.selected || false;
63
+ var shouldHaveFocused = option.focused || false;
64
+ var shouldHaveDisabled = option.disabled || false;
65
+ this.toggleClass(element, 'ncua-select-dropdown__option--selected', shouldHaveSelected);
66
+ this.toggleClass(element, 'ncua-select-dropdown__option--focused', shouldHaveFocused);
67
+ this.toggleClass(element, 'ncua-select-dropdown__option--disabled', shouldHaveDisabled);
68
+ // 속성 업데이트 (필요한 경우에만)
69
+ element.setAttribute('aria-selected', String(shouldHaveSelected));
70
+ element.setAttribute('data-index', String(index));
71
+ };
72
+ /**
73
+ * "결과 없음" 엘리먼트 생성
74
+ */
75
+ DOMRenderer.prototype.createNoResultsElement = function (text) {
76
+ if (text === void 0) {
77
+ text = '일치하는 결과가 없습니다.';
78
+ }
79
+ var noResults = document.createElement('li');
80
+ noResults.className = 'ncua-select-dropdown__no-results';
81
+ noResults.textContent = text;
82
+ return noResults;
83
+ };
84
+ /**
85
+ * 옵션 리스트 효율적 업데이트 (Differential Rendering)
86
+ */
87
+ DOMRenderer.prototype.updateOptionsList = function (container, newOptions, config, showNoResults) {
88
+ var _this = this;
89
+ if (showNoResults === void 0) {
90
+ showNoResults = false;
91
+ }
92
+ // 스크롤 위치 저장
93
+ var scrollTop = container.scrollTop;
94
+ // 결과 없음 처리
95
+ if (showNoResults) {
96
+ container.innerHTML = '';
97
+ container.appendChild(this.createNoResultsElement(config.noResultsText));
98
+ return [];
99
+ }
100
+ var newElements = [];
101
+ // 새 옵션들로 엘리먼트 생성/업데이트
102
+ newOptions.forEach(function (option, index) {
103
+ var element = _this.createOptionElement(option, index, config);
104
+ newElements.push(element);
105
+ });
106
+ // DOM 업데이트 최소화 - 변경된 부분만 업데이트
107
+ this.updateContainerChildren(container, newElements);
108
+ // 스크롤 위치 복원 (다음 프레임에서 실행)
109
+ requestAnimationFrame(function () {
110
+ container.scrollTop = scrollTop;
111
+ });
112
+ return newElements;
113
+ };
114
+ /**
115
+ * 컨테이너 자식 엘리먼트 효율적 업데이트
116
+ */
117
+ DOMRenderer.prototype.updateContainerChildren = function (container, newChildren) {
118
+ // 기존 엘리먼트 제거 (새 리스트에 없는 것들)
119
+ Array.from(container.children).forEach(function (child) {
120
+ if (!newChildren.includes(child)) {
121
+ child.remove();
122
+ }
123
+ });
124
+ // 새 엘리먼트 추가 (순서 유지)
125
+ newChildren.forEach(function (child, index) {
126
+ var currentChild = container.children[index];
127
+ if (currentChild !== child) {
128
+ if (currentChild) {
129
+ container.insertBefore(child, currentChild);
130
+ } else {
131
+ container.appendChild(child);
132
+ }
133
+ }
134
+ });
135
+ };
136
+ /**
137
+ * 클래스 토글 (변경이 필요한 경우에만)
138
+ */
139
+ DOMRenderer.prototype.toggleClass = function (element, className, shouldHave) {
140
+ var hasClass = element.classList.contains(className);
141
+ if (shouldHave && !hasClass) {
142
+ element.classList.add(className);
143
+ } else if (!shouldHave && hasClass) {
144
+ element.classList.remove(className);
145
+ }
146
+ };
147
+ /**
148
+ * 입력 필드 생성 (InputFieldUtils에서 이동)
149
+ */
150
+ DOMRenderer.prototype.createInputField = function (config) {
151
+ var actualSize = config.size === 'md' ? 'sm' : config.size || 'sm';
152
+ // 최상위 ncua-input 컨테이너 (React 버전과 동일)
153
+ var inputContainer = document.createElement('div');
154
+ inputContainer.className = "ncua-input ncua-input--".concat(actualSize);
155
+ if (config.disabled) inputContainer.classList.add('is-disabled');
156
+ // ncua-input__content 래퍼 (React 버전과 동일)
157
+ var inputContent = document.createElement('div');
158
+ inputContent.className = 'ncua-input__content';
159
+ // ncua-input__field 래퍼 (React 버전과 동일, size 포함)
160
+ var inputField = document.createElement('div');
161
+ inputField.className = "ncua-input__field ncua-input__field--".concat(actualSize);
162
+ // 실제 입력 필드 (React 버전과 동일)
163
+ var input = document.createElement('input');
164
+ input.type = 'text';
165
+ input.placeholder = config.placeholder || '';
166
+ if (config.disabled) input.disabled = true;
167
+ // 이벤트 리스너
168
+ if (config.onInput) {
169
+ input.addEventListener('input', function (e) {
170
+ config.onInput(e.target.value);
171
+ });
172
+ }
173
+ if (config.onClick) {
174
+ input.addEventListener('click', function (event) {
175
+ event.stopPropagation(); // 이벤트 버블링 방지
176
+ config.onClick();
177
+ });
178
+ }
179
+ // 클리어 버튼 (React 버전의 renderClearButton과 동일)
180
+ var clearButton = null;
181
+ if (config.onClear) {
182
+ clearButton = document.createElement('button');
183
+ clearButton.type = 'button';
184
+ clearButton.className = 'ncua-input__icon-wrap ncua-input__right-icon ncua-input__clear';
185
+ clearButton.style.display = 'none'; // 초기에는 숨김
186
+ clearButton.addEventListener('click', config.onClear);
187
+ // 클리어 아이콘 (React와 동일한 크기)
188
+ var iconSize = actualSize === 'xs' ? 14 : 16;
189
+ var clearIcon = DOMRenderer.createSvgIcon('close', iconSize);
190
+ clearIcon.setAttribute('class', 'ncua-input__clear-icon');
191
+ clearButton.appendChild(clearIcon);
192
+ // 입력값 변경 시 클리어 버튼 표시/숨김
193
+ input.addEventListener('input', function () {
194
+ if (clearButton) {
195
+ clearButton.style.display = input.value ? 'flex' : 'none';
196
+ }
197
+ });
198
+ }
199
+ // 전체 보기 버튼 (React 버전의 trailingElement와 동일)
200
+ var showAllButton = null;
201
+ if (config.onShowAll) {
202
+ showAllButton = document.createElement('div');
203
+ showAllButton.className = 'ncua-input__icon-wrap ncua-input__right-icon';
204
+ showAllButton.addEventListener('click', config.onShowAll);
205
+ // 전체 버튼 (React Button 컴포넌트와 유사한 구조)
206
+ var button = document.createElement('button');
207
+ button.type = 'button';
208
+ button.className = 'ncua-btn ncua-btn--xxs ncua-btn--text';
209
+ // 아이콘
210
+ var iconSize = 14;
211
+ var showAllIcon = DOMRenderer.createSvgIcon('chevron-selector-vertical', iconSize);
212
+ button.appendChild(showAllIcon);
213
+ // 텍스트
214
+ var label = document.createElement('span');
215
+ label.className = 'ncua-btn__label';
216
+ label.textContent = '전체';
217
+ button.appendChild(label);
218
+ showAllButton.appendChild(button);
219
+ }
220
+ // 검색 아이콘 (React 버전의 leadingElement와 동일)
221
+ var searchIcon = null;
222
+ if (config.showSearchIcon) {
223
+ searchIcon = document.createElement('div');
224
+ searchIcon.className = 'ncua-input__icon-wrap ncua-input__left-icon';
225
+ // 검색 아이콘 (React와 동일한 크기와 색상)
226
+ var searchSvg = DOMRenderer.createSvgIcon('search', 14);
227
+ searchSvg.style.color = '#98a2b3'; // gray300에 해당하는 색상
228
+ searchIcon.appendChild(searchSvg);
229
+ }
230
+ // 구조 조립 (React 버전과 동일한 순서)
231
+ if (searchIcon) inputField.appendChild(searchIcon);
232
+ inputField.appendChild(input);
233
+ if (clearButton) inputField.appendChild(clearButton);
234
+ if (showAllButton) inputField.appendChild(showAllButton);
235
+ inputContent.appendChild(inputField);
236
+ inputContainer.appendChild(inputContent);
237
+ return {
238
+ container: inputContainer,
239
+ input: input,
240
+ setValue: function (value) {
241
+ input.value = value;
242
+ // 클리어 버튼 표시 상태 업데이트
243
+ if (clearButton) {
244
+ clearButton.style.display = value ? 'flex' : 'none';
245
+ }
246
+ },
247
+ focus: function () {
248
+ return input.focus();
249
+ },
250
+ blur: function () {
251
+ return input.blur();
252
+ }
253
+ };
254
+ };
255
+ /**
256
+ * 캐시 정리
257
+ */
258
+ DOMRenderer.prototype.clearCache = function () {
259
+ this.optionElementCache.clear();
260
+ };
261
+ /**
262
+ * 특정 옵션 캐시 제거
263
+ */
264
+ DOMRenderer.prototype.removeCachedOption = function (optionId) {
265
+ this.optionElementCache.delete(optionId);
266
+ };
267
+ /**
268
+ * 공통 DOM 생성 유틸리티
269
+ */
270
+ DOMRenderer.createElementWithClass = function (tagName, className, textContent) {
271
+ var element = document.createElement(tagName);
272
+ element.className = className;
273
+ if (textContent) {
274
+ element.textContent = textContent;
275
+ }
276
+ return element;
277
+ };
278
+ /**
279
+ * 버튼 엘리먼트 생성
280
+ */
281
+ DOMRenderer.createButton = function (className, textContent, onClick) {
282
+ var button = document.createElement('button');
283
+ button.className = className;
284
+ // React 컴포넌트와 일치하도록 span.ncua-btn__label 구조 사용
285
+ var label = document.createElement('span');
286
+ label.className = 'ncua-btn__label';
287
+ label.textContent = textContent;
288
+ button.appendChild(label);
289
+ if (onClick) {
290
+ button.addEventListener('click', onClick);
291
+ }
292
+ return button;
293
+ };
294
+ /**
295
+ * SVG 아이콘 생성
296
+ */
297
+ DOMRenderer.createSvgIcon = function (iconName, size) {
298
+ if (size === void 0) {
299
+ size = 16;
300
+ }
301
+ var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
302
+ svg.setAttribute('width', size.toString());
303
+ svg.setAttribute('height', size.toString());
304
+ svg.setAttribute('viewBox', '0 0 24 24');
305
+ svg.setAttribute('fill', 'none');
306
+ // 기본 아이콘들
307
+ switch (iconName) {
308
+ case 'close':
309
+ svg.innerHTML = '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 7 7 17M7 7l10 10"/>';
310
+ break;
311
+ case 'chevron-down':
312
+ svg.innerHTML = '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>';
313
+ break;
314
+ case 'chevron-selector-vertical':
315
+ svg.innerHTML = '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m7 15 5 5 5-5M7 9l5-5 5 5"/>';
316
+ break;
317
+ case 'search':
318
+ svg.innerHTML = '<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21 21-3.5-3.5m2.5-6a8.5 8.5 0 1 1-17 0 8.5 8.5 0 0 1 17 0"></path>';
319
+ break;
320
+ }
321
+ return svg;
322
+ };
323
+ /**
324
+ * 푸터 생성
325
+ */
326
+ DOMRenderer.prototype.createFooter = function (config) {
327
+ // 푸터 생성
328
+ var footer = document.createElement('div');
329
+ footer.className = 'ncua-select-dropdown__footer';
330
+ var footerButtons = document.createElement('div');
331
+ footerButtons.className = 'ncua-select-dropdown__footer-buttons';
332
+ var footerLeft = document.createElement('div');
333
+ footerLeft.className = 'ncua-select-dropdown__footer-left';
334
+ var footerRight = document.createElement('div');
335
+ footerRight.className = 'ncua-select-dropdown__footer-right';
336
+ // 다중 선택인 경우 전체 선택 버튼 추가
337
+ if (config.multiple) {
338
+ var selectAllButton = DOMRenderer.createButton('ncua-btn ncua-btn--xs ncua-btn--text has-underline', config.selectAllButtonText || '전체 선택', function (e) {
339
+ var _a;
340
+ e.preventDefault();
341
+ e.stopPropagation();
342
+ (_a = config.onSelectAll) === null || _a === void 0 ? void 0 : _a.call(config);
343
+ });
344
+ footerLeft.appendChild(selectAllButton);
345
+ }
346
+ // 편집 버튼 (showFooterButtons가 true이고 onEdit가 있는 경우)
347
+ if (config.showFooterButtons && config.onEdit) {
348
+ var editButton = DOMRenderer.createButton('ncua-btn ncua-btn--xs ncua-btn--secondary-gray', '편집', function (e) {
349
+ var _a;
350
+ e.preventDefault();
351
+ e.stopPropagation();
352
+ (_a = config.onEdit) === null || _a === void 0 ? void 0 : _a.call(config);
353
+ });
354
+ footerRight.appendChild(editButton);
355
+ }
356
+ // 선택 완료 버튼 (다중 선택이거나 showFooterButtons가 true인 경우)
357
+ if (config.multiple || config.showFooterButtons) {
358
+ var completeButton = DOMRenderer.createButton('ncua-btn ncua-btn--xs ncua-btn--secondary', '선택 완료', function (e) {
359
+ var _a;
360
+ e.preventDefault();
361
+ e.stopPropagation();
362
+ (_a = config.onComplete) === null || _a === void 0 ? void 0 : _a.call(config);
363
+ });
364
+ footerRight.appendChild(completeButton);
365
+ }
366
+ footerButtons.appendChild(footerLeft);
367
+ footerButtons.appendChild(footerRight);
368
+ footer.appendChild(footerButtons);
369
+ return footer;
370
+ };
371
+ /**
372
+ * 전체 선택 버튼 텍스트 업데이트
373
+ */
374
+ DOMRenderer.prototype.updateSelectAllButtonText = function (footerElement, text) {
375
+ var selectAllButton = footerElement.querySelector('.ncua-select-dropdown__footer-left .ncua-btn');
376
+ if (selectAllButton) {
377
+ var label = selectAllButton.querySelector('.ncua-btn__label');
378
+ if (label) {
379
+ label.textContent = text;
380
+ }
381
+ }
382
+ };
383
+ return DOMRenderer;
384
+ }();