@mezzanine-ui/react 0.16.0 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Accordion/AccordionControlContext.js +1 -0
- package/Accordion/AccordionDetails.js +1 -0
- package/Accordion/AccordionSummary.js +10 -10
- package/Accordion/index.d.ts +6 -3
- package/Alert/index.d.ts +3 -2
- package/AlertBanner/AlertBanner.d.ts +93 -0
- package/AlertBanner/AlertBanner.js +154 -0
- package/AlertBanner/index.d.ts +2 -0
- package/AlertBanner/index.js +1 -0
- package/Anchor/Anchor.js +1 -1
- package/Anchor/index.d.ts +2 -1
- package/AppBar/index.d.ts +8 -4
- package/{Overlay/Overlay.d.ts → Backdrop/Backdrop.d.ts} +12 -16
- package/Backdrop/Backdrop.js +40 -0
- package/Backdrop/index.d.ts +2 -0
- package/Backdrop/index.js +1 -0
- package/Badge/Badge.d.ts +20 -14
- package/Badge/Badge.js +14 -16
- package/Badge/BadgeContainer.d.ts +1 -1
- package/Badge/BadgeContainer.js +1 -1
- package/Badge/index.d.ts +3 -2
- package/Badge/typings.d.ts +48 -0
- package/Breadcrumb/Breadcrumb.d.ts +6 -0
- package/Breadcrumb/Breadcrumb.js +53 -0
- package/Breadcrumb/BreadcrumbItem.d.ts +4 -0
- package/Breadcrumb/BreadcrumbItem.js +45 -0
- package/Breadcrumb/index.d.ts +2 -0
- package/Breadcrumb/index.js +1 -0
- package/Breadcrumb/typings.d.ts +75 -0
- package/Button/Button.js +24 -19
- package/Button/ButtonGroup.d.ts +6 -28
- package/Button/ButtonGroup.js +7 -16
- package/Button/index.d.ts +4 -10
- package/Button/index.js +2 -3
- package/Button/typings.d.ts +11 -26
- package/Calendar/Calendar.d.ts +31 -2
- package/Calendar/Calendar.js +74 -19
- package/Calendar/CalendarCell.d.ts +4 -0
- package/Calendar/CalendarCell.js +3 -3
- package/Calendar/CalendarConfigProviderDayjs.d.ts +21 -0
- package/Calendar/CalendarConfigProviderDayjs.js +15 -0
- package/Calendar/CalendarConfigProviderLuxon.d.ts +21 -0
- package/Calendar/CalendarConfigProviderLuxon.js +15 -0
- package/Calendar/CalendarConfigProviderMoment.d.ts +21 -0
- package/Calendar/CalendarConfigProviderMoment.js +15 -0
- package/Calendar/CalendarContext.d.ts +14 -7
- package/Calendar/CalendarContext.js +8 -13
- package/Calendar/CalendarControls.d.ts +16 -0
- package/Calendar/CalendarControls.js +3 -7
- package/Calendar/CalendarDayOfWeek.js +4 -3
- package/Calendar/CalendarDays.d.ts +9 -1
- package/Calendar/CalendarDays.js +63 -38
- package/Calendar/CalendarFooterActions.d.ts +13 -0
- package/Calendar/CalendarFooterActions.js +14 -0
- package/Calendar/CalendarFooterControl.d.ts +16 -0
- package/Calendar/CalendarFooterControl.js +14 -0
- package/Calendar/CalendarHalfYears.d.ts +39 -0
- package/Calendar/CalendarHalfYears.js +62 -0
- package/Calendar/CalendarMonths.js +16 -4
- package/Calendar/CalendarQuarters.d.ts +37 -0
- package/Calendar/CalendarQuarters.js +64 -0
- package/Calendar/CalendarQuickSelect.d.ts +21 -0
- package/Calendar/CalendarQuickSelect.js +15 -0
- package/Calendar/CalendarWeeks.d.ts +1 -1
- package/Calendar/CalendarWeeks.js +89 -44
- package/Calendar/CalendarYears.js +13 -3
- package/Calendar/RangeCalendar.d.ts +59 -0
- package/Calendar/RangeCalendar.js +232 -0
- package/Calendar/index.d.ts +33 -10
- package/Calendar/index.js +7 -0
- package/Calendar/useCalendarControlModifiers.d.ts +4 -4
- package/Calendar/useCalendarControlModifiers.js +40 -8
- package/Calendar/useCalendarControls.d.ts +2 -0
- package/Calendar/useCalendarControls.js +19 -2
- package/Calendar/useCalendarModeStack.js +1 -0
- package/Calendar/useRangeCalendarControls.d.ts +18 -0
- package/Calendar/useRangeCalendarControls.js +115 -0
- package/Card/CardActions.js +1 -1
- package/Card/index.d.ts +4 -2
- package/Checkbox/CheckAll.d.ts +16 -6
- package/Checkbox/CheckAll.js +40 -26
- package/Checkbox/Checkbox.d.ts +100 -22
- package/Checkbox/Checkbox.js +73 -16
- package/Checkbox/CheckboxGroup.d.ts +100 -18
- package/Checkbox/CheckboxGroup.js +169 -24
- package/Checkbox/CheckboxGroupContext.d.ts +0 -2
- package/Checkbox/CheckboxGroupContext.js +1 -0
- package/Checkbox/index.d.ts +16 -4
- package/Checkbox/index.js +6 -2
- package/Checkbox/typings.d.ts +37 -0
- package/ClearActions/ClearActions.d.ts +41 -0
- package/ClearActions/ClearActions.js +23 -0
- package/ClearActions/index.d.ts +3 -0
- package/ClearActions/index.js +5 -0
- package/ConfirmActions/ConfirmActions.d.ts +2 -1
- package/ConfirmActions/index.d.ts +2 -1
- package/DatePicker/DatePicker.d.ts +12 -1
- package/DatePicker/DatePicker.js +41 -9
- package/DatePicker/DatePickerCalendar.d.ts +2 -5
- package/DatePicker/DatePickerCalendar.js +37 -37
- package/DatePicker/index.d.ts +4 -2
- package/DateRangePicker/DateRangePicker.d.ts +18 -2
- package/DateRangePicker/DateRangePicker.js +143 -100
- package/DateRangePicker/DateRangePickerCalendar.d.ts +13 -9
- package/DateRangePicker/DateRangePickerCalendar.js +7 -94
- package/DateRangePicker/index.d.ts +6 -3
- package/DateRangePicker/useDateRangeCalendarControls.js +11 -6
- package/DateRangePicker/useDateRangePickerValue.d.ts +38 -15
- package/DateRangePicker/useDateRangePickerValue.js +142 -63
- package/DateTimePicker/DateTimePicker.d.ts +31 -10
- package/DateTimePicker/DateTimePicker.js +179 -94
- package/DateTimePicker/index.d.ts +2 -2
- package/DateTimePicker/index.js +0 -1
- package/Drawer/Drawer.d.ts +47 -6
- package/Drawer/Drawer.js +36 -11
- package/Drawer/index.d.ts +2 -1
- package/Dropdown/Dropdown.js +12 -22
- package/Dropdown/index.d.ts +2 -1
- package/Empty/Empty.d.ts +1 -16
- package/Empty/Empty.js +59 -7
- package/Empty/icons/EmptyMainInitialDataIcon.d.ts +4 -0
- package/Empty/icons/EmptyMainInitialDataIcon.js +9 -0
- package/Empty/icons/EmptyMainResultIcon.d.ts +4 -0
- package/Empty/icons/EmptyMainResultIcon.js +9 -0
- package/Empty/icons/EmptyMainSystemIcon.d.ts +4 -0
- package/Empty/icons/EmptyMainSystemIcon.js +9 -0
- package/Empty/index.d.ts +2 -1
- package/Empty/typings.d.ts +61 -0
- package/Form/FormControlContext.js +1 -0
- package/Form/FormHintText.d.ts +18 -0
- package/Form/FormHintText.js +17 -0
- package/Form/FormLabel.js +1 -0
- package/Form/index.d.ts +9 -5
- package/Form/index.js +1 -1
- package/Form/useAutoCompleteValueControl.js +2 -0
- package/Form/useCheckboxControlValue.js +0 -1
- package/Form/useSelectValueControl.js +2 -0
- package/InlineMessage/InlineMessage.d.ts +33 -0
- package/InlineMessage/InlineMessage.js +42 -0
- package/InlineMessage/InlineMessageGroup.d.ts +24 -0
- package/InlineMessage/InlineMessageGroup.js +21 -0
- package/InlineMessage/index.d.ts +4 -0
- package/InlineMessage/index.js +2 -0
- package/Input/ActionButton/ActionButton.d.ts +26 -0
- package/Input/ActionButton/ActionButton.js +14 -0
- package/Input/ActionButton/index.d.ts +2 -0
- package/Input/ActionButton/index.js +1 -0
- package/Input/Input.d.ts +147 -42
- package/Input/Input.js +195 -27
- package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.d.ts +31 -0
- package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.js +18 -0
- package/Input/PasswordStrengthIndicator/index.d.ts +2 -0
- package/Input/PasswordStrengthIndicator/index.js +1 -0
- package/Input/SelectButton/SelectButton.d.ts +20 -0
- package/Input/SelectButton/SelectButton.js +21 -0
- package/Input/SelectButton/index.d.ts +2 -0
- package/Input/SelectButton/index.js +1 -0
- package/Input/SpinnerButton/SpinnerButton.d.ts +19 -0
- package/Input/SpinnerButton/SpinnerButton.js +14 -0
- package/Input/SpinnerButton/index.d.ts +2 -0
- package/Input/SpinnerButton/index.js +1 -0
- package/Input/index.d.ts +3 -2
- package/Menu/Menu.js +1 -0
- package/Menu/index.d.ts +8 -4
- package/Message/Message.d.ts +6 -4
- package/Message/Message.js +86 -9
- package/Message/MessageTimerController.d.ts +14 -0
- package/Message/MessageTimerController.js +27 -0
- package/Message/index.d.ts +3 -2
- package/Modal/Modal.js +2 -2
- package/Modal/ModalActions.js +1 -0
- package/Modal/ModalControl.js +1 -0
- package/Modal/ModalHeader.js +1 -0
- package/Modal/index.d.ts +10 -5
- package/Modal/useModalContainer.d.ts +1 -1
- package/Modal/useModalContainer.js +2 -4
- package/Navigation/Navigation.js +37 -34
- package/Navigation/NavigationContext.js +1 -0
- package/Navigation/NavigationItem.js +1 -0
- package/Navigation/NavigationSubMenu.js +16 -26
- package/Navigation/index.d.ts +8 -4
- package/Notification/Notification.js +0 -1
- package/Notification/index.d.ts +3 -2
- package/Notifier/NotifierManager.d.ts +15 -2
- package/Notifier/NotifierManager.js +60 -18
- package/Notifier/createNotifier.d.ts +9 -0
- package/Notifier/createNotifier.js +3 -2
- package/Notifier/typings.d.ts +3 -1
- package/OverflowTooltip/OverflowCounterTag.d.ts +12 -0
- package/OverflowTooltip/OverflowCounterTag.js +48 -0
- package/OverflowTooltip/OverflowTooltip.d.ts +34 -0
- package/OverflowTooltip/OverflowTooltip.js +53 -0
- package/OverflowTooltip/index.d.ts +2 -0
- package/OverflowTooltip/index.js +2 -0
- package/PageFooter/PageFooter.d.ts +73 -8
- package/PageFooter/PageFooter.js +34 -3
- package/PageFooter/index.d.ts +2 -1
- package/PageHeader/PageHeader.d.ts +40 -0
- package/PageHeader/PageHeader.js +70 -0
- package/PageHeader/index.d.ts +2 -0
- package/PageHeader/index.js +1 -0
- package/PageToolbar/PageToolbar.d.ts +114 -0
- package/PageToolbar/PageToolbar.js +23 -0
- package/PageToolbar/index.d.ts +2 -0
- package/PageToolbar/index.js +1 -0
- package/PageToolbar/utils.d.ts +23 -0
- package/PageToolbar/utils.js +165 -0
- package/Pagination/Pagination.d.ts +23 -29
- package/Pagination/Pagination.js +3 -4
- package/Pagination/PaginationItem.d.ts +1 -1
- package/Pagination/PaginationItem.js +4 -3
- package/Pagination/PaginationJumper.d.ts +7 -9
- package/Pagination/PaginationJumper.js +3 -5
- package/Pagination/PaginationPageSize.d.ts +8 -11
- package/Pagination/PaginationPageSize.js +5 -4
- package/Pagination/index.d.ts +8 -4
- package/Pagination/usePagination.d.ts +3 -1
- package/Pagination/usePagination.js +12 -21
- package/Picker/FormattedInput.d.ts +17 -0
- package/Picker/FormattedInput.js +74 -0
- package/Picker/MaskFormat.d.ts +39 -0
- package/Picker/MaskFormat.js +94 -0
- package/Picker/PickerTrigger.d.ts +13 -3
- package/Picker/PickerTrigger.js +17 -2
- package/Picker/PickerTriggerWithSeparator.d.ts +124 -0
- package/Picker/PickerTriggerWithSeparator.js +80 -0
- package/Picker/RangePickerTrigger.d.ts +55 -4
- package/Picker/RangePickerTrigger.js +65 -7
- package/Picker/formatUtils.d.ts +34 -0
- package/Picker/formatUtils.js +124 -0
- package/Picker/index.d.ts +17 -6
- package/Picker/index.js +4 -1
- package/Picker/useDateInputFormatter.d.ts +52 -0
- package/Picker/useDateInputFormatter.js +382 -0
- package/Picker/usePickerValue.d.ts +1 -2
- package/Picker/usePickerValue.js +8 -13
- package/Popconfirm/Popconfirm.js +1 -1
- package/Popconfirm/index.d.ts +2 -1
- package/Popover/Popover.js +4 -8
- package/Popover/index.d.ts +2 -1
- package/Popper/Popper.d.ts +15 -10
- package/Popper/Popper.js +88 -17
- package/Popper/index.d.ts +2 -1
- package/Portal/Portal.d.ts +13 -5
- package/Portal/Portal.js +25 -10
- package/Portal/index.d.ts +4 -1
- package/Portal/index.js +1 -0
- package/Portal/portalRegistry.d.ts +17 -0
- package/Portal/portalRegistry.js +92 -0
- package/Progress/Progress.d.ts +23 -30
- package/Progress/Progress.js +71 -21
- package/Progress/index.d.ts +3 -2
- package/Provider/ConfigProvider.d.ts +1 -0
- package/Provider/ConfigProvider.js +1 -0
- package/Provider/context.js +1 -0
- package/Radio/Radio.d.ts +37 -4
- package/Radio/Radio.js +23 -12
- package/Radio/RadioGroup.d.ts +37 -8
- package/Radio/RadioGroup.js +6 -5
- package/Radio/RadioGroupContext.d.ts +2 -1
- package/Radio/RadioGroupContext.js +1 -0
- package/Radio/index.d.ts +5 -3
- package/ResultState/ResultState.d.ts +52 -0
- package/ResultState/ResultState.js +24 -0
- package/ResultState/index.d.ts +2 -0
- package/ResultState/index.js +1 -0
- package/Select/AutoComplete.d.ts +1 -1
- package/Select/AutoComplete.js +2 -1
- package/Select/Option.js +1 -0
- package/Select/Select.d.ts +1 -1
- package/Select/Select.js +2 -1
- package/Select/SelectControlContext.js +1 -0
- package/Select/SelectTrigger.d.ts +1 -87
- package/Select/SelectTrigger.js +26 -21
- package/Select/SelectTriggerTags.d.ts +1 -1
- package/Select/SelectTriggerTags.js +47 -18
- package/Select/TreeSelect.d.ts +1 -1
- package/Select/TreeSelect.js +2 -1
- package/Select/index.d.ts +14 -7
- package/Select/typings.d.ts +99 -0
- package/Select/useSelectTriggerTags.d.ts +15 -8
- package/Select/useSelectTriggerTags.js +83 -44
- package/Selection/Selection.d.ts +98 -0
- package/Selection/Selection.js +46 -0
- package/Selection/index.d.ts +12 -0
- package/Selection/index.js +5 -0
- package/Skeleton/Skeleton.d.ts +10 -3
- package/Skeleton/Skeleton.js +12 -4
- package/Skeleton/index.d.ts +2 -1
- package/Slider/Slider.d.ts +44 -7
- package/Slider/Slider.js +17 -13
- package/Slider/index.d.ts +5 -3
- package/Spin/Spin.d.ts +39 -0
- package/{Loading/Loading.js → Spin/Spin.js} +9 -9
- package/Spin/index.d.ts +2 -0
- package/Spin/index.js +1 -0
- package/Stepper/Step.d.ts +1 -35
- package/Stepper/Step.js +43 -8
- package/Stepper/Stepper.d.ts +1 -14
- package/Stepper/Stepper.js +49 -15
- package/Stepper/index.d.ts +5 -2
- package/Stepper/index.js +1 -0
- package/Stepper/typings.d.ts +77 -0
- package/Stepper/useStepDistance.d.ts +10 -0
- package/Stepper/useStepDistance.js +81 -0
- package/Stepper/useStepper.d.ts +21 -0
- package/Stepper/useStepper.js +26 -0
- package/Tab/Tab.d.ts +32 -0
- package/Tab/Tab.js +57 -0
- package/Tab/TabItem.d.ts +27 -0
- package/Tab/TabItem.js +18 -0
- package/Tab/index.d.ts +4 -0
- package/Tab/index.js +2 -0
- package/Table/Table.d.ts +75 -94
- package/Table/Table.js +216 -161
- package/Table/TableContext.d.ts +114 -51
- package/Table/TableContext.js +22 -3
- package/Table/components/TableBody.d.ts +5 -0
- package/Table/components/TableBody.js +102 -0
- package/Table/components/TableCell.d.ts +17 -0
- package/Table/components/TableCell.js +74 -0
- package/Table/components/TableColGroup.d.ts +4 -0
- package/Table/components/TableColGroup.js +206 -0
- package/Table/components/TableDragHandleCell.d.ts +9 -0
- package/Table/components/TableDragHandleCell.js +37 -0
- package/Table/components/TableExpandCell.d.ts +11 -0
- package/Table/components/TableExpandCell.js +44 -0
- package/Table/components/TableExpandedRow.d.ts +9 -0
- package/Table/components/TableExpandedRow.js +46 -0
- package/Table/components/TableHeader.d.ts +4 -0
- package/Table/components/TableHeader.js +125 -0
- package/Table/components/TablePagination.d.ts +3 -0
- package/Table/components/TablePagination.js +11 -0
- package/Table/components/TableResizeHandle.d.ts +13 -0
- package/Table/components/TableResizeHandle.js +115 -0
- package/Table/components/TableRow.d.ts +12 -0
- package/Table/components/TableRow.js +126 -0
- package/Table/components/TableSelectionCell.d.ts +13 -0
- package/Table/components/TableSelectionCell.js +35 -0
- package/Table/components/index.d.ts +10 -0
- package/Table/components/index.js +10 -0
- package/Table/hooks/index.d.ts +9 -0
- package/Table/hooks/index.js +8 -0
- package/Table/hooks/typings.d.ts +14 -0
- package/Table/hooks/useTableColumns.d.ts +8 -0
- package/Table/hooks/useTableColumns.js +91 -0
- package/Table/hooks/useTableDataSource.d.ts +57 -0
- package/Table/hooks/useTableDataSource.js +183 -0
- package/Table/hooks/useTableExpansion.d.ts +7 -0
- package/Table/hooks/useTableExpansion.js +52 -0
- package/Table/hooks/useTableFixedOffsets.d.ts +29 -0
- package/Table/hooks/useTableFixedOffsets.js +241 -0
- package/Table/hooks/useTableScroll.d.ts +12 -0
- package/Table/hooks/useTableScroll.js +58 -0
- package/Table/hooks/useTableSelection.d.ts +7 -0
- package/Table/hooks/useTableSelection.js +94 -0
- package/Table/hooks/useTableSorting.d.ts +6 -0
- package/Table/hooks/useTableSorting.js +32 -0
- package/Table/hooks/useTableVirtualization.d.ts +22 -0
- package/Table/hooks/useTableVirtualization.js +115 -0
- package/Table/index.d.ts +7 -7
- package/Table/index.js +22 -6
- package/Table/utils/index.d.ts +2 -0
- package/Table/utils/index.js +1 -0
- package/Table/utils/useTableRowSelection.d.ts +18 -0
- package/Table/utils/useTableRowSelection.js +63 -0
- package/Tag/Tag.d.ts +2 -25
- package/Tag/Tag.js +23 -13
- package/Tag/TagGroup.d.ts +12 -0
- package/Tag/TagGroup.js +41 -0
- package/Tag/index.d.ts +2 -1
- package/Tag/typings.d.ts +78 -0
- package/TextField/TextField.d.ts +78 -19
- package/TextField/TextField.js +58 -22
- package/TextField/index.d.ts +2 -1
- package/Textarea/Textarea.d.ts +19 -51
- package/Textarea/Textarea.js +13 -19
- package/Textarea/index.d.ts +2 -2
- package/TimePanel/TimePanel.d.ts +1 -22
- package/TimePanel/TimePanel.js +31 -26
- package/TimePanel/TimePanelAction.d.ts +2 -8
- package/TimePanel/TimePanelAction.js +2 -2
- package/TimePanel/TimePanelColumn.d.ts +0 -13
- package/TimePanel/TimePanelColumn.js +9 -11
- package/TimePanel/index.d.ts +6 -3
- package/TimePicker/TimePicker.d.ts +10 -1
- package/TimePicker/TimePicker.js +86 -35
- package/TimePicker/TimePickerPanel.d.ts +1 -2
- package/TimePicker/TimePickerPanel.js +2 -2
- package/TimePicker/index.d.ts +4 -2
- package/Toggle/Toggle.d.ts +46 -0
- package/Toggle/Toggle.js +29 -0
- package/Toggle/index.d.ts +3 -0
- package/Toggle/index.js +1 -0
- package/Tooltip/Tooltip.d.ts +13 -2
- package/Tooltip/Tooltip.js +56 -10
- package/Tooltip/index.d.ts +2 -1
- package/Tooltip/useDelayMouseEnterLeave.d.ts +1 -2
- package/Tooltip/useDelayMouseEnterLeave.js +10 -13
- package/Transition/Collapse.d.ts +2 -0
- package/Transition/Collapse.js +5 -6
- package/Transition/Fade.js +4 -4
- package/Transition/Rotate.d.ts +42 -0
- package/Transition/Rotate.js +30 -0
- package/Transition/Scale.d.ts +13 -0
- package/Transition/{Grow.js → Scale.js} +19 -16
- package/Transition/Slide.d.ts +7 -0
- package/Transition/{Zoom.js → Slide.js} +14 -12
- package/Transition/SlideFade.d.ts +3 -0
- package/Transition/SlideFade.js +5 -4
- package/Transition/Transition.d.ts +2 -2
- package/Transition/Translate.d.ts +14 -0
- package/Transition/Translate.js +94 -0
- package/Transition/index.d.ts +16 -6
- package/Transition/index.js +4 -2
- package/Transition/useAutoTransitionDuration.d.ts +1 -1
- package/Transition/useAutoTransitionDuration.js +3 -3
- package/Transition/useSetNodeTransition.js +0 -2
- package/Tree/TreeNode.js +7 -6
- package/Tree/index.d.ts +10 -5
- package/Typography/Typography.d.ts +6 -9
- package/Typography/Typography.js +7 -9
- package/Typography/index.d.ts +2 -5
- package/Upload/Upload.d.ts +175 -0
- package/Upload/Upload.js +279 -0
- package/Upload/UploadItem.d.ts +82 -0
- package/Upload/UploadItem.js +118 -0
- package/Upload/UploadPictureCard.d.ts +110 -0
- package/Upload/UploadPictureCard.js +101 -0
- package/Upload/Uploader.d.ts +161 -0
- package/Upload/Uploader.js +120 -0
- package/Upload/index.d.ts +8 -6
- package/Upload/index.js +4 -5
- package/Upload/upload-utils.d.ts +41 -0
- package/Upload/upload-utils.js +65 -0
- package/_internal/InputCheck/InputCheck.d.ts +15 -1
- package/_internal/InputCheck/InputCheck.js +6 -2
- package/_internal/InputCheck/InputCheckGroup.d.ts +11 -1
- package/_internal/InputCheck/InputCheckGroup.js +4 -2
- package/_internal/InputCheck/index.d.ts +4 -2
- package/_internal/InputTriggerPopper/InputTriggerPopper.js +15 -25
- package/_internal/InputTriggerPopper/index.d.ts +2 -1
- package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +3 -3
- package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +5 -28
- package/_internal/SlideFadeOverlay/index.d.ts +2 -1
- package/_internal/SlideFadeOverlay/useTopStack.js +1 -0
- package/dayjs.d.ts +21 -0
- package/dayjs.js +2 -0
- package/hooks/useComposeRefs.js +1 -1
- package/hooks/useLastCallback.js +3 -1
- package/hooks/useScrollLock.d.ts +28 -0
- package/hooks/useScrollLock.js +134 -0
- package/index.d.ts +128 -58
- package/index.js +90 -80
- package/luxon.d.ts +21 -0
- package/luxon.js +2 -0
- package/moment.d.ts +21 -0
- package/moment.js +2 -0
- package/package.json +14 -17
- package/utils/composeRefs.js +0 -1
- package/utils/flatten-children.d.ts +12 -0
- package/utils/flatten-children.js +37 -0
- package/utils/get-css-variable-value.d.ts +2 -0
- package/utils/get-css-variable-value.js +12 -0
- package/Button/IconButton.d.ts +0 -21
- package/Button/IconButton.js +0 -13
- package/DateTimePicker/DateTimePickerPanel.d.ts +0 -28
- package/DateTimePicker/DateTimePickerPanel.js +0 -49
- package/Form/FormMessage.d.ts +0 -7
- package/Form/FormMessage.js +0 -18
- package/Form/useInputWithTagsModeValue.js +0 -86
- package/Loading/Loading.d.ts +0 -33
- package/Loading/index.d.ts +0 -1
- package/Loading/index.js +0 -1
- package/Overlay/Overlay.js +0 -31
- package/Overlay/index.d.ts +0 -1
- package/Overlay/index.js +0 -1
- package/Picker/useRangePickerValue.d.ts +0 -23
- package/Picker/useRangePickerValue.js +0 -99
- package/Switch/Switch.d.ts +0 -43
- package/Switch/Switch.js +0 -28
- package/Switch/index.d.ts +0 -2
- package/Switch/index.js +0 -1
- package/Table/TableBody.d.ts +0 -10
- package/Table/TableBody.js +0 -30
- package/Table/TableBodyRow.d.ts +0 -11
- package/Table/TableBodyRow.js +0 -64
- package/Table/TableCell.d.ts +0 -19
- package/Table/TableCell.js +0 -24
- package/Table/TableExpandedTable.d.ts +0 -11
- package/Table/TableExpandedTable.js +0 -28
- package/Table/TableHeader.d.ts +0 -3
- package/Table/TableHeader.js +0 -35
- package/Table/draggable/useTableDraggable.d.ts +0 -14
- package/Table/draggable/useTableDraggable.js +0 -64
- package/Table/editable/TableEditRenderWrapper.d.ts +0 -7
- package/Table/editable/TableEditRenderWrapper.js +0 -15
- package/Table/expandable/TableExpandable.d.ts +0 -27
- package/Table/expandable/TableExpandable.js +0 -24
- package/Table/pagination/TablePagination.d.ts +0 -10
- package/Table/pagination/TablePagination.js +0 -25
- package/Table/pagination/useTablePagination.d.ts +0 -8
- package/Table/pagination/useTablePagination.js +0 -29
- package/Table/refresh/TableRefresh.d.ts +0 -10
- package/Table/refresh/TableRefresh.js +0 -20
- package/Table/rowSelection/TableRowSelection.d.ts +0 -18
- package/Table/rowSelection/TableRowSelection.js +0 -92
- package/Table/rowSelection/useTableRowSelection.d.ts +0 -6
- package/Table/rowSelection/useTableRowSelection.js +0 -53
- package/Table/sorting/TableSortingIcon.d.ts +0 -10
- package/Table/sorting/TableSortingIcon.js +0 -32
- package/Table/sorting/useTableSorting.d.ts +0 -11
- package/Table/sorting/useTableSorting.js +0 -120
- package/Table/useTableFetchMore.d.ts +0 -10
- package/Table/useTableFetchMore.js +0 -50
- package/Table/useTableLoading.d.ts +0 -5
- package/Table/useTableLoading.js +0 -19
- package/Table/useTableScroll.d.ts +0 -596
- package/Table/useTableScroll.js +0 -294
- package/Tabs/Tab.d.ts +0 -18
- package/Tabs/Tab.js +0 -16
- package/Tabs/TabPane.d.ts +0 -14
- package/Tabs/TabPane.js +0 -18
- package/Tabs/Tabs.d.ts +0 -39
- package/Tabs/Tabs.js +0 -47
- package/Tabs/index.d.ts +0 -3
- package/Tabs/index.js +0 -3
- package/Tabs/useTabsOverflow.d.ts +0 -8
- package/Tabs/useTabsOverflow.js +0 -61
- package/Transition/Grow.d.ts +0 -12
- package/Transition/Zoom.d.ts +0 -7
- package/Upload/UploadButton.d.ts +0 -9
- package/Upload/UploadButton.js +0 -23
- package/Upload/UploadInput.d.ts +0 -20
- package/Upload/UploadInput.js +0 -24
- package/Upload/UploadPicture.d.ts +0 -49
- package/Upload/UploadPicture.js +0 -51
- package/Upload/UploadPictureBlock.d.ts +0 -20
- package/Upload/UploadPictureBlock.js +0 -81
- package/Upload/UploadPictureWall.d.ts +0 -81
- package/Upload/UploadPictureWall.js +0 -168
- package/Upload/UploadPictureWallItem.d.ts +0 -15
- package/Upload/UploadPictureWallItem.js +0 -18
- package/Upload/UploadResult.d.ts +0 -35
- package/Upload/UploadResult.js +0 -29
- package/utils/scroll-lock.d.ts +0 -2
- package/utils/scroll-lock.js +0 -24
package/Popper/Popper.js
CHANGED
|
@@ -1,30 +1,101 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useRef, useImperativeHandle, useEffect, useCallback } from 'react';
|
|
4
|
+
import { useFloating, arrow } from '@floating-ui/react-dom';
|
|
5
|
+
import { spacingPrefix } from '@mezzanine-ui/system/spacing';
|
|
4
6
|
import { getElement } from '../utils/getElement.js';
|
|
5
7
|
import { useComposeRefs } from '../hooks/useComposeRefs.js';
|
|
8
|
+
import { getCSSVariableValue } from '../utils/get-css-variable-value.js';
|
|
6
9
|
import Portal from '../Portal/Portal.js';
|
|
7
10
|
|
|
8
11
|
const Popper = forwardRef(function Popper(props, ref) {
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
+
var _a, _b, _c, _d;
|
|
13
|
+
const { anchor, arrow: arrow$1, children, container, controllerRef, disablePortal, open = false, options, style, ...rest } = props;
|
|
14
|
+
const arrowRef = useRef(null);
|
|
12
15
|
const anchorEl = getElement(anchor);
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
const floatingReturn = useFloating({
|
|
17
|
+
...options,
|
|
18
|
+
middleware: [
|
|
19
|
+
...((_a = options === null || options === void 0 ? void 0 : options.middleware) !== null && _a !== void 0 ? _a : []),
|
|
20
|
+
(arrow$1 === null || arrow$1 === void 0 ? void 0 : arrow$1.enabled)
|
|
21
|
+
? arrow({
|
|
22
|
+
element: arrowRef.current,
|
|
23
|
+
padding: arrow$1.padding || 0,
|
|
24
|
+
})
|
|
25
|
+
: null,
|
|
26
|
+
],
|
|
27
|
+
elements: {
|
|
28
|
+
reference: anchorEl,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
const { refs, floatingStyles, update } = floatingReturn;
|
|
32
|
+
const composedRef = useComposeRefs([ref, refs.setFloating]);
|
|
33
|
+
useImperativeHandle(controllerRef, () => floatingReturn, [floatingReturn]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (anchorEl) {
|
|
36
|
+
refs.setReference(anchorEl);
|
|
37
|
+
}
|
|
38
|
+
}, [anchorEl, refs]);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (open && update) {
|
|
41
|
+
update();
|
|
42
|
+
}
|
|
43
|
+
}, [open, update]);
|
|
44
|
+
// 計算箭頭的位置和旋轉角度
|
|
45
|
+
const arrowX = (_b = floatingReturn.middlewareData.arrow) === null || _b === void 0 ? void 0 : _b.x;
|
|
46
|
+
const arrowY = (_c = floatingReturn.middlewareData.arrow) === null || _c === void 0 ? void 0 : _c.y;
|
|
47
|
+
const placement = floatingReturn.placement;
|
|
48
|
+
// 根據 placement 決定箭頭的靜態位置和旋轉
|
|
49
|
+
const getArrowStyles = useCallback(() => {
|
|
50
|
+
const staticSide = {
|
|
51
|
+
top: {
|
|
52
|
+
property: 'bottom',
|
|
53
|
+
value: '-6px',
|
|
54
|
+
},
|
|
55
|
+
right: {
|
|
56
|
+
property: 'left',
|
|
57
|
+
value: '-8px',
|
|
58
|
+
},
|
|
59
|
+
bottom: {
|
|
60
|
+
property: 'top',
|
|
61
|
+
value: '-6px',
|
|
62
|
+
},
|
|
63
|
+
left: {
|
|
64
|
+
property: 'right',
|
|
65
|
+
value: '-8px',
|
|
66
|
+
},
|
|
67
|
+
}[placement.split('-')[0]];
|
|
68
|
+
const arrowStyles = {
|
|
69
|
+
width: getCSSVariableValue(`--${spacingPrefix}-size-element-slim`),
|
|
70
|
+
height: getCSSVariableValue(`--${spacingPrefix}-size-element-tight`),
|
|
71
|
+
transformOrigin: 'center',
|
|
72
|
+
position: 'absolute',
|
|
73
|
+
left: typeof arrowX === 'number' ? `${arrowX}px` : undefined,
|
|
74
|
+
top: typeof arrowY === 'number' ? `${arrowY}px` : undefined,
|
|
75
|
+
[staticSide.property]: staticSide.value,
|
|
76
|
+
};
|
|
77
|
+
// 根據 placement 旋轉箭頭
|
|
78
|
+
const rotation = {
|
|
79
|
+
top: '0deg',
|
|
80
|
+
right: '90deg',
|
|
81
|
+
bottom: '180deg',
|
|
82
|
+
left: '-90deg',
|
|
83
|
+
}[placement.split('-')[0]];
|
|
84
|
+
if (rotation) {
|
|
85
|
+
arrowStyles.transform = `rotate(${rotation})`;
|
|
86
|
+
}
|
|
87
|
+
return arrowStyles;
|
|
88
|
+
}, [arrowX, arrowY, placement]);
|
|
21
89
|
if (!open) {
|
|
22
90
|
return null;
|
|
23
91
|
}
|
|
24
|
-
return (jsx(Portal, { container: container, disablePortal: disablePortal, children:
|
|
92
|
+
return (jsx(Portal, { container: container, disablePortal: disablePortal, children: jsxs("div", { ...rest, ref: composedRef, "data-popper-placement": floatingReturn.placement, style: {
|
|
25
93
|
...style,
|
|
26
|
-
...
|
|
27
|
-
|
|
94
|
+
...floatingStyles,
|
|
95
|
+
visibility: ((_d = floatingReturn.middlewareData.hide) === null || _d === void 0 ? void 0 : _d.referenceHidden)
|
|
96
|
+
? 'hidden'
|
|
97
|
+
: 'visible',
|
|
98
|
+
}, children: [(arrow$1 === null || arrow$1 === void 0 ? void 0 : arrow$1.enabled) ? (jsx("svg", { viewBox: "0 0 12 6", fill: "none", ref: arrowRef, className: arrow$1 === null || arrow$1 === void 0 ? void 0 : arrow$1.className, style: getArrowStyles(), children: jsx("path", { d: "M6.70711 5.29289C6.31658 5.68342 5.68342 5.68342 5.29289 5.29289L0 0L12 6.05683e-07L6.70711 5.29289Z", fill: "currentColor" }) })) : null, children] }) }));
|
|
28
99
|
});
|
|
29
100
|
|
|
30
101
|
export { Popper as default };
|
package/Popper/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { default } from './Popper';
|
|
2
|
+
export type { PopperPlacement, PopperPositionStrategy, PopperController, PopperProps, } from './Popper';
|
package/Portal/Portal.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ReactNode, RefObject } from 'react';
|
|
2
|
+
import { type PortalLayer } from './portalRegistry';
|
|
3
3
|
export interface PortalProps {
|
|
4
4
|
/**
|
|
5
5
|
* The element you want to portal.
|
|
@@ -7,14 +7,22 @@ export interface PortalProps {
|
|
|
7
7
|
children?: ReactNode;
|
|
8
8
|
/**
|
|
9
9
|
* The destination where to portal.
|
|
10
|
+
* If provided, it will override the default portal container.
|
|
11
|
+
* Accepts HTMLElement, RefObject, or null.
|
|
10
12
|
*/
|
|
11
|
-
container?:
|
|
13
|
+
container?: HTMLElement | RefObject<HTMLElement | null> | RefObject<HTMLElement> | null;
|
|
12
14
|
/**
|
|
13
15
|
* Whether to disable portal.
|
|
14
16
|
* If true, it will be a normal component.
|
|
15
17
|
* @default false
|
|
16
18
|
*/
|
|
17
19
|
disablePortal?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* The portal layer to use.
|
|
22
|
+
* - 'alert': Portal to alert container (above root, sticky)
|
|
23
|
+
* - 'default': Portal to default container (inside root, fixed)
|
|
24
|
+
* @default 'default'
|
|
25
|
+
*/
|
|
26
|
+
layer?: PortalLayer;
|
|
18
27
|
}
|
|
19
|
-
|
|
20
|
-
export default Portal;
|
|
28
|
+
export default function Portal({ children, container: containerProp, disablePortal, layer, }: PortalProps): import("react/jsx-runtime").JSX.Element | null;
|
package/Portal/Portal.js
CHANGED
|
@@ -1,23 +1,38 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
3
|
import { useState, useEffect } from 'react';
|
|
3
4
|
import { createPortal } from 'react-dom';
|
|
4
|
-
import {
|
|
5
|
+
import { getContainer } from './portalRegistry.js';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
7
|
+
function Portal({ children, container: containerProp, disablePortal = false, layer = 'default', }) {
|
|
8
|
+
const [container, setContainer] = useState(null);
|
|
9
|
+
// Extract ref.current for dependency tracking
|
|
10
|
+
const refCurrent = containerProp && 'current' in containerProp
|
|
11
|
+
? containerProp.current
|
|
12
|
+
: undefined;
|
|
9
13
|
useEffect(() => {
|
|
10
|
-
if (
|
|
11
|
-
|
|
14
|
+
if (disablePortal)
|
|
15
|
+
return;
|
|
16
|
+
if (containerProp) {
|
|
17
|
+
// Handle RefObject
|
|
18
|
+
if ('current' in containerProp) {
|
|
19
|
+
setContainer(containerProp.current);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// Handle HTMLElement
|
|
23
|
+
setContainer(containerProp);
|
|
24
|
+
return;
|
|
12
25
|
}
|
|
13
|
-
|
|
26
|
+
const targetContainer = getContainer(layer);
|
|
27
|
+
setContainer(targetContainer);
|
|
28
|
+
}, [containerProp, disablePortal, layer, refCurrent]);
|
|
14
29
|
/** This element is fully client side, so `return null` on server side */
|
|
15
30
|
if (typeof window === 'undefined')
|
|
16
31
|
return null;
|
|
17
|
-
if (disablePortal || !
|
|
32
|
+
if (disablePortal || !container) {
|
|
18
33
|
return jsx(Fragment, { children: children });
|
|
19
34
|
}
|
|
20
|
-
return createPortal(children,
|
|
21
|
-
}
|
|
35
|
+
return createPortal(children, container);
|
|
36
|
+
}
|
|
22
37
|
|
|
23
38
|
export { Portal as default };
|
package/Portal/index.d.ts
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
export { PortalProps
|
|
1
|
+
export type { PortalProps } from './Portal';
|
|
2
|
+
export type { PortalLayer } from './portalRegistry';
|
|
3
|
+
export { default } from './Portal';
|
|
4
|
+
export { getContainer, getRootElement, initializePortals, resetPortals, } from './portalRegistry';
|
package/Portal/index.js
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type PortalLayer = 'alert' | 'default';
|
|
2
|
+
/**
|
|
3
|
+
* Initialize portal containers.
|
|
4
|
+
* This function can be called manually in your app's entry point,
|
|
5
|
+
* or it will be called automatically when the first Portal is rendered.
|
|
6
|
+
*
|
|
7
|
+
* @param rootSelector - Optional root element or selector string.
|
|
8
|
+
* Defaults to document.body
|
|
9
|
+
*/
|
|
10
|
+
export declare function initializePortals(rootSelector?: string | HTMLElement): void;
|
|
11
|
+
export declare function getContainer(layer: PortalLayer): HTMLElement | null;
|
|
12
|
+
export declare function getRootElement(): HTMLElement | null;
|
|
13
|
+
/**
|
|
14
|
+
* Reset portal system state. Only for testing purposes.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare function resetPortals(): void;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Module-level state
|
|
2
|
+
let containers = {
|
|
3
|
+
alert: null,
|
|
4
|
+
default: null,
|
|
5
|
+
};
|
|
6
|
+
let rootElement = null;
|
|
7
|
+
let initialized = false;
|
|
8
|
+
function findRootElement(rootProp) {
|
|
9
|
+
if (rootProp instanceof HTMLElement)
|
|
10
|
+
return rootProp;
|
|
11
|
+
if (typeof rootProp === 'string') {
|
|
12
|
+
const element = document.querySelector(rootProp);
|
|
13
|
+
if (element instanceof HTMLElement)
|
|
14
|
+
return element;
|
|
15
|
+
}
|
|
16
|
+
return document.body;
|
|
17
|
+
}
|
|
18
|
+
function observeAlertHeight() {
|
|
19
|
+
if (!containers.alert || !containers.default)
|
|
20
|
+
return;
|
|
21
|
+
const updatePortalTop = () => {
|
|
22
|
+
if (!containers.alert || !containers.default)
|
|
23
|
+
return;
|
|
24
|
+
containers.alert.offsetHeight;
|
|
25
|
+
};
|
|
26
|
+
// Use ResizeObserver to track alert container height changes
|
|
27
|
+
const observer = new ResizeObserver(updatePortalTop);
|
|
28
|
+
observer.observe(containers.alert);
|
|
29
|
+
// Initial update
|
|
30
|
+
updatePortalTop();
|
|
31
|
+
}
|
|
32
|
+
function createContainers() {
|
|
33
|
+
if (!rootElement)
|
|
34
|
+
return;
|
|
35
|
+
const alertContainer = document.createElement('div');
|
|
36
|
+
alertContainer.id = 'mzn-alert-container';
|
|
37
|
+
alertContainer.className = 'mzn-portal-alert';
|
|
38
|
+
const portalContainer = document.createElement('div');
|
|
39
|
+
portalContainer.id = 'mzn-portal-container';
|
|
40
|
+
portalContainer.className = 'mzn-portal-default';
|
|
41
|
+
rootElement.insertBefore(alertContainer, rootElement.firstChild);
|
|
42
|
+
rootElement.appendChild(portalContainer);
|
|
43
|
+
containers = {
|
|
44
|
+
alert: alertContainer,
|
|
45
|
+
default: portalContainer,
|
|
46
|
+
};
|
|
47
|
+
// Observe alert height changes and update portal container position
|
|
48
|
+
observeAlertHeight();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Initialize portal containers.
|
|
52
|
+
* This function can be called manually in your app's entry point,
|
|
53
|
+
* or it will be called automatically when the first Portal is rendered.
|
|
54
|
+
*
|
|
55
|
+
* @param rootSelector - Optional root element or selector string.
|
|
56
|
+
* Defaults to document.body
|
|
57
|
+
*/
|
|
58
|
+
function initializePortals(rootSelector) {
|
|
59
|
+
if (initialized || typeof window === 'undefined')
|
|
60
|
+
return;
|
|
61
|
+
initialized = true;
|
|
62
|
+
rootElement = findRootElement(rootSelector);
|
|
63
|
+
if (!rootElement)
|
|
64
|
+
return;
|
|
65
|
+
createContainers();
|
|
66
|
+
}
|
|
67
|
+
function getContainer(layer) {
|
|
68
|
+
if (!initialized && typeof window !== 'undefined') {
|
|
69
|
+
initializePortals();
|
|
70
|
+
}
|
|
71
|
+
return containers[layer];
|
|
72
|
+
}
|
|
73
|
+
function getRootElement() {
|
|
74
|
+
if (!initialized && typeof window !== 'undefined') {
|
|
75
|
+
initializePortals();
|
|
76
|
+
}
|
|
77
|
+
return rootElement;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Reset portal system state. Only for testing purposes.
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
function resetPortals() {
|
|
84
|
+
containers = {
|
|
85
|
+
alert: null,
|
|
86
|
+
default: null,
|
|
87
|
+
};
|
|
88
|
+
rootElement = null;
|
|
89
|
+
initialized = false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export { getContainer, getRootElement, initializePortals, resetPortals };
|
package/Progress/Progress.d.ts
CHANGED
|
@@ -1,53 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ProgressStatus, ProgressType } from '@mezzanine-ui/core/progress';
|
|
2
|
+
import { IconDefinition } from '@mezzanine-ui/icons';
|
|
3
3
|
import { TypographyProps } from '../Typography';
|
|
4
|
-
import { IconProps } from '../Icon';
|
|
5
4
|
import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
|
|
6
5
|
export interface ProgressProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'title' | 'children'> {
|
|
7
6
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
* Custom icons for different statuses.
|
|
8
|
+
* If not provided, defaults to CheckedFilledIcon for success and DangerousFilledIcon for error.
|
|
9
|
+
*/
|
|
10
|
+
icons?: {
|
|
11
|
+
/**
|
|
12
|
+
* Custom icon when status is 'error'.
|
|
13
|
+
* If not provided, defaults to DangerousFilledIcon.
|
|
14
|
+
*/
|
|
15
|
+
error?: IconDefinition;
|
|
16
|
+
/**
|
|
17
|
+
* Custom icon when status is 'success'.
|
|
18
|
+
* If not provided, defaults to CheckedFilledIcon.
|
|
19
|
+
*/
|
|
20
|
+
success?: IconDefinition;
|
|
15
21
|
};
|
|
16
|
-
/**
|
|
17
|
-
* Icon props when status is 'error'.
|
|
18
|
-
*/
|
|
19
|
-
errorIconProps?: Omit<IconProps, 'className'>;
|
|
20
22
|
/**
|
|
21
23
|
* The progress percent(0~100).
|
|
22
24
|
* @default 0
|
|
23
25
|
*/
|
|
24
26
|
percent?: number;
|
|
25
27
|
/**
|
|
26
|
-
* Percent text props when status is '
|
|
28
|
+
* Percent text props when status is 'enabled'.
|
|
27
29
|
*/
|
|
28
30
|
percentProps?: Omit<TypographyProps, 'className' | 'children'>;
|
|
29
31
|
/**
|
|
30
32
|
* Force mark the progress status. automatically set if not defined.
|
|
31
|
-
* (
|
|
33
|
+
* (enabled(0~99) or success(100) depending on percent)
|
|
32
34
|
*/
|
|
33
35
|
status?: ProgressStatus;
|
|
34
36
|
/**
|
|
35
|
-
* The
|
|
36
|
-
* @default
|
|
37
|
-
*/
|
|
38
|
-
size?: Size;
|
|
39
|
-
/**
|
|
40
|
-
* Display the progress info(percent and icon) or not.
|
|
41
|
-
* @default true
|
|
42
|
-
*/
|
|
43
|
-
showInfo?: boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Icon props when status is 'success'.
|
|
37
|
+
* The tick of progress.
|
|
38
|
+
* @default 0
|
|
46
39
|
*/
|
|
47
|
-
|
|
40
|
+
tick?: number;
|
|
48
41
|
/**
|
|
49
|
-
* The type of progress.
|
|
50
|
-
* @default '
|
|
42
|
+
* The type of progress display.
|
|
43
|
+
* @default 'progress'
|
|
51
44
|
*/
|
|
52
45
|
type?: ProgressType;
|
|
53
46
|
}
|
package/Progress/Progress.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { ProgressStatuses, ProgressTypes, progressClasses } from '@mezzanine-ui/core/progress';
|
|
4
|
-
import {
|
|
4
|
+
import { CheckedFilledIcon, DangerousFilledIcon } from '@mezzanine-ui/icons';
|
|
5
|
+
import { forwardRef, useMemo, useRef, useState, useEffect } from 'react';
|
|
5
6
|
import Typography from '../Typography/Typography.js';
|
|
6
|
-
import { MezzanineConfig } from '../Provider/context.js';
|
|
7
7
|
import Icon from '../Icon/Icon.js';
|
|
8
8
|
import cx from 'clsx';
|
|
9
9
|
|
|
@@ -11,24 +11,74 @@ import cx from 'clsx';
|
|
|
11
11
|
* The react component for `mezzanine` progress.
|
|
12
12
|
*/
|
|
13
13
|
const Progress = forwardRef(function Progress(props, ref) {
|
|
14
|
-
const {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
: ProgressStatuses.success, successIconProps, type = ProgressTypes.line, ...rest } = props;
|
|
14
|
+
const { className, icons, percent = 0, percentProps, status = percent < 100
|
|
15
|
+
? ProgressStatuses.enabled
|
|
16
|
+
: ProgressStatuses.success, tick, type = 'progress', } = props;
|
|
18
17
|
const percentLimited = Math.max(0, Math.min(100, percent));
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
18
|
+
const icon = useMemo(() => {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
if (status === ProgressStatuses.success) {
|
|
21
|
+
return (_a = icons === null || icons === void 0 ? void 0 : icons.success) !== null && _a !== void 0 ? _a : CheckedFilledIcon;
|
|
22
|
+
}
|
|
23
|
+
return (_b = icons === null || icons === void 0 ? void 0 : icons.error) !== null && _b !== void 0 ? _b : DangerousFilledIcon;
|
|
24
|
+
}, [status, icons]);
|
|
25
|
+
const isSuccessStatus = useMemo(() => status === ProgressStatuses.success && type === ProgressTypes.icon, [status, type]);
|
|
26
|
+
const isErrorStatus = useMemo(() => status === ProgressStatuses.error && type === ProgressTypes.icon, [status, type]);
|
|
27
|
+
const isActiveTick = useMemo(() => tick !== undefined && tick > 0 && tick < 100, [tick]);
|
|
28
|
+
const tickPosition = useMemo(() => {
|
|
29
|
+
if (!isActiveTick || tick === undefined)
|
|
30
|
+
return undefined;
|
|
31
|
+
return Math.max(0, Math.min(100, tick));
|
|
32
|
+
}, [isActiveTick, tick]);
|
|
33
|
+
const lineRef = useRef(null);
|
|
34
|
+
const [tickLeft, setTickLeft] = useState(undefined);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!isActiveTick || tickPosition === undefined || !lineRef.current) {
|
|
37
|
+
setTickLeft(undefined);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const lineElement = lineRef.current;
|
|
41
|
+
const containerElement = lineElement.parentElement;
|
|
42
|
+
if (!containerElement) {
|
|
43
|
+
setTickLeft(undefined);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const updateTickPosition = () => {
|
|
47
|
+
const lineRect = lineElement.getBoundingClientRect();
|
|
48
|
+
const containerRect = containerElement.getBoundingClientRect();
|
|
49
|
+
// 計算 line 相對於容器的位置和寬度
|
|
50
|
+
const lineLeft = lineRect.left - containerRect.left;
|
|
51
|
+
const lineWidth = lineRect.width;
|
|
52
|
+
// 計算 tick 在 line 中的位置(百分比轉換為像素)
|
|
53
|
+
const tickOffsetInLine = (tickPosition / 100) * lineWidth;
|
|
54
|
+
// 計算 tick 相對於容器的絕對位置
|
|
55
|
+
const tickAbsoluteLeft = lineLeft + tickOffsetInLine;
|
|
56
|
+
// 轉換為百分比(相對於容器)
|
|
57
|
+
const containerWidth = containerRect.width;
|
|
58
|
+
const tickPercent = (tickAbsoluteLeft / containerWidth) * 100;
|
|
59
|
+
setTickLeft(`${tickPercent}%`);
|
|
60
|
+
};
|
|
61
|
+
// 初始計算
|
|
62
|
+
updateTickPosition();
|
|
63
|
+
window.addEventListener('resize', updateTickPosition);
|
|
64
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
65
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
66
|
+
updateTickPosition();
|
|
67
|
+
});
|
|
68
|
+
resizeObserver.observe(lineElement);
|
|
69
|
+
resizeObserver.observe(containerElement);
|
|
70
|
+
return () => {
|
|
71
|
+
resizeObserver.disconnect();
|
|
72
|
+
window.removeEventListener('resize', updateTickPosition);
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return () => {
|
|
76
|
+
window.removeEventListener('resize', updateTickPosition);
|
|
77
|
+
};
|
|
78
|
+
}, [isActiveTick, tickPosition, type, percentLimited]);
|
|
79
|
+
return (jsxs("div", { ref: ref, className: cx(progressClasses.host, progressClasses.type(type), status === ProgressStatuses.success && progressClasses.success, status === ProgressStatuses.error && progressClasses.error, className), children: [jsx("div", { ref: lineRef, className: progressClasses.lineVariant, children: jsx("i", { className: progressClasses.lineBg, style: { width: `${percentLimited}%` } }) }), type === ProgressTypes.percent && (jsx(Typography, { variant: "input", ...percentProps, className: progressClasses.infoPercent, children: `${percentLimited}%` })), (isSuccessStatus || isErrorStatus) && (jsx(Icon, { className: progressClasses.infoIcon, icon: icon })), isActiveTick && tickLeft !== undefined && (jsx("div", { className: progressClasses.tick, style: {
|
|
80
|
+
'--tick-position': tickLeft,
|
|
81
|
+
} }))] }));
|
|
32
82
|
});
|
|
33
83
|
|
|
34
84
|
export { Progress as default };
|
package/Progress/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export type {
|
|
2
|
-
export {
|
|
1
|
+
export type { ProgressStatus, ProgressStatuses, ProgressType, } from '@mezzanine-ui/core/progress';
|
|
2
|
+
export { default } from './Progress';
|
|
3
|
+
export type { ProgressProps } from './Progress';
|
package/Provider/context.js
CHANGED
package/Radio/Radio.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ChangeEventHandler } from 'react';
|
|
2
2
|
import { RadioSize } from '@mezzanine-ui/core/radio';
|
|
3
|
-
import {
|
|
3
|
+
import { IconDefinition } from '@mezzanine-ui/icons';
|
|
4
|
+
import { InputCheckProps } from '../_internal/InputCheck/InputCheck';
|
|
5
|
+
import { BaseInputProps } from '../Input';
|
|
4
6
|
import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
|
|
5
|
-
export interface
|
|
7
|
+
export interface RadioBaseProps extends Omit<InputCheckProps, 'control' | 'htmlFor'> {
|
|
6
8
|
/**
|
|
7
9
|
* Whether the radio is checked.
|
|
8
10
|
*/
|
|
@@ -26,7 +28,7 @@ export interface RadioProps extends Omit<InputCheckProps, 'control' | 'htmlFor'>
|
|
|
26
28
|
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
27
29
|
/**
|
|
28
30
|
* The size of radio.
|
|
29
|
-
* @default '
|
|
31
|
+
* @default 'main'
|
|
30
32
|
*/
|
|
31
33
|
size?: RadioSize;
|
|
32
34
|
/**
|
|
@@ -34,8 +36,39 @@ export interface RadioProps extends Omit<InputCheckProps, 'control' | 'htmlFor'>
|
|
|
34
36
|
*/
|
|
35
37
|
value?: string;
|
|
36
38
|
}
|
|
39
|
+
export interface RadioNormalProps extends RadioBaseProps {
|
|
40
|
+
icon?: never;
|
|
41
|
+
hint?: string;
|
|
42
|
+
/**
|
|
43
|
+
* The type of radio.
|
|
44
|
+
* @default 'radio'
|
|
45
|
+
*/
|
|
46
|
+
type?: 'radio';
|
|
47
|
+
/**
|
|
48
|
+
* When `withInputConfig` is provided, an `Input` component is rendered alongside the
|
|
49
|
+
* radio using the passed props. By default, this input has a width of 120px unless you
|
|
50
|
+
* override it via the `width` property below.
|
|
51
|
+
*/
|
|
52
|
+
withInputConfig?: Pick<BaseInputProps, 'aria-disabled' | 'disabled' | 'onChange' | 'placeholder' | 'value'> & {
|
|
53
|
+
width?: number;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export interface RadioSegmentProps extends RadioBaseProps {
|
|
57
|
+
/**
|
|
58
|
+
* The icon in radio prefix.
|
|
59
|
+
*/
|
|
60
|
+
icon?: IconDefinition;
|
|
61
|
+
hint?: never;
|
|
62
|
+
/**
|
|
63
|
+
* The type of radio.
|
|
64
|
+
* @default 'radio'
|
|
65
|
+
*/
|
|
66
|
+
type: 'segment';
|
|
67
|
+
withInputConfig?: never;
|
|
68
|
+
}
|
|
69
|
+
export type RadioProps = RadioNormalProps | RadioSegmentProps;
|
|
37
70
|
/**
|
|
38
71
|
* The react component for `mezzanine` radio.
|
|
39
72
|
*/
|
|
40
|
-
declare const Radio: import("react").ForwardRefExoticComponent<RadioProps & import("react").RefAttributes<
|
|
73
|
+
declare const Radio: import("react").ForwardRefExoticComponent<RadioProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
41
74
|
export default Radio;
|