@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
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { memo, forwardRef, useMemo, Fragment as Fragment$1 } from 'react';
|
|
4
|
+
import { tableClasses, getRowKey } from '@mezzanine-ui/core/table';
|
|
5
|
+
import { Draggable } from '@hello-pangea/dnd';
|
|
6
|
+
import { useTableContext } from '../TableContext.js';
|
|
7
|
+
import { TableRow } from './TableRow.js';
|
|
8
|
+
import { TableExpandedRow } from './TableExpandedRow.js';
|
|
9
|
+
import { useTableVirtualization } from '../hooks/useTableVirtualization.js';
|
|
10
|
+
import { composeRefs } from '../../utils/composeRefs.js';
|
|
11
|
+
import { MOTION_EASING, MOTION_DURATION } from '@mezzanine-ui/system/motion';
|
|
12
|
+
import Empty from '../../Empty/Empty.js';
|
|
13
|
+
import Fade from '../../Transition/Fade.js';
|
|
14
|
+
import cx from 'clsx';
|
|
15
|
+
|
|
16
|
+
const TableBodyInner = forwardRef(function TableBody(props, ref) {
|
|
17
|
+
const { className, droppableRef } = props;
|
|
18
|
+
const { columns, dataSource, draggable, emptyProps, expansion, loading, scrollContainerRef, selection, size, virtualScrollEnabled, } = useTableContext();
|
|
19
|
+
// Use virtualization with the scroll container ref from parent
|
|
20
|
+
const virtualization = useTableVirtualization({
|
|
21
|
+
dataSource,
|
|
22
|
+
enabled: virtualScrollEnabled !== null && virtualScrollEnabled !== void 0 ? virtualScrollEnabled : false,
|
|
23
|
+
isRowExpanded: expansion === null || expansion === void 0 ? void 0 : expansion.isRowExpanded,
|
|
24
|
+
scrollContainerRef: scrollContainerRef,
|
|
25
|
+
});
|
|
26
|
+
const isEmpty = dataSource.length === 0;
|
|
27
|
+
// Calculate total column span for empty row
|
|
28
|
+
const totalColSpan = useMemo(() => {
|
|
29
|
+
let colSpan = columns.length;
|
|
30
|
+
if (draggable === null || draggable === void 0 ? void 0 : draggable.enabled)
|
|
31
|
+
colSpan += 1;
|
|
32
|
+
if (selection)
|
|
33
|
+
colSpan += 1;
|
|
34
|
+
if (expansion)
|
|
35
|
+
colSpan += 1;
|
|
36
|
+
return colSpan;
|
|
37
|
+
}, [columns.length, draggable === null || draggable === void 0 ? void 0 : draggable.enabled, expansion, selection]);
|
|
38
|
+
// Helper to render expanded content with optional animation
|
|
39
|
+
const renderExpandedContent = (record, isExpanded) => {
|
|
40
|
+
if (!expansion)
|
|
41
|
+
return null;
|
|
42
|
+
return (jsx(Fade, { duration: {
|
|
43
|
+
enter: MOTION_DURATION.moderate,
|
|
44
|
+
exit: MOTION_DURATION.moderate,
|
|
45
|
+
}, easing: {
|
|
46
|
+
enter: MOTION_EASING.entrance,
|
|
47
|
+
exit: MOTION_EASING.exit,
|
|
48
|
+
}, in: isExpanded, children: jsx(TableExpandedRow, { record: record }) }));
|
|
49
|
+
};
|
|
50
|
+
// Helper to render row and its expanded content
|
|
51
|
+
const renderRowContent = (record, index, options) => {
|
|
52
|
+
var _a;
|
|
53
|
+
const rowKey = getRowKey(record);
|
|
54
|
+
const isExpanded = (_a = expansion === null || expansion === void 0 ? void 0 : expansion.isRowExpanded(rowKey)) !== null && _a !== void 0 ? _a : false;
|
|
55
|
+
return (jsxs(Fragment, { children: [jsx(TableRow, { className: options === null || options === void 0 ? void 0 : options.className, "data-index": virtualization ? index : undefined, draggableProvided: options === null || options === void 0 ? void 0 : options.draggableProvided, record: record, ref: options === null || options === void 0 ? void 0 : options.measureRef, rowIndex: index }), renderExpandedContent(record, isExpanded)] }));
|
|
56
|
+
};
|
|
57
|
+
const renderRows = () => {
|
|
58
|
+
// Empty state
|
|
59
|
+
if (isEmpty && !loading) {
|
|
60
|
+
const { size: emptySize = size, ...restEmptyProp } = emptyProps || {};
|
|
61
|
+
return (jsx("tr", { className: tableClasses.emptyRow, children: jsx("td", { className: tableClasses.empty, colSpan: totalColSpan, children: jsx(Empty, { size: emptySize, ...restEmptyProp }) }) }));
|
|
62
|
+
}
|
|
63
|
+
// Determine items to render (virtualized or all)
|
|
64
|
+
const itemsToRender = virtualization
|
|
65
|
+
? virtualization.virtualItems.map((vi) => ({
|
|
66
|
+
index: vi.index,
|
|
67
|
+
measureRef: virtualization.measureElement,
|
|
68
|
+
record: dataSource[vi.index],
|
|
69
|
+
}))
|
|
70
|
+
: dataSource.map((record, index) => ({
|
|
71
|
+
index,
|
|
72
|
+
measureRef: undefined,
|
|
73
|
+
record,
|
|
74
|
+
}));
|
|
75
|
+
// Render each row, optionally wrapped with Draggable
|
|
76
|
+
const rowElements = itemsToRender.map((item) => {
|
|
77
|
+
const rowKey = getRowKey(item.record);
|
|
78
|
+
// Draggable mode
|
|
79
|
+
if ((draggable === null || draggable === void 0 ? void 0 : draggable.enabled) && !virtualization) {
|
|
80
|
+
return (jsx(Draggable, { draggableId: String(rowKey), index: item.index, isDragDisabled: !draggable.enabled, children: (provided, snapshot) => (jsx(Fragment, { children: renderRowContent(item.record, item.index, {
|
|
81
|
+
className: snapshot.isDragging
|
|
82
|
+
? tableClasses.bodyRowDragging
|
|
83
|
+
: undefined,
|
|
84
|
+
draggableProvided: provided,
|
|
85
|
+
}) })) }, rowKey));
|
|
86
|
+
}
|
|
87
|
+
// Normal or virtualized row
|
|
88
|
+
return (jsx(Fragment$1, { children: renderRowContent(item.record, item.index, {
|
|
89
|
+
measureRef: item.measureRef,
|
|
90
|
+
}) }, rowKey));
|
|
91
|
+
});
|
|
92
|
+
// Virtualization needs padding rows for scroll height
|
|
93
|
+
if (virtualization) {
|
|
94
|
+
return (jsxs(Fragment, { children: [virtualization.paddingTop > 0 && (jsx("tr", { "aria-hidden": "true", children: jsx("td", { colSpan: totalColSpan, style: { height: virtualization.paddingTop, padding: 0 } }) })), rowElements, virtualization.paddingBottom > 0 && (jsx("tr", { "aria-hidden": "true", children: jsx("td", { colSpan: totalColSpan, style: { height: virtualization.paddingBottom, padding: 0 } }) }))] }));
|
|
95
|
+
}
|
|
96
|
+
return rowElements;
|
|
97
|
+
};
|
|
98
|
+
return (jsx("tbody", { className: cx(tableClasses.body, className), ref: droppableRef ? composeRefs([ref, droppableRef]) : ref, children: renderRows() }));
|
|
99
|
+
});
|
|
100
|
+
const TableBody = memo(TableBodyInner);
|
|
101
|
+
|
|
102
|
+
export { TableBody };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type TableColumn, type TableDataSource } from '@mezzanine-ui/core/table';
|
|
2
|
+
export interface TableCellProps<T extends TableDataSource = TableDataSource> {
|
|
3
|
+
className?: string;
|
|
4
|
+
colSpan?: number;
|
|
5
|
+
column: TableColumn<T>;
|
|
6
|
+
columnIndex: number;
|
|
7
|
+
fixed?: 'end' | 'start';
|
|
8
|
+
fixedOffset?: number;
|
|
9
|
+
record: T;
|
|
10
|
+
rowIndex: number;
|
|
11
|
+
/** Whether to show shadow on this cell (only for edge fixed columns) */
|
|
12
|
+
showShadow?: boolean;
|
|
13
|
+
style?: React.CSSProperties;
|
|
14
|
+
}
|
|
15
|
+
declare const TableCellInner: import("react").ForwardRefExoticComponent<TableCellProps<TableDataSource> & import("react").RefAttributes<HTMLTableCellElement>>;
|
|
16
|
+
export declare const TableCell: typeof TableCellInner;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { memo, forwardRef, useMemo, useCallback } from 'react';
|
|
4
|
+
import { getCellAlignClass, tableClasses } from '@mezzanine-ui/core/table';
|
|
5
|
+
import { useTableContext } from '../TableContext.js';
|
|
6
|
+
import Skeleton from '../../Skeleton/Skeleton.js';
|
|
7
|
+
import cx from 'clsx';
|
|
8
|
+
|
|
9
|
+
const TableCellInner = forwardRef(function TableCell(props, ref) {
|
|
10
|
+
const { loading } = useTableContext();
|
|
11
|
+
const { className, colSpan = 1, column, columnIndex, fixed, fixedOffset = 0, record, rowIndex, showShadow = false, style, } = props;
|
|
12
|
+
const { highlight } = useTableContext();
|
|
13
|
+
const cellValue = useMemo(() => {
|
|
14
|
+
var _a;
|
|
15
|
+
const dataIndex = (_a = column.dataIndex) !== null && _a !== void 0 ? _a : column.key;
|
|
16
|
+
if (column.render) {
|
|
17
|
+
return column.render(record, rowIndex);
|
|
18
|
+
}
|
|
19
|
+
return record[dataIndex];
|
|
20
|
+
}, [column, record, rowIndex]);
|
|
21
|
+
// Width is managed by colgroup, set fixed position offset via CSS variable
|
|
22
|
+
const cellStyle = useMemo(() => {
|
|
23
|
+
const baseStyle = { ...style };
|
|
24
|
+
if (column.ellipsis) {
|
|
25
|
+
baseStyle.overflow = 'hidden';
|
|
26
|
+
baseStyle.textOverflow = 'ellipsis';
|
|
27
|
+
baseStyle.whiteSpace = 'nowrap';
|
|
28
|
+
}
|
|
29
|
+
// Set CSS variable for fixed column positioning
|
|
30
|
+
if (fixed === 'start') {
|
|
31
|
+
baseStyle['--fixed-start-offset'] =
|
|
32
|
+
`${fixedOffset}px`;
|
|
33
|
+
}
|
|
34
|
+
else if (fixed === 'end') {
|
|
35
|
+
baseStyle['--fixed-end-offset'] =
|
|
36
|
+
`${fixedOffset}px`;
|
|
37
|
+
}
|
|
38
|
+
return baseStyle;
|
|
39
|
+
}, [style, column.ellipsis, fixed, fixedOffset]);
|
|
40
|
+
const alignClass = getCellAlignClass(column.align);
|
|
41
|
+
// Check if this cell should be highlighted based on highlight mode
|
|
42
|
+
const isCellHighlighted = useMemo(() => {
|
|
43
|
+
if (!highlight)
|
|
44
|
+
return false;
|
|
45
|
+
const { columnIndex: hoveredColumn, mode, rowIndex: hoveredRow, } = highlight;
|
|
46
|
+
if (hoveredRow === null || hoveredColumn === null)
|
|
47
|
+
return false;
|
|
48
|
+
switch (mode) {
|
|
49
|
+
case 'cell':
|
|
50
|
+
return hoveredRow === rowIndex && hoveredColumn === columnIndex;
|
|
51
|
+
case 'column':
|
|
52
|
+
return hoveredColumn === columnIndex;
|
|
53
|
+
case 'cross':
|
|
54
|
+
return hoveredColumn === columnIndex;
|
|
55
|
+
case 'row':
|
|
56
|
+
default:
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}, [highlight, rowIndex, columnIndex]);
|
|
60
|
+
const handleMouseEnter = useCallback(() => {
|
|
61
|
+
highlight === null || highlight === void 0 ? void 0 : highlight.setHoveredCell(rowIndex, columnIndex);
|
|
62
|
+
}, [highlight, rowIndex, columnIndex]);
|
|
63
|
+
return (jsx("td", { className: cx(tableClasses.cell, alignClass, {
|
|
64
|
+
[tableClasses.cellEllipsis]: column.ellipsis,
|
|
65
|
+
[tableClasses.cellFixed]: !!fixed,
|
|
66
|
+
[tableClasses.cellFixedEnd]: fixed === 'end',
|
|
67
|
+
[tableClasses.cellFixedShadow]: showShadow,
|
|
68
|
+
[tableClasses.cellFixedStart]: fixed === 'start',
|
|
69
|
+
[tableClasses.cellHighlight]: isCellHighlighted,
|
|
70
|
+
}, column.className, className), colSpan: colSpan > 1 ? colSpan : undefined, onMouseEnter: handleMouseEnter, ref: ref, style: cellStyle, children: loading ? (jsx(Skeleton, { width: "100%", variant: "body-highlight" })) : (jsx("span", { className: tableClasses.cellContent, children: cellValue })) }));
|
|
71
|
+
});
|
|
72
|
+
const TableCell = memo(TableCellInner);
|
|
73
|
+
|
|
74
|
+
export { TableCell };
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { memo, useMemo } from 'react';
|
|
4
|
+
import { DRAG_HANDLE_COLUMN_WIDTH, SELECTION_COLUMN_WIDTH, EXPANSION_COLUMN_WIDTH, tableClasses, DRAG_HANDLE_KEY, EXPANSION_KEY, SELECTION_KEY } from '@mezzanine-ui/core/table';
|
|
5
|
+
import { useTableContext, useTableSuperContext } from '../TableContext.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Check if width calculation should be applied.
|
|
9
|
+
* Only calculate explicit widths for root tables (not nested).
|
|
10
|
+
* Nested tables should let columns use natural CSS behavior.
|
|
11
|
+
*/
|
|
12
|
+
function shouldCalculateWidths(isNestedTable, containerWidth) {
|
|
13
|
+
// Don't calculate widths for nested tables - they inherit parent's context
|
|
14
|
+
// and should use natural CSS column sizing
|
|
15
|
+
if (isNestedTable) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
// Don't calculate if container width is not available
|
|
19
|
+
if (!containerWidth || containerWidth <= 0) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Calculate the resolved width for each column.
|
|
26
|
+
* - Columns with explicit width use that value
|
|
27
|
+
* - Columns without width share the remaining space equally (simulating flex: 1)
|
|
28
|
+
* - All widths are clamped to minWidth/maxWidth if specified
|
|
29
|
+
*/
|
|
30
|
+
function calculateColumnWidths(columns, containerWidth, actionColumnsWidth, getResizedColumnWidth) {
|
|
31
|
+
const widthMap = new Map();
|
|
32
|
+
// If container width is not available yet, return empty map
|
|
33
|
+
if (containerWidth <= 0) {
|
|
34
|
+
return widthMap;
|
|
35
|
+
}
|
|
36
|
+
// Available width for data columns
|
|
37
|
+
const availableWidth = containerWidth - actionColumnsWidth;
|
|
38
|
+
if (availableWidth <= 0) {
|
|
39
|
+
return widthMap;
|
|
40
|
+
}
|
|
41
|
+
// First pass: identify columns with explicit width and calculate total fixed width
|
|
42
|
+
let totalFixedWidth = 0;
|
|
43
|
+
const flexColumns = [];
|
|
44
|
+
columns.forEach((column) => {
|
|
45
|
+
const resizedWidth = getResizedColumnWidth === null || getResizedColumnWidth === void 0 ? void 0 : getResizedColumnWidth(column.key);
|
|
46
|
+
if (resizedWidth !== undefined) {
|
|
47
|
+
// Column has been resized, use that width
|
|
48
|
+
widthMap.set(column.key, resizedWidth);
|
|
49
|
+
totalFixedWidth += resizedWidth;
|
|
50
|
+
}
|
|
51
|
+
else if (column.width !== undefined) {
|
|
52
|
+
// Column has explicit width
|
|
53
|
+
const width = clampWidth(column.width, column.minWidth, column.maxWidth);
|
|
54
|
+
widthMap.set(column.key, width);
|
|
55
|
+
totalFixedWidth += width;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Column needs flex width calculation
|
|
59
|
+
flexColumns.push(column);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// Second pass: distribute remaining width to flex columns
|
|
63
|
+
if (flexColumns.length > 0) {
|
|
64
|
+
const remainingWidth = availableWidth - totalFixedWidth;
|
|
65
|
+
// Calculate flex widths while respecting min/max constraints
|
|
66
|
+
// This may require multiple iterations if constraints cause redistribution
|
|
67
|
+
let iterationCount = 0;
|
|
68
|
+
const maxIterations = flexColumns.length + 1;
|
|
69
|
+
let unallocatedWidth = remainingWidth;
|
|
70
|
+
const pendingColumns = [...flexColumns];
|
|
71
|
+
while (pendingColumns.length > 0 && iterationCount < maxIterations) {
|
|
72
|
+
iterationCount += 1;
|
|
73
|
+
const flexWidth = unallocatedWidth / pendingColumns.length;
|
|
74
|
+
const stillPending = [];
|
|
75
|
+
pendingColumns.forEach((column) => {
|
|
76
|
+
const clampedWidth = clampWidth(flexWidth, column.minWidth, column.maxWidth);
|
|
77
|
+
if (clampedWidth !== flexWidth) {
|
|
78
|
+
// Width was clamped, allocate this column and redistribute
|
|
79
|
+
widthMap.set(column.key, clampedWidth);
|
|
80
|
+
unallocatedWidth -= clampedWidth;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
stillPending.push(column);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
// If no columns were allocated in this iteration, allocate all remaining
|
|
87
|
+
if (stillPending.length === pendingColumns.length) {
|
|
88
|
+
stillPending.forEach((column) => {
|
|
89
|
+
const finalWidth = Math.max(0, unallocatedWidth / stillPending.length);
|
|
90
|
+
widthMap.set(column.key, finalWidth);
|
|
91
|
+
});
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
pendingColumns.length = 0;
|
|
95
|
+
pendingColumns.push(...stillPending);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return widthMap;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Clamp a width value between min and max bounds
|
|
102
|
+
*/
|
|
103
|
+
function clampWidth(width, minWidth, maxWidth) {
|
|
104
|
+
let result = width;
|
|
105
|
+
if (minWidth !== undefined && result < minWidth) {
|
|
106
|
+
result = minWidth;
|
|
107
|
+
}
|
|
108
|
+
if (maxWidth !== undefined && result > maxWidth) {
|
|
109
|
+
result = maxWidth;
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
const TableColGroupInner = memo(function TableColGroup(props) {
|
|
114
|
+
const { className } = props;
|
|
115
|
+
const { columnState, columns, draggable, expansion, isInsideExpandedContentArea, selection, } = useTableContext();
|
|
116
|
+
const { containerWidth, getResizedColumnWidth: getParentResizedColumnWidth } = useTableSuperContext();
|
|
117
|
+
// For nested tables, use parent's resized widths; for root tables, use own
|
|
118
|
+
const getResizedColumnWidth = isInsideExpandedContentArea
|
|
119
|
+
? getParentResizedColumnWidth
|
|
120
|
+
: columnState === null || columnState === void 0 ? void 0 : columnState.getResizedColumnWidth;
|
|
121
|
+
// Check if we should calculate explicit widths
|
|
122
|
+
const enableWidthCalculation = shouldCalculateWidths(!!isInsideExpandedContentArea, containerWidth);
|
|
123
|
+
// Calculate action columns total width
|
|
124
|
+
const actionColumnsWidth = useMemo(() => {
|
|
125
|
+
let width = 0;
|
|
126
|
+
if (draggable === null || draggable === void 0 ? void 0 : draggable.enabled)
|
|
127
|
+
width += DRAG_HANDLE_COLUMN_WIDTH;
|
|
128
|
+
if (selection)
|
|
129
|
+
width += SELECTION_COLUMN_WIDTH;
|
|
130
|
+
if (expansion)
|
|
131
|
+
width += EXPANSION_COLUMN_WIDTH;
|
|
132
|
+
return width;
|
|
133
|
+
}, [draggable === null || draggable === void 0 ? void 0 : draggable.enabled, expansion, selection]);
|
|
134
|
+
// Calculate resolved widths for all columns (only for root tables)
|
|
135
|
+
const resolvedWidths = useMemo(() => {
|
|
136
|
+
if (!enableWidthCalculation) {
|
|
137
|
+
return new Map();
|
|
138
|
+
}
|
|
139
|
+
return calculateColumnWidths(columns, containerWidth !== null && containerWidth !== void 0 ? containerWidth : 0, actionColumnsWidth, getResizedColumnWidth);
|
|
140
|
+
}, [
|
|
141
|
+
enableWidthCalculation,
|
|
142
|
+
columns,
|
|
143
|
+
containerWidth,
|
|
144
|
+
actionColumnsWidth,
|
|
145
|
+
getResizedColumnWidth,
|
|
146
|
+
]);
|
|
147
|
+
const renderCols = () => {
|
|
148
|
+
const cols = [];
|
|
149
|
+
// Drag handle column (must be first)
|
|
150
|
+
if (draggable === null || draggable === void 0 ? void 0 : draggable.enabled) {
|
|
151
|
+
cols.push(jsx("col", { className: tableClasses.dragHandleCell, style: {
|
|
152
|
+
maxWidth: DRAG_HANDLE_COLUMN_WIDTH,
|
|
153
|
+
minWidth: DRAG_HANDLE_COLUMN_WIDTH,
|
|
154
|
+
width: DRAG_HANDLE_COLUMN_WIDTH,
|
|
155
|
+
} }, DRAG_HANDLE_KEY));
|
|
156
|
+
}
|
|
157
|
+
// Expand column
|
|
158
|
+
if (expansion) {
|
|
159
|
+
cols.push(jsx("col", { className: tableClasses.expandCell, style: {
|
|
160
|
+
maxWidth: EXPANSION_COLUMN_WIDTH,
|
|
161
|
+
minWidth: EXPANSION_COLUMN_WIDTH,
|
|
162
|
+
width: EXPANSION_COLUMN_WIDTH,
|
|
163
|
+
} }, EXPANSION_KEY));
|
|
164
|
+
}
|
|
165
|
+
// Selection column
|
|
166
|
+
if (selection) {
|
|
167
|
+
cols.push(jsx("col", { className: tableClasses.selectionColumn, style: {
|
|
168
|
+
maxWidth: SELECTION_COLUMN_WIDTH,
|
|
169
|
+
minWidth: SELECTION_COLUMN_WIDTH,
|
|
170
|
+
width: SELECTION_COLUMN_WIDTH,
|
|
171
|
+
} }, SELECTION_KEY));
|
|
172
|
+
}
|
|
173
|
+
// Data columns
|
|
174
|
+
columns.forEach((column) => {
|
|
175
|
+
var _a;
|
|
176
|
+
const style = {};
|
|
177
|
+
// For root tables with width calculation enabled, use resolved widths
|
|
178
|
+
// For nested tables, sync with parent's resized widths
|
|
179
|
+
if (enableWidthCalculation) {
|
|
180
|
+
const resolvedWidth = resolvedWidths.get(column.key);
|
|
181
|
+
if (resolvedWidth !== undefined) {
|
|
182
|
+
style.width = resolvedWidth;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Nested table: check if parent has resized this column
|
|
187
|
+
const parentResizedWidth = (_a = getResizedColumnWidth === null || getResizedColumnWidth === void 0 ? void 0 : getResizedColumnWidth(column.key)) !== null && _a !== void 0 ? _a : column.width;
|
|
188
|
+
if (parentResizedWidth !== undefined) {
|
|
189
|
+
style.width = parentResizedWidth;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (column.minWidth !== undefined) {
|
|
193
|
+
style.minWidth = column.minWidth;
|
|
194
|
+
}
|
|
195
|
+
if (column.maxWidth !== undefined) {
|
|
196
|
+
style.maxWidth = column.maxWidth;
|
|
197
|
+
}
|
|
198
|
+
cols.push(jsx("col", { style: style }, column.key));
|
|
199
|
+
});
|
|
200
|
+
return cols;
|
|
201
|
+
};
|
|
202
|
+
return jsx("colgroup", { className: className, children: renderCols() });
|
|
203
|
+
});
|
|
204
|
+
const TableColGroup = TableColGroupInner;
|
|
205
|
+
|
|
206
|
+
export { TableColGroup };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface TableDragHandleCellProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
dragHandleProps?: Record<string, unknown>;
|
|
4
|
+
fixed?: boolean;
|
|
5
|
+
fixedOffset?: number;
|
|
6
|
+
isHeader?: boolean;
|
|
7
|
+
showShadow?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const TableDragHandleCell: import("react").NamedExoticComponent<TableDragHandleCellProps & import("react").RefAttributes<HTMLTableCellElement>>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { memo, forwardRef } from 'react';
|
|
4
|
+
import { tableClasses } from '@mezzanine-ui/core/table';
|
|
5
|
+
import { DotDragVerticalIcon } from '@mezzanine-ui/icons';
|
|
6
|
+
import { useTableContext } from '../TableContext.js';
|
|
7
|
+
import Skeleton from '../../Skeleton/Skeleton.js';
|
|
8
|
+
import Icon from '../../Icon/Icon.js';
|
|
9
|
+
import cx from 'clsx';
|
|
10
|
+
|
|
11
|
+
const TableDragHandleCellInner = forwardRef(function TableDragHandleCell(props, ref) {
|
|
12
|
+
const { loading } = useTableContext();
|
|
13
|
+
const { className, dragHandleProps, fixed = false, fixedOffset = 0, isHeader = false, showShadow = false, } = props;
|
|
14
|
+
const CellComponent = isHeader ? 'th' : 'td';
|
|
15
|
+
const cellStyle = {};
|
|
16
|
+
if (fixed) {
|
|
17
|
+
cellStyle['--fixed-start-offset'] =
|
|
18
|
+
`${fixedOffset}px`;
|
|
19
|
+
}
|
|
20
|
+
const renderChild = () => {
|
|
21
|
+
if (!isHeader) {
|
|
22
|
+
if (loading) {
|
|
23
|
+
return jsx(Skeleton, { width: "100%", variant: "body-highlight" });
|
|
24
|
+
}
|
|
25
|
+
return (jsx("span", { className: tableClasses.dragHandle, ...dragHandleProps, children: jsx(Icon, { color: "neutral", icon: DotDragVerticalIcon }) }));
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
};
|
|
29
|
+
return (jsx(CellComponent, { className: cx(isHeader ? tableClasses.headerCell : tableClasses.cell, tableClasses.dragHandleCell, {
|
|
30
|
+
[tableClasses.cellFixed]: fixed,
|
|
31
|
+
[tableClasses.cellFixedStart]: fixed,
|
|
32
|
+
[tableClasses.cellFixedShadow]: showShadow,
|
|
33
|
+
}, className), ref: ref, scope: isHeader ? 'col' : undefined, style: cellStyle, children: renderChild() }));
|
|
34
|
+
});
|
|
35
|
+
const TableDragHandleCell = memo(TableDragHandleCellInner);
|
|
36
|
+
|
|
37
|
+
export { TableDragHandleCell };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface TableExpandCellProps {
|
|
2
|
+
canExpand?: boolean;
|
|
3
|
+
className?: string;
|
|
4
|
+
expanded: boolean;
|
|
5
|
+
fixed?: boolean;
|
|
6
|
+
fixedOffset?: number;
|
|
7
|
+
isHeader?: boolean;
|
|
8
|
+
onClick?: VoidFunction;
|
|
9
|
+
showShadow?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const TableExpandCell: import("react").NamedExoticComponent<TableExpandCellProps & import("react").RefAttributes<HTMLTableCellElement>>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { memo, forwardRef, useCallback } from 'react';
|
|
4
|
+
import { tableClasses } from '@mezzanine-ui/core/table';
|
|
5
|
+
import { ChevronRightIcon } from '@mezzanine-ui/icons';
|
|
6
|
+
import { useTableContext } from '../TableContext.js';
|
|
7
|
+
import Skeleton from '../../Skeleton/Skeleton.js';
|
|
8
|
+
import Icon from '../../Icon/Icon.js';
|
|
9
|
+
import cx from 'clsx';
|
|
10
|
+
|
|
11
|
+
const TableExpandCellInner = forwardRef(function TableExpandCell(props, ref) {
|
|
12
|
+
const { loading } = useTableContext();
|
|
13
|
+
const { canExpand = true, className, expanded, fixed = false, fixedOffset = 0, isHeader = false, onClick, showShadow = false, } = props;
|
|
14
|
+
const handleClick = useCallback((event) => {
|
|
15
|
+
event.stopPropagation();
|
|
16
|
+
if (canExpand && onClick) {
|
|
17
|
+
onClick();
|
|
18
|
+
}
|
|
19
|
+
}, [canExpand, onClick]);
|
|
20
|
+
const CellComponent = isHeader ? 'th' : 'td';
|
|
21
|
+
const cellStyle = {};
|
|
22
|
+
if (fixed) {
|
|
23
|
+
cellStyle['--fixed-start-offset'] =
|
|
24
|
+
`${fixedOffset}px`;
|
|
25
|
+
}
|
|
26
|
+
const renderChild = () => {
|
|
27
|
+
if (isHeader)
|
|
28
|
+
return null;
|
|
29
|
+
if (loading) {
|
|
30
|
+
return jsx(Skeleton, { width: "100%", variant: "body-highlight" });
|
|
31
|
+
}
|
|
32
|
+
return canExpand ? (jsx("button", { className: cx(tableClasses.expandIcon, {
|
|
33
|
+
[tableClasses.expandIconExpanded]: expanded,
|
|
34
|
+
}), onClick: handleClick, type: "button", children: jsx(Icon, { icon: ChevronRightIcon, color: "inherit" }) })) : null;
|
|
35
|
+
};
|
|
36
|
+
return (jsx(CellComponent, { className: cx(isHeader ? tableClasses.headerCell : tableClasses.cell, tableClasses.expandCell, {
|
|
37
|
+
[tableClasses.cellFixed]: fixed,
|
|
38
|
+
[tableClasses.cellFixedStart]: fixed,
|
|
39
|
+
[tableClasses.cellFixedShadow]: showShadow,
|
|
40
|
+
}, className), ref: ref, scope: isHeader ? 'col' : undefined, style: cellStyle, children: renderChild() }));
|
|
41
|
+
});
|
|
42
|
+
const TableExpandCell = memo(TableExpandCellInner);
|
|
43
|
+
|
|
44
|
+
export { TableExpandCell };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type TableDataSource } from '@mezzanine-ui/core/table';
|
|
2
|
+
export interface TableExpandedRowProps<T extends TableDataSource = TableDataSource> {
|
|
3
|
+
className?: string;
|
|
4
|
+
record: T;
|
|
5
|
+
style?: React.CSSProperties;
|
|
6
|
+
}
|
|
7
|
+
declare const TableExpandedRowInner: import("react").ForwardRefExoticComponent<TableExpandedRowProps<TableDataSource> & import("react").RefAttributes<HTMLTableRowElement>>;
|
|
8
|
+
export declare const TableExpandedRow: typeof TableExpandedRowInner;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { memo, forwardRef, useMemo, cloneElement } from 'react';
|
|
4
|
+
import { getRowKey, tableClasses } from '@mezzanine-ui/core/table';
|
|
5
|
+
import { useTableContext } from '../TableContext.js';
|
|
6
|
+
import { Table } from '../Table.js';
|
|
7
|
+
import cx from 'clsx';
|
|
8
|
+
|
|
9
|
+
const TableExpandedRowInner = forwardRef(function TableExpandedRow(props, ref) {
|
|
10
|
+
const { className, record, style } = props;
|
|
11
|
+
const { columns, expansion, draggable, selection } = useTableContext();
|
|
12
|
+
// Calculate total column span
|
|
13
|
+
const totalColSpan = useMemo(() => {
|
|
14
|
+
let colSpan = columns.length;
|
|
15
|
+
// Add 1 for expand column itself
|
|
16
|
+
if (expansion)
|
|
17
|
+
colSpan += 1;
|
|
18
|
+
if (draggable === null || draggable === void 0 ? void 0 : draggable.enabled)
|
|
19
|
+
colSpan += 1;
|
|
20
|
+
if (selection)
|
|
21
|
+
colSpan += 1;
|
|
22
|
+
return colSpan;
|
|
23
|
+
}, [columns.length, expansion, draggable === null || draggable === void 0 ? void 0 : draggable.enabled, selection]);
|
|
24
|
+
const rowKey = getRowKey(record);
|
|
25
|
+
const isExpanded = expansion === null || expansion === void 0 ? void 0 : expansion.isRowExpanded(rowKey);
|
|
26
|
+
const { config } = expansion || {};
|
|
27
|
+
const { expandedRowRender } = config || {};
|
|
28
|
+
const childNeededProps = useMemo(() => ({
|
|
29
|
+
table: {
|
|
30
|
+
nested: true,
|
|
31
|
+
showHeader: false,
|
|
32
|
+
},
|
|
33
|
+
}), []);
|
|
34
|
+
if (!expandedRowRender || !isExpanded)
|
|
35
|
+
return null;
|
|
36
|
+
const children = expandedRowRender(record);
|
|
37
|
+
const clonedChild = cloneElement(children);
|
|
38
|
+
return (jsx("tr", { className: cx(tableClasses.expandedRow, className), "data-row-key": `${rowKey}-expanded`, ref: ref, style: style, children: jsx("td", { className: tableClasses.expandedRowCell, colSpan: totalColSpan, style: { paddingLeft: expansion === null || expansion === void 0 ? void 0 : expansion.expansionLeftPadding }, children: jsx("div", { className: tableClasses.expandedContent, children: clonedChild.type === Table
|
|
39
|
+
? cloneElement(clonedChild, {
|
|
40
|
+
...childNeededProps.table,
|
|
41
|
+
})
|
|
42
|
+
: clonedChild }) }) }));
|
|
43
|
+
});
|
|
44
|
+
const TableExpandedRow = memo(TableExpandedRowInner);
|
|
45
|
+
|
|
46
|
+
export { TableExpandedRow };
|