@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.
- package/dist/cjs/assets/scripts/baseBox.js +54 -56
- package/dist/cjs/assets/scripts/comboBox.js +54 -105
- package/dist/cjs/assets/scripts/datePicker.js +289 -324
- package/dist/cjs/assets/scripts/featuredIcon.js +41 -49
- package/dist/cjs/assets/scripts/fileInput/const/classNames.js +4 -10
- package/dist/cjs/assets/scripts/fileInput/fileInput.js +33 -34
- package/dist/cjs/assets/scripts/fileInput/fileInputModel.js +27 -35
- package/dist/cjs/assets/scripts/fileInput/fileInputView.js +53 -48
- package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +61 -64
- package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +79 -112
- package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +107 -105
- package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +6 -16
- package/dist/cjs/assets/scripts/index.js +2 -0
- package/dist/cjs/assets/scripts/modal/Modal.js +43 -55
- package/dist/cjs/assets/scripts/modal/ModalActions.js +40 -52
- package/dist/cjs/assets/scripts/modal/ModalContent.js +22 -22
- package/dist/cjs/assets/scripts/modal/ModalHeader.js +37 -48
- package/dist/cjs/assets/scripts/modal/const/classNames.js +5 -13
- package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +1 -1
- package/dist/cjs/assets/scripts/notification/FloatingNotification.js +91 -93
- package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +92 -80
- package/dist/cjs/assets/scripts/notification/MessageNotification.js +92 -79
- package/dist/cjs/assets/scripts/notification/Notification.js +50 -65
- package/dist/cjs/assets/scripts/notification/const/classNames.js +1 -1
- package/dist/cjs/assets/scripts/notification/const/icons.js +11 -25
- package/dist/cjs/assets/scripts/notification/const/sizes.js +11 -19
- package/dist/cjs/assets/scripts/notification/const/types.js +1 -1
- package/dist/cjs/assets/scripts/notification/utils.js +28 -23
- package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +140 -141
- package/dist/cjs/assets/scripts/selectBox.js +72 -132
- package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +18 -19
- package/dist/cjs/assets/scripts/slider.js +104 -122
- package/dist/cjs/assets/scripts/tab.js +8 -8
- package/dist/cjs/assets/scripts/table/Table.js +377 -0
- package/dist/cjs/assets/scripts/table/const/classNames.js +33 -0
- package/dist/cjs/assets/scripts/table/const/index.js +27 -0
- package/dist/cjs/assets/scripts/table/const/types.js +5 -0
- package/dist/cjs/assets/scripts/table/index.js +43 -0
- package/dist/cjs/assets/scripts/tag/Tag.js +108 -115
- package/dist/cjs/assets/scripts/tag/const/classNames.js +3 -7
- package/dist/cjs/assets/scripts/tag/const/sizes.js +4 -4
- package/dist/cjs/assets/scripts/tooltip/Tooltip.js +155 -182
- package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +23 -25
- package/dist/cjs/assets/scripts/tooltip/const/classNames.js +1 -1
- package/dist/cjs/assets/scripts/tooltip/const/constants.js +14 -14
- package/dist/cjs/assets/scripts/tooltip/const/icons.js +7 -7
- package/dist/cjs/assets/scripts/tooltip/const/templates.js +42 -25
- package/dist/cjs/assets/scripts/tooltip/utils.js +17 -18
- package/dist/cjs/assets/scripts/utils/debounce.js +7 -8
- package/dist/cjs/assets/scripts/utils/unifiedBox/domRenderer.js +102 -116
- package/dist/cjs/assets/scripts/utils/unifiedBox/dropdownModel.js +103 -144
- package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxController.js +180 -207
- package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +166 -362
- package/dist/cjs/constant/color.js +1 -1
- package/dist/cjs/index.js +0 -297
- package/dist/cjs/src/components/badge/Badge.js +17 -30
- package/dist/cjs/src/components/badge/index.js +0 -11
- package/dist/cjs/src/components/badge/utils.js +11 -10
- package/dist/cjs/src/components/badge-group/BadgeGroup.js +42 -0
- package/dist/cjs/src/components/badge-group/index.js +16 -0
- package/dist/cjs/src/components/bread-crumb/BreadCrumb.js +55 -0
- package/dist/cjs/src/components/button/Button.js +37 -58
- package/dist/cjs/src/components/button/ButtonCloseX.js +12 -22
- package/dist/cjs/src/components/button/ButtonStepper.js +9 -7
- package/dist/cjs/src/components/button/index.js +0 -11
- package/dist/cjs/src/components/button-group/ButtonGroup.js +97 -0
- package/dist/cjs/src/components/button-group/index.js +16 -0
- package/dist/cjs/src/components/carousel-arrow/CarouselArrow.js +34 -0
- package/dist/cjs/src/components/carousel-arrow/index.js +16 -0
- package/dist/cjs/src/components/carousel-number-group/CarouselNumberGroup.js +33 -0
- package/dist/cjs/src/components/{carousel → carousel-number-group}/index.js +0 -11
- package/dist/cjs/src/components/checkbox/Checkbox.js +28 -49
- package/dist/cjs/src/components/checkbox/CheckboxInput.js +23 -42
- package/dist/cjs/src/components/combo-box/ComboBox.js +291 -0
- package/dist/cjs/src/components/data-grid/DataGrid.js +182 -0
- package/dist/cjs/src/components/data-grid/DataGrid.types.js +5 -0
- package/dist/cjs/src/components/data-grid/index.js +27 -0
- package/dist/cjs/src/components/date-picker/CustomInput.js +16 -32
- package/dist/cjs/src/components/date-picker/DatePicker.js +416 -256
- package/dist/cjs/src/components/date-picker/index.js +0 -22
- package/dist/cjs/src/components/date-picker/utils.js +2 -4
- package/dist/cjs/src/components/divider/Divider.js +14 -25
- package/dist/cjs/src/components/dot/Dot.js +11 -28
- package/dist/cjs/src/components/dropdown/Dropdown.js +90 -132
- package/dist/cjs/src/components/empty-state/EmptyState.js +28 -45
- package/dist/cjs/src/components/featured-icon/FeaturedIcon.js +14 -33
- package/dist/cjs/src/components/file-input/FileInput.js +102 -148
- package/dist/cjs/src/components/horizontal-tab/HorizontalTab.js +53 -0
- package/dist/cjs/src/components/horizontal-tab/index.js +16 -0
- package/dist/cjs/src/components/image-file-input/ImageFileInput.js +109 -170
- package/dist/cjs/src/components/image-file-input/components/ImagePreview.js +8 -17
- package/dist/cjs/src/components/index.js +156 -24
- package/dist/cjs/src/components/input-base/InputBase.js +195 -0
- package/dist/cjs/src/components/input-base/index.js +16 -0
- package/dist/cjs/src/components/modal/Modal.js +76 -105
- package/dist/cjs/src/components/notification/FloatingNotification.js +52 -80
- package/dist/cjs/src/components/notification/FullWidthNotification.js +67 -101
- package/dist/cjs/src/components/notification/MessageNotification.js +60 -89
- package/dist/cjs/src/components/notification/Notification.js +18 -36
- package/dist/cjs/src/components/number-input/NumberInput.js +112 -0
- package/dist/cjs/src/components/number-input/index.js +16 -0
- package/dist/cjs/src/components/pagination/NavButton.js +28 -42
- package/dist/cjs/src/components/pagination/Pagination.js +58 -97
- package/dist/cjs/src/components/password-input/PasswordInput.js +55 -0
- package/dist/cjs/src/components/password-input/index.js +16 -0
- package/dist/cjs/src/components/progress-bar/ProgressBar.js +45 -60
- package/dist/cjs/src/components/progress-bar/components/SegmentBar.js +11 -9
- package/dist/cjs/src/components/progress-bar/components/SegmentLabels.js +32 -43
- package/dist/cjs/src/components/progress-bar/hooks/useProgressBar.js +59 -78
- package/dist/cjs/src/components/progress-bar/utils.js +8 -8
- package/dist/cjs/src/components/progress-circle/ProgressCircle.js +49 -72
- package/dist/cjs/src/components/radio/Radio.js +24 -43
- package/dist/cjs/src/components/radio/RadioInput.js +18 -36
- package/dist/cjs/src/components/range-date-picker/RangeDatePicker.js +147 -0
- package/dist/cjs/src/components/range-date-picker/index.js +16 -0
- package/dist/cjs/src/components/range-date-picker-with-buttons/RangeDatePickerWithButtons.js +81 -0
- package/dist/cjs/src/components/range-date-picker-with-buttons/index.js +16 -0
- package/dist/cjs/src/components/select/Select.js +36 -63
- package/dist/cjs/src/components/select-box/SelectBox.js +260 -0
- package/dist/cjs/src/components/select-dropdown/SelectDropdown.js +64 -100
- package/dist/cjs/src/components/shared/hintText/HintText.js +13 -30
- package/dist/cjs/src/components/shared/label/Label.js +12 -29
- package/dist/cjs/src/components/slider/Slider.js +25 -28
- package/dist/cjs/src/components/spinner/Spinner.js +25 -39
- package/dist/cjs/src/components/switch/Switch.js +44 -69
- package/dist/cjs/src/components/tab/TabButton.js +41 -61
- package/dist/cjs/src/components/tab/index.js +0 -22
- package/dist/cjs/src/components/table/Table.js +381 -0
- package/dist/cjs/src/components/table/index.js +16 -0
- package/dist/cjs/src/components/table/types.js +5 -0
- package/dist/cjs/src/components/tag/Tag.js +65 -85
- package/dist/cjs/src/components/textarea/Textarea.js +79 -0
- package/dist/cjs/src/components/textarea/index.js +16 -0
- package/dist/cjs/src/components/toggle/Toggle.js +28 -52
- package/dist/cjs/src/components/tooltip/Tooltip.js +75 -108
- package/dist/cjs/src/components/vertical-tab/VerticalTab.js +48 -0
- package/dist/cjs/src/components/vertical-tab/index.js +16 -0
- package/dist/cjs/src/constant/breakpoint.js +3 -3
- package/dist/cjs/src/constant/date-picker.js +1 -1
- package/dist/cjs/src/constant/size.js +1 -1
- package/dist/cjs/src/hooks/dropdown/useDropdown.js +58 -60
- package/dist/cjs/src/hooks/dropdown/useDropdownKeyboard.js +37 -40
- package/dist/cjs/src/hooks/dropdown/useDropdownPosition.js +7 -9
- package/dist/cjs/src/hooks/dropdown/useOutsideClick.js +11 -11
- package/dist/cjs/src/hooks/dropdown/useScrollLock.js +23 -19
- package/dist/cjs/src/hooks/dropdown/useWindowResize.js +12 -13
- package/dist/cjs/src/hooks/useCallbackRef.js +2 -2
- package/dist/cjs/src/hooks/useMediaQuery.js +8 -11
- package/dist/cjs/src/hooks/useMergeRefs.js +2 -2
- package/dist/cjs/src/utils/date-picker.js +29 -30
- package/dist/cjs/src/utils/dropdown/dropdownUtils.js +39 -35
- package/dist/cjs/src/utils/dropdown/multiSelect.js +25 -45
- package/dist/esm/assets/scripts/baseBox.js +53 -57
- package/dist/esm/assets/scripts/comboBox.js +54 -107
- package/dist/esm/assets/scripts/datePicker.js +288 -324
- package/dist/esm/assets/scripts/featuredIcon.js +40 -50
- package/dist/esm/assets/scripts/fileInput/const/classNames.js +4 -10
- package/dist/esm/assets/scripts/fileInput/fileInput.js +32 -35
- package/dist/esm/assets/scripts/fileInput/fileInputModel.js +26 -36
- package/dist/esm/assets/scripts/fileInput/fileInputView.js +52 -49
- package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +60 -65
- package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +78 -113
- package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +106 -106
- package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +6 -16
- package/dist/esm/assets/scripts/index.js +2 -0
- package/dist/esm/assets/scripts/modal/Modal.js +43 -55
- package/dist/esm/assets/scripts/modal/ModalActions.js +39 -53
- package/dist/esm/assets/scripts/modal/ModalContent.js +21 -23
- package/dist/esm/assets/scripts/modal/ModalHeader.js +36 -49
- package/dist/esm/assets/scripts/modal/const/classNames.js +5 -13
- package/dist/esm/assets/scripts/modal/utils/contentUtils.js +1 -1
- package/dist/esm/assets/scripts/notification/FloatingNotification.js +90 -94
- package/dist/esm/assets/scripts/notification/FullWidthNotification.js +91 -81
- package/dist/esm/assets/scripts/notification/MessageNotification.js +91 -80
- package/dist/esm/assets/scripts/notification/Notification.js +49 -66
- package/dist/esm/assets/scripts/notification/const/classNames.js +1 -1
- package/dist/esm/assets/scripts/notification/const/icons.js +11 -25
- package/dist/esm/assets/scripts/notification/const/sizes.js +11 -19
- package/dist/esm/assets/scripts/notification/const/types.js +1 -1
- package/dist/esm/assets/scripts/notification/utils.js +28 -23
- package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +139 -142
- package/dist/esm/assets/scripts/selectBox.js +71 -133
- package/dist/esm/assets/scripts/shared/ButtonCloseX.js +18 -19
- package/dist/esm/assets/scripts/slider.js +103 -123
- package/dist/esm/assets/scripts/tab.js +7 -9
- package/dist/esm/assets/scripts/table/Table.js +370 -0
- package/dist/esm/assets/scripts/table/const/classNames.js +27 -0
- package/dist/esm/assets/scripts/table/const/index.js +2 -0
- package/dist/esm/assets/scripts/table/const/types.js +1 -0
- package/dist/esm/assets/scripts/table/index.js +8 -0
- package/dist/esm/assets/scripts/tag/Tag.js +107 -116
- package/dist/esm/assets/scripts/tag/const/classNames.js +3 -7
- package/dist/esm/assets/scripts/tag/const/sizes.js +4 -4
- package/dist/esm/assets/scripts/tooltip/Tooltip.js +154 -183
- package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +22 -26
- package/dist/esm/assets/scripts/tooltip/const/classNames.js +1 -1
- package/dist/esm/assets/scripts/tooltip/const/constants.js +14 -14
- package/dist/esm/assets/scripts/tooltip/const/icons.js +7 -7
- package/dist/esm/assets/scripts/tooltip/const/templates.js +42 -25
- package/dist/esm/assets/scripts/tooltip/utils.js +17 -18
- package/dist/esm/assets/scripts/utils/debounce.js +7 -8
- package/dist/esm/assets/scripts/utils/unifiedBox/domRenderer.js +101 -117
- package/dist/esm/assets/scripts/utils/unifiedBox/dropdownModel.js +103 -144
- package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxController.js +179 -208
- package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +165 -363
- package/dist/esm/constant/color.js +1 -1
- package/dist/esm/index.js +0 -27
- package/dist/esm/src/components/badge/Badge.js +17 -30
- package/dist/esm/src/components/badge/index.js +1 -2
- package/dist/esm/src/components/badge/utils.js +11 -10
- package/dist/esm/src/components/badge-group/BadgeGroup.js +35 -0
- package/dist/esm/src/components/badge-group/index.js +1 -0
- package/dist/esm/src/components/bread-crumb/BreadCrumb.js +48 -0
- package/dist/esm/src/components/button/Button.js +37 -58
- package/dist/esm/src/components/button/ButtonCloseX.js +12 -22
- package/dist/esm/src/components/button/ButtonStepper.js +9 -7
- package/dist/esm/src/components/button/index.js +0 -1
- package/dist/esm/src/components/button-group/ButtonGroup.js +89 -0
- package/dist/esm/src/components/button-group/index.js +1 -0
- package/dist/esm/src/components/carousel-arrow/CarouselArrow.js +26 -0
- package/dist/esm/src/components/carousel-arrow/index.js +1 -0
- package/dist/esm/src/components/carousel-number-group/CarouselNumberGroup.js +25 -0
- package/dist/esm/src/components/carousel-number-group/index.js +1 -0
- package/dist/esm/src/components/checkbox/Checkbox.js +28 -49
- package/dist/esm/src/components/checkbox/CheckboxInput.js +23 -42
- package/dist/esm/src/components/combo-box/ComboBox.js +285 -0
- package/dist/esm/src/components/data-grid/DataGrid.js +175 -0
- package/dist/esm/src/components/data-grid/DataGrid.types.js +1 -0
- package/dist/esm/src/components/data-grid/index.js +2 -0
- package/dist/esm/src/components/date-picker/CustomInput.js +16 -32
- package/dist/esm/src/components/date-picker/DatePicker.js +421 -260
- package/dist/esm/src/components/date-picker/index.js +0 -2
- package/dist/esm/src/components/date-picker/utils.js +2 -4
- package/dist/esm/src/components/divider/Divider.js +14 -25
- package/dist/esm/src/components/dot/Dot.js +11 -28
- package/dist/esm/src/components/dropdown/Dropdown.js +90 -132
- package/dist/esm/src/components/empty-state/EmptyState.js +28 -45
- package/dist/esm/src/components/featured-icon/FeaturedIcon.js +14 -33
- package/dist/esm/src/components/file-input/FileInput.js +102 -148
- package/dist/esm/src/components/horizontal-tab/HorizontalTab.js +46 -0
- package/dist/esm/src/components/horizontal-tab/index.js +1 -0
- package/dist/esm/src/components/image-file-input/ImageFileInput.js +109 -170
- package/dist/esm/src/components/image-file-input/components/ImagePreview.js +8 -17
- package/dist/esm/src/components/index.js +18 -6
- package/dist/esm/src/components/input-base/InputBase.js +189 -0
- package/dist/esm/src/components/input-base/index.js +1 -0
- package/dist/esm/src/components/modal/Modal.js +76 -105
- package/dist/esm/src/components/notification/FloatingNotification.js +52 -80
- package/dist/esm/src/components/notification/FullWidthNotification.js +67 -101
- package/dist/esm/src/components/notification/MessageNotification.js +60 -89
- package/dist/esm/src/components/notification/Notification.js +18 -36
- package/dist/esm/src/components/{input → number-input}/NumberInput.js +34 -54
- package/dist/esm/src/components/number-input/index.js +1 -0
- package/dist/esm/src/components/pagination/NavButton.js +28 -42
- package/dist/esm/src/components/pagination/Pagination.js +58 -97
- package/dist/esm/src/components/password-input/PasswordInput.js +48 -0
- package/dist/esm/src/components/password-input/index.js +1 -0
- package/dist/esm/src/components/progress-bar/ProgressBar.js +45 -60
- package/dist/esm/src/components/progress-bar/components/SegmentBar.js +11 -9
- package/dist/esm/src/components/progress-bar/components/SegmentLabels.js +32 -43
- package/dist/esm/src/components/progress-bar/hooks/useProgressBar.js +59 -78
- package/dist/esm/src/components/progress-bar/utils.js +8 -8
- package/dist/esm/src/components/progress-circle/ProgressCircle.js +49 -72
- package/dist/esm/src/components/radio/Radio.js +24 -43
- package/dist/esm/src/components/radio/RadioInput.js +18 -36
- package/dist/esm/src/components/range-date-picker/RangeDatePicker.js +141 -0
- package/dist/esm/src/components/range-date-picker/index.js +1 -0
- package/dist/esm/src/components/range-date-picker-with-buttons/RangeDatePickerWithButtons.js +75 -0
- package/dist/esm/src/components/range-date-picker-with-buttons/index.js +1 -0
- package/dist/esm/src/components/select/Select.js +36 -63
- package/dist/esm/src/components/select-box/SelectBox.js +254 -0
- package/dist/esm/src/components/select-dropdown/SelectDropdown.js +64 -100
- package/dist/esm/src/components/shared/hintText/HintText.js +13 -30
- package/dist/esm/src/components/shared/label/Label.js +12 -29
- package/dist/esm/src/components/slider/Slider.js +25 -28
- package/dist/esm/src/components/spinner/Spinner.js +25 -39
- package/dist/esm/src/components/switch/Switch.js +44 -69
- package/dist/esm/src/components/tab/TabButton.js +41 -61
- package/dist/esm/src/components/tab/index.js +1 -3
- package/dist/esm/src/components/table/Table.js +374 -0
- package/dist/esm/src/components/table/index.js +1 -0
- package/dist/esm/src/components/table/types.js +1 -0
- package/dist/esm/src/components/tag/Tag.js +65 -85
- package/dist/esm/src/components/textarea/Textarea.js +72 -0
- package/dist/esm/src/components/textarea/index.js +1 -0
- package/dist/esm/src/components/toggle/Toggle.js +28 -52
- package/dist/esm/src/components/tooltip/Tooltip.js +75 -108
- package/dist/esm/src/components/vertical-tab/VerticalTab.js +40 -0
- package/dist/esm/src/components/vertical-tab/index.js +1 -0
- package/dist/esm/src/constant/breakpoint.js +3 -3
- package/dist/esm/src/constant/date-picker.js +1 -1
- package/dist/esm/src/constant/size.js +1 -1
- package/dist/esm/src/hooks/dropdown/useDropdown.js +58 -60
- package/dist/esm/src/hooks/dropdown/useDropdownKeyboard.js +37 -40
- package/dist/esm/src/hooks/dropdown/useDropdownPosition.js +7 -9
- package/dist/esm/src/hooks/dropdown/useOutsideClick.js +11 -11
- package/dist/esm/src/hooks/dropdown/useScrollLock.js +23 -19
- package/dist/esm/src/hooks/dropdown/useWindowResize.js +12 -13
- package/dist/esm/src/hooks/useCallbackRef.js +2 -2
- package/dist/esm/src/hooks/useMediaQuery.js +8 -11
- package/dist/esm/src/hooks/useMergeRefs.js +2 -2
- package/dist/esm/src/utils/date-picker.js +29 -30
- package/dist/esm/src/utils/dropdown/dropdownUtils.js +39 -35
- package/dist/esm/src/utils/dropdown/multiSelect.js +25 -45
- package/dist/temp/assets/scripts/baseBox.js +53 -57
- package/dist/temp/assets/scripts/comboBox.js +62 -93
- package/dist/temp/assets/scripts/datePicker.js +286 -293
- package/dist/temp/assets/scripts/featuredIcon.js +40 -47
- package/dist/temp/assets/scripts/fileInput/const/classNames.js +4 -8
- package/dist/temp/assets/scripts/fileInput/fileInput.js +29 -33
- package/dist/temp/assets/scripts/fileInput/fileInputModel.js +24 -32
- package/dist/temp/assets/scripts/fileInput/fileInputView.js +52 -49
- package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.js +57 -63
- package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.js +79 -99
- package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.js +106 -104
- package/dist/temp/assets/scripts/imageFileInput/const/classNames.js +6 -10
- package/dist/temp/assets/scripts/index.d.ts +2 -0
- package/dist/temp/assets/scripts/index.js +2 -0
- package/dist/temp/assets/scripts/modal/Modal.js +46 -52
- package/dist/temp/assets/scripts/modal/ModalActions.js +42 -50
- package/dist/temp/assets/scripts/modal/ModalContent.js +21 -23
- package/dist/temp/assets/scripts/modal/ModalHeader.js +40 -46
- package/dist/temp/assets/scripts/modal/const/classNames.js +5 -5
- package/dist/temp/assets/scripts/modal/utils/contentUtils.js +1 -1
- package/dist/temp/assets/scripts/notification/FloatingNotification.js +80 -77
- package/dist/temp/assets/scripts/notification/FullWidthNotification.js +78 -62
- package/dist/temp/assets/scripts/notification/MessageNotification.js +81 -64
- package/dist/temp/assets/scripts/notification/Notification.js +48 -62
- package/dist/temp/assets/scripts/notification/const/classNames.js +1 -1
- package/dist/temp/assets/scripts/notification/const/icons.js +11 -25
- package/dist/temp/assets/scripts/notification/const/sizes.js +11 -11
- package/dist/temp/assets/scripts/notification/const/types.js +1 -1
- package/dist/temp/assets/scripts/notification/utils.js +31 -26
- package/dist/temp/assets/scripts/progress-bar/ProgressBar.js +124 -119
- package/dist/temp/assets/scripts/selectBox.js +81 -105
- package/dist/temp/assets/scripts/shared/ButtonCloseX.js +14 -13
- package/dist/temp/assets/scripts/slider.js +105 -113
- package/dist/temp/assets/scripts/tab.js +7 -9
- package/dist/temp/assets/scripts/table/Table.d.ts +41 -0
- package/dist/temp/assets/scripts/table/Table.js +378 -0
- package/dist/temp/assets/scripts/table/const/classNames.d.ts +27 -0
- package/dist/temp/assets/scripts/table/const/classNames.js +27 -0
- package/dist/temp/assets/scripts/table/const/index.d.ts +2 -0
- package/dist/temp/assets/scripts/table/const/index.js +2 -0
- package/dist/temp/assets/scripts/table/const/types.d.ts +23 -0
- package/dist/temp/assets/scripts/table/const/types.js +1 -0
- package/dist/temp/assets/scripts/table/index.d.ts +3 -0
- package/dist/temp/assets/scripts/table/index.js +8 -0
- package/dist/temp/assets/scripts/tag/Tag.js +104 -112
- package/dist/temp/assets/scripts/tag/const/classNames.js +3 -3
- package/dist/temp/assets/scripts/tag/const/sizes.js +4 -4
- package/dist/temp/assets/scripts/tooltip/Tooltip.js +125 -150
- package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.js +20 -23
- package/dist/temp/assets/scripts/tooltip/const/classNames.js +1 -1
- package/dist/temp/assets/scripts/tooltip/const/constants.d.ts +1 -1
- package/dist/temp/assets/scripts/tooltip/const/constants.js +14 -14
- package/dist/temp/assets/scripts/tooltip/const/icons.js +7 -7
- package/dist/temp/assets/scripts/tooltip/const/templates.js +42 -13
- package/dist/temp/assets/scripts/tooltip/utils.js +13 -15
- package/dist/temp/assets/scripts/utils/debounce.js +5 -9
- package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.js +96 -105
- package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.js +96 -121
- package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.js +170 -193
- package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +173 -250
- package/dist/temp/constant/color.js +1 -1
- package/dist/temp/index.d.ts +0 -27
- package/dist/temp/index.js +0 -27
- package/dist/temp/src/components/badge/Badge.js +3 -15
- package/dist/temp/src/components/badge/index.d.ts +0 -1
- package/dist/temp/src/components/badge/index.js +0 -1
- package/dist/temp/src/components/badge/utils.js +5 -7
- package/dist/{types/src/components/badge → temp/src/components/badge-group}/BadgeGroup.d.ts +1 -1
- package/dist/temp/src/components/badge-group/BadgeGroup.js +13 -0
- package/dist/temp/src/components/badge-group/index.d.ts +1 -0
- package/dist/temp/src/components/badge-group/index.js +1 -0
- package/dist/temp/src/components/bread-crumb/BreadCrumb.js +20 -0
- package/dist/temp/src/components/button/Button.js +21 -38
- package/dist/temp/src/components/button/ButtonCloseX.js +3 -15
- package/dist/temp/src/components/button/ButtonStepper.js +2 -3
- package/dist/temp/src/components/button/index.d.ts +0 -1
- package/dist/temp/src/components/button/index.js +0 -1
- package/dist/{types/src/components/button → temp/src/components/button-group}/ButtonGroup.d.ts +5 -4
- package/dist/temp/src/components/button-group/ButtonGroup.js +51 -0
- package/dist/temp/src/components/button-group/index.d.ts +1 -0
- package/dist/temp/src/components/button-group/index.js +1 -0
- package/dist/temp/src/components/carousel-arrow/CarouselArrow.js +9 -0
- package/dist/temp/src/components/carousel-arrow/index.d.ts +1 -0
- package/dist/temp/src/components/carousel-arrow/index.js +1 -0
- package/dist/temp/src/components/carousel-number-group/CarouselNumberGroup.js +10 -0
- package/dist/{types/src/components/carousel → temp/src/components/carousel-number-group}/index.d.ts +0 -1
- package/dist/temp/src/components/{carousel → carousel-number-group}/index.js +0 -1
- package/dist/temp/src/components/checkbox/Checkbox.js +2 -25
- package/dist/temp/src/components/checkbox/CheckboxInput.js +6 -29
- package/dist/temp/src/components/combo-box/ComboBox.js +166 -0
- package/dist/temp/src/components/data-grid/DataGrid.d.ts +28 -0
- package/dist/temp/src/components/data-grid/DataGrid.js +88 -0
- package/dist/temp/src/components/data-grid/DataGrid.types.d.ts +35 -0
- package/dist/temp/src/components/data-grid/DataGrid.types.js +1 -0
- package/dist/temp/src/components/data-grid/index.d.ts +2 -0
- package/dist/temp/src/components/data-grid/index.js +2 -0
- package/dist/temp/src/components/date-picker/CustomInput.js +5 -28
- package/dist/temp/src/components/date-picker/DatePicker.d.ts +11 -7
- package/dist/temp/src/components/date-picker/DatePicker.js +394 -221
- package/dist/temp/src/components/date-picker/index.d.ts +0 -2
- package/dist/temp/src/components/date-picker/index.js +0 -2
- package/dist/temp/src/components/date-picker/utils.js +1 -2
- package/dist/temp/src/components/divider/Divider.js +1 -15
- package/dist/temp/src/components/dot/Dot.js +2 -25
- package/dist/temp/src/components/dropdown/Dropdown.js +23 -39
- package/dist/temp/src/components/empty-state/EmptyState.js +3 -29
- package/dist/temp/src/components/featured-icon/FeaturedIcon.js +3 -26
- package/dist/temp/src/components/file-input/FileInput.d.ts +1 -1
- package/dist/temp/src/components/file-input/FileInput.js +33 -69
- package/dist/{types/src/components/tab → temp/src/components/horizontal-tab}/HorizontalTab.d.ts +1 -1
- package/dist/temp/src/components/horizontal-tab/HorizontalTab.js +24 -0
- package/dist/temp/src/components/horizontal-tab/index.d.ts +1 -0
- package/dist/temp/src/components/horizontal-tab/index.js +1 -0
- package/dist/temp/src/components/image-file-input/ImageFileInput.d.ts +1 -1
- package/dist/temp/src/components/image-file-input/ImageFileInput.js +45 -73
- package/dist/temp/src/components/image-file-input/components/ImagePreview.js +2 -14
- package/dist/temp/src/components/index.d.ts +17 -5
- package/dist/temp/src/components/index.js +17 -5
- package/dist/temp/src/components/{input → input-base}/InputBase.d.ts +1 -0
- package/dist/temp/src/components/input-base/InputBase.js +96 -0
- package/dist/temp/src/components/input-base/index.d.ts +1 -0
- package/dist/temp/src/components/input-base/index.js +1 -0
- package/dist/temp/src/components/modal/Modal.js +15 -41
- package/dist/temp/src/components/notification/FloatingNotification.js +11 -34
- package/dist/temp/src/components/notification/FullWidthNotification.js +12 -35
- package/dist/temp/src/components/notification/MessageNotification.js +8 -31
- package/dist/temp/src/components/notification/Notification.js +4 -27
- package/dist/{types/src/components/input → temp/src/components/number-input}/NumberInput.d.ts +1 -1
- package/dist/temp/src/components/number-input/NumberInput.js +68 -0
- package/dist/temp/src/components/number-input/index.d.ts +1 -0
- package/dist/temp/src/components/number-input/index.js +1 -0
- package/dist/temp/src/components/pagination/NavButton.js +19 -31
- package/dist/temp/src/components/pagination/Pagination.js +33 -60
- package/dist/temp/src/components/{input → password-input}/PasswordInput.d.ts +1 -1
- package/dist/temp/src/components/password-input/PasswordInput.js +28 -0
- package/dist/temp/src/components/password-input/index.d.ts +1 -0
- package/dist/temp/src/components/password-input/index.js +1 -0
- package/dist/temp/src/components/progress-bar/ProgressBar.js +10 -22
- package/dist/temp/src/components/progress-bar/components/SegmentBar.js +5 -6
- package/dist/temp/src/components/progress-bar/components/SegmentLabels.js +11 -24
- package/dist/temp/src/components/progress-bar/hooks/useProgressBar.js +36 -45
- package/dist/temp/src/components/progress-bar/utils.js +8 -8
- package/dist/temp/src/components/progress-circle/ProgressCircle.js +5 -17
- package/dist/temp/src/components/radio/Radio.js +2 -25
- package/dist/temp/src/components/radio/RadioInput.js +2 -25
- package/dist/{types/src/components/date-picker → temp/src/components/range-date-picker}/RangeDatePicker.d.ts +1 -1
- package/dist/temp/src/components/range-date-picker/RangeDatePicker.js +104 -0
- package/dist/temp/src/components/range-date-picker/index.d.ts +1 -0
- package/dist/temp/src/components/range-date-picker/index.js +1 -0
- package/dist/{types/src/components/date-picker → temp/src/components/range-date-picker-with-buttons}/RangeDatePickerWithButtons.d.ts +1 -1
- package/dist/temp/src/components/range-date-picker-with-buttons/RangeDatePickerWithButtons.js +43 -0
- package/dist/temp/src/components/range-date-picker-with-buttons/index.d.ts +1 -0
- package/dist/temp/src/components/range-date-picker-with-buttons/index.js +1 -0
- package/dist/temp/src/components/select/Select.js +3 -26
- package/dist/temp/src/components/select-box/SelectBox.js +130 -0
- package/dist/temp/src/components/select-dropdown/SelectDropdown.js +11 -34
- package/dist/temp/src/components/shared/hintText/HintText.js +2 -25
- package/dist/temp/src/components/shared/label/Label.js +2 -25
- package/dist/temp/src/components/slider/Slider.js +15 -16
- package/dist/temp/src/components/spinner/Spinner.js +4 -17
- package/dist/temp/src/components/switch/Switch.js +17 -30
- package/dist/temp/src/components/tab/TabButton.js +6 -29
- package/dist/temp/src/components/tab/index.d.ts +0 -2
- package/dist/temp/src/components/tab/index.js +0 -2
- package/dist/temp/src/components/table/Table.d.ts +48 -0
- package/dist/temp/src/components/table/Table.js +199 -0
- package/dist/temp/src/components/table/index.d.ts +1 -0
- package/dist/temp/src/components/table/index.js +1 -0
- package/dist/temp/src/components/table/types.d.ts +47 -0
- package/dist/temp/src/components/table/types.js +1 -0
- package/dist/temp/src/components/tag/Tag.js +39 -53
- package/dist/temp/src/components/textarea/Textarea.js +34 -0
- package/dist/temp/src/components/textarea/index.d.ts +1 -0
- package/dist/temp/src/components/textarea/index.js +1 -0
- package/dist/temp/src/components/toggle/Toggle.js +3 -26
- package/dist/temp/src/components/tooltip/Tooltip.js +49 -67
- package/dist/temp/src/components/{tab → vertical-tab}/VerticalTab.d.ts +1 -1
- package/dist/temp/src/components/vertical-tab/VerticalTab.js +20 -0
- package/dist/temp/src/components/vertical-tab/index.d.ts +1 -0
- package/dist/temp/src/components/vertical-tab/index.js +1 -0
- package/dist/temp/src/constant/breakpoint.js +3 -3
- package/dist/temp/src/constant/date-picker.js +1 -1
- package/dist/temp/src/constant/size.js +1 -1
- package/dist/temp/src/hooks/dropdown/useDropdown.js +37 -37
- package/dist/temp/src/hooks/dropdown/useDropdownKeyboard.js +26 -27
- package/dist/temp/src/hooks/dropdown/useDropdownPosition.js +7 -7
- package/dist/temp/src/hooks/dropdown/useOutsideClick.js +7 -7
- package/dist/temp/src/hooks/dropdown/useScrollLock.js +17 -17
- package/dist/temp/src/hooks/dropdown/useWindowResize.js +10 -11
- package/dist/temp/src/hooks/useCallbackRef.js +2 -2
- package/dist/temp/src/hooks/useMediaQuery.js +8 -9
- package/dist/temp/src/hooks/useMergeRefs.js +2 -2
- package/dist/temp/src/utils/date-picker.js +23 -25
- package/dist/temp/src/utils/dropdown/dropdownUtils.js +26 -27
- package/dist/temp/src/utils/dropdown/multiSelect.js +23 -25
- package/dist/types/assets/scripts/index.d.ts +2 -0
- package/dist/types/assets/scripts/table/Table.d.ts +41 -0
- package/dist/types/assets/scripts/table/const/classNames.d.ts +27 -0
- package/dist/types/assets/scripts/table/const/index.d.ts +2 -0
- package/dist/types/assets/scripts/table/const/types.d.ts +23 -0
- package/dist/types/assets/scripts/table/index.d.ts +3 -0
- package/dist/types/assets/scripts/tooltip/const/constants.d.ts +1 -1
- package/dist/types/index.d.ts +0 -27
- package/dist/types/src/components/badge/index.d.ts +0 -1
- package/dist/{temp/src/components/badge → types/src/components/badge-group}/BadgeGroup.d.ts +1 -1
- package/dist/types/src/components/badge-group/index.d.ts +1 -0
- package/dist/types/src/components/button/index.d.ts +0 -1
- package/dist/{temp/src/components/button → types/src/components/button-group}/ButtonGroup.d.ts +5 -4
- package/dist/types/src/components/button-group/index.d.ts +1 -0
- package/dist/types/src/components/carousel-arrow/index.d.ts +1 -0
- package/dist/{temp/src/components/carousel → types/src/components/carousel-number-group}/index.d.ts +0 -1
- package/dist/types/src/components/data-grid/DataGrid.d.ts +28 -0
- package/dist/types/src/components/data-grid/DataGrid.types.d.ts +35 -0
- package/dist/types/src/components/data-grid/index.d.ts +2 -0
- package/dist/types/src/components/date-picker/DatePicker.d.ts +11 -7
- package/dist/types/src/components/date-picker/index.d.ts +0 -2
- package/dist/types/src/components/file-input/FileInput.d.ts +1 -1
- package/dist/{temp/src/components/tab → types/src/components/horizontal-tab}/HorizontalTab.d.ts +1 -1
- package/dist/types/src/components/horizontal-tab/index.d.ts +1 -0
- package/dist/types/src/components/image-file-input/ImageFileInput.d.ts +1 -1
- package/dist/types/src/components/index.d.ts +17 -5
- package/dist/types/src/components/{input → input-base}/InputBase.d.ts +1 -0
- package/dist/types/src/components/input-base/index.d.ts +1 -0
- package/dist/{temp/src/components/input → types/src/components/number-input}/NumberInput.d.ts +1 -1
- package/dist/types/src/components/number-input/index.d.ts +1 -0
- package/dist/types/src/components/{input → password-input}/PasswordInput.d.ts +1 -1
- package/dist/types/src/components/password-input/index.d.ts +1 -0
- package/dist/{temp/src/components/date-picker → types/src/components/range-date-picker}/RangeDatePicker.d.ts +1 -1
- package/dist/types/src/components/range-date-picker/index.d.ts +1 -0
- package/dist/{temp/src/components/date-picker → types/src/components/range-date-picker-with-buttons}/RangeDatePickerWithButtons.d.ts +1 -1
- package/dist/types/src/components/range-date-picker-with-buttons/index.d.ts +1 -0
- package/dist/types/src/components/tab/index.d.ts +0 -2
- package/dist/types/src/components/table/Table.d.ts +48 -0
- package/dist/types/src/components/table/index.d.ts +1 -0
- package/dist/types/src/components/table/types.d.ts +47 -0
- package/dist/types/src/components/textarea/index.d.ts +1 -0
- package/dist/types/src/components/{tab → vertical-tab}/VerticalTab.d.ts +1 -1
- package/dist/types/src/components/vertical-tab/index.d.ts +1 -0
- package/dist/ui-admin/assets/styles/style.css +735 -168
- package/package.json +2 -1
- package/dist/cjs/src/components/badge/BadgeGroup.js +0 -62
- package/dist/cjs/src/components/breadcrumb/BreadCrumb.js +0 -66
- package/dist/cjs/src/components/button/ButtonGroup.js +0 -116
- package/dist/cjs/src/components/carousel/CarouselArrow.js +0 -41
- package/dist/cjs/src/components/carousel/CarouselNumberGroup.js +0 -45
- package/dist/cjs/src/components/combobox/ComboBox.js +0 -349
- package/dist/cjs/src/components/date-picker/RangeDatePicker.js +0 -154
- package/dist/cjs/src/components/date-picker/RangeDatePickerWithButtons.js +0 -99
- package/dist/cjs/src/components/input/InputBase.js +0 -229
- package/dist/cjs/src/components/input/NumberInput.js +0 -132
- package/dist/cjs/src/components/input/PasswordInput.js +0 -72
- package/dist/cjs/src/components/input/Textarea.js +0 -107
- package/dist/cjs/src/components/input/index.js +0 -49
- package/dist/cjs/src/components/selectbox/SelectBox.js +0 -318
- package/dist/cjs/src/components/tab/HorizontalTab.js +0 -68
- package/dist/cjs/src/components/tab/VerticalTab.js +0 -60
- package/dist/esm/src/components/badge/BadgeGroup.js +0 -55
- package/dist/esm/src/components/breadcrumb/BreadCrumb.js +0 -59
- package/dist/esm/src/components/button/ButtonGroup.js +0 -108
- package/dist/esm/src/components/carousel/CarouselArrow.js +0 -33
- package/dist/esm/src/components/carousel/CarouselNumberGroup.js +0 -37
- package/dist/esm/src/components/carousel/index.js +0 -2
- package/dist/esm/src/components/combobox/ComboBox.js +0 -343
- package/dist/esm/src/components/date-picker/RangeDatePicker.js +0 -148
- package/dist/esm/src/components/date-picker/RangeDatePickerWithButtons.js +0 -93
- package/dist/esm/src/components/input/InputBase.js +0 -223
- package/dist/esm/src/components/input/PasswordInput.js +0 -65
- package/dist/esm/src/components/input/Textarea.js +0 -100
- package/dist/esm/src/components/input/index.js +0 -4
- package/dist/esm/src/components/selectbox/SelectBox.js +0 -312
- package/dist/esm/src/components/tab/HorizontalTab.js +0 -61
- package/dist/esm/src/components/tab/VerticalTab.js +0 -52
- package/dist/temp/src/components/badge/BadgeGroup.js +0 -36
- package/dist/temp/src/components/breadcrumb/BreadCrumb.js +0 -33
- package/dist/temp/src/components/button/ButtonGroup.js +0 -72
- package/dist/temp/src/components/carousel/CarouselArrow.js +0 -24
- package/dist/temp/src/components/carousel/CarouselNumberGroup.js +0 -24
- package/dist/temp/src/components/combobox/ComboBox.js +0 -199
- package/dist/temp/src/components/date-picker/RangeDatePicker.js +0 -117
- package/dist/temp/src/components/date-picker/RangeDatePickerWithButtons.js +0 -55
- package/dist/temp/src/components/input/InputBase.js +0 -121
- package/dist/temp/src/components/input/NumberInput.js +0 -93
- package/dist/temp/src/components/input/PasswordInput.js +0 -51
- package/dist/temp/src/components/input/Textarea.js +0 -60
- package/dist/temp/src/components/input/index.d.ts +0 -4
- package/dist/temp/src/components/input/index.js +0 -4
- package/dist/temp/src/components/selectbox/SelectBox.js +0 -163
- package/dist/temp/src/components/tab/HorizontalTab.js +0 -37
- package/dist/temp/src/components/tab/VerticalTab.js +0 -32
- package/dist/types/src/components/input/index.d.ts +0 -4
- /package/dist/cjs/src/components/{breadcrumb → bread-crumb}/index.js +0 -0
- /package/dist/cjs/src/components/{combobox → combo-box}/index.js +0 -0
- /package/dist/cjs/src/components/{selectbox → select-box}/index.js +0 -0
- /package/dist/esm/src/components/{breadcrumb → bread-crumb}/index.js +0 -0
- /package/dist/esm/src/components/{combobox → combo-box}/index.js +0 -0
- /package/dist/esm/src/components/{selectbox → select-box}/index.js +0 -0
- /package/dist/temp/src/components/{breadcrumb → bread-crumb}/BreadCrumb.d.ts +0 -0
- /package/dist/temp/src/components/{breadcrumb → bread-crumb}/index.d.ts +0 -0
- /package/dist/temp/src/components/{breadcrumb → bread-crumb}/index.js +0 -0
- /package/dist/temp/src/components/{carousel → carousel-arrow}/CarouselArrow.d.ts +0 -0
- /package/dist/temp/src/components/{carousel → carousel-number-group}/CarouselNumberGroup.d.ts +0 -0
- /package/dist/temp/src/components/{combobox → combo-box}/ComboBox.d.ts +0 -0
- /package/dist/temp/src/components/{combobox → combo-box}/index.d.ts +0 -0
- /package/dist/temp/src/components/{combobox → combo-box}/index.js +0 -0
- /package/dist/temp/src/components/{selectbox → select-box}/SelectBox.d.ts +0 -0
- /package/dist/temp/src/components/{selectbox → select-box}/index.d.ts +0 -0
- /package/dist/temp/src/components/{selectbox → select-box}/index.js +0 -0
- /package/dist/temp/src/components/{input → textarea}/Textarea.d.ts +0 -0
- /package/dist/types/src/components/{breadcrumb → bread-crumb}/BreadCrumb.d.ts +0 -0
- /package/dist/types/src/components/{breadcrumb → bread-crumb}/index.d.ts +0 -0
- /package/dist/types/src/components/{carousel → carousel-arrow}/CarouselArrow.d.ts +0 -0
- /package/dist/types/src/components/{carousel → carousel-number-group}/CarouselNumberGroup.d.ts +0 -0
- /package/dist/types/src/components/{combobox → combo-box}/ComboBox.d.ts +0 -0
- /package/dist/types/src/components/{combobox → combo-box}/index.d.ts +0 -0
- /package/dist/types/src/components/{selectbox → select-box}/SelectBox.d.ts +0 -0
- /package/dist/types/src/components/{selectbox → select-box}/index.d.ts +0 -0
- /package/dist/types/src/components/{input → textarea}/Textarea.d.ts +0 -0
|
@@ -1,63 +1,50 @@
|
|
|
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))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
2
|
import { AlertCircle, AlertCircleFill, HelpCircle, HelpCircleFill } from '@ncds/ui-admin-icon';
|
|
14
3
|
import classNames from 'classnames';
|
|
15
4
|
import { useCallback, useMemo, useRef, useState } from 'react';
|
|
16
5
|
import { ButtonCloseX } from '../button/ButtonCloseX';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
const ICON_SIZE_SM = 14;
|
|
7
|
+
const ICON_SIZE_DEFAULT = 16;
|
|
8
|
+
const MARGIN = 10;
|
|
9
|
+
const DEFAULT_TOOLTIP_WIDTH = 200;
|
|
10
|
+
const DEFAULT_TOOLTIP_HEIGHT = 60;
|
|
11
|
+
const POSITION_PRIORITY = ['bottom', 'top', 'right', 'left'];
|
|
23
12
|
// 수직 위치(top/bottom)일 때 수평 정렬 보정
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
13
|
+
const resolveVerticalAlignment = (position, triggerRect, tooltipWidth, viewportWidth) => {
|
|
14
|
+
const centerX = triggerRect.left + triggerRect.width / 2;
|
|
15
|
+
const tooltipHalfWidth = tooltipWidth / 2;
|
|
27
16
|
if (centerX - tooltipHalfWidth < MARGIN) {
|
|
28
|
-
return
|
|
17
|
+
return `${position}-left`;
|
|
29
18
|
}
|
|
30
19
|
if (centerX + tooltipHalfWidth > viewportWidth - MARGIN) {
|
|
31
|
-
return
|
|
20
|
+
return `${position}-right`;
|
|
32
21
|
}
|
|
33
22
|
return position;
|
|
34
23
|
};
|
|
35
24
|
// 해당 위치에 툴팁을 배치할 충분한 공간이 있는지 확인
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
25
|
+
const hasEnoughSpace = (position, spaces, tooltipWidth, tooltipHeight) => {
|
|
26
|
+
const isVertical = position === 'bottom' || position === 'top';
|
|
27
|
+
const requiredSpace = isVertical ? tooltipHeight : tooltipWidth;
|
|
39
28
|
return spaces[position] >= requiredSpace + MARGIN;
|
|
40
29
|
};
|
|
41
30
|
// 위치 계산 position='auto' 일 때 사용
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var spaces = {
|
|
31
|
+
const calculateOptimalPosition = (triggerElement, tooltipElement, preferredPosition = 'bottom') => {
|
|
32
|
+
const triggerRect = triggerElement.getBoundingClientRect();
|
|
33
|
+
const tooltipRect = tooltipElement.getBoundingClientRect();
|
|
34
|
+
const { innerWidth: viewportWidth, innerHeight: viewportHeight } = window;
|
|
35
|
+
const spaces = {
|
|
48
36
|
top: triggerRect.top,
|
|
49
37
|
bottom: viewportHeight - triggerRect.bottom,
|
|
50
38
|
left: triggerRect.left,
|
|
51
39
|
right: viewportWidth - triggerRect.right,
|
|
52
40
|
};
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
for (
|
|
56
|
-
var position = POSITION_PRIORITY_1[_i];
|
|
41
|
+
const tooltipWidth = tooltipRect.width || DEFAULT_TOOLTIP_WIDTH;
|
|
42
|
+
const tooltipHeight = tooltipRect.height || DEFAULT_TOOLTIP_HEIGHT;
|
|
43
|
+
for (const position of POSITION_PRIORITY) {
|
|
57
44
|
if (!hasEnoughSpace(position, spaces, tooltipWidth, tooltipHeight)) {
|
|
58
45
|
continue;
|
|
59
46
|
}
|
|
60
|
-
|
|
47
|
+
const isVertical = position === 'bottom' || position === 'top';
|
|
61
48
|
if (isVertical) {
|
|
62
49
|
return resolveVerticalAlignment(position, triggerRect, tooltipWidth, viewportWidth);
|
|
63
50
|
}
|
|
@@ -65,16 +52,15 @@ var calculateOptimalPosition = function (triggerElement, tooltipElement, preferr
|
|
|
65
52
|
}
|
|
66
53
|
return preferredPosition;
|
|
67
54
|
};
|
|
68
|
-
export
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
var handleMouseEnter = useCallback(function () {
|
|
55
|
+
export const Tooltip = ({ tooltipType = 'white', iconType = 'stroke', position = 'auto', size = 'sm', title, content, hideArrow = false, type = 'short', iconColor = 'var(--gray-300)', iconStyle = 'help-circle', className, }) => {
|
|
56
|
+
const iconSize = size === 'sm' ? ICON_SIZE_SM : ICON_SIZE_DEFAULT;
|
|
57
|
+
const tooltipRef = useRef(null);
|
|
58
|
+
const tooltipBgRef = useRef(null);
|
|
59
|
+
const [calculatedPosition, setCalculatedPosition] = useState(position === 'auto' ? 'bottom' : position);
|
|
60
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
61
|
+
const [isManuallyClose, setIsManuallyClose] = useState(false);
|
|
62
|
+
const [isMeasuring, setIsMeasuring] = useState(false);
|
|
63
|
+
const handleMouseEnter = useCallback(() => {
|
|
78
64
|
if (isManuallyClose)
|
|
79
65
|
return;
|
|
80
66
|
setIsVisible(true);
|
|
@@ -82,41 +68,37 @@ export var Tooltip = function (_a) {
|
|
|
82
68
|
// 크기 측정을 위해 임시로 measuring 클래스 추가
|
|
83
69
|
setIsMeasuring(true);
|
|
84
70
|
// 다음 렌더링 사이클에서 크기 측정
|
|
85
|
-
setTimeout(
|
|
71
|
+
setTimeout(() => {
|
|
86
72
|
if (tooltipRef.current && tooltipBgRef.current) {
|
|
87
|
-
|
|
73
|
+
const optimalPosition = calculateOptimalPosition(tooltipRef.current, tooltipBgRef.current, 'bottom');
|
|
88
74
|
setCalculatedPosition(optimalPosition);
|
|
89
75
|
setIsMeasuring(false);
|
|
90
76
|
}
|
|
91
77
|
}, 0);
|
|
92
78
|
}
|
|
93
79
|
}, [position, isManuallyClose]);
|
|
94
|
-
|
|
80
|
+
const handleMouseLeave = useCallback(() => {
|
|
95
81
|
if (type === 'short') {
|
|
96
82
|
setIsVisible(false);
|
|
97
83
|
}
|
|
98
84
|
setIsManuallyClose(false);
|
|
99
85
|
}, [type]);
|
|
100
|
-
|
|
86
|
+
const handleCloseClick = useCallback(() => {
|
|
101
87
|
setIsVisible(false);
|
|
102
88
|
setIsManuallyClose(true);
|
|
103
89
|
}, []);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
'ncua-tooltip__bg--force-hidden': isManuallyClose,
|
|
117
|
-
});
|
|
118
|
-
}, [tooltipType, finalPosition, isVisible, isMeasuring, isManuallyClose]);
|
|
119
|
-
return (_jsxs("span", __assign({ ref: tooltipRef, className: tooltipClassName, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave }, { children: [iconStyle === 'help-circle' &&
|
|
90
|
+
const finalPosition = position === 'auto' ? calculatedPosition : position;
|
|
91
|
+
const tooltipClassName = useMemo(() => classNames('ncua-tooltip', `ncua-tooltip--${size}`, `ncua-tooltip--${type}`, {
|
|
92
|
+
'ncua-tooltip--hidden-arrow': hideArrow,
|
|
93
|
+
'ncua-tooltip--stroke': iconType === 'stroke',
|
|
94
|
+
'ncua-tooltip--auto': position === 'auto',
|
|
95
|
+
}, className), [size, type, hideArrow, iconType, position, className]);
|
|
96
|
+
const tooltipBgClassName = useMemo(() => classNames('ncua-tooltip__bg', `ncua-tooltip__bg--${tooltipType}`, `ncua-tooltip__bg--${finalPosition}`, {
|
|
97
|
+
'ncua-tooltip__bg--visible': isVisible,
|
|
98
|
+
'ncua-tooltip__bg--measuring': isMeasuring,
|
|
99
|
+
'ncua-tooltip__bg--force-hidden': isManuallyClose,
|
|
100
|
+
}), [tooltipType, finalPosition, isVisible, isMeasuring, isManuallyClose]);
|
|
101
|
+
return (_jsxs("span", { ref: tooltipRef, className: tooltipClassName, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: [iconStyle === 'help-circle' &&
|
|
120
102
|
(iconType === 'stroke' ? (_jsx(HelpCircle, { width: iconSize, height: iconSize, color: iconColor })) : (_jsx(HelpCircleFill, { width: iconSize, height: iconSize, color: iconColor }))), iconStyle === 'alert-circle' &&
|
|
121
|
-
(iconType === 'stroke' ? (_jsx(AlertCircle, { width: iconSize, height: iconSize, color: iconColor })) : (_jsx(AlertCircleFill, { width: iconSize, height: iconSize, color: iconColor }))), _jsxs("span",
|
|
103
|
+
(iconType === 'stroke' ? (_jsx(AlertCircle, { width: iconSize, height: iconSize, color: iconColor })) : (_jsx(AlertCircleFill, { width: iconSize, height: iconSize, color: iconColor }))), _jsxs("span", { ref: tooltipBgRef, className: tooltipBgClassName, children: [title && _jsx("span", { className: "ncua-tooltip__title", children: title }), content && _jsx("span", { className: "ncua-tooltip__content", children: content }), type === 'long' && (_jsx(ButtonCloseX, { className: "ncua-tooltip__close-button", size: "xs", theme: tooltipType === 'white' ? 'dark' : 'light', onClick: handleCloseClick, "aria-label": "\uD234\uD301 \uB2EB\uAE30" }))] })] }));
|
|
122
104
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { Select } from '../select/Select';
|
|
4
|
+
import { TabButton } from '../tab/TabButton';
|
|
5
|
+
export const VerticalTab = ({ type = 'button-primary', breakPoint = 'pc', activeTab, menus, onSelect, }) => {
|
|
6
|
+
const handleSelectChange = (e) => {
|
|
7
|
+
onSelect?.(e.target.value);
|
|
8
|
+
};
|
|
9
|
+
const optionItems = menus?.map((menu) => ({
|
|
10
|
+
id: menu.id || '',
|
|
11
|
+
label: menu.label || '',
|
|
12
|
+
})) || [];
|
|
13
|
+
if (breakPoint === 'mobile') {
|
|
14
|
+
return _jsx(Select, { value: activeTab, onChange: handleSelectChange, optionItems: optionItems, size: "md" });
|
|
15
|
+
}
|
|
16
|
+
return (_jsx("div", { className: classNames('ncua-vertical-tab', `ncua-vertical-tab--${type}`), children: menus?.map((menu) => {
|
|
17
|
+
const isActive = 'href' in menu && menu.href ? menu.href === activeTab : menu.id === activeTab;
|
|
18
|
+
return _jsx(TabButton, { ...menu, isActive: isActive, tabButtonType: type, size: "md" }, menu.id);
|
|
19
|
+
}) }));
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './VerticalTab';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './VerticalTab';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const MINIMUM_PC_SIZE = 768;
|
|
@@ -6,36 +6,36 @@ import { useWindowResize } from './useWindowResize';
|
|
|
6
6
|
/**
|
|
7
7
|
* 드롭다운 기능을 통합한 커스텀 훅
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
export const useDropdown = (config) => {
|
|
10
|
+
const { triggerRef, dropdownRef, maxHeight, itemCount, optionItems, disabled = false, multiple = false, onSelect, onChange, } = config;
|
|
11
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
12
|
+
const [focusedIndex, setFocusedIndex] = useState(-1);
|
|
13
13
|
// 드롭다운 위치 계산
|
|
14
|
-
|
|
15
|
-
triggerRef
|
|
16
|
-
maxHeight
|
|
17
|
-
itemCount
|
|
18
|
-
})
|
|
14
|
+
const { direction, updatePosition } = useDropdownPosition({
|
|
15
|
+
triggerRef,
|
|
16
|
+
maxHeight,
|
|
17
|
+
itemCount,
|
|
18
|
+
});
|
|
19
19
|
// 드롭다운 토글
|
|
20
|
-
|
|
20
|
+
const toggleDropdown = useCallback(() => {
|
|
21
21
|
if (disabled)
|
|
22
22
|
return;
|
|
23
|
-
|
|
23
|
+
const newIsOpen = !isOpen;
|
|
24
24
|
if (newIsOpen) {
|
|
25
25
|
updatePosition();
|
|
26
26
|
setFocusedIndex(-1);
|
|
27
27
|
}
|
|
28
28
|
setIsOpen(newIsOpen);
|
|
29
|
-
onChange
|
|
29
|
+
onChange?.(newIsOpen);
|
|
30
30
|
}, [disabled, isOpen, updatePosition, onChange]);
|
|
31
31
|
// 드롭다운 닫기
|
|
32
|
-
|
|
32
|
+
const closeDropdown = useCallback(() => {
|
|
33
33
|
setIsOpen(false);
|
|
34
34
|
setFocusedIndex(-1);
|
|
35
|
-
onChange
|
|
35
|
+
onChange?.(false);
|
|
36
36
|
}, [onChange]);
|
|
37
37
|
// 옵션 선택 처리
|
|
38
|
-
|
|
38
|
+
const handleOptionSelect = useCallback((option) => {
|
|
39
39
|
onSelect(option);
|
|
40
40
|
// multiple 모드가 아니어야 드롭다운을 닫음
|
|
41
41
|
if (!multiple) {
|
|
@@ -43,42 +43,42 @@ export var useDropdown = function (config) {
|
|
|
43
43
|
}
|
|
44
44
|
}, [onSelect, closeDropdown, multiple]);
|
|
45
45
|
// 키보드 이벤트 처리
|
|
46
|
-
|
|
47
|
-
isOpen
|
|
48
|
-
disabled
|
|
49
|
-
focusedIndex
|
|
50
|
-
optionItems
|
|
46
|
+
const { handleKeyDown, handleMouseMove, isKeyboardNavigation } = useDropdownKeyboard({
|
|
47
|
+
isOpen,
|
|
48
|
+
disabled,
|
|
49
|
+
focusedIndex,
|
|
50
|
+
optionItems,
|
|
51
51
|
onToggle: toggleDropdown,
|
|
52
52
|
onSelect: handleOptionSelect,
|
|
53
53
|
onClose: closeDropdown,
|
|
54
54
|
onFocusChange: setFocusedIndex,
|
|
55
|
-
triggerRef
|
|
56
|
-
dropdownRef
|
|
57
|
-
})
|
|
55
|
+
triggerRef,
|
|
56
|
+
dropdownRef,
|
|
57
|
+
});
|
|
58
58
|
// 외부 클릭 감지
|
|
59
|
-
|
|
59
|
+
const refs = dropdownRef ? [triggerRef, dropdownRef] : [triggerRef];
|
|
60
60
|
useOutsideClick({
|
|
61
|
-
isOpen
|
|
62
|
-
refs
|
|
61
|
+
isOpen,
|
|
62
|
+
refs,
|
|
63
63
|
onClose: closeDropdown,
|
|
64
64
|
});
|
|
65
65
|
// 윈도우 리사이즈 시 위치 재계산
|
|
66
66
|
useWindowResize(updatePosition, isOpen, triggerRef.current);
|
|
67
67
|
return {
|
|
68
68
|
// 상태
|
|
69
|
-
isOpen
|
|
70
|
-
direction
|
|
71
|
-
focusedIndex
|
|
69
|
+
isOpen,
|
|
70
|
+
direction,
|
|
71
|
+
focusedIndex,
|
|
72
72
|
// 액션
|
|
73
|
-
toggleDropdown
|
|
74
|
-
closeDropdown
|
|
75
|
-
handleOptionSelect
|
|
76
|
-
handleKeyDown
|
|
77
|
-
setFocusedIndex
|
|
73
|
+
toggleDropdown,
|
|
74
|
+
closeDropdown,
|
|
75
|
+
handleOptionSelect,
|
|
76
|
+
handleKeyDown,
|
|
77
|
+
setFocusedIndex,
|
|
78
78
|
// 키보드 네비게이션
|
|
79
|
-
handleMouseMove
|
|
80
|
-
isKeyboardNavigation
|
|
79
|
+
handleMouseMove,
|
|
80
|
+
isKeyboardNavigation,
|
|
81
81
|
// 유틸리티
|
|
82
|
-
updatePosition
|
|
82
|
+
updatePosition,
|
|
83
83
|
};
|
|
84
84
|
};
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { useCallback, useRef } from 'react';
|
|
2
2
|
import { calculateNextFocusIndex } from '../../utils/dropdown';
|
|
3
|
-
|
|
3
|
+
const SCROLL_DELAY_MS = 100;
|
|
4
4
|
/**
|
|
5
5
|
* 드롭다운 키보드 네비게이션을 위한 커스텀 훅
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
8
|
-
|
|
7
|
+
export const useDropdownKeyboard = (config) => {
|
|
8
|
+
const { isOpen, disabled, focusedIndex, optionItems, onToggle, onSelect, onClose, onFocusChange, triggerRef, dropdownRef, } = config;
|
|
9
9
|
// 키보드 네비게이션 플래그
|
|
10
|
-
|
|
10
|
+
const isKeyboardNavigationRef = useRef(false);
|
|
11
11
|
// 포커스된 옵션이 보이도록 스크롤 조정
|
|
12
|
-
|
|
13
|
-
if (!
|
|
12
|
+
const scrollToFocusedOption = useCallback((index) => {
|
|
13
|
+
if (!dropdownRef?.current || index < 0)
|
|
14
14
|
return;
|
|
15
|
-
|
|
15
|
+
const optionsList = dropdownRef.current.querySelector('.ncua-select-dropdown__options');
|
|
16
16
|
if (!optionsList)
|
|
17
17
|
return;
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const options = optionsList.querySelectorAll('.ncua-select-dropdown__option');
|
|
19
|
+
const focusedOption = options[index];
|
|
20
20
|
if (!focusedOption)
|
|
21
21
|
return;
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
const optionsListRect = optionsList.getBoundingClientRect();
|
|
23
|
+
const focusedOptionRect = focusedOption.getBoundingClientRect();
|
|
24
24
|
// 옵션이 위쪽으로 벗어났을 때
|
|
25
25
|
if (focusedOptionRect.top < optionsListRect.top) {
|
|
26
26
|
optionsList.scrollTop = focusedOption.offsetTop;
|
|
@@ -30,7 +30,7 @@ export var useDropdownKeyboard = function (config) {
|
|
|
30
30
|
optionsList.scrollTop = focusedOption.offsetTop + focusedOption.offsetHeight - optionsList.clientHeight;
|
|
31
31
|
}
|
|
32
32
|
}, [dropdownRef]);
|
|
33
|
-
|
|
33
|
+
const handleEnterOrSpace = useCallback((e) => {
|
|
34
34
|
e.preventDefault();
|
|
35
35
|
if (!isOpen) {
|
|
36
36
|
onToggle();
|
|
@@ -39,35 +39,34 @@ export var useDropdownKeyboard = function (config) {
|
|
|
39
39
|
onSelect(optionItems[focusedIndex]);
|
|
40
40
|
}
|
|
41
41
|
}, [isOpen, focusedIndex, optionItems, onToggle, onSelect]);
|
|
42
|
-
|
|
43
|
-
var _a;
|
|
42
|
+
const handleEscape = useCallback((e) => {
|
|
44
43
|
if (isOpen) {
|
|
45
44
|
e.preventDefault();
|
|
46
45
|
onClose();
|
|
47
|
-
|
|
46
|
+
triggerRef?.current?.focus();
|
|
48
47
|
}
|
|
49
48
|
}, [isOpen, onClose, triggerRef]);
|
|
50
|
-
|
|
49
|
+
const handleArrowNavigation = useCallback((e, direction) => {
|
|
51
50
|
e.preventDefault();
|
|
52
51
|
isKeyboardNavigationRef.current = true;
|
|
53
52
|
if (isOpen) {
|
|
54
|
-
|
|
55
|
-
onFocusChange(
|
|
56
|
-
setTimeout(
|
|
53
|
+
const nextIndex = calculateNextFocusIndex(focusedIndex, direction, optionItems.length);
|
|
54
|
+
onFocusChange(nextIndex);
|
|
55
|
+
setTimeout(() => scrollToFocusedOption(nextIndex), SCROLL_DELAY_MS);
|
|
57
56
|
}
|
|
58
57
|
else {
|
|
59
58
|
onToggle();
|
|
60
59
|
}
|
|
61
60
|
}, [isOpen, focusedIndex, optionItems.length, onFocusChange, onToggle, scrollToFocusedOption]);
|
|
62
|
-
|
|
61
|
+
const handleHomeEnd = useCallback((e, targetIndex) => {
|
|
63
62
|
if (isOpen) {
|
|
64
63
|
e.preventDefault();
|
|
65
64
|
isKeyboardNavigationRef.current = true;
|
|
66
65
|
onFocusChange(targetIndex);
|
|
67
|
-
setTimeout(
|
|
66
|
+
setTimeout(() => scrollToFocusedOption(targetIndex), 0);
|
|
68
67
|
}
|
|
69
68
|
}, [isOpen, onFocusChange, scrollToFocusedOption]);
|
|
70
|
-
|
|
69
|
+
const handleKeyDown = useCallback((e) => {
|
|
71
70
|
if (disabled)
|
|
72
71
|
return;
|
|
73
72
|
switch (e.key) {
|
|
@@ -93,16 +92,16 @@ export var useDropdownKeyboard = function (config) {
|
|
|
93
92
|
}
|
|
94
93
|
}, [disabled, optionItems.length, handleEnterOrSpace, handleEscape, handleArrowNavigation, handleHomeEnd]);
|
|
95
94
|
// 마우스 움직임 감지 함수
|
|
96
|
-
|
|
95
|
+
const handleMouseMove = useCallback(() => {
|
|
97
96
|
isKeyboardNavigationRef.current = false;
|
|
98
97
|
}, []);
|
|
99
98
|
// 키보드 네비게이션 상태 확인 함수
|
|
100
|
-
|
|
99
|
+
const isKeyboardNavigation = useCallback(() => {
|
|
101
100
|
return isKeyboardNavigationRef.current;
|
|
102
101
|
}, []);
|
|
103
102
|
return {
|
|
104
|
-
handleKeyDown
|
|
105
|
-
handleMouseMove
|
|
106
|
-
isKeyboardNavigation
|
|
103
|
+
handleKeyDown,
|
|
104
|
+
handleMouseMove,
|
|
105
|
+
isKeyboardNavigation,
|
|
107
106
|
};
|
|
108
107
|
};
|
|
@@ -3,16 +3,16 @@ import { calculateDropdownPosition } from '../../utils/dropdown';
|
|
|
3
3
|
/**
|
|
4
4
|
* 드롭다운 위치 계산을 위한 커스텀 훅
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
export const useDropdownPosition = (config) => {
|
|
7
|
+
const [direction, setDirection] = useState('down');
|
|
8
|
+
const updatePosition = useCallback(() => {
|
|
9
|
+
const result = calculateDropdownPosition(config);
|
|
10
10
|
setDirection(result.direction);
|
|
11
11
|
return result;
|
|
12
12
|
}, [config]);
|
|
13
13
|
return {
|
|
14
|
-
direction
|
|
15
|
-
updatePosition
|
|
16
|
-
setDirection
|
|
14
|
+
direction,
|
|
15
|
+
updatePosition,
|
|
16
|
+
setDirection,
|
|
17
17
|
};
|
|
18
18
|
};
|
|
@@ -2,21 +2,21 @@ import { useEffect } from 'react';
|
|
|
2
2
|
/**
|
|
3
3
|
* 외부 클릭 감지를 위한 커스텀 훅
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
useEffect(
|
|
5
|
+
export const useOutsideClick = (config) => {
|
|
6
|
+
const { isOpen, refs, onClose } = config;
|
|
7
|
+
useEffect(() => {
|
|
8
8
|
if (!isOpen)
|
|
9
9
|
return;
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const handleClickOutside = (event) => {
|
|
11
|
+
const target = event.target;
|
|
12
12
|
// 모든 ref들에 대해 클릭이 외부에서 발생했는지 확인
|
|
13
|
-
|
|
13
|
+
const isOutside = refs.every((ref) => !ref.current || !ref.current.contains(target));
|
|
14
14
|
if (isOutside) {
|
|
15
15
|
onClose();
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
document.addEventListener('mousedown', handleClickOutside);
|
|
19
|
-
return
|
|
19
|
+
return () => {
|
|
20
20
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
21
21
|
};
|
|
22
22
|
}, [isOpen, refs, onClose]);
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { useEffect, useRef } from 'react';
|
|
2
2
|
import { findScrollableParent } from '../../utils';
|
|
3
|
-
|
|
3
|
+
const SCROLL_KEYS = ['PageUp', 'PageDown', 'Home', 'End', ' '];
|
|
4
4
|
/** 이벤트 대상이 드롭다운 내부에 있는지 확인 */
|
|
5
5
|
function isInsideDropdown(target, dropdownRef) {
|
|
6
|
-
return !!
|
|
6
|
+
return !!dropdownRef?.current && dropdownRef.current.contains(target);
|
|
7
7
|
}
|
|
8
8
|
/** 스크롤 가능한 요소의 경계에 도달했는지 확인하고, 도달했으면 이벤트 차단 */
|
|
9
9
|
function preventScrollBeyondBounds(e, scrollableElement) {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const { deltaY } = e;
|
|
11
|
+
const { scrollTop, scrollHeight, clientHeight } = scrollableElement;
|
|
12
12
|
// 스크롤이 위쪽 끝에 도달했고 위로 스크롤하려는 경우
|
|
13
13
|
if (scrollTop === 0 && deltaY < 0) {
|
|
14
14
|
e.preventDefault();
|
|
@@ -22,21 +22,21 @@ function preventScrollBeyondBounds(e, scrollableElement) {
|
|
|
22
22
|
/**
|
|
23
23
|
* 페이지 스크롤을 잠그는 커스텀 훅 (드롭다운 내부 스크롤은 허용)
|
|
24
24
|
*/
|
|
25
|
-
export
|
|
26
|
-
|
|
27
|
-
useEffect(
|
|
25
|
+
export const useScrollLock = (isLocked, dropdownRef) => {
|
|
26
|
+
const scrollPosition = useRef(0);
|
|
27
|
+
useEffect(() => {
|
|
28
28
|
if (isLocked) {
|
|
29
29
|
// 현재 스크롤 위치 저장
|
|
30
30
|
scrollPosition.current = window.pageYOffset;
|
|
31
31
|
// 스크롤 방지 함수 (드롭다운 내부는 스크롤 체이닝 방지)
|
|
32
|
-
|
|
32
|
+
const preventScroll = (e) => {
|
|
33
33
|
// 드롭다운 내부에서 발생하지 않은 이벤트는 차단
|
|
34
34
|
if (!isInsideDropdown(e.target, dropdownRef)) {
|
|
35
35
|
e.preventDefault();
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
38
|
// 드롭다운 내부의 스크롤 가능한 요소 찾기
|
|
39
|
-
|
|
39
|
+
const scrollableElement = findScrollableParent(e.target, dropdownRef.current);
|
|
40
40
|
if (scrollableElement && e instanceof WheelEvent) {
|
|
41
41
|
preventScrollBeyondBounds(e, scrollableElement);
|
|
42
42
|
return;
|
|
@@ -47,7 +47,7 @@ export var useScrollLock = function (isLocked, dropdownRef) {
|
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
// 키보드 스크롤 방지 함수 (드롭다운 내부는 제외)
|
|
50
|
-
|
|
50
|
+
const preventKeyboardScroll = (e) => {
|
|
51
51
|
if (isInsideDropdown(e.target, dropdownRef)) {
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
@@ -56,14 +56,14 @@ export var useScrollLock = function (isLocked, dropdownRef) {
|
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
58
|
// 이벤트 리스너 추가
|
|
59
|
-
document.addEventListener('wheel',
|
|
60
|
-
document.addEventListener('touchmove',
|
|
61
|
-
document.addEventListener('keydown',
|
|
62
|
-
return
|
|
59
|
+
document.addEventListener('wheel', preventScroll, { passive: false });
|
|
60
|
+
document.addEventListener('touchmove', preventScroll, { passive: false });
|
|
61
|
+
document.addEventListener('keydown', preventKeyboardScroll);
|
|
62
|
+
return () => {
|
|
63
63
|
// 이벤트 리스너 제거
|
|
64
|
-
document.removeEventListener('wheel',
|
|
65
|
-
document.removeEventListener('touchmove',
|
|
66
|
-
document.removeEventListener('keydown',
|
|
64
|
+
document.removeEventListener('wheel', preventScroll);
|
|
65
|
+
document.removeEventListener('touchmove', preventScroll);
|
|
66
|
+
document.removeEventListener('keydown', preventKeyboardScroll);
|
|
67
67
|
// 스크롤 위치 복원
|
|
68
68
|
window.scrollTo(0, scrollPosition.current);
|
|
69
69
|
};
|