@mezzanine-ui/react 0.16.0 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Accordion/AccordionControlContext.js +1 -0
- package/Accordion/AccordionDetails.js +1 -0
- package/Accordion/AccordionSummary.js +10 -10
- package/Accordion/index.d.ts +6 -3
- package/Alert/index.d.ts +3 -2
- package/AlertBanner/AlertBanner.d.ts +93 -0
- package/AlertBanner/AlertBanner.js +154 -0
- package/AlertBanner/index.d.ts +2 -0
- package/AlertBanner/index.js +1 -0
- package/Anchor/Anchor.js +1 -1
- package/Anchor/index.d.ts +2 -1
- package/AppBar/index.d.ts +8 -4
- package/{Overlay/Overlay.d.ts → Backdrop/Backdrop.d.ts} +12 -16
- package/Backdrop/Backdrop.js +40 -0
- package/Backdrop/index.d.ts +2 -0
- package/Backdrop/index.js +1 -0
- package/Badge/Badge.d.ts +20 -14
- package/Badge/Badge.js +14 -16
- package/Badge/BadgeContainer.d.ts +1 -1
- package/Badge/BadgeContainer.js +1 -1
- package/Badge/index.d.ts +3 -2
- package/Badge/typings.d.ts +48 -0
- package/Breadcrumb/Breadcrumb.d.ts +6 -0
- package/Breadcrumb/Breadcrumb.js +53 -0
- package/Breadcrumb/BreadcrumbItem.d.ts +4 -0
- package/Breadcrumb/BreadcrumbItem.js +45 -0
- package/Breadcrumb/index.d.ts +2 -0
- package/Breadcrumb/index.js +1 -0
- package/Breadcrumb/typings.d.ts +75 -0
- package/Button/Button.js +24 -19
- package/Button/ButtonGroup.d.ts +6 -28
- package/Button/ButtonGroup.js +7 -16
- package/Button/index.d.ts +4 -10
- package/Button/index.js +2 -3
- package/Button/typings.d.ts +11 -26
- package/Calendar/Calendar.d.ts +31 -2
- package/Calendar/Calendar.js +74 -19
- package/Calendar/CalendarCell.d.ts +4 -0
- package/Calendar/CalendarCell.js +3 -3
- package/Calendar/CalendarConfigProviderDayjs.d.ts +21 -0
- package/Calendar/CalendarConfigProviderDayjs.js +15 -0
- package/Calendar/CalendarConfigProviderLuxon.d.ts +21 -0
- package/Calendar/CalendarConfigProviderLuxon.js +15 -0
- package/Calendar/CalendarConfigProviderMoment.d.ts +21 -0
- package/Calendar/CalendarConfigProviderMoment.js +15 -0
- package/Calendar/CalendarContext.d.ts +14 -7
- package/Calendar/CalendarContext.js +8 -13
- package/Calendar/CalendarControls.d.ts +16 -0
- package/Calendar/CalendarControls.js +3 -7
- package/Calendar/CalendarDayOfWeek.js +4 -3
- package/Calendar/CalendarDays.d.ts +9 -1
- package/Calendar/CalendarDays.js +63 -38
- package/Calendar/CalendarFooterActions.d.ts +13 -0
- package/Calendar/CalendarFooterActions.js +14 -0
- package/Calendar/CalendarFooterControl.d.ts +16 -0
- package/Calendar/CalendarFooterControl.js +14 -0
- package/Calendar/CalendarHalfYears.d.ts +39 -0
- package/Calendar/CalendarHalfYears.js +62 -0
- package/Calendar/CalendarMonths.js +16 -4
- package/Calendar/CalendarQuarters.d.ts +37 -0
- package/Calendar/CalendarQuarters.js +64 -0
- package/Calendar/CalendarQuickSelect.d.ts +21 -0
- package/Calendar/CalendarQuickSelect.js +15 -0
- package/Calendar/CalendarWeeks.d.ts +1 -1
- package/Calendar/CalendarWeeks.js +89 -44
- package/Calendar/CalendarYears.js +13 -3
- package/Calendar/RangeCalendar.d.ts +59 -0
- package/Calendar/RangeCalendar.js +232 -0
- package/Calendar/index.d.ts +33 -10
- package/Calendar/index.js +7 -0
- package/Calendar/useCalendarControlModifiers.d.ts +4 -4
- package/Calendar/useCalendarControlModifiers.js +40 -8
- package/Calendar/useCalendarControls.d.ts +2 -0
- package/Calendar/useCalendarControls.js +19 -2
- package/Calendar/useCalendarModeStack.js +1 -0
- package/Calendar/useRangeCalendarControls.d.ts +18 -0
- package/Calendar/useRangeCalendarControls.js +115 -0
- package/Card/CardActions.js +1 -1
- package/Card/index.d.ts +4 -2
- package/Checkbox/CheckAll.d.ts +16 -6
- package/Checkbox/CheckAll.js +40 -26
- package/Checkbox/Checkbox.d.ts +100 -22
- package/Checkbox/Checkbox.js +73 -16
- package/Checkbox/CheckboxGroup.d.ts +100 -18
- package/Checkbox/CheckboxGroup.js +169 -24
- package/Checkbox/CheckboxGroupContext.d.ts +0 -2
- package/Checkbox/CheckboxGroupContext.js +1 -0
- package/Checkbox/index.d.ts +16 -4
- package/Checkbox/index.js +6 -2
- package/Checkbox/typings.d.ts +37 -0
- package/ClearActions/ClearActions.d.ts +41 -0
- package/ClearActions/ClearActions.js +23 -0
- package/ClearActions/index.d.ts +3 -0
- package/ClearActions/index.js +5 -0
- package/ConfirmActions/ConfirmActions.d.ts +2 -1
- package/ConfirmActions/index.d.ts +2 -1
- package/DatePicker/DatePicker.d.ts +12 -1
- package/DatePicker/DatePicker.js +41 -9
- package/DatePicker/DatePickerCalendar.d.ts +2 -5
- package/DatePicker/DatePickerCalendar.js +37 -37
- package/DatePicker/index.d.ts +4 -2
- package/DateRangePicker/DateRangePicker.d.ts +18 -2
- package/DateRangePicker/DateRangePicker.js +143 -100
- package/DateRangePicker/DateRangePickerCalendar.d.ts +13 -9
- package/DateRangePicker/DateRangePickerCalendar.js +7 -94
- package/DateRangePicker/index.d.ts +6 -3
- package/DateRangePicker/useDateRangeCalendarControls.js +11 -6
- package/DateRangePicker/useDateRangePickerValue.d.ts +38 -15
- package/DateRangePicker/useDateRangePickerValue.js +142 -63
- package/DateTimePicker/DateTimePicker.d.ts +31 -10
- package/DateTimePicker/DateTimePicker.js +179 -94
- package/DateTimePicker/index.d.ts +2 -2
- package/DateTimePicker/index.js +0 -1
- package/Drawer/Drawer.d.ts +47 -6
- package/Drawer/Drawer.js +36 -11
- package/Drawer/index.d.ts +2 -1
- package/Dropdown/Dropdown.js +12 -22
- package/Dropdown/index.d.ts +2 -1
- package/Empty/Empty.d.ts +1 -16
- package/Empty/Empty.js +59 -7
- package/Empty/icons/EmptyMainInitialDataIcon.d.ts +4 -0
- package/Empty/icons/EmptyMainInitialDataIcon.js +9 -0
- package/Empty/icons/EmptyMainResultIcon.d.ts +4 -0
- package/Empty/icons/EmptyMainResultIcon.js +9 -0
- package/Empty/icons/EmptyMainSystemIcon.d.ts +4 -0
- package/Empty/icons/EmptyMainSystemIcon.js +9 -0
- package/Empty/index.d.ts +2 -1
- package/Empty/typings.d.ts +61 -0
- package/Form/FormControlContext.js +1 -0
- package/Form/FormHintText.d.ts +18 -0
- package/Form/FormHintText.js +17 -0
- package/Form/FormLabel.js +1 -0
- package/Form/index.d.ts +9 -5
- package/Form/index.js +1 -1
- package/Form/useAutoCompleteValueControl.js +2 -0
- package/Form/useCheckboxControlValue.js +0 -1
- package/Form/useSelectValueControl.js +2 -0
- package/InlineMessage/InlineMessage.d.ts +33 -0
- package/InlineMessage/InlineMessage.js +42 -0
- package/InlineMessage/InlineMessageGroup.d.ts +24 -0
- package/InlineMessage/InlineMessageGroup.js +21 -0
- package/InlineMessage/index.d.ts +4 -0
- package/InlineMessage/index.js +2 -0
- package/Input/ActionButton/ActionButton.d.ts +26 -0
- package/Input/ActionButton/ActionButton.js +14 -0
- package/Input/ActionButton/index.d.ts +2 -0
- package/Input/ActionButton/index.js +1 -0
- package/Input/Input.d.ts +147 -42
- package/Input/Input.js +195 -27
- package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.d.ts +31 -0
- package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.js +18 -0
- package/Input/PasswordStrengthIndicator/index.d.ts +2 -0
- package/Input/PasswordStrengthIndicator/index.js +1 -0
- package/Input/SelectButton/SelectButton.d.ts +20 -0
- package/Input/SelectButton/SelectButton.js +21 -0
- package/Input/SelectButton/index.d.ts +2 -0
- package/Input/SelectButton/index.js +1 -0
- package/Input/SpinnerButton/SpinnerButton.d.ts +19 -0
- package/Input/SpinnerButton/SpinnerButton.js +14 -0
- package/Input/SpinnerButton/index.d.ts +2 -0
- package/Input/SpinnerButton/index.js +1 -0
- package/Input/index.d.ts +3 -2
- package/Menu/Menu.js +1 -0
- package/Menu/index.d.ts +8 -4
- package/Message/Message.d.ts +6 -4
- package/Message/Message.js +86 -9
- package/Message/MessageTimerController.d.ts +14 -0
- package/Message/MessageTimerController.js +27 -0
- package/Message/index.d.ts +3 -2
- package/Modal/Modal.js +2 -2
- package/Modal/ModalActions.js +1 -0
- package/Modal/ModalControl.js +1 -0
- package/Modal/ModalHeader.js +1 -0
- package/Modal/index.d.ts +10 -5
- package/Modal/useModalContainer.d.ts +1 -1
- package/Modal/useModalContainer.js +2 -4
- package/Navigation/Navigation.js +37 -34
- package/Navigation/NavigationContext.js +1 -0
- package/Navigation/NavigationItem.js +1 -0
- package/Navigation/NavigationSubMenu.js +16 -26
- package/Navigation/index.d.ts +8 -4
- package/Notification/Notification.js +0 -1
- package/Notification/index.d.ts +3 -2
- package/Notifier/NotifierManager.d.ts +15 -2
- package/Notifier/NotifierManager.js +60 -18
- package/Notifier/createNotifier.d.ts +9 -0
- package/Notifier/createNotifier.js +3 -2
- package/Notifier/typings.d.ts +3 -1
- package/OverflowTooltip/OverflowCounterTag.d.ts +12 -0
- package/OverflowTooltip/OverflowCounterTag.js +48 -0
- package/OverflowTooltip/OverflowTooltip.d.ts +34 -0
- package/OverflowTooltip/OverflowTooltip.js +53 -0
- package/OverflowTooltip/index.d.ts +2 -0
- package/OverflowTooltip/index.js +2 -0
- package/PageFooter/PageFooter.d.ts +73 -8
- package/PageFooter/PageFooter.js +34 -3
- package/PageFooter/index.d.ts +2 -1
- package/PageHeader/PageHeader.d.ts +40 -0
- package/PageHeader/PageHeader.js +70 -0
- package/PageHeader/index.d.ts +2 -0
- package/PageHeader/index.js +1 -0
- package/PageToolbar/PageToolbar.d.ts +114 -0
- package/PageToolbar/PageToolbar.js +23 -0
- package/PageToolbar/index.d.ts +2 -0
- package/PageToolbar/index.js +1 -0
- package/PageToolbar/utils.d.ts +23 -0
- package/PageToolbar/utils.js +165 -0
- package/Pagination/Pagination.d.ts +23 -29
- package/Pagination/Pagination.js +3 -4
- package/Pagination/PaginationItem.d.ts +1 -1
- package/Pagination/PaginationItem.js +4 -3
- package/Pagination/PaginationJumper.d.ts +7 -9
- package/Pagination/PaginationJumper.js +3 -5
- package/Pagination/PaginationPageSize.d.ts +8 -11
- package/Pagination/PaginationPageSize.js +5 -4
- package/Pagination/index.d.ts +8 -4
- package/Pagination/usePagination.d.ts +3 -1
- package/Pagination/usePagination.js +12 -21
- package/Picker/FormattedInput.d.ts +17 -0
- package/Picker/FormattedInput.js +74 -0
- package/Picker/MaskFormat.d.ts +39 -0
- package/Picker/MaskFormat.js +94 -0
- package/Picker/PickerTrigger.d.ts +13 -3
- package/Picker/PickerTrigger.js +17 -2
- package/Picker/PickerTriggerWithSeparator.d.ts +124 -0
- package/Picker/PickerTriggerWithSeparator.js +80 -0
- package/Picker/RangePickerTrigger.d.ts +55 -4
- package/Picker/RangePickerTrigger.js +65 -7
- package/Picker/formatUtils.d.ts +34 -0
- package/Picker/formatUtils.js +124 -0
- package/Picker/index.d.ts +17 -6
- package/Picker/index.js +4 -1
- package/Picker/useDateInputFormatter.d.ts +52 -0
- package/Picker/useDateInputFormatter.js +382 -0
- package/Picker/usePickerValue.d.ts +1 -2
- package/Picker/usePickerValue.js +8 -13
- package/Popconfirm/Popconfirm.js +1 -1
- package/Popconfirm/index.d.ts +2 -1
- package/Popover/Popover.js +4 -8
- package/Popover/index.d.ts +2 -1
- package/Popper/Popper.d.ts +15 -10
- package/Popper/Popper.js +88 -17
- package/Popper/index.d.ts +2 -1
- package/Portal/Portal.d.ts +13 -5
- package/Portal/Portal.js +25 -10
- package/Portal/index.d.ts +4 -1
- package/Portal/index.js +1 -0
- package/Portal/portalRegistry.d.ts +17 -0
- package/Portal/portalRegistry.js +92 -0
- package/Progress/Progress.d.ts +23 -30
- package/Progress/Progress.js +71 -21
- package/Progress/index.d.ts +3 -2
- package/Provider/ConfigProvider.d.ts +1 -0
- package/Provider/ConfigProvider.js +1 -0
- package/Provider/context.js +1 -0
- package/Radio/Radio.d.ts +37 -4
- package/Radio/Radio.js +23 -12
- package/Radio/RadioGroup.d.ts +37 -8
- package/Radio/RadioGroup.js +6 -5
- package/Radio/RadioGroupContext.d.ts +2 -1
- package/Radio/RadioGroupContext.js +1 -0
- package/Radio/index.d.ts +5 -3
- package/ResultState/ResultState.d.ts +52 -0
- package/ResultState/ResultState.js +24 -0
- package/ResultState/index.d.ts +2 -0
- package/ResultState/index.js +1 -0
- package/Select/AutoComplete.d.ts +1 -1
- package/Select/AutoComplete.js +2 -1
- package/Select/Option.js +1 -0
- package/Select/Select.d.ts +1 -1
- package/Select/Select.js +2 -1
- package/Select/SelectControlContext.js +1 -0
- package/Select/SelectTrigger.d.ts +1 -87
- package/Select/SelectTrigger.js +26 -21
- package/Select/SelectTriggerTags.d.ts +1 -1
- package/Select/SelectTriggerTags.js +47 -18
- package/Select/TreeSelect.d.ts +1 -1
- package/Select/TreeSelect.js +2 -1
- package/Select/index.d.ts +14 -7
- package/Select/typings.d.ts +99 -0
- package/Select/useSelectTriggerTags.d.ts +15 -8
- package/Select/useSelectTriggerTags.js +83 -44
- package/Selection/Selection.d.ts +98 -0
- package/Selection/Selection.js +46 -0
- package/Selection/index.d.ts +12 -0
- package/Selection/index.js +5 -0
- package/Skeleton/Skeleton.d.ts +10 -3
- package/Skeleton/Skeleton.js +12 -4
- package/Skeleton/index.d.ts +2 -1
- package/Slider/Slider.d.ts +44 -7
- package/Slider/Slider.js +17 -13
- package/Slider/index.d.ts +5 -3
- package/Spin/Spin.d.ts +39 -0
- package/{Loading/Loading.js → Spin/Spin.js} +9 -9
- package/Spin/index.d.ts +2 -0
- package/Spin/index.js +1 -0
- package/Stepper/Step.d.ts +1 -35
- package/Stepper/Step.js +43 -8
- package/Stepper/Stepper.d.ts +1 -14
- package/Stepper/Stepper.js +49 -15
- package/Stepper/index.d.ts +5 -2
- package/Stepper/index.js +1 -0
- package/Stepper/typings.d.ts +77 -0
- package/Stepper/useStepDistance.d.ts +10 -0
- package/Stepper/useStepDistance.js +81 -0
- package/Stepper/useStepper.d.ts +21 -0
- package/Stepper/useStepper.js +26 -0
- package/Tab/Tab.d.ts +32 -0
- package/Tab/Tab.js +57 -0
- package/Tab/TabItem.d.ts +27 -0
- package/Tab/TabItem.js +18 -0
- package/Tab/index.d.ts +4 -0
- package/Tab/index.js +2 -0
- package/Table/Table.d.ts +75 -94
- package/Table/Table.js +216 -161
- package/Table/TableContext.d.ts +114 -51
- package/Table/TableContext.js +22 -3
- package/Table/components/TableBody.d.ts +5 -0
- package/Table/components/TableBody.js +102 -0
- package/Table/components/TableCell.d.ts +17 -0
- package/Table/components/TableCell.js +74 -0
- package/Table/components/TableColGroup.d.ts +4 -0
- package/Table/components/TableColGroup.js +206 -0
- package/Table/components/TableDragHandleCell.d.ts +9 -0
- package/Table/components/TableDragHandleCell.js +37 -0
- package/Table/components/TableExpandCell.d.ts +11 -0
- package/Table/components/TableExpandCell.js +44 -0
- package/Table/components/TableExpandedRow.d.ts +9 -0
- package/Table/components/TableExpandedRow.js +46 -0
- package/Table/components/TableHeader.d.ts +4 -0
- package/Table/components/TableHeader.js +125 -0
- package/Table/components/TablePagination.d.ts +3 -0
- package/Table/components/TablePagination.js +11 -0
- package/Table/components/TableResizeHandle.d.ts +13 -0
- package/Table/components/TableResizeHandle.js +115 -0
- package/Table/components/TableRow.d.ts +12 -0
- package/Table/components/TableRow.js +126 -0
- package/Table/components/TableSelectionCell.d.ts +13 -0
- package/Table/components/TableSelectionCell.js +35 -0
- package/Table/components/index.d.ts +10 -0
- package/Table/components/index.js +10 -0
- package/Table/hooks/index.d.ts +9 -0
- package/Table/hooks/index.js +8 -0
- package/Table/hooks/typings.d.ts +14 -0
- package/Table/hooks/useTableColumns.d.ts +8 -0
- package/Table/hooks/useTableColumns.js +91 -0
- package/Table/hooks/useTableDataSource.d.ts +57 -0
- package/Table/hooks/useTableDataSource.js +183 -0
- package/Table/hooks/useTableExpansion.d.ts +7 -0
- package/Table/hooks/useTableExpansion.js +52 -0
- package/Table/hooks/useTableFixedOffsets.d.ts +29 -0
- package/Table/hooks/useTableFixedOffsets.js +241 -0
- package/Table/hooks/useTableScroll.d.ts +12 -0
- package/Table/hooks/useTableScroll.js +58 -0
- package/Table/hooks/useTableSelection.d.ts +7 -0
- package/Table/hooks/useTableSelection.js +94 -0
- package/Table/hooks/useTableSorting.d.ts +6 -0
- package/Table/hooks/useTableSorting.js +32 -0
- package/Table/hooks/useTableVirtualization.d.ts +22 -0
- package/Table/hooks/useTableVirtualization.js +115 -0
- package/Table/index.d.ts +7 -7
- package/Table/index.js +22 -6
- package/Table/utils/index.d.ts +2 -0
- package/Table/utils/index.js +1 -0
- package/Table/utils/useTableRowSelection.d.ts +18 -0
- package/Table/utils/useTableRowSelection.js +63 -0
- package/Tag/Tag.d.ts +2 -25
- package/Tag/Tag.js +23 -13
- package/Tag/TagGroup.d.ts +12 -0
- package/Tag/TagGroup.js +41 -0
- package/Tag/index.d.ts +2 -1
- package/Tag/typings.d.ts +78 -0
- package/TextField/TextField.d.ts +78 -19
- package/TextField/TextField.js +58 -22
- package/TextField/index.d.ts +2 -1
- package/Textarea/Textarea.d.ts +19 -51
- package/Textarea/Textarea.js +13 -19
- package/Textarea/index.d.ts +2 -2
- package/TimePanel/TimePanel.d.ts +1 -22
- package/TimePanel/TimePanel.js +31 -26
- package/TimePanel/TimePanelAction.d.ts +2 -8
- package/TimePanel/TimePanelAction.js +2 -2
- package/TimePanel/TimePanelColumn.d.ts +0 -13
- package/TimePanel/TimePanelColumn.js +9 -11
- package/TimePanel/index.d.ts +6 -3
- package/TimePicker/TimePicker.d.ts +10 -1
- package/TimePicker/TimePicker.js +86 -35
- package/TimePicker/TimePickerPanel.d.ts +1 -2
- package/TimePicker/TimePickerPanel.js +2 -2
- package/TimePicker/index.d.ts +4 -2
- package/Toggle/Toggle.d.ts +46 -0
- package/Toggle/Toggle.js +29 -0
- package/Toggle/index.d.ts +3 -0
- package/Toggle/index.js +1 -0
- package/Tooltip/Tooltip.d.ts +13 -2
- package/Tooltip/Tooltip.js +56 -10
- package/Tooltip/index.d.ts +2 -1
- package/Tooltip/useDelayMouseEnterLeave.d.ts +1 -2
- package/Tooltip/useDelayMouseEnterLeave.js +10 -13
- package/Transition/Collapse.d.ts +2 -0
- package/Transition/Collapse.js +5 -6
- package/Transition/Fade.js +4 -4
- package/Transition/Rotate.d.ts +42 -0
- package/Transition/Rotate.js +30 -0
- package/Transition/Scale.d.ts +13 -0
- package/Transition/{Grow.js → Scale.js} +19 -16
- package/Transition/Slide.d.ts +7 -0
- package/Transition/{Zoom.js → Slide.js} +14 -12
- package/Transition/SlideFade.d.ts +3 -0
- package/Transition/SlideFade.js +5 -4
- package/Transition/Transition.d.ts +2 -2
- package/Transition/Translate.d.ts +14 -0
- package/Transition/Translate.js +94 -0
- package/Transition/index.d.ts +16 -6
- package/Transition/index.js +4 -2
- package/Transition/useAutoTransitionDuration.d.ts +1 -1
- package/Transition/useAutoTransitionDuration.js +3 -3
- package/Transition/useSetNodeTransition.js +0 -2
- package/Tree/TreeNode.js +7 -6
- package/Tree/index.d.ts +10 -5
- package/Typography/Typography.d.ts +6 -9
- package/Typography/Typography.js +7 -9
- package/Typography/index.d.ts +2 -5
- package/Upload/Upload.d.ts +175 -0
- package/Upload/Upload.js +279 -0
- package/Upload/UploadItem.d.ts +82 -0
- package/Upload/UploadItem.js +118 -0
- package/Upload/UploadPictureCard.d.ts +110 -0
- package/Upload/UploadPictureCard.js +101 -0
- package/Upload/Uploader.d.ts +161 -0
- package/Upload/Uploader.js +120 -0
- package/Upload/index.d.ts +8 -6
- package/Upload/index.js +4 -5
- package/Upload/upload-utils.d.ts +41 -0
- package/Upload/upload-utils.js +65 -0
- package/_internal/InputCheck/InputCheck.d.ts +15 -1
- package/_internal/InputCheck/InputCheck.js +6 -2
- package/_internal/InputCheck/InputCheckGroup.d.ts +11 -1
- package/_internal/InputCheck/InputCheckGroup.js +4 -2
- package/_internal/InputCheck/index.d.ts +4 -2
- package/_internal/InputTriggerPopper/InputTriggerPopper.js +15 -25
- package/_internal/InputTriggerPopper/index.d.ts +2 -1
- package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +3 -3
- package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +5 -28
- package/_internal/SlideFadeOverlay/index.d.ts +2 -1
- package/_internal/SlideFadeOverlay/useTopStack.js +1 -0
- package/dayjs.d.ts +21 -0
- package/dayjs.js +2 -0
- package/hooks/useComposeRefs.js +1 -1
- package/hooks/useLastCallback.js +3 -1
- package/hooks/useScrollLock.d.ts +28 -0
- package/hooks/useScrollLock.js +134 -0
- package/index.d.ts +128 -58
- package/index.js +90 -80
- package/luxon.d.ts +21 -0
- package/luxon.js +2 -0
- package/moment.d.ts +21 -0
- package/moment.js +2 -0
- package/package.json +14 -17
- package/utils/composeRefs.js +0 -1
- package/utils/flatten-children.d.ts +12 -0
- package/utils/flatten-children.js +37 -0
- package/utils/get-css-variable-value.d.ts +2 -0
- package/utils/get-css-variable-value.js +12 -0
- package/Button/IconButton.d.ts +0 -21
- package/Button/IconButton.js +0 -13
- package/DateTimePicker/DateTimePickerPanel.d.ts +0 -28
- package/DateTimePicker/DateTimePickerPanel.js +0 -49
- package/Form/FormMessage.d.ts +0 -7
- package/Form/FormMessage.js +0 -18
- package/Form/useInputWithTagsModeValue.js +0 -86
- package/Loading/Loading.d.ts +0 -33
- package/Loading/index.d.ts +0 -1
- package/Loading/index.js +0 -1
- package/Overlay/Overlay.js +0 -31
- package/Overlay/index.d.ts +0 -1
- package/Overlay/index.js +0 -1
- package/Picker/useRangePickerValue.d.ts +0 -23
- package/Picker/useRangePickerValue.js +0 -99
- package/Switch/Switch.d.ts +0 -43
- package/Switch/Switch.js +0 -28
- package/Switch/index.d.ts +0 -2
- package/Switch/index.js +0 -1
- package/Table/TableBody.d.ts +0 -10
- package/Table/TableBody.js +0 -30
- package/Table/TableBodyRow.d.ts +0 -11
- package/Table/TableBodyRow.js +0 -64
- package/Table/TableCell.d.ts +0 -19
- package/Table/TableCell.js +0 -24
- package/Table/TableExpandedTable.d.ts +0 -11
- package/Table/TableExpandedTable.js +0 -28
- package/Table/TableHeader.d.ts +0 -3
- package/Table/TableHeader.js +0 -35
- package/Table/draggable/useTableDraggable.d.ts +0 -14
- package/Table/draggable/useTableDraggable.js +0 -64
- package/Table/editable/TableEditRenderWrapper.d.ts +0 -7
- package/Table/editable/TableEditRenderWrapper.js +0 -15
- package/Table/expandable/TableExpandable.d.ts +0 -27
- package/Table/expandable/TableExpandable.js +0 -24
- package/Table/pagination/TablePagination.d.ts +0 -10
- package/Table/pagination/TablePagination.js +0 -25
- package/Table/pagination/useTablePagination.d.ts +0 -8
- package/Table/pagination/useTablePagination.js +0 -29
- package/Table/refresh/TableRefresh.d.ts +0 -10
- package/Table/refresh/TableRefresh.js +0 -20
- package/Table/rowSelection/TableRowSelection.d.ts +0 -18
- package/Table/rowSelection/TableRowSelection.js +0 -92
- package/Table/rowSelection/useTableRowSelection.d.ts +0 -6
- package/Table/rowSelection/useTableRowSelection.js +0 -53
- package/Table/sorting/TableSortingIcon.d.ts +0 -10
- package/Table/sorting/TableSortingIcon.js +0 -32
- package/Table/sorting/useTableSorting.d.ts +0 -11
- package/Table/sorting/useTableSorting.js +0 -120
- package/Table/useTableFetchMore.d.ts +0 -10
- package/Table/useTableFetchMore.js +0 -50
- package/Table/useTableLoading.d.ts +0 -5
- package/Table/useTableLoading.js +0 -19
- package/Table/useTableScroll.d.ts +0 -596
- package/Table/useTableScroll.js +0 -294
- package/Tabs/Tab.d.ts +0 -18
- package/Tabs/Tab.js +0 -16
- package/Tabs/TabPane.d.ts +0 -14
- package/Tabs/TabPane.js +0 -18
- package/Tabs/Tabs.d.ts +0 -39
- package/Tabs/Tabs.js +0 -47
- package/Tabs/index.d.ts +0 -3
- package/Tabs/index.js +0 -3
- package/Tabs/useTabsOverflow.d.ts +0 -8
- package/Tabs/useTabsOverflow.js +0 -61
- package/Transition/Grow.d.ts +0 -12
- package/Transition/Zoom.d.ts +0 -7
- package/Upload/UploadButton.d.ts +0 -9
- package/Upload/UploadButton.js +0 -23
- package/Upload/UploadInput.d.ts +0 -20
- package/Upload/UploadInput.js +0 -24
- package/Upload/UploadPicture.d.ts +0 -49
- package/Upload/UploadPicture.js +0 -51
- package/Upload/UploadPictureBlock.d.ts +0 -20
- package/Upload/UploadPictureBlock.js +0 -81
- package/Upload/UploadPictureWall.d.ts +0 -81
- package/Upload/UploadPictureWall.js +0 -168
- package/Upload/UploadPictureWallItem.d.ts +0 -15
- package/Upload/UploadPictureWallItem.js +0 -18
- package/Upload/UploadResult.d.ts +0 -35
- package/Upload/UploadResult.js +0 -29
- package/utils/scroll-lock.d.ts +0 -2
- package/utils/scroll-lock.js +0 -24
|
@@ -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,40 @@
|
|
|
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>> | null | undefined | false;
|
|
8
|
+
/**
|
|
9
|
+
* Props for the PageHeader component.
|
|
10
|
+
* Extends native HTML header element props.
|
|
11
|
+
*/
|
|
12
|
+
export type PageHeaderProps = NativeElementPropsWithoutKeyAndRef<'header'> & {
|
|
13
|
+
/** Optional back button properties */
|
|
14
|
+
onBackClick?: () => void;
|
|
15
|
+
/** Optional description text displayed below the title */
|
|
16
|
+
description?: string;
|
|
17
|
+
/** Main title text for the page header */
|
|
18
|
+
title: string;
|
|
19
|
+
/** HTML element type for the title (defaults to 'h2') */
|
|
20
|
+
titleComponent?: TypographyProps['component'];
|
|
21
|
+
/** Child components: Breadcrumb, PageToolbar, Button, or component with href prop */
|
|
22
|
+
children?: PageHeaderChild | PageHeaderChild[];
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* PageHeader component displays a page title with optional breadcrumb navigation,
|
|
26
|
+
* description, back button, and action toolbar.
|
|
27
|
+
*/
|
|
28
|
+
declare const PageHeader: import("react").ForwardRefExoticComponent<NativeElementPropsWithoutKeyAndRef<"header"> & {
|
|
29
|
+
/** Optional back button properties */
|
|
30
|
+
onBackClick?: () => void;
|
|
31
|
+
/** Optional description text displayed below the title */
|
|
32
|
+
description?: string;
|
|
33
|
+
/** Main title text for the page header */
|
|
34
|
+
title: string;
|
|
35
|
+
/** HTML element type for the title (defaults to 'h2') */
|
|
36
|
+
titleComponent?: TypographyProps["component"];
|
|
37
|
+
/** Child components: Breadcrumb, PageToolbar, Button, or component with href prop */
|
|
38
|
+
children?: PageHeaderChild | PageHeaderChild[];
|
|
39
|
+
} & import("react").RefAttributes<HTMLElement>>;
|
|
40
|
+
export default PageHeader;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx, jsxs } 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, onBackClick, title, titleComponent = 'h2', ...rest } = props;
|
|
61
|
+
const { backButtonOrLink, breadcrumb, pageToolbar } = getBreadcrumbAndToolbar(children);
|
|
62
|
+
// prop onBack takes precedence over backButtonOrLink
|
|
63
|
+
const backButton = onBackClick ? (jsx(Button, { icon: {
|
|
64
|
+
position: 'icon-only',
|
|
65
|
+
src: ChevronLeftIcon,
|
|
66
|
+
}, onClick: onBackClick, size: "sub", variant: "base-tertiary" })) : (backButtonOrLink);
|
|
67
|
+
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: [backButton && jsx("div", { children: backButton }), 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] })] }));
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
export { PageHeader as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './PageHeader.js';
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { ButtonProps } from '../Button';
|
|
3
|
+
import { SearchInputProps } from '../Input';
|
|
4
|
+
import { SelectProps } from '../Select';
|
|
5
|
+
import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
|
|
6
|
+
import { IconDefinition } from '@mezzanine-ui/icons';
|
|
7
|
+
type SegmentedControlProps = {
|
|
8
|
+
mock: 'SegmentedControlProps';
|
|
9
|
+
};
|
|
10
|
+
type PageToolbarChild = ReactElement<SearchInputProps | SelectProps | SegmentedControlProps | ButtonProps> | null | false | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Props for the PageToolbar component.
|
|
13
|
+
*
|
|
14
|
+
* PageToolbar provides a flexible toolbar layout for page-level actions,
|
|
15
|
+
* including filter components, action buttons, and utility buttons.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <PageToolbar
|
|
20
|
+
* size="main"
|
|
21
|
+
* filter={{ variant: 'search', placeholder: 'Search...' }}
|
|
22
|
+
* actions={{
|
|
23
|
+
* primaryButton: { children: 'Save' },
|
|
24
|
+
* secondaryButton: { children: 'Cancel' },
|
|
25
|
+
* }}
|
|
26
|
+
* utilities={[{ icon: { src: settingsIcon }, title: 'Settings' }]}
|
|
27
|
+
* />
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export type PageToolbarProps = Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'children'> & {
|
|
31
|
+
/**
|
|
32
|
+
* Button configuration for primary, secondary, and destructive actions. <br />
|
|
33
|
+
* Automatically applies proper styling and order. <br />
|
|
34
|
+
*/
|
|
35
|
+
actions?: {
|
|
36
|
+
destructiveButton?: ButtonProps;
|
|
37
|
+
primaryButton?: ButtonProps;
|
|
38
|
+
secondaryButton?: ButtonProps;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Children elements: <br />
|
|
42
|
+
* - Filter component (SearchInput, Select, or SegmentedControl) <br />
|
|
43
|
+
* - Action buttons `<Button />` <br />
|
|
44
|
+
* - Icon-only utility buttons `<Button icon="..." />` <br />
|
|
45
|
+
* <br />
|
|
46
|
+
* Can mix and match the above children. <br />
|
|
47
|
+
* The order of children does not matter as they will be arranged properly. <br />
|
|
48
|
+
* When conflicting with other props, props take priority over children. <br />
|
|
49
|
+
*/
|
|
50
|
+
children?: PageToolbarChild[] | PageToolbarChild;
|
|
51
|
+
/** Filter component (SearchInput, Select, or SegmentedControl) */
|
|
52
|
+
filter?: {
|
|
53
|
+
variant: 'search' | 'select' | 'segmentedControl';
|
|
54
|
+
} & (SearchInputProps | SelectProps | SegmentedControlProps);
|
|
55
|
+
/**
|
|
56
|
+
* Size variant of the toolbar. <br />
|
|
57
|
+
* Affects the size of buttons and filter component. <br />
|
|
58
|
+
*/
|
|
59
|
+
size?: 'main' | 'sub';
|
|
60
|
+
/**
|
|
61
|
+
* Icon-only utility buttons `<Button icon="..." />`. <br />
|
|
62
|
+
* They usually appear as smaller buttons with only an icon and no text.
|
|
63
|
+
*/
|
|
64
|
+
utilities?: (ButtonProps & {
|
|
65
|
+
icon: {
|
|
66
|
+
src: IconDefinition;
|
|
67
|
+
};
|
|
68
|
+
})[];
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* PageToolbar component provides a flexible toolbar with filter, action buttons, and utility icons.
|
|
72
|
+
* Commonly used in page headers for primary user actions.
|
|
73
|
+
*/
|
|
74
|
+
declare const PageToolbar: import("react").ForwardRefExoticComponent<Omit<NativeElementPropsWithoutKeyAndRef<"div">, "children"> & {
|
|
75
|
+
/**
|
|
76
|
+
* Button configuration for primary, secondary, and destructive actions. <br />
|
|
77
|
+
* Automatically applies proper styling and order. <br />
|
|
78
|
+
*/
|
|
79
|
+
actions?: {
|
|
80
|
+
destructiveButton?: ButtonProps;
|
|
81
|
+
primaryButton?: ButtonProps;
|
|
82
|
+
secondaryButton?: ButtonProps;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Children elements: <br />
|
|
86
|
+
* - Filter component (SearchInput, Select, or SegmentedControl) <br />
|
|
87
|
+
* - Action buttons `<Button />` <br />
|
|
88
|
+
* - Icon-only utility buttons `<Button icon="..." />` <br />
|
|
89
|
+
* <br />
|
|
90
|
+
* Can mix and match the above children. <br />
|
|
91
|
+
* The order of children does not matter as they will be arranged properly. <br />
|
|
92
|
+
* When conflicting with other props, props take priority over children. <br />
|
|
93
|
+
*/
|
|
94
|
+
children?: PageToolbarChild[] | PageToolbarChild;
|
|
95
|
+
/** Filter component (SearchInput, Select, or SegmentedControl) */
|
|
96
|
+
filter?: {
|
|
97
|
+
variant: "search" | "select" | "segmentedControl";
|
|
98
|
+
} & (SearchInputProps | SelectProps | SegmentedControlProps);
|
|
99
|
+
/**
|
|
100
|
+
* Size variant of the toolbar. <br />
|
|
101
|
+
* Affects the size of buttons and filter component. <br />
|
|
102
|
+
*/
|
|
103
|
+
size?: "main" | "sub";
|
|
104
|
+
/**
|
|
105
|
+
* Icon-only utility buttons `<Button icon="..." />`. <br />
|
|
106
|
+
* They usually appear as smaller buttons with only an icon and no text.
|
|
107
|
+
*/
|
|
108
|
+
utilities?: (ButtonProps & {
|
|
109
|
+
icon: {
|
|
110
|
+
src: IconDefinition;
|
|
111
|
+
};
|
|
112
|
+
})[];
|
|
113
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
114
|
+
export default PageToolbar;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
import { pageToolbarClasses } from '@mezzanine-ui/core/page-toolbar';
|
|
4
|
+
import { renderFilterProp, renderActionsProp, renderIconButtonsProp, resolvePageToolbarChild } from './utils.js';
|
|
5
|
+
import ButtonGroup from '../Button/ButtonGroup.js';
|
|
6
|
+
import cx from 'clsx';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* PageToolbar component provides a flexible toolbar with filter, action buttons, and utility icons.
|
|
10
|
+
* Commonly used in page headers for primary user actions.
|
|
11
|
+
*/
|
|
12
|
+
const PageToolbar = forwardRef(function PageToolbar(props, ref) {
|
|
13
|
+
const { actions, children, className, filter, size = 'main', utilities, ...rest } = props;
|
|
14
|
+
const renderFilter = renderFilterProp(filter, size);
|
|
15
|
+
const renderActions = actions ? renderActionsProp(actions, size) : null;
|
|
16
|
+
const renderUtilities = utilities
|
|
17
|
+
? renderIconButtonsProp(utilities, size)
|
|
18
|
+
: null;
|
|
19
|
+
const { filter: filterFromChildren, actions: actionsFromChildren, utilities: utilitiesFromChildren, } = resolvePageToolbarChild(children, size);
|
|
20
|
+
return (jsxs("div", { ...rest, className: cx(pageToolbarClasses.host, pageToolbarClasses.size(size), className), ref: ref, children: [renderFilter || filterFromChildren, jsx(ButtonGroup, { children: renderActions || actionsFromChildren }), jsx(ButtonGroup, { children: renderUtilities || utilitiesFromChildren })] }));
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export { PageToolbar as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './PageToolbar.js';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { ButtonProps, ButtonGroupChild } from '../Button';
|
|
3
|
+
import { PageToolbarProps } from './PageToolbar';
|
|
4
|
+
type ToolbarButtonVariant = 'base-primary' | 'base-secondary' | 'destructive-secondary';
|
|
5
|
+
/**
|
|
6
|
+
* Renders a button from either ButtonProps or a React element.
|
|
7
|
+
* Applies the specified size and variant to the button.
|
|
8
|
+
*/
|
|
9
|
+
export declare const renderButton: (button: ButtonProps | ButtonGroupChild | undefined, size: ButtonProps["size"], variant: ToolbarButtonVariant) => ReactElement<ButtonProps> | null;
|
|
10
|
+
export declare const renderFilterProp: (prop: PageToolbarProps["filter"], size: "main" | "sub") => import("react/jsx-runtime").JSX.Element | null;
|
|
11
|
+
export declare const renderIconButtonWithProps: (child: ReactElement<ButtonProps>, size: ButtonProps["size"]) => ReactElement<ButtonProps>;
|
|
12
|
+
export declare const renderIconButtonsProp: (utilities: PageToolbarProps["utilities"], size: ButtonProps["size"]) => ButtonGroupChild | ButtonGroupChild[];
|
|
13
|
+
/**
|
|
14
|
+
* Renders action buttons based on the actions configuration.
|
|
15
|
+
* Supports both structured actions object and single button element/props.
|
|
16
|
+
*/
|
|
17
|
+
export declare const renderActionsProp: (actions: PageToolbarProps["actions"], size: ButtonProps["size"]) => ButtonGroupChild | ButtonGroupChild[];
|
|
18
|
+
export declare const resolvePageToolbarChild: (children: PageToolbarProps["children"], size: "main" | "sub") => {
|
|
19
|
+
filter: null;
|
|
20
|
+
actions: [ButtonGroupChild, ButtonGroupChild, ButtonGroupChild];
|
|
21
|
+
utilities: ButtonGroupChild[];
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Children, isValidElement, cloneElement } from 'react';
|
|
3
|
+
import Button from '../Button/Button.js';
|
|
4
|
+
import { flattenChildren } from '../utils/flatten-children.js';
|
|
5
|
+
import Input from '../Input/Input.js';
|
|
6
|
+
import Select from '../Select/Select.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Renders a button from either ButtonProps or a React element.
|
|
10
|
+
* Applies the specified size and variant to the button.
|
|
11
|
+
*/
|
|
12
|
+
const renderButton = (button, size, variant) => {
|
|
13
|
+
if (!button) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
if (isValidElement(button)) {
|
|
17
|
+
return cloneElement(button, {
|
|
18
|
+
size,
|
|
19
|
+
variant,
|
|
20
|
+
key: variant,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return jsx(Button, { ...button, size: size, variant: variant }, variant);
|
|
24
|
+
};
|
|
25
|
+
const withSize = (target, size) => {
|
|
26
|
+
return cloneElement(target, { size });
|
|
27
|
+
};
|
|
28
|
+
const renderFilterProp = (prop, size) => {
|
|
29
|
+
if (!prop) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const { variant } = prop;
|
|
33
|
+
if (variant === 'search') {
|
|
34
|
+
return (jsx(Input, { ...prop, size: size, variant: "search" }));
|
|
35
|
+
}
|
|
36
|
+
if (variant === 'select') {
|
|
37
|
+
return jsx(Select, { ...prop, size: size });
|
|
38
|
+
}
|
|
39
|
+
if (variant === 'segmentedControl') {
|
|
40
|
+
console.warn('SegmentedControl component is not implemented yet.');
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
};
|
|
45
|
+
const renderIconButtonWithProps = (child, size) => {
|
|
46
|
+
const { icon } = child.props;
|
|
47
|
+
return cloneElement(child, {
|
|
48
|
+
icon: icon
|
|
49
|
+
? {
|
|
50
|
+
...icon,
|
|
51
|
+
position: 'icon-only',
|
|
52
|
+
}
|
|
53
|
+
: undefined,
|
|
54
|
+
size,
|
|
55
|
+
variant: 'base-secondary',
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const renderIconButtonsProp = (utilities, size) => {
|
|
59
|
+
const result = [];
|
|
60
|
+
utilities === null || utilities === void 0 ? void 0 : utilities.forEach((buttonProps) => {
|
|
61
|
+
result.push(jsx(Button, { ...buttonProps, size: size, icon: {
|
|
62
|
+
...buttonProps.icon,
|
|
63
|
+
position: 'icon-only',
|
|
64
|
+
}, variant: "base-secondary" }));
|
|
65
|
+
});
|
|
66
|
+
return result;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Renders action buttons based on the actions configuration.
|
|
70
|
+
* Supports both structured actions object and single button element/props.
|
|
71
|
+
*/
|
|
72
|
+
const renderActionsProp = (actions, size) => {
|
|
73
|
+
if (actions &&
|
|
74
|
+
('primaryButton' in actions ||
|
|
75
|
+
'secondaryButton' in actions ||
|
|
76
|
+
'destructiveButton' in actions)) {
|
|
77
|
+
return [
|
|
78
|
+
renderButton(actions.destructiveButton, size, 'destructive-secondary'),
|
|
79
|
+
renderButton(actions.secondaryButton, size, 'base-secondary'),
|
|
80
|
+
renderButton(actions.primaryButton, size, 'base-primary'),
|
|
81
|
+
].filter(Boolean);
|
|
82
|
+
}
|
|
83
|
+
return jsx(Button, { ...actions, size: size, variant: "base-primary" });
|
|
84
|
+
};
|
|
85
|
+
const resolvePageToolbarChild = (children, size) => {
|
|
86
|
+
let filter = null;
|
|
87
|
+
const actions = [
|
|
88
|
+
null,
|
|
89
|
+
null,
|
|
90
|
+
null,
|
|
91
|
+
];
|
|
92
|
+
const buttonsWithoutVariant = [];
|
|
93
|
+
const utilities = [];
|
|
94
|
+
if (children) {
|
|
95
|
+
const flatChildren = flattenChildren(children);
|
|
96
|
+
Children.forEach(flatChildren, (child) => {
|
|
97
|
+
var _a;
|
|
98
|
+
if (!isValidElement(child)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const { type, props } = child;
|
|
102
|
+
// is filter
|
|
103
|
+
if (type === Input && props.variant === 'search') {
|
|
104
|
+
filter = withSize(child, size);
|
|
105
|
+
}
|
|
106
|
+
else if (type === Select) {
|
|
107
|
+
// TODO: waiting size prop Select
|
|
108
|
+
filter = withSize(child, size);
|
|
109
|
+
}
|
|
110
|
+
else if (type.toString() === 'SegmentedControl') {
|
|
111
|
+
console.warn('SegmentedControl component is not implemented yet.');
|
|
112
|
+
}
|
|
113
|
+
// is utilities (icon button)
|
|
114
|
+
else if (type === Button &&
|
|
115
|
+
((_a = props.icon) === null || _a === void 0 ? void 0 : _a.position) === 'icon-only') {
|
|
116
|
+
utilities.push(renderIconButtonWithProps(child, size));
|
|
117
|
+
}
|
|
118
|
+
// is actions (normal button)
|
|
119
|
+
else if (type === Button && props.variant) {
|
|
120
|
+
// with variant prop
|
|
121
|
+
const variant = props.variant;
|
|
122
|
+
if (variant !== 'base-primary' &&
|
|
123
|
+
variant !== 'base-secondary' &&
|
|
124
|
+
variant !== 'destructive-secondary') {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const buttonElement = renderButton(child, size, variant);
|
|
128
|
+
if (variant === 'destructive-secondary') {
|
|
129
|
+
actions[0] = buttonElement;
|
|
130
|
+
}
|
|
131
|
+
else if (variant === 'base-secondary') {
|
|
132
|
+
actions[1] = buttonElement;
|
|
133
|
+
}
|
|
134
|
+
else if (variant === 'base-primary') {
|
|
135
|
+
actions[2] = buttonElement;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (type === Button) {
|
|
139
|
+
// without variant prop
|
|
140
|
+
buttonsWithoutVariant.push(child);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
// Fill the buttons from left to right according to the number of buttons passed in,
|
|
144
|
+
// and ensure that the button on the right has a higher priority
|
|
145
|
+
const fillIndexStartWith = 3 -
|
|
146
|
+
buttonsWithoutVariant.length -
|
|
147
|
+
(actions[0] ? 1 : 0) -
|
|
148
|
+
(actions[1] ? 1 : 0) -
|
|
149
|
+
(actions[2] ? 1 : 0);
|
|
150
|
+
buttonsWithoutVariant.forEach((button) => {
|
|
151
|
+
if (fillIndexStartWith <= 0 && !actions[0]) {
|
|
152
|
+
actions[0] = renderButton(button, size, 'destructive-secondary');
|
|
153
|
+
}
|
|
154
|
+
else if (fillIndexStartWith <= 1 && !actions[1]) {
|
|
155
|
+
actions[1] = renderButton(button, size, 'base-secondary');
|
|
156
|
+
}
|
|
157
|
+
else if (fillIndexStartWith <= 2 && !actions[2]) {
|
|
158
|
+
actions[2] = renderButton(button, size, 'base-primary');
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return { filter, actions, utilities };
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
export { renderActionsProp, renderButton, renderFilterProp, renderIconButtonWithProps, renderIconButtonsProp, resolvePageToolbarChild };
|