@mezzanine-ui/react 0.15.3 → 1.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Accordion/Accordion.js +1 -2
- package/Accordion/AccordionControlContext.js +1 -0
- package/Accordion/AccordionDetails.js +2 -2
- package/Accordion/AccordionSummary.d.ts +1 -1
- package/Accordion/AccordionSummary.js +11 -12
- package/Accordion/index.d.ts +6 -3
- package/Alert/Alert.js +1 -2
- package/Alert/index.d.ts +3 -2
- package/AlertBanner/AlertBanner.d.ts +93 -0
- package/AlertBanner/AlertBanner.js +154 -0
- package/AlertBanner/index.d.ts +2 -0
- package/AlertBanner/index.js +1 -0
- package/Anchor/Anchor.js +2 -3
- package/Anchor/index.d.ts +2 -1
- package/AppBar/AppBar.js +1 -2
- package/AppBar/AppBarBrand.js +1 -2
- package/AppBar/AppBarMain.js +1 -2
- package/AppBar/AppBarSupport.js +1 -2
- package/AppBar/index.d.ts +8 -4
- package/{Overlay/Overlay.d.ts → Backdrop/Backdrop.d.ts} +12 -16
- package/Backdrop/Backdrop.js +40 -0
- package/Backdrop/index.d.ts +2 -0
- package/Backdrop/index.js +1 -0
- package/Badge/Badge.d.ts +20 -14
- package/Badge/Badge.js +15 -18
- package/Badge/BadgeContainer.d.ts +1 -1
- package/Badge/BadgeContainer.js +2 -3
- package/Badge/index.d.ts +3 -2
- package/Badge/typings.d.ts +48 -0
- package/Breadcrumb/Breadcrumb.d.ts +6 -0
- package/Breadcrumb/Breadcrumb.js +25 -0
- package/Breadcrumb/BreadcrumbItem.d.ts +4 -0
- package/Breadcrumb/BreadcrumbItem.js +45 -0
- package/Breadcrumb/index.d.ts +2 -0
- package/Breadcrumb/index.js +1 -0
- package/Breadcrumb/typings.d.ts +70 -0
- package/Button/Button.js +24 -19
- package/Button/ButtonGroup.d.ts +6 -28
- package/Button/ButtonGroup.js +8 -18
- package/Button/index.d.ts +6 -12
- package/Button/index.js +2 -3
- package/Button/typings.d.ts +11 -26
- package/Calendar/Calendar.d.ts +31 -2
- package/Calendar/Calendar.js +75 -21
- package/Calendar/CalendarCell.d.ts +4 -0
- package/Calendar/CalendarCell.js +3 -3
- package/Calendar/CalendarConfigProviderDayjs.d.ts +21 -0
- package/Calendar/CalendarConfigProviderDayjs.js +15 -0
- package/Calendar/CalendarConfigProviderLuxon.d.ts +21 -0
- package/Calendar/CalendarConfigProviderLuxon.js +15 -0
- package/Calendar/CalendarConfigProviderMoment.d.ts +21 -0
- package/Calendar/CalendarConfigProviderMoment.js +15 -0
- package/Calendar/CalendarContext.d.ts +14 -7
- package/Calendar/CalendarContext.js +8 -13
- package/Calendar/CalendarControls.d.ts +16 -0
- package/Calendar/CalendarControls.js +3 -7
- package/Calendar/CalendarDayOfWeek.js +4 -3
- package/Calendar/CalendarDays.d.ts +9 -1
- package/Calendar/CalendarDays.js +63 -38
- package/Calendar/CalendarFooterActions.d.ts +13 -0
- package/Calendar/CalendarFooterActions.js +14 -0
- package/Calendar/CalendarFooterControl.d.ts +16 -0
- package/Calendar/CalendarFooterControl.js +14 -0
- package/Calendar/CalendarHalfYears.d.ts +39 -0
- package/Calendar/CalendarHalfYears.js +62 -0
- package/Calendar/CalendarMonths.js +17 -5
- package/Calendar/CalendarQuarters.d.ts +37 -0
- package/Calendar/CalendarQuarters.js +64 -0
- package/Calendar/CalendarQuickSelect.d.ts +21 -0
- package/Calendar/CalendarQuickSelect.js +15 -0
- package/Calendar/CalendarWeeks.d.ts +1 -1
- package/Calendar/CalendarWeeks.js +89 -44
- package/Calendar/CalendarYears.js +14 -4
- package/Calendar/RangeCalendar.d.ts +59 -0
- package/Calendar/RangeCalendar.js +232 -0
- package/Calendar/index.d.ts +33 -10
- package/Calendar/index.js +7 -0
- package/Calendar/useCalendarControlModifiers.d.ts +4 -4
- package/Calendar/useCalendarControlModifiers.js +40 -8
- package/Calendar/useCalendarControls.d.ts +2 -0
- package/Calendar/useCalendarControls.js +19 -2
- package/Calendar/useCalendarModeStack.js +1 -0
- package/Calendar/useRangeCalendarControls.d.ts +18 -0
- package/Calendar/useRangeCalendarControls.js +115 -0
- package/Card/Card.js +1 -2
- package/Card/CardActions.js +2 -3
- package/Card/index.d.ts +4 -2
- package/Checkbox/CheckAll.d.ts +16 -6
- package/Checkbox/CheckAll.js +41 -28
- package/Checkbox/Checkbox.d.ts +100 -22
- package/Checkbox/Checkbox.js +74 -18
- package/Checkbox/CheckboxGroup.d.ts +100 -18
- package/Checkbox/CheckboxGroup.js +169 -25
- package/Checkbox/CheckboxGroupContext.d.ts +0 -2
- package/Checkbox/CheckboxGroupContext.js +1 -0
- package/Checkbox/index.d.ts +16 -4
- package/Checkbox/index.js +6 -2
- package/Checkbox/typings.d.ts +37 -0
- package/ClearActions/ClearActions.d.ts +41 -0
- package/ClearActions/ClearActions.js +23 -0
- package/ClearActions/index.d.ts +3 -0
- package/ClearActions/index.js +5 -0
- package/ConfirmActions/ConfirmActions.d.ts +2 -1
- package/ConfirmActions/ConfirmActions.js +1 -2
- package/ConfirmActions/index.d.ts +2 -1
- package/DatePicker/DatePicker.d.ts +12 -1
- package/DatePicker/DatePicker.js +42 -11
- package/DatePicker/DatePickerCalendar.d.ts +3 -6
- package/DatePicker/DatePickerCalendar.js +38 -39
- package/DatePicker/index.d.ts +4 -2
- package/DateRangePicker/DateRangePicker.d.ts +18 -2
- package/DateRangePicker/DateRangePicker.js +144 -102
- package/DateRangePicker/DateRangePickerCalendar.d.ts +13 -9
- package/DateRangePicker/DateRangePickerCalendar.js +8 -96
- package/DateRangePicker/index.d.ts +6 -3
- package/DateRangePicker/useDateRangeCalendarControls.js +11 -6
- package/DateRangePicker/useDateRangePickerValue.d.ts +38 -15
- package/DateRangePicker/useDateRangePickerValue.js +142 -63
- package/DateTimePicker/DateTimePicker.d.ts +31 -10
- package/DateTimePicker/DateTimePicker.js +180 -96
- package/DateTimePicker/index.d.ts +2 -2
- package/DateTimePicker/index.js +0 -1
- package/Drawer/Drawer.js +3 -4
- package/Drawer/index.d.ts +2 -1
- package/Dropdown/Dropdown.js +13 -24
- package/Dropdown/index.d.ts +2 -1
- package/Empty/Empty.d.ts +1 -16
- package/Empty/Empty.js +37 -9
- package/Empty/icons/EmptyMainInitialDataIcon.d.ts +4 -0
- package/Empty/icons/EmptyMainInitialDataIcon.js +9 -0
- package/Empty/icons/EmptyMainResultIcon.d.ts +4 -0
- package/Empty/icons/EmptyMainResultIcon.js +9 -0
- package/Empty/icons/EmptyMainSystemIcon.d.ts +4 -0
- package/Empty/icons/EmptyMainSystemIcon.js +9 -0
- package/Empty/index.d.ts +2 -1
- package/Empty/typings.d.ts +52 -0
- package/Form/FormControlContext.js +1 -0
- package/Form/FormField.js +1 -2
- package/Form/FormHintText.d.ts +18 -0
- package/Form/FormHintText.js +17 -0
- package/Form/FormLabel.js +2 -2
- package/Form/index.d.ts +9 -5
- package/Form/index.js +1 -1
- package/Form/useAutoCompleteValueControl.js +2 -0
- package/Form/useCheckboxControlValue.js +0 -1
- package/Form/useInputWithClearControlValue.d.ts +1 -1
- package/Form/useInputWithTagsModeValue.d.ts +1 -1
- package/Form/useSelectValueControl.js +2 -0
- package/Icon/Icon.js +1 -2
- package/InlineMessage/InlineMessage.d.ts +33 -0
- package/InlineMessage/InlineMessage.js +42 -0
- package/InlineMessage/InlineMessageGroup.d.ts +24 -0
- package/InlineMessage/InlineMessageGroup.js +21 -0
- package/InlineMessage/index.d.ts +4 -0
- package/InlineMessage/index.js +2 -0
- package/Input/ActionButton/ActionButton.d.ts +26 -0
- package/Input/ActionButton/ActionButton.js +14 -0
- package/Input/ActionButton/index.d.ts +2 -0
- package/Input/ActionButton/index.js +1 -0
- package/Input/Input.d.ts +147 -42
- package/Input/Input.js +196 -31
- package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.d.ts +31 -0
- package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.js +18 -0
- package/Input/PasswordStrengthIndicator/index.d.ts +2 -0
- package/Input/PasswordStrengthIndicator/index.js +1 -0
- package/Input/SelectButton/SelectButton.d.ts +20 -0
- package/Input/SelectButton/SelectButton.js +21 -0
- package/Input/SelectButton/index.d.ts +2 -0
- package/Input/SelectButton/index.js +1 -0
- package/Input/SpinnerButton/SpinnerButton.d.ts +19 -0
- package/Input/SpinnerButton/SpinnerButton.js +14 -0
- package/Input/SpinnerButton/index.d.ts +2 -0
- package/Input/SpinnerButton/index.js +1 -0
- package/Input/index.d.ts +3 -2
- package/Menu/Menu.js +2 -2
- package/Menu/MenuDivider.js +1 -2
- package/Menu/MenuItem.js +1 -2
- package/Menu/MenuItemGroup.js +1 -2
- package/Menu/index.d.ts +8 -4
- package/Message/Message.d.ts +6 -4
- package/Message/Message.js +87 -11
- package/Message/MessageTimerController.d.ts +14 -0
- package/Message/MessageTimerController.js +27 -0
- package/Message/index.d.ts +3 -2
- package/Modal/Modal.js +3 -4
- package/Modal/ModalActions.js +2 -2
- package/Modal/ModalBody.js +1 -2
- package/Modal/ModalControl.js +1 -0
- package/Modal/ModalFooter.js +1 -2
- package/Modal/ModalHeader.js +3 -3
- package/Modal/index.d.ts +10 -5
- package/Modal/useModalContainer.d.ts +1 -1
- package/Modal/useModalContainer.js +2 -4
- package/Navigation/Navigation.js +38 -36
- package/Navigation/NavigationContext.js +1 -0
- package/Navigation/NavigationItem.js +2 -2
- package/Navigation/NavigationSubMenu.js +17 -28
- package/Navigation/index.d.ts +8 -4
- package/Notification/Notification.js +1 -3
- package/Notification/index.d.ts +3 -2
- package/Notifier/NotifierManager.d.ts +16 -3
- package/Notifier/NotifierManager.js +60 -18
- package/Notifier/createNotifier.d.ts +9 -0
- package/Notifier/createNotifier.js +3 -2
- package/Notifier/typings.d.ts +3 -1
- package/OverflowTooltip/OverflowCounterTag.d.ts +12 -0
- package/OverflowTooltip/OverflowCounterTag.js +48 -0
- package/OverflowTooltip/OverflowTooltip.d.ts +34 -0
- package/OverflowTooltip/OverflowTooltip.js +53 -0
- package/OverflowTooltip/index.d.ts +2 -0
- package/OverflowTooltip/index.js +2 -0
- package/PageFooter/PageFooter.d.ts +73 -8
- package/PageFooter/PageFooter.js +35 -5
- package/PageFooter/index.d.ts +2 -1
- package/PageHeader/PageHeader.d.ts +36 -0
- package/PageHeader/PageHeader.js +65 -0
- package/PageHeader/index.d.ts +2 -0
- package/PageHeader/index.js +1 -0
- package/PageToolbar/PageToolbar.d.ts +67 -0
- package/PageToolbar/PageToolbar.js +114 -0
- package/PageToolbar/index.d.ts +2 -0
- package/PageToolbar/index.js +1 -0
- package/Pagination/Pagination.d.ts +23 -29
- package/Pagination/Pagination.js +4 -6
- package/Pagination/PaginationItem.d.ts +1 -1
- package/Pagination/PaginationItem.js +7 -5
- package/Pagination/PaginationJumper.d.ts +7 -9
- package/Pagination/PaginationJumper.js +4 -7
- package/Pagination/PaginationPageSize.d.ts +8 -11
- package/Pagination/PaginationPageSize.js +6 -6
- package/Pagination/index.d.ts +8 -4
- package/Pagination/usePagination.d.ts +3 -1
- package/Pagination/usePagination.js +30 -21
- package/Picker/FormattedInput.d.ts +17 -0
- package/Picker/FormattedInput.js +74 -0
- package/Picker/MaskFormat.d.ts +39 -0
- package/Picker/MaskFormat.js +94 -0
- package/Picker/PickerTrigger.d.ts +14 -4
- package/Picker/PickerTrigger.js +18 -4
- package/Picker/PickerTriggerWithSeparator.d.ts +124 -0
- package/Picker/PickerTriggerWithSeparator.js +80 -0
- package/Picker/RangePickerTrigger.d.ts +57 -6
- package/Picker/RangePickerTrigger.js +66 -9
- package/Picker/formatUtils.d.ts +34 -0
- package/Picker/formatUtils.js +124 -0
- package/Picker/index.d.ts +17 -6
- package/Picker/index.js +4 -1
- package/Picker/useDateInputFormatter.d.ts +52 -0
- package/Picker/useDateInputFormatter.js +382 -0
- package/Picker/usePickerDocumentEventClose.d.ts +3 -3
- package/Picker/usePickerValue.d.ts +2 -3
- package/Picker/usePickerValue.js +8 -13
- package/Picker/useTabKeyClose.d.ts +1 -1
- package/Popconfirm/Popconfirm.js +3 -4
- package/Popconfirm/index.d.ts +2 -1
- package/Popover/Popover.js +5 -10
- package/Popover/index.d.ts +2 -1
- package/Popper/Popper.d.ts +15 -10
- package/Popper/Popper.js +89 -19
- package/Popper/index.d.ts +2 -1
- package/Portal/Portal.d.ts +13 -5
- package/Portal/Portal.js +26 -12
- package/Portal/index.d.ts +4 -1
- package/Portal/index.js +1 -0
- package/Portal/portalRegistry.d.ts +17 -0
- package/Portal/portalRegistry.js +92 -0
- package/Progress/Progress.d.ts +23 -30
- package/Progress/Progress.js +72 -23
- package/Progress/index.d.ts +3 -2
- package/Provider/ConfigProvider.d.ts +2 -1
- package/Provider/ConfigProvider.js +1 -0
- package/Provider/context.js +1 -0
- package/Radio/Radio.d.ts +1 -1
- package/Radio/Radio.js +3 -3
- package/Radio/RadioGroup.d.ts +1 -1
- package/Radio/RadioGroup.js +2 -3
- package/Radio/RadioGroupContext.js +1 -0
- package/Radio/index.d.ts +4 -2
- package/ResultState/ResultState.d.ts +52 -0
- package/ResultState/ResultState.js +24 -0
- package/ResultState/index.d.ts +2 -0
- package/ResultState/index.js +1 -0
- package/Select/AutoComplete.d.ts +3 -3
- package/Select/AutoComplete.js +6 -13
- package/Select/Option.js +2 -2
- package/Select/Select.d.ts +1 -1
- package/Select/Select.js +3 -3
- package/Select/SelectControlContext.js +1 -0
- package/Select/SelectTrigger.d.ts +1 -87
- package/Select/SelectTrigger.js +27 -23
- package/Select/SelectTriggerTags.d.ts +1 -1
- package/Select/SelectTriggerTags.js +48 -20
- package/Select/TreeSelect.d.ts +1 -1
- package/Select/TreeSelect.js +3 -3
- package/Select/index.d.ts +14 -7
- package/Select/typings.d.ts +99 -0
- package/Select/useSelectTriggerTags.d.ts +15 -8
- package/Select/useSelectTriggerTags.js +79 -43
- package/Selection/Selection.d.ts +98 -0
- package/Selection/Selection.js +46 -0
- package/Selection/index.d.ts +12 -0
- package/Selection/index.js +5 -0
- package/Skeleton/Skeleton.d.ts +10 -3
- package/Skeleton/Skeleton.js +13 -6
- package/Skeleton/index.d.ts +2 -1
- package/Slider/Slider.d.ts +44 -7
- package/Slider/Slider.js +18 -15
- package/Slider/index.d.ts +5 -3
- package/Slider/useSlider.d.ts +1 -1
- package/Slider/useSlider.js +1 -1
- package/Spin/Spin.d.ts +39 -0
- package/{Loading/Loading.js → Spin/Spin.js} +9 -10
- package/Spin/index.d.ts +2 -0
- package/Spin/index.js +1 -0
- package/Stepper/Step.d.ts +1 -35
- package/Stepper/Step.js +44 -10
- package/Stepper/Stepper.d.ts +1 -14
- package/Stepper/Stepper.js +50 -17
- package/Stepper/index.d.ts +5 -2
- package/Stepper/index.js +1 -0
- package/Stepper/typings.d.ts +77 -0
- package/Stepper/useStepDistance.d.ts +10 -0
- package/Stepper/useStepDistance.js +81 -0
- package/Stepper/useStepper.d.ts +21 -0
- package/Stepper/useStepper.js +26 -0
- package/Table/Table.d.ts +1 -1
- package/Table/Table.js +3 -4
- package/Table/TableBody.js +3 -2
- package/Table/TableBodyRow.js +1 -0
- package/Table/TableCell.js +1 -2
- package/Table/TableContext.js +1 -0
- package/Table/TableExpandedTable.js +1 -0
- package/Table/TableHeader.js +1 -0
- package/Table/draggable/useTableDraggable.d.ts +1 -1
- package/Table/editable/TableEditRenderWrapper.js +1 -0
- package/Table/expandable/TableExpandable.js +1 -1
- package/Table/index.d.ts +7 -4
- package/Table/pagination/TablePagination.d.ts +1 -1
- package/Table/pagination/TablePagination.js +1 -0
- package/Table/pagination/useTablePagination.d.ts +1 -1
- package/Table/pagination/useTablePagination.js +1 -0
- package/Table/refresh/TableRefresh.js +4 -3
- package/Table/rowSelection/TableRowSelection.js +3 -2
- package/Table/sorting/TableSortingIcon.js +2 -1
- package/Table/sorting/useTableSorting.js +1 -0
- package/Table/useTableFetchMore.js +1 -1
- package/Table/useTableScroll.d.ts +44 -14
- package/Table/useTableScroll.js +10 -8
- package/Tabs/Tab.js +1 -2
- package/Tabs/TabPane.js +2 -2
- package/Tabs/Tabs.js +10 -6
- package/Tabs/index.d.ts +6 -3
- package/Tabs/useTabsOverflow.d.ts +1 -1
- package/Tabs/useTabsOverflow.js +4 -3
- package/Tag/Tag.d.ts +2 -25
- package/Tag/Tag.js +24 -15
- package/Tag/TagGroup.d.ts +12 -0
- package/Tag/TagGroup.js +41 -0
- package/Tag/index.d.ts +2 -1
- package/Tag/typings.d.ts +78 -0
- package/TextField/TextField.d.ts +78 -20
- package/TextField/TextField.js +59 -24
- package/TextField/index.d.ts +2 -1
- package/Textarea/Textarea.d.ts +19 -51
- package/Textarea/Textarea.js +14 -21
- package/Textarea/index.d.ts +2 -2
- package/TimePanel/TimePanel.d.ts +1 -22
- package/TimePanel/TimePanel.js +32 -28
- package/TimePanel/TimePanelAction.d.ts +2 -8
- package/TimePanel/TimePanelAction.js +3 -4
- package/TimePanel/TimePanelColumn.d.ts +0 -13
- package/TimePanel/TimePanelColumn.js +10 -13
- package/TimePanel/index.d.ts +6 -3
- package/TimePicker/TimePicker.d.ts +10 -1
- package/TimePicker/TimePicker.js +87 -37
- package/TimePicker/TimePickerPanel.d.ts +1 -2
- package/TimePicker/TimePickerPanel.js +3 -4
- package/TimePicker/index.d.ts +4 -2
- package/Toggle/Toggle.d.ts +46 -0
- package/Toggle/Toggle.js +29 -0
- package/Toggle/index.d.ts +3 -0
- package/Toggle/index.js +1 -0
- package/Tooltip/Tooltip.d.ts +14 -3
- package/Tooltip/Tooltip.js +53 -18
- package/Tooltip/index.d.ts +2 -1
- package/Tooltip/useDelayMouseEnterLeave.d.ts +1 -2
- package/Tooltip/useDelayMouseEnterLeave.js +10 -13
- package/Transition/Collapse.d.ts +2 -0
- package/Transition/Collapse.js +7 -12
- package/Transition/Fade.js +5 -6
- package/Transition/Rotate.d.ts +42 -0
- package/Transition/Rotate.js +30 -0
- package/Transition/Scale.d.ts +13 -0
- package/Transition/{Grow.js → Scale.js} +19 -17
- package/Transition/Slide.d.ts +7 -0
- package/Transition/{Zoom.js → Slide.js} +14 -13
- package/Transition/SlideFade.d.ts +3 -0
- package/Transition/SlideFade.js +6 -6
- package/Transition/Transition.d.ts +3 -3
- package/Transition/Translate.d.ts +14 -0
- package/Transition/Translate.js +94 -0
- package/Transition/index.d.ts +16 -6
- package/Transition/index.js +4 -2
- package/Transition/useAutoTransitionDuration.d.ts +1 -1
- package/Transition/useAutoTransitionDuration.js +3 -3
- package/Transition/useSetNodeTransition.js +0 -2
- package/Tree/Tree.js +1 -2
- package/Tree/TreeNode.js +8 -8
- package/Tree/TreeNodeList.js +1 -2
- package/Tree/index.d.ts +10 -5
- package/Tree/typings.d.ts +2 -2
- package/Typography/Typography.d.ts +6 -9
- package/Typography/Typography.js +7 -9
- package/Typography/index.d.ts +4 -7
- package/Upload/Upload.d.ts +175 -0
- package/Upload/Upload.js +279 -0
- package/Upload/UploadItem.d.ts +82 -0
- package/Upload/UploadItem.js +118 -0
- package/Upload/UploadPictureCard.d.ts +110 -0
- package/Upload/UploadPictureCard.js +101 -0
- package/Upload/Uploader.d.ts +161 -0
- package/Upload/Uploader.js +120 -0
- package/Upload/index.d.ts +8 -6
- package/Upload/index.js +4 -5
- package/Upload/upload-utils.d.ts +41 -0
- package/Upload/upload-utils.js +65 -0
- package/_internal/InputCheck/InputCheck.js +1 -2
- package/_internal/InputCheck/InputCheckGroup.js +1 -2
- package/_internal/InputCheck/index.d.ts +4 -2
- package/_internal/InputTriggerPopper/InputTriggerPopper.js +16 -27
- package/_internal/InputTriggerPopper/index.d.ts +2 -1
- package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +2 -2
- package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +5 -29
- package/_internal/SlideFadeOverlay/index.d.ts +2 -1
- package/_internal/SlideFadeOverlay/useTopStack.js +1 -0
- package/dayjs.d.ts +21 -0
- package/dayjs.js +2 -0
- package/hooks/useClickAway.d.ts +1 -1
- package/hooks/useComposeRefs.js +1 -1
- package/hooks/useLastCallback.js +3 -1
- package/hooks/useScrollLock.d.ts +28 -0
- package/hooks/useScrollLock.js +134 -0
- package/index.d.ts +126 -58
- package/index.js +103 -90
- package/luxon.d.ts +21 -0
- package/luxon.js +2 -0
- package/moment.d.ts +21 -0
- package/moment.js +2 -0
- package/package.json +16 -20
- package/utils/composeRefs.js +0 -1
- package/utils/get-css-variable-value.d.ts +1 -0
- package/utils/get-css-variable-value.js +9 -0
- package/utils/jsx-types.d.ts +1 -1
- package/Button/IconButton.d.ts +0 -21
- package/Button/IconButton.js +0 -13
- package/DateTimePicker/DateTimePickerPanel.d.ts +0 -28
- package/DateTimePicker/DateTimePickerPanel.js +0 -50
- package/Form/FormMessage.d.ts +0 -7
- package/Form/FormMessage.js +0 -19
- package/Form/useInputWithTagsModeValue.js +0 -86
- package/Loading/Loading.d.ts +0 -33
- package/Loading/index.d.ts +0 -1
- package/Loading/index.js +0 -1
- package/Overlay/Overlay.js +0 -32
- package/Overlay/index.d.ts +0 -1
- package/Overlay/index.js +0 -1
- package/Picker/useRangePickerValue.d.ts +0 -23
- package/Picker/useRangePickerValue.js +0 -99
- package/Switch/Switch.d.ts +0 -43
- package/Switch/Switch.js +0 -29
- package/Switch/index.d.ts +0 -2
- package/Switch/index.js +0 -1
- package/Transition/Grow.d.ts +0 -12
- package/Transition/Zoom.d.ts +0 -7
- package/Upload/UploadButton.d.ts +0 -9
- package/Upload/UploadButton.js +0 -24
- package/Upload/UploadInput.d.ts +0 -20
- package/Upload/UploadInput.js +0 -24
- package/Upload/UploadPicture.d.ts +0 -49
- package/Upload/UploadPicture.js +0 -52
- package/Upload/UploadPictureBlock.d.ts +0 -20
- package/Upload/UploadPictureBlock.js +0 -82
- package/Upload/UploadPictureWall.d.ts +0 -81
- package/Upload/UploadPictureWall.js +0 -169
- package/Upload/UploadPictureWallItem.d.ts +0 -15
- package/Upload/UploadPictureWallItem.js +0 -18
- package/Upload/UploadResult.d.ts +0 -35
- package/Upload/UploadResult.js +0 -30
- package/utils/scroll-lock.d.ts +0 -2
- package/utils/scroll-lock.js +0 -24
package/Checkbox/CheckAll.js
CHANGED
|
@@ -1,37 +1,50 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { forwardRef,
|
|
3
|
-
import { checkboxClasses } from '@mezzanine-ui/core/checkbox';
|
|
3
|
+
import { forwardRef, useId, useMemo } from 'react';
|
|
4
4
|
import Checkbox from './Checkbox.js';
|
|
5
|
-
import
|
|
5
|
+
import { assignCheckboxGroupValuesToEvent } from './CheckboxGroup.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* The react component for `mezzanine` check all.
|
|
9
|
-
*
|
|
9
|
+
* Wraps a CheckboxGroup and provides a "check all" checkbox that controls all checkboxes in the group.
|
|
10
10
|
*/
|
|
11
11
|
const CheckAll = forwardRef(function CheckAll(props, ref) {
|
|
12
|
-
const { children,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
12
|
+
const { children, disabled = false, label = 'Check All', } = props;
|
|
13
|
+
// Generate unique id for the check all checkbox
|
|
14
|
+
// This is important for accessibility
|
|
15
|
+
const checkAllId = useId();
|
|
16
|
+
const checkboxGroupProps = children.props;
|
|
17
|
+
const { options = [], value = [], onChange } = checkboxGroupProps;
|
|
18
|
+
// Calculate checked and indeterminate states
|
|
19
|
+
const { checked, indeterminate } = useMemo(() => {
|
|
20
|
+
const enabledOptions = options.filter((opt) => !opt.disabled);
|
|
21
|
+
const enabledValues = enabledOptions.map((opt) => opt.value);
|
|
22
|
+
const selectedEnabledValues = value.filter((v) => enabledValues.includes(v));
|
|
23
|
+
if (selectedEnabledValues.length === 0) {
|
|
24
|
+
return { checked: false, indeterminate: false };
|
|
25
|
+
}
|
|
26
|
+
if (selectedEnabledValues.length === enabledValues.length) {
|
|
27
|
+
return { checked: true, indeterminate: false };
|
|
28
|
+
}
|
|
29
|
+
return { checked: false, indeterminate: true };
|
|
30
|
+
}, [options, value]);
|
|
31
|
+
const handleCheckAllChange = (event) => {
|
|
32
|
+
var _a;
|
|
33
|
+
if (!onChange)
|
|
34
|
+
return;
|
|
35
|
+
const isChecked = event.target.checked;
|
|
36
|
+
const enabledOptions = options.filter((opt) => !opt.disabled);
|
|
37
|
+
const enabledValues = enabledOptions.map((opt) => opt.value);
|
|
38
|
+
const disabledOptions = options.filter((opt) => opt.disabled);
|
|
39
|
+
const disabledValues = disabledOptions.map((opt) => opt.value);
|
|
40
|
+
const selectedDisabledValues = value.filter((v) => disabledValues.includes(v));
|
|
41
|
+
const newValue = isChecked
|
|
42
|
+
? [...enabledValues, ...selectedDisabledValues]
|
|
43
|
+
: selectedDisabledValues;
|
|
44
|
+
const syntheticEvent = assignCheckboxGroupValuesToEvent(event, newValue, (_a = checkboxGroupProps.name) !== null && _a !== void 0 ? _a : '');
|
|
45
|
+
onChange(syntheticEvent);
|
|
46
|
+
};
|
|
47
|
+
return (jsxs("div", { ref: ref, children: [jsx(Checkbox, { checked: checked, disabled: disabled, indeterminate: indeterminate, inputProps: { id: checkAllId }, label: label, name: checkboxGroupProps.name || checkAllId, onChange: handleCheckAllChange }), children] }));
|
|
34
48
|
});
|
|
35
|
-
var CheckAll$1 = CheckAll;
|
|
36
49
|
|
|
37
|
-
export { CheckAll
|
|
50
|
+
export { CheckAll as default };
|
package/Checkbox/Checkbox.d.ts
CHANGED
|
@@ -1,41 +1,119 @@
|
|
|
1
|
-
import { ChangeEventHandler } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { InputCheckProps } from '../_internal/InputCheck';
|
|
1
|
+
import { ChangeEventHandler, Ref } from 'react';
|
|
2
|
+
import { BaseInputProps } from '../Input';
|
|
4
3
|
import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
|
|
5
|
-
|
|
4
|
+
import { CheckboxPropsBase } from './typings';
|
|
5
|
+
type CheckboxInputElementProps = Omit<NativeElementPropsWithoutKeyAndRef<'input'>, 'checked' | 'defaultChecked' | 'disabled' | 'onChange' | 'placeholder' | 'type' | 'value' | `aria-${'disabled' | 'checked'}`> & {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* The id attribute can be provided via inputProps, but it's recommended to use the `id` prop directly.
|
|
8
|
+
* If both are provided, the `id` prop takes precedence.
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
|
+
id?: string;
|
|
10
11
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
12
|
+
* The name attribute can be provided via inputProps, but it's recommended to use the `name` prop directly.
|
|
13
|
+
* If both are provided, the `name` prop takes precedence.
|
|
13
14
|
*/
|
|
14
|
-
|
|
15
|
+
name?: string;
|
|
16
|
+
};
|
|
17
|
+
export interface CheckboxProps extends Omit<NativeElementPropsWithoutKeyAndRef<'label'>, 'onChange'>, CheckboxPropsBase {
|
|
15
18
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
19
|
+
* Whether to show an editable input when checkbox is checked.
|
|
20
|
+
* When `true`, an Input component will be displayed after the checkbox when checked.
|
|
21
|
+
* If `editableInput` is not provided, default values will be used (name, id, placeholder).
|
|
22
|
+
*
|
|
23
|
+
* @example Simple usage
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <Checkbox
|
|
26
|
+
* label="其他"
|
|
27
|
+
* withEditInput
|
|
28
|
+
* value={otherValue}
|
|
29
|
+
* onChange={(e) => setOtherValue(e.target.value)}
|
|
30
|
+
* />
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @example With custom editableInput
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <Checkbox
|
|
36
|
+
* label="其他"
|
|
37
|
+
* withEditInput
|
|
38
|
+
* editableInput={{
|
|
39
|
+
* placeholder: "請輸入其他選項",
|
|
40
|
+
* name: "otherOption",
|
|
41
|
+
* value: otherValue,
|
|
42
|
+
* onChange: (e) => setOtherValue(e.target.value),
|
|
43
|
+
* }}
|
|
44
|
+
* />
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @example With react-hook-form
|
|
48
|
+
* ```tsx
|
|
49
|
+
* const { register, watch } = useForm();
|
|
50
|
+
* const isOtherChecked = watch('options.other');
|
|
51
|
+
*
|
|
52
|
+
* <Checkbox
|
|
53
|
+
* label="其他"
|
|
54
|
+
* {...register('options.other')}
|
|
55
|
+
* withEditInput
|
|
56
|
+
* editableInput={{
|
|
57
|
+
* ...register('otherOption', { required: isOtherChecked }),
|
|
58
|
+
* placeholder: "請輸入其他選項",
|
|
59
|
+
* }}
|
|
60
|
+
* />
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
withEditInput?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Configuration for editable input that appears when checkbox is checked.
|
|
66
|
+
* When `withEditInput` is `true` and this prop is not provided, default values will be used.
|
|
67
|
+
*
|
|
68
|
+
* Default values when not provided:
|
|
69
|
+
* - `name`: `{checkboxName}_input` or `{checkboxId}_input`
|
|
70
|
+
* - `id`: `{checkboxId}_input`
|
|
71
|
+
* - `placeholder`: "Please enter..."
|
|
72
|
+
*/
|
|
73
|
+
editableInput?: Omit<BaseInputProps, 'variant'>;
|
|
74
|
+
/**
|
|
75
|
+
* The id of input element.
|
|
18
76
|
*/
|
|
19
|
-
|
|
77
|
+
id?: string;
|
|
20
78
|
/**
|
|
21
79
|
* Since at Mezzanine we use a host element to wrap our input, most derived props will be passed to the host element.
|
|
22
|
-
*
|
|
80
|
+
* If you need direct control to the input element, use this prop to provide to it.
|
|
81
|
+
*/
|
|
82
|
+
inputProps?: CheckboxInputElementProps;
|
|
83
|
+
/**
|
|
84
|
+
* The react ref passed to input element.
|
|
23
85
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
86
|
+
* @important When using with react-hook-form's `register`, pass the ref through this prop:
|
|
87
|
+
* ```tsx
|
|
88
|
+
* const { register } = useForm();
|
|
89
|
+
* <Checkbox inputRef={register('fieldName').ref} name="fieldName" />
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* For CheckboxGroup, use `Controller` instead of `register` for better array value handling.
|
|
26
93
|
*/
|
|
27
|
-
|
|
94
|
+
inputRef?: Ref<HTMLInputElement>;
|
|
28
95
|
/**
|
|
29
|
-
* The
|
|
96
|
+
* The name attribute of the input element.
|
|
97
|
+
*
|
|
98
|
+
* @important When using with react-hook-form or inside a CheckboxGroup, this prop is recommended.
|
|
99
|
+
* For CheckboxGroup, all checkboxes should share the same `name` attribute.
|
|
100
|
+
*
|
|
101
|
+
* When using with react-hook-form's `register`, ensure this matches the field name:
|
|
102
|
+
* ```tsx
|
|
103
|
+
* const { register } = useForm();
|
|
104
|
+
* <Checkbox {...register('fieldName')} inputRef={register('fieldName').ref} />
|
|
105
|
+
* ```
|
|
30
106
|
*/
|
|
31
|
-
|
|
107
|
+
name?: string;
|
|
32
108
|
/**
|
|
33
|
-
*
|
|
34
|
-
* @default 'medium'
|
|
109
|
+
* Invoked by input change event.
|
|
35
110
|
*/
|
|
36
|
-
|
|
111
|
+
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
37
112
|
/**
|
|
38
|
-
* The value of
|
|
113
|
+
* The value of checkbox. Used when checkbox is inside a CheckboxGroup.
|
|
114
|
+
*
|
|
115
|
+
* @important This prop is required when checkbox is inside a CheckboxGroup.
|
|
116
|
+
* It is also recommended when integrating with react-hook-form.
|
|
39
117
|
*/
|
|
40
118
|
value?: string;
|
|
41
119
|
}
|
package/Checkbox/Checkbox.js
CHANGED
|
@@ -1,36 +1,92 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useContext, useId, useEffect, useMemo, useRef } from 'react';
|
|
3
4
|
import { checkboxClasses } from '@mezzanine-ui/core/checkbox';
|
|
5
|
+
import { CheckedIcon } from '@mezzanine-ui/icons';
|
|
4
6
|
import { useCheckboxControlValue } from '../Form/useCheckboxControlValue.js';
|
|
7
|
+
import Typography from '../Typography/Typography.js';
|
|
8
|
+
import { composeRefs } from '../utils/composeRefs.js';
|
|
5
9
|
import { CheckboxGroupContext } from './CheckboxGroupContext.js';
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import InputCheck from '../_internal/InputCheck/InputCheck.js';
|
|
10
|
+
import Icon from '../Icon/Icon.js';
|
|
11
|
+
import Input from '../Input/Input.js';
|
|
9
12
|
import cx from 'clsx';
|
|
10
13
|
|
|
11
14
|
/**
|
|
12
15
|
* The react component for `mezzanine` checkbox.
|
|
13
16
|
*/
|
|
14
17
|
const Checkbox = forwardRef(function Checkbox(props, ref) {
|
|
15
|
-
const { size: globalSize } = useContext(MezzanineConfig);
|
|
16
|
-
const { disabled: disabledFromFormControl, severity } = useContext(FormControlContext) || {};
|
|
17
18
|
const checkboxGroup = useContext(CheckboxGroupContext);
|
|
18
|
-
const { disabled: disabledFromGroup, name: nameFromGroup,
|
|
19
|
-
const { checked: checkedProp,
|
|
20
|
-
const {
|
|
19
|
+
const { disabled: disabledFromGroup, name: nameFromGroup, } = checkboxGroup || {};
|
|
20
|
+
const { checked: checkedProp, className, defaultChecked, description, disabled = disabledFromGroup, editableInput, id, indeterminate = false, inputProps, inputRef: inputRefProp, label, mode = 'main', name = nameFromGroup, onChange: onChangeProp, value, withEditInput = false, ...rest } = props;
|
|
21
|
+
const { name: nameFromInputProps, ...restInputProps } = inputProps || {};
|
|
22
|
+
// Generate unique id if not provided
|
|
23
|
+
const generatedId = useId();
|
|
24
|
+
const finalInputId = id !== null && id !== void 0 ? id : generatedId;
|
|
25
|
+
if (checkboxGroup && value == null) {
|
|
26
|
+
throw new Error('Checkbox: `value` is required when the checkbox is used inside a CheckboxGroup.');
|
|
27
|
+
}
|
|
21
28
|
const [checked, onChange] = useCheckboxControlValue({
|
|
22
|
-
checkboxGroup,
|
|
23
29
|
checked: checkedProp,
|
|
24
30
|
defaultChecked,
|
|
25
31
|
onChange: onChangeProp,
|
|
32
|
+
checkboxGroup,
|
|
26
33
|
value,
|
|
27
34
|
});
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
// Warn when checkbox is standalone and missing a name (helpful for form libs)
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (!checkboxGroup && !name && !nameFromInputProps && label) {
|
|
38
|
+
console.warn('Checkbox: The `name` prop is recommended when integrating with react-hook-form. ' +
|
|
39
|
+
`Checkbox with label "${label}" is missing the \`name\` prop.`);
|
|
40
|
+
}
|
|
41
|
+
}, [checkboxGroup, name, nameFromInputProps, label]);
|
|
42
|
+
const isChecked = checked && !indeterminate;
|
|
43
|
+
const isIndeterminate = indeterminate;
|
|
44
|
+
const resolvedName = useMemo(() => {
|
|
45
|
+
if (name)
|
|
46
|
+
return name;
|
|
47
|
+
if (nameFromInputProps)
|
|
48
|
+
return nameFromInputProps;
|
|
49
|
+
return finalInputId;
|
|
50
|
+
}, [finalInputId, name, nameFromInputProps]);
|
|
51
|
+
const labelColor = useMemo(() => {
|
|
52
|
+
if (mode === 'chip' && disabled) {
|
|
53
|
+
return 'text-neutral-light';
|
|
54
|
+
}
|
|
55
|
+
return 'text-neutral-solid';
|
|
56
|
+
}, [mode, disabled]);
|
|
57
|
+
const inputElementRef = useRef(null);
|
|
58
|
+
const composedInputRef = useMemo(() => composeRefs([inputRefProp, inputElementRef]), [inputRefProp]);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (inputElementRef.current) {
|
|
61
|
+
inputElementRef.current.indeterminate = isIndeterminate;
|
|
62
|
+
}
|
|
63
|
+
}, [isIndeterminate]);
|
|
64
|
+
const editableInputRef = useRef(null);
|
|
65
|
+
// Generate default editable input config when withEditInput is true but editableInput is not provided
|
|
66
|
+
const defaultEditableInput = useMemo(() => {
|
|
67
|
+
if (!withEditInput)
|
|
68
|
+
return undefined;
|
|
69
|
+
if (editableInput) {
|
|
70
|
+
return editableInput;
|
|
71
|
+
}
|
|
72
|
+
// Default values when editableInput is not provided
|
|
73
|
+
const defaultName = resolvedName ? `${resolvedName}_input` : `${finalInputId}_input`;
|
|
74
|
+
const defaultId = `${finalInputId}_input`;
|
|
75
|
+
return {
|
|
76
|
+
id: defaultId,
|
|
77
|
+
name: defaultName,
|
|
78
|
+
placeholder: 'Please enter...',
|
|
79
|
+
};
|
|
80
|
+
}, [withEditInput, editableInput, resolvedName, finalInputId]);
|
|
81
|
+
const shouldShowEditableInput = withEditInput && defaultEditableInput;
|
|
82
|
+
return (jsxs("div", { className: cx(checkboxClasses.host, className, {
|
|
83
|
+
[checkboxClasses.checked]: isChecked,
|
|
84
|
+
[checkboxClasses.indeterminate]: isIndeterminate,
|
|
85
|
+
[checkboxClasses.disabled]: disabled,
|
|
86
|
+
}, checkboxClasses.mode(mode)), children: [jsxs("label", { ref: ref, ...rest, className: checkboxClasses.labelContainer, children: [jsx("div", { className: checkboxClasses.inputContainer, children: jsxs("div", { className: checkboxClasses.inputContent, children: [jsx("input", { ...restInputProps, "aria-checked": isIndeterminate ? 'mixed' : checked, "aria-disabled": disabled, checked: isChecked, className: checkboxClasses.input, disabled: disabled, id: finalInputId, name: resolvedName, onChange: onChange, ref: composedInputRef, type: "checkbox", value: value }), mode === 'chip' && isChecked && (jsx(Icon, { "aria-hidden": "true", className: checkboxClasses.icon, color: "brand", icon: CheckedIcon, size: 16 })), mode !== 'chip' && isChecked && (jsx(Icon, { "aria-hidden": "true", className: checkboxClasses.icon, color: "fixed-light", icon: CheckedIcon, size: 7 })), mode !== 'chip' && isIndeterminate && (jsx("span", { "aria-hidden": "true", className: checkboxClasses.indeterminateLine }))] }) }), (label || description) && (jsxs("span", { className: checkboxClasses.textContainer, children: [label && (jsx(Typography, { className: checkboxClasses.label, color: labelColor, variant: "label-primary", children: label })), description && mode !== 'chip' && !shouldShowEditableInput && (jsx(Typography, { className: checkboxClasses.description, color: "text-neutral", variant: "caption", children: description }))] }))] }), shouldShowEditableInput && defaultEditableInput && mode !== 'chip' && !indeterminate && (jsx("div", { className: checkboxClasses.editableInputContainer, children: jsx(Input, { ...defaultEditableInput, ...((!isChecked || disabled) && defaultEditableInput.disabled !== true ? { disabled: true } : {}), inputRef: composeRefs([
|
|
87
|
+
defaultEditableInput.inputRef,
|
|
88
|
+
editableInputRef,
|
|
89
|
+
]), variant: "base" }) }))] }));
|
|
33
90
|
});
|
|
34
|
-
var Checkbox$1 = Checkbox;
|
|
35
91
|
|
|
36
|
-
export { Checkbox
|
|
92
|
+
export { Checkbox as default };
|
|
@@ -1,11 +1,56 @@
|
|
|
1
|
-
import { CheckboxGroupOption,
|
|
2
|
-
import { ChangeEvent, ReactNode } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { CheckboxGroupLayout, CheckboxGroupOption, CheckboxMode } from '@mezzanine-ui/core/checkbox';
|
|
2
|
+
import { ChangeEvent, ChangeEventHandler, ComponentProps, ReactNode } from 'react';
|
|
3
|
+
import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
|
|
4
|
+
import Checkbox from './Checkbox';
|
|
5
|
+
export interface CheckboxGroupChangeEventTarget extends HTMLInputElement {
|
|
6
|
+
values: string[];
|
|
7
|
+
}
|
|
8
|
+
export type CheckboxGroupChangeEvent = ChangeEvent<HTMLInputElement> & {
|
|
9
|
+
target: CheckboxGroupChangeEventTarget;
|
|
10
|
+
};
|
|
11
|
+
export declare function assignCheckboxGroupValuesToEvent(event: ChangeEvent<HTMLInputElement>, values: string[], name: string): CheckboxGroupChangeEvent;
|
|
12
|
+
type CheckboxGroupOptionInput = CheckboxGroupOption & Omit<ComponentProps<typeof Checkbox>, 'checked' | 'mode' | 'children' | 'defaultChecked' | 'indeterminate' | 'inputProps' | 'inputRef' | 'name' | 'onChange' | 'ref' | 'value'> & {
|
|
13
|
+
/**
|
|
14
|
+
* The id of input element.
|
|
15
|
+
* If not provided, will be auto-generated as `{name}-{value}`.
|
|
16
|
+
*/
|
|
17
|
+
id?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The react ref passed to input element.
|
|
20
|
+
*/
|
|
21
|
+
inputRef?: ComponentProps<typeof Checkbox>['inputRef'];
|
|
22
|
+
/**
|
|
23
|
+
* Additional props for the input element.
|
|
24
|
+
*/
|
|
25
|
+
inputProps?: ComponentProps<typeof Checkbox>['inputProps'];
|
|
26
|
+
};
|
|
27
|
+
export interface CheckboxGroupLevelConfig {
|
|
5
28
|
/**
|
|
6
|
-
*
|
|
29
|
+
* Whether the level control is active.
|
|
7
30
|
*/
|
|
8
|
-
|
|
31
|
+
active: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the level control checkbox is disabled.
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
disabled?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* The label displayed for the level control checkbox.
|
|
39
|
+
* @default 'Select all'
|
|
40
|
+
*/
|
|
41
|
+
label?: string;
|
|
42
|
+
/**
|
|
43
|
+
* The mode of level control checkbox.
|
|
44
|
+
* @default 'main'
|
|
45
|
+
*/
|
|
46
|
+
mode?: CheckboxMode;
|
|
47
|
+
/**
|
|
48
|
+
* Custom onChange handler for the level control.
|
|
49
|
+
* If not provided, the default behavior (select/deselect all) will be used.
|
|
50
|
+
*/
|
|
51
|
+
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
52
|
+
}
|
|
53
|
+
interface CheckboxGroupBaseProps extends NativeElementPropsWithoutKeyAndRef<'div'> {
|
|
9
54
|
/**
|
|
10
55
|
* The default value of checkbox group.
|
|
11
56
|
*/
|
|
@@ -16,30 +61,67 @@ export interface CheckboxGroupProps extends Omit<InputCheckGroupProps, 'defaultV
|
|
|
16
61
|
*/
|
|
17
62
|
disabled?: boolean;
|
|
18
63
|
/**
|
|
19
|
-
* The
|
|
20
|
-
*
|
|
64
|
+
* The level control configuration.
|
|
65
|
+
* When provided, a "select all" checkbox will be rendered above the group.
|
|
21
66
|
*/
|
|
22
|
-
|
|
67
|
+
level?: CheckboxGroupLevelConfig;
|
|
23
68
|
/**
|
|
24
|
-
* The
|
|
25
|
-
*
|
|
69
|
+
* The layout of checkbox group.
|
|
70
|
+
* @default 'horizontal'
|
|
71
|
+
*/
|
|
72
|
+
layout?: CheckboxGroupLayout;
|
|
73
|
+
/**
|
|
74
|
+
* The mode of checkboxes in the group.
|
|
75
|
+
* Control the mode of checkboxes in group if mode not passed to checkbox.
|
|
26
76
|
*/
|
|
27
|
-
|
|
77
|
+
mode?: CheckboxMode;
|
|
28
78
|
/**
|
|
29
|
-
* The
|
|
30
|
-
*
|
|
79
|
+
* The name of checkbox group.
|
|
80
|
+
* Control the name of checkboxes in group if name not passed to checkbox.
|
|
81
|
+
*
|
|
82
|
+
* @important When integrating with react-hook-form, this prop is highly recommended.
|
|
83
|
+
* All checkboxes in the group will share the same `name` attribute, which is required
|
|
84
|
+
* for react-hook-form to correctly collect the selected values as an array.
|
|
85
|
+
*
|
|
86
|
+
* @example Using with react-hook-form's Controller:
|
|
87
|
+
* ```tsx
|
|
88
|
+
* const { control } = useForm();
|
|
89
|
+
* <Controller
|
|
90
|
+
* name="interests"
|
|
91
|
+
* control={control}
|
|
92
|
+
* render={({ field }) => (
|
|
93
|
+
* <CheckboxGroup
|
|
94
|
+
* name="interests"
|
|
95
|
+
* value={field.value || []}
|
|
96
|
+
* onChange={(e) => field.onChange(e.target.values)}
|
|
97
|
+
* >
|
|
98
|
+
* <Checkbox value="reading" label="Reading" />
|
|
99
|
+
* <Checkbox value="coding" label="Coding" />
|
|
100
|
+
* </CheckboxGroup>
|
|
101
|
+
* )}
|
|
102
|
+
* />
|
|
103
|
+
* ```
|
|
31
104
|
*/
|
|
32
|
-
|
|
105
|
+
name?: string;
|
|
33
106
|
/**
|
|
34
|
-
* The
|
|
35
|
-
*
|
|
107
|
+
* The onChange of checkbox group.
|
|
108
|
+
* Provides the latest `values` array via `event.target.values`.
|
|
36
109
|
*/
|
|
37
|
-
|
|
110
|
+
onChange?: (event: CheckboxGroupChangeEvent) => void;
|
|
38
111
|
/**
|
|
39
112
|
* The value of checkbox group.
|
|
40
113
|
*/
|
|
41
114
|
value?: string[];
|
|
42
115
|
}
|
|
116
|
+
interface CheckboxGroupOptionsInputProps extends CheckboxGroupBaseProps {
|
|
117
|
+
children?: never;
|
|
118
|
+
options: CheckboxGroupOptionInput[];
|
|
119
|
+
}
|
|
120
|
+
interface CheckboxGroupChildrenInputProps extends CheckboxGroupBaseProps {
|
|
121
|
+
children: ReactNode;
|
|
122
|
+
options?: never;
|
|
123
|
+
}
|
|
124
|
+
export type CheckboxGroupProps = CheckboxGroupOptionsInputProps | CheckboxGroupChildrenInputProps;
|
|
43
125
|
/**
|
|
44
126
|
* The react component for `mezzanine` checkbox group.
|
|
45
127
|
*/
|