@mezzanine-ui/react 0.16.0 → 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/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 +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 +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.js +2 -2
- 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 +36 -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 +52 -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 +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 +3 -4
- package/Pagination/PaginationItem.d.ts +1 -1
- package/Pagination/PaginationItem.js +6 -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 +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 +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 +1 -1
- package/Radio/Radio.js +2 -1
- package/Radio/RadioGroup.d.ts +1 -1
- package/Radio/RadioGroup.js +1 -1
- 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 +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/Table/Table.js +2 -2
- package/Table/TableBody.js +3 -2
- package/Table/TableBodyRow.js +1 -0
- package/Table/TableContext.js +1 -0
- package/Table/TableExpandedTable.js +1 -0
- package/Table/TableHeader.js +1 -0
- 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.js +1 -0
- package/Table/pagination/useTablePagination.js +1 -0
- package/Table/refresh/TableRefresh.js +3 -1
- 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 +4 -8
- package/Table/useTableScroll.js +9 -7
- package/Tabs/TabPane.js +1 -0
- package/Tabs/Tabs.js +9 -4
- package/Tabs/index.d.ts +6 -3
- package/Tabs/useTabsOverflow.js +4 -3
- 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/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 +2 -2
- package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +4 -27
- 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 +126 -58
- package/index.js +93 -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 +13 -17
- 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/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/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
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import { DateType } from '@mezzanine-ui/core/calendar';
|
|
2
2
|
import { DatePickerCalendarProps } from './DatePickerCalendar';
|
|
3
3
|
import { PickerTriggerProps } from '../Picker';
|
|
4
|
-
export interface DatePickerProps extends Omit<DatePickerCalendarProps, 'anchor' | 'calendarRef' | 'onChange' | 'open' | 'referenceDate' | 'updateReferenceDate'>, Omit<PickerTriggerProps, 'defaultValue' | 'inputRef' | 'onChange' | 'onClear' | 'onClick' | 'onIconClick' | 'onKeyDown' | '
|
|
4
|
+
export interface DatePickerProps extends Omit<DatePickerCalendarProps, 'anchor' | 'calendarRef' | 'disableOnDoubleNext' | 'disableOnDoublePrev' | 'onChange' | 'open' | 'referenceDate' | 'updateReferenceDate'>, Omit<PickerTriggerProps, 'defaultValue' | 'format' | 'inputRef' | 'onChange' | 'onClear' | 'onClick' | 'onIconClick' | 'onKeyDown' | 'value'> {
|
|
5
5
|
/**
|
|
6
6
|
* Default value for date picker.
|
|
7
7
|
*/
|
|
8
8
|
defaultValue?: DateType;
|
|
9
|
+
/**
|
|
10
|
+
* Disabled "double next" button on calendar controls
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
disableOnDoubleNext?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Disabled "double prev" button on calendar controls
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
disableOnDoublePrev?: boolean;
|
|
9
19
|
/**
|
|
10
20
|
* The format for displaying date.
|
|
21
|
+
* The length of the format must match the length of the actual generated value. For example, "gggg-wo" may cause a length mismatch when the week of year is a single digit. It is recommended to use the system's default format instead.
|
|
11
22
|
*/
|
|
12
23
|
format?: string;
|
|
13
24
|
/**
|
package/DatePicker/DatePicker.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { forwardRef,
|
|
3
|
+
import { forwardRef, useCallback, useState, useMemo, useRef, useEffect } from 'react';
|
|
3
4
|
import { getDefaultModeFormat } from '@mezzanine-ui/core/calendar';
|
|
4
5
|
import { CalendarIcon } from '@mezzanine-ui/icons';
|
|
5
6
|
import DatePickerCalendar from './DatePickerCalendar.js';
|
|
@@ -9,18 +10,46 @@ import { usePickerValue } from '../Picker/usePickerValue.js';
|
|
|
9
10
|
import { usePickerDocumentEventClose } from '../Picker/usePickerDocumentEventClose.js';
|
|
10
11
|
import Icon from '../Icon/Icon.js';
|
|
11
12
|
import PickerTrigger from '../Picker/PickerTrigger.js';
|
|
12
|
-
import { FormControlContext } from '../Form/FormControlContext.js';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* The react component for `mezzanine` date picker.
|
|
16
16
|
* Notice that any component related to date-picker should be used along with `CalendarContext`. <br />
|
|
17
17
|
*/
|
|
18
18
|
const DatePicker = forwardRef(function DatePicker(props, ref) {
|
|
19
|
-
const {
|
|
20
|
-
const {
|
|
21
|
-
const
|
|
19
|
+
const { getNow } = useCalendarContext();
|
|
20
|
+
const { calendarProps, className, clearable = true, defaultValue, disabledMonthSwitch = false, disableOnNext, disableOnPrev, disableOnDoubleNext, disableOnDoublePrev, disabledYearSwitch = false, disabled = false, displayMonthLocale, error = false, errorMessages, fadeProps, format: formatProp, fullWidth = false, inputProps, isDateDisabled, isMonthDisabled, isWeekDisabled, isYearDisabled, isQuarterDisabled, isHalfYearDisabled, mode = 'day', onCalendarToggle: onCalendarToggleProp, onChange: onChangeProp, placeholder, popperProps, prefix, readOnly, referenceDate: referenceDateProp, required = false, size, value: valueProp, ...restTriggerProps } = props;
|
|
21
|
+
const format = formatProp || getDefaultModeFormat(mode);
|
|
22
22
|
const { onBlur: onBlurProp, onKeyDown: onKeyDownProp, onFocus: onFocusProp, size: inputSize = format.length + 2, ...restInputProp } = inputProps || {};
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Validate date value against disabled constraints based on mode.
|
|
25
|
+
* Returns true if valid, false if the date is disabled.
|
|
26
|
+
*/
|
|
27
|
+
const validateDate = useCallback((isoDate) => {
|
|
28
|
+
switch (mode) {
|
|
29
|
+
case 'day':
|
|
30
|
+
return !(isDateDisabled === null || isDateDisabled === void 0 ? void 0 : isDateDisabled(isoDate));
|
|
31
|
+
case 'week':
|
|
32
|
+
return !(isWeekDisabled === null || isWeekDisabled === void 0 ? void 0 : isWeekDisabled(isoDate));
|
|
33
|
+
case 'month':
|
|
34
|
+
return !(isMonthDisabled === null || isMonthDisabled === void 0 ? void 0 : isMonthDisabled(isoDate));
|
|
35
|
+
case 'quarter':
|
|
36
|
+
return !(isQuarterDisabled === null || isQuarterDisabled === void 0 ? void 0 : isQuarterDisabled(isoDate));
|
|
37
|
+
case 'year':
|
|
38
|
+
return !(isYearDisabled === null || isYearDisabled === void 0 ? void 0 : isYearDisabled(isoDate));
|
|
39
|
+
case 'half-year':
|
|
40
|
+
return !(isHalfYearDisabled === null || isHalfYearDisabled === void 0 ? void 0 : isHalfYearDisabled(isoDate));
|
|
41
|
+
default:
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}, [
|
|
45
|
+
isDateDisabled,
|
|
46
|
+
isHalfYearDisabled,
|
|
47
|
+
isMonthDisabled,
|
|
48
|
+
isQuarterDisabled,
|
|
49
|
+
isWeekDisabled,
|
|
50
|
+
isYearDisabled,
|
|
51
|
+
mode,
|
|
52
|
+
]);
|
|
24
53
|
/** Calender display control */
|
|
25
54
|
const [open, setOpen] = useState(false);
|
|
26
55
|
const preventOpen = readOnly;
|
|
@@ -48,7 +77,6 @@ const DatePicker = forwardRef(function DatePicker(props, ref) {
|
|
|
48
77
|
const { inputValue, onBlur, onChange, onInputChange, onKeyDown, value: internalValue, } = usePickerValue({
|
|
49
78
|
defaultValue,
|
|
50
79
|
format,
|
|
51
|
-
formats,
|
|
52
80
|
inputRef,
|
|
53
81
|
value: valueProp,
|
|
54
82
|
});
|
|
@@ -123,8 +151,12 @@ const DatePicker = forwardRef(function DatePicker(props, ref) {
|
|
|
123
151
|
}
|
|
124
152
|
onCalendarToggle(!open);
|
|
125
153
|
};
|
|
126
|
-
const suffixActionIcon = jsx(Icon, { icon: CalendarIcon, onClick: onIconClick });
|
|
127
|
-
return (jsxs(Fragment, { children: [jsx(PickerTrigger, { ...restTriggerProps, ref: triggerComposedRef, className: className, clearable: clearable, disabled: disabled, error: error,
|
|
154
|
+
const suffixActionIcon = (jsx(Icon, { "aria-label": "Open calendar", icon: CalendarIcon, onClick: readOnly ? undefined : onIconClick }));
|
|
155
|
+
return (jsxs(Fragment, { children: [jsx(PickerTrigger, { ...restTriggerProps, ref: triggerComposedRef, className: className, clearable: clearable, disabled: disabled, error: error, errorMessages: errorMessages, format: format, fullWidth: fullWidth, inputProps: resolvedInputProps, inputRef: inputRef, onChange: (e) => {
|
|
156
|
+
onInputChange(e);
|
|
157
|
+
onCalendarChange(e.target.value);
|
|
158
|
+
onCalendarToggle(true);
|
|
159
|
+
}, onClear: onClear, onFocus: () => onCalendarToggle(true), placeholder: placeholder, prefix: prefix, readOnly: readOnly, required: required, size: size, suffix: suffixActionIcon, validate: validateDate, value: inputValue }), jsx(DatePickerCalendar, { ref: calendarRef, anchor: anchorRef, calendarProps: calendarProps, disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disableOnDoubleNext: disableOnDoubleNext, disableOnDoublePrev: disableOnDoublePrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, fadeProps: fadeProps, isDateDisabled: isDateDisabled, isMonthDisabled: isMonthDisabled, isWeekDisabled: isWeekDisabled, isQuarterDisabled: isQuarterDisabled, isYearDisabled: isYearDisabled, isHalfYearDisabled: isHalfYearDisabled, mode: mode, onChange: onCalendarChange, open: open, popperProps: popperProps, referenceDate: referenceDate, value: internalValue })] }));
|
|
128
160
|
});
|
|
129
161
|
|
|
130
162
|
export { DatePicker as default };
|
|
@@ -2,11 +2,11 @@ import { CalendarMode, DateType } from '@mezzanine-ui/core/calendar';
|
|
|
2
2
|
import { RefObject } from 'react';
|
|
3
3
|
import { CalendarProps } from '../Calendar';
|
|
4
4
|
import { InputTriggerPopperProps } from '../_internal/InputTriggerPopper';
|
|
5
|
-
export interface DatePickerCalendarProps extends Pick<InputTriggerPopperProps, 'anchor' | 'fadeProps' | 'open'>, Pick<CalendarProps, 'disabledMonthSwitch' | 'disableOnNext' | 'disableOnPrev' | 'disabledYearSwitch' | 'displayMonthLocale' | 'isDateDisabled' | 'isMonthDisabled' | 'isWeekDisabled' | 'isYearDisabled' | 'onChange' | 'referenceDate'> {
|
|
5
|
+
export interface DatePickerCalendarProps extends Pick<InputTriggerPopperProps, 'anchor' | 'fadeProps' | 'open'>, Pick<CalendarProps, 'disabledMonthSwitch' | 'disableOnNext' | 'disableOnPrev' | 'disableOnDoubleNext' | 'disableOnDoublePrev' | 'disabledYearSwitch' | 'displayMonthLocale' | 'isDateDisabled' | 'isMonthDisabled' | 'isQuarterDisabled' | 'isHalfYearDisabled' | 'isWeekDisabled' | 'isYearDisabled' | 'onChange' | 'referenceDate'> {
|
|
6
6
|
/**
|
|
7
7
|
* Other calendar props you may provide to `Calendar`.
|
|
8
8
|
*/
|
|
9
|
-
calendarProps?: Omit<CalendarProps, 'disableOnNext' | 'disableOnPrev' | 'displayMonthLocale' | 'isDateDisabled' | 'isMonthDisabled' | 'isWeekDisabled' | 'isYearDisabled' | 'locale' | 'mode' | 'onChange' | 'onMonthControlClick' | 'onNext' | 'onPrev' | 'onYearControlClick' | 'referenceDate' | 'updateReferenceDate' | 'value'>;
|
|
9
|
+
calendarProps?: Omit<CalendarProps, 'disableOnNext' | 'disableOnPrev' | 'disableOnDoubleNext' | 'disableOnDoublePrev' | 'displayMonthLocale' | 'isDateDisabled' | 'isMonthDisabled' | 'isQuarterDisabled' | 'isHalfYearDisabled' | 'isWeekDisabled' | 'isYearDisabled' | 'locale' | 'mode' | 'onChange' | 'onMonthControlClick' | 'onNext' | 'onDoubleNext' | 'onPrev' | 'onDoublePrev' | 'onYearControlClick' | 'referenceDate' | 'updateReferenceDate' | 'value'>;
|
|
10
10
|
/**
|
|
11
11
|
* React ref for calendar component.
|
|
12
12
|
*/
|
|
@@ -25,8 +25,5 @@ export interface DatePickerCalendarProps extends Pick<InputTriggerPopperProps, '
|
|
|
25
25
|
*/
|
|
26
26
|
value?: DateType;
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
29
|
-
* The react component for `mezzanine` date picker calendar.
|
|
30
|
-
*/
|
|
31
28
|
declare const DatePickerCalendar: import("react").ForwardRefExoticComponent<DatePickerCalendarProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
32
29
|
export default DatePickerCalendar;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { jsx } from 'react/jsx-runtime';
|
|
2
3
|
import { forwardRef, useMemo } from 'react';
|
|
3
4
|
import { useCalendarContext } from '../Calendar/CalendarContext.js';
|
|
@@ -5,61 +6,60 @@ import { useCalendarControls } from '../Calendar/useCalendarControls.js';
|
|
|
5
6
|
import InputTriggerPopper from '../_internal/InputTriggerPopper/InputTriggerPopper.js';
|
|
6
7
|
import Calendar from '../Calendar/Calendar.js';
|
|
7
8
|
|
|
8
|
-
/**
|
|
9
|
-
* The react component for `mezzanine` date picker calendar.
|
|
10
|
-
*/
|
|
11
9
|
const DatePickerCalendar = forwardRef(function DatePickerCalendar(props, ref) {
|
|
12
|
-
const {
|
|
13
|
-
const { anchor, calendarProps, calendarRef, disabledMonthSwitch, disableOnNext, disableOnPrev, disabledYearSwitch, displayMonthLocale =
|
|
10
|
+
const { locale, getMonth, getYear, setMonth, setYear } = useCalendarContext();
|
|
11
|
+
const { anchor, calendarProps, calendarRef, disabledMonthSwitch, disableOnNext, disableOnPrev, disableOnDoubleNext, disableOnDoublePrev, disabledYearSwitch, displayMonthLocale = locale, fadeProps, isDateDisabled, isMonthDisabled, isQuarterDisabled, isHalfYearDisabled, isWeekDisabled, isYearDisabled, mode = 'day', onChange: onChangeProp, open, popperProps, referenceDate: referenceDateProp, value, } = props;
|
|
14
12
|
const { className: calendarClassName, ...restCalendarProps } = calendarProps || {};
|
|
15
|
-
const { currentMode, onMonthControlClick, onNext, onPrev, onYearControlClick, popModeStack, referenceDate, updateReferenceDate, } = useCalendarControls(referenceDateProp, mode);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
updateReferenceDate(target);
|
|
20
|
-
popModeStack();
|
|
21
|
-
if (onChangeProp) {
|
|
22
|
-
onChangeProp(target);
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
if (currentMode === 'month') {
|
|
27
|
-
return (target) => {
|
|
28
|
-
const result = currentMode === mode
|
|
29
|
-
? target
|
|
30
|
-
: setMonth(referenceDate, getMonth(target));
|
|
31
|
-
updateReferenceDate(result);
|
|
32
|
-
popModeStack();
|
|
33
|
-
if (currentMode === mode && onChangeProp) {
|
|
34
|
-
onChangeProp(result);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
if (currentMode === 'year') {
|
|
13
|
+
const { currentMode, onMonthControlClick, onNext, onPrev, onDoublePrev, onDoubleNext, onYearControlClick, popModeStack, referenceDate, updateReferenceDate, } = useCalendarControls(referenceDateProp, mode);
|
|
14
|
+
// Helper to handle mode switching with optional value transformation
|
|
15
|
+
const createModeChangeHandler = useMemo(() => {
|
|
16
|
+
return (transformValue) => {
|
|
39
17
|
return (target) => {
|
|
40
|
-
const result =
|
|
41
|
-
? target
|
|
42
|
-
:
|
|
18
|
+
const result = transformValue
|
|
19
|
+
? transformValue(target, referenceDate)
|
|
20
|
+
: target;
|
|
43
21
|
updateReferenceDate(result);
|
|
44
22
|
popModeStack();
|
|
45
23
|
if (currentMode === mode && onChangeProp) {
|
|
46
24
|
onChangeProp(result);
|
|
47
25
|
}
|
|
48
26
|
};
|
|
49
|
-
}
|
|
27
|
+
};
|
|
50
28
|
}, [
|
|
51
29
|
currentMode,
|
|
30
|
+
mode,
|
|
52
31
|
referenceDate,
|
|
53
32
|
updateReferenceDate,
|
|
54
33
|
popModeStack,
|
|
55
|
-
mode,
|
|
56
34
|
onChangeProp,
|
|
57
|
-
|
|
35
|
+
]);
|
|
36
|
+
const onChange = useMemo(() => {
|
|
37
|
+
switch (currentMode) {
|
|
38
|
+
case 'day':
|
|
39
|
+
case 'week':
|
|
40
|
+
return createModeChangeHandler();
|
|
41
|
+
case 'month':
|
|
42
|
+
return createModeChangeHandler((target, reference) => currentMode === mode
|
|
43
|
+
? target
|
|
44
|
+
: setMonth(reference, getMonth(target)));
|
|
45
|
+
case 'year':
|
|
46
|
+
return createModeChangeHandler((target, reference) => currentMode === mode ? target : setYear(reference, getYear(target)));
|
|
47
|
+
case 'quarter':
|
|
48
|
+
case 'half-year':
|
|
49
|
+
return createModeChangeHandler();
|
|
50
|
+
default:
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}, [
|
|
54
|
+
currentMode,
|
|
55
|
+
mode,
|
|
56
|
+
createModeChangeHandler,
|
|
58
57
|
getMonth,
|
|
59
|
-
|
|
58
|
+
setMonth,
|
|
60
59
|
getYear,
|
|
60
|
+
setYear,
|
|
61
61
|
]);
|
|
62
|
-
return (jsx(InputTriggerPopper, { ...popperProps, ref: ref, anchor: anchor, open: open, fadeProps: fadeProps, children: jsx(Calendar, { ...restCalendarProps, ref: calendarRef, className: calendarClassName, disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, isDateDisabled: isDateDisabled, isMonthDisabled: isMonthDisabled, isWeekDisabled: isWeekDisabled, isYearDisabled: isYearDisabled, mode: currentMode, onChange: onChange, onMonthControlClick: onMonthControlClick, onNext: onNext, onPrev: onPrev, onYearControlClick: onYearControlClick, referenceDate: referenceDate, value: value }) }));
|
|
62
|
+
return (jsx(InputTriggerPopper, { ...popperProps, ref: ref, anchor: anchor, open: open, fadeProps: fadeProps, children: jsx(Calendar, { ...restCalendarProps, ref: calendarRef, className: calendarClassName, disabledMonthSwitch: disabledMonthSwitch, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, disableOnDoubleNext: disableOnDoubleNext, disableOnDoublePrev: disableOnDoublePrev, disabledYearSwitch: disabledYearSwitch, displayMonthLocale: displayMonthLocale, isDateDisabled: isDateDisabled, isMonthDisabled: isMonthDisabled, isQuarterDisabled: isQuarterDisabled, isHalfYearDisabled: isHalfYearDisabled, isWeekDisabled: isWeekDisabled, isYearDisabled: isYearDisabled, mode: currentMode, onChange: onChange, onMonthControlClick: onMonthControlClick, onNext: onNext, onDoubleNext: onDoubleNext, onPrev: onPrev, onDoublePrev: onDoublePrev, onYearControlClick: onYearControlClick, referenceDate: referenceDate, value: value }) }));
|
|
63
63
|
});
|
|
64
64
|
|
|
65
65
|
export { DatePickerCalendar as default };
|
package/DatePicker/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { default as DatePickerCalendar } from './DatePickerCalendar';
|
|
2
|
+
export type { DatePickerCalendarProps } from './DatePickerCalendar';
|
|
3
|
+
export type { DatePickerProps } from './DatePicker';
|
|
4
|
+
export { default } from './DatePicker';
|
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import { DateType } from '@mezzanine-ui/core/calendar';
|
|
2
2
|
import { RangePickerValue } from '@mezzanine-ui/core/picker';
|
|
3
|
+
import { CalendarFooterActionsProps } from '../Calendar/CalendarFooterActions';
|
|
3
4
|
import { DateRangePickerCalendarProps } from './DateRangePickerCalendar';
|
|
4
5
|
import { RangePickerTriggerProps } from '../Picker';
|
|
5
|
-
export interface DateRangePickerProps extends Pick<DateRangePickerCalendarProps, 'calendarProps' | 'disabledMonthSwitch' | 'disableOnNext' | 'disableOnPrev' | 'disabledYearSwitch' | 'displayMonthLocale' | '
|
|
6
|
+
export interface DateRangePickerProps extends Pick<DateRangePickerCalendarProps, 'calendarProps' | 'disabledMonthSwitch' | 'disableOnNext' | 'disableOnPrev' | 'disableOnDoubleNext' | 'disableOnDoublePrev' | 'disabledYearSwitch' | 'displayMonthLocale' | 'displayWeekDayLocale' | 'fadeProps' | 'firstCalendarRef' | 'isDateDisabled' | 'isWeekDisabled' | 'isMonthDisabled' | 'isYearDisabled' | 'isQuarterDisabled' | 'isHalfYearDisabled' | 'mode' | 'popperProps' | 'quickSelect' | 'renderAnnotations' | 'secondCalendarRef'>, Pick<RangePickerTriggerProps, 'className' | 'clearable' | 'disabled' | 'error' | 'errorMessagesFrom' | 'errorMessagesTo' | 'fullWidth' | 'inputFromPlaceholder' | 'inputFromProps' | 'inputToPlaceholder' | 'inputToProps' | 'prefix' | 'readOnly' | 'required' | 'size' | 'validateFrom' | 'validateTo'> {
|
|
7
|
+
/**
|
|
8
|
+
* Footer action buttons props.
|
|
9
|
+
* When provided, the calendar will NOT auto-close after range selection.
|
|
10
|
+
* This allows users to interact with the action buttons before confirming.
|
|
11
|
+
*/
|
|
12
|
+
actions?: CalendarFooterActionsProps['actions'];
|
|
13
|
+
/**
|
|
14
|
+
* The confirm mode for date range selection.
|
|
15
|
+
* - `'immediate'` (default): onChange is triggered immediately after selecting both dates,
|
|
16
|
+
* and calendar auto-closes (unless actions prop is provided).
|
|
17
|
+
* - `'manual'`: onChange is triggered only when user clicks the confirm button.
|
|
18
|
+
* Default actions (Confirm/Cancel) will be auto-generated if not provided.
|
|
19
|
+
* @default 'immediate'
|
|
20
|
+
*/
|
|
21
|
+
confirmMode?: 'immediate' | 'manual';
|
|
6
22
|
/**
|
|
7
23
|
* Default value for date range picker.
|
|
8
24
|
*/
|
|
@@ -31,7 +47,7 @@ export interface DateRangePickerProps extends Pick<DateRangePickerCalendarProps,
|
|
|
31
47
|
}
|
|
32
48
|
/**
|
|
33
49
|
* The react component for `mezzanine` date range picker.
|
|
34
|
-
* Notice that any component related to date-range-picker should be used along with `CalendarContext`.
|
|
50
|
+
* Notice that any component related to date-range-picker should be used along with `CalendarContext`.
|
|
35
51
|
*/
|
|
36
52
|
declare const DateRangePicker: import("react").ForwardRefExoticComponent<DateRangePickerProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
37
53
|
export default DateRangePicker;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { forwardRef,
|
|
3
|
+
import { forwardRef, useCallback, useState, useRef, useEffect, useMemo } from 'react';
|
|
3
4
|
import { getDefaultModeFormat } from '@mezzanine-ui/core/calendar';
|
|
4
5
|
import { CalendarIcon } from '@mezzanine-ui/icons';
|
|
5
6
|
import DateRangePickerCalendar from './DateRangePickerCalendar.js';
|
|
@@ -9,23 +10,68 @@ import { useCalendarContext } from '../Calendar/CalendarContext.js';
|
|
|
9
10
|
import { usePickerDocumentEventClose } from '../Picker/usePickerDocumentEventClose.js';
|
|
10
11
|
import Icon from '../Icon/Icon.js';
|
|
11
12
|
import RangePickerTrigger from '../Picker/RangePickerTrigger.js';
|
|
12
|
-
import { FormControlContext } from '../Form/FormControlContext.js';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* The react component for `mezzanine` date range picker.
|
|
16
|
-
* Notice that any component related to date-range-picker should be used along with `CalendarContext`.
|
|
16
|
+
* Notice that any component related to date-range-picker should be used along with `CalendarContext`.
|
|
17
17
|
*/
|
|
18
18
|
const DateRangePicker = forwardRef(function DateRangePicker(props, ref) {
|
|
19
|
-
const {
|
|
20
|
-
const {
|
|
21
|
-
const
|
|
22
|
-
const { onBlur: onFromBlurProp, onKeyDown: onFromKeyDownProp, onFocus: onFromFocusProp, ...restInputFromProps } = inputFromProps || {};
|
|
23
|
-
const { onBlur: onToBlurProp, onKeyDown: onToKeyDownProp, onFocus: onToFocusProp, ...restInputToProps } = inputToProps || {};
|
|
24
|
-
const formats = useMemo(() => [format, defaultDateFormat, getDefaultModeFormat(mode)], [defaultDateFormat, format, mode]);
|
|
19
|
+
const { addDay, getNow, isBefore, isBetween } = useCalendarContext();
|
|
20
|
+
const { actions: actionsProp, calendarProps, className, clearable = true, confirmMode = 'immediate', defaultValue, disabledMonthSwitch = false, disableOnDoubleNext, disableOnDoublePrev, disableOnNext, disableOnPrev, disabled = false, disabledYearSwitch = false, displayMonthLocale, displayWeekDayLocale, error = false, errorMessagesFrom, errorMessagesTo, fadeProps, firstCalendarRef, format: formatProp, fullWidth = false, inputFromPlaceholder, inputFromProps, inputToPlaceholder, inputToProps, isDateDisabled, isHalfYearDisabled, isMonthDisabled, isQuarterDisabled, isWeekDisabled, isYearDisabled, mode = 'day', onCalendarToggle: onCalendarToggleProp, onChange: onChangeProp, popperProps, prefix, quickSelect, readOnly, referenceDate: referenceDateProp, renderAnnotations, required = false, secondCalendarRef, size, validateFrom, validateTo, value: valueProp, } = props;
|
|
21
|
+
const format = formatProp || getDefaultModeFormat(mode);
|
|
25
22
|
function isBetweenRange(valueToCheck, t1, t2, granularity) {
|
|
26
23
|
return (isBetween(valueToCheck, t1, t2, granularity) ||
|
|
27
24
|
isBetween(valueToCheck, t2, t1, granularity));
|
|
28
25
|
}
|
|
26
|
+
/** Check if there are disabled dates in the range */
|
|
27
|
+
const hasDisabledDateInRange = useCallback((start, end) => {
|
|
28
|
+
var _a, _b, _c, _d, _e, _f;
|
|
29
|
+
const [rangeStart, rangeEnd] = isBefore(start, end)
|
|
30
|
+
? [start, end]
|
|
31
|
+
: [end, start];
|
|
32
|
+
let current = rangeStart;
|
|
33
|
+
while (isBefore(current, rangeEnd) || current === rangeEnd) {
|
|
34
|
+
let isDisabled = false;
|
|
35
|
+
switch (mode) {
|
|
36
|
+
case 'day':
|
|
37
|
+
isDisabled = (_a = isDateDisabled === null || isDateDisabled === void 0 ? void 0 : isDateDisabled(current)) !== null && _a !== void 0 ? _a : false;
|
|
38
|
+
break;
|
|
39
|
+
case 'week':
|
|
40
|
+
isDisabled = (_b = isWeekDisabled === null || isWeekDisabled === void 0 ? void 0 : isWeekDisabled(current)) !== null && _b !== void 0 ? _b : false;
|
|
41
|
+
break;
|
|
42
|
+
case 'month':
|
|
43
|
+
isDisabled = (_c = isMonthDisabled === null || isMonthDisabled === void 0 ? void 0 : isMonthDisabled(current)) !== null && _c !== void 0 ? _c : false;
|
|
44
|
+
break;
|
|
45
|
+
case 'year':
|
|
46
|
+
isDisabled = (_d = isYearDisabled === null || isYearDisabled === void 0 ? void 0 : isYearDisabled(current)) !== null && _d !== void 0 ? _d : false;
|
|
47
|
+
break;
|
|
48
|
+
case 'quarter':
|
|
49
|
+
isDisabled = (_e = isQuarterDisabled === null || isQuarterDisabled === void 0 ? void 0 : isQuarterDisabled(current)) !== null && _e !== void 0 ? _e : false;
|
|
50
|
+
break;
|
|
51
|
+
case 'half-year':
|
|
52
|
+
isDisabled = (_f = isHalfYearDisabled === null || isHalfYearDisabled === void 0 ? void 0 : isHalfYearDisabled(current)) !== null && _f !== void 0 ? _f : false;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
if (isDisabled) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
current = addDay(current, 1);
|
|
59
|
+
if (isBefore(rangeEnd, current)) {
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
}, [
|
|
65
|
+
addDay,
|
|
66
|
+
isBefore,
|
|
67
|
+
mode,
|
|
68
|
+
isDateDisabled,
|
|
69
|
+
isWeekDisabled,
|
|
70
|
+
isMonthDisabled,
|
|
71
|
+
isYearDisabled,
|
|
72
|
+
isQuarterDisabled,
|
|
73
|
+
isHalfYearDisabled,
|
|
74
|
+
]);
|
|
29
75
|
/** Using internal reference date */
|
|
30
76
|
const [referenceDate, updateReferenceDate] = useState(referenceDateProp || (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue[0]) || getNow());
|
|
31
77
|
/** Calendar panel toggle */
|
|
@@ -34,35 +80,24 @@ const DateRangePicker = forwardRef(function DateRangePicker(props, ref) {
|
|
|
34
80
|
const onCalendarToggle = useCallback((currentOpen) => {
|
|
35
81
|
if (!preventOpen) {
|
|
36
82
|
setOpen(currentOpen);
|
|
37
|
-
|
|
38
|
-
onCalendarToggleProp(currentOpen);
|
|
39
|
-
}
|
|
83
|
+
onCalendarToggleProp === null || onCalendarToggleProp === void 0 ? void 0 : onCalendarToggleProp(currentOpen);
|
|
40
84
|
}
|
|
41
85
|
}, [onCalendarToggleProp, preventOpen]);
|
|
42
|
-
const onFromFocus = useCallback((event) => {
|
|
43
|
-
if (onFromFocusProp) {
|
|
44
|
-
onFromFocusProp(event);
|
|
45
|
-
}
|
|
46
|
-
onCalendarToggle(true);
|
|
47
|
-
}, [onCalendarToggle, onFromFocusProp]);
|
|
48
|
-
const onToFocus = useCallback((event) => {
|
|
49
|
-
if (onToFocusProp) {
|
|
50
|
-
onToFocusProp(event);
|
|
51
|
-
}
|
|
52
|
-
onCalendarToggle(true);
|
|
53
|
-
}, [onCalendarToggle, onToFocusProp]);
|
|
54
86
|
/** Values and onChange */
|
|
55
87
|
const inputToRef = useRef(null);
|
|
56
88
|
const inputFromRef = useRef(null);
|
|
57
|
-
|
|
89
|
+
// In manual mode, don't pass onChange to hook - we'll handle it via confirm button
|
|
90
|
+
const shouldTriggerOnChangeImmediately = confirmMode === 'immediate' && !actionsProp;
|
|
91
|
+
const { calendarValue, checkIsInRange, inputFromValue, inputToValue, onCalendarChange, onCalendarHover, onChange, onClear, onFromBlur, onFromFocus, onInputFromChange, onInputToChange, onToBlur, onToFocus, value: internalValue, } = useDateRangePickerValue({
|
|
58
92
|
format,
|
|
59
|
-
|
|
60
|
-
value: valueProp,
|
|
93
|
+
hasDisabledDateInRange,
|
|
61
94
|
inputFromRef,
|
|
62
95
|
inputToRef,
|
|
63
96
|
mode,
|
|
64
|
-
onChange: onChangeProp,
|
|
97
|
+
onChange: shouldTriggerOnChangeImmediately ? onChangeProp : undefined,
|
|
98
|
+
value: valueProp,
|
|
65
99
|
});
|
|
100
|
+
// Update reference date when internal value changes
|
|
66
101
|
useEffect(() => {
|
|
67
102
|
const [from, to] = internalValue;
|
|
68
103
|
if (from) {
|
|
@@ -75,112 +110,120 @@ const DateRangePicker = forwardRef(function DateRangePicker(props, ref) {
|
|
|
75
110
|
/** Bind calendar open control to handlers */
|
|
76
111
|
const onCalendarChangeWithCloseControl = useCallback((val) => {
|
|
77
112
|
onCalendarChange(val);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (
|
|
113
|
+
// Close panel when range is complete (only if auto-close is enabled)
|
|
114
|
+
// Auto-close is disabled when actions are provided or in manual mode
|
|
115
|
+
if (val[0] && val[1] && shouldTriggerOnChangeImmediately) {
|
|
81
116
|
onCalendarToggle(false);
|
|
82
117
|
}
|
|
83
|
-
}, [
|
|
84
|
-
|
|
85
|
-
|
|
118
|
+
}, [onCalendarChange, onCalendarToggle, shouldTriggerOnChangeImmediately]);
|
|
119
|
+
/** Handle confirm action (for manual mode) */
|
|
120
|
+
const onConfirm = useCallback(() => {
|
|
86
121
|
const [from, to] = internalValue;
|
|
87
|
-
if (
|
|
88
|
-
|
|
122
|
+
if (from && to) {
|
|
123
|
+
onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([from, to]);
|
|
124
|
+
// Sync internal state and reset isSelecting
|
|
125
|
+
onChange([from, to]);
|
|
89
126
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
127
|
+
onCalendarToggle(false);
|
|
128
|
+
}, [internalValue, onChange, onChangeProp, onCalendarToggle]);
|
|
129
|
+
/** Handle cancel action (for manual mode) */
|
|
130
|
+
const onCancel = useCallback(() => {
|
|
131
|
+
onChange(valueProp);
|
|
132
|
+
onCalendarToggle(false);
|
|
133
|
+
}, [onChange, onCalendarToggle, valueProp]);
|
|
134
|
+
/** Auto-generated actions for manual mode */
|
|
135
|
+
const actions = useMemo(() => {
|
|
136
|
+
// In manual mode, auto-generate actions
|
|
137
|
+
if (confirmMode === 'manual') {
|
|
138
|
+
const [from, to] = internalValue;
|
|
139
|
+
const isRangeComplete = Boolean(from && to);
|
|
140
|
+
return {
|
|
141
|
+
primaryButtonProps: {
|
|
142
|
+
children: 'Confirm',
|
|
143
|
+
disabled: !isRangeComplete,
|
|
144
|
+
onClick: onConfirm,
|
|
145
|
+
...actionsProp === null || actionsProp === void 0 ? void 0 : actionsProp.primaryButtonProps,
|
|
146
|
+
},
|
|
147
|
+
secondaryButtonProps: {
|
|
148
|
+
children: 'Cancel',
|
|
149
|
+
onClick: onCancel,
|
|
150
|
+
...actionsProp === null || actionsProp === void 0 ? void 0 : actionsProp.secondaryButtonProps,
|
|
151
|
+
},
|
|
152
|
+
};
|
|
96
153
|
}
|
|
97
|
-
|
|
154
|
+
if (actionsProp) {
|
|
155
|
+
return actionsProp;
|
|
156
|
+
}
|
|
157
|
+
return undefined;
|
|
158
|
+
}, [actionsProp, confirmMode, internalValue, onConfirm, onCancel]);
|
|
98
159
|
/** Calendar cell in range checker */
|
|
99
160
|
const getIsInRangeHandler = (granularity) => {
|
|
100
161
|
const [anchor1, anchor2] = calendarValue || [];
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
162
|
+
// If no range or disabled dates exist in range, return undefined
|
|
163
|
+
if (!anchor1 || !anchor2 || !checkIsInRange(anchor2)) {
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
return (date) => isBetweenRange(date, anchor1, anchor2, granularity);
|
|
104
167
|
};
|
|
105
168
|
/** Popper settings */
|
|
106
169
|
const anchorRef = useRef(null);
|
|
107
170
|
const calendarRef = useRef(null);
|
|
108
171
|
const triggerComposedRef = useComposeRefs([anchorRef, ref]);
|
|
109
|
-
/**
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
onToBlurProp(event);
|
|
119
|
-
}
|
|
120
|
-
onToBlur(event);
|
|
121
|
-
}, [onToBlur, onToBlurProp]);
|
|
122
|
-
const onResolvedFromKeyDown = useCallback((event) => {
|
|
123
|
-
if (onFromKeyDownProp) {
|
|
124
|
-
onFromKeyDownProp(event);
|
|
125
|
-
}
|
|
126
|
-
onFromKeyDownWithCloseControl(event);
|
|
127
|
-
}, [onFromKeyDownProp, onFromKeyDownWithCloseControl]);
|
|
128
|
-
const onResolvedToKeyDown = useCallback((event) => {
|
|
129
|
-
if (onToKeyDownProp) {
|
|
130
|
-
onToKeyDownProp(event);
|
|
131
|
-
}
|
|
132
|
-
onToKeyDownWithCloseControl(event);
|
|
133
|
-
}, [onToKeyDownProp, onToKeyDownWithCloseControl]);
|
|
134
|
-
const resolvedInputFromProps = {
|
|
135
|
-
...restInputFromProps,
|
|
136
|
-
onFocus: onFromFocus,
|
|
137
|
-
onKeyDown: onResolvedFromKeyDown,
|
|
138
|
-
onBlur: onResolvedFromBlur,
|
|
139
|
-
size: format.length + 2,
|
|
140
|
-
};
|
|
141
|
-
const resolvedInputToProps = {
|
|
142
|
-
...restInputToProps,
|
|
143
|
-
onFocus: onToFocus,
|
|
144
|
-
onKeyDown: onResolvedToKeyDown,
|
|
145
|
-
onBlur: onResolvedToBlur,
|
|
146
|
-
size: format.length + 2,
|
|
147
|
-
};
|
|
172
|
+
/** Input focus handlers */
|
|
173
|
+
const onFromFocusHandler = useCallback((_event) => {
|
|
174
|
+
onFromFocus();
|
|
175
|
+
onCalendarToggle(true);
|
|
176
|
+
}, [onCalendarToggle, onFromFocus]);
|
|
177
|
+
const onToFocusHandler = useCallback((_event) => {
|
|
178
|
+
onToFocus();
|
|
179
|
+
onCalendarToggle(true);
|
|
180
|
+
}, [onCalendarToggle, onToFocus]);
|
|
148
181
|
/** Blur, click away and key down close */
|
|
149
|
-
const onClose = () => {
|
|
182
|
+
const onClose = useCallback(() => {
|
|
150
183
|
onChange(valueProp);
|
|
151
184
|
onCalendarToggle(false);
|
|
152
|
-
};
|
|
153
|
-
const onChangeClose = () => {
|
|
185
|
+
}, [onChange, onCalendarToggle, valueProp]);
|
|
186
|
+
const onChangeClose = useCallback(() => {
|
|
187
|
+
// In manual mode, always restore to valueProp (don't auto-submit on click-away)
|
|
188
|
+
if (confirmMode === 'manual') {
|
|
189
|
+
onChange(valueProp);
|
|
190
|
+
onCalendarToggle(false);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
154
193
|
const [from, to] = internalValue;
|
|
155
194
|
if (from && to) {
|
|
156
|
-
|
|
157
|
-
if (onChangeProp) {
|
|
158
|
-
onChangeProp(newValue);
|
|
159
|
-
}
|
|
195
|
+
onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp([from, to]);
|
|
160
196
|
}
|
|
161
197
|
else {
|
|
162
198
|
onChange(valueProp);
|
|
163
199
|
}
|
|
164
200
|
onCalendarToggle(false);
|
|
165
|
-
}
|
|
201
|
+
}, [
|
|
202
|
+
confirmMode,
|
|
203
|
+
internalValue,
|
|
204
|
+
onChange,
|
|
205
|
+
onCalendarToggle,
|
|
206
|
+
onChangeProp,
|
|
207
|
+
valueProp,
|
|
208
|
+
]);
|
|
166
209
|
usePickerDocumentEventClose({
|
|
167
|
-
open,
|
|
168
210
|
anchorRef,
|
|
169
|
-
popperRef: calendarRef,
|
|
170
211
|
lastElementRefInFlow: inputToRef,
|
|
171
|
-
onClose,
|
|
172
212
|
onChangeClose,
|
|
213
|
+
onClose,
|
|
214
|
+
open,
|
|
215
|
+
popperRef: calendarRef,
|
|
173
216
|
});
|
|
174
|
-
/** Icon */
|
|
175
|
-
const onIconClick = (e) => {
|
|
217
|
+
/** Icon click handler */
|
|
218
|
+
const onIconClick = useCallback((e) => {
|
|
176
219
|
e.stopPropagation();
|
|
177
220
|
if (open) {
|
|
178
221
|
onChange(valueProp);
|
|
179
222
|
}
|
|
180
223
|
onCalendarToggle(!open);
|
|
181
|
-
};
|
|
224
|
+
}, [onChange, onCalendarToggle, open, valueProp]);
|
|
182
225
|
const suffixActionIcon = jsx(Icon, { icon: CalendarIcon, onClick: onIconClick });
|
|
183
|
-
return (jsxs(Fragment, { children: [jsx(RangePickerTrigger, {
|
|
226
|
+
return (jsxs(Fragment, { children: [jsx(RangePickerTrigger, { className: className, clearable: clearable, disabled: disabled, error: error, errorMessagesFrom: errorMessagesFrom, errorMessagesTo: errorMessagesTo, format: format, fullWidth: fullWidth, inputFromPlaceholder: inputFromPlaceholder, inputFromProps: inputFromProps, inputFromRef: inputFromRef, inputFromValue: inputFromValue, inputToPlaceholder: inputToPlaceholder, inputToProps: inputToProps, inputToRef: inputToRef, inputToValue: inputToValue, onClear: onClear, onFromBlur: onFromBlur, onFromFocus: onFromFocusHandler, onInputFromChange: onInputFromChange, onInputToChange: onInputToChange, onToBlur: onToBlur, onToFocus: onToFocusHandler, prefix: prefix, readOnly: readOnly, ref: triggerComposedRef, required: required, size: size, suffixActionIcon: suffixActionIcon, validateFrom: validateFrom, validateTo: validateTo }), jsx(DateRangePickerCalendar, { actions: actions, anchor: anchorRef, calendarProps: calendarProps, disabledMonthSwitch: disabledMonthSwitch, disabledYearSwitch: disabledYearSwitch, disableOnDoubleNext: disableOnDoubleNext, disableOnDoublePrev: disableOnDoublePrev, disableOnNext: disableOnNext, disableOnPrev: disableOnPrev, displayMonthLocale: displayMonthLocale, displayWeekDayLocale: displayWeekDayLocale, fadeProps: fadeProps, firstCalendarRef: firstCalendarRef, isDateDisabled: isDateDisabled, isDateInRange: getIsInRangeHandler('date'), isHalfYearDisabled: isHalfYearDisabled, isHalfYearInRange: getIsInRangeHandler('half-year'), isMonthDisabled: isMonthDisabled, isMonthInRange: getIsInRangeHandler('month'), isQuarterDisabled: isQuarterDisabled, isQuarterInRange: getIsInRangeHandler('quarter'), isWeekDisabled: isWeekDisabled, isWeekInRange: getIsInRangeHandler('week'), isYearDisabled: isYearDisabled, isYearInRange: getIsInRangeHandler('year'), mode: mode, onChange: onCalendarChangeWithCloseControl, onDateHover: onCalendarHover, onHalfYearHover: onCalendarHover, onMonthHover: onCalendarHover, onQuarterHover: onCalendarHover, onWeekHover: onCalendarHover, onYearHover: onCalendarHover, open: open, popperProps: popperProps, quickSelect: quickSelect, ref: calendarRef, referenceDate: referenceDate, renderAnnotations: renderAnnotations, secondCalendarRef: secondCalendarRef, value: calendarValue })] }));
|
|
184
227
|
});
|
|
185
228
|
|
|
186
229
|
export { DateRangePicker as default };
|