@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,15 +1,80 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { ConfirmActionsProps } from '../ConfirmActions';
|
|
3
1
|
import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
|
|
4
|
-
|
|
2
|
+
import type { ButtonProps } from '../Button';
|
|
3
|
+
/**
|
|
4
|
+
* Single button configuration - only primary button is allowed
|
|
5
|
+
*/
|
|
6
|
+
type SingleButtonAction = {
|
|
7
|
+
secondaryButton?: never;
|
|
8
|
+
primaryButton: ButtonProps;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Two buttons configuration - both secondary and primary buttons
|
|
12
|
+
*/
|
|
13
|
+
type TwoButtonsAction = {
|
|
14
|
+
secondaryButton: ButtonProps;
|
|
15
|
+
primaryButton: ButtonProps;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Actions can be either single button or two buttons
|
|
19
|
+
*/
|
|
20
|
+
export type PageFooterActions = SingleButtonAction | TwoButtonsAction;
|
|
21
|
+
export type PageFooterType = 'standard' | 'overflow' | 'information';
|
|
22
|
+
type PageFooterBaseProps = NativeElementPropsWithoutKeyAndRef<'footer'> & {
|
|
5
23
|
/**
|
|
6
|
-
*
|
|
24
|
+
* Action buttons configuration for primary and secondary actions.
|
|
25
|
+
* Renders buttons in the order: secondary (left), primary (right).
|
|
7
26
|
*/
|
|
8
|
-
|
|
27
|
+
actions?: PageFooterActions;
|
|
9
28
|
/**
|
|
10
|
-
* The
|
|
29
|
+
* The className of annotation wrapper.
|
|
11
30
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
31
|
+
annotationClassName?: string;
|
|
32
|
+
/**
|
|
33
|
+
* The warning message in the middle.
|
|
34
|
+
*/
|
|
35
|
+
warningMessage?: string;
|
|
36
|
+
};
|
|
37
|
+
type PageFooterStandardProps = PageFooterBaseProps & {
|
|
38
|
+
/**
|
|
39
|
+
* The type of PageFooter annotation.
|
|
40
|
+
* @default 'standard'
|
|
41
|
+
*/
|
|
42
|
+
type?: 'standard';
|
|
43
|
+
/**
|
|
44
|
+
* Standard type: A ghost button with text.
|
|
45
|
+
* Children of the button.
|
|
46
|
+
*/
|
|
47
|
+
annotation?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Standard type: Button click handler.
|
|
50
|
+
*/
|
|
51
|
+
onAnnotationClick?: ButtonProps['onClick'];
|
|
52
|
+
};
|
|
53
|
+
type PageFooterOverflowProps = PageFooterBaseProps & {
|
|
54
|
+
/**
|
|
55
|
+
* The type of PageFooter annotation.
|
|
56
|
+
*/
|
|
57
|
+
type: 'overflow';
|
|
58
|
+
/**
|
|
59
|
+
* Overflow type: Icon for the icon-only button.
|
|
60
|
+
* @TODO Consider Dropdown integration after Dropdown redesign.
|
|
61
|
+
*/
|
|
62
|
+
annotation?: ButtonProps['icon'];
|
|
63
|
+
/**
|
|
64
|
+
* Overflow type: Button click handler.
|
|
65
|
+
*/
|
|
66
|
+
onAnnotationClick?: ButtonProps['onClick'];
|
|
67
|
+
};
|
|
68
|
+
type PageFooterInformationProps = PageFooterBaseProps & {
|
|
69
|
+
/**
|
|
70
|
+
* The type of PageFooter annotation.
|
|
71
|
+
*/
|
|
72
|
+
type: 'information';
|
|
73
|
+
/**
|
|
74
|
+
* Information type: Plain text to display.
|
|
75
|
+
*/
|
|
76
|
+
annotation?: string;
|
|
77
|
+
};
|
|
78
|
+
export type PageFooterProps = PageFooterStandardProps | PageFooterOverflowProps | PageFooterInformationProps;
|
|
14
79
|
declare const PageFooter: import("react").ForwardRefExoticComponent<PageFooterProps & import("react").RefAttributes<HTMLElement>>;
|
|
15
80
|
export default PageFooter;
|
package/PageFooter/PageFooter.js
CHANGED
|
@@ -1,12 +1,43 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
3
|
import { pageFooterClasses } from '@mezzanine-ui/core/page-footer';
|
|
4
|
-
import
|
|
4
|
+
import Button from '../Button/Button.js';
|
|
5
|
+
import ButtonGroup from '../Button/ButtonGroup.js';
|
|
6
|
+
import Typography from '../Typography/Typography.js';
|
|
5
7
|
import cx from 'clsx';
|
|
6
8
|
|
|
7
9
|
const PageFooter = forwardRef(function PageFooter(props, ref) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
var _a;
|
|
11
|
+
const { actions, annotation, annotationClassName, className, type = 'standard', warningMessage, ...rest } = props;
|
|
12
|
+
// Filter out onAnnotationClick from rest props to avoid React warnings
|
|
13
|
+
if ('onAnnotationClick' in rest) {
|
|
14
|
+
delete rest.onAnnotationClick;
|
|
15
|
+
}
|
|
16
|
+
const { children: primaryButtonText, ...restPrimaryButtonProps } = (_a = actions === null || actions === void 0 ? void 0 : actions.primaryButton) !== null && _a !== void 0 ? _a : {};
|
|
17
|
+
// Render annotation based on type
|
|
18
|
+
const renderAnnotation = () => {
|
|
19
|
+
if (!annotation)
|
|
20
|
+
return null;
|
|
21
|
+
switch (type) {
|
|
22
|
+
case 'standard': {
|
|
23
|
+
return (jsx(Button, { onClick: 'onAnnotationClick' in props
|
|
24
|
+
? props.onAnnotationClick
|
|
25
|
+
: undefined, size: "main", variant: "base-ghost", children: annotation }));
|
|
26
|
+
}
|
|
27
|
+
case 'overflow': {
|
|
28
|
+
// @TODO Consider Dropdown integration after Dropdown redesign
|
|
29
|
+
return (jsx(Button, { icon: annotation, onClick: 'onAnnotationClick' in props
|
|
30
|
+
? props.onAnnotationClick
|
|
31
|
+
: undefined, size: "main", variant: "base-ghost" }));
|
|
32
|
+
}
|
|
33
|
+
case 'information': {
|
|
34
|
+
return (jsx(Typography, { color: "text-neutral", variant: "caption", children: annotation }));
|
|
35
|
+
}
|
|
36
|
+
default:
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
return (jsxs("footer", { ref: ref, ...rest, className: cx(pageFooterClasses.host, className), children: [jsx("div", { className: cx(pageFooterClasses.annotation, annotationClassName), children: renderAnnotation() }), jsx("div", { className: pageFooterClasses.message, children: warningMessage ? (jsx(Typography, { variant: "caption", color: "text-warning", align: "right", children: warningMessage })) : null }), jsxs(ButtonGroup, { children: [(actions === null || actions === void 0 ? void 0 : actions.secondaryButton) && (jsx(Button, { size: "main", variant: "base-secondary", ...actions.secondaryButton })), jsx(Button, { size: "main", variant: "base-primary", ...restPrimaryButtonProps, children: primaryButtonText || 'Button' })] })] }));
|
|
10
41
|
});
|
|
11
42
|
|
|
12
43
|
export { PageFooter as default };
|
package/PageFooter/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { PageFooterProps
|
|
1
|
+
export type { PageFooterProps } from './PageFooter';
|
|
2
|
+
export { default } from './PageFooter';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactElement } from 'react';
|
|
2
|
+
import { BreadcrumbProps } from '../Breadcrumb';
|
|
3
|
+
import { ButtonProps } from '../Button';
|
|
4
|
+
import { PageToolbarProps } from '../PageToolbar';
|
|
5
|
+
import { TypographyProps } from '../Typography';
|
|
6
|
+
import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
|
|
7
|
+
type PageHeaderChild = ReactElement<BreadcrumbProps> | ReactElement<PageToolbarProps> | ReactElement<ButtonProps> | ReactElement<HTMLAttributes<HTMLAnchorElement>>;
|
|
8
|
+
/**
|
|
9
|
+
* Props for the PageHeader component.
|
|
10
|
+
* Extends native HTML header element props.
|
|
11
|
+
*/
|
|
12
|
+
export type PageHeaderProps = NativeElementPropsWithoutKeyAndRef<'header'> & {
|
|
13
|
+
/** Optional description text displayed below the title */
|
|
14
|
+
description?: string;
|
|
15
|
+
/** Main title text for the page header */
|
|
16
|
+
title: string;
|
|
17
|
+
/** HTML element type for the title (defaults to 'h2') */
|
|
18
|
+
titleComponent?: TypographyProps['component'];
|
|
19
|
+
/** Child components: Breadcrumb, PageToolbar, Button, or component with href prop */
|
|
20
|
+
children?: PageHeaderChild | PageHeaderChild[];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* PageHeader component displays a page title with optional breadcrumb navigation,
|
|
24
|
+
* description, back button, and action toolbar.
|
|
25
|
+
*/
|
|
26
|
+
declare const PageHeader: import("react").ForwardRefExoticComponent<NativeElementPropsWithoutKeyAndRef<"header"> & {
|
|
27
|
+
/** Optional description text displayed below the title */
|
|
28
|
+
description?: string;
|
|
29
|
+
/** Main title text for the page header */
|
|
30
|
+
title: string;
|
|
31
|
+
/** HTML element type for the title (defaults to 'h2') */
|
|
32
|
+
titleComponent?: TypographyProps["component"];
|
|
33
|
+
/** Child components: Breadcrumb, PageToolbar, Button, or component with href prop */
|
|
34
|
+
children?: PageHeaderChild | PageHeaderChild[];
|
|
35
|
+
} & import("react").RefAttributes<HTMLElement>>;
|
|
36
|
+
export default PageHeader;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef, Children, isValidElement, cloneElement } from 'react';
|
|
3
|
+
import { ChevronLeftIcon } from '@mezzanine-ui/icons';
|
|
4
|
+
import { pageHeaderClasses } from '@mezzanine-ui/core/page-header';
|
|
5
|
+
import Button from '../Button/Button.js';
|
|
6
|
+
import Typography from '../Typography/Typography.js';
|
|
7
|
+
import Breadcrumb from '../Breadcrumb/Breadcrumb.js';
|
|
8
|
+
import PageToolbar from '../PageToolbar/PageToolbar.js';
|
|
9
|
+
import cx from 'clsx';
|
|
10
|
+
|
|
11
|
+
const getBreadcrumbAndToolbar = (children) => {
|
|
12
|
+
let breadcrumb;
|
|
13
|
+
let pageToolbar;
|
|
14
|
+
let backButtonOrLink;
|
|
15
|
+
const childrenArray = Children.toArray(children);
|
|
16
|
+
if (children) {
|
|
17
|
+
childrenArray.forEach((child) => {
|
|
18
|
+
if (!isValidElement(child))
|
|
19
|
+
return;
|
|
20
|
+
if (child.type === Breadcrumb) {
|
|
21
|
+
breadcrumb = child;
|
|
22
|
+
}
|
|
23
|
+
else if (child.type === PageToolbar) {
|
|
24
|
+
pageToolbar = cloneElement(child, {
|
|
25
|
+
size: 'main',
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else if (child.type === Button) {
|
|
29
|
+
backButtonOrLink = cloneElement(child, {
|
|
30
|
+
icon: {
|
|
31
|
+
position: 'icon-only',
|
|
32
|
+
src: ChevronLeftIcon,
|
|
33
|
+
},
|
|
34
|
+
size: 'sub',
|
|
35
|
+
variant: 'base-tertiary',
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else if (child.type === 'a') {
|
|
39
|
+
backButtonOrLink = cloneElement(child, {
|
|
40
|
+
children: (jsx(Button, { component: 'div', icon: {
|
|
41
|
+
position: 'icon-only',
|
|
42
|
+
src: ChevronLeftIcon,
|
|
43
|
+
}, size: "sub", variant: "base-tertiary" })),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
48
|
+
console.warn('PageHeader only accepts Breadcrumb, PageToolbar, Button or component with href prop as its children.');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return { breadcrumb, backButtonOrLink, pageToolbar };
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* PageHeader component displays a page title with optional breadcrumb navigation,
|
|
57
|
+
* description, back button, and action toolbar.
|
|
58
|
+
*/
|
|
59
|
+
const PageHeader = forwardRef(function PageHeader(props, ref) {
|
|
60
|
+
const { children, className, description, title, titleComponent = 'h2', ...rest } = props;
|
|
61
|
+
const { backButtonOrLink, breadcrumb, pageToolbar } = getBreadcrumbAndToolbar(children);
|
|
62
|
+
return (jsxs("header", { ...rest, className: cx(pageHeaderClasses.host, className), ref: ref, children: [breadcrumb, jsxs("span", { className: pageHeaderClasses.headerContent, children: [jsxs("span", { className: pageHeaderClasses.pageTitleWithIcon, children: [backButtonOrLink && jsx("div", { children: backButtonOrLink }), jsxs("div", { className: pageHeaderClasses.pageTitleText, children: [jsx(Typography, { align: "left", color: "text-neutral-solid", component: titleComponent, variant: "h2", children: title }), description && (jsx(Typography, { align: "left", color: "text-neutral", component: "p", variant: "caption", children: description }))] })] }), pageToolbar] })] }));
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
export { PageHeader as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './PageHeader.js';
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { ButtonGroupChild, ButtonProps } from '../Button';
|
|
3
|
+
import { SearchInputProps } from '../Input';
|
|
4
|
+
import { SelectProps } from '../Select';
|
|
5
|
+
import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
|
|
6
|
+
type SegmentedControlProps = {
|
|
7
|
+
mock: 'SegmentedControlProps';
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Actions configuration for PageToolbar.
|
|
11
|
+
* Can be either an object with specific button types or a single button element/props.
|
|
12
|
+
*/
|
|
13
|
+
type PageToolbarActions = {
|
|
14
|
+
destructiveButton?: ReactElement<ButtonProps> | ButtonProps;
|
|
15
|
+
primaryButton?: ReactElement<ButtonProps> | ButtonProps;
|
|
16
|
+
secondaryButton?: ReactElement<ButtonProps> | ButtonProps;
|
|
17
|
+
} | ReactElement<ButtonProps> | ButtonProps;
|
|
18
|
+
/**
|
|
19
|
+
* Props for the PageToolbar component.
|
|
20
|
+
*/
|
|
21
|
+
export type PageToolbarProps = NativeElementPropsWithoutKeyAndRef<'div'> & {
|
|
22
|
+
/**
|
|
23
|
+
* Button configuration for primary, secondary, and destructive actions. <br />
|
|
24
|
+
* Automatically applies proper styling and order. <br />
|
|
25
|
+
*/
|
|
26
|
+
actions: PageToolbarActions;
|
|
27
|
+
/** Filter component (SearchInput, Select, or SegmentedControl) */
|
|
28
|
+
filter?: ReactElement<SearchInputProps | SelectProps | SegmentedControlProps>;
|
|
29
|
+
/**
|
|
30
|
+
* Size variant of the toolbar. <br />
|
|
31
|
+
* Affects the size of buttons and filter component. <br />
|
|
32
|
+
*/
|
|
33
|
+
size?: 'main' | 'sub';
|
|
34
|
+
/**
|
|
35
|
+
* Icon-only utility buttons `<Button title="..." icon="..." />`. <br />
|
|
36
|
+
* Wrapped with Tooltip automatically. <br />
|
|
37
|
+
* Supports a single Button or a Fragment of Buttons. <br />
|
|
38
|
+
* `<> <Button ... /> <Button ... /> </>` <br />
|
|
39
|
+
*/
|
|
40
|
+
utilities?: ButtonGroupChild;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* PageToolbar component provides a flexible toolbar with filter, action buttons, and utility icons.
|
|
44
|
+
* Commonly used in page headers for primary user actions.
|
|
45
|
+
*/
|
|
46
|
+
declare const PageToolbar: import("react").ForwardRefExoticComponent<NativeElementPropsWithoutKeyAndRef<"div"> & {
|
|
47
|
+
/**
|
|
48
|
+
* Button configuration for primary, secondary, and destructive actions. <br />
|
|
49
|
+
* Automatically applies proper styling and order. <br />
|
|
50
|
+
*/
|
|
51
|
+
actions: PageToolbarActions;
|
|
52
|
+
/** Filter component (SearchInput, Select, or SegmentedControl) */
|
|
53
|
+
filter?: ReactElement<SearchInputProps | SelectProps | SegmentedControlProps>;
|
|
54
|
+
/**
|
|
55
|
+
* Size variant of the toolbar. <br />
|
|
56
|
+
* Affects the size of buttons and filter component. <br />
|
|
57
|
+
*/
|
|
58
|
+
size?: "main" | "sub";
|
|
59
|
+
/**
|
|
60
|
+
* Icon-only utility buttons `<Button title="..." icon="..." />`. <br />
|
|
61
|
+
* Wrapped with Tooltip automatically. <br />
|
|
62
|
+
* Supports a single Button or a Fragment of Buttons. <br />
|
|
63
|
+
* `<> <Button ... /> <Button ... /> </>` <br />
|
|
64
|
+
*/
|
|
65
|
+
utilities?: ButtonGroupChild;
|
|
66
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
67
|
+
export default PageToolbar;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef, isValidElement, cloneElement, Fragment, Children } from 'react';
|
|
3
|
+
import { pageToolbarClasses } from '@mezzanine-ui/core/page-toolbar';
|
|
4
|
+
import Button from '../Button/Button.js';
|
|
5
|
+
import ButtonGroup from '../Button/ButtonGroup.js';
|
|
6
|
+
import Tooltip from '../Tooltip/Tooltip.js';
|
|
7
|
+
import cx from 'clsx';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Renders a button from either ButtonProps or a React element.
|
|
11
|
+
* Applies the specified size and variant to the button.
|
|
12
|
+
*/
|
|
13
|
+
const renderButton = (button, size, variant) => {
|
|
14
|
+
if (!button) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
if (isValidElement(button)) {
|
|
18
|
+
return cloneElement(button, {
|
|
19
|
+
size,
|
|
20
|
+
variant,
|
|
21
|
+
key: variant,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return jsx(Button, { ...button, size: size, variant: variant }, variant);
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Clones filter component with the specified size prop.
|
|
28
|
+
*/
|
|
29
|
+
const withSize = (target, size) => {
|
|
30
|
+
if (!target) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
if (isValidElement(target)) {
|
|
34
|
+
return cloneElement(target, { size });
|
|
35
|
+
}
|
|
36
|
+
return target;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Wraps an icon button with a Tooltip.
|
|
40
|
+
* Uses the button's title prop or children text as tooltip content.
|
|
41
|
+
*/
|
|
42
|
+
const createIconButtonWithTooltip = (child, size, index = 0) => {
|
|
43
|
+
const { children, title, ...childProps } = child.props;
|
|
44
|
+
const tooltipText = title || (typeof children === 'string' ? children : undefined);
|
|
45
|
+
return (jsx(Tooltip, { title: tooltipText, children: (tooltipProps) => cloneElement(child, {
|
|
46
|
+
...tooltipProps,
|
|
47
|
+
icon: childProps.icon
|
|
48
|
+
? {
|
|
49
|
+
...childProps.icon,
|
|
50
|
+
position: 'icon-only',
|
|
51
|
+
}
|
|
52
|
+
: undefined,
|
|
53
|
+
size,
|
|
54
|
+
title: undefined,
|
|
55
|
+
variant: 'base-secondary',
|
|
56
|
+
}) }, childProps.id || tooltipText || index));
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Renders utility icon buttons wrapped in tooltips.
|
|
60
|
+
* Handles both single Button elements and Fragment containing multiple Buttons.
|
|
61
|
+
*/
|
|
62
|
+
const renderIconButtons = (utilities, size) => {
|
|
63
|
+
if (!utilities) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
if (!isValidElement(utilities)) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
if (utilities.type === Fragment) {
|
|
70
|
+
const children = Children.map(utilities.props.children, (child, index) => {
|
|
71
|
+
if (!isValidElement(child) || child.type !== Button) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return createIconButtonWithTooltip(child, size, index);
|
|
75
|
+
});
|
|
76
|
+
return children === null || children === void 0 ? void 0 : children.filter(Boolean);
|
|
77
|
+
}
|
|
78
|
+
if (utilities.type === Button) {
|
|
79
|
+
return createIconButtonWithTooltip(utilities, size);
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Renders action buttons based on the actions configuration.
|
|
85
|
+
* Supports both structured actions object and single button element/props.
|
|
86
|
+
*/
|
|
87
|
+
const renderActions = (actions, size) => {
|
|
88
|
+
if ('primaryButton' in actions ||
|
|
89
|
+
'secondaryButton' in actions ||
|
|
90
|
+
'destructiveButton' in actions) {
|
|
91
|
+
return [
|
|
92
|
+
renderButton(actions.destructiveButton, size, 'destructive-secondary'),
|
|
93
|
+
renderButton(actions.secondaryButton, size, 'base-secondary'),
|
|
94
|
+
renderButton(actions.primaryButton, size, 'base-primary'),
|
|
95
|
+
].filter(Boolean);
|
|
96
|
+
}
|
|
97
|
+
if (isValidElement(actions)) {
|
|
98
|
+
return renderButton(actions, size, 'base-primary');
|
|
99
|
+
}
|
|
100
|
+
return jsx(Button, { ...actions, size: size, variant: "base-primary" });
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* PageToolbar component provides a flexible toolbar with filter, action buttons, and utility icons.
|
|
104
|
+
* Commonly used in page headers for primary user actions.
|
|
105
|
+
*/
|
|
106
|
+
const PageToolbar = forwardRef(function PageToolbar(props, ref) {
|
|
107
|
+
const { actions, className, filter, size = 'main', utilities, ...rest } = props;
|
|
108
|
+
const filterWithSize = withSize(filter, size);
|
|
109
|
+
const fragmentActions = renderActions(actions, size);
|
|
110
|
+
const fragmentUtilities = renderIconButtons(utilities, size);
|
|
111
|
+
return (jsxs("div", { ...rest, className: cx(pageToolbarClasses.host, pageToolbarClasses.size(size), className), ref: ref, children: [filterWithSize, jsx(ButtonGroup, { children: fragmentActions }), jsx(ButtonGroup, { children: fragmentUtilities })] }));
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
export { PageToolbar as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './PageToolbar.js';
|
|
@@ -17,74 +17,68 @@ export interface PaginationProps extends Omit<DetailedHTMLProps<HTMLAttributes<H
|
|
|
17
17
|
*/
|
|
18
18
|
current?: number;
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
21
|
-
* @default false
|
|
20
|
+
* If `true`, the fields are disabled.
|
|
22
21
|
*/
|
|
23
|
-
disabled?:
|
|
24
|
-
/**
|
|
25
|
-
* If `true`, hide the next-page button.
|
|
26
|
-
* @default false
|
|
27
|
-
*/
|
|
28
|
-
hideNextButton?: boolean;
|
|
29
|
-
/**
|
|
30
|
-
* If `true`, hide the previous-page button.
|
|
31
|
-
* @default false
|
|
32
|
-
*/
|
|
33
|
-
hidePreviousButton?: boolean;
|
|
22
|
+
disabled?: true;
|
|
34
23
|
/**
|
|
35
24
|
* The hint text displayed in front of jumper `input`.
|
|
36
25
|
*/
|
|
37
26
|
hintText?: string;
|
|
38
27
|
/**
|
|
39
|
-
* The
|
|
28
|
+
* The placeholder displayed in the jumper input before the user enters a value.
|
|
40
29
|
*/
|
|
41
30
|
inputPlaceholder?: string;
|
|
42
31
|
/**
|
|
43
32
|
* Render the item.
|
|
44
|
-
* @param {
|
|
33
|
+
* @param {PaginationItemProps} item The props to spread on a PaginationItem.
|
|
45
34
|
* @returns {ReactNode}
|
|
46
35
|
* @default (item) => <PaginationItem {...item} />
|
|
47
36
|
*/
|
|
48
37
|
itemRender?: (item: PaginationItemProps) => ReactNode;
|
|
49
38
|
/**
|
|
50
39
|
* Callback fired when the page is changed.
|
|
51
|
-
*
|
|
52
|
-
* @param {number} page The page active.
|
|
40
|
+
* @param {number} page The active page number.
|
|
53
41
|
*/
|
|
54
42
|
onChange?: (page: number) => void;
|
|
55
43
|
/**
|
|
56
|
-
* Callback fired when the page size is changed
|
|
57
|
-
*
|
|
58
|
-
* @param {number} pageSize
|
|
44
|
+
* Callback fired when the page size is changed.
|
|
45
|
+
* @param {number} pageSize The new page size.
|
|
59
46
|
*/
|
|
60
47
|
onChangePageSize?: PaginationPageSizeProps['onChange'];
|
|
61
48
|
/**
|
|
62
|
-
* Number of
|
|
49
|
+
* Number of items per page.
|
|
63
50
|
* @default 10
|
|
64
51
|
*/
|
|
65
52
|
pageSize?: PaginationPageSizeProps['value'];
|
|
66
53
|
/**
|
|
67
|
-
* Label
|
|
54
|
+
* Label displayed before page size selector.
|
|
68
55
|
*/
|
|
69
56
|
pageSizeLabel?: PaginationPageSizeProps['label'];
|
|
70
57
|
/**
|
|
71
|
-
* Page size options to render
|
|
58
|
+
* Page size options to render.
|
|
72
59
|
*/
|
|
73
60
|
pageSizeOptions?: PaginationPageSizeProps['options'];
|
|
74
61
|
/**
|
|
75
|
-
*
|
|
62
|
+
* Render custom result summary.
|
|
63
|
+
* @param {number} from Start index of current page.
|
|
64
|
+
* @param {number} to End index of current page.
|
|
65
|
+
* @param {number} total Total number of items.
|
|
66
|
+
* @returns {string}
|
|
67
|
+
* @example (from, to, total) => `目前顯示 ${from}-${to} 筆,共 ${total} 筆資料`
|
|
76
68
|
*/
|
|
77
|
-
|
|
69
|
+
renderResultSummary?: (from: number, to: number, total: number) => string;
|
|
78
70
|
/**
|
|
79
|
-
* Render custom page size option name
|
|
71
|
+
* Render custom page size option name.
|
|
80
72
|
*/
|
|
81
73
|
renderPageSizeOptionName?: PaginationPageSizeProps['renderOptionName'];
|
|
82
74
|
/**
|
|
83
|
-
*
|
|
75
|
+
* If `true`, show jumper.
|
|
76
|
+
* @default false
|
|
84
77
|
*/
|
|
85
78
|
showJumper?: boolean;
|
|
86
79
|
/**
|
|
87
|
-
*
|
|
80
|
+
* If `true`, show page size options.
|
|
81
|
+
* @default false
|
|
88
82
|
*/
|
|
89
83
|
showPageSizeOptions?: boolean;
|
|
90
84
|
/**
|
|
@@ -93,7 +87,7 @@ export interface PaginationProps extends Omit<DetailedHTMLProps<HTMLAttributes<H
|
|
|
93
87
|
*/
|
|
94
88
|
siblingCount?: number;
|
|
95
89
|
/**
|
|
96
|
-
*
|
|
90
|
+
* Total number of items.
|
|
97
91
|
* @default 0
|
|
98
92
|
*/
|
|
99
93
|
total?: number;
|
package/Pagination/Pagination.js
CHANGED
|
@@ -5,25 +5,24 @@ import PaginationItem from './PaginationItem.js';
|
|
|
5
5
|
import PaginationJumper from './PaginationJumper.js';
|
|
6
6
|
import PaginationPageSize from './PaginationPageSize.js';
|
|
7
7
|
import { usePagination } from './usePagination.js';
|
|
8
|
+
import Typography from '../Typography/Typography.js';
|
|
8
9
|
import cx from 'clsx';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* The react component for `mezzanine` pagination.
|
|
12
13
|
*/
|
|
13
14
|
const Pagination = forwardRef((props, ref) => {
|
|
14
|
-
const {
|
|
15
|
+
const { boundaryCount = 1, buttonText, className, current = 1, disabled, hintText, inputPlaceholder, itemRender = (item) => jsx(PaginationItem, { ...item }), onChange, onChangePageSize, pageSize = 10, pageSizeLabel, pageSizeOptions, renderPageSizeOptionName, renderResultSummary, showJumper = false, showPageSizeOptions = false, siblingCount = 1, total = 0, ...rest } = props;
|
|
15
16
|
const { items } = usePagination({
|
|
16
17
|
boundaryCount,
|
|
17
18
|
current,
|
|
18
19
|
disabled,
|
|
19
|
-
hideNextButton,
|
|
20
|
-
hidePreviousButton,
|
|
21
20
|
onChange,
|
|
22
21
|
pageSize,
|
|
23
22
|
siblingCount,
|
|
24
23
|
total,
|
|
25
24
|
});
|
|
26
|
-
return (
|
|
25
|
+
return (jsxs("nav", { ...rest, ref: ref, "aria-label": "pagination navigation", className: cx(paginationClasses.host, className), children: [renderResultSummary && (jsx(Typography, { variant: "label-primary", children: renderResultSummary(pageSize * (current - 1) + 1, Math.min(pageSize * current, total), total) })), jsxs("ul", { className: paginationClasses.container, children: [showPageSizeOptions && (jsx("li", { className: paginationClasses.pageSize, children: jsx(PaginationPageSize, { disabled: disabled, label: pageSizeLabel, onChange: onChangePageSize, options: pageSizeOptions, renderOptionName: renderPageSizeOptionName, value: pageSize }) })), jsx("li", { children: jsx("ul", { className: paginationClasses.itemList, children: items.map((item, index) => (jsx("li", { className: paginationClasses.item, children: itemRender(item) }, index))) }) }), showJumper && (jsx("li", { className: paginationClasses.jumper, children: jsx(PaginationJumper, { buttonText: buttonText, disabled: disabled, hintText: hintText, inputPlaceholder: inputPlaceholder, onChange: onChange, pageSize: pageSize, total: total }) }))] })] }));
|
|
27
26
|
});
|
|
28
27
|
|
|
29
28
|
export { Pagination as default };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { forwardRef, createElement } from 'react';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { paginationItemClasses } from '@mezzanine-ui/core/pagination';
|
|
4
|
-
import { ChevronLeftIcon, ChevronRightIcon } from '@mezzanine-ui/icons';
|
|
4
|
+
import { DotHorizontalIcon, DoubleChevronRightIcon, DoubleChevronLeftIcon, ChevronLeftIcon, ChevronRightIcon } from '@mezzanine-ui/icons';
|
|
5
|
+
import Typography from '../Typography/Typography.js';
|
|
5
6
|
import Icon from '../Icon/Icon.js';
|
|
6
7
|
import cx from 'clsx';
|
|
7
8
|
|
|
@@ -10,16 +11,18 @@ const PaginationItem = forwardRef((props, ref) => {
|
|
|
10
11
|
const icons = {
|
|
11
12
|
next: ChevronRightIcon,
|
|
12
13
|
previous: ChevronLeftIcon,
|
|
14
|
+
first: DoubleChevronLeftIcon,
|
|
15
|
+
last: DoubleChevronRightIcon,
|
|
13
16
|
};
|
|
14
17
|
const ButtonIcon = icons[type];
|
|
15
18
|
return type === 'ellipsis' ? (jsx("div", { ...rest, ref: ref, className: cx(paginationItemClasses.host, paginationItemClasses.ellipsis, {
|
|
16
19
|
[paginationItemClasses.disabled]: disabled,
|
|
17
|
-
}, className), children:
|
|
20
|
+
}, className), children: jsx(Icon, { icon: DotHorizontalIcon }) })) : (createElement("button", { ...rest, ref: ref, key: page, disabled: disabled, className: cx(paginationItemClasses.host, paginationItemClasses.button, {
|
|
18
21
|
[paginationItemClasses.active]: active,
|
|
19
22
|
[paginationItemClasses.disabled]: disabled,
|
|
20
23
|
}, className), type: "button" },
|
|
21
24
|
ButtonIcon && jsx(Icon, { icon: ButtonIcon }),
|
|
22
|
-
type === 'page' && page));
|
|
25
|
+
type === 'page' && (jsx(Typography, { variant: "label-primary", children: page }))));
|
|
23
26
|
});
|
|
24
27
|
|
|
25
28
|
export { PaginationItem as default };
|