@ncds/ui-admin 1.7.0 → 1.8.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 (621) hide show
  1. package/dist/cjs/assets/scripts/baseBox.js +54 -56
  2. package/dist/cjs/assets/scripts/comboBox.js +54 -105
  3. package/dist/cjs/assets/scripts/datePicker.js +289 -324
  4. package/dist/cjs/assets/scripts/featuredIcon.js +41 -49
  5. package/dist/cjs/assets/scripts/fileInput/const/classNames.js +4 -10
  6. package/dist/cjs/assets/scripts/fileInput/fileInput.js +33 -34
  7. package/dist/cjs/assets/scripts/fileInput/fileInputModel.js +27 -35
  8. package/dist/cjs/assets/scripts/fileInput/fileInputView.js +53 -48
  9. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +61 -64
  10. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +79 -112
  11. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +107 -105
  12. package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +6 -16
  13. package/dist/cjs/assets/scripts/index.js +2 -0
  14. package/dist/cjs/assets/scripts/modal/Modal.js +43 -55
  15. package/dist/cjs/assets/scripts/modal/ModalActions.js +40 -52
  16. package/dist/cjs/assets/scripts/modal/ModalContent.js +22 -22
  17. package/dist/cjs/assets/scripts/modal/ModalHeader.js +37 -48
  18. package/dist/cjs/assets/scripts/modal/const/classNames.js +5 -13
  19. package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +1 -1
  20. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +91 -93
  21. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +92 -80
  22. package/dist/cjs/assets/scripts/notification/MessageNotification.js +92 -79
  23. package/dist/cjs/assets/scripts/notification/Notification.js +50 -65
  24. package/dist/cjs/assets/scripts/notification/const/classNames.js +1 -1
  25. package/dist/cjs/assets/scripts/notification/const/icons.js +11 -25
  26. package/dist/cjs/assets/scripts/notification/const/sizes.js +11 -19
  27. package/dist/cjs/assets/scripts/notification/const/types.js +1 -1
  28. package/dist/cjs/assets/scripts/notification/utils.js +28 -23
  29. package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +140 -141
  30. package/dist/cjs/assets/scripts/selectBox.js +72 -132
  31. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +18 -19
  32. package/dist/cjs/assets/scripts/slider.js +104 -122
  33. package/dist/cjs/assets/scripts/tab.js +8 -8
  34. package/dist/cjs/assets/scripts/table/Table.js +377 -0
  35. package/dist/cjs/assets/scripts/table/const/classNames.js +33 -0
  36. package/dist/cjs/assets/scripts/table/const/index.js +27 -0
  37. package/dist/cjs/assets/scripts/table/const/types.js +5 -0
  38. package/dist/cjs/assets/scripts/table/index.js +43 -0
  39. package/dist/cjs/assets/scripts/tag/Tag.js +108 -115
  40. package/dist/cjs/assets/scripts/tag/const/classNames.js +3 -7
  41. package/dist/cjs/assets/scripts/tag/const/sizes.js +4 -4
  42. package/dist/cjs/assets/scripts/tooltip/Tooltip.js +155 -182
  43. package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +23 -25
  44. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +1 -1
  45. package/dist/cjs/assets/scripts/tooltip/const/constants.js +14 -14
  46. package/dist/cjs/assets/scripts/tooltip/const/icons.js +7 -7
  47. package/dist/cjs/assets/scripts/tooltip/const/templates.js +42 -25
  48. package/dist/cjs/assets/scripts/tooltip/utils.js +17 -18
  49. package/dist/cjs/assets/scripts/utils/debounce.js +7 -8
  50. package/dist/cjs/assets/scripts/utils/unifiedBox/domRenderer.js +102 -116
  51. package/dist/cjs/assets/scripts/utils/unifiedBox/dropdownModel.js +103 -144
  52. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxController.js +180 -207
  53. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +166 -362
  54. package/dist/cjs/constant/color.js +1 -1
  55. package/dist/cjs/index.js +0 -297
  56. package/dist/cjs/src/components/badge/Badge.js +17 -30
  57. package/dist/cjs/src/components/badge/index.js +0 -11
  58. package/dist/cjs/src/components/badge/utils.js +11 -10
  59. package/dist/cjs/src/components/badge-group/BadgeGroup.js +42 -0
  60. package/dist/cjs/src/components/badge-group/index.js +16 -0
  61. package/dist/cjs/src/components/bread-crumb/BreadCrumb.js +55 -0
  62. package/dist/cjs/src/components/button/Button.js +37 -58
  63. package/dist/cjs/src/components/button/ButtonCloseX.js +12 -22
  64. package/dist/cjs/src/components/button/ButtonStepper.js +9 -7
  65. package/dist/cjs/src/components/button/index.js +0 -11
  66. package/dist/cjs/src/components/button-group/ButtonGroup.js +97 -0
  67. package/dist/cjs/src/components/button-group/index.js +16 -0
  68. package/dist/cjs/src/components/carousel-arrow/CarouselArrow.js +34 -0
  69. package/dist/cjs/src/components/carousel-arrow/index.js +16 -0
  70. package/dist/cjs/src/components/carousel-number-group/CarouselNumberGroup.js +33 -0
  71. package/dist/cjs/src/components/{carousel → carousel-number-group}/index.js +0 -11
  72. package/dist/cjs/src/components/checkbox/Checkbox.js +28 -49
  73. package/dist/cjs/src/components/checkbox/CheckboxInput.js +23 -42
  74. package/dist/cjs/src/components/combo-box/ComboBox.js +290 -0
  75. package/dist/cjs/src/components/data-grid/DataGrid.js +182 -0
  76. package/dist/cjs/src/components/data-grid/DataGrid.types.js +5 -0
  77. package/dist/cjs/src/components/data-grid/index.js +27 -0
  78. package/dist/cjs/src/components/date-picker/CustomInput.js +16 -32
  79. package/dist/cjs/src/components/date-picker/DatePicker.js +416 -256
  80. package/dist/cjs/src/components/date-picker/index.js +0 -22
  81. package/dist/cjs/src/components/date-picker/utils.js +2 -4
  82. package/dist/cjs/src/components/divider/Divider.js +14 -25
  83. package/dist/cjs/src/components/dot/Dot.js +11 -28
  84. package/dist/cjs/src/components/dropdown/Dropdown.js +90 -132
  85. package/dist/cjs/src/components/empty-state/EmptyState.js +28 -45
  86. package/dist/cjs/src/components/featured-icon/FeaturedIcon.js +14 -33
  87. package/dist/cjs/src/components/file-input/FileInput.js +102 -148
  88. package/dist/cjs/src/components/horizontal-tab/HorizontalTab.js +53 -0
  89. package/dist/cjs/src/components/horizontal-tab/index.js +16 -0
  90. package/dist/cjs/src/components/image-file-input/ImageFileInput.js +109 -170
  91. package/dist/cjs/src/components/image-file-input/components/ImagePreview.js +8 -17
  92. package/dist/cjs/src/components/index.js +156 -24
  93. package/dist/cjs/src/components/input-base/InputBase.js +195 -0
  94. package/dist/cjs/src/components/input-base/index.js +16 -0
  95. package/dist/cjs/src/components/modal/Modal.js +76 -105
  96. package/dist/cjs/src/components/notification/FloatingNotification.js +52 -80
  97. package/dist/cjs/src/components/notification/FullWidthNotification.js +67 -101
  98. package/dist/cjs/src/components/notification/MessageNotification.js +60 -89
  99. package/dist/cjs/src/components/notification/Notification.js +18 -36
  100. package/dist/cjs/src/components/number-input/NumberInput.js +112 -0
  101. package/dist/cjs/src/components/number-input/index.js +16 -0
  102. package/dist/cjs/src/components/pagination/NavButton.js +28 -42
  103. package/dist/cjs/src/components/pagination/Pagination.js +58 -97
  104. package/dist/cjs/src/components/password-input/PasswordInput.js +55 -0
  105. package/dist/cjs/src/components/password-input/index.js +16 -0
  106. package/dist/cjs/src/components/progress-bar/ProgressBar.js +45 -60
  107. package/dist/cjs/src/components/progress-bar/components/SegmentBar.js +11 -9
  108. package/dist/cjs/src/components/progress-bar/components/SegmentLabels.js +32 -43
  109. package/dist/cjs/src/components/progress-bar/hooks/useProgressBar.js +59 -78
  110. package/dist/cjs/src/components/progress-bar/utils.js +8 -8
  111. package/dist/cjs/src/components/progress-circle/ProgressCircle.js +49 -72
  112. package/dist/cjs/src/components/radio/Radio.js +24 -43
  113. package/dist/cjs/src/components/radio/RadioInput.js +18 -36
  114. package/dist/cjs/src/components/range-date-picker/RangeDatePicker.js +147 -0
  115. package/dist/cjs/src/components/range-date-picker/index.js +16 -0
  116. package/dist/cjs/src/components/range-date-picker-with-buttons/RangeDatePickerWithButtons.js +81 -0
  117. package/dist/cjs/src/components/range-date-picker-with-buttons/index.js +16 -0
  118. package/dist/cjs/src/components/select/Select.js +36 -63
  119. package/dist/cjs/src/components/select-box/SelectBox.js +260 -0
  120. package/dist/cjs/src/components/select-dropdown/SelectDropdown.js +64 -100
  121. package/dist/cjs/src/components/shared/hintText/HintText.js +13 -30
  122. package/dist/cjs/src/components/shared/label/Label.js +12 -29
  123. package/dist/cjs/src/components/slider/Slider.js +25 -28
  124. package/dist/cjs/src/components/spinner/Spinner.js +25 -39
  125. package/dist/cjs/src/components/switch/Switch.js +44 -69
  126. package/dist/cjs/src/components/tab/TabButton.js +41 -61
  127. package/dist/cjs/src/components/tab/index.js +0 -22
  128. package/dist/cjs/src/components/table/Table.js +269 -0
  129. package/dist/cjs/src/components/table/index.js +16 -0
  130. package/dist/cjs/src/components/table/types.js +5 -0
  131. package/dist/cjs/src/components/tag/Tag.js +65 -85
  132. package/dist/cjs/src/components/textarea/Textarea.js +79 -0
  133. package/dist/cjs/src/components/textarea/index.js +16 -0
  134. package/dist/cjs/src/components/toggle/Toggle.js +28 -52
  135. package/dist/cjs/src/components/tooltip/Tooltip.js +75 -108
  136. package/dist/cjs/src/components/vertical-tab/VerticalTab.js +48 -0
  137. package/dist/cjs/src/components/vertical-tab/index.js +16 -0
  138. package/dist/cjs/src/constant/breakpoint.js +3 -3
  139. package/dist/cjs/src/constant/date-picker.js +1 -1
  140. package/dist/cjs/src/constant/size.js +1 -1
  141. package/dist/cjs/src/hooks/dropdown/useDropdown.js +58 -60
  142. package/dist/cjs/src/hooks/dropdown/useDropdownKeyboard.js +37 -40
  143. package/dist/cjs/src/hooks/dropdown/useDropdownPosition.js +7 -9
  144. package/dist/cjs/src/hooks/dropdown/useOutsideClick.js +11 -11
  145. package/dist/cjs/src/hooks/dropdown/useScrollLock.js +23 -19
  146. package/dist/cjs/src/hooks/dropdown/useWindowResize.js +12 -13
  147. package/dist/cjs/src/hooks/useCallbackRef.js +2 -2
  148. package/dist/cjs/src/hooks/useMediaQuery.js +8 -11
  149. package/dist/cjs/src/hooks/useMergeRefs.js +2 -2
  150. package/dist/cjs/src/utils/date-picker.js +29 -30
  151. package/dist/cjs/src/utils/dropdown/dropdownUtils.js +39 -35
  152. package/dist/cjs/src/utils/dropdown/multiSelect.js +25 -45
  153. package/dist/esm/assets/scripts/baseBox.js +53 -57
  154. package/dist/esm/assets/scripts/comboBox.js +54 -107
  155. package/dist/esm/assets/scripts/datePicker.js +288 -324
  156. package/dist/esm/assets/scripts/featuredIcon.js +40 -50
  157. package/dist/esm/assets/scripts/fileInput/const/classNames.js +4 -10
  158. package/dist/esm/assets/scripts/fileInput/fileInput.js +32 -35
  159. package/dist/esm/assets/scripts/fileInput/fileInputModel.js +26 -36
  160. package/dist/esm/assets/scripts/fileInput/fileInputView.js +52 -49
  161. package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +60 -65
  162. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +78 -113
  163. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +106 -106
  164. package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +6 -16
  165. package/dist/esm/assets/scripts/index.js +2 -0
  166. package/dist/esm/assets/scripts/modal/Modal.js +43 -55
  167. package/dist/esm/assets/scripts/modal/ModalActions.js +39 -53
  168. package/dist/esm/assets/scripts/modal/ModalContent.js +21 -23
  169. package/dist/esm/assets/scripts/modal/ModalHeader.js +36 -49
  170. package/dist/esm/assets/scripts/modal/const/classNames.js +5 -13
  171. package/dist/esm/assets/scripts/modal/utils/contentUtils.js +1 -1
  172. package/dist/esm/assets/scripts/notification/FloatingNotification.js +90 -94
  173. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +91 -81
  174. package/dist/esm/assets/scripts/notification/MessageNotification.js +91 -80
  175. package/dist/esm/assets/scripts/notification/Notification.js +49 -66
  176. package/dist/esm/assets/scripts/notification/const/classNames.js +1 -1
  177. package/dist/esm/assets/scripts/notification/const/icons.js +11 -25
  178. package/dist/esm/assets/scripts/notification/const/sizes.js +11 -19
  179. package/dist/esm/assets/scripts/notification/const/types.js +1 -1
  180. package/dist/esm/assets/scripts/notification/utils.js +28 -23
  181. package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +139 -142
  182. package/dist/esm/assets/scripts/selectBox.js +71 -133
  183. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +18 -19
  184. package/dist/esm/assets/scripts/slider.js +103 -123
  185. package/dist/esm/assets/scripts/tab.js +7 -9
  186. package/dist/esm/assets/scripts/table/Table.js +370 -0
  187. package/dist/esm/assets/scripts/table/const/classNames.js +27 -0
  188. package/dist/esm/assets/scripts/table/const/index.js +2 -0
  189. package/dist/esm/assets/scripts/table/const/types.js +1 -0
  190. package/dist/esm/assets/scripts/table/index.js +8 -0
  191. package/dist/esm/assets/scripts/tag/Tag.js +107 -116
  192. package/dist/esm/assets/scripts/tag/const/classNames.js +3 -7
  193. package/dist/esm/assets/scripts/tag/const/sizes.js +4 -4
  194. package/dist/esm/assets/scripts/tooltip/Tooltip.js +154 -183
  195. package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +22 -26
  196. package/dist/esm/assets/scripts/tooltip/const/classNames.js +1 -1
  197. package/dist/esm/assets/scripts/tooltip/const/constants.js +14 -14
  198. package/dist/esm/assets/scripts/tooltip/const/icons.js +7 -7
  199. package/dist/esm/assets/scripts/tooltip/const/templates.js +42 -25
  200. package/dist/esm/assets/scripts/tooltip/utils.js +17 -18
  201. package/dist/esm/assets/scripts/utils/debounce.js +7 -8
  202. package/dist/esm/assets/scripts/utils/unifiedBox/domRenderer.js +101 -117
  203. package/dist/esm/assets/scripts/utils/unifiedBox/dropdownModel.js +103 -144
  204. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxController.js +179 -208
  205. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +165 -363
  206. package/dist/esm/constant/color.js +1 -1
  207. package/dist/esm/index.js +0 -27
  208. package/dist/esm/src/components/badge/Badge.js +17 -30
  209. package/dist/esm/src/components/badge/index.js +1 -2
  210. package/dist/esm/src/components/badge/utils.js +11 -10
  211. package/dist/esm/src/components/badge-group/BadgeGroup.js +35 -0
  212. package/dist/esm/src/components/badge-group/index.js +1 -0
  213. package/dist/esm/src/components/bread-crumb/BreadCrumb.js +48 -0
  214. package/dist/esm/src/components/button/Button.js +37 -58
  215. package/dist/esm/src/components/button/ButtonCloseX.js +12 -22
  216. package/dist/esm/src/components/button/ButtonStepper.js +9 -7
  217. package/dist/esm/src/components/button/index.js +0 -1
  218. package/dist/esm/src/components/button-group/ButtonGroup.js +89 -0
  219. package/dist/esm/src/components/button-group/index.js +1 -0
  220. package/dist/esm/src/components/carousel-arrow/CarouselArrow.js +26 -0
  221. package/dist/esm/src/components/carousel-arrow/index.js +1 -0
  222. package/dist/esm/src/components/carousel-number-group/CarouselNumberGroup.js +25 -0
  223. package/dist/esm/src/components/carousel-number-group/index.js +1 -0
  224. package/dist/esm/src/components/checkbox/Checkbox.js +28 -49
  225. package/dist/esm/src/components/checkbox/CheckboxInput.js +23 -42
  226. package/dist/esm/src/components/combo-box/ComboBox.js +284 -0
  227. package/dist/esm/src/components/data-grid/DataGrid.js +175 -0
  228. package/dist/esm/src/components/data-grid/DataGrid.types.js +1 -0
  229. package/dist/esm/src/components/data-grid/index.js +2 -0
  230. package/dist/esm/src/components/date-picker/CustomInput.js +16 -32
  231. package/dist/esm/src/components/date-picker/DatePicker.js +421 -260
  232. package/dist/esm/src/components/date-picker/index.js +0 -2
  233. package/dist/esm/src/components/date-picker/utils.js +2 -4
  234. package/dist/esm/src/components/divider/Divider.js +14 -25
  235. package/dist/esm/src/components/dot/Dot.js +11 -28
  236. package/dist/esm/src/components/dropdown/Dropdown.js +90 -132
  237. package/dist/esm/src/components/empty-state/EmptyState.js +28 -45
  238. package/dist/esm/src/components/featured-icon/FeaturedIcon.js +14 -33
  239. package/dist/esm/src/components/file-input/FileInput.js +102 -148
  240. package/dist/esm/src/components/horizontal-tab/HorizontalTab.js +46 -0
  241. package/dist/esm/src/components/horizontal-tab/index.js +1 -0
  242. package/dist/esm/src/components/image-file-input/ImageFileInput.js +109 -170
  243. package/dist/esm/src/components/image-file-input/components/ImagePreview.js +8 -17
  244. package/dist/esm/src/components/index.js +18 -6
  245. package/dist/esm/src/components/input-base/InputBase.js +189 -0
  246. package/dist/esm/src/components/input-base/index.js +1 -0
  247. package/dist/esm/src/components/modal/Modal.js +76 -105
  248. package/dist/esm/src/components/notification/FloatingNotification.js +52 -80
  249. package/dist/esm/src/components/notification/FullWidthNotification.js +67 -101
  250. package/dist/esm/src/components/notification/MessageNotification.js +60 -89
  251. package/dist/esm/src/components/notification/Notification.js +18 -36
  252. package/dist/esm/src/components/{input → number-input}/NumberInput.js +34 -54
  253. package/dist/esm/src/components/number-input/index.js +1 -0
  254. package/dist/esm/src/components/pagination/NavButton.js +28 -42
  255. package/dist/esm/src/components/pagination/Pagination.js +58 -97
  256. package/dist/esm/src/components/password-input/PasswordInput.js +48 -0
  257. package/dist/esm/src/components/password-input/index.js +1 -0
  258. package/dist/esm/src/components/progress-bar/ProgressBar.js +45 -60
  259. package/dist/esm/src/components/progress-bar/components/SegmentBar.js +11 -9
  260. package/dist/esm/src/components/progress-bar/components/SegmentLabels.js +32 -43
  261. package/dist/esm/src/components/progress-bar/hooks/useProgressBar.js +59 -78
  262. package/dist/esm/src/components/progress-bar/utils.js +8 -8
  263. package/dist/esm/src/components/progress-circle/ProgressCircle.js +49 -72
  264. package/dist/esm/src/components/radio/Radio.js +24 -43
  265. package/dist/esm/src/components/radio/RadioInput.js +18 -36
  266. package/dist/esm/src/components/range-date-picker/RangeDatePicker.js +141 -0
  267. package/dist/esm/src/components/range-date-picker/index.js +1 -0
  268. package/dist/esm/src/components/range-date-picker-with-buttons/RangeDatePickerWithButtons.js +75 -0
  269. package/dist/esm/src/components/range-date-picker-with-buttons/index.js +1 -0
  270. package/dist/esm/src/components/select/Select.js +36 -63
  271. package/dist/esm/src/components/select-box/SelectBox.js +254 -0
  272. package/dist/esm/src/components/select-dropdown/SelectDropdown.js +64 -100
  273. package/dist/esm/src/components/shared/hintText/HintText.js +13 -30
  274. package/dist/esm/src/components/shared/label/Label.js +12 -29
  275. package/dist/esm/src/components/slider/Slider.js +25 -28
  276. package/dist/esm/src/components/spinner/Spinner.js +25 -39
  277. package/dist/esm/src/components/switch/Switch.js +44 -69
  278. package/dist/esm/src/components/tab/TabButton.js +41 -61
  279. package/dist/esm/src/components/tab/index.js +1 -3
  280. package/dist/esm/src/components/table/Table.js +262 -0
  281. package/dist/esm/src/components/table/index.js +1 -0
  282. package/dist/esm/src/components/table/types.js +1 -0
  283. package/dist/esm/src/components/tag/Tag.js +65 -85
  284. package/dist/esm/src/components/textarea/Textarea.js +72 -0
  285. package/dist/esm/src/components/textarea/index.js +1 -0
  286. package/dist/esm/src/components/toggle/Toggle.js +28 -52
  287. package/dist/esm/src/components/tooltip/Tooltip.js +75 -108
  288. package/dist/esm/src/components/vertical-tab/VerticalTab.js +40 -0
  289. package/dist/esm/src/components/vertical-tab/index.js +1 -0
  290. package/dist/esm/src/constant/breakpoint.js +3 -3
  291. package/dist/esm/src/constant/date-picker.js +1 -1
  292. package/dist/esm/src/constant/size.js +1 -1
  293. package/dist/esm/src/hooks/dropdown/useDropdown.js +58 -60
  294. package/dist/esm/src/hooks/dropdown/useDropdownKeyboard.js +37 -40
  295. package/dist/esm/src/hooks/dropdown/useDropdownPosition.js +7 -9
  296. package/dist/esm/src/hooks/dropdown/useOutsideClick.js +11 -11
  297. package/dist/esm/src/hooks/dropdown/useScrollLock.js +23 -19
  298. package/dist/esm/src/hooks/dropdown/useWindowResize.js +12 -13
  299. package/dist/esm/src/hooks/useCallbackRef.js +2 -2
  300. package/dist/esm/src/hooks/useMediaQuery.js +8 -11
  301. package/dist/esm/src/hooks/useMergeRefs.js +2 -2
  302. package/dist/esm/src/utils/date-picker.js +29 -30
  303. package/dist/esm/src/utils/dropdown/dropdownUtils.js +39 -35
  304. package/dist/esm/src/utils/dropdown/multiSelect.js +25 -45
  305. package/dist/temp/assets/scripts/baseBox.js +53 -57
  306. package/dist/temp/assets/scripts/comboBox.js +62 -93
  307. package/dist/temp/assets/scripts/datePicker.js +286 -293
  308. package/dist/temp/assets/scripts/featuredIcon.js +40 -47
  309. package/dist/temp/assets/scripts/fileInput/const/classNames.js +4 -8
  310. package/dist/temp/assets/scripts/fileInput/fileInput.js +29 -33
  311. package/dist/temp/assets/scripts/fileInput/fileInputModel.js +24 -32
  312. package/dist/temp/assets/scripts/fileInput/fileInputView.js +52 -49
  313. package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.js +57 -63
  314. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.js +79 -99
  315. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.js +106 -104
  316. package/dist/temp/assets/scripts/imageFileInput/const/classNames.js +6 -10
  317. package/dist/temp/assets/scripts/index.d.ts +2 -0
  318. package/dist/temp/assets/scripts/index.js +2 -0
  319. package/dist/temp/assets/scripts/modal/Modal.js +46 -52
  320. package/dist/temp/assets/scripts/modal/ModalActions.js +42 -50
  321. package/dist/temp/assets/scripts/modal/ModalContent.js +21 -23
  322. package/dist/temp/assets/scripts/modal/ModalHeader.js +40 -46
  323. package/dist/temp/assets/scripts/modal/const/classNames.js +5 -5
  324. package/dist/temp/assets/scripts/modal/utils/contentUtils.js +1 -1
  325. package/dist/temp/assets/scripts/notification/FloatingNotification.js +80 -77
  326. package/dist/temp/assets/scripts/notification/FullWidthNotification.js +78 -62
  327. package/dist/temp/assets/scripts/notification/MessageNotification.js +81 -64
  328. package/dist/temp/assets/scripts/notification/Notification.js +48 -62
  329. package/dist/temp/assets/scripts/notification/const/classNames.js +1 -1
  330. package/dist/temp/assets/scripts/notification/const/icons.js +11 -25
  331. package/dist/temp/assets/scripts/notification/const/sizes.js +11 -11
  332. package/dist/temp/assets/scripts/notification/const/types.js +1 -1
  333. package/dist/temp/assets/scripts/notification/utils.js +31 -26
  334. package/dist/temp/assets/scripts/progress-bar/ProgressBar.js +124 -119
  335. package/dist/temp/assets/scripts/selectBox.js +81 -105
  336. package/dist/temp/assets/scripts/shared/ButtonCloseX.js +14 -13
  337. package/dist/temp/assets/scripts/slider.js +105 -113
  338. package/dist/temp/assets/scripts/tab.js +7 -9
  339. package/dist/temp/assets/scripts/table/Table.d.ts +41 -0
  340. package/dist/temp/assets/scripts/table/Table.js +378 -0
  341. package/dist/temp/assets/scripts/table/const/classNames.d.ts +27 -0
  342. package/dist/temp/assets/scripts/table/const/classNames.js +27 -0
  343. package/dist/temp/assets/scripts/table/const/index.d.ts +2 -0
  344. package/dist/temp/assets/scripts/table/const/index.js +2 -0
  345. package/dist/temp/assets/scripts/table/const/types.d.ts +23 -0
  346. package/dist/temp/assets/scripts/table/const/types.js +1 -0
  347. package/dist/temp/assets/scripts/table/index.d.ts +3 -0
  348. package/dist/temp/assets/scripts/table/index.js +8 -0
  349. package/dist/temp/assets/scripts/tag/Tag.js +104 -112
  350. package/dist/temp/assets/scripts/tag/const/classNames.js +3 -3
  351. package/dist/temp/assets/scripts/tag/const/sizes.js +4 -4
  352. package/dist/temp/assets/scripts/tooltip/Tooltip.js +125 -150
  353. package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.js +20 -23
  354. package/dist/temp/assets/scripts/tooltip/const/classNames.js +1 -1
  355. package/dist/temp/assets/scripts/tooltip/const/constants.d.ts +1 -1
  356. package/dist/temp/assets/scripts/tooltip/const/constants.js +14 -14
  357. package/dist/temp/assets/scripts/tooltip/const/icons.js +7 -7
  358. package/dist/temp/assets/scripts/tooltip/const/templates.js +42 -13
  359. package/dist/temp/assets/scripts/tooltip/utils.js +13 -15
  360. package/dist/temp/assets/scripts/utils/debounce.js +5 -9
  361. package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.js +96 -105
  362. package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.js +96 -121
  363. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.js +170 -193
  364. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +173 -250
  365. package/dist/temp/constant/color.js +1 -1
  366. package/dist/temp/index.d.ts +0 -27
  367. package/dist/temp/index.js +0 -27
  368. package/dist/temp/src/components/badge/Badge.js +3 -15
  369. package/dist/temp/src/components/badge/index.d.ts +0 -1
  370. package/dist/temp/src/components/badge/index.js +0 -1
  371. package/dist/temp/src/components/badge/utils.js +5 -7
  372. package/dist/{types/src/components/badge → temp/src/components/badge-group}/BadgeGroup.d.ts +1 -1
  373. package/dist/temp/src/components/badge-group/BadgeGroup.js +13 -0
  374. package/dist/temp/src/components/badge-group/index.d.ts +1 -0
  375. package/dist/temp/src/components/badge-group/index.js +1 -0
  376. package/dist/temp/src/components/bread-crumb/BreadCrumb.js +20 -0
  377. package/dist/temp/src/components/button/Button.js +21 -38
  378. package/dist/temp/src/components/button/ButtonCloseX.js +3 -15
  379. package/dist/temp/src/components/button/ButtonStepper.js +2 -3
  380. package/dist/temp/src/components/button/index.d.ts +0 -1
  381. package/dist/temp/src/components/button/index.js +0 -1
  382. package/dist/{types/src/components/button → temp/src/components/button-group}/ButtonGroup.d.ts +5 -4
  383. package/dist/temp/src/components/button-group/ButtonGroup.js +51 -0
  384. package/dist/temp/src/components/button-group/index.d.ts +1 -0
  385. package/dist/temp/src/components/button-group/index.js +1 -0
  386. package/dist/temp/src/components/carousel-arrow/CarouselArrow.js +9 -0
  387. package/dist/temp/src/components/carousel-arrow/index.d.ts +1 -0
  388. package/dist/temp/src/components/carousel-arrow/index.js +1 -0
  389. package/dist/temp/src/components/carousel-number-group/CarouselNumberGroup.js +10 -0
  390. package/dist/{types/src/components/carousel → temp/src/components/carousel-number-group}/index.d.ts +0 -1
  391. package/dist/temp/src/components/{carousel → carousel-number-group}/index.js +0 -1
  392. package/dist/temp/src/components/checkbox/Checkbox.js +2 -25
  393. package/dist/temp/src/components/checkbox/CheckboxInput.js +6 -29
  394. package/dist/temp/src/components/combo-box/ComboBox.js +165 -0
  395. package/dist/temp/src/components/data-grid/DataGrid.d.ts +28 -0
  396. package/dist/temp/src/components/data-grid/DataGrid.js +88 -0
  397. package/dist/temp/src/components/data-grid/DataGrid.types.d.ts +35 -0
  398. package/dist/temp/src/components/data-grid/DataGrid.types.js +1 -0
  399. package/dist/temp/src/components/data-grid/index.d.ts +2 -0
  400. package/dist/temp/src/components/data-grid/index.js +2 -0
  401. package/dist/temp/src/components/date-picker/CustomInput.js +5 -28
  402. package/dist/temp/src/components/date-picker/DatePicker.d.ts +11 -7
  403. package/dist/temp/src/components/date-picker/DatePicker.js +394 -221
  404. package/dist/temp/src/components/date-picker/index.d.ts +0 -2
  405. package/dist/temp/src/components/date-picker/index.js +0 -2
  406. package/dist/temp/src/components/date-picker/utils.js +1 -2
  407. package/dist/temp/src/components/divider/Divider.js +1 -15
  408. package/dist/temp/src/components/dot/Dot.js +2 -25
  409. package/dist/temp/src/components/dropdown/Dropdown.js +23 -39
  410. package/dist/temp/src/components/empty-state/EmptyState.js +3 -29
  411. package/dist/temp/src/components/featured-icon/FeaturedIcon.js +3 -26
  412. package/dist/temp/src/components/file-input/FileInput.d.ts +1 -1
  413. package/dist/temp/src/components/file-input/FileInput.js +33 -69
  414. package/dist/{types/src/components/tab → temp/src/components/horizontal-tab}/HorizontalTab.d.ts +1 -1
  415. package/dist/temp/src/components/horizontal-tab/HorizontalTab.js +24 -0
  416. package/dist/temp/src/components/horizontal-tab/index.d.ts +1 -0
  417. package/dist/temp/src/components/horizontal-tab/index.js +1 -0
  418. package/dist/temp/src/components/image-file-input/ImageFileInput.d.ts +1 -1
  419. package/dist/temp/src/components/image-file-input/ImageFileInput.js +45 -73
  420. package/dist/temp/src/components/image-file-input/components/ImagePreview.js +2 -14
  421. package/dist/temp/src/components/index.d.ts +17 -5
  422. package/dist/temp/src/components/index.js +17 -5
  423. package/dist/temp/src/components/{input → input-base}/InputBase.d.ts +1 -0
  424. package/dist/temp/src/components/input-base/InputBase.js +96 -0
  425. package/dist/temp/src/components/input-base/index.d.ts +1 -0
  426. package/dist/temp/src/components/input-base/index.js +1 -0
  427. package/dist/temp/src/components/modal/Modal.js +15 -41
  428. package/dist/temp/src/components/notification/FloatingNotification.js +11 -34
  429. package/dist/temp/src/components/notification/FullWidthNotification.js +12 -35
  430. package/dist/temp/src/components/notification/MessageNotification.js +8 -31
  431. package/dist/temp/src/components/notification/Notification.js +4 -27
  432. package/dist/{types/src/components/input → temp/src/components/number-input}/NumberInput.d.ts +1 -1
  433. package/dist/temp/src/components/number-input/NumberInput.js +68 -0
  434. package/dist/temp/src/components/number-input/index.d.ts +1 -0
  435. package/dist/temp/src/components/number-input/index.js +1 -0
  436. package/dist/temp/src/components/pagination/NavButton.js +19 -31
  437. package/dist/temp/src/components/pagination/Pagination.js +33 -60
  438. package/dist/temp/src/components/{input → password-input}/PasswordInput.d.ts +1 -1
  439. package/dist/temp/src/components/password-input/PasswordInput.js +28 -0
  440. package/dist/temp/src/components/password-input/index.d.ts +1 -0
  441. package/dist/temp/src/components/password-input/index.js +1 -0
  442. package/dist/temp/src/components/progress-bar/ProgressBar.js +10 -22
  443. package/dist/temp/src/components/progress-bar/components/SegmentBar.js +5 -6
  444. package/dist/temp/src/components/progress-bar/components/SegmentLabels.js +11 -24
  445. package/dist/temp/src/components/progress-bar/hooks/useProgressBar.js +36 -45
  446. package/dist/temp/src/components/progress-bar/utils.js +8 -8
  447. package/dist/temp/src/components/progress-circle/ProgressCircle.js +5 -17
  448. package/dist/temp/src/components/radio/Radio.js +2 -25
  449. package/dist/temp/src/components/radio/RadioInput.js +2 -25
  450. package/dist/{types/src/components/date-picker → temp/src/components/range-date-picker}/RangeDatePicker.d.ts +1 -1
  451. package/dist/temp/src/components/range-date-picker/RangeDatePicker.js +104 -0
  452. package/dist/temp/src/components/range-date-picker/index.d.ts +1 -0
  453. package/dist/temp/src/components/range-date-picker/index.js +1 -0
  454. package/dist/{types/src/components/date-picker → temp/src/components/range-date-picker-with-buttons}/RangeDatePickerWithButtons.d.ts +1 -1
  455. package/dist/temp/src/components/range-date-picker-with-buttons/RangeDatePickerWithButtons.js +43 -0
  456. package/dist/temp/src/components/range-date-picker-with-buttons/index.d.ts +1 -0
  457. package/dist/temp/src/components/range-date-picker-with-buttons/index.js +1 -0
  458. package/dist/temp/src/components/select/Select.js +3 -26
  459. package/dist/temp/src/components/select-box/SelectBox.js +130 -0
  460. package/dist/temp/src/components/select-dropdown/SelectDropdown.js +11 -34
  461. package/dist/temp/src/components/shared/hintText/HintText.js +2 -25
  462. package/dist/temp/src/components/shared/label/Label.js +2 -25
  463. package/dist/temp/src/components/slider/Slider.js +15 -16
  464. package/dist/temp/src/components/spinner/Spinner.js +4 -17
  465. package/dist/temp/src/components/switch/Switch.js +17 -30
  466. package/dist/temp/src/components/tab/TabButton.js +6 -29
  467. package/dist/temp/src/components/tab/index.d.ts +0 -2
  468. package/dist/temp/src/components/tab/index.js +0 -2
  469. package/dist/temp/src/components/table/Table.d.ts +46 -0
  470. package/dist/temp/src/components/table/Table.js +115 -0
  471. package/dist/temp/src/components/table/index.d.ts +1 -0
  472. package/dist/temp/src/components/table/index.js +1 -0
  473. package/dist/temp/src/components/table/types.d.ts +45 -0
  474. package/dist/temp/src/components/table/types.js +1 -0
  475. package/dist/temp/src/components/tag/Tag.js +39 -53
  476. package/dist/temp/src/components/textarea/Textarea.js +34 -0
  477. package/dist/temp/src/components/textarea/index.d.ts +1 -0
  478. package/dist/temp/src/components/textarea/index.js +1 -0
  479. package/dist/temp/src/components/toggle/Toggle.js +3 -26
  480. package/dist/temp/src/components/tooltip/Tooltip.js +49 -67
  481. package/dist/temp/src/components/{tab → vertical-tab}/VerticalTab.d.ts +1 -1
  482. package/dist/temp/src/components/vertical-tab/VerticalTab.js +20 -0
  483. package/dist/temp/src/components/vertical-tab/index.d.ts +1 -0
  484. package/dist/temp/src/components/vertical-tab/index.js +1 -0
  485. package/dist/temp/src/constant/breakpoint.js +3 -3
  486. package/dist/temp/src/constant/date-picker.js +1 -1
  487. package/dist/temp/src/constant/size.js +1 -1
  488. package/dist/temp/src/hooks/dropdown/useDropdown.js +37 -37
  489. package/dist/temp/src/hooks/dropdown/useDropdownKeyboard.js +26 -27
  490. package/dist/temp/src/hooks/dropdown/useDropdownPosition.js +7 -7
  491. package/dist/temp/src/hooks/dropdown/useOutsideClick.js +7 -7
  492. package/dist/temp/src/hooks/dropdown/useScrollLock.js +17 -17
  493. package/dist/temp/src/hooks/dropdown/useWindowResize.js +10 -11
  494. package/dist/temp/src/hooks/useCallbackRef.js +2 -2
  495. package/dist/temp/src/hooks/useMediaQuery.js +8 -9
  496. package/dist/temp/src/hooks/useMergeRefs.js +2 -2
  497. package/dist/temp/src/utils/date-picker.js +23 -25
  498. package/dist/temp/src/utils/dropdown/dropdownUtils.js +26 -27
  499. package/dist/temp/src/utils/dropdown/multiSelect.js +23 -25
  500. package/dist/types/assets/scripts/index.d.ts +2 -0
  501. package/dist/types/assets/scripts/table/Table.d.ts +41 -0
  502. package/dist/types/assets/scripts/table/const/classNames.d.ts +27 -0
  503. package/dist/types/assets/scripts/table/const/index.d.ts +2 -0
  504. package/dist/types/assets/scripts/table/const/types.d.ts +23 -0
  505. package/dist/types/assets/scripts/table/index.d.ts +3 -0
  506. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +1 -1
  507. package/dist/types/index.d.ts +0 -27
  508. package/dist/types/src/components/badge/index.d.ts +0 -1
  509. package/dist/{temp/src/components/badge → types/src/components/badge-group}/BadgeGroup.d.ts +1 -1
  510. package/dist/types/src/components/badge-group/index.d.ts +1 -0
  511. package/dist/types/src/components/button/index.d.ts +0 -1
  512. package/dist/{temp/src/components/button → types/src/components/button-group}/ButtonGroup.d.ts +5 -4
  513. package/dist/types/src/components/button-group/index.d.ts +1 -0
  514. package/dist/types/src/components/carousel-arrow/index.d.ts +1 -0
  515. package/dist/{temp/src/components/carousel → types/src/components/carousel-number-group}/index.d.ts +0 -1
  516. package/dist/types/src/components/data-grid/DataGrid.d.ts +28 -0
  517. package/dist/types/src/components/data-grid/DataGrid.types.d.ts +35 -0
  518. package/dist/types/src/components/data-grid/index.d.ts +2 -0
  519. package/dist/types/src/components/date-picker/DatePicker.d.ts +11 -7
  520. package/dist/types/src/components/date-picker/index.d.ts +0 -2
  521. package/dist/types/src/components/file-input/FileInput.d.ts +1 -1
  522. package/dist/{temp/src/components/tab → types/src/components/horizontal-tab}/HorizontalTab.d.ts +1 -1
  523. package/dist/types/src/components/horizontal-tab/index.d.ts +1 -0
  524. package/dist/types/src/components/image-file-input/ImageFileInput.d.ts +1 -1
  525. package/dist/types/src/components/index.d.ts +17 -5
  526. package/dist/types/src/components/{input → input-base}/InputBase.d.ts +1 -0
  527. package/dist/types/src/components/input-base/index.d.ts +1 -0
  528. package/dist/{temp/src/components/input → types/src/components/number-input}/NumberInput.d.ts +1 -1
  529. package/dist/types/src/components/number-input/index.d.ts +1 -0
  530. package/dist/types/src/components/{input → password-input}/PasswordInput.d.ts +1 -1
  531. package/dist/types/src/components/password-input/index.d.ts +1 -0
  532. package/dist/{temp/src/components/date-picker → types/src/components/range-date-picker}/RangeDatePicker.d.ts +1 -1
  533. package/dist/types/src/components/range-date-picker/index.d.ts +1 -0
  534. package/dist/{temp/src/components/date-picker → types/src/components/range-date-picker-with-buttons}/RangeDatePickerWithButtons.d.ts +1 -1
  535. package/dist/types/src/components/range-date-picker-with-buttons/index.d.ts +1 -0
  536. package/dist/types/src/components/tab/index.d.ts +0 -2
  537. package/dist/types/src/components/table/Table.d.ts +46 -0
  538. package/dist/types/src/components/table/index.d.ts +1 -0
  539. package/dist/types/src/components/table/types.d.ts +45 -0
  540. package/dist/types/src/components/textarea/index.d.ts +1 -0
  541. package/dist/types/src/components/{tab → vertical-tab}/VerticalTab.d.ts +1 -1
  542. package/dist/types/src/components/vertical-tab/index.d.ts +1 -0
  543. package/dist/ui-admin/assets/styles/style.css +625 -165
  544. package/package.json +2 -1
  545. package/dist/cjs/src/components/badge/BadgeGroup.js +0 -62
  546. package/dist/cjs/src/components/breadcrumb/BreadCrumb.js +0 -66
  547. package/dist/cjs/src/components/button/ButtonGroup.js +0 -116
  548. package/dist/cjs/src/components/carousel/CarouselArrow.js +0 -41
  549. package/dist/cjs/src/components/carousel/CarouselNumberGroup.js +0 -45
  550. package/dist/cjs/src/components/combobox/ComboBox.js +0 -349
  551. package/dist/cjs/src/components/date-picker/RangeDatePicker.js +0 -154
  552. package/dist/cjs/src/components/date-picker/RangeDatePickerWithButtons.js +0 -99
  553. package/dist/cjs/src/components/input/InputBase.js +0 -229
  554. package/dist/cjs/src/components/input/NumberInput.js +0 -132
  555. package/dist/cjs/src/components/input/PasswordInput.js +0 -72
  556. package/dist/cjs/src/components/input/Textarea.js +0 -107
  557. package/dist/cjs/src/components/input/index.js +0 -49
  558. package/dist/cjs/src/components/selectbox/SelectBox.js +0 -318
  559. package/dist/cjs/src/components/tab/HorizontalTab.js +0 -68
  560. package/dist/cjs/src/components/tab/VerticalTab.js +0 -60
  561. package/dist/esm/src/components/badge/BadgeGroup.js +0 -55
  562. package/dist/esm/src/components/breadcrumb/BreadCrumb.js +0 -59
  563. package/dist/esm/src/components/button/ButtonGroup.js +0 -108
  564. package/dist/esm/src/components/carousel/CarouselArrow.js +0 -33
  565. package/dist/esm/src/components/carousel/CarouselNumberGroup.js +0 -37
  566. package/dist/esm/src/components/carousel/index.js +0 -2
  567. package/dist/esm/src/components/combobox/ComboBox.js +0 -343
  568. package/dist/esm/src/components/date-picker/RangeDatePicker.js +0 -148
  569. package/dist/esm/src/components/date-picker/RangeDatePickerWithButtons.js +0 -93
  570. package/dist/esm/src/components/input/InputBase.js +0 -223
  571. package/dist/esm/src/components/input/PasswordInput.js +0 -65
  572. package/dist/esm/src/components/input/Textarea.js +0 -100
  573. package/dist/esm/src/components/input/index.js +0 -4
  574. package/dist/esm/src/components/selectbox/SelectBox.js +0 -312
  575. package/dist/esm/src/components/tab/HorizontalTab.js +0 -61
  576. package/dist/esm/src/components/tab/VerticalTab.js +0 -52
  577. package/dist/temp/src/components/badge/BadgeGroup.js +0 -36
  578. package/dist/temp/src/components/breadcrumb/BreadCrumb.js +0 -33
  579. package/dist/temp/src/components/button/ButtonGroup.js +0 -72
  580. package/dist/temp/src/components/carousel/CarouselArrow.js +0 -24
  581. package/dist/temp/src/components/carousel/CarouselNumberGroup.js +0 -24
  582. package/dist/temp/src/components/combobox/ComboBox.js +0 -199
  583. package/dist/temp/src/components/date-picker/RangeDatePicker.js +0 -117
  584. package/dist/temp/src/components/date-picker/RangeDatePickerWithButtons.js +0 -55
  585. package/dist/temp/src/components/input/InputBase.js +0 -121
  586. package/dist/temp/src/components/input/NumberInput.js +0 -93
  587. package/dist/temp/src/components/input/PasswordInput.js +0 -51
  588. package/dist/temp/src/components/input/Textarea.js +0 -60
  589. package/dist/temp/src/components/input/index.d.ts +0 -4
  590. package/dist/temp/src/components/input/index.js +0 -4
  591. package/dist/temp/src/components/selectbox/SelectBox.js +0 -163
  592. package/dist/temp/src/components/tab/HorizontalTab.js +0 -37
  593. package/dist/temp/src/components/tab/VerticalTab.js +0 -32
  594. package/dist/types/src/components/input/index.d.ts +0 -4
  595. /package/dist/cjs/src/components/{breadcrumb → bread-crumb}/index.js +0 -0
  596. /package/dist/cjs/src/components/{combobox → combo-box}/index.js +0 -0
  597. /package/dist/cjs/src/components/{selectbox → select-box}/index.js +0 -0
  598. /package/dist/esm/src/components/{breadcrumb → bread-crumb}/index.js +0 -0
  599. /package/dist/esm/src/components/{combobox → combo-box}/index.js +0 -0
  600. /package/dist/esm/src/components/{selectbox → select-box}/index.js +0 -0
  601. /package/dist/temp/src/components/{breadcrumb → bread-crumb}/BreadCrumb.d.ts +0 -0
  602. /package/dist/temp/src/components/{breadcrumb → bread-crumb}/index.d.ts +0 -0
  603. /package/dist/temp/src/components/{breadcrumb → bread-crumb}/index.js +0 -0
  604. /package/dist/temp/src/components/{carousel → carousel-arrow}/CarouselArrow.d.ts +0 -0
  605. /package/dist/temp/src/components/{carousel → carousel-number-group}/CarouselNumberGroup.d.ts +0 -0
  606. /package/dist/temp/src/components/{combobox → combo-box}/ComboBox.d.ts +0 -0
  607. /package/dist/temp/src/components/{combobox → combo-box}/index.d.ts +0 -0
  608. /package/dist/temp/src/components/{combobox → combo-box}/index.js +0 -0
  609. /package/dist/temp/src/components/{selectbox → select-box}/SelectBox.d.ts +0 -0
  610. /package/dist/temp/src/components/{selectbox → select-box}/index.d.ts +0 -0
  611. /package/dist/temp/src/components/{selectbox → select-box}/index.js +0 -0
  612. /package/dist/temp/src/components/{input → textarea}/Textarea.d.ts +0 -0
  613. /package/dist/types/src/components/{breadcrumb → bread-crumb}/BreadCrumb.d.ts +0 -0
  614. /package/dist/types/src/components/{breadcrumb → bread-crumb}/index.d.ts +0 -0
  615. /package/dist/types/src/components/{carousel → carousel-arrow}/CarouselArrow.d.ts +0 -0
  616. /package/dist/types/src/components/{carousel → carousel-number-group}/CarouselNumberGroup.d.ts +0 -0
  617. /package/dist/types/src/components/{combobox → combo-box}/ComboBox.d.ts +0 -0
  618. /package/dist/types/src/components/{combobox → combo-box}/index.d.ts +0 -0
  619. /package/dist/types/src/components/{selectbox → select-box}/SelectBox.d.ts +0 -0
  620. /package/dist/types/src/components/{selectbox → select-box}/index.d.ts +0 -0
  621. /package/dist/types/src/components/{input → textarea}/Textarea.d.ts +0 -0
@@ -1,144 +1,280 @@
1
- var __assign = this && this.__assign || function () {
2
- __assign = Object.assign || function (t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
6
- }
7
- return t;
8
- };
9
- return __assign.apply(this, arguments);
10
- };
11
- var __rest = this && this.__rest || function (s, e) {
12
- var t = {};
13
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
14
- if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
15
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
16
- }
17
- return t;
18
- };
19
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
- /** biome-ignore-all lint/correctness/noUnusedVariables: <explanation> */
21
2
  import classNames from 'classnames';
22
3
  import { Korean } from 'flatpickr/dist/l10n/ko';
23
4
  import moment from 'moment';
24
- import { forwardRef, useId, useMemo, useRef } from 'react';
5
+ import { forwardRef, useCallback, useEffect, useId, useMemo, useRef } from 'react';
25
6
  import Flatpickr from 'react-flatpickr';
26
7
  import { formatDateInput, formatHourInput, formatMinuteInput } from '../../utils/date-picker';
27
8
  import { CustomInput } from './CustomInput';
28
- var isValidDate = function (dateString) {
29
- var date = new Date(dateString);
9
+ // ══════════════════════════════════════════
10
+ // 유틸리티 함수
11
+ // ══════════════════════════════════════════
12
+ const isValidDate = dateString => {
13
+ const date = new Date(dateString);
30
14
  return date instanceof Date && !isNaN(date.getTime());
31
15
  };
32
- var getTimeOnlyValue = function (hasSeconds, isEndDate) {
33
- var endTime = hasSeconds ? '23:59:59' : '23:59';
34
- var startTime = hasSeconds ? '00:00:00' : '00:00';
16
+ /** input의 스크롤 가능한 부모 요소들을 수집 */
17
+ const collectScrollParents = element => {
18
+ const parents = [];
19
+ let parentEl = element.parentElement;
20
+ while (parentEl) {
21
+ const {
22
+ overflow,
23
+ overflowY
24
+ } = getComputedStyle(parentEl);
25
+ if (overflow !== 'visible' || overflowY !== 'visible') {
26
+ parents.push(parentEl);
27
+ }
28
+ parentEl = parentEl.parentElement;
29
+ }
30
+ return parents;
31
+ };
32
+ /** 현재 열려있는 flatpickr 캘린더 요소를 반환 */
33
+ const getOpenCalendar = (instance, input, isPortal) => {
34
+ if (isPortal) {
35
+ return instance.calendarContainer?.classList.contains('open') ? instance.calendarContainer : null;
36
+ }
37
+ return input.parentElement?.querySelector('.flatpickr-calendar.open') ?? null;
38
+ };
39
+ /** selectedDate가 유효하지 않으면 이전 날짜로 복원하고 true 반환 */
40
+ const restoreIfInvalidDate = (date, instance) => {
41
+ if (date && date instanceof Date && !isNaN(date.getTime())) {
42
+ return false;
43
+ }
44
+ const previousDate = instance._previousDateBeforeInput;
45
+ if (previousDate && previousDate instanceof Date && !isNaN(previousDate.getTime())) {
46
+ instance.selectedDates = [previousDate];
47
+ instance.setDate(previousDate, false);
48
+ } else if (instance.input) {
49
+ instance.input.value = '';
50
+ instance.setDate('', false);
51
+ }
52
+ return true;
53
+ };
54
+ /** 시간 전용 모드의 기본값 반환 */
55
+ const getTimeOnlyDefault = (hasSeconds, isEndDate) => {
56
+ const endTime = hasSeconds ? '23:59:59' : '23:59';
57
+ const startTime = hasSeconds ? '00:00:00' : '00:00';
35
58
  return isEndDate ? endTime : startTime;
36
59
  };
37
- var getDateTimeValue = function (currentDate, hasSeconds, isEndDate) {
38
- var format = hasSeconds ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm';
39
- var momentDate = moment(currentDate);
60
+ /** 날짜+시간 모드에서 시간이 없는 경우 기본값 부여 */
61
+ const getDateTimeDefault = (currentDate, hasSeconds, isEndDate) => {
62
+ if (!currentDate) return '';
63
+ const format = hasSeconds ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm';
64
+ const momentDate = moment(currentDate);
40
65
  return isEndDate ? momentDate.endOf('day').format(format) : momentDate.startOf('day').format(format);
41
66
  };
42
- var processDate = function (currentDate, isEndDate, enableTime, noCalendar, enableSeconds) {
43
- if (!enableTime && !noCalendar) return currentDate;
44
- if (currentDate === null || currentDate === void 0 ? void 0 : currentDate.includes(':')) return currentDate;
45
- if (noCalendar) {
46
- return getTimeOnlyValue(enableSeconds, isEndDate);
67
+ // ══════════════════════════════════════════
68
+ // 캘린더 위치 조정 (setup / cleanup)
69
+ // ══════════════════════════════════════════
70
+ /** portal 모드: 캘린더 위치 재조정 및 스크롤 이벤트 연결 */
71
+ const setupPortalPositioning = (instance, input) => {
72
+ const reposition = () => {
73
+ if (instance.config) instance._positionCalendar();
74
+ };
75
+ instance._reposition = reposition;
76
+ const scrollParents = collectScrollParents(input);
77
+ instance._portalScrollParents = scrollParents;
78
+ instance.config.onOpen.push(() => {
79
+ scrollParents.forEach(target => {
80
+ target.addEventListener('scroll', reposition, {
81
+ passive: true
82
+ });
83
+ });
84
+ window.addEventListener('scroll', reposition, {
85
+ passive: true
86
+ });
87
+ });
88
+ instance.config.onClose.push(() => {
89
+ scrollParents.forEach(target => {
90
+ target.removeEventListener('scroll', reposition);
91
+ });
92
+ window.removeEventListener('scroll', reposition);
93
+ });
94
+ };
95
+ /** 일반 모드: 아래 공간 부족 시 캘린더를 위에 표시하고 스크롤/리사이즈 이벤트 연결 */
96
+ const setupStaticPositioning = (instance, input) => {
97
+ const adjustPosition = () => {
98
+ const calendar = instance.calendarContainer;
99
+ if (!calendar) return;
100
+ const wrapperEl = input.closest('.ncua-date-picker');
101
+ const rect = wrapperEl ? wrapperEl.getBoundingClientRect() : input.getBoundingClientRect();
102
+ const calendarHeight = calendar.offsetHeight;
103
+ const CALENDAR_GAP = 6;
104
+ const spaceBelow = window.innerHeight - rect.bottom;
105
+ calendar.style.top = spaceBelow < calendarHeight + CALENDAR_GAP ? `${-(calendarHeight + CALENDAR_GAP)}px` : '';
106
+ };
107
+ const scrollParents = collectScrollParents(input);
108
+ instance._adjustPosition = adjustPosition;
109
+ instance._scrollParents = scrollParents;
110
+ instance.config.onOpen.push(() => {
111
+ adjustPosition();
112
+ scrollParents.forEach(target => {
113
+ target.addEventListener('scroll', adjustPosition, {
114
+ passive: true
115
+ });
116
+ });
117
+ window.addEventListener('scroll', adjustPosition, {
118
+ passive: true
119
+ });
120
+ window.addEventListener('resize', adjustPosition);
121
+ });
122
+ instance.config.onClose.push(() => {
123
+ scrollParents.forEach(target => {
124
+ target.removeEventListener('scroll', adjustPosition);
125
+ });
126
+ window.removeEventListener('scroll', adjustPosition);
127
+ window.removeEventListener('resize', adjustPosition);
128
+ });
129
+ };
130
+ /** scroll/resize 리스너 정리 */
131
+ const cleanupPositioning = instance => {
132
+ const reposition = instance._reposition;
133
+ if (reposition) {
134
+ const portalScrollParents = instance._portalScrollParents || [];
135
+ portalScrollParents.forEach(target => {
136
+ target.removeEventListener('scroll', reposition);
137
+ });
138
+ window.removeEventListener('scroll', reposition);
139
+ }
140
+ const adjustPosition = instance._adjustPosition;
141
+ if (adjustPosition) {
142
+ const scrollParents = instance._scrollParents || [];
143
+ scrollParents.forEach(target => {
144
+ target.removeEventListener('scroll', adjustPosition);
145
+ });
146
+ window.removeEventListener('scroll', adjustPosition);
147
+ window.removeEventListener('resize', adjustPosition);
148
+ }
149
+ };
150
+ // ══════════════════════════════════════════
151
+ // 시간 입력 필드 (setup / cleanup)
152
+ // ══════════════════════════════════════════
153
+ /** enableTime 옵션 사용 시 시간 입력 필드 이벤트 설정 */
154
+ const setupTimeInputHandlers = (instance, input, isPortal, onHourInput, onMinuteInput) => {
155
+ const timeContainer = isPortal ? instance.calendarContainer : input.parentElement;
156
+ const timeInputWrapper = timeContainer?.querySelector('.flatpickr-time');
157
+ if (!timeInputWrapper) return;
158
+ const hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
159
+ const minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
160
+ if (!hourInput || !minuteInput) return;
161
+ hourInput.addEventListener('input', onHourInput);
162
+ minuteInput.addEventListener('input', onMinuteInput);
163
+ const handleMouseDown = e => {
164
+ const flatpickrCalendar = getOpenCalendar(instance, input, isPortal);
165
+ if (flatpickrCalendar && !flatpickrCalendar.contains(e.target)) {
166
+ const timeInputs = flatpickrCalendar.querySelectorAll('.flatpickr-time input');
167
+ timeInputs.forEach(timeInput => {
168
+ if (document.activeElement === timeInput) {
169
+ timeInput.blur();
170
+ }
171
+ });
172
+ }
173
+ };
174
+ document.addEventListener('mousedown', handleMouseDown, true);
175
+ instance._handleMouseDown = handleMouseDown;
176
+ };
177
+ /** 시간 입력 필드 이벤트 리스너 정리 */
178
+ const cleanupTimeInputHandlers = (instance, input, isPortal, onHourInput, onMinuteInput) => {
179
+ const timeContainer = isPortal ? instance.calendarContainer : input.parentElement;
180
+ const timeInputWrapper = timeContainer?.querySelector('.flatpickr-time');
181
+ if (!timeInputWrapper) return;
182
+ const hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
183
+ if (hourInput) {
184
+ hourInput.removeEventListener('input', onHourInput);
185
+ }
186
+ const minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
187
+ if (minuteInput) {
188
+ minuteInput.removeEventListener('input', onMinuteInput);
189
+ }
190
+ const handleMouseDown = instance._handleMouseDown;
191
+ if (handleMouseDown) {
192
+ document.removeEventListener('mousedown', handleMouseDown, true);
47
193
  }
48
- if (!currentDate) return '';
49
- return getDateTimeValue(currentDate, enableSeconds, isEndDate);
50
194
  };
51
- var DatePicker = /*#__PURE__*/forwardRef(function (_a, ref) {
52
- var _b = _a.shouldFocus,
53
- shouldFocus = _b === void 0 ? true : _b,
54
- currentDate = _a.currentDate,
55
- _c = _a.size,
56
- size = _c === void 0 ? 'xs' : _c,
57
- onChangeDate = _a.onChangeDate,
58
- datePickerOptions = _a.datePickerOptions,
59
- _d = _a.isEndDate,
60
- isEndDate = _d === void 0 ? false : _d,
61
- onValidationError = _a.onValidationError,
62
- className = _a.className,
63
- attrs = __rest(_a, ["shouldFocus", "currentDate", "size", "onChangeDate", "datePickerOptions", "isEndDate", "onValidationError", "className"]);
64
- var flatpickrInstanceRef = useRef(null);
65
- var dateFormatRef = useRef('Y-m-d');
66
- var minMaxDateRef = useRef({});
67
- var checkDateViolations = function (date, minDate, maxDate) {
68
- var violations = [];
69
- var inputDate = moment(date);
195
+ // ══════════════════════════════════════════
196
+ // DatePicker 컴포넌트
197
+ // ══════════════════════════════════════════
198
+ export const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
199
+ let {
200
+ shouldFocus = true,
201
+ currentDate,
202
+ size = 'xs',
203
+ onChangeDate,
204
+ datePickerOptions,
205
+ isEndDate = false,
206
+ onValidationError,
207
+ className,
208
+ portal = false,
209
+ ...attrs
210
+ } = _ref;
211
+ const flatpickrInstanceRef = useRef(null);
212
+ const dateFormatRef = useRef('Y-m-d');
213
+ const minMaxDateRef = useRef({});
214
+ /** portal 모드: 캘린더를 담을 persistent 컨테이너 (한 번 생성, 언마운트 시 제거) */
215
+ const portalContainerRef = useRef(null);
216
+ const hasTimeOption = datePickerOptions && Object.hasOwn(datePickerOptions, 'enableTime');
217
+ // 콜백 props를 ref에 저장하여 memoized options에서 최신값 참조
218
+ const onChangeDateRef = useRef(onChangeDate);
219
+ onChangeDateRef.current = onChangeDate;
220
+ const onValidationErrorRef = useRef(onValidationError);
221
+ onValidationErrorRef.current = onValidationError;
222
+ /** portal 컨테이너를 lazily 생성 (이미 있으면 재사용), className은 매번 갱신 */
223
+ const getPortalContainer = () => {
224
+ if (!portal || typeof document === 'undefined') return undefined;
225
+ const portalClassName = classNames('ncua-date-picker', 'ncua-date-picker--portal', `ncua-date-picker--${size}`, {
226
+ 'ncua-date-picker--has-time': hasTimeOption
227
+ });
228
+ if (portalContainerRef.current) {
229
+ portalContainerRef.current.className = portalClassName;
230
+ return portalContainerRef.current;
231
+ }
232
+ const el = document.createElement('div');
233
+ el.className = portalClassName;
234
+ // ncua-date-picker의 position/width/height가 캘린더 배치를 방해하지 않도록 무력화
235
+ el.style.cssText = 'position:static;width:auto;height:auto;overflow:visible;';
236
+ document.body.appendChild(el);
237
+ portalContainerRef.current = el;
238
+ return el;
239
+ };
240
+ /** 컴포넌트 언마운트 시 포탈 컨테이너 및 스크롤 리스너 정리 */
241
+ useEffect(() => {
242
+ return () => {
243
+ portalContainerRef.current?.remove();
244
+ portalContainerRef.current = null;
245
+ };
246
+ }, []);
247
+ // ──────────────────────────────────────────────
248
+ // 날짜 유효성 검사
249
+ // ──────────────────────────────────────────────
250
+ /** minDate/maxDate 범위를 벗어났는지 확인 */
251
+ const checkDateViolations = (date, minDate, maxDate) => {
252
+ const violations = [];
253
+ const inputDate = moment(date);
70
254
  if (!inputDate.isValid()) return violations;
71
255
  if (minDate) {
72
- var min = moment(minDate);
256
+ const min = moment(minDate);
73
257
  if (min.isValid() && inputDate.isBefore(min, 'day')) {
74
258
  violations.push('minDate');
75
259
  }
76
260
  }
77
261
  if (maxDate) {
78
- var max = moment(maxDate);
262
+ const max = moment(maxDate);
79
263
  if (max.isValid() && inputDate.isAfter(max, 'day')) {
80
264
  violations.push('maxDate');
81
265
  }
82
266
  }
83
267
  return violations;
84
268
  };
85
- var isValidDateInstance = function (date) {
86
- return date instanceof Date && !isNaN(date.getTime());
87
- };
88
- var handleInvalidSelectedDate = function (instance) {
89
- var previousDate = instance === null || instance === void 0 ? void 0 : instance._previousDateBeforeInput;
90
- if (isValidDateInstance(previousDate)) {
91
- // 이전 값이 있으면 이전 값으로 복원
92
- instance.selectedDates = [previousDate];
93
- instance.setDate(previousDate, false);
94
- } else {
95
- // 이전 값이 없으면 빈 값으로 처리
96
- restorePreviousDate(instance.input, instance);
97
- }
98
- return true;
99
- };
100
- var handleDateViolations = function (selectedDate, instance) {
101
- var _a;
102
- var minDate = options.minDate,
103
- maxDate = options.maxDate;
104
- var violations = checkDateViolations(selectedDate, minDate, maxDate);
105
- if (violations.length > 0 && onValidationError) {
106
- var prevDate = (_a = instance === null || instance === void 0 ? void 0 : instance.selectedDates) === null || _a === void 0 ? void 0 : _a[0];
107
- onValidationError({
108
- date: selectedDate,
109
- minDate: minDate,
110
- maxDate: maxDate,
111
- violations: violations,
112
- previousDate: isValidDateInstance(prevDate) ? prevDate : undefined
113
- });
114
- return true; // onValidationError가 있으면 날짜 변경 안 함
115
- }
116
- return false;
117
- };
118
- var onChangeDateHandler = function (dateTimeStamp, dateStr, instance) {
119
- if (!dateTimeStamp || dateTimeStamp.length === 0) {
120
- restorePreviousDate(instance.input, instance);
121
- return;
122
- }
123
- var selectedDate = dateTimeStamp[0];
124
- if (!isValidDateInstance(selectedDate)) {
125
- // 유효하지 않은 날짜 - 이전 값으로 복원하거나 빈 값으로 처리
126
- handleInvalidSelectedDate(instance);
127
- return;
128
- }
129
- if (handleDateViolations(selectedDate, instance)) {
130
- return;
131
- }
132
- // 유효한 날짜인 경우 이전 날짜로 저장
133
- instance._previousDateBeforeInput = selectedDate;
134
- var formattedDate = formatDateInput(dateStr);
135
- isValidDate(formattedDate) ? onChangeDate(formattedDate) : onChangeDate(dateStr);
136
- };
137
- var restorePreviousDate = function (target, instance) {
269
+ // ──────────────────────────────────────────────
270
+ // 이벤트 핸들러
271
+ // ──────────────────────────────────────────────
272
+ /** 유효하지 않은 입력 이전 날짜로 복원 */
273
+ const restorePreviousDate = (target, instance) => {
138
274
  if (instance.selectedDates.length > 0) {
139
- var prevDate = instance.selectedDates[0];
275
+ const prevDate = instance.selectedDates[0];
140
276
  if (prevDate instanceof Date && !isNaN(prevDate.getTime())) {
141
- var momentFormat = dateFormatRef.current.replace(/Y/g, 'YYYY').replace(/m/g, 'MM').replace(/d/g, 'DD');
277
+ const momentFormat = dateFormatRef.current.replace(/Y/g, 'YYYY').replace(/m/g, 'MM').replace(/d/g, 'DD');
142
278
  target.value = moment(prevDate).format(momentFormat);
143
279
  instance.setDate(prevDate, false);
144
280
  return;
@@ -147,215 +283,240 @@ var DatePicker = /*#__PURE__*/forwardRef(function (_a, ref) {
147
283
  target.value = '';
148
284
  instance.setDate('', false);
149
285
  };
150
- var handleEmptyInput = function (target, instance) {
151
- target.value = '';
152
- instance.setDate('', false);
153
- onChangeDate('');
154
- return true;
155
- };
156
- var validateFormattedDate = function (formattedInput, target, instance) {
157
- var parsedDate = moment(formattedInput);
158
- if (!parsedDate.isValid()) {
159
- restorePreviousDate(target, instance);
160
- return false;
286
+ /** flatpickr에서 날짜가 변경되었을 호출 */
287
+ const onChangeDateHandler = useCallback((dateTimeStamp, dateStr, fpInstance) => {
288
+ const instance = fpInstance;
289
+ if (!dateTimeStamp || dateTimeStamp.length === 0) {
290
+ restorePreviousDate(instance.input, instance);
291
+ return;
161
292
  }
162
- var parsedDateObj = parsedDate.toDate();
163
- var violations = checkDateViolations(parsedDateObj, minMaxDateRef.current.minDate, minMaxDateRef.current.maxDate);
164
- // onInputHandler에서는 onValidationError를 호출하지 않음
165
- // validation은 onChangeDateHandler에서만 처리
166
- return violations.length === 0;
167
- };
168
- var onInputHandler = function (e) {
169
- var target = e.target;
170
- var input = target.value;
171
- var instance = flatpickrInstanceRef.current;
293
+ if (restoreIfInvalidDate(dateTimeStamp[0], instance)) return;
294
+ const selectedDate = dateTimeStamp[0];
295
+ const minDate = instance.config.minDate;
296
+ const maxDate = instance.config.maxDate;
297
+ const violations = checkDateViolations(selectedDate, minDate, maxDate);
298
+ if (violations.length > 0 && onValidationErrorRef.current) {
299
+ const prevDate = instance?.selectedDates?.[0];
300
+ const validPrevDate = prevDate instanceof Date && !isNaN(prevDate.getTime()) ? prevDate : undefined;
301
+ onValidationErrorRef.current({
302
+ date: selectedDate,
303
+ minDate,
304
+ maxDate,
305
+ violations,
306
+ previousDate: validPrevDate
307
+ });
308
+ return;
309
+ }
310
+ instance._previousDateBeforeInput = selectedDate;
311
+ const formattedDate = formatDateInput(dateStr);
312
+ isValidDate(formattedDate) ? onChangeDateRef.current(formattedDate) : onChangeDateRef.current(dateStr);
313
+ }, []);
314
+ /** input에 직접 타이핑할 때 날짜 형식 자동 변환 및 유효성 검사 */
315
+ // eslint-disable-next-line react-hooks/exhaustive-deps
316
+ const onInputHandler = useCallback(e => {
317
+ const target = e.target;
318
+ const input = target.value;
319
+ const instance = flatpickrInstanceRef.current;
172
320
  if (!instance) return;
173
- if (!input || input.trim() === '') {
174
- handleEmptyInput(target, instance);
321
+ if (!input?.trim()) {
322
+ target.value = '';
323
+ instance.setDate('', false);
324
+ onChangeDateRef.current('');
175
325
  return;
176
326
  }
177
- // 숫자가 최소 하나는 포함되어야 함 (하이픈만 있는 경우 방지)
178
327
  if (!/[0-9]/.test(input)) {
179
328
  restorePreviousDate(target, instance);
180
329
  return;
181
330
  }
182
- var formattedInput = formatDateInput(input);
331
+ const formattedInput = formatDateInput(input);
183
332
  if (formattedInput !== input) {
184
333
  target.value = formattedInput;
185
334
  return;
186
335
  }
187
- if (formattedInput && formattedInput.length >= 10 && !validateFormattedDate(formattedInput, target, instance)) {
336
+ if (!formattedInput || formattedInput.length < 10) return;
337
+ const parsedDate = moment(formattedInput);
338
+ if (!parsedDate.isValid()) {
339
+ restorePreviousDate(target, instance);
188
340
  return;
189
341
  }
190
- };
191
- var onHourInputHandler = function (e) {
192
- var target = e.target;
193
- var input = target.value;
194
- var formattedInput = formatHourInput(input);
342
+ const parsedDateObj = parsedDate.toDate();
343
+ const violations = checkDateViolations(parsedDateObj, minMaxDateRef.current.minDate, minMaxDateRef.current.maxDate);
344
+ if (violations.length > 0) {
345
+ return;
346
+ }
347
+ }, []);
348
+ /** 시간 입력 필드 - 시(hour) 값 포맷팅 (0~23) */
349
+ const onHourInputHandler = useCallback(e => {
350
+ const target = e.target;
351
+ const input = target.value;
352
+ const formattedInput = formatHourInput(input);
195
353
  if (formattedInput === input) return;
196
354
  target.value = formattedInput;
197
- };
198
- var onMinuteInputHandler = function (e) {
199
- var target = e.target;
200
- var input = target.value;
201
- var formattedInput = formatMinuteInput(input);
355
+ }, []);
356
+ /** 시간 입력 필드 - 분(minute) 값 포맷팅 (0~59) */
357
+ const onMinuteInputHandler = useCallback(e => {
358
+ const target = e.target;
359
+ const input = target.value;
360
+ const formattedInput = formatMinuteInput(input);
202
361
  if (formattedInput === input) return;
203
362
  target.value = formattedInput;
204
- };
205
- var inputId = useId();
206
- var options = __assign({
363
+ }, []);
364
+ const inputId = useId();
365
+ // ──────────────────────────────────────────────
366
+ // flatpickr 옵션
367
+ // ──────────────────────────────────────────────
368
+ // datePickerOptions는 부모에서 매 렌더 새 객체일 수 있으므로 값 기반 비교
369
+ // 주의: JSON.stringify는 함수를 무시하고 Date를 문자열로 변환하므로,
370
+ // datePickerOptions에 함수나 Date 객체를 넘기면 변경 감지가 누락될 수 있음
371
+ // eslint-disable-next-line react-hooks/exhaustive-deps
372
+ const datePickerOptionsKey = JSON.stringify(datePickerOptions);
373
+ // eslint-disable-next-line react-hooks/exhaustive-deps
374
+ const options = useMemo(() => ({
207
375
  mode: 'single',
208
- static: true,
376
+ static: !portal,
377
+ ...(portal && {
378
+ appendTo: getPortalContainer()
379
+ }),
209
380
  locale: Korean,
210
381
  dateFormat: 'Y-m-d',
211
382
  clickOpens: true,
212
383
  time_24hr: true,
213
- formatDate: function (date, format, _locale) {
384
+ /** flatpickr 기본 포맷 대신 moment를 사용하여 한국어 날짜 형식 지원 */
385
+ formatDate: (date, format, _locale) => {
214
386
  try {
215
- // 유효한 날짜인지 확인
216
387
  if (!date || !(date instanceof Date) || isNaN(date.getTime())) {
217
388
  return '';
218
389
  }
219
- // moment로 포맷팅
220
- var momentDate = moment(date);
390
+ const momentDate = moment(date);
221
391
  if (!momentDate.isValid()) {
222
392
  return '';
223
393
  }
224
- // format moment 형식으로 변환
225
- var momentFormat = format.replace(/Y/g, 'YYYY').replace(/y/g, 'YY').replace(/m/g, 'MM').replace(/d/g, 'DD').replace(/H/g, 'HH').replace(/i/g, 'mm').replace(/S/g, 'ss');
394
+ const momentFormat = format.replace(/Y/g, 'YYYY').replace(/y/g, 'YY').replace(/m/g, 'MM').replace(/d/g, 'DD').replace(/H/g, 'HH').replace(/i/g, 'mm').replace(/S/g, 'ss');
226
395
  return momentDate.format(momentFormat);
227
- } catch (error) {
228
- // 오류 발생 시 빈 문자열 반환 (232-23 같은 잘못된 날짜 처리)
396
+ } catch (_error) {
229
397
  return '';
230
398
  }
231
399
  },
232
400
  onChange: onChangeDateHandler,
233
401
  allowInvalidPreload: true,
234
- onReady: function (_selectedDates, _dateStr, instance) {
235
- var _a;
236
- var input = instance.input;
402
+ // ──────────────────────────────────────────────
403
+ // onReady: flatpickr 인스턴스 초기화 후 실행
404
+ // ──────────────────────────────────────────────
405
+ onReady: (_selectedDates, _dateStr, fpInstance) => {
406
+ const instance = fpInstance;
407
+ const input = instance.input;
237
408
  if (!input) return;
238
409
  flatpickrInstanceRef.current = instance;
239
- dateFormatRef.current = (datePickerOptions === null || datePickerOptions === void 0 ? void 0 : datePickerOptions.dateFormat) || options.dateFormat || 'Y-m-d';
410
+ dateFormatRef.current = instance.config.dateFormat || 'Y-m-d';
240
411
  minMaxDateRef.current = {
241
- minDate: (datePickerOptions === null || datePickerOptions === void 0 ? void 0 : datePickerOptions.minDate) || options.minDate,
242
- maxDate: (datePickerOptions === null || datePickerOptions === void 0 ? void 0 : datePickerOptions.maxDate) || options.maxDate
412
+ minDate: instance.config.minDate,
413
+ maxDate: instance.config.maxDate
243
414
  };
244
- // blur 시점에 현재 selectedDates를 저장 (입력 상태)
245
- var onBlurHandler = function (_e) {
415
+ // blur 현재 날짜를 저장하여 잘못된 입력 복원에 사용
416
+ const onBlurHandler = _e => {
246
417
  if (instance && instance.selectedDates.length > 0) {
247
- // 이전 날짜를 별도로 저장 (onChange에서 사용)
248
418
  instance._previousDateBeforeInput = instance.selectedDates[0];
249
419
  }
250
420
  };
251
421
  input.addEventListener('input', onInputHandler);
252
422
  input.addEventListener('blur', onBlurHandler);
253
- // 초기 날짜가 있으면 저장
254
423
  if (instance.selectedDates.length > 0) {
255
424
  instance._previousDateBeforeInput = instance.selectedDates[0];
256
425
  }
257
- var timeInputWrapper = (_a = input.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector('.flatpickr-time');
258
- if (!timeInputWrapper) return;
259
- var hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
260
- var minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
261
- if (!hourInput || !minuteInput) return;
262
- hourInput.addEventListener('input', onHourInputHandler);
263
- minuteInput.addEventListener('input', onMinuteInputHandler);
264
- var handleMouseDown = function (e) {
265
- var _a;
266
- var flatpickrCalendar = (_a = input.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector('.flatpickr-calendar.open');
267
- if (flatpickrCalendar && !flatpickrCalendar.contains(e.target)) {
268
- var timeInputs = flatpickrCalendar.querySelectorAll('.flatpickr-time input');
269
- timeInputs.forEach(function (timeInput) {
270
- if (document.activeElement === timeInput) {
271
- timeInput.blur();
272
- }
273
- });
274
- }
275
- };
276
- document.addEventListener('mousedown', handleMouseDown, true);
277
- instance._handleMouseDown = handleMouseDown;
278
426
  instance._onBlurHandler = onBlurHandler;
427
+ // 캘린더 위치 조정 및 스크롤/리사이즈 이벤트 연결
428
+ if (portal) {
429
+ setupPortalPositioning(instance, input);
430
+ } else {
431
+ setupStaticPositioning(instance, input);
432
+ }
433
+ // 시간 입력 필드 이벤트 설정
434
+ setupTimeInputHandlers(instance, input, portal, onHourInputHandler, onMinuteInputHandler);
279
435
  },
280
- onDestroy: function (_selectedDates, _dateStr, instance) {
281
- var _a;
282
- var input = instance.input;
436
+ // ──────────────────────────────────────────────
437
+ // onDestroy: flatpickr 인스턴스 파괴 시 이벤트 리스너 정리
438
+ // ──────────────────────────────────────────────
439
+ onDestroy: (_selectedDates, _dateStr, fpInstance) => {
440
+ const instance = fpInstance;
441
+ const input = instance.input;
283
442
  if (!input) return;
284
443
  flatpickrInstanceRef.current = null;
285
- // 메인 input 이벤트 리스너 제거
286
444
  input.removeEventListener('input', onInputHandler);
287
- // blur 이벤트 리스너 제거
288
- var onBlurHandler = instance === null || instance === void 0 ? void 0 : instance._onBlurHandler;
445
+ const onBlurHandler = instance._onBlurHandler;
289
446
  if (onBlurHandler) {
290
447
  input.removeEventListener('blur', onBlurHandler);
291
448
  }
292
- var timeInputWrapper = (_a = input.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector('.flatpickr-time');
293
- if (!timeInputWrapper) return;
294
- // 시간 input 이벤트 리스너 제거
295
- var hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
296
- if (hourInput) {
297
- hourInput.removeEventListener('input', onHourInputHandler);
298
- }
299
- // input 이벤트 리스너 제거
300
- var minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
301
- if (minuteInput) {
302
- minuteInput.removeEventListener('input', onMinuteInputHandler);
303
- }
304
- var handleMouseDown = instance._handleMouseDown;
305
- if (handleMouseDown) {
306
- document.removeEventListener('mousedown', handleMouseDown, true);
307
- }
308
- }
309
- }, datePickerOptions);
310
- var hasTimeOption = datePickerOptions ? Object.hasOwn(datePickerOptions, 'enableTime') : false;
311
- var iconName = hasTimeOption && datePickerOptions && Object.hasOwn(datePickerOptions, 'noCalendar') ? 'clock' : 'calendar';
312
- var processedCurrentDate = useMemo(function () {
313
- return processDate(currentDate, isEndDate, options.enableTime, options.noCalendar, options.enableSeconds);
449
+ cleanupTimeInputHandlers(instance, input, portal, onHourInputHandler, onMinuteInputHandler);
450
+ cleanupPositioning(instance);
451
+ },
452
+ ...datePickerOptions
453
+ }), [portal, size, hasTimeOption, datePickerOptionsKey, onChangeDateHandler, onInputHandler, onHourInputHandler, onMinuteInputHandler]);
454
+ const iconName = hasTimeOption && datePickerOptions && Object.hasOwn(datePickerOptions, 'noCalendar') ? 'clock' : 'calendar';
455
+ // ──────────────────────────────────────────────
456
+ // 시간 옵션에 따른 currentDate 전처리
457
+ // enableTime일 시간이 없으면 기본값(00:00 또는 23:59) 부여
458
+ // ──────────────────────────────────────────────
459
+ const processedCurrentDate = useMemo(() => {
460
+ const hasTime = options.enableTime;
461
+ const isTimeOnly = options.noCalendar;
462
+ const hasSeconds = options.enableSeconds;
463
+ if (!hasTime && !isTimeOnly) return currentDate;
464
+ if (currentDate?.includes(':')) return currentDate;
465
+ if (isTimeOnly) return getTimeOnlyDefault(hasSeconds, isEndDate);
466
+ return getDateTimeDefault(currentDate, hasSeconds, isEndDate);
314
467
  }, [currentDate, isEndDate, options.enableSeconds, options.enableTime, options.noCalendar]);
315
- return _jsxs("div", __assign({
316
- className: classNames('ncua-date-picker', "ncua-date-picker--".concat(size), {
468
+ // ──────────────────────────────────────────────
469
+ // 렌더링
470
+ // ──────────────────────────────────────────────
471
+ const flatpickrElement = _jsx(Flatpickr, {
472
+ ...attrs,
473
+ ref: ref || undefined,
474
+ className: classNames('ncua-date-picker__input'),
475
+ options: options,
476
+ value: processedCurrentDate,
477
+ render: (_ref2, ref) => {
478
+ let {
479
+ defaultValue,
480
+ value,
481
+ ...props
482
+ } = _ref2;
483
+ // flatpickr 전용 옵션이 input DOM에 전달되지 않도록 제거
484
+ const {
485
+ allowInput: _allowInput,
486
+ dateFormat: _dateFormat,
487
+ minDate: _minDate,
488
+ maxDate: _maxDate,
489
+ enableTime: _enableTime,
490
+ enableSeconds: _enableSeconds,
491
+ noCalendar: _noCalendar,
492
+ render: _render,
493
+ ...inputProps
494
+ // biome-ignore lint/suspicious/noExplicitAny: react-flatpickr render 콜백의 props 타입이 불완전하여 정확한 타이핑 불가
495
+ } = props;
496
+ return _jsx(CustomInput, {
497
+ ...inputProps,
498
+ id: inputId,
499
+ iconSize: size,
500
+ disabled: !!attrs.disabled,
501
+ defaultValue: defaultValue,
502
+ iconName: iconName,
503
+ ref: ref,
504
+ onInput: onInputHandler,
505
+ placeholder: attrs.placeholder
506
+ });
507
+ }
508
+ });
509
+ return _jsxs("div", {
510
+ className: classNames('ncua-date-picker', `ncua-date-picker--${size}`, {
511
+ 'ncua-date-picker--portal': portal,
317
512
  'ncua-date-picker--disabled': attrs.disabled,
318
513
  'ncua-date-picker--has-time': hasTimeOption,
319
514
  'ncua-date-picker--destructive': attrs.destructive
320
- }, className)
321
- }, {
322
- children: [_jsx(Flatpickr, __assign({}, attrs, {
323
- ref: ref || undefined,
324
- className: classNames('ncua-date-picker__input'),
325
- options: options,
326
- value: processedCurrentDate,
327
- render: function (_a, ref) {
328
- var defaultValue = _a.defaultValue,
329
- _value = _a.value,
330
- props = __rest(_a, ["defaultValue", "value"]);
331
- // input에 반영 되면 안되는 attribute 제외
332
- var _b = props,
333
- allowInput = _b.allowInput,
334
- dateFormat = _b.dateFormat,
335
- minDate = _b.minDate,
336
- maxDate = _b.maxDate,
337
- enableTime = _b.enableTime,
338
- enableSeconds = _b.enableSeconds,
339
- noCalendar = _b.noCalendar,
340
- render = _b.render,
341
- inputProps = __rest(_b, ["allowInput", "dateFormat", "minDate", "maxDate", "enableTime", "enableSeconds", "noCalendar", "render"]);
342
- return _jsx(CustomInput, __assign({}, inputProps, {
343
- id: inputId,
344
- iconSize: size,
345
- disabled: !!attrs.disabled,
346
- defaultValue: defaultValue,
347
- iconName: iconName,
348
- ref: ref,
349
- onInput: onInputHandler,
350
- placeholder: attrs.placeholder
351
- }));
352
- }
353
- })), attrs.destructive && _jsx("p", __assign({
354
- className: "ncua-date-picker__destructive"
355
- }, {
515
+ }, className),
516
+ children: [flatpickrElement, attrs.destructive && _jsx("p", {
517
+ className: "ncua-date-picker__destructive",
356
518
  children: attrs.destructive
357
- }))]
358
- }));
519
+ })]
520
+ });
359
521
  });
360
- DatePicker.displayName = 'DatePicker';
361
- export { DatePicker };
522
+ DatePicker.displayName = 'DatePicker';