@ncds/ui-admin 1.7.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +291 -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 +381 -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 +285 -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 +374 -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 +166 -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 +48 -0
  470. package/dist/temp/src/components/table/Table.js +199 -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 +47 -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 +48 -0
  538. package/dist/types/src/components/table/index.d.ts +1 -0
  539. package/dist/types/src/components/table/types.d.ts +47 -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 +735 -168
  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
@@ -13,141 +13,275 @@ var _reactFlatpickr = _interopRequireDefault(require("react-flatpickr"));
13
13
  var _datePicker = require("../../utils/date-picker");
14
14
  var _CustomInput = require("./CustomInput");
15
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
- var __assign = void 0 && (void 0).__assign || function () {
17
- __assign = Object.assign || function (t) {
18
- for (var s, i = 1, n = arguments.length; i < n; i++) {
19
- s = arguments[i];
20
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
16
+ // ══════════════════════════════════════════
17
+ // 유틸리티 함수
18
+ // ══════════════════════════════════════════
19
+ const isValidDate = dateString => {
20
+ const date = new Date(dateString);
21
+ return date instanceof Date && !isNaN(date.getTime());
22
+ };
23
+ /** input의 스크롤 가능한 부모 요소들을 수집 */
24
+ const collectScrollParents = element => {
25
+ const parents = [];
26
+ let parentEl = element.parentElement;
27
+ while (parentEl) {
28
+ const {
29
+ overflow,
30
+ overflowY
31
+ } = getComputedStyle(parentEl);
32
+ if (overflow !== 'visible' || overflowY !== 'visible') {
33
+ parents.push(parentEl);
21
34
  }
22
- return t;
23
- };
24
- return __assign.apply(this, arguments);
35
+ parentEl = parentEl.parentElement;
36
+ }
37
+ return parents;
25
38
  };
26
- var __rest = void 0 && (void 0).__rest || function (s, e) {
27
- var t = {};
28
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
29
- if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
30
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
39
+ /** 현재 열려있는 flatpickr 캘린더 요소를 반환 */
40
+ const getOpenCalendar = (instance, input, isPortal) => {
41
+ if (isPortal) {
42
+ return instance.calendarContainer?.classList.contains('open') ? instance.calendarContainer : null;
31
43
  }
32
- return t;
44
+ return input.parentElement?.querySelector('.flatpickr-calendar.open') ?? null;
33
45
  };
34
-
35
- /** biome-ignore-all lint/correctness/noUnusedVariables: <explanation> */
36
-
37
- var isValidDate = function (dateString) {
38
- var date = new Date(dateString);
39
- return date instanceof Date && !isNaN(date.getTime());
46
+ /** selectedDate가 유효하지 않으면 이전 날짜로 복원하고 true 반환 */
47
+ const restoreIfInvalidDate = (date, instance) => {
48
+ if (date && date instanceof Date && !isNaN(date.getTime())) {
49
+ return false;
50
+ }
51
+ const previousDate = instance._previousDateBeforeInput;
52
+ if (previousDate && previousDate instanceof Date && !isNaN(previousDate.getTime())) {
53
+ instance.selectedDates = [previousDate];
54
+ instance.setDate(previousDate, false);
55
+ } else if (instance.input) {
56
+ instance.input.value = '';
57
+ instance.setDate('', false);
58
+ }
59
+ return true;
40
60
  };
41
- var getTimeOnlyValue = function (hasSeconds, isEndDate) {
42
- var endTime = hasSeconds ? '23:59:59' : '23:59';
43
- var startTime = hasSeconds ? '00:00:00' : '00:00';
61
+ /** 시간 전용 모드의 기본값 반환 */
62
+ const getTimeOnlyDefault = (hasSeconds, isEndDate) => {
63
+ const endTime = hasSeconds ? '23:59:59' : '23:59';
64
+ const startTime = hasSeconds ? '00:00:00' : '00:00';
44
65
  return isEndDate ? endTime : startTime;
45
66
  };
46
- var getDateTimeValue = function (currentDate, hasSeconds, isEndDate) {
47
- var format = hasSeconds ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm';
48
- var momentDate = (0, _moment.default)(currentDate);
67
+ /** 날짜+시간 모드에서 시간이 없는 경우 기본값 부여 */
68
+ const getDateTimeDefault = (currentDate, hasSeconds, isEndDate) => {
69
+ if (!currentDate) return '';
70
+ const format = hasSeconds ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm';
71
+ const momentDate = (0, _moment.default)(currentDate);
49
72
  return isEndDate ? momentDate.endOf('day').format(format) : momentDate.startOf('day').format(format);
50
73
  };
51
- var processDate = function (currentDate, isEndDate, enableTime, noCalendar, enableSeconds) {
52
- if (!enableTime && !noCalendar) return currentDate;
53
- if (currentDate === null || currentDate === void 0 ? void 0 : currentDate.includes(':')) return currentDate;
54
- if (noCalendar) {
55
- return getTimeOnlyValue(enableSeconds, isEndDate);
74
+ // ══════════════════════════════════════════
75
+ // 캘린더 위치 조정 (setup / cleanup)
76
+ // ══════════════════════════════════════════
77
+ /** portal 모드: 캘린더 위치 재조정 및 스크롤 이벤트 연결 */
78
+ const setupPortalPositioning = (instance, input) => {
79
+ const reposition = () => {
80
+ if (instance.config) instance._positionCalendar();
81
+ };
82
+ instance._reposition = reposition;
83
+ const scrollParents = collectScrollParents(input);
84
+ instance._portalScrollParents = scrollParents;
85
+ instance.config.onOpen.push(() => {
86
+ scrollParents.forEach(target => {
87
+ target.addEventListener('scroll', reposition, {
88
+ passive: true
89
+ });
90
+ });
91
+ window.addEventListener('scroll', reposition, {
92
+ passive: true
93
+ });
94
+ });
95
+ instance.config.onClose.push(() => {
96
+ scrollParents.forEach(target => {
97
+ target.removeEventListener('scroll', reposition);
98
+ });
99
+ window.removeEventListener('scroll', reposition);
100
+ });
101
+ };
102
+ /** 일반 모드: 아래 공간 부족 시 캘린더를 위에 표시하고 스크롤/리사이즈 이벤트 연결 */
103
+ const setupStaticPositioning = (instance, input) => {
104
+ const adjustPosition = () => {
105
+ const calendar = instance.calendarContainer;
106
+ if (!calendar) return;
107
+ const wrapperEl = input.closest('.ncua-date-picker');
108
+ const rect = wrapperEl ? wrapperEl.getBoundingClientRect() : input.getBoundingClientRect();
109
+ const calendarHeight = calendar.offsetHeight;
110
+ const CALENDAR_GAP = 6;
111
+ const spaceBelow = window.innerHeight - rect.bottom;
112
+ calendar.style.top = spaceBelow < calendarHeight + CALENDAR_GAP ? `${-(calendarHeight + CALENDAR_GAP)}px` : '';
113
+ };
114
+ const scrollParents = collectScrollParents(input);
115
+ instance._adjustPosition = adjustPosition;
116
+ instance._scrollParents = scrollParents;
117
+ instance.config.onOpen.push(() => {
118
+ adjustPosition();
119
+ scrollParents.forEach(target => {
120
+ target.addEventListener('scroll', adjustPosition, {
121
+ passive: true
122
+ });
123
+ });
124
+ window.addEventListener('scroll', adjustPosition, {
125
+ passive: true
126
+ });
127
+ window.addEventListener('resize', adjustPosition);
128
+ });
129
+ instance.config.onClose.push(() => {
130
+ scrollParents.forEach(target => {
131
+ target.removeEventListener('scroll', adjustPosition);
132
+ });
133
+ window.removeEventListener('scroll', adjustPosition);
134
+ window.removeEventListener('resize', adjustPosition);
135
+ });
136
+ };
137
+ /** scroll/resize 리스너 정리 */
138
+ const cleanupPositioning = instance => {
139
+ const reposition = instance._reposition;
140
+ if (reposition) {
141
+ const portalScrollParents = instance._portalScrollParents || [];
142
+ portalScrollParents.forEach(target => {
143
+ target.removeEventListener('scroll', reposition);
144
+ });
145
+ window.removeEventListener('scroll', reposition);
146
+ }
147
+ const adjustPosition = instance._adjustPosition;
148
+ if (adjustPosition) {
149
+ const scrollParents = instance._scrollParents || [];
150
+ scrollParents.forEach(target => {
151
+ target.removeEventListener('scroll', adjustPosition);
152
+ });
153
+ window.removeEventListener('scroll', adjustPosition);
154
+ window.removeEventListener('resize', adjustPosition);
56
155
  }
57
- if (!currentDate) return '';
58
- return getDateTimeValue(currentDate, enableSeconds, isEndDate);
59
156
  };
60
- var DatePicker = exports.DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_a, ref) {
61
- var _b = _a.shouldFocus,
62
- shouldFocus = _b === void 0 ? true : _b,
63
- currentDate = _a.currentDate,
64
- _c = _a.size,
65
- size = _c === void 0 ? 'xs' : _c,
66
- onChangeDate = _a.onChangeDate,
67
- datePickerOptions = _a.datePickerOptions,
68
- _d = _a.isEndDate,
69
- isEndDate = _d === void 0 ? false : _d,
70
- onValidationError = _a.onValidationError,
71
- className = _a.className,
72
- attrs = __rest(_a, ["shouldFocus", "currentDate", "size", "onChangeDate", "datePickerOptions", "isEndDate", "onValidationError", "className"]);
73
- var flatpickrInstanceRef = (0, _react.useRef)(null);
74
- var dateFormatRef = (0, _react.useRef)('Y-m-d');
75
- var minMaxDateRef = (0, _react.useRef)({});
76
- var checkDateViolations = function (date, minDate, maxDate) {
77
- var violations = [];
78
- var inputDate = (0, _moment.default)(date);
157
+ // ══════════════════════════════════════════
158
+ // 시간 입력 필드 (setup / cleanup)
159
+ // ══════════════════════════════════════════
160
+ /** enableTime 옵션 사용 시 시간 입력 필드 이벤트 설정 */
161
+ const setupTimeInputHandlers = (instance, input, isPortal, onHourInput, onMinuteInput) => {
162
+ const timeContainer = isPortal ? instance.calendarContainer : input.parentElement;
163
+ const timeInputWrapper = timeContainer?.querySelector('.flatpickr-time');
164
+ if (!timeInputWrapper) return;
165
+ const hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
166
+ const minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
167
+ if (!hourInput || !minuteInput) return;
168
+ hourInput.addEventListener('input', onHourInput);
169
+ minuteInput.addEventListener('input', onMinuteInput);
170
+ const handleMouseDown = e => {
171
+ const flatpickrCalendar = getOpenCalendar(instance, input, isPortal);
172
+ if (flatpickrCalendar && !flatpickrCalendar.contains(e.target)) {
173
+ const timeInputs = flatpickrCalendar.querySelectorAll('.flatpickr-time input');
174
+ timeInputs.forEach(timeInput => {
175
+ if (document.activeElement === timeInput) {
176
+ timeInput.blur();
177
+ }
178
+ });
179
+ }
180
+ };
181
+ document.addEventListener('mousedown', handleMouseDown, true);
182
+ instance._handleMouseDown = handleMouseDown;
183
+ };
184
+ /** 시간 입력 필드 이벤트 리스너 정리 */
185
+ const cleanupTimeInputHandlers = (instance, input, isPortal, onHourInput, onMinuteInput) => {
186
+ const timeContainer = isPortal ? instance.calendarContainer : input.parentElement;
187
+ const timeInputWrapper = timeContainer?.querySelector('.flatpickr-time');
188
+ if (!timeInputWrapper) return;
189
+ const hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
190
+ if (hourInput) {
191
+ hourInput.removeEventListener('input', onHourInput);
192
+ }
193
+ const minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
194
+ if (minuteInput) {
195
+ minuteInput.removeEventListener('input', onMinuteInput);
196
+ }
197
+ const handleMouseDown = instance._handleMouseDown;
198
+ if (handleMouseDown) {
199
+ document.removeEventListener('mousedown', handleMouseDown, true);
200
+ }
201
+ };
202
+ // ══════════════════════════════════════════
203
+ // DatePicker 컴포넌트
204
+ // ══════════════════════════════════════════
205
+ const DatePicker = exports.DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
206
+ let {
207
+ shouldFocus = true,
208
+ currentDate,
209
+ size = 'xs',
210
+ onChangeDate,
211
+ datePickerOptions,
212
+ isEndDate = false,
213
+ onValidationError,
214
+ className,
215
+ portal = false,
216
+ ...attrs
217
+ } = _ref;
218
+ const flatpickrInstanceRef = (0, _react.useRef)(null);
219
+ const dateFormatRef = (0, _react.useRef)('Y-m-d');
220
+ const minMaxDateRef = (0, _react.useRef)({});
221
+ /** portal 모드: 캘린더를 담을 persistent 컨테이너 (한 번 생성, 언마운트 시 제거) */
222
+ const portalContainerRef = (0, _react.useRef)(null);
223
+ const hasTimeOption = datePickerOptions && Object.hasOwn(datePickerOptions, 'enableTime');
224
+ // 콜백 props를 ref에 저장하여 memoized options에서 최신값 참조
225
+ const onChangeDateRef = (0, _react.useRef)(onChangeDate);
226
+ onChangeDateRef.current = onChangeDate;
227
+ const onValidationErrorRef = (0, _react.useRef)(onValidationError);
228
+ onValidationErrorRef.current = onValidationError;
229
+ /** portal 컨테이너를 lazily 생성 (이미 있으면 재사용), className은 매번 갱신 */
230
+ const getPortalContainer = () => {
231
+ if (!portal || typeof document === 'undefined') return undefined;
232
+ const portalClassName = (0, _classnames.default)('ncua-date-picker', 'ncua-date-picker--portal', `ncua-date-picker--${size}`, {
233
+ 'ncua-date-picker--has-time': hasTimeOption
234
+ });
235
+ if (portalContainerRef.current) {
236
+ portalContainerRef.current.className = portalClassName;
237
+ return portalContainerRef.current;
238
+ }
239
+ const el = document.createElement('div');
240
+ el.className = portalClassName;
241
+ // ncua-date-picker의 position/width/height가 캘린더 배치를 방해하지 않도록 무력화
242
+ el.style.cssText = 'position:static;width:auto;height:auto;overflow:visible;';
243
+ document.body.appendChild(el);
244
+ portalContainerRef.current = el;
245
+ return el;
246
+ };
247
+ /** 컴포넌트 언마운트 시 포탈 컨테이너 및 스크롤 리스너 정리 */
248
+ (0, _react.useEffect)(() => {
249
+ return () => {
250
+ portalContainerRef.current?.remove();
251
+ portalContainerRef.current = null;
252
+ };
253
+ }, []);
254
+ // ──────────────────────────────────────────────
255
+ // 날짜 유효성 검사
256
+ // ──────────────────────────────────────────────
257
+ /** minDate/maxDate 범위를 벗어났는지 확인 */
258
+ const checkDateViolations = (date, minDate, maxDate) => {
259
+ const violations = [];
260
+ const inputDate = (0, _moment.default)(date);
79
261
  if (!inputDate.isValid()) return violations;
80
262
  if (minDate) {
81
- var min = (0, _moment.default)(minDate);
263
+ const min = (0, _moment.default)(minDate);
82
264
  if (min.isValid() && inputDate.isBefore(min, 'day')) {
83
265
  violations.push('minDate');
84
266
  }
85
267
  }
86
268
  if (maxDate) {
87
- var max = (0, _moment.default)(maxDate);
269
+ const max = (0, _moment.default)(maxDate);
88
270
  if (max.isValid() && inputDate.isAfter(max, 'day')) {
89
271
  violations.push('maxDate');
90
272
  }
91
273
  }
92
274
  return violations;
93
275
  };
94
- var isValidDateInstance = function (date) {
95
- return date instanceof Date && !isNaN(date.getTime());
96
- };
97
- var handleInvalidSelectedDate = function (instance) {
98
- var previousDate = instance === null || instance === void 0 ? void 0 : instance._previousDateBeforeInput;
99
- if (isValidDateInstance(previousDate)) {
100
- // 이전 값이 있으면 이전 값으로 복원
101
- instance.selectedDates = [previousDate];
102
- instance.setDate(previousDate, false);
103
- } else {
104
- // 이전 값이 없으면 빈 값으로 처리
105
- restorePreviousDate(instance.input, instance);
106
- }
107
- return true;
108
- };
109
- var handleDateViolations = function (selectedDate, instance) {
110
- var _a;
111
- var minDate = options.minDate,
112
- maxDate = options.maxDate;
113
- var violations = checkDateViolations(selectedDate, minDate, maxDate);
114
- if (violations.length > 0 && onValidationError) {
115
- var prevDate = (_a = instance === null || instance === void 0 ? void 0 : instance.selectedDates) === null || _a === void 0 ? void 0 : _a[0];
116
- onValidationError({
117
- date: selectedDate,
118
- minDate: minDate,
119
- maxDate: maxDate,
120
- violations: violations,
121
- previousDate: isValidDateInstance(prevDate) ? prevDate : undefined
122
- });
123
- return true; // onValidationError가 있으면 날짜 변경 안 함
124
- }
125
- return false;
126
- };
127
- var onChangeDateHandler = function (dateTimeStamp, dateStr, instance) {
128
- if (!dateTimeStamp || dateTimeStamp.length === 0) {
129
- restorePreviousDate(instance.input, instance);
130
- return;
131
- }
132
- var selectedDate = dateTimeStamp[0];
133
- if (!isValidDateInstance(selectedDate)) {
134
- // 유효하지 않은 날짜 - 이전 값으로 복원하거나 빈 값으로 처리
135
- handleInvalidSelectedDate(instance);
136
- return;
137
- }
138
- if (handleDateViolations(selectedDate, instance)) {
139
- return;
140
- }
141
- // 유효한 날짜인 경우 이전 날짜로 저장
142
- instance._previousDateBeforeInput = selectedDate;
143
- var formattedDate = (0, _datePicker.formatDateInput)(dateStr);
144
- isValidDate(formattedDate) ? onChangeDate(formattedDate) : onChangeDate(dateStr);
145
- };
146
- var restorePreviousDate = function (target, instance) {
276
+ // ──────────────────────────────────────────────
277
+ // 이벤트 핸들러
278
+ // ──────────────────────────────────────────────
279
+ /** 유효하지 않은 입력 이전 날짜로 복원 */
280
+ const restorePreviousDate = (target, instance) => {
147
281
  if (instance.selectedDates.length > 0) {
148
- var prevDate = instance.selectedDates[0];
282
+ const prevDate = instance.selectedDates[0];
149
283
  if (prevDate instanceof Date && !isNaN(prevDate.getTime())) {
150
- var momentFormat = dateFormatRef.current.replace(/Y/g, 'YYYY').replace(/m/g, 'MM').replace(/d/g, 'DD');
284
+ const momentFormat = dateFormatRef.current.replace(/Y/g, 'YYYY').replace(/m/g, 'MM').replace(/d/g, 'DD');
151
285
  target.value = (0, _moment.default)(prevDate).format(momentFormat);
152
286
  instance.setDate(prevDate, false);
153
287
  return;
@@ -156,214 +290,240 @@ var DatePicker = exports.DatePicker = /*#__PURE__*/(0, _react.forwardRef)(functi
156
290
  target.value = '';
157
291
  instance.setDate('', false);
158
292
  };
159
- var handleEmptyInput = function (target, instance) {
160
- target.value = '';
161
- instance.setDate('', false);
162
- onChangeDate('');
163
- return true;
164
- };
165
- var validateFormattedDate = function (formattedInput, target, instance) {
166
- var parsedDate = (0, _moment.default)(formattedInput);
167
- if (!parsedDate.isValid()) {
168
- restorePreviousDate(target, instance);
169
- return false;
293
+ /** flatpickr에서 날짜가 변경되었을 호출 */
294
+ const onChangeDateHandler = (0, _react.useCallback)((dateTimeStamp, dateStr, fpInstance) => {
295
+ const instance = fpInstance;
296
+ if (!dateTimeStamp || dateTimeStamp.length === 0) {
297
+ restorePreviousDate(instance.input, instance);
298
+ return;
170
299
  }
171
- var parsedDateObj = parsedDate.toDate();
172
- var violations = checkDateViolations(parsedDateObj, minMaxDateRef.current.minDate, minMaxDateRef.current.maxDate);
173
- // onInputHandler에서는 onValidationError를 호출하지 않음
174
- // validation은 onChangeDateHandler에서만 처리
175
- return violations.length === 0;
176
- };
177
- var onInputHandler = function (e) {
178
- var target = e.target;
179
- var input = target.value;
180
- var instance = flatpickrInstanceRef.current;
300
+ if (restoreIfInvalidDate(dateTimeStamp[0], instance)) return;
301
+ const selectedDate = dateTimeStamp[0];
302
+ const minDate = instance.config.minDate;
303
+ const maxDate = instance.config.maxDate;
304
+ const violations = checkDateViolations(selectedDate, minDate, maxDate);
305
+ if (violations.length > 0 && onValidationErrorRef.current) {
306
+ const prevDate = instance?.selectedDates?.[0];
307
+ const validPrevDate = prevDate instanceof Date && !isNaN(prevDate.getTime()) ? prevDate : undefined;
308
+ onValidationErrorRef.current({
309
+ date: selectedDate,
310
+ minDate,
311
+ maxDate,
312
+ violations,
313
+ previousDate: validPrevDate
314
+ });
315
+ return;
316
+ }
317
+ instance._previousDateBeforeInput = selectedDate;
318
+ const formattedDate = (0, _datePicker.formatDateInput)(dateStr);
319
+ isValidDate(formattedDate) ? onChangeDateRef.current(formattedDate) : onChangeDateRef.current(dateStr);
320
+ }, []);
321
+ /** input에 직접 타이핑할 때 날짜 형식 자동 변환 및 유효성 검사 */
322
+ // eslint-disable-next-line react-hooks/exhaustive-deps
323
+ const onInputHandler = (0, _react.useCallback)(e => {
324
+ const target = e.target;
325
+ const input = target.value;
326
+ const instance = flatpickrInstanceRef.current;
181
327
  if (!instance) return;
182
- if (!input || input.trim() === '') {
183
- handleEmptyInput(target, instance);
328
+ if (!input?.trim()) {
329
+ target.value = '';
330
+ instance.setDate('', false);
331
+ onChangeDateRef.current('');
184
332
  return;
185
333
  }
186
- // 숫자가 최소 하나는 포함되어야 함 (하이픈만 있는 경우 방지)
187
334
  if (!/[0-9]/.test(input)) {
188
335
  restorePreviousDate(target, instance);
189
336
  return;
190
337
  }
191
- var formattedInput = (0, _datePicker.formatDateInput)(input);
338
+ const formattedInput = (0, _datePicker.formatDateInput)(input);
192
339
  if (formattedInput !== input) {
193
340
  target.value = formattedInput;
194
341
  return;
195
342
  }
196
- if (formattedInput && formattedInput.length >= 10 && !validateFormattedDate(formattedInput, target, instance)) {
343
+ if (!formattedInput || formattedInput.length < 10) return;
344
+ const parsedDate = (0, _moment.default)(formattedInput);
345
+ if (!parsedDate.isValid()) {
346
+ restorePreviousDate(target, instance);
197
347
  return;
198
348
  }
199
- };
200
- var onHourInputHandler = function (e) {
201
- var target = e.target;
202
- var input = target.value;
203
- var formattedInput = (0, _datePicker.formatHourInput)(input);
349
+ const parsedDateObj = parsedDate.toDate();
350
+ const violations = checkDateViolations(parsedDateObj, minMaxDateRef.current.minDate, minMaxDateRef.current.maxDate);
351
+ if (violations.length > 0) {
352
+ return;
353
+ }
354
+ }, []);
355
+ /** 시간 입력 필드 - 시(hour) 값 포맷팅 (0~23) */
356
+ const onHourInputHandler = (0, _react.useCallback)(e => {
357
+ const target = e.target;
358
+ const input = target.value;
359
+ const formattedInput = (0, _datePicker.formatHourInput)(input);
204
360
  if (formattedInput === input) return;
205
361
  target.value = formattedInput;
206
- };
207
- var onMinuteInputHandler = function (e) {
208
- var target = e.target;
209
- var input = target.value;
210
- var formattedInput = (0, _datePicker.formatMinuteInput)(input);
362
+ }, []);
363
+ /** 시간 입력 필드 - 분(minute) 값 포맷팅 (0~59) */
364
+ const onMinuteInputHandler = (0, _react.useCallback)(e => {
365
+ const target = e.target;
366
+ const input = target.value;
367
+ const formattedInput = (0, _datePicker.formatMinuteInput)(input);
211
368
  if (formattedInput === input) return;
212
369
  target.value = formattedInput;
213
- };
214
- var inputId = (0, _react.useId)();
215
- var options = __assign({
370
+ }, []);
371
+ const inputId = (0, _react.useId)();
372
+ // ──────────────────────────────────────────────
373
+ // flatpickr 옵션
374
+ // ──────────────────────────────────────────────
375
+ // datePickerOptions는 부모에서 매 렌더 새 객체일 수 있으므로 값 기반 비교
376
+ // 주의: JSON.stringify는 함수를 무시하고 Date를 문자열로 변환하므로,
377
+ // datePickerOptions에 함수나 Date 객체를 넘기면 변경 감지가 누락될 수 있음
378
+ // eslint-disable-next-line react-hooks/exhaustive-deps
379
+ const datePickerOptionsKey = JSON.stringify(datePickerOptions);
380
+ // eslint-disable-next-line react-hooks/exhaustive-deps
381
+ const options = (0, _react.useMemo)(() => ({
216
382
  mode: 'single',
217
- static: true,
383
+ static: !portal,
384
+ ...(portal && {
385
+ appendTo: getPortalContainer()
386
+ }),
218
387
  locale: _ko.Korean,
219
388
  dateFormat: 'Y-m-d',
220
389
  clickOpens: true,
221
390
  time_24hr: true,
222
- formatDate: function (date, format, _locale) {
391
+ /** flatpickr 기본 포맷 대신 moment를 사용하여 한국어 날짜 형식 지원 */
392
+ formatDate: (date, format, _locale) => {
223
393
  try {
224
- // 유효한 날짜인지 확인
225
394
  if (!date || !(date instanceof Date) || isNaN(date.getTime())) {
226
395
  return '';
227
396
  }
228
- // moment로 포맷팅
229
- var momentDate = (0, _moment.default)(date);
397
+ const momentDate = (0, _moment.default)(date);
230
398
  if (!momentDate.isValid()) {
231
399
  return '';
232
400
  }
233
- // format moment 형식으로 변환
234
- 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');
401
+ 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');
235
402
  return momentDate.format(momentFormat);
236
- } catch (error) {
237
- // 오류 발생 시 빈 문자열 반환 (232-23 같은 잘못된 날짜 처리)
403
+ } catch (_error) {
238
404
  return '';
239
405
  }
240
406
  },
241
407
  onChange: onChangeDateHandler,
242
408
  allowInvalidPreload: true,
243
- onReady: function (_selectedDates, _dateStr, instance) {
244
- var _a;
245
- var input = instance.input;
409
+ // ──────────────────────────────────────────────
410
+ // onReady: flatpickr 인스턴스 초기화 후 실행
411
+ // ──────────────────────────────────────────────
412
+ onReady: (_selectedDates, _dateStr, fpInstance) => {
413
+ const instance = fpInstance;
414
+ const input = instance.input;
246
415
  if (!input) return;
247
416
  flatpickrInstanceRef.current = instance;
248
- dateFormatRef.current = (datePickerOptions === null || datePickerOptions === void 0 ? void 0 : datePickerOptions.dateFormat) || options.dateFormat || 'Y-m-d';
417
+ dateFormatRef.current = instance.config.dateFormat || 'Y-m-d';
249
418
  minMaxDateRef.current = {
250
- minDate: (datePickerOptions === null || datePickerOptions === void 0 ? void 0 : datePickerOptions.minDate) || options.minDate,
251
- maxDate: (datePickerOptions === null || datePickerOptions === void 0 ? void 0 : datePickerOptions.maxDate) || options.maxDate
419
+ minDate: instance.config.minDate,
420
+ maxDate: instance.config.maxDate
252
421
  };
253
- // blur 시점에 현재 selectedDates를 저장 (입력 상태)
254
- var onBlurHandler = function (_e) {
422
+ // blur 현재 날짜를 저장하여 잘못된 입력 복원에 사용
423
+ const onBlurHandler = _e => {
255
424
  if (instance && instance.selectedDates.length > 0) {
256
- // 이전 날짜를 별도로 저장 (onChange에서 사용)
257
425
  instance._previousDateBeforeInput = instance.selectedDates[0];
258
426
  }
259
427
  };
260
428
  input.addEventListener('input', onInputHandler);
261
429
  input.addEventListener('blur', onBlurHandler);
262
- // 초기 날짜가 있으면 저장
263
430
  if (instance.selectedDates.length > 0) {
264
431
  instance._previousDateBeforeInput = instance.selectedDates[0];
265
432
  }
266
- var timeInputWrapper = (_a = input.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector('.flatpickr-time');
267
- if (!timeInputWrapper) return;
268
- var hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
269
- var minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
270
- if (!hourInput || !minuteInput) return;
271
- hourInput.addEventListener('input', onHourInputHandler);
272
- minuteInput.addEventListener('input', onMinuteInputHandler);
273
- var handleMouseDown = function (e) {
274
- var _a;
275
- var flatpickrCalendar = (_a = input.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector('.flatpickr-calendar.open');
276
- if (flatpickrCalendar && !flatpickrCalendar.contains(e.target)) {
277
- var timeInputs = flatpickrCalendar.querySelectorAll('.flatpickr-time input');
278
- timeInputs.forEach(function (timeInput) {
279
- if (document.activeElement === timeInput) {
280
- timeInput.blur();
281
- }
282
- });
283
- }
284
- };
285
- document.addEventListener('mousedown', handleMouseDown, true);
286
- instance._handleMouseDown = handleMouseDown;
287
433
  instance._onBlurHandler = onBlurHandler;
434
+ // 캘린더 위치 조정 및 스크롤/리사이즈 이벤트 연결
435
+ if (portal) {
436
+ setupPortalPositioning(instance, input);
437
+ } else {
438
+ setupStaticPositioning(instance, input);
439
+ }
440
+ // 시간 입력 필드 이벤트 설정
441
+ setupTimeInputHandlers(instance, input, portal, onHourInputHandler, onMinuteInputHandler);
288
442
  },
289
- onDestroy: function (_selectedDates, _dateStr, instance) {
290
- var _a;
291
- var input = instance.input;
443
+ // ──────────────────────────────────────────────
444
+ // onDestroy: flatpickr 인스턴스 파괴 시 이벤트 리스너 정리
445
+ // ──────────────────────────────────────────────
446
+ onDestroy: (_selectedDates, _dateStr, fpInstance) => {
447
+ const instance = fpInstance;
448
+ const input = instance.input;
292
449
  if (!input) return;
293
450
  flatpickrInstanceRef.current = null;
294
- // 메인 input 이벤트 리스너 제거
295
451
  input.removeEventListener('input', onInputHandler);
296
- // blur 이벤트 리스너 제거
297
- var onBlurHandler = instance === null || instance === void 0 ? void 0 : instance._onBlurHandler;
452
+ const onBlurHandler = instance._onBlurHandler;
298
453
  if (onBlurHandler) {
299
454
  input.removeEventListener('blur', onBlurHandler);
300
455
  }
301
- var timeInputWrapper = (_a = input.parentElement) === null || _a === void 0 ? void 0 : _a.querySelector('.flatpickr-time');
302
- if (!timeInputWrapper) return;
303
- // 시간 input 이벤트 리스너 제거
304
- var hourInput = timeInputWrapper.querySelector('.flatpickr-hour');
305
- if (hourInput) {
306
- hourInput.removeEventListener('input', onHourInputHandler);
307
- }
308
- // input 이벤트 리스너 제거
309
- var minuteInput = timeInputWrapper.querySelector('.flatpickr-minute');
310
- if (minuteInput) {
311
- minuteInput.removeEventListener('input', onMinuteInputHandler);
312
- }
313
- var handleMouseDown = instance._handleMouseDown;
314
- if (handleMouseDown) {
315
- document.removeEventListener('mousedown', handleMouseDown, true);
316
- }
317
- }
318
- }, datePickerOptions);
319
- var hasTimeOption = datePickerOptions ? Object.hasOwn(datePickerOptions, 'enableTime') : false;
320
- var iconName = hasTimeOption && datePickerOptions && Object.hasOwn(datePickerOptions, 'noCalendar') ? 'clock' : 'calendar';
321
- var processedCurrentDate = (0, _react.useMemo)(function () {
322
- return processDate(currentDate, isEndDate, options.enableTime, options.noCalendar, options.enableSeconds);
456
+ cleanupTimeInputHandlers(instance, input, portal, onHourInputHandler, onMinuteInputHandler);
457
+ cleanupPositioning(instance);
458
+ },
459
+ ...datePickerOptions
460
+ }), [portal, size, hasTimeOption, datePickerOptionsKey, onChangeDateHandler, onInputHandler, onHourInputHandler, onMinuteInputHandler]);
461
+ const iconName = hasTimeOption && datePickerOptions && Object.hasOwn(datePickerOptions, 'noCalendar') ? 'clock' : 'calendar';
462
+ // ──────────────────────────────────────────────
463
+ // 시간 옵션에 따른 currentDate 전처리
464
+ // enableTime일 시간이 없으면 기본값(00:00 또는 23:59) 부여
465
+ // ──────────────────────────────────────────────
466
+ const processedCurrentDate = (0, _react.useMemo)(() => {
467
+ const hasTime = options.enableTime;
468
+ const isTimeOnly = options.noCalendar;
469
+ const hasSeconds = options.enableSeconds;
470
+ if (!hasTime && !isTimeOnly) return currentDate;
471
+ if (currentDate?.includes(':')) return currentDate;
472
+ if (isTimeOnly) return getTimeOnlyDefault(hasSeconds, isEndDate);
473
+ return getDateTimeDefault(currentDate, hasSeconds, isEndDate);
323
474
  }, [currentDate, isEndDate, options.enableSeconds, options.enableTime, options.noCalendar]);
324
- return (0, _jsxRuntime.jsxs)("div", __assign({
325
- className: (0, _classnames.default)('ncua-date-picker', "ncua-date-picker--".concat(size), {
475
+ // ──────────────────────────────────────────────
476
+ // 렌더링
477
+ // ──────────────────────────────────────────────
478
+ const flatpickrElement = (0, _jsxRuntime.jsx)(_reactFlatpickr.default, {
479
+ ...attrs,
480
+ ref: ref || undefined,
481
+ className: (0, _classnames.default)('ncua-date-picker__input'),
482
+ options: options,
483
+ value: processedCurrentDate,
484
+ render: (_ref2, ref) => {
485
+ let {
486
+ defaultValue,
487
+ value,
488
+ ...props
489
+ } = _ref2;
490
+ // flatpickr 전용 옵션이 input DOM에 전달되지 않도록 제거
491
+ const {
492
+ allowInput: _allowInput,
493
+ dateFormat: _dateFormat,
494
+ minDate: _minDate,
495
+ maxDate: _maxDate,
496
+ enableTime: _enableTime,
497
+ enableSeconds: _enableSeconds,
498
+ noCalendar: _noCalendar,
499
+ render: _render,
500
+ ...inputProps
501
+ // biome-ignore lint/suspicious/noExplicitAny: react-flatpickr render 콜백의 props 타입이 불완전하여 정확한 타이핑 불가
502
+ } = props;
503
+ return (0, _jsxRuntime.jsx)(_CustomInput.CustomInput, {
504
+ ...inputProps,
505
+ id: inputId,
506
+ iconSize: size,
507
+ disabled: !!attrs.disabled,
508
+ defaultValue: defaultValue,
509
+ iconName: iconName,
510
+ ref: ref,
511
+ onInput: onInputHandler,
512
+ placeholder: attrs.placeholder
513
+ });
514
+ }
515
+ });
516
+ return (0, _jsxRuntime.jsxs)("div", {
517
+ className: (0, _classnames.default)('ncua-date-picker', `ncua-date-picker--${size}`, {
518
+ 'ncua-date-picker--portal': portal,
326
519
  'ncua-date-picker--disabled': attrs.disabled,
327
520
  'ncua-date-picker--has-time': hasTimeOption,
328
521
  'ncua-date-picker--destructive': attrs.destructive
329
- }, className)
330
- }, {
331
- children: [(0, _jsxRuntime.jsx)(_reactFlatpickr.default, __assign({}, attrs, {
332
- ref: ref || undefined,
333
- className: (0, _classnames.default)('ncua-date-picker__input'),
334
- options: options,
335
- value: processedCurrentDate,
336
- render: function (_a, ref) {
337
- var defaultValue = _a.defaultValue,
338
- _value = _a.value,
339
- props = __rest(_a, ["defaultValue", "value"]);
340
- // input에 반영 되면 안되는 attribute 제외
341
- var _b = props,
342
- allowInput = _b.allowInput,
343
- dateFormat = _b.dateFormat,
344
- minDate = _b.minDate,
345
- maxDate = _b.maxDate,
346
- enableTime = _b.enableTime,
347
- enableSeconds = _b.enableSeconds,
348
- noCalendar = _b.noCalendar,
349
- render = _b.render,
350
- inputProps = __rest(_b, ["allowInput", "dateFormat", "minDate", "maxDate", "enableTime", "enableSeconds", "noCalendar", "render"]);
351
- return (0, _jsxRuntime.jsx)(_CustomInput.CustomInput, __assign({}, inputProps, {
352
- id: inputId,
353
- iconSize: size,
354
- disabled: !!attrs.disabled,
355
- defaultValue: defaultValue,
356
- iconName: iconName,
357
- ref: ref,
358
- onInput: onInputHandler,
359
- placeholder: attrs.placeholder
360
- }));
361
- }
362
- })), attrs.destructive && (0, _jsxRuntime.jsx)("p", __assign({
363
- className: "ncua-date-picker__destructive"
364
- }, {
522
+ }, className),
523
+ children: [flatpickrElement, attrs.destructive && (0, _jsxRuntime.jsx)("p", {
524
+ className: "ncua-date-picker__destructive",
365
525
  children: attrs.destructive
366
- }))]
367
- }));
526
+ })]
527
+ });
368
528
  });
369
529
  DatePicker.displayName = 'DatePicker';