@carbon/react 1.29.1 → 1.30.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/es/_virtual/_rollupPluginBabelHelpers.js +16 -5
- package/es/components/Accordion/Accordion.Skeleton.js +0 -7
- package/es/components/Accordion/Accordion.js +1 -8
- package/es/components/Accordion/AccordionItem.js +5 -19
- package/es/components/AspectRatio/AspectRatio.js +0 -5
- package/es/components/Breadcrumb/Breadcrumb.Skeleton.js +0 -3
- package/es/components/Breadcrumb/Breadcrumb.js +0 -3
- package/es/components/Breadcrumb/BreadcrumbItem.js +0 -7
- package/es/components/Button/Button.Skeleton.js +2 -7
- package/es/components/Button/Button.js +2 -36
- package/es/components/ButtonSet/ButtonSet.js +0 -2
- package/es/components/Checkbox/Checkbox.Skeleton.js +0 -1
- package/es/components/Checkbox/Checkbox.js +4 -20
- package/es/components/CheckboxGroup/CheckboxGroup.js +0 -11
- package/es/components/ClassPrefix/index.d.ts +26 -0
- package/es/components/ClassPrefix/index.js +0 -2
- package/es/components/CodeSnippet/CodeSnippet.Skeleton.js +0 -5
- package/es/components/CodeSnippet/CodeSnippet.js +6 -45
- package/es/components/ComboBox/ComboBox.js +12 -79
- package/es/components/ComboBox/tools/filter.js +0 -1
- package/es/components/ComboButton/index.js +0 -14
- package/es/components/ComposedModal/ComposedModal.js +2 -32
- package/es/components/ComposedModal/ModalFooter.js +0 -21
- package/es/components/ComposedModal/ModalHeader.js +0 -12
- package/es/components/ContainedList/ContainedList.js +5 -32
- package/es/components/ContainedList/ContainedListItem/ContainedListItem.js +0 -6
- package/es/components/ContentSwitcher/ContentSwitcher.js +11 -23
- package/es/components/ContextMenu/useContextMenu.js +1 -6
- package/es/components/Copy/Copy.js +8 -31
- package/es/components/CopyButton/CopyButton.js +0 -4
- package/es/components/DangerButton/DangerButton.js +0 -1
- package/es/components/DataTable/DataTable.js +171 -91
- package/es/components/DataTable/Table.js +0 -6
- package/es/components/DataTable/TableBatchAction.js +0 -4
- package/es/components/DataTable/TableBatchActions.js +0 -8
- package/es/components/DataTable/TableBody.js +0 -1
- package/es/components/DataTable/TableContainer.js +0 -5
- package/es/components/DataTable/TableExpandHeader.js +0 -7
- package/es/components/DataTable/TableExpandRow.js +0 -6
- package/es/components/DataTable/TableExpandedRow.js +0 -6
- package/es/components/DataTable/TableHeader.d.ts +1 -1
- package/es/components/DataTable/TableHeader.js +3 -19
- package/es/components/DataTable/TableRow.js +4 -5
- package/es/components/DataTable/TableSelectAll.js +0 -8
- package/es/components/DataTable/TableSelectRow.js +2 -10
- package/es/components/DataTable/TableToolbar.js +0 -3
- package/es/components/DataTable/TableToolbarMenu.d.ts +1 -1
- package/es/components/DataTable/TableToolbarMenu.js +3 -6
- package/es/components/DataTable/TableToolbarSearch.js +2 -30
- package/es/components/DataTable/state/getDerivedStateFromProps.js +0 -4
- package/es/components/DataTable/state/sorting.js +5 -8
- package/es/components/DataTable/tools/denormalize.js +2 -2
- package/es/components/DataTable/tools/filter.js +0 -2
- package/es/components/DataTable/tools/instanceId.js +0 -1
- package/es/components/DataTable/tools/normalize.js +10 -10
- package/es/components/DataTable/tools/sorting.js +5 -13
- package/es/components/DataTableSkeleton/DataTableSkeleton.js +5 -20
- package/es/components/DatePicker/DatePicker.Skeleton.js +0 -6
- package/es/components/DatePicker/DatePicker.js +153 -175
- package/es/components/DatePicker/plugins/appendToPlugin.js +3 -7
- package/es/components/DatePicker/plugins/fixEventsPlugin.js +14 -25
- package/es/components/DatePicker/plugins/rangePlugin.js +2 -7
- package/es/components/DatePickerInput/DatePickerInput.js +2 -28
- package/es/components/Dropdown/Dropdown.Skeleton.js +0 -2
- package/es/components/Dropdown/Dropdown.js +43 -52
- package/es/components/ErrorBoundary/ErrorBoundary.js +0 -10
- package/es/components/ErrorBoundary/ErrorBoundaryContext.js +0 -1
- package/es/components/ExpandableSearch/ExpandableSearch.js +1 -10
- package/es/components/FeatureFlags/index.js +8 -20
- package/es/components/FileUploader/FileUploader.Skeleton.js +0 -2
- package/es/components/FileUploader/FileUploader.js +3 -38
- package/es/components/FileUploader/FileUploaderButton.js +3 -24
- package/es/components/FileUploader/FileUploaderDropContainer.js +1 -28
- package/es/components/FileUploader/FileUploaderItem.js +5 -12
- package/es/components/FileUploader/Filename.js +6 -10
- package/es/components/FluidComboBox/FluidComboBox.Skeleton.js +0 -1
- package/es/components/FluidComboBox/FluidComboBox.js +0 -18
- package/es/components/FluidDatePicker/FluidDatePicker.Skeleton.js +0 -2
- package/es/components/FluidDatePicker/FluidDatePicker.js +0 -6
- package/es/components/FluidDatePickerInput/FluidDatePickerInput.js +2 -1
- package/es/components/FluidDropdown/FluidDropdown.Skeleton.js +0 -1
- package/es/components/FluidDropdown/FluidDropdown.js +0 -18
- package/es/components/FluidForm/FluidForm.js +0 -2
- package/es/components/FluidMultiSelect/FluidMultiSelect.Skeleton.js +0 -1
- package/es/components/FluidMultiSelect/FluidMultiSelect.js +0 -19
- package/es/components/FluidSelect/FluidSelect.Skeleton.js +0 -1
- package/es/components/FluidSelect/FluidSelect.js +0 -10
- package/es/components/FluidTextArea/FluidTextArea.Skeleton.js +0 -1
- package/es/components/FluidTextArea/FluidTextArea.js +0 -20
- package/es/components/FluidTextInput/FluidTextInput.Skeleton.js +0 -1
- package/es/components/FluidTextInput/FluidTextInput.js +0 -14
- package/es/components/FluidTimePicker/FluidTimePicker.Skeleton.js +0 -3
- package/es/components/FluidTimePicker/FluidTimePicker.js +1 -11
- package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.js +0 -6
- package/es/components/Form/Form.d.ts +23 -0
- package/es/components/Form/Form.js +3 -6
- package/es/components/Form/index.d.ts +7 -0
- package/es/components/FormGroup/FormGroup.js +0 -7
- package/es/components/FormItem/FormItem.js +0 -2
- package/es/components/FormLabel/FormLabel.js +1 -7
- package/es/components/Grid/CSSGrid.js +2 -15
- package/es/components/Grid/Column.js +18 -59
- package/es/components/Grid/ColumnHang.js +2 -5
- package/es/components/Grid/FlexGrid.js +2 -8
- package/es/components/Grid/Grid.js +0 -8
- package/es/components/Grid/GridContext.js +1 -3
- package/es/components/Grid/Row.js +2 -7
- package/es/components/Heading/index.js +0 -4
- package/es/components/Icon/Icon.Skeleton.js +2 -2
- package/es/components/IconButton/index.js +0 -10
- package/es/components/IdPrefix/index.js +0 -2
- package/es/components/InlineCheckbox/InlineCheckbox.js +0 -14
- package/es/components/InlineLoading/InlineLoading.js +0 -12
- package/es/components/Layer/index.js +3 -6
- package/es/components/Layout/LayoutDirection.js +0 -3
- package/es/components/Layout/useLayoutDirection.js +0 -1
- package/es/components/Link/Link.js +3 -10
- package/es/components/ListBox/ListBox.js +2 -13
- package/es/components/ListBox/ListBoxField.js +0 -5
- package/es/components/ListBox/ListBoxMenuIcon.js +0 -4
- package/es/components/ListBox/ListBoxMenuItem.js +2 -6
- package/es/components/ListBox/ListBoxPropTypes.d.ts +2 -2
- package/es/components/ListBox/ListBoxSelection.js +1 -13
- package/es/components/ListBox/next/ListBoxSelection.js +1 -14
- package/es/components/ListBox/next/ListBoxTrigger.js +1 -3
- package/es/components/ListItem/ListItem.d.ts +23 -0
- package/es/components/ListItem/ListItem.js +4 -8
- package/es/components/ListItem/index.d.ts +7 -0
- package/es/components/Loading/Loading.js +0 -6
- package/es/components/Menu/Menu.js +22 -40
- package/es/components/Menu/MenuContext.js +4 -5
- package/es/components/Menu/MenuItem.js +5 -39
- package/es/components/MenuButton/index.js +0 -9
- package/es/components/Modal/Modal.js +1 -46
- package/es/components/ModalWrapper/ModalWrapper.js +2 -15
- package/es/components/MultiSelect/FilterableMultiSelect.js +2 -60
- package/es/components/MultiSelect/MultiSelect.js +22 -70
- package/es/components/MultiSelect/MultiSelectPropTypes.js +0 -1
- package/es/components/MultiSelect/index.js +0 -1
- package/es/components/MultiSelect/tools/itemToString.js +0 -2
- package/es/components/MultiSelect/tools/sorting.js +3 -4
- package/es/components/Notification/Notification.js +0 -78
- package/es/components/NumberInput/NumberInput.Skeleton.js +0 -2
- package/es/components/NumberInput/NumberInput.js +3 -60
- package/es/components/OrderedList/OrderedList.d.ts +39 -0
- package/es/components/OrderedList/OrderedList.js +7 -19
- package/es/components/{Form/index.js → OrderedList/index.d.ts} +1 -3
- package/es/components/OverflowMenu/OverflowMenu.js +65 -86
- package/es/components/OverflowMenuItem/OverflowMenuItem.js +6 -23
- package/es/components/OverflowMenuV2/index.js +0 -5
- package/es/components/Pagination/Pagination.Skeleton.js +0 -2
- package/es/components/Pagination/Pagination.js +11 -47
- package/es/components/Pagination/experimental/PageSelector.js +0 -10
- package/es/components/Pagination/experimental/Pagination.js +2 -48
- package/es/components/PaginationNav/PaginationNav.js +15 -59
- package/es/components/Popover/index.d.ts +14 -8
- package/es/components/Popover/index.js +44 -48
- package/es/components/PrimaryButton/PrimaryButton.js +0 -1
- package/es/components/ProgressBar/ProgressBar.js +0 -15
- package/es/components/ProgressIndicator/ProgressIndicator.Skeleton.js +0 -4
- package/es/components/ProgressIndicator/ProgressIndicator.js +2 -40
- package/es/components/RadioButton/RadioButton.Skeleton.js +0 -1
- package/es/components/RadioButton/RadioButton.js +0 -13
- package/es/components/RadioButtonGroup/RadioButtonGroup.js +3 -23
- package/es/components/RadioTile/RadioTile.js +0 -12
- package/es/components/Search/Search.Skeleton.js +0 -2
- package/es/components/Search/Search.js +1 -28
- package/es/components/SecondaryButton/SecondaryButton.js +0 -1
- package/es/components/Select/Select.Skeleton.js +0 -2
- package/es/components/Select/Select.d.ts +1 -1
- package/es/components/Select/Select.js +6 -33
- package/es/components/SelectItem/SelectItem.js +0 -5
- package/es/components/SelectItemGroup/SelectItemGroup.d.ts +0 -1
- package/es/components/SelectItemGroup/SelectItemGroup.js +1 -7
- package/es/components/SkeletonIcon/SkeletonIcon.js +0 -2
- package/es/components/SkeletonPlaceholder/SkeletonPlaceholder.js +0 -1
- package/es/components/SkeletonText/SkeletonText.js +0 -12
- package/es/components/Slider/Slider.Skeleton.js +0 -2
- package/es/components/Slider/Slider.d.ts +0 -1
- package/es/components/Slider/Slider.js +112 -135
- package/es/components/Stack/Stack.js +1 -8
- package/es/components/StructuredList/StructuredList.Skeleton.js +0 -5
- package/es/components/StructuredList/StructuredList.js +1 -25
- package/es/components/Switch/IconSwitch.js +0 -18
- package/es/components/Switch/Switch.js +0 -11
- package/es/components/TabContent/TabContent.js +2 -6
- package/es/components/Tabs/Tabs.Skeleton.js +0 -4
- package/es/components/Tabs/Tabs.js +135 -104
- package/es/components/Tabs/usePressable.js +18 -31
- package/es/components/Tag/Tag.Skeleton.js +0 -2
- package/es/components/Tag/Tag.js +0 -15
- package/es/components/Text/Text.js +5 -18
- package/es/components/Text/TextDirection.js +0 -3
- package/es/components/Text/TextDirectionContext.js +0 -1
- package/es/components/Text/createTextComponent.js +0 -3
- package/es/components/TextArea/TextArea.Skeleton.js +0 -2
- package/es/components/TextArea/TextArea.js +11 -33
- package/es/components/TextInput/ControlledPasswordInput.js +0 -20
- package/es/components/TextInput/PasswordInput.js +0 -25
- package/es/components/TextInput/TextInput.Skeleton.js +0 -2
- package/es/components/TextInput/TextInput.d.ts +1 -1
- package/es/components/TextInput/TextInput.js +5 -33
- package/es/components/TextInput/util.js +3 -5
- package/es/components/Theme/index.js +1 -6
- package/es/components/Tile/Tile.js +32 -59
- package/es/components/TileGroup/TileGroup.js +1 -22
- package/es/components/TimePicker/TimePicker.js +6 -32
- package/es/components/TimePickerSelect/TimePickerSelect.js +2 -5
- package/es/components/Toggle/Toggle.Skeleton.js +0 -8
- package/es/components/Toggle/Toggle.js +0 -16
- package/es/components/ToggleSmall/ToggleSmall.Skeleton.js +0 -7
- package/es/components/Toggletip/index.d.ts +148 -0
- package/es/components/Toggletip/index.js +20 -44
- package/es/components/Tooltip/DefinitionTooltip.js +0 -11
- package/es/components/Tooltip/Tooltip.d.ts +1 -1
- package/es/components/Tooltip/Tooltip.js +4 -21
- package/es/components/TreeView/TreeNode.js +21 -66
- package/es/components/TreeView/TreeView.js +11 -67
- package/es/components/UIShell/Content.js +2 -4
- package/es/components/UIShell/Header.js +0 -2
- package/es/components/UIShell/HeaderContainer.d.ts +33 -0
- package/es/components/UIShell/HeaderContainer.js +13 -11
- package/es/components/UIShell/HeaderGlobalAction.js +0 -6
- package/es/components/UIShell/HeaderGlobalBar.js +0 -1
- package/es/components/UIShell/HeaderMenu.js +32 -31
- package/es/components/UIShell/HeaderMenuButton.js +2 -4
- package/es/components/UIShell/HeaderMenuItem.js +0 -8
- package/es/components/UIShell/HeaderName.js +0 -5
- package/es/components/UIShell/HeaderNavigation.js +0 -2
- package/es/components/UIShell/HeaderPanel.js +0 -2
- package/es/components/UIShell/HeaderSideNavItems.js +0 -2
- package/es/components/UIShell/Link.js +2 -3
- package/es/components/UIShell/SideNav.d.ts +3 -1
- package/es/components/UIShell/SideNav.js +44 -36
- package/es/components/UIShell/SideNavDetails.js +0 -3
- package/es/components/UIShell/SideNavDivider.js +0 -1
- package/es/components/UIShell/SideNavFooter.js +1 -4
- package/es/components/UIShell/SideNavHeader.js +0 -4
- package/es/components/UIShell/SideNavIcon.js +0 -3
- package/es/components/UIShell/SideNavItem.js +0 -3
- package/es/components/UIShell/SideNavItems.js +2 -6
- package/es/components/UIShell/SideNavLink.js +3 -7
- package/es/components/UIShell/SideNavLinkText.js +0 -2
- package/es/components/UIShell/SideNavMenu.js +0 -16
- package/es/components/UIShell/SideNavMenuItem.js +0 -2
- package/es/components/UIShell/SideNavSwitcher.js +2 -5
- package/es/components/UIShell/SkipToContent.d.ts +32 -0
- package/es/components/UIShell/SkipToContent.js +8 -15
- package/es/components/UIShell/Switcher.js +0 -2
- package/es/components/UIShell/SwitcherDivider.js +0 -1
- package/es/components/UIShell/SwitcherItem.js +0 -3
- package/es/components/UnorderedList/UnorderedList.d.ts +34 -0
- package/es/components/UnorderedList/UnorderedList.js +6 -16
- package/es/components/UnorderedList/index.d.ts +7 -0
- package/es/index.js +7 -8
- package/es/internal/ClickListener.js +3 -13
- package/es/internal/FloatingMenu.js +57 -63
- package/es/internal/OptimizedResize.js +6 -12
- package/es/internal/Selection.js +2 -25
- package/es/internal/createClassWrapper.js +0 -2
- package/es/internal/deprecateFieldOnObject.js +0 -4
- package/es/internal/focus/index.js +0 -1
- package/es/internal/keyboard/keys.js +2 -1
- package/es/internal/keyboard/match.js +1 -6
- package/es/internal/keyboard/navigation.js +8 -7
- package/es/internal/useAnnouncer.js +0 -1
- package/es/internal/useAttachedMenu.js +1 -9
- package/es/internal/useControllableState.js +6 -13
- package/es/internal/useDelayedState.js +2 -4
- package/es/internal/useEffectOnce.js +0 -1
- package/es/internal/useEvent.js +61 -3
- package/es/internal/useId.js +2 -5
- package/es/internal/useIsomorphicEffect.js +1 -0
- package/es/internal/useMergedRefs.js +2 -2
- package/es/internal/useNoInteractiveChildren.js +2 -13
- package/es/internal/useNormalizedInputProps.js +0 -3
- package/es/internal/useSavedCallback.js +0 -1
- package/es/internal/warning.js +0 -3
- package/es/internal/wrapFocus.js +1 -8
- package/es/prop-types/deprecate.js +2 -5
- package/es/prop-types/isRequiredOneOf.js +2 -5
- package/es/prop-types/requiredIfGivenPropIsTruthy.js +0 -2
- package/es/tools/array.js +0 -3
- package/es/tools/events.js +0 -3
- package/es/tools/mergeRefs.js +0 -2
- package/es/tools/wrapComponent.js +2 -5
- package/lib/_virtual/_rollupPluginBabelHelpers.js +17 -4
- package/lib/components/Accordion/Accordion.Skeleton.js +0 -7
- package/lib/components/Accordion/Accordion.js +1 -27
- package/lib/components/Accordion/AccordionItem.js +5 -19
- package/lib/components/AspectRatio/AspectRatio.js +0 -5
- package/lib/components/Breadcrumb/Breadcrumb.Skeleton.js +0 -3
- package/lib/components/Breadcrumb/Breadcrumb.js +0 -3
- package/lib/components/Breadcrumb/BreadcrumbItem.js +0 -7
- package/lib/components/Button/Button.Skeleton.js +2 -26
- package/lib/components/Button/Button.js +2 -36
- package/lib/components/ButtonSet/ButtonSet.js +0 -2
- package/lib/components/Checkbox/Checkbox.Skeleton.js +0 -1
- package/lib/components/Checkbox/Checkbox.js +4 -20
- package/lib/components/CheckboxGroup/CheckboxGroup.js +0 -11
- package/lib/components/ClassPrefix/index.d.ts +26 -0
- package/lib/components/ClassPrefix/index.js +0 -2
- package/lib/components/CodeSnippet/CodeSnippet.Skeleton.js +0 -5
- package/lib/components/CodeSnippet/CodeSnippet.js +6 -45
- package/lib/components/ComboBox/ComboBox.js +19 -86
- package/lib/components/ComboBox/tools/filter.js +0 -1
- package/lib/components/ComboButton/index.js +0 -14
- package/lib/components/ComposedModal/ComposedModal.js +2 -32
- package/lib/components/ComposedModal/ModalFooter.js +0 -21
- package/lib/components/ComposedModal/ModalHeader.js +0 -12
- package/lib/components/ContainedList/ContainedList.js +5 -32
- package/lib/components/ContainedList/ContainedListItem/ContainedListItem.js +0 -6
- package/lib/components/ContentSwitcher/ContentSwitcher.js +11 -23
- package/lib/components/ContextMenu/useContextMenu.js +1 -6
- package/lib/components/Copy/Copy.js +8 -50
- package/lib/components/CopyButton/CopyButton.js +0 -4
- package/lib/components/DangerButton/DangerButton.js +0 -1
- package/lib/components/DataTable/DataTable.js +171 -91
- package/lib/components/DataTable/Table.js +0 -6
- package/lib/components/DataTable/TableBatchAction.js +0 -4
- package/lib/components/DataTable/TableBatchActions.js +0 -8
- package/lib/components/DataTable/TableBody.js +0 -1
- package/lib/components/DataTable/TableContainer.js +0 -5
- package/lib/components/DataTable/TableExpandHeader.js +0 -7
- package/lib/components/DataTable/TableExpandRow.js +0 -6
- package/lib/components/DataTable/TableExpandedRow.js +0 -6
- package/lib/components/DataTable/TableHeader.d.ts +1 -1
- package/lib/components/DataTable/TableHeader.js +3 -19
- package/lib/components/DataTable/TableRow.js +4 -5
- package/lib/components/DataTable/TableSelectAll.js +0 -8
- package/lib/components/DataTable/TableSelectRow.js +2 -10
- package/lib/components/DataTable/TableToolbar.js +0 -3
- package/lib/components/DataTable/TableToolbarMenu.d.ts +1 -1
- package/lib/components/DataTable/TableToolbarMenu.js +3 -6
- package/lib/components/DataTable/TableToolbarSearch.js +2 -30
- package/lib/components/DataTable/state/getDerivedStateFromProps.js +0 -4
- package/lib/components/DataTable/state/sorting.js +5 -8
- package/lib/components/DataTable/tools/denormalize.js +2 -2
- package/lib/components/DataTable/tools/filter.js +0 -2
- package/lib/components/DataTable/tools/instanceId.js +0 -1
- package/lib/components/DataTable/tools/normalize.js +10 -10
- package/lib/components/DataTable/tools/sorting.js +5 -13
- package/lib/components/DataTableSkeleton/DataTableSkeleton.js +5 -20
- package/lib/components/DatePicker/DatePicker.Skeleton.js +0 -6
- package/lib/components/DatePicker/DatePicker.js +153 -175
- package/lib/components/DatePicker/plugins/appendToPlugin.js +3 -7
- package/lib/components/DatePicker/plugins/fixEventsPlugin.js +14 -25
- package/lib/components/DatePicker/plugins/rangePlugin.js +2 -7
- package/lib/components/DatePickerInput/DatePickerInput.js +2 -28
- package/lib/components/Dropdown/Dropdown.Skeleton.js +0 -2
- package/lib/components/Dropdown/Dropdown.js +50 -59
- package/lib/components/ErrorBoundary/ErrorBoundary.js +0 -10
- package/lib/components/ErrorBoundary/ErrorBoundaryContext.js +0 -1
- package/lib/components/ExpandableSearch/ExpandableSearch.js +1 -10
- package/lib/components/FeatureFlags/index.js +8 -20
- package/lib/components/FileUploader/FileUploader.Skeleton.js +0 -2
- package/lib/components/FileUploader/FileUploader.js +3 -57
- package/lib/components/FileUploader/FileUploaderButton.js +3 -43
- package/lib/components/FileUploader/FileUploaderDropContainer.js +1 -28
- package/lib/components/FileUploader/FileUploaderItem.js +5 -31
- package/lib/components/FileUploader/Filename.js +6 -10
- package/lib/components/FluidComboBox/FluidComboBox.Skeleton.js +0 -1
- package/lib/components/FluidComboBox/FluidComboBox.js +0 -18
- package/lib/components/FluidDatePicker/FluidDatePicker.Skeleton.js +0 -2
- package/lib/components/FluidDatePicker/FluidDatePicker.js +0 -6
- package/lib/components/FluidDatePickerInput/FluidDatePickerInput.js +2 -1
- package/lib/components/FluidDropdown/FluidDropdown.Skeleton.js +0 -1
- package/lib/components/FluidDropdown/FluidDropdown.js +0 -18
- package/lib/components/FluidForm/FluidForm.js +0 -2
- package/lib/components/FluidMultiSelect/FluidMultiSelect.Skeleton.js +0 -1
- package/lib/components/FluidMultiSelect/FluidMultiSelect.js +0 -19
- package/lib/components/FluidSelect/FluidSelect.Skeleton.js +0 -1
- package/lib/components/FluidSelect/FluidSelect.js +0 -10
- package/lib/components/FluidTextArea/FluidTextArea.Skeleton.js +0 -1
- package/lib/components/FluidTextArea/FluidTextArea.js +0 -20
- package/lib/components/FluidTextInput/FluidTextInput.Skeleton.js +0 -1
- package/lib/components/FluidTextInput/FluidTextInput.js +0 -14
- package/lib/components/FluidTimePicker/FluidTimePicker.Skeleton.js +0 -3
- package/lib/components/FluidTimePicker/FluidTimePicker.js +1 -11
- package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.js +0 -6
- package/lib/components/Form/Form.d.ts +23 -0
- package/lib/components/Form/Form.js +3 -6
- package/lib/components/Form/index.d.ts +7 -0
- package/lib/components/FormGroup/FormGroup.js +0 -7
- package/lib/components/FormItem/FormItem.js +0 -2
- package/lib/components/FormLabel/FormLabel.js +1 -26
- package/lib/components/Grid/CSSGrid.js +2 -15
- package/lib/components/Grid/Column.js +18 -59
- package/lib/components/Grid/ColumnHang.js +2 -5
- package/lib/components/Grid/FlexGrid.js +2 -8
- package/lib/components/Grid/Grid.js +0 -8
- package/lib/components/Grid/GridContext.js +1 -3
- package/lib/components/Grid/Row.js +2 -7
- package/lib/components/Heading/index.js +0 -4
- package/lib/components/Icon/Icon.Skeleton.js +2 -2
- package/lib/components/IconButton/index.js +0 -10
- package/lib/components/IdPrefix/index.js +0 -2
- package/lib/components/InlineCheckbox/InlineCheckbox.js +0 -14
- package/lib/components/InlineLoading/InlineLoading.js +0 -12
- package/lib/components/Layer/index.js +3 -6
- package/lib/components/Layout/LayoutDirection.js +0 -3
- package/lib/components/Layout/useLayoutDirection.js +0 -1
- package/lib/components/Link/Link.js +3 -10
- package/lib/components/ListBox/ListBox.js +2 -13
- package/lib/components/ListBox/ListBoxField.js +0 -5
- package/lib/components/ListBox/ListBoxMenuIcon.js +0 -4
- package/lib/components/ListBox/ListBoxMenuItem.js +2 -6
- package/lib/components/ListBox/ListBoxPropTypes.d.ts +2 -2
- package/lib/components/ListBox/ListBoxSelection.js +1 -13
- package/lib/components/ListBox/next/ListBoxSelection.js +1 -14
- package/lib/components/ListBox/next/ListBoxTrigger.js +1 -3
- package/lib/components/ListItem/ListItem.d.ts +23 -0
- package/lib/components/ListItem/ListItem.js +4 -8
- package/lib/components/ListItem/index.d.ts +7 -0
- package/lib/components/Loading/Loading.js +0 -6
- package/lib/components/Menu/Menu.js +22 -40
- package/lib/components/Menu/MenuContext.js +4 -5
- package/lib/components/Menu/MenuItem.js +5 -39
- package/lib/components/MenuButton/index.js +0 -9
- package/lib/components/Modal/Modal.js +1 -46
- package/lib/components/ModalWrapper/ModalWrapper.js +2 -15
- package/lib/components/MultiSelect/FilterableMultiSelect.js +8 -66
- package/lib/components/MultiSelect/MultiSelect.js +30 -78
- package/lib/components/MultiSelect/MultiSelectPropTypes.js +0 -1
- package/lib/components/MultiSelect/index.js +0 -1
- package/lib/components/MultiSelect/tools/itemToString.js +0 -2
- package/lib/components/MultiSelect/tools/sorting.js +3 -4
- package/lib/components/Notification/Notification.js +0 -78
- package/lib/components/NumberInput/NumberInput.Skeleton.js +0 -2
- package/lib/components/NumberInput/NumberInput.js +3 -60
- package/lib/components/OrderedList/OrderedList.d.ts +39 -0
- package/lib/components/OrderedList/OrderedList.js +7 -19
- package/lib/components/OrderedList/index.d.ts +7 -0
- package/lib/components/OverflowMenu/OverflowMenu.js +65 -86
- package/lib/components/OverflowMenuItem/OverflowMenuItem.js +6 -23
- package/lib/components/OverflowMenuV2/index.js +0 -5
- package/lib/components/Pagination/Pagination.Skeleton.js +0 -2
- package/lib/components/Pagination/Pagination.js +11 -47
- package/lib/components/Pagination/experimental/PageSelector.js +0 -10
- package/lib/components/Pagination/experimental/Pagination.js +2 -67
- package/lib/components/PaginationNav/PaginationNav.js +15 -78
- package/lib/components/Popover/index.d.ts +14 -8
- package/lib/components/Popover/index.js +44 -48
- package/lib/components/PrimaryButton/PrimaryButton.js +0 -1
- package/lib/components/ProgressBar/ProgressBar.js +0 -15
- package/lib/components/ProgressIndicator/ProgressIndicator.Skeleton.js +0 -4
- package/lib/components/ProgressIndicator/ProgressIndicator.js +2 -40
- package/lib/components/RadioButton/RadioButton.Skeleton.js +0 -1
- package/lib/components/RadioButton/RadioButton.js +0 -13
- package/lib/components/RadioButtonGroup/RadioButtonGroup.js +3 -23
- package/lib/components/RadioTile/RadioTile.js +0 -12
- package/lib/components/Search/Search.Skeleton.js +0 -2
- package/lib/components/Search/Search.js +1 -28
- package/lib/components/SecondaryButton/SecondaryButton.js +0 -1
- package/lib/components/Select/Select.Skeleton.js +0 -2
- package/lib/components/Select/Select.d.ts +1 -1
- package/lib/components/Select/Select.js +6 -33
- package/lib/components/SelectItem/SelectItem.js +0 -5
- package/lib/components/SelectItemGroup/SelectItemGroup.d.ts +0 -1
- package/lib/components/SelectItemGroup/SelectItemGroup.js +1 -26
- package/lib/components/SkeletonIcon/SkeletonIcon.js +0 -2
- package/lib/components/SkeletonPlaceholder/SkeletonPlaceholder.js +0 -1
- package/lib/components/SkeletonText/SkeletonText.js +0 -12
- package/lib/components/Slider/Slider.Skeleton.js +0 -2
- package/lib/components/Slider/Slider.d.ts +0 -1
- package/lib/components/Slider/Slider.js +112 -154
- package/lib/components/Stack/Stack.js +1 -8
- package/lib/components/StructuredList/StructuredList.Skeleton.js +0 -5
- package/lib/components/StructuredList/StructuredList.js +1 -25
- package/lib/components/Switch/IconSwitch.js +0 -18
- package/lib/components/Switch/Switch.js +0 -11
- package/lib/components/TabContent/TabContent.js +2 -6
- package/lib/components/Tabs/Tabs.Skeleton.js +0 -4
- package/lib/components/Tabs/Tabs.js +133 -102
- package/lib/components/Tabs/usePressable.js +18 -31
- package/lib/components/Tag/Tag.Skeleton.js +0 -2
- package/lib/components/Tag/Tag.js +0 -15
- package/lib/components/Text/Text.js +5 -18
- package/lib/components/Text/TextDirection.js +0 -3
- package/lib/components/Text/TextDirectionContext.js +0 -1
- package/lib/components/Text/createTextComponent.js +0 -3
- package/lib/components/TextArea/TextArea.Skeleton.js +0 -2
- package/lib/components/TextArea/TextArea.js +10 -32
- package/lib/components/TextInput/ControlledPasswordInput.js +0 -20
- package/lib/components/TextInput/PasswordInput.js +0 -25
- package/lib/components/TextInput/TextInput.Skeleton.js +0 -2
- package/lib/components/TextInput/TextInput.d.ts +1 -1
- package/lib/components/TextInput/TextInput.js +5 -52
- package/lib/components/TextInput/util.js +3 -5
- package/lib/components/Theme/index.js +1 -6
- package/lib/components/Tile/Tile.js +31 -58
- package/lib/components/TileGroup/TileGroup.js +1 -22
- package/lib/components/TimePicker/TimePicker.js +6 -32
- package/lib/components/TimePickerSelect/TimePickerSelect.js +2 -5
- package/lib/components/Toggle/Toggle.Skeleton.js +0 -8
- package/lib/components/Toggle/Toggle.js +0 -16
- package/lib/components/ToggleSmall/ToggleSmall.Skeleton.js +0 -7
- package/lib/components/Toggletip/index.d.ts +148 -0
- package/lib/components/Toggletip/index.js +20 -44
- package/lib/components/Tooltip/DefinitionTooltip.js +0 -11
- package/lib/components/Tooltip/Tooltip.d.ts +1 -1
- package/lib/components/Tooltip/Tooltip.js +4 -21
- package/lib/components/TreeView/TreeNode.js +21 -66
- package/lib/components/TreeView/TreeView.js +11 -67
- package/lib/components/UIShell/Content.js +2 -4
- package/lib/components/UIShell/Header.js +0 -2
- package/lib/components/UIShell/HeaderContainer.d.ts +33 -0
- package/lib/components/UIShell/HeaderContainer.js +13 -11
- package/lib/components/UIShell/HeaderGlobalAction.js +0 -6
- package/lib/components/UIShell/HeaderGlobalBar.js +0 -1
- package/lib/components/UIShell/HeaderMenu.js +32 -31
- package/lib/components/UIShell/HeaderMenuButton.js +2 -4
- package/lib/components/UIShell/HeaderMenuItem.js +0 -8
- package/lib/components/UIShell/HeaderName.js +0 -5
- package/lib/components/UIShell/HeaderNavigation.js +0 -2
- package/lib/components/UIShell/HeaderPanel.js +0 -2
- package/lib/components/UIShell/HeaderSideNavItems.js +0 -2
- package/lib/components/UIShell/Link.js +2 -3
- package/lib/components/UIShell/SideNav.d.ts +3 -1
- package/lib/components/UIShell/SideNav.js +43 -35
- package/lib/components/UIShell/SideNavDetails.js +0 -3
- package/lib/components/UIShell/SideNavDivider.js +0 -1
- package/lib/components/UIShell/SideNavFooter.js +1 -4
- package/lib/components/UIShell/SideNavHeader.js +0 -4
- package/lib/components/UIShell/SideNavIcon.js +0 -3
- package/lib/components/UIShell/SideNavItem.js +0 -3
- package/lib/components/UIShell/SideNavItems.js +2 -6
- package/lib/components/UIShell/SideNavLink.js +3 -7
- package/lib/components/UIShell/SideNavLinkText.js +0 -2
- package/lib/components/UIShell/SideNavMenu.js +0 -16
- package/lib/components/UIShell/SideNavMenuItem.js +0 -2
- package/lib/components/UIShell/SideNavSwitcher.js +2 -5
- package/lib/components/UIShell/SkipToContent.d.ts +32 -0
- package/lib/components/UIShell/SkipToContent.js +8 -15
- package/lib/components/UIShell/Switcher.js +0 -2
- package/lib/components/UIShell/SwitcherDivider.js +0 -1
- package/lib/components/UIShell/SwitcherItem.js +0 -3
- package/lib/components/UnorderedList/UnorderedList.d.ts +34 -0
- package/lib/components/UnorderedList/UnorderedList.js +6 -16
- package/lib/components/UnorderedList/index.d.ts +7 -0
- package/lib/index.js +42 -43
- package/lib/internal/ClickListener.js +3 -13
- package/lib/internal/FloatingMenu.js +57 -63
- package/lib/internal/OptimizedResize.js +6 -12
- package/lib/internal/Selection.js +2 -25
- package/lib/internal/createClassWrapper.js +0 -2
- package/lib/internal/deprecateFieldOnObject.js +0 -4
- package/lib/internal/focus/index.js +0 -1
- package/lib/internal/keyboard/keys.js +2 -1
- package/lib/internal/keyboard/match.js +1 -6
- package/lib/internal/keyboard/navigation.js +8 -7
- package/lib/internal/useAnnouncer.js +0 -1
- package/lib/internal/useAttachedMenu.js +1 -9
- package/lib/internal/useControllableState.js +6 -13
- package/lib/internal/useDelayedState.js +2 -4
- package/lib/internal/useEffectOnce.js +0 -1
- package/lib/internal/useEvent.js +61 -2
- package/lib/internal/useId.js +2 -5
- package/lib/internal/useIsomorphicEffect.js +1 -0
- package/lib/internal/useMergedRefs.js +2 -2
- package/lib/internal/useNoInteractiveChildren.js +2 -13
- package/lib/internal/useNormalizedInputProps.js +0 -3
- package/lib/internal/useSavedCallback.js +0 -1
- package/lib/internal/warning.js +0 -3
- package/lib/internal/wrapFocus.js +1 -8
- package/lib/prop-types/deprecate.js +2 -5
- package/lib/prop-types/isRequiredOneOf.js +2 -5
- package/lib/prop-types/requiredIfGivenPropIsTruthy.js +0 -2
- package/lib/tools/array.js +0 -3
- package/lib/tools/events.js +0 -3
- package/lib/tools/mergeRefs.js +0 -2
- package/lib/tools/wrapComponent.js +2 -5
- package/package.json +9 -9
- package/es/components/Tab/Tab.js +0 -185
- package/es/components/Tab/index.js +0 -14
- package/es/components/TimePickerSelect/index.js +0 -13
- package/lib/components/Form/index.js +0 -17
- package/lib/components/Tab/Tab.js +0 -214
- package/lib/components/Tab/index.js +0 -39
- package/lib/components/TimePickerSelect/index.js +0 -38
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
9
|
-
import { ChevronLeft, ChevronRight } from '@carbon/icons-react';
|
|
9
|
+
import { ChevronLeft, ChevronRight, Close } from '@carbon/icons-react';
|
|
10
10
|
import cx from 'classnames';
|
|
11
11
|
import debounce from 'lodash.debounce';
|
|
12
12
|
import PropTypes from 'prop-types';
|
|
@@ -22,28 +22,33 @@ import { getInteractiveContent } from '../../internal/useNoInteractiveChildren.j
|
|
|
22
22
|
import { usePrefix } from '../../internal/usePrefix.js';
|
|
23
23
|
import { usePressable } from './usePressable.js';
|
|
24
24
|
import deprecate from '../../prop-types/deprecate.js';
|
|
25
|
+
import { useEvent } from '../../internal/useEvent.js';
|
|
25
26
|
import { matches, match } from '../../internal/keyboard/match.js';
|
|
26
|
-
import { ArrowRight, ArrowLeft, Home, End } from '../../internal/keyboard/keys.js';
|
|
27
|
+
import { ArrowRight, ArrowLeft, Home, End, Delete } from '../../internal/keyboard/keys.js';
|
|
27
28
|
|
|
28
|
-
var _ChevronLeft, _ChevronRight;
|
|
29
|
+
var _ChevronLeft, _ChevronRight, _Close;
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
// Used to manage the overall state of the Tabs
|
|
32
|
+
const TabsContext = /*#__PURE__*/React__default.createContext();
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
// Used to keep track of position in a tablist
|
|
35
|
+
const TabContext = /*#__PURE__*/React__default.createContext();
|
|
33
36
|
|
|
37
|
+
// Used to keep track of position in a list of tab panels
|
|
34
38
|
const TabPanelContext = /*#__PURE__*/React__default.createContext();
|
|
35
|
-
|
|
36
39
|
function Tabs(_ref) {
|
|
37
40
|
let {
|
|
38
41
|
children,
|
|
39
42
|
defaultSelectedIndex = 0,
|
|
40
43
|
onChange,
|
|
41
|
-
selectedIndex: controlledSelectedIndex
|
|
44
|
+
selectedIndex: controlledSelectedIndex,
|
|
45
|
+
dismissable,
|
|
46
|
+
onTabCloseRequest
|
|
42
47
|
} = _ref;
|
|
43
|
-
const baseId = useId('ccs');
|
|
44
|
-
|
|
45
|
-
const [activeIndex, setActiveIndex] = useState(defaultSelectedIndex);
|
|
46
|
-
|
|
48
|
+
const baseId = useId('ccs');
|
|
49
|
+
// The active index is used to track the element which has focus in our tablist
|
|
50
|
+
const [activeIndex, setActiveIndex] = useState(defaultSelectedIndex);
|
|
51
|
+
// The selected index is used for the tab/panel pairing which is "visible"
|
|
47
52
|
const [selectedIndex, setSelectedIndex] = useControllableState({
|
|
48
53
|
value: controlledSelectedIndex,
|
|
49
54
|
defaultValue: defaultSelectedIndex,
|
|
@@ -59,6 +64,8 @@ function Tabs(_ref) {
|
|
|
59
64
|
baseId,
|
|
60
65
|
activeIndex,
|
|
61
66
|
defaultSelectedIndex,
|
|
67
|
+
dismissable,
|
|
68
|
+
onTabCloseRequest,
|
|
62
69
|
setActiveIndex,
|
|
63
70
|
selectedIndex,
|
|
64
71
|
setSelectedIndex
|
|
@@ -67,32 +74,43 @@ function Tabs(_ref) {
|
|
|
67
74
|
value: value
|
|
68
75
|
}, children);
|
|
69
76
|
}
|
|
70
|
-
|
|
71
77
|
Tabs.propTypes = {
|
|
72
78
|
/**
|
|
73
79
|
* Provide child elements to be rendered inside of the `Tabs`.
|
|
74
80
|
* These elements should render either `TabsList` or `TabsPanels`
|
|
75
81
|
*/
|
|
76
82
|
children: PropTypes.node,
|
|
77
|
-
|
|
78
83
|
/**
|
|
79
84
|
* Specify which content tab should be initially selected when the component
|
|
80
85
|
* is first rendered
|
|
81
86
|
*/
|
|
82
87
|
defaultSelectedIndex: PropTypes.number,
|
|
83
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Whether the render Tab children should be dismissable.
|
|
90
|
+
*/
|
|
91
|
+
dismissable: PropTypes.bool,
|
|
84
92
|
/**
|
|
85
93
|
* Provide an optional function which is called whenever the state of the
|
|
86
94
|
* `Tabs` changes
|
|
87
95
|
*/
|
|
88
96
|
onChange: PropTypes.func,
|
|
89
|
-
|
|
97
|
+
/**
|
|
98
|
+
* If specifying the `onTabCloseRequest` prop, provide a callback function
|
|
99
|
+
* responsible for removing the tab when close button is pressed on one of the Tab elements
|
|
100
|
+
*/
|
|
101
|
+
onTabCloseRequest: props => {
|
|
102
|
+
if (props.dismissable && !props.onTabCloseRequest) {
|
|
103
|
+
return new Error('dismissable property specified without also providing an onTabCloseRequest property.');
|
|
104
|
+
}
|
|
105
|
+
return undefined;
|
|
106
|
+
},
|
|
90
107
|
/**
|
|
91
108
|
* Control which content panel is currently selected. This puts the component
|
|
92
109
|
* in a controlled mode and should be used along with `onChange`
|
|
93
110
|
*/
|
|
94
111
|
selectedIndex: PropTypes.number
|
|
95
112
|
};
|
|
113
|
+
|
|
96
114
|
/**
|
|
97
115
|
* Get the next index for a given keyboard event given a count of the total
|
|
98
116
|
* items and the current index
|
|
@@ -101,7 +119,6 @@ Tabs.propTypes = {
|
|
|
101
119
|
* @param {number} index
|
|
102
120
|
* @returns {number}
|
|
103
121
|
*/
|
|
104
|
-
|
|
105
122
|
function getNextIndex(event, total, index) {
|
|
106
123
|
if (match(event, ArrowRight)) {
|
|
107
124
|
return (index + 1) % total;
|
|
@@ -113,7 +130,6 @@ function getNextIndex(event, total, index) {
|
|
|
113
130
|
return total - 1;
|
|
114
131
|
}
|
|
115
132
|
}
|
|
116
|
-
|
|
117
133
|
function TabList(_ref2) {
|
|
118
134
|
let {
|
|
119
135
|
activation = 'automatic',
|
|
@@ -133,7 +149,8 @@ function TabList(_ref2) {
|
|
|
133
149
|
activeIndex,
|
|
134
150
|
selectedIndex,
|
|
135
151
|
setSelectedIndex,
|
|
136
|
-
setActiveIndex
|
|
152
|
+
setActiveIndex,
|
|
153
|
+
dismissable
|
|
137
154
|
} = React__default.useContext(TabsContext);
|
|
138
155
|
const prefix = usePrefix();
|
|
139
156
|
const ref = useRef(null);
|
|
@@ -141,25 +158,26 @@ function TabList(_ref2) {
|
|
|
141
158
|
const nextButton = useRef(null);
|
|
142
159
|
const [isScrollable, setIsScrollable] = useState(false);
|
|
143
160
|
const [scrollLeft, setScrollLeft] = useState(null);
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
[`${prefix}--tabs--contained`]: contained,
|
|
147
|
-
[`${prefix}--tabs--light`]: light,
|
|
148
|
-
[`${prefix}--tabs__icon--default`]: iconSize === 'default',
|
|
149
|
-
[`${prefix}--tabs__icon--lg`]: iconSize === 'lg',
|
|
150
|
-
[`${prefix}--tabs--tall`]: hasSecondaryLabelTabs
|
|
151
|
-
}); // Previous Button
|
|
161
|
+
|
|
162
|
+
// Previous Button
|
|
152
163
|
// VISIBLE IF:
|
|
153
164
|
// SCROLLABLE
|
|
154
165
|
// AND SCROLL_LEFT > 0
|
|
155
|
-
|
|
156
166
|
const buttonWidth = 44;
|
|
157
|
-
|
|
167
|
+
// Next Button
|
|
158
168
|
// VISIBLE IF:
|
|
159
169
|
// SCROLLABLE
|
|
160
170
|
// AND SCROLL_LEFT + CLIENT_WIDTH < SCROLL_WIDTH
|
|
161
|
-
|
|
162
|
-
const
|
|
171
|
+
const [isNextButtonVisible, setIsNextButtonVisible] = useState(ref.current ? scrollLeft + buttonWidth + ref.current.clientWidth < ref.current.scrollWidth : false);
|
|
172
|
+
const hasSecondaryLabelTabs = contained && !!React__default.Children.toArray(children).filter(child => child.props.secondaryLabel).length;
|
|
173
|
+
const className = cx(`${prefix}--tabs`, customClassName, {
|
|
174
|
+
[`${prefix}--tabs--contained`]: contained,
|
|
175
|
+
[`${prefix}--tabs--light`]: light,
|
|
176
|
+
[`${prefix}--tabs__icon--default`]: iconSize === 'default',
|
|
177
|
+
[`${prefix}--tabs__icon--lg`]: iconSize === 'lg',
|
|
178
|
+
[`${prefix}--tabs--tall`]: hasSecondaryLabelTabs
|
|
179
|
+
});
|
|
180
|
+
const isPreviousButtonVisible = ref.current ? isScrollable && scrollLeft > 0 : false;
|
|
163
181
|
const previousButtonClasses = cx(`${prefix}--tab--overflow-nav-button`, `${prefix}--tab--overflow-nav-button--previous`, {
|
|
164
182
|
[`${prefix}--tab--overflow-nav-button--hidden`]: !isPreviousButtonVisible
|
|
165
183
|
});
|
|
@@ -172,7 +190,6 @@ function TabList(_ref2) {
|
|
|
172
190
|
setScrollLeft(event.target.scrollLeft);
|
|
173
191
|
}, scrollDebounceWait);
|
|
174
192
|
}, [scrollDebounceWait]);
|
|
175
|
-
|
|
176
193
|
function onKeyDown(event) {
|
|
177
194
|
if (matches(event, [ArrowRight, ArrowLeft, Home, End])) {
|
|
178
195
|
event.preventDefault();
|
|
@@ -181,20 +198,16 @@ function TabList(_ref2) {
|
|
|
181
198
|
});
|
|
182
199
|
const currentIndex = activeTabs.indexOf(tabs.current[activation === 'automatic' ? selectedIndex : activeIndex]);
|
|
183
200
|
const nextIndex = tabs.current.indexOf(activeTabs[getNextIndex(event, activeTabs.length, currentIndex)]);
|
|
184
|
-
|
|
185
201
|
if (activation === 'automatic') {
|
|
186
202
|
setSelectedIndex(nextIndex);
|
|
187
203
|
} else if (activation === 'manual') {
|
|
188
204
|
setActiveIndex(nextIndex);
|
|
189
205
|
}
|
|
190
|
-
|
|
191
206
|
tabs.current[nextIndex].focus();
|
|
192
207
|
}
|
|
193
208
|
}
|
|
194
|
-
|
|
195
209
|
useEffectOnce(() => {
|
|
196
210
|
const tab = tabs.current[selectedIndex];
|
|
197
|
-
|
|
198
211
|
if (scrollIntoView && tab) {
|
|
199
212
|
tab.scrollIntoView({
|
|
200
213
|
block: 'nearest',
|
|
@@ -202,12 +215,19 @@ function TabList(_ref2) {
|
|
|
202
215
|
});
|
|
203
216
|
}
|
|
204
217
|
});
|
|
218
|
+
useEffect(() => {
|
|
219
|
+
setIsNextButtonVisible(ref.current ? scrollLeft + buttonWidth + ref.current.clientWidth < ref.current.scrollWidth : false);
|
|
220
|
+
if (dismissable) {
|
|
221
|
+
if (ref.current) {
|
|
222
|
+
setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}, [scrollLeft, children, dismissable]);
|
|
205
226
|
useEffectOnce(() => {
|
|
206
227
|
if (tabs.current[selectedIndex].disabled) {
|
|
207
228
|
const activeTabs = tabs.current.filter(tab => {
|
|
208
229
|
return !tab.disabled;
|
|
209
230
|
});
|
|
210
|
-
|
|
211
231
|
if (activeTabs.length > 0) {
|
|
212
232
|
const tab = activeTabs[0];
|
|
213
233
|
setSelectedIndex(tabs.current.indexOf(tab));
|
|
@@ -218,21 +238,20 @@ function TabList(_ref2) {
|
|
|
218
238
|
if (ref.current) {
|
|
219
239
|
setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth);
|
|
220
240
|
}
|
|
221
|
-
|
|
222
241
|
function handler() {
|
|
223
242
|
if (ref.current) {
|
|
224
243
|
setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth);
|
|
225
244
|
}
|
|
226
245
|
}
|
|
227
|
-
|
|
228
246
|
const debouncedHandler = debounce(handler, 200);
|
|
229
247
|
window.addEventListener('resize', debouncedHandler);
|
|
230
248
|
return () => {
|
|
231
249
|
debouncedHandler.cancel();
|
|
232
250
|
window.removeEventListener('resize', debouncedHandler);
|
|
233
251
|
};
|
|
234
|
-
}, []);
|
|
252
|
+
}, []);
|
|
235
253
|
|
|
254
|
+
// updates scroll location for all scroll behavior.
|
|
236
255
|
useIsomorphicEffect(() => {
|
|
237
256
|
if (scrollLeft !== null) {
|
|
238
257
|
ref.current.scrollLeft = scrollLeft;
|
|
@@ -242,67 +261,63 @@ function TabList(_ref2) {
|
|
|
242
261
|
if (!isScrollable) {
|
|
243
262
|
return;
|
|
244
263
|
}
|
|
245
|
-
|
|
246
264
|
const tab = activation === 'manual' ? tabs.current[activeIndex] : tabs.current[selectedIndex];
|
|
247
|
-
|
|
248
265
|
if (tab) {
|
|
249
266
|
// The width of the "scroll buttons"
|
|
267
|
+
|
|
250
268
|
// The start and end position of the selected tab
|
|
251
269
|
const {
|
|
252
270
|
width: tabWidth
|
|
253
271
|
} = tab.getBoundingClientRect();
|
|
254
272
|
const start = tab.offsetLeft;
|
|
255
|
-
const end = tab.offsetLeft + tabWidth;
|
|
273
|
+
const end = tab.offsetLeft + tabWidth;
|
|
256
274
|
|
|
275
|
+
// The start and end of the visible area for the tabs
|
|
257
276
|
const visibleStart = ref.current.scrollLeft + buttonWidth;
|
|
258
|
-
const visibleEnd = ref.current.scrollLeft + ref.current.clientWidth - buttonWidth;
|
|
277
|
+
const visibleEnd = ref.current.scrollLeft + ref.current.clientWidth - buttonWidth;
|
|
259
278
|
|
|
279
|
+
// The beginning of the tab is clipped and not visible
|
|
260
280
|
if (start < visibleStart) {
|
|
261
281
|
setScrollLeft(start - buttonWidth);
|
|
262
|
-
}
|
|
263
|
-
|
|
282
|
+
}
|
|
264
283
|
|
|
284
|
+
// The end of the tab is clipped and not visible
|
|
265
285
|
if (end > visibleEnd) {
|
|
266
286
|
setScrollLeft(end + buttonWidth - ref.current.clientWidth);
|
|
267
287
|
}
|
|
268
288
|
}
|
|
269
|
-
}, [activation, activeIndex, selectedIndex, isScrollable]);
|
|
289
|
+
}, [activation, activeIndex, selectedIndex, isScrollable, children]);
|
|
270
290
|
usePressable(previousButton, {
|
|
271
291
|
onPress(_ref3) {
|
|
272
292
|
let {
|
|
273
293
|
longPress
|
|
274
294
|
} = _ref3;
|
|
275
|
-
|
|
276
295
|
if (!longPress) {
|
|
277
296
|
setScrollLeft(Math.max(scrollLeft - ref.current.scrollWidth / tabs.current.length * 1.5, 0));
|
|
278
297
|
}
|
|
279
298
|
},
|
|
280
|
-
|
|
281
299
|
onLongPress() {
|
|
282
300
|
return createLongPressBehavior(ref, 'backward', setScrollLeft);
|
|
283
301
|
}
|
|
284
|
-
|
|
285
302
|
});
|
|
286
303
|
usePressable(nextButton, {
|
|
287
304
|
onPress(_ref4) {
|
|
288
305
|
let {
|
|
289
306
|
longPress
|
|
290
307
|
} = _ref4;
|
|
291
|
-
|
|
292
308
|
if (!longPress) {
|
|
293
309
|
setScrollLeft(Math.min(scrollLeft + ref.current.scrollWidth / tabs.current.length * 1.5, ref.current.scrollWidth - ref.current.clientWidth));
|
|
294
310
|
}
|
|
295
311
|
},
|
|
296
|
-
|
|
297
312
|
onLongPress() {
|
|
298
313
|
return createLongPressBehavior(ref, 'forward', setScrollLeft);
|
|
299
314
|
}
|
|
300
|
-
|
|
301
315
|
});
|
|
302
316
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
303
317
|
className: className
|
|
304
318
|
}, /*#__PURE__*/React__default.createElement("button", _extends({
|
|
305
319
|
"aria-hidden": "true",
|
|
320
|
+
tabIndex: "-1",
|
|
306
321
|
"aria-label": "Scroll left",
|
|
307
322
|
ref: previousButton,
|
|
308
323
|
className: previousButtonClasses,
|
|
@@ -318,7 +333,8 @@ function TabList(_ref2) {
|
|
|
318
333
|
return /*#__PURE__*/React__default.createElement(TabContext.Provider, {
|
|
319
334
|
value: {
|
|
320
335
|
index,
|
|
321
|
-
hasSecondaryLabel: hasSecondaryLabelTabs
|
|
336
|
+
hasSecondaryLabel: hasSecondaryLabelTabs,
|
|
337
|
+
contained
|
|
322
338
|
}
|
|
323
339
|
}, /*#__PURE__*/React__default.cloneElement(child, {
|
|
324
340
|
ref: node => {
|
|
@@ -327,75 +343,66 @@ function TabList(_ref2) {
|
|
|
327
343
|
}));
|
|
328
344
|
})), /*#__PURE__*/React__default.createElement("button", _extends({
|
|
329
345
|
"aria-hidden": "true",
|
|
346
|
+
tabIndex: "-1",
|
|
330
347
|
"aria-label": "Scroll right",
|
|
331
348
|
ref: nextButton,
|
|
332
349
|
className: nextButtonClasses,
|
|
333
350
|
type: "button"
|
|
334
351
|
}, rightOverflowButtonProps), _ChevronRight || (_ChevronRight = /*#__PURE__*/React__default.createElement(ChevronRight, null))));
|
|
335
352
|
}
|
|
336
|
-
|
|
337
353
|
TabList.propTypes = {
|
|
338
354
|
/**
|
|
339
355
|
* Specify whether the content tab should be activated automatically or
|
|
340
356
|
* manually
|
|
341
357
|
*/
|
|
342
358
|
activation: PropTypes.oneOf(['automatic', 'manual']),
|
|
343
|
-
|
|
344
359
|
/**
|
|
345
360
|
* Provide an accessible label to be read when a user interacts with this
|
|
346
361
|
* component
|
|
347
362
|
*/
|
|
348
363
|
'aria-label': PropTypes.string.isRequired,
|
|
349
|
-
|
|
350
364
|
/**
|
|
351
365
|
* Provide child elements to be rendered inside of `ContentTabs`.
|
|
352
366
|
* These elements should render a `ContentTab`
|
|
353
367
|
*/
|
|
354
368
|
children: PropTypes.node,
|
|
355
|
-
|
|
356
369
|
/**
|
|
357
370
|
* Specify an optional className to be added to the container node
|
|
358
371
|
*/
|
|
359
372
|
className: PropTypes.string,
|
|
360
|
-
|
|
361
373
|
/**
|
|
362
374
|
* Specify whether component is contained type
|
|
363
375
|
*/
|
|
364
376
|
contained: PropTypes.bool,
|
|
365
|
-
|
|
366
377
|
/**
|
|
367
378
|
* If using `IconTab`, specify the size of the icon being used.
|
|
368
379
|
*/
|
|
369
380
|
iconSize: PropTypes.oneOf(['default', 'lg']),
|
|
370
|
-
|
|
371
381
|
/**
|
|
372
382
|
* Provide the props that describe the left overflow button
|
|
373
383
|
*/
|
|
374
384
|
leftOverflowButtonProps: PropTypes.object,
|
|
375
|
-
|
|
376
385
|
/**
|
|
377
386
|
* Specify whether or not to use the light component variant
|
|
378
387
|
*/
|
|
379
388
|
light: deprecate(PropTypes.bool, 'The `light` prop for `TabList` has ' + 'been deprecated in favor of the new `Layer` component. It will be removed in the next major release.'),
|
|
380
|
-
|
|
381
389
|
/**
|
|
382
390
|
* Provide the props that describe the right overflow button
|
|
383
391
|
*/
|
|
384
392
|
rightOverflowButtonProps: PropTypes.object,
|
|
385
|
-
|
|
386
393
|
/**
|
|
387
394
|
* Optionally provide a delay (in milliseconds) passed to the lodash
|
|
388
395
|
* debounce of the onScroll handler. This will impact the responsiveness
|
|
389
396
|
* of scroll arrow buttons rendering when scrolling to the first or last tab.
|
|
390
397
|
*/
|
|
391
398
|
scrollDebounceWait: PropTypes.number,
|
|
392
|
-
|
|
393
399
|
/**
|
|
394
400
|
* Choose whether or not to automatically scroll to newly selected tabs
|
|
395
401
|
* on component rerender
|
|
396
402
|
*/
|
|
397
403
|
scrollIntoView: PropTypes.bool
|
|
398
404
|
};
|
|
405
|
+
|
|
399
406
|
/**
|
|
400
407
|
* Helper function to setup the behavior when a button is "long pressed". This
|
|
401
408
|
* function will take a ref to the tablist, a direction, and a setter for
|
|
@@ -410,7 +417,6 @@ TabList.propTypes = {
|
|
|
410
417
|
* @param {Function} setScrollLeft
|
|
411
418
|
* @returns {Function}
|
|
412
419
|
*/
|
|
413
|
-
|
|
414
420
|
function createLongPressBehavior(ref, direction, setScrollLeft) {
|
|
415
421
|
// We manually override the scroll behavior to be "auto". If it is set as
|
|
416
422
|
// smooth, this animation does not update correctly
|
|
@@ -418,27 +424,24 @@ function createLongPressBehavior(ref, direction, setScrollLeft) {
|
|
|
418
424
|
ref.current.style['scroll-behavior'] = 'auto';
|
|
419
425
|
const scrollDelta = direction === 'forward' ? 5 : -5;
|
|
420
426
|
let frameId = null;
|
|
421
|
-
|
|
422
427
|
function tick() {
|
|
423
428
|
ref.current.scrollLeft = ref.current.scrollLeft + scrollDelta;
|
|
424
429
|
frameId = requestAnimationFrame(tick);
|
|
425
430
|
}
|
|
426
|
-
|
|
427
431
|
frameId = requestAnimationFrame(tick);
|
|
428
432
|
return () => {
|
|
429
433
|
// Restore the previous scroll behavior
|
|
430
|
-
ref.current.style['scroll-behavior'] = defaultScrollBehavior;
|
|
431
|
-
// `ref` after our requestAnimationFrame loop above
|
|
434
|
+
ref.current.style['scroll-behavior'] = defaultScrollBehavior;
|
|
432
435
|
|
|
436
|
+
// Make sure that our `scrollLeft` value is in sync with the existing
|
|
437
|
+
// `ref` after our requestAnimationFrame loop above
|
|
433
438
|
setScrollLeft(ref.current.scrollLeft);
|
|
434
|
-
|
|
435
439
|
if (frameId) {
|
|
436
440
|
cancelAnimationFrame(frameId);
|
|
437
441
|
}
|
|
438
442
|
};
|
|
439
443
|
}
|
|
440
|
-
|
|
441
|
-
const Tab = /*#__PURE__*/React__default.forwardRef(function Tab(_ref5, ref) {
|
|
444
|
+
const Tab = /*#__PURE__*/React__default.forwardRef(function Tab(_ref5, forwardRef) {
|
|
442
445
|
let {
|
|
443
446
|
as: BaseComponent = 'button',
|
|
444
447
|
children,
|
|
@@ -454,18 +457,67 @@ const Tab = /*#__PURE__*/React__default.forwardRef(function Tab(_ref5, ref) {
|
|
|
454
457
|
const {
|
|
455
458
|
selectedIndex,
|
|
456
459
|
setSelectedIndex,
|
|
457
|
-
baseId
|
|
460
|
+
baseId,
|
|
461
|
+
dismissable,
|
|
462
|
+
onTabCloseRequest
|
|
458
463
|
} = React__default.useContext(TabsContext);
|
|
459
464
|
const {
|
|
460
465
|
index,
|
|
461
|
-
hasSecondaryLabel
|
|
466
|
+
hasSecondaryLabel,
|
|
467
|
+
contained
|
|
462
468
|
} = React__default.useContext(TabContext);
|
|
469
|
+
const dismissIconRef = useRef(null);
|
|
470
|
+
const tabRef = useRef(null);
|
|
471
|
+
const ref = useMergedRefs([forwardRef, tabRef]);
|
|
472
|
+
const [ignoreHover, setIgnoreHover] = useState(false);
|
|
463
473
|
const id = `${baseId}-tab-${index}`;
|
|
464
474
|
const panelId = `${baseId}-tabpanel-${index}`;
|
|
465
475
|
const className = cx(`${prefix}--tabs__nav-item`, `${prefix}--tabs__nav-link`, customClassName, {
|
|
466
476
|
[`${prefix}--tabs__nav-item--selected`]: selectedIndex === index,
|
|
467
|
-
[`${prefix}--tabs__nav-item--disabled`]: disabled
|
|
477
|
+
[`${prefix}--tabs__nav-item--disabled`]: disabled,
|
|
478
|
+
[`${prefix}--tabs__nav-item--hover-off`]: ignoreHover
|
|
468
479
|
});
|
|
480
|
+
const onDismissIconMouseEnter = evt => {
|
|
481
|
+
if (contained) {
|
|
482
|
+
evt.stopPropagation();
|
|
483
|
+
setIgnoreHover(true);
|
|
484
|
+
tabRef.current.classList.add(`${prefix}--tabs__nav-item--hover-off`);
|
|
485
|
+
}
|
|
486
|
+
};
|
|
487
|
+
const onDismissIconMouseLeave = () => {
|
|
488
|
+
if (contained) {
|
|
489
|
+
tabRef.current.classList.remove(`${prefix}--tabs__nav-item--hover-off`);
|
|
490
|
+
setIgnoreHover(false);
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
useEvent(dismissIconRef, 'mouseover', onDismissIconMouseEnter);
|
|
494
|
+
useEvent(dismissIconRef, 'mouseleave', onDismissIconMouseLeave);
|
|
495
|
+
const handleClose = evt => {
|
|
496
|
+
evt.stopPropagation();
|
|
497
|
+
onTabCloseRequest?.(index);
|
|
498
|
+
};
|
|
499
|
+
const handleKeyDown = event => {
|
|
500
|
+
if (dismissable && match(event, Delete)) {
|
|
501
|
+
handleClose(event);
|
|
502
|
+
}
|
|
503
|
+
onKeyDown?.(event);
|
|
504
|
+
};
|
|
505
|
+
const DismissIcon =
|
|
506
|
+
/*#__PURE__*/
|
|
507
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events
|
|
508
|
+
React__default.createElement("div", {
|
|
509
|
+
role: "button",
|
|
510
|
+
tabIndex: -1,
|
|
511
|
+
"aria-hidden": true,
|
|
512
|
+
className: cx(`${prefix}--tabs__nav-item--close-icon`, {
|
|
513
|
+
[`${prefix}--visually-hidden`]: !dismissable
|
|
514
|
+
}),
|
|
515
|
+
onClick: handleClose,
|
|
516
|
+
"aria-label": "Close tab",
|
|
517
|
+
title: "Close tab",
|
|
518
|
+
ref: dismissIconRef
|
|
519
|
+
}, _Close || (_Close = /*#__PURE__*/React__default.createElement(Close, null)));
|
|
520
|
+
const hasIcon = Icon || dismissable;
|
|
469
521
|
return /*#__PURE__*/React__default.createElement(BaseComponent, _extends({}, rest, {
|
|
470
522
|
"aria-controls": panelId,
|
|
471
523
|
"aria-disabled": disabled,
|
|
@@ -479,23 +531,23 @@ const Tab = /*#__PURE__*/React__default.forwardRef(function Tab(_ref5, ref) {
|
|
|
479
531
|
if (disabled) {
|
|
480
532
|
return;
|
|
481
533
|
}
|
|
482
|
-
|
|
483
534
|
setSelectedIndex(index);
|
|
484
|
-
|
|
485
535
|
if (onClick) {
|
|
486
536
|
onClick(evt);
|
|
487
537
|
}
|
|
488
538
|
},
|
|
489
|
-
onKeyDown:
|
|
539
|
+
onKeyDown: handleKeyDown,
|
|
490
540
|
tabIndex: selectedIndex === index ? '0' : '-1',
|
|
491
541
|
type: "button"
|
|
492
542
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
493
543
|
className: `${prefix}--tabs__nav-item-label-wrapper`
|
|
494
544
|
}, /*#__PURE__*/React__default.createElement("span", {
|
|
495
545
|
className: `${prefix}--tabs__nav-item-label`
|
|
496
|
-
}, children),
|
|
497
|
-
className: `${prefix}--tabs__nav-item--icon
|
|
498
|
-
|
|
546
|
+
}, children), /*#__PURE__*/React__default.createElement("div", {
|
|
547
|
+
className: cx(`${prefix}--tabs__nav-item--icon`, {
|
|
548
|
+
[`${prefix}--visually-hidden`]: !hasIcon
|
|
549
|
+
})
|
|
550
|
+
}, DismissIcon, !dismissable && hasIcon && /*#__PURE__*/React__default.createElement(Icon, {
|
|
499
551
|
size: 16
|
|
500
552
|
}))), hasSecondaryLabel && /*#__PURE__*/React__default.createElement("div", {
|
|
501
553
|
className: `${prefix}--tabs__nav-item-secondary-label`
|
|
@@ -506,45 +558,37 @@ Tab.propTypes = {
|
|
|
506
558
|
* Provide a custom element to render instead of the default button
|
|
507
559
|
*/
|
|
508
560
|
as: PropTypes.oneOfType([PropTypes.string, PropTypes.elementType]),
|
|
509
|
-
|
|
510
561
|
/**
|
|
511
562
|
* Provide child elements to be rendered inside of `Tab`.
|
|
512
563
|
*/
|
|
513
564
|
children: PropTypes.node,
|
|
514
|
-
|
|
515
565
|
/**
|
|
516
566
|
* Specify an optional className to be added to your Tab
|
|
517
567
|
*/
|
|
518
568
|
className: PropTypes.string,
|
|
519
|
-
|
|
520
569
|
/**
|
|
521
570
|
* Whether your Tab is disabled.
|
|
522
571
|
*/
|
|
523
572
|
disabled: PropTypes.bool,
|
|
524
|
-
|
|
525
573
|
/**
|
|
526
574
|
* Provide a handler that is invoked when a user clicks on the control
|
|
527
575
|
*/
|
|
528
576
|
onClick: PropTypes.func,
|
|
529
|
-
|
|
530
577
|
/**
|
|
531
578
|
* Provide a handler that is invoked on the key down event for the control
|
|
532
579
|
*/
|
|
533
580
|
onKeyDown: PropTypes.func,
|
|
534
|
-
|
|
535
581
|
/*
|
|
536
582
|
* An optional parameter to allow overriding the anchor rendering.
|
|
537
583
|
* Useful for using Tab along with react-router or other client
|
|
538
584
|
* side router libraries.
|
|
539
585
|
**/
|
|
540
586
|
renderButton: PropTypes.func,
|
|
541
|
-
|
|
542
587
|
/**
|
|
543
588
|
* Optional prop to render an icon next to the label.
|
|
544
589
|
* Can be a React component class
|
|
545
590
|
*/
|
|
546
591
|
renderIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
|
|
547
|
-
|
|
548
592
|
/*
|
|
549
593
|
* An optional label to render under the primary tab label.
|
|
550
594
|
/* This prop is only useful for conained tabs
|
|
@@ -580,22 +624,18 @@ IconTab.propTypes = {
|
|
|
580
624
|
* Provide an icon to be rendered inside of `IconTab` as the visual label for Tab.
|
|
581
625
|
*/
|
|
582
626
|
children: PropTypes.node,
|
|
583
|
-
|
|
584
627
|
/**
|
|
585
628
|
* Specify an optional className to be added to your Tab
|
|
586
629
|
*/
|
|
587
630
|
className: PropTypes.string,
|
|
588
|
-
|
|
589
631
|
/**
|
|
590
632
|
* Specify whether the tooltip for the icon should be open when it first renders
|
|
591
633
|
*/
|
|
592
634
|
defaultOpen: PropTypes.bool,
|
|
593
|
-
|
|
594
635
|
/**
|
|
595
636
|
* Specify the duration in milliseconds to delay before displaying the tooltip for the icon.
|
|
596
637
|
*/
|
|
597
638
|
enterDelayMs: PropTypes.number,
|
|
598
|
-
|
|
599
639
|
/**
|
|
600
640
|
* Provide the label to be rendered inside of the Tooltip. The label will use
|
|
601
641
|
* `aria-labelledby` and will fully describe the child node that is provided.
|
|
@@ -603,7 +643,6 @@ IconTab.propTypes = {
|
|
|
603
643
|
* announced to the screen reader.
|
|
604
644
|
*/
|
|
605
645
|
label: PropTypes.node.isRequired,
|
|
606
|
-
|
|
607
646
|
/**
|
|
608
647
|
* Specify the duration in milliseconds to delay before hiding the tooltip
|
|
609
648
|
*/
|
|
@@ -634,27 +673,23 @@ const TabPanel = /*#__PURE__*/React__default.forwardRef(function TabPanel(_ref7,
|
|
|
634
673
|
if (!panel.current) {
|
|
635
674
|
return;
|
|
636
675
|
}
|
|
637
|
-
|
|
638
676
|
const content = getInteractiveContent(panel.current);
|
|
639
|
-
|
|
640
677
|
if (content) {
|
|
641
678
|
setInteractiveContent(true);
|
|
642
679
|
setTabIndex('-1');
|
|
643
680
|
}
|
|
644
|
-
});
|
|
681
|
+
});
|
|
645
682
|
|
|
683
|
+
// tabindex should only be 0 if no interactive content in children
|
|
646
684
|
useEffect(() => {
|
|
647
685
|
if (!panel.current) {
|
|
648
686
|
return;
|
|
649
687
|
}
|
|
650
|
-
|
|
651
688
|
const {
|
|
652
689
|
current: node
|
|
653
690
|
} = panel;
|
|
654
|
-
|
|
655
691
|
function callback() {
|
|
656
692
|
const content = getInteractiveContent(node);
|
|
657
|
-
|
|
658
693
|
if (content) {
|
|
659
694
|
setInteractiveContent(true);
|
|
660
695
|
setTabIndex('-1');
|
|
@@ -663,7 +698,6 @@ const TabPanel = /*#__PURE__*/React__default.forwardRef(function TabPanel(_ref7,
|
|
|
663
698
|
setTabIndex('0');
|
|
664
699
|
}
|
|
665
700
|
}
|
|
666
|
-
|
|
667
701
|
const observer = new MutationObserver(callback);
|
|
668
702
|
observer.observe(node, {
|
|
669
703
|
childList: true,
|
|
@@ -688,13 +722,11 @@ TabPanel.propTypes = {
|
|
|
688
722
|
* Provide child elements to be rendered inside of `TabPanel`.
|
|
689
723
|
*/
|
|
690
724
|
children: PropTypes.node,
|
|
691
|
-
|
|
692
725
|
/**
|
|
693
726
|
* Specify an optional className to be added to TabPanel.
|
|
694
727
|
*/
|
|
695
728
|
className: PropTypes.string
|
|
696
729
|
};
|
|
697
|
-
|
|
698
730
|
function TabPanels(_ref8) {
|
|
699
731
|
let {
|
|
700
732
|
children
|
|
@@ -705,7 +737,6 @@ function TabPanels(_ref8) {
|
|
|
705
737
|
}, child);
|
|
706
738
|
});
|
|
707
739
|
}
|
|
708
|
-
|
|
709
740
|
TabPanels.propTypes = {
|
|
710
741
|
/**
|
|
711
742
|
* Provide child elements to be rendered inside of `TabPanels`.
|