@mezzanine-ui/react 0.15.3 → 1.0.0-alpha.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/Accordion.js +1 -2
- package/Accordion/AccordionControlContext.js +1 -0
- package/Accordion/AccordionDetails.js +2 -2
- package/Accordion/AccordionSummary.d.ts +1 -1
- package/Accordion/AccordionSummary.js +11 -12
- package/Accordion/index.d.ts +6 -3
- package/Alert/Alert.js +1 -2
- 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 +2 -3
- package/Anchor/index.d.ts +2 -1
- package/AppBar/AppBar.js +1 -2
- package/AppBar/AppBarBrand.js +1 -2
- package/AppBar/AppBarMain.js +1 -2
- package/AppBar/AppBarSupport.js +1 -2
- 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 +15 -18
- package/Badge/BadgeContainer.d.ts +1 -1
- package/Badge/BadgeContainer.js +2 -3
- 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 +25 -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 +70 -0
- package/Button/Button.js +24 -19
- package/Button/ButtonGroup.d.ts +6 -28
- package/Button/ButtonGroup.js +8 -18
- package/Button/index.d.ts +6 -12
- package/Button/index.js +2 -3
- package/Button/typings.d.ts +11 -26
- package/Calendar/Calendar.d.ts +31 -2
- package/Calendar/Calendar.js +75 -21
- 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 +17 -5
- 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 +14 -4
- 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/Card.js +1 -2
- package/Card/CardActions.js +2 -3
- package/Card/index.d.ts +4 -2
- package/Checkbox/CheckAll.d.ts +16 -6
- package/Checkbox/CheckAll.js +41 -28
- package/Checkbox/Checkbox.d.ts +100 -22
- package/Checkbox/Checkbox.js +74 -18
- package/Checkbox/CheckboxGroup.d.ts +100 -18
- package/Checkbox/CheckboxGroup.js +169 -25
- 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/ConfirmActions.js +1 -2
- package/ConfirmActions/index.d.ts +2 -1
- package/DatePicker/DatePicker.d.ts +12 -1
- package/DatePicker/DatePicker.js +42 -11
- package/DatePicker/DatePickerCalendar.d.ts +3 -6
- package/DatePicker/DatePickerCalendar.js +38 -39
- package/DatePicker/index.d.ts +4 -2
- package/DateRangePicker/DateRangePicker.d.ts +18 -2
- package/DateRangePicker/DateRangePicker.js +144 -102
- package/DateRangePicker/DateRangePickerCalendar.d.ts +13 -9
- package/DateRangePicker/DateRangePickerCalendar.js +8 -96
- 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 +180 -96
- package/DateTimePicker/index.d.ts +2 -2
- package/DateTimePicker/index.js +0 -1
- package/Drawer/Drawer.js +3 -4
- package/Drawer/index.d.ts +2 -1
- package/Dropdown/Dropdown.js +13 -24
- package/Dropdown/index.d.ts +2 -1
- package/Empty/Empty.d.ts +1 -16
- package/Empty/Empty.js +37 -9
- 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 +52 -0
- package/Form/FormControlContext.js +1 -0
- package/Form/FormField.js +1 -2
- package/Form/FormHintText.d.ts +18 -0
- package/Form/FormHintText.js +17 -0
- package/Form/FormLabel.js +2 -2
- 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/useInputWithClearControlValue.d.ts +1 -1
- package/Form/useInputWithTagsModeValue.d.ts +1 -1
- package/Form/useSelectValueControl.js +2 -0
- package/Icon/Icon.js +1 -2
- 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 +196 -31
- 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 +2 -2
- package/Menu/MenuDivider.js +1 -2
- package/Menu/MenuItem.js +1 -2
- package/Menu/MenuItemGroup.js +1 -2
- package/Menu/index.d.ts +8 -4
- package/Message/Message.d.ts +6 -4
- package/Message/Message.js +87 -11
- package/Message/MessageTimerController.d.ts +14 -0
- package/Message/MessageTimerController.js +27 -0
- package/Message/index.d.ts +3 -2
- package/Modal/Modal.js +3 -4
- package/Modal/ModalActions.js +2 -2
- package/Modal/ModalBody.js +1 -2
- package/Modal/ModalControl.js +1 -0
- package/Modal/ModalFooter.js +1 -2
- package/Modal/ModalHeader.js +3 -3
- package/Modal/index.d.ts +10 -5
- package/Modal/useModalContainer.d.ts +1 -1
- package/Modal/useModalContainer.js +2 -4
- package/Navigation/Navigation.js +38 -36
- package/Navigation/NavigationContext.js +1 -0
- package/Navigation/NavigationItem.js +2 -2
- package/Navigation/NavigationSubMenu.js +17 -28
- package/Navigation/index.d.ts +8 -4
- package/Notification/Notification.js +1 -3
- package/Notification/index.d.ts +3 -2
- package/Notifier/NotifierManager.d.ts +16 -3
- 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 +35 -5
- package/PageFooter/index.d.ts +2 -1
- package/PageHeader/PageHeader.d.ts +36 -0
- package/PageHeader/PageHeader.js +65 -0
- package/PageHeader/index.d.ts +2 -0
- package/PageHeader/index.js +1 -0
- package/PageToolbar/PageToolbar.d.ts +67 -0
- package/PageToolbar/PageToolbar.js +114 -0
- package/PageToolbar/index.d.ts +2 -0
- package/PageToolbar/index.js +1 -0
- package/Pagination/Pagination.d.ts +23 -29
- package/Pagination/Pagination.js +4 -6
- package/Pagination/PaginationItem.d.ts +1 -1
- package/Pagination/PaginationItem.js +7 -5
- package/Pagination/PaginationJumper.d.ts +7 -9
- package/Pagination/PaginationJumper.js +4 -7
- package/Pagination/PaginationPageSize.d.ts +8 -11
- package/Pagination/PaginationPageSize.js +6 -6
- package/Pagination/index.d.ts +8 -4
- package/Pagination/usePagination.d.ts +3 -1
- package/Pagination/usePagination.js +30 -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 +14 -4
- package/Picker/PickerTrigger.js +18 -4
- package/Picker/PickerTriggerWithSeparator.d.ts +124 -0
- package/Picker/PickerTriggerWithSeparator.js +80 -0
- package/Picker/RangePickerTrigger.d.ts +57 -6
- package/Picker/RangePickerTrigger.js +66 -9
- 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/usePickerDocumentEventClose.d.ts +3 -3
- package/Picker/usePickerValue.d.ts +2 -3
- package/Picker/usePickerValue.js +8 -13
- package/Picker/useTabKeyClose.d.ts +1 -1
- package/Popconfirm/Popconfirm.js +3 -4
- package/Popconfirm/index.d.ts +2 -1
- package/Popover/Popover.js +5 -10
- package/Popover/index.d.ts +2 -1
- package/Popper/Popper.d.ts +15 -10
- package/Popper/Popper.js +89 -19
- package/Popper/index.d.ts +2 -1
- package/Portal/Portal.d.ts +13 -5
- package/Portal/Portal.js +26 -12
- 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 +72 -23
- package/Progress/index.d.ts +3 -2
- package/Provider/ConfigProvider.d.ts +2 -1
- package/Provider/ConfigProvider.js +1 -0
- package/Provider/context.js +1 -0
- package/Radio/Radio.d.ts +1 -1
- package/Radio/Radio.js +3 -3
- package/Radio/RadioGroup.d.ts +1 -1
- package/Radio/RadioGroup.js +2 -3
- package/Radio/RadioGroupContext.js +1 -0
- package/Radio/index.d.ts +4 -2
- 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 +3 -3
- package/Select/AutoComplete.js +6 -13
- package/Select/Option.js +2 -2
- package/Select/Select.d.ts +1 -1
- package/Select/Select.js +3 -3
- package/Select/SelectControlContext.js +1 -0
- package/Select/SelectTrigger.d.ts +1 -87
- package/Select/SelectTrigger.js +27 -23
- package/Select/SelectTriggerTags.d.ts +1 -1
- package/Select/SelectTriggerTags.js +48 -20
- package/Select/TreeSelect.d.ts +1 -1
- package/Select/TreeSelect.js +3 -3
- 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 +79 -43
- 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 +13 -6
- package/Skeleton/index.d.ts +2 -1
- package/Slider/Slider.d.ts +44 -7
- package/Slider/Slider.js +18 -15
- package/Slider/index.d.ts +5 -3
- package/Slider/useSlider.d.ts +1 -1
- package/Slider/useSlider.js +1 -1
- package/Spin/Spin.d.ts +39 -0
- package/{Loading/Loading.js → Spin/Spin.js} +9 -10
- package/Spin/index.d.ts +2 -0
- package/Spin/index.js +1 -0
- package/Stepper/Step.d.ts +1 -35
- package/Stepper/Step.js +44 -10
- package/Stepper/Stepper.d.ts +1 -14
- package/Stepper/Stepper.js +50 -17
- 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/Table/Table.d.ts +1 -1
- package/Table/Table.js +3 -4
- package/Table/TableBody.js +3 -2
- package/Table/TableBodyRow.js +1 -0
- package/Table/TableCell.js +1 -2
- package/Table/TableContext.js +1 -0
- package/Table/TableExpandedTable.js +1 -0
- package/Table/TableHeader.js +1 -0
- package/Table/draggable/useTableDraggable.d.ts +1 -1
- package/Table/editable/TableEditRenderWrapper.js +1 -0
- package/Table/expandable/TableExpandable.js +1 -1
- package/Table/index.d.ts +7 -4
- package/Table/pagination/TablePagination.d.ts +1 -1
- package/Table/pagination/TablePagination.js +1 -0
- package/Table/pagination/useTablePagination.d.ts +1 -1
- package/Table/pagination/useTablePagination.js +1 -0
- package/Table/refresh/TableRefresh.js +4 -3
- package/Table/rowSelection/TableRowSelection.js +3 -2
- package/Table/sorting/TableSortingIcon.js +2 -1
- package/Table/sorting/useTableSorting.js +1 -0
- package/Table/useTableFetchMore.js +1 -1
- package/Table/useTableScroll.d.ts +44 -14
- package/Table/useTableScroll.js +10 -8
- package/Tabs/Tab.js +1 -2
- package/Tabs/TabPane.js +2 -2
- package/Tabs/Tabs.js +10 -6
- package/Tabs/index.d.ts +6 -3
- package/Tabs/useTabsOverflow.d.ts +1 -1
- package/Tabs/useTabsOverflow.js +4 -3
- package/Tag/Tag.d.ts +2 -25
- package/Tag/Tag.js +24 -15
- 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 -20
- package/TextField/TextField.js +59 -24
- package/TextField/index.d.ts +2 -1
- package/Textarea/Textarea.d.ts +19 -51
- package/Textarea/Textarea.js +14 -21
- package/Textarea/index.d.ts +2 -2
- package/TimePanel/TimePanel.d.ts +1 -22
- package/TimePanel/TimePanel.js +32 -28
- package/TimePanel/TimePanelAction.d.ts +2 -8
- package/TimePanel/TimePanelAction.js +3 -4
- package/TimePanel/TimePanelColumn.d.ts +0 -13
- package/TimePanel/TimePanelColumn.js +10 -13
- package/TimePanel/index.d.ts +6 -3
- package/TimePicker/TimePicker.d.ts +10 -1
- package/TimePicker/TimePicker.js +87 -37
- package/TimePicker/TimePickerPanel.d.ts +1 -2
- package/TimePicker/TimePickerPanel.js +3 -4
- 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 +14 -3
- package/Tooltip/Tooltip.js +53 -18
- 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 +7 -12
- package/Transition/Fade.js +5 -6
- 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 -17
- package/Transition/Slide.d.ts +7 -0
- package/Transition/{Zoom.js → Slide.js} +14 -13
- package/Transition/SlideFade.d.ts +3 -0
- package/Transition/SlideFade.js +6 -6
- package/Transition/Transition.d.ts +3 -3
- 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/Tree.js +1 -2
- package/Tree/TreeNode.js +8 -8
- package/Tree/TreeNodeList.js +1 -2
- package/Tree/index.d.ts +10 -5
- package/Tree/typings.d.ts +2 -2
- package/Typography/Typography.d.ts +6 -9
- package/Typography/Typography.js +7 -9
- package/Typography/index.d.ts +4 -7
- 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.js +1 -2
- package/_internal/InputCheck/InputCheckGroup.js +1 -2
- package/_internal/InputCheck/index.d.ts +4 -2
- package/_internal/InputTriggerPopper/InputTriggerPopper.js +16 -27
- package/_internal/InputTriggerPopper/index.d.ts +2 -1
- package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +2 -2
- package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +5 -29
- 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/useClickAway.d.ts +1 -1
- 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 +126 -58
- package/index.js +103 -90
- 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 +16 -20
- package/utils/composeRefs.js +0 -1
- package/utils/get-css-variable-value.d.ts +1 -0
- package/utils/get-css-variable-value.js +9 -0
- package/utils/jsx-types.d.ts +1 -1
- 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 -50
- package/Form/FormMessage.d.ts +0 -7
- package/Form/FormMessage.js +0 -19
- 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 -32
- 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 -29
- package/Switch/index.d.ts +0 -2
- package/Switch/index.js +0 -1
- 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 -24
- 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 -52
- package/Upload/UploadPictureBlock.d.ts +0 -20
- package/Upload/UploadPictureBlock.js +0 -82
- package/Upload/UploadPictureWall.d.ts +0 -81
- package/Upload/UploadPictureWall.js +0 -169
- 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 -30
- package/utils/scroll-lock.d.ts +0 -2
- package/utils/scroll-lock.js +0 -24
package/Input/Input.js
CHANGED
|
@@ -1,50 +1,215 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useRef, useState, useCallback } from 'react';
|
|
3
4
|
import { inputClasses } from '@mezzanine-ui/core/input';
|
|
4
|
-
import { selectClasses } from '@mezzanine-ui/core/select';
|
|
5
5
|
import { useComposeRefs } from '../hooks/useComposeRefs.js';
|
|
6
6
|
import { useInputWithClearControlValue } from '../Form/useInputWithClearControlValue.js';
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
7
|
+
import { EyeIcon, EyeInvisibleIcon, SearchIcon } from '@mezzanine-ui/icons';
|
|
8
|
+
import Icon from '../Icon/Icon.js';
|
|
9
|
+
import SelectButton from './SelectButton/SelectButton.js';
|
|
10
|
+
import ActionButton from './ActionButton/ActionButton.js';
|
|
11
|
+
import SpinnerButton from './SpinnerButton/SpinnerButton.js';
|
|
9
12
|
import TextField from '../TextField/TextField.js';
|
|
10
|
-
import
|
|
11
|
-
import { FormControlContext } from '../Form/FormControlContext.js';
|
|
13
|
+
import PasswordStrengthIndicator from './PasswordStrengthIndicator/PasswordStrengthIndicator.js';
|
|
12
14
|
import cx from 'clsx';
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* The react component for `mezzanine` input.
|
|
16
18
|
*/
|
|
17
19
|
const Input = forwardRef(function Input(props, ref) {
|
|
18
|
-
const { size:
|
|
19
|
-
const { disabled: disabledFromFormControl, fullWidth: fullWidthFromFormControl, required: requiredFromFormControl, severity, } = useContext(FormControlContext) || {};
|
|
20
|
-
const { className, clearable = false, defaultValue, disabled = disabledFromFormControl || false, error = severity === 'error' || false, fullWidth = fullWidthFromFormControl || false, inputProps, inputRef: inputRefProp, mode = 'default', onChange: onChangeProp, placeholder, prefix, readOnly = false, required = requiredFromFormControl || false, size = globalSize, suffix, tagsProps, value: valueProp, } = props;
|
|
21
|
-
const { initialTagsValue, inputPosition = 'bottom', maxTagsLength, onTagsChange, } = tagsProps || {};
|
|
22
|
-
const tagsMode = mode === 'tags';
|
|
20
|
+
const { active, className, defaultValue, disabled = false, error = false, formatter, fullWidth = true, id, inputProps, inputType, inputRef: inputRefProp, name, onChange: onChangeProp, parser, placeholder, readonly, size = 'main', typing, variant = 'base', value: valueProp, } = props;
|
|
23
21
|
const inputRef = useRef(null);
|
|
24
|
-
const [
|
|
22
|
+
const [showPassword, setShowPassword] = useState(false);
|
|
23
|
+
const [value, onChange, onClearFromHook] = useInputWithClearControlValue({
|
|
25
24
|
defaultValue,
|
|
26
25
|
onChange: onChangeProp,
|
|
27
26
|
ref: inputRef,
|
|
28
27
|
value: valueProp,
|
|
29
28
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
// Handle formatter/parser logic
|
|
30
|
+
const handleChange = useCallback((event) => {
|
|
31
|
+
let newValue = event.target.value;
|
|
32
|
+
// Parse the formatted value back to raw value if parser is provided
|
|
33
|
+
if (parser) {
|
|
34
|
+
newValue = parser(newValue);
|
|
35
|
+
}
|
|
36
|
+
// Create a new event with parsed value for onChange callback
|
|
37
|
+
const syntheticEvent = {
|
|
38
|
+
...event,
|
|
39
|
+
target: {
|
|
40
|
+
...event.target,
|
|
41
|
+
value: newValue,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
onChange(syntheticEvent);
|
|
45
|
+
}, [parser, onChange]);
|
|
46
|
+
// Format the display value
|
|
47
|
+
const displayValue = formatter ? formatter(value) : value;
|
|
40
48
|
const composedInputRef = useComposeRefs([inputRefProp, inputRef]);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
// Determine input type and props based on variant
|
|
50
|
+
let defaultInputType = 'text';
|
|
51
|
+
let prefix = undefined;
|
|
52
|
+
let suffix = undefined;
|
|
53
|
+
let clearable = false;
|
|
54
|
+
let onClear = undefined;
|
|
55
|
+
let inputStyle = {};
|
|
56
|
+
let defaultInputProps = {};
|
|
57
|
+
let prefixExternalButton = undefined;
|
|
58
|
+
let suffixExternalButton = undefined;
|
|
59
|
+
let showPasswordStrengthIndicator = false;
|
|
60
|
+
let passwordStrengthIndicatorProps = undefined;
|
|
61
|
+
// Handle different input types with type narrowing
|
|
62
|
+
switch (variant) {
|
|
63
|
+
case 'base': {
|
|
64
|
+
const baseProps = props;
|
|
65
|
+
if (baseProps.clearable) {
|
|
66
|
+
clearable = baseProps.clearable;
|
|
67
|
+
onClear = baseProps.onClear || onClearFromHook;
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case 'affix': {
|
|
72
|
+
const affixProps = props;
|
|
73
|
+
if (affixProps.clearable) {
|
|
74
|
+
clearable = affixProps.clearable;
|
|
75
|
+
onClear = affixProps.onClear || onClearFromHook;
|
|
76
|
+
}
|
|
77
|
+
prefix = affixProps.prefix;
|
|
78
|
+
suffix = affixProps.suffix;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case 'search': {
|
|
82
|
+
const searchProps = props;
|
|
83
|
+
// 預設為可清除
|
|
84
|
+
clearable =
|
|
85
|
+
typeof searchProps.clearable !== 'undefined'
|
|
86
|
+
? searchProps.clearable
|
|
87
|
+
: true;
|
|
88
|
+
if (clearable) {
|
|
89
|
+
onClear = searchProps.onClear || onClearFromHook;
|
|
90
|
+
}
|
|
91
|
+
// 預設有 search icon 在前綴
|
|
92
|
+
prefix = jsx(Icon, { icon: SearchIcon });
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case 'number': {
|
|
96
|
+
const numberProps = props;
|
|
97
|
+
const { step = 1, max, min } = numberProps;
|
|
98
|
+
// Input type 應是 number
|
|
99
|
+
defaultInputType = 'number';
|
|
100
|
+
// 額外的屬性
|
|
101
|
+
defaultInputProps = {
|
|
102
|
+
min: min,
|
|
103
|
+
max: max,
|
|
104
|
+
step: step,
|
|
105
|
+
};
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
case 'unit': {
|
|
109
|
+
const unitProps = props;
|
|
110
|
+
const { step = 1, max, min, onSpinUp, onSpinDown } = unitProps;
|
|
111
|
+
// 預設置右對齊
|
|
112
|
+
inputStyle = { textAlign: 'right' };
|
|
113
|
+
// 允許填入 prefix/suffix
|
|
114
|
+
prefix = unitProps.prefix;
|
|
115
|
+
suffix = unitProps.suffix;
|
|
116
|
+
defaultInputProps = {
|
|
117
|
+
min: min,
|
|
118
|
+
max: max,
|
|
119
|
+
step: step,
|
|
120
|
+
};
|
|
121
|
+
if (unitProps.showSpinner) {
|
|
122
|
+
const handleSpinUp = () => {
|
|
123
|
+
const currentValue = parseFloat(value || '0');
|
|
124
|
+
const newValue = currentValue + step;
|
|
125
|
+
if (typeof max === 'undefined' || newValue <= max) {
|
|
126
|
+
onChange({
|
|
127
|
+
target: { value: String(newValue) },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
onSpinUp === null || onSpinUp === void 0 ? void 0 : onSpinUp();
|
|
131
|
+
};
|
|
132
|
+
const handleSpinDown = () => {
|
|
133
|
+
const currentValue = parseFloat(value || '0');
|
|
134
|
+
const newValue = currentValue - step;
|
|
135
|
+
if (typeof min === 'undefined' || newValue >= min) {
|
|
136
|
+
onChange({
|
|
137
|
+
target: { value: String(newValue) },
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
onSpinDown === null || onSpinDown === void 0 ? void 0 : onSpinDown();
|
|
141
|
+
};
|
|
142
|
+
suffix = (jsxs(Fragment, { children: [unitProps.suffix, jsxs("div", { className: inputClasses.spinners, children: [jsx(SpinnerButton, { type: "up", size: size, disabled: disabled, onClick: handleSpinUp }), jsx(SpinnerButton, { type: "down", size: size, disabled: disabled, onClick: handleSpinDown })] })] }));
|
|
143
|
+
}
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
case 'action': {
|
|
147
|
+
const actionProps = props;
|
|
148
|
+
const { actionButton } = actionProps;
|
|
149
|
+
if (actionButton.position === 'prefix') {
|
|
150
|
+
const { ...restActionButtonProps } = actionButton;
|
|
151
|
+
prefixExternalButton = (jsx(ActionButton, { ...restActionButtonProps, disabled: restActionButtonProps.disabled || disabled, size: size }));
|
|
152
|
+
}
|
|
153
|
+
if (actionButton.position === 'suffix') {
|
|
154
|
+
const { ...restActionButtonProps } = actionButton;
|
|
155
|
+
suffixExternalButton = (jsx(ActionButton, { ...restActionButtonProps, disabled: restActionButtonProps.disabled || disabled, size: size }));
|
|
156
|
+
}
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case 'select': {
|
|
160
|
+
const selectProps = props;
|
|
161
|
+
const { selectButton } = selectProps;
|
|
162
|
+
if (selectButton.position === 'both' ||
|
|
163
|
+
selectButton.position === 'prefix') {
|
|
164
|
+
const { ...restSelectButtonProps } = selectButton;
|
|
165
|
+
prefixExternalButton = (jsx(SelectButton, { ...restSelectButtonProps, disabled: restSelectButtonProps.disabled || disabled, size: size }));
|
|
166
|
+
}
|
|
167
|
+
if (selectButton.position === 'both' ||
|
|
168
|
+
selectButton.position === 'suffix') {
|
|
169
|
+
const { ...restSelectButtonProps } = selectButton;
|
|
170
|
+
suffixExternalButton = (jsx(SelectButton, { ...restSelectButtonProps, disabled: restSelectButtonProps.disabled || disabled, size: size }));
|
|
171
|
+
}
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
case 'password': {
|
|
175
|
+
const passwordProps = props;
|
|
176
|
+
defaultInputType = showPassword ? 'text' : 'password';
|
|
177
|
+
if (passwordProps.clearable) {
|
|
178
|
+
onClear = passwordProps.onClear || onClearFromHook;
|
|
179
|
+
}
|
|
180
|
+
const handlePasswordToggle = (event) => {
|
|
181
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
182
|
+
event.preventDefault();
|
|
183
|
+
setShowPassword((prev) => !prev);
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
suffix = (jsx(Icon, { icon: showPassword ? EyeIcon : EyeInvisibleIcon, onClick: () => setShowPassword((prev) => !prev), role: "button", tabIndex: 0, "aria-label": showPassword ? 'Hide password' : 'Show password', onKeyDown: handlePasswordToggle }));
|
|
187
|
+
if (passwordProps.showPasswordStrengthIndicator) {
|
|
188
|
+
showPasswordStrengthIndicator = true;
|
|
189
|
+
passwordStrengthIndicatorProps =
|
|
190
|
+
passwordProps.passwordStrengthIndicator;
|
|
191
|
+
}
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const interactiveProps = (() => {
|
|
196
|
+
if (disabled) {
|
|
197
|
+
return { disabled: true };
|
|
198
|
+
}
|
|
199
|
+
if (readonly) {
|
|
200
|
+
return { readonly: true };
|
|
201
|
+
}
|
|
202
|
+
if (typing) {
|
|
203
|
+
return { typing: true };
|
|
204
|
+
}
|
|
205
|
+
return {};
|
|
206
|
+
})();
|
|
207
|
+
return (jsxs("div", { ref: ref, className: cx(inputClasses.container, className), children: [jsxs("div", { className: cx(inputClasses.host, {
|
|
208
|
+
[inputClasses.withPrefixExternalAction]: prefixExternalButton !== undefined,
|
|
209
|
+
[inputClasses.withSuffixExternalAction]: suffixExternalButton !== undefined,
|
|
210
|
+
}), children: [prefixExternalButton, jsx(TextField, { active: active, className: cx(inputClasses.field, {
|
|
211
|
+
[inputClasses.number]: variant === 'number',
|
|
212
|
+
}, inputClasses.size(size)), clearable: clearable, error: error, fullWidth: fullWidth, onClear: onClear, size: size, prefix: prefix, suffix: suffix, ...interactiveProps, children: jsx("input", { ...defaultInputProps, ...inputProps, id: id, name: name, "aria-disabled": disabled, "aria-multiline": false, "aria-readonly": readonly, disabled: disabled, onChange: formatter || parser ? handleChange : onChange, placeholder: placeholder, readOnly: readonly, ref: composedInputRef, style: { ...inputStyle, ...inputProps === null || inputProps === void 0 ? void 0 : inputProps.style }, type: inputType !== null && inputType !== void 0 ? inputType : defaultInputType, value: displayValue }) }), suffixExternalButton] }), variant === 'password' && showPasswordStrengthIndicator ? (jsx(PasswordStrengthIndicator, { ...(passwordStrengthIndicatorProps || {}), className: cx(inputClasses.indicatorContainer, passwordStrengthIndicatorProps === null || passwordStrengthIndicatorProps === void 0 ? void 0 : passwordStrengthIndicatorProps.className) })) : null] }));
|
|
47
213
|
});
|
|
48
|
-
var Input$1 = Input;
|
|
49
214
|
|
|
50
|
-
export { Input
|
|
215
|
+
export { Input as default };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { InputStrength } from '@mezzanine-ui/core/input';
|
|
2
|
+
import type { FormHintTextProps } from '../../Form/FormHintText';
|
|
3
|
+
import { NativeElementPropsWithoutKeyAndRef } from '../../utils/jsx-types';
|
|
4
|
+
export interface PasswordStrengthIndicatorProps extends NativeElementPropsWithoutKeyAndRef<'div'> {
|
|
5
|
+
/**
|
|
6
|
+
* The strength of password.
|
|
7
|
+
* @default 'weak'
|
|
8
|
+
*/
|
|
9
|
+
strength?: InputStrength;
|
|
10
|
+
/**
|
|
11
|
+
* The text to show beside the strength indicator bar.
|
|
12
|
+
*/
|
|
13
|
+
strengthText?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The prefix text for strength text.
|
|
16
|
+
* @default '密碼強度:'
|
|
17
|
+
*/
|
|
18
|
+
strengthTextPrefix?: string;
|
|
19
|
+
/**
|
|
20
|
+
* The hint texts to show below the strength indicator bar.
|
|
21
|
+
*/
|
|
22
|
+
hintTexts?: {
|
|
23
|
+
severity: FormHintTextProps['severity'];
|
|
24
|
+
hint: string;
|
|
25
|
+
}[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The react component for `mezzanine` password strength indicator.
|
|
29
|
+
*/
|
|
30
|
+
declare const PasswordStrengthIndicator: import("react").ForwardRefExoticComponent<PasswordStrengthIndicatorProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
31
|
+
export default PasswordStrengthIndicator;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { inputPasswordStrengthIndicatorClasses } from '@mezzanine-ui/core/input';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import FormHintText from '../../Form/FormHintText.js';
|
|
6
|
+
import cx from 'clsx';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The react component for `mezzanine` password strength indicator.
|
|
10
|
+
*/
|
|
11
|
+
const PasswordStrengthIndicator = forwardRef(function PasswordStrengthIndicator(props, ref) {
|
|
12
|
+
const { className, strength = 'weak', strengthText: strengthTextProp, strengthTextPrefix = '密碼強度:', hintTexts, ...rest } = props;
|
|
13
|
+
const strengthText = strengthTextProp ||
|
|
14
|
+
(strength === 'weak' ? '低' : strength === 'medium' ? '中' : '高');
|
|
15
|
+
return (jsxs("div", { ref: ref, className: cx(inputPasswordStrengthIndicatorClasses.host, className), ...rest, children: [jsx("div", { className: cx(inputPasswordStrengthIndicatorClasses.bar, inputPasswordStrengthIndicatorClasses.barState(strength)) }), jsxs("span", { className: inputPasswordStrengthIndicatorClasses.text, children: [strengthTextPrefix, jsx("mark", { children: strengthText })] }), hintTexts && hintTexts.length > 0 && (jsx("div", { className: inputPasswordStrengthIndicatorClasses.hintTextGroup, children: hintTexts.map((hintText, idx) => (jsx(FormHintText, { severity: hintText.severity, children: hintText.hint }, idx))) }))] }));
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export { PasswordStrengthIndicator as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './PasswordStrengthIndicator.js';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { InputSize } from '@mezzanine-ui/core/input';
|
|
2
|
+
import { NativeElementPropsWithoutKeyAndRef } from '../../utils/jsx-types';
|
|
3
|
+
export interface SelectButtonProps extends Omit<NativeElementPropsWithoutKeyAndRef<'button'>, 'type' | 'disabled'> {
|
|
4
|
+
/**
|
|
5
|
+
* Whether the select button is disabled.
|
|
6
|
+
*/
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* The value of select button.
|
|
10
|
+
*/
|
|
11
|
+
value?: string;
|
|
12
|
+
/**
|
|
13
|
+
* The size of select button.
|
|
14
|
+
* @default 'main'
|
|
15
|
+
*/
|
|
16
|
+
size?: InputSize;
|
|
17
|
+
}
|
|
18
|
+
/** @TODO dropdown menu with button */
|
|
19
|
+
declare const SelectButton: import("react").ForwardRefExoticComponent<SelectButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
20
|
+
export default SelectButton;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { inputSelectButtonClasses } from '@mezzanine-ui/core/input';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import Rotate from '../../Transition/Rotate.js';
|
|
6
|
+
import { ChevronDownIcon } from '@mezzanine-ui/icons';
|
|
7
|
+
import { MOTION_EASING, MOTION_DURATION } from '@mezzanine-ui/system/motion';
|
|
8
|
+
import Icon from '../../Icon/Icon.js';
|
|
9
|
+
import cx from 'clsx';
|
|
10
|
+
|
|
11
|
+
/** @TODO dropdown menu with button */
|
|
12
|
+
const SelectButton = forwardRef(function SelectButton(props, ref) {
|
|
13
|
+
const { className, disabled, value, size = 'main', ...rest } = props;
|
|
14
|
+
return (jsxs("button", { ref: ref, type: "button", disabled: disabled, className: cx(inputSelectButtonClasses.host, disabled && inputSelectButtonClasses.disabled, size === 'main' ? inputSelectButtonClasses.main : inputSelectButtonClasses.sub, className), title: value, ...rest, children: [jsx("span", { className: inputSelectButtonClasses.text, children: value }), jsx(Rotate
|
|
15
|
+
/** @TODO in=true when dropdown opened */
|
|
16
|
+
, {
|
|
17
|
+
/** @TODO in=true when dropdown opened */
|
|
18
|
+
in: false, duration: MOTION_DURATION.fast, easing: MOTION_EASING.standard, children: jsx(Icon, { className: inputSelectButtonClasses.icon, icon: ChevronDownIcon, size: 16 }) })] }));
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export { SelectButton as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './SelectButton.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InputSize } from '@mezzanine-ui/core/input';
|
|
2
|
+
import { NativeElementPropsWithoutKeyAndRef } from '../../utils/jsx-types';
|
|
3
|
+
export interface SpinnerButtonProps extends Omit<NativeElementPropsWithoutKeyAndRef<'button'>, 'type' | 'disabled'> {
|
|
4
|
+
/**
|
|
5
|
+
* Whether the spinner button is disabled.
|
|
6
|
+
*/
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* The size of spinner button.
|
|
10
|
+
* @default 'main'
|
|
11
|
+
*/
|
|
12
|
+
size?: InputSize;
|
|
13
|
+
/**
|
|
14
|
+
* The type of spinner button.
|
|
15
|
+
*/
|
|
16
|
+
type: 'up' | 'down';
|
|
17
|
+
}
|
|
18
|
+
declare const SpinnerButton: import("react").ForwardRefExoticComponent<SpinnerButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
19
|
+
export default SpinnerButton;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { inputSpinnerButtonClasses } from '@mezzanine-ui/core/input';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import { CaretUpFlatIcon, CaretDownFlatIcon } from '@mezzanine-ui/icons';
|
|
6
|
+
import Icon from '../../Icon/Icon.js';
|
|
7
|
+
import cx from 'clsx';
|
|
8
|
+
|
|
9
|
+
const SpinnerButton = forwardRef(function SpinnerButton(props, ref) {
|
|
10
|
+
const { className, disabled, size = 'main', type, ...rest } = props;
|
|
11
|
+
return (jsx("button", { ref: ref, type: "button", disabled: disabled, className: cx(inputSpinnerButtonClasses.host, disabled && inputSpinnerButtonClasses.disabled, size === 'main' ? inputSpinnerButtonClasses.main : inputSpinnerButtonClasses.sub, className), title: type === 'up' ? 'Increase value' : 'Decrease value', ...rest, children: jsx(Icon, { icon: type === 'up' ? CaretUpFlatIcon : CaretDownFlatIcon }) }));
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
export { SpinnerButton as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './SpinnerButton.js';
|
package/Input/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export type { InputSize } from '@mezzanine-ui/core/input';
|
|
2
|
-
export { InputProps,
|
|
1
|
+
export type { InputSize, InputStrength } from '@mezzanine-ui/core/input';
|
|
2
|
+
export type { InputBaseProps, ClearableInput, NumberInput, BaseInputProps, WithAffixInputProps, SearchInputProps, NumberInputProps, UnitInputProps, ActionInputProps, SelectInputProps, WithPasswordStrengthIndicator, PasswordInputProps, InputProps, } from './Input';
|
|
3
|
+
export { default } from './Input';
|
package/Menu/Menu.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { jsx } from 'react/jsx-runtime';
|
|
2
3
|
import { forwardRef, useContext } from 'react';
|
|
3
4
|
import { toMenuCssVars, menuClasses } from '@mezzanine-ui/core/menu';
|
|
@@ -20,6 +21,5 @@ const Menu = forwardRef(function Menu(props, ref) {
|
|
|
20
21
|
};
|
|
21
22
|
return (jsx("ul", { ...rest, ref: ref, className: cx(menuClasses.host, menuClasses.size(size), className), role: role, style: style, children: children }));
|
|
22
23
|
});
|
|
23
|
-
var Menu$1 = Menu;
|
|
24
24
|
|
|
25
|
-
export { Menu
|
|
25
|
+
export { Menu as default };
|
package/Menu/MenuDivider.js
CHANGED
|
@@ -10,6 +10,5 @@ const MenuDivider = forwardRef(function MenuDivider(props, ref) {
|
|
|
10
10
|
const { className, ...rest } = props;
|
|
11
11
|
return jsx("hr", { ...rest, ref: ref, className: cx(menuDividerClasses.host, className) });
|
|
12
12
|
});
|
|
13
|
-
var MenuDivider$1 = MenuDivider;
|
|
14
13
|
|
|
15
|
-
export { MenuDivider
|
|
14
|
+
export { MenuDivider as default };
|
package/Menu/MenuItem.js
CHANGED
|
@@ -21,6 +21,5 @@ const MenuItem = forwardRef(function MenuItem(props, ref) {
|
|
|
21
21
|
}
|
|
22
22
|
}, onKeyDown: onKeyDown, role: role, children: [jsx("div", { className: menuItemClasses.label, children: children }), active && jsx(Icon, { className: menuItemClasses.activeIcon, icon: CheckIcon })] }));
|
|
23
23
|
});
|
|
24
|
-
var MenuItem$1 = MenuItem;
|
|
25
24
|
|
|
26
|
-
export { MenuItem
|
|
25
|
+
export { MenuItem as default };
|
package/Menu/MenuItemGroup.js
CHANGED
|
@@ -10,6 +10,5 @@ const MenuItemGroup = forwardRef(function MenuItemGroup(props, ref) {
|
|
|
10
10
|
const { children, className, label, ...rest } = props;
|
|
11
11
|
return (jsxs("li", { ref: ref, ...rest, className: cx(menuItemGroupClasses.host, className), children: [jsx("span", { className: menuItemGroupClasses.label, children: label }), jsx("ul", { className: menuItemGroupClasses.items, children: children })] }));
|
|
12
12
|
});
|
|
13
|
-
var MenuItemGroup$1 = MenuItemGroup;
|
|
14
13
|
|
|
15
|
-
export { MenuItemGroup
|
|
14
|
+
export { MenuItemGroup as default };
|
package/Menu/index.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export type { MenuSize } from '@mezzanine-ui/core/menu';
|
|
2
|
-
export { MenuProps
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
2
|
+
export type { MenuProps } from './Menu';
|
|
3
|
+
export { default } from './Menu';
|
|
4
|
+
export type { MenuDividerProps } from './MenuDivider';
|
|
5
|
+
export { default as MenuDivider } from './MenuDivider';
|
|
6
|
+
export type { MenuItemProps } from './MenuItem';
|
|
7
|
+
export { default as MenuItem } from './MenuItem';
|
|
8
|
+
export type { MenuItemGroupProps } from './MenuItemGroup';
|
|
9
|
+
export { default as MenuItemGroup } from './MenuItemGroup';
|
package/Message/Message.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { MessageSeverity } from '@mezzanine-ui/core/message';
|
|
2
2
|
import { IconDefinition } from '@mezzanine-ui/icons';
|
|
3
|
-
import { FC, Key } from 'react';
|
|
3
|
+
import type { FC, Key } from 'react';
|
|
4
4
|
import { Notifier, NotifierData, NotifierConfig } from '../Notifier';
|
|
5
|
-
import {
|
|
6
|
-
export interface MessageConfigProps extends Pick<NotifierConfig, 'duration'>, Pick<
|
|
5
|
+
import { TranslateProps } from '../Transition';
|
|
6
|
+
export interface MessageConfigProps extends Pick<NotifierConfig, 'duration'>, Pick<TranslateProps, 'onEnter' | 'onEntering' | 'onEntered' | 'onExit' | 'onExiting' | 'onExited' | 'easing' | 'from'> {
|
|
7
7
|
}
|
|
8
8
|
export interface MessageData extends Omit<NotifierData, 'onClose'>, MessageConfigProps {
|
|
9
9
|
/**
|
|
@@ -25,7 +25,9 @@ export interface MessageData extends Omit<NotifierData, 'onClose'>, MessageConfi
|
|
|
25
25
|
*/
|
|
26
26
|
severity?: MessageSeverity;
|
|
27
27
|
}
|
|
28
|
-
export type MessageType = FC<MessageData> & Notifier<MessageData, MessageConfigProps> & Record<string, (message: MessageData['children'], props?: Omit<MessageData, 'children' | 'severity' | 'icon'>
|
|
28
|
+
export type MessageType = FC<MessageData> & Notifier<MessageData, MessageConfigProps> & Record<string, (message: MessageData['children'], props?: Omit<MessageData, 'children' | 'severity' | 'icon'> & {
|
|
29
|
+
key?: Key;
|
|
30
|
+
}) => Key>;
|
|
29
31
|
/**
|
|
30
32
|
* The react component for `mezzanine` message.
|
|
31
33
|
*
|
package/Message/Message.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState, useRef, useCallback, useEffect, createElement } from 'react';
|
|
2
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
4
|
import { messageClasses, messageIcons } from '@mezzanine-ui/core/message';
|
|
4
|
-
import
|
|
5
|
+
import { messageTimerController } from './MessageTimerController.js';
|
|
6
|
+
import Translate from '../Transition/Translate.js';
|
|
5
7
|
import Icon from '../Icon/Icon.js';
|
|
6
8
|
import { createNotifier } from '../Notifier/createNotifier.js';
|
|
7
9
|
import cx from 'clsx';
|
|
@@ -15,16 +17,72 @@ import cx from 'clsx';
|
|
|
15
17
|
const Message = ((props) => {
|
|
16
18
|
const { children, duration, icon, reference, severity, onExited: onExitedProp, ...restTransitionProps } = props;
|
|
17
19
|
const [open, setOpen] = useState(true);
|
|
20
|
+
const timerRef = useRef(null);
|
|
21
|
+
const remainingTimeRef = useRef(duration || 0);
|
|
22
|
+
const startTimeRef = useRef(Date.now());
|
|
23
|
+
// 清理計時器
|
|
24
|
+
const clearTimer = useCallback(() => {
|
|
25
|
+
if (timerRef.current) {
|
|
26
|
+
window.clearTimeout(timerRef.current);
|
|
27
|
+
timerRef.current = null;
|
|
28
|
+
}
|
|
29
|
+
}, []);
|
|
30
|
+
// 開始計時器
|
|
31
|
+
const startTimer = useCallback((time) => {
|
|
32
|
+
clearTimer();
|
|
33
|
+
if (time > 0) {
|
|
34
|
+
startTimeRef.current = Date.now();
|
|
35
|
+
remainingTimeRef.current = time;
|
|
36
|
+
timerRef.current = window.setTimeout(() => {
|
|
37
|
+
setOpen(false);
|
|
38
|
+
}, time);
|
|
39
|
+
}
|
|
40
|
+
}, [clearTimer]);
|
|
41
|
+
// 暫停計時器
|
|
42
|
+
const pauseTimer = useCallback(() => {
|
|
43
|
+
if (timerRef.current) {
|
|
44
|
+
clearTimer();
|
|
45
|
+
const elapsed = Date.now() - startTimeRef.current;
|
|
46
|
+
remainingTimeRef.current = Math.max(0, remainingTimeRef.current - elapsed);
|
|
47
|
+
}
|
|
48
|
+
}, [clearTimer]);
|
|
49
|
+
// 恢復計時器
|
|
50
|
+
const resumeTimer = useCallback(() => {
|
|
51
|
+
if (remainingTimeRef.current > 0) {
|
|
52
|
+
startTimer(remainingTimeRef.current);
|
|
53
|
+
}
|
|
54
|
+
}, [startTimer]);
|
|
55
|
+
// 初始設定計時器
|
|
18
56
|
useEffect(() => {
|
|
19
57
|
if (open && duration) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
58
|
+
startTimer(duration);
|
|
59
|
+
}
|
|
60
|
+
else if (open && duration === false) {
|
|
61
|
+
// duration 為 false 時,清除計時器(不自動關閉)
|
|
62
|
+
clearTimer();
|
|
63
|
+
}
|
|
64
|
+
return () => {
|
|
65
|
+
clearTimer();
|
|
66
|
+
};
|
|
67
|
+
}, [open, duration, clearTimer, startTimer]);
|
|
68
|
+
// 註冊到全域控制器
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (reference && duration) {
|
|
71
|
+
messageTimerController.register(reference, {
|
|
72
|
+
pause: pauseTimer,
|
|
73
|
+
resume: resumeTimer,
|
|
74
|
+
});
|
|
23
75
|
return () => {
|
|
24
|
-
|
|
76
|
+
messageTimerController.unregister(reference);
|
|
25
77
|
};
|
|
26
78
|
}
|
|
27
|
-
}, [
|
|
79
|
+
}, [reference, duration, pauseTimer, resumeTimer]);
|
|
80
|
+
// 清理計時器(組件卸載時)
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
return () => {
|
|
83
|
+
clearTimer();
|
|
84
|
+
};
|
|
85
|
+
}, [clearTimer]);
|
|
28
86
|
const onExited = (node) => {
|
|
29
87
|
if (onExitedProp) {
|
|
30
88
|
onExitedProp(node);
|
|
@@ -32,11 +90,24 @@ const Message = ((props) => {
|
|
|
32
90
|
if (reference)
|
|
33
91
|
Message.remove(reference);
|
|
34
92
|
};
|
|
35
|
-
|
|
93
|
+
const handleMouseEnter = () => {
|
|
94
|
+
messageTimerController.pause();
|
|
95
|
+
};
|
|
96
|
+
const handleMouseLeave = () => {
|
|
97
|
+
messageTimerController.resume();
|
|
98
|
+
};
|
|
99
|
+
const handleFocus = () => {
|
|
100
|
+
messageTimerController.pause();
|
|
101
|
+
};
|
|
102
|
+
const handleBlur = () => {
|
|
103
|
+
messageTimerController.resume();
|
|
104
|
+
};
|
|
105
|
+
return (jsx(Translate, { in: open, appear: true, onExited: onExited, from: "bottom", ...restTransitionProps, children: jsxs("div", { className: cx(messageClasses.host, severity ? messageClasses.severity(severity) : ''), onBlur: handleBlur, onFocus: handleFocus, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, role: "status", children: [icon ? (jsx(Icon, { className: messageClasses.icon, icon: icon, spin: severity === 'loading' })) : null, jsx("span", { className: messageClasses.content, children: children })] }) }));
|
|
36
106
|
});
|
|
37
107
|
const { add, config, destroy, remove } = createNotifier({
|
|
38
108
|
duration: 3000,
|
|
39
|
-
|
|
109
|
+
maxCount: 4,
|
|
110
|
+
render: (message) => (createElement(Message, { ...message, reference: message.key, key: undefined })),
|
|
40
111
|
setRoot: (root) => {
|
|
41
112
|
root === null || root === void 0 ? void 0 : root.setAttribute('class', messageClasses.root);
|
|
42
113
|
},
|
|
@@ -62,12 +133,17 @@ const severities = [
|
|
|
62
133
|
key: 'info',
|
|
63
134
|
icon: messageIcons.info,
|
|
64
135
|
},
|
|
136
|
+
{
|
|
137
|
+
key: 'loading',
|
|
138
|
+
icon: messageIcons.loading,
|
|
139
|
+
},
|
|
65
140
|
];
|
|
66
141
|
const validSeverities = [
|
|
67
142
|
'success',
|
|
68
143
|
'warning',
|
|
69
144
|
'error',
|
|
70
145
|
'info',
|
|
146
|
+
'loading',
|
|
71
147
|
];
|
|
72
148
|
severities.forEach((severity) => {
|
|
73
149
|
Message[severity.key] = (message, props) => Message.add({
|
|
@@ -77,8 +153,8 @@ severities.forEach((severity) => {
|
|
|
77
153
|
? severity.key
|
|
78
154
|
: undefined,
|
|
79
155
|
icon: severity.icon,
|
|
156
|
+
duration: severity.key === 'loading' ? false : props === null || props === void 0 ? void 0 : props.duration,
|
|
80
157
|
});
|
|
81
158
|
});
|
|
82
|
-
var Message$1 = Message;
|
|
83
159
|
|
|
84
|
-
export { Message
|
|
160
|
+
export { Message as default };
|