@carbon/react 0.17.0 → 1.0.0-rc.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/README.md +1 -1
- package/es/_virtual/ResizeObserver.es.js +13 -0
- package/es/_virtual/_commonjsHelpers.js +29 -0
- package/es/_virtual/_rollupPluginBabelHelpers.js +354 -0
- package/es/{prefix.js → _virtual/index.js} +2 -2
- package/es/_virtual/rangePlugin.js +10 -0
- package/es/components/Accordion/Accordion.Skeleton.js +103 -0
- package/es/components/Accordion/Accordion.js +68 -0
- package/es/components/Accordion/AccordionItem.js +181 -0
- package/es/components/Accordion/index.js +9 -0
- package/es/components/AccordionItem/index.js +11 -0
- package/es/components/AspectRatio/AspectRatio.js +67 -0
- package/es/components/Breadcrumb/Breadcrumb.Skeleton.js +45 -0
- package/es/components/Breadcrumb/Breadcrumb.js +58 -0
- package/es/components/Breadcrumb/BreadcrumbItem.js +94 -0
- package/es/components/Button/Button.Skeleton.js +71 -0
- package/es/components/Button/Button.js +351 -0
- package/es/components/ButtonSet/ButtonSet.js +48 -0
- package/es/components/Checkbox/Checkbox.Skeleton.js +36 -0
- package/es/components/Checkbox/Checkbox.js +136 -0
- package/es/components/CodeSnippet/CodeSnippet.Skeleton.js +58 -0
- package/es/components/CodeSnippet/CodeSnippet.js +372 -0
- package/es/components/ComboBox/ComboBox.js +532 -0
- package/es/components/ComboBox/tools/filter.js +20 -0
- package/es/components/ComposedModal/ComposedModal.js +630 -0
- package/es/components/ComposedModal/index.js +19 -0
- package/es/components/ComposedModal/next/ComposedModal.js +223 -0
- package/es/components/ComposedModal/next/ModalFooter.js +213 -0
- package/es/components/ComposedModal/next/ModalHeader.js +127 -0
- package/es/components/ContentSwitcher/ContentSwitcher.js +185 -0
- package/es/components/ContextMenu/useContextMenu.js +57 -0
- package/es/components/Copy/Copy.js +124 -0
- package/es/components/CopyButton/CopyButton.js +67 -0
- package/es/components/DangerButton/DangerButton.js +20 -0
- package/es/components/DataTable/DataTable.js +638 -0
- package/es/components/DataTable/Table.js +90 -0
- package/es/components/DataTable/TableActionList.js +17 -0
- package/es/components/DataTable/TableBatchAction.js +45 -0
- package/es/components/DataTable/TableBatchActions.js +110 -0
- package/es/components/DataTable/TableBody.js +37 -0
- package/es/components/DataTable/TableCell.js +16 -0
- package/es/components/DataTable/TableContainer.js +66 -0
- package/es/components/DataTable/TableExpandHeader.js +86 -0
- package/es/components/DataTable/TableExpandRow.js +93 -0
- package/es/components/DataTable/TableExpandedRow.js +75 -0
- package/es/components/DataTable/TableHead.js +16 -0
- package/es/components/DataTable/TableHeader.js +187 -0
- package/es/components/DataTable/TableRow.js +41 -0
- package/es/components/DataTable/TableSelectAll.js +84 -0
- package/es/components/DataTable/TableSelectRow.js +97 -0
- package/es/components/DataTable/TableToolbar.js +48 -0
- package/es/components/DataTable/TableToolbarAction.js +31 -0
- package/es/components/DataTable/TableToolbarContent.js +17 -0
- package/es/components/DataTable/TableToolbarMenu.js +61 -0
- package/es/components/DataTable/TableToolbarSearch.js +242 -0
- package/es/components/DataTable/index.js +72 -0
- package/es/components/DataTable/state/getDerivedStateFromProps.js +52 -0
- package/es/components/DataTable/state/sortStates.js +19 -0
- package/es/components/DataTable/state/sorting.js +93 -0
- package/es/components/DataTable/tools/cells.js +21 -0
- package/es/components/DataTable/tools/denormalize.js +43 -0
- package/es/components/DataTable/tools/filter.js +42 -0
- package/es/components/DataTable/tools/instanceId.js +21 -0
- package/es/components/DataTable/tools/normalize.js +78 -0
- package/es/components/DataTable/tools/sorting.js +110 -0
- package/es/components/DataTableSkeleton/DataTableSkeleton.js +133 -0
- package/es/components/DatePicker/DatePicker.Skeleton.js +69 -0
- package/es/components/DatePicker/DatePicker.js +622 -0
- package/es/components/DatePicker/index.js +15 -0
- package/es/components/DatePicker/next/DatePicker.js +558 -0
- package/es/components/DatePicker/plugins/appendToPlugin.js +58 -0
- package/es/components/DatePicker/plugins/fixEventsPlugin.js +89 -0
- package/es/components/DatePicker/plugins/rangePlugin.js +51 -0
- package/es/components/DatePickerInput/DatePickerInput.js +271 -0
- package/es/components/DatePickerInput/index.js +15 -0
- package/es/components/DatePickerInput/next/DatePickerInput.js +269 -0
- package/es/components/Dropdown/Dropdown.Skeleton.js +55 -0
- package/es/components/Dropdown/Dropdown.js +327 -0
- package/es/components/ErrorBoundary/ErrorBoundary.js +96 -0
- package/es/components/ErrorBoundary/ErrorBoundaryContext.js +16 -0
- package/es/components/ExpandableSearch/ExpandableSearch.js +67 -0
- package/es/components/ExpandableSearch/index.js +9 -0
- package/es/components/FeatureFlags/index.js +169 -0
- package/es/components/FileUploader/FileUploader.Skeleton.js +43 -0
- package/es/components/FileUploader/FileUploader.js +284 -0
- package/es/components/FileUploader/FileUploaderButton.js +198 -0
- package/es/components/FileUploader/FileUploaderDropContainer.js +223 -0
- package/es/components/FileUploader/FileUploaderItem.js +130 -0
- package/es/components/FileUploader/Filename.js +82 -0
- package/es/components/FileUploader/index.js +14 -0
- package/es/components/FluidForm/FluidForm.js +46 -0
- package/es/components/FluidForm/FormContext.js +14 -0
- package/es/components/Form/Form.js +41 -0
- package/es/components/FormGroup/FormGroup.js +97 -0
- package/es/components/FormItem/FormItem.js +41 -0
- package/es/components/FormLabel/FormLabel.js +48 -0
- package/es/components/Grid/CSSGrid.js +139 -0
- package/es/components/Grid/Column.js +363 -0
- package/es/components/Grid/ColumnHang.js +51 -0
- package/es/components/Grid/FlexGrid.js +76 -0
- package/es/components/Grid/Grid.js +63 -0
- package/es/components/Grid/GridContext.js +60 -0
- package/es/components/Grid/Row.js +65 -0
- package/es/components/Heading/index.js +62 -0
- package/es/components/Icon/Icon.Skeleton.js +45 -0
- package/es/components/IconButton/index.js +89 -0
- package/es/components/InlineCheckbox/InlineCheckbox.js +122 -0
- package/es/components/InlineLoading/InlineLoading.js +118 -0
- package/es/components/Layer/LayerContext.js +12 -0
- package/es/components/Layer/index.js +62 -0
- package/es/components/Link/Link.js +95 -0
- package/es/components/ListBox/ListBox.js +129 -0
- package/es/components/ListBox/ListBoxField.js +62 -0
- package/es/components/ListBox/ListBoxMenu.js +56 -0
- package/es/components/ListBox/ListBoxMenuIcon.js +61 -0
- package/es/components/ListBox/ListBoxMenuItem.js +87 -0
- package/es/components/ListBox/ListBoxPropTypes.js +14 -0
- package/es/components/ListBox/ListBoxSelection.js +148 -0
- package/es/components/ListBox/index.js +20 -0
- package/es/components/ListBox/next/ListBoxSelection.js +155 -0
- package/es/components/ListBox/next/ListBoxTrigger.js +68 -0
- package/es/components/ListItem/ListItem.js +41 -0
- package/es/components/Loading/Loading.js +102 -0
- package/es/components/Menu/Menu.js +328 -0
- package/es/components/Menu/MenuDivider.js +19 -0
- package/es/components/Menu/MenuGroup.js +34 -0
- package/es/components/Menu/MenuItem.js +58 -0
- package/es/components/Menu/MenuOption.js +250 -0
- package/es/components/Menu/MenuRadioGroup.js +50 -0
- package/es/components/Menu/MenuRadioGroupOptions.js +64 -0
- package/es/components/Menu/MenuSelectableItem.js +57 -0
- package/es/components/Menu/_utils.js +177 -0
- package/es/components/Menu/index.js +25 -0
- package/es/components/Modal/Modal.js +343 -0
- package/es/components/Modal/index.js +15 -0
- package/es/components/Modal/next/Modal.js +277 -0
- package/es/components/ModalWrapper/ModalWrapper.js +164 -0
- package/es/components/MultiSelect/FilterableMultiSelect.js +576 -0
- package/es/components/MultiSelect/MultiSelect.js +468 -0
- package/es/components/MultiSelect/MultiSelectPropTypes.js +41 -0
- package/es/components/MultiSelect/index.js +23 -0
- package/es/components/MultiSelect/next/FilterableMultiSelect.js +532 -0
- package/es/components/MultiSelect/tools/itemToString.js +24 -0
- package/es/components/MultiSelect/tools/sorting.js +53 -0
- package/es/components/Notification/Notification.js +530 -0
- package/es/components/Notification/index.js +42 -0
- package/es/components/Notification/next/Notification.js +684 -0
- package/es/components/NumberInput/NumberInput.Skeleton.js +44 -0
- package/es/components/NumberInput/NumberInput.js +515 -0
- package/es/components/OrderedList/OrderedList.js +66 -0
- package/es/components/OverflowMenu/OverflowMenu.js +516 -0
- package/es/components/OverflowMenu/index.js +14 -0
- package/es/components/OverflowMenuItem/OverflowMenuItem.js +221 -0
- package/es/components/OverflowMenuItem/index.js +12 -0
- package/es/components/OverflowMenuV2/index.js +137 -0
- package/es/components/Pagination/Pagination.Skeleton.js +48 -0
- package/es/components/Pagination/Pagination.js +420 -0
- package/es/components/Pagination/experimental/PageSelector.js +81 -0
- package/es/components/Pagination/experimental/Pagination.js +281 -0
- package/es/components/Pagination/index.js +14 -0
- package/es/components/Pagination/next/Pagination.js +401 -0
- package/es/components/PaginationNav/PaginationNav.js +436 -0
- package/es/components/Popover/index.js +118 -0
- package/es/components/PrimaryButton/PrimaryButton.js +20 -0
- package/es/components/ProgressBar/ProgressBar.js +110 -0
- package/es/components/ProgressIndicator/ProgressIndicator.Skeleton.js +50 -0
- package/es/components/ProgressIndicator/ProgressIndicator.js +323 -0
- package/es/components/ProgressIndicator/index.js +15 -0
- package/es/components/ProgressIndicator/next/ProgressIndicator.js +117 -0
- package/es/components/RadioButton/RadioButton.Skeleton.js +37 -0
- package/es/components/RadioButton/RadioButton.js +172 -0
- package/es/components/RadioButton/index.js +15 -0
- package/es/components/RadioButton/next/RadioButton.js +128 -0
- package/es/components/RadioButtonGroup/RadioButtonGroup.js +190 -0
- package/es/components/RadioButtonGroup/index.js +15 -0
- package/es/components/RadioButtonGroup/next/RadioButtonGroup.js +141 -0
- package/es/components/RadioTile/RadioTile.js +147 -0
- package/es/components/Search/Search.Skeleton.js +50 -0
- package/es/components/Search/Search.js +289 -0
- package/es/components/Search/index.js +15 -0
- package/es/components/Search/next/Search.js +263 -0
- package/es/components/SearchFilterButton/SearchFilterButton.js +61 -0
- package/es/components/SearchLayoutButton/SearchLayoutButton.js +151 -0
- package/es/components/SecondaryButton/SecondaryButton.js +20 -0
- package/es/components/Select/Select.Skeleton.js +46 -0
- package/es/components/Select/Select.js +211 -0
- package/es/components/SelectItem/SelectItem.js +70 -0
- package/es/components/SelectItemGroup/SelectItemGroup.js +60 -0
- package/es/components/SkeletonIcon/SkeletonIcon.js +42 -0
- package/es/components/SkeletonPlaceholder/SkeletonPlaceholder.js +37 -0
- package/es/components/SkeletonText/SkeletonText.js +114 -0
- package/es/components/Slider/Slider.Skeleton.js +56 -0
- package/es/components/Slider/Slider.js +649 -0
- package/es/components/Slider/index.js +14 -0
- package/es/components/Stack/Stack.js +102 -0
- package/es/components/Stack/index.js +26 -0
- package/es/components/StructuredList/StructuredList.Skeleton.js +82 -0
- package/es/components/StructuredList/StructuredList.js +307 -0
- package/es/components/StructuredList/index.js +43 -0
- package/es/components/StructuredList/next/StructuredList.js +330 -0
- package/es/components/Switch/Switch.js +124 -0
- package/es/components/Tab/Tab.js +191 -0
- package/es/components/Tab/index.js +15 -0
- package/es/components/TabContent/TabContent.js +77 -0
- package/es/components/Tabs/Tabs.Skeleton.js +53 -0
- package/es/components/Tabs/Tabs.js +618 -0
- package/es/components/Tabs/index.js +19 -0
- package/es/components/Tabs/next/Tabs.Skeleton.js +53 -0
- package/es/components/Tabs/next/Tabs.js +648 -0
- package/es/components/Tabs/next/usePressable.js +145 -0
- package/es/components/Tag/Tag.Skeleton.js +40 -0
- package/es/components/Tag/Tag.js +146 -0
- package/es/components/Text/Text.js +98 -0
- package/es/components/Text/TextDirectionContext.js +12 -0
- package/es/components/Text/createTextComponent.js +33 -0
- package/es/components/Text/index.js +13 -0
- package/es/components/TextArea/TextArea.Skeleton.js +44 -0
- package/es/components/TextArea/TextArea.js +220 -0
- package/es/components/TextInput/ControlledPasswordInput.js +234 -0
- package/es/components/TextInput/PasswordInput.js +286 -0
- package/es/components/TextInput/TextInput.Skeleton.js +44 -0
- package/es/components/TextInput/TextInput.js +239 -0
- package/es/components/TextInput/index.js +20 -0
- package/es/components/TextInput/util.js +33 -0
- package/es/components/Theme/index.js +103 -0
- package/es/components/Tile/Tile.js +767 -0
- package/es/components/Tile/index.js +19 -0
- package/es/components/Tile/next/Tile.js +647 -0
- package/es/components/TileGroup/TileGroup.js +164 -0
- package/es/components/TimePicker/TimePicker.js +256 -0
- package/es/components/TimePicker/index.js +15 -0
- package/es/components/TimePicker/next/TimePicker.js +218 -0
- package/es/components/TimePickerSelect/TimePickerSelect.js +82 -0
- package/es/components/TimePickerSelect/index.js +15 -0
- package/es/components/TimePickerSelect/next/TimePickerSelect.js +77 -0
- package/es/components/Toggle/Toggle.Skeleton.js +74 -0
- package/es/components/Toggle/Toggle.js +120 -0
- package/es/components/Toggle/index.js +19 -0
- package/es/components/Toggle/next/Toggle.js +158 -0
- package/es/components/ToggleSmall/ToggleSmall.Skeleton.js +71 -0
- package/es/components/ToggleSmall/ToggleSmall.js +104 -0
- package/es/components/Toolbar/Toolbar.js +121 -0
- package/es/components/ToolbarSearch/ToolbarSearch.js +168 -0
- package/es/components/Tooltip/next/DefinitionTooltip.js +122 -0
- package/es/components/Tooltip/next/Tooltip.js +154 -0
- package/es/components/TooltipDefinition/TooltipDefinition.js +167 -0
- package/es/components/TooltipIcon/TooltipIcon.js +235 -0
- package/es/components/TreeView/TreeNode.js +325 -0
- package/es/components/TreeView/TreeView.js +252 -0
- package/es/components/TreeView/index.js +13 -0
- package/es/components/UIShell/Content.js +50 -0
- package/es/components/UIShell/Header.js +37 -0
- package/es/components/UIShell/HeaderContainer.js +44 -0
- package/es/components/UIShell/HeaderGlobalAction.js +87 -0
- package/es/components/UIShell/HeaderGlobalBar.js +20 -0
- package/es/components/UIShell/HeaderMenu.js +240 -0
- package/es/components/UIShell/HeaderMenuButton.js +69 -0
- package/es/components/UIShell/HeaderMenuItem.js +73 -0
- package/es/components/UIShell/HeaderName.js +62 -0
- package/es/components/UIShell/HeaderNavigation.js +100 -0
- package/es/components/UIShell/HeaderPanel.js +52 -0
- package/es/components/UIShell/HeaderSideNavItems.js +50 -0
- package/es/components/UIShell/Link.js +49 -0
- package/es/components/UIShell/SideNav.js +227 -0
- package/es/components/UIShell/SideNavDetails.js +46 -0
- package/es/components/UIShell/SideNavDivider.js +30 -0
- package/es/components/UIShell/SideNavFooter.js +78 -0
- package/es/components/UIShell/SideNavHeader.js +50 -0
- package/es/components/UIShell/SideNavIcon.js +49 -0
- package/es/components/UIShell/SideNavItem.js +47 -0
- package/es/components/UIShell/SideNavItems.js +56 -0
- package/es/components/UIShell/SideNavLink.js +74 -0
- package/es/components/UIShell/SideNavLinkText.js +41 -0
- package/es/components/UIShell/SideNavMenu.js +198 -0
- package/es/components/UIShell/SideNavMenuItem.js +57 -0
- package/es/components/UIShell/SideNavSwitcher.js +80 -0
- package/es/components/UIShell/SkipToContent.js +57 -0
- package/es/components/UIShell/Switcher.js +45 -0
- package/es/components/UIShell/SwitcherDivider.js +35 -0
- package/es/components/UIShell/SwitcherItem.js +62 -0
- package/es/components/UIShell/_utils.js +10 -0
- package/es/components/UIShell/index.js +17 -0
- package/es/components/UIShell/next/HeaderNavigation.js +52 -0
- package/es/components/UIShell/next/SideNavMenu.js +160 -0
- package/es/components/UnorderedList/UnorderedList.js +59 -0
- package/es/index.js +190 -2
- package/es/internal/ClickListener.js +101 -0
- package/es/internal/ComponentToggle.js +42 -0
- package/es/internal/FeatureFlags.js +52 -0
- package/es/internal/FloatingMenu.js +483 -0
- package/es/internal/OptimizedResize.js +65 -0
- package/es/internal/Selection.js +243 -0
- package/es/internal/createClassWrapper.js +31 -0
- package/es/internal/deprecateFieldOnObject.js +26 -0
- package/es/internal/environment.js +15 -0
- package/es/internal/focus/index.js +16 -0
- package/es/internal/keyboard/keys.js +65 -0
- package/es/internal/keyboard/match.js +82 -0
- package/es/internal/keyboard/navigation.js +61 -0
- package/es/internal/useControllableState.js +86 -0
- package/es/internal/useDelayedState.js +54 -0
- package/es/internal/useEffectOnce.js +31 -0
- package/es/internal/useId.js +59 -0
- package/es/internal/useIsomorphicEffect.js +13 -0
- package/es/internal/useMatchMedia.js +51 -0
- package/es/internal/useMergedRefs.js +31 -0
- package/es/internal/useNoInteractiveChildren.js +92 -0
- package/es/internal/useNormalizedInputProps.js +88 -0
- package/es/internal/usePrefix.js +15 -0
- package/es/internal/useSavedCallback.js +32 -0
- package/es/internal/warning.js +28 -0
- package/es/internal/wrapFocus.js +75 -0
- package/es/node_modules/flatpickr/dist/l10n/index.js +1423 -0
- package/es/node_modules/flatpickr/dist/plugins/rangePlugin.js +196 -0
- package/es/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +1112 -0
- package/es/node_modules/use-resize-observer/polyfilled.js +112 -0
- package/es/prop-types/AriaPropTypes.js +16 -0
- package/es/prop-types/deprecate.js +33 -0
- package/es/prop-types/isRequiredOneOf.js +47 -0
- package/es/prop-types/requiredIfGivenPropIsTruthy.js +29 -0
- package/es/prop-types/requiredIfValueExists.js +32 -0
- package/es/prop-types/types.js +10 -0
- package/es/tools/array.js +32 -0
- package/es/tools/createPropAdapter.js +63 -0
- package/es/tools/events.js +35 -0
- package/es/tools/mergeRefs.js +31 -0
- package/es/tools/setupGetInstanceId.js +19 -0
- package/es/tools/toggleClass.js +14 -0
- package/es/tools/uniqueId.js +15 -0
- package/es/tools/wrapComponent.js +42 -0
- package/icons/es/index.js +1 -1
- package/icons/lib/index.js +7 -1952
- package/index.scss +1 -0
- package/lib/_virtual/ResizeObserver.es.js +17 -0
- package/lib/_virtual/_commonjsHelpers.js +35 -0
- package/lib/_virtual/_rollupPluginBabelHelpers.js +383 -0
- package/lib/{prefix.js → _virtual/index.js} +4 -2
- package/lib/_virtual/rangePlugin.js +14 -0
- package/lib/components/Accordion/Accordion.Skeleton.js +113 -0
- package/lib/components/Accordion/Accordion.js +97 -0
- package/lib/components/Accordion/AccordionItem.js +191 -0
- package/lib/components/Accordion/index.js +16 -0
- package/lib/components/AccordionItem/index.js +16 -0
- package/lib/components/AspectRatio/AspectRatio.js +77 -0
- package/lib/components/Breadcrumb/Breadcrumb.Skeleton.js +55 -0
- package/lib/components/Breadcrumb/Breadcrumb.js +68 -0
- package/lib/components/Breadcrumb/BreadcrumbItem.js +104 -0
- package/lib/components/Button/Button.Skeleton.js +100 -0
- package/lib/components/Button/Button.js +380 -0
- package/lib/components/ButtonSet/ButtonSet.js +58 -0
- package/lib/components/Checkbox/Checkbox.Skeleton.js +46 -0
- package/lib/components/Checkbox/Checkbox.js +146 -0
- package/lib/components/CodeSnippet/CodeSnippet.Skeleton.js +68 -0
- package/lib/components/CodeSnippet/CodeSnippet.js +383 -0
- package/lib/components/ComboBox/ComboBox.js +543 -0
- package/lib/components/ComboBox/tools/filter.js +24 -0
- package/lib/components/ComposedModal/ComposedModal.js +643 -0
- package/lib/components/ComposedModal/index.js +45 -0
- package/lib/components/ComposedModal/next/ComposedModal.js +234 -0
- package/lib/components/ComposedModal/next/ModalFooter.js +223 -0
- package/lib/components/ComposedModal/next/ModalHeader.js +137 -0
- package/lib/components/ContentSwitcher/ContentSwitcher.js +195 -0
- package/lib/components/ContextMenu/useContextMenu.js +61 -0
- package/lib/components/Copy/Copy.js +154 -0
- package/lib/components/CopyButton/CopyButton.js +77 -0
- package/lib/components/DangerButton/DangerButton.js +28 -0
- package/lib/components/DataTable/DataTable.js +667 -0
- package/lib/components/DataTable/Table.js +120 -0
- package/lib/components/DataTable/TableActionList.js +21 -0
- package/lib/components/DataTable/TableBatchAction.js +54 -0
- package/lib/components/DataTable/TableBatchActions.js +120 -0
- package/lib/components/DataTable/TableBody.js +46 -0
- package/lib/components/DataTable/TableCell.js +20 -0
- package/lib/components/DataTable/TableContainer.js +76 -0
- package/lib/components/DataTable/TableExpandHeader.js +96 -0
- package/lib/components/DataTable/TableExpandRow.js +103 -0
- package/lib/components/DataTable/TableExpandedRow.js +85 -0
- package/lib/components/DataTable/TableHead.js +20 -0
- package/lib/components/DataTable/TableHeader.js +197 -0
- package/lib/components/DataTable/TableRow.js +52 -0
- package/lib/components/DataTable/TableSelectAll.js +94 -0
- package/lib/components/DataTable/TableSelectRow.js +107 -0
- package/lib/components/DataTable/TableToolbar.js +77 -0
- package/lib/components/DataTable/TableToolbarAction.js +40 -0
- package/lib/components/DataTable/TableToolbarContent.js +21 -0
- package/lib/components/DataTable/TableToolbarMenu.js +71 -0
- package/lib/components/DataTable/TableToolbarSearch.js +252 -0
- package/lib/components/DataTable/index.js +76 -0
- package/lib/components/DataTable/state/getDerivedStateFromProps.js +56 -0
- package/lib/components/DataTable/state/sortStates.js +23 -0
- package/lib/components/DataTable/state/sorting.js +100 -0
- package/lib/components/DataTable/tools/cells.js +25 -0
- package/lib/components/DataTable/tools/denormalize.js +47 -0
- package/lib/components/DataTable/tools/filter.js +46 -0
- package/lib/components/DataTable/tools/instanceId.js +25 -0
- package/lib/components/DataTable/tools/normalize.js +82 -0
- package/lib/components/DataTable/tools/sorting.js +117 -0
- package/lib/components/DataTableSkeleton/DataTableSkeleton.js +143 -0
- package/lib/components/DatePicker/DatePicker.Skeleton.js +79 -0
- package/lib/components/DatePicker/DatePicker.js +633 -0
- package/lib/components/DatePicker/index.js +39 -0
- package/lib/components/DatePicker/next/DatePicker.js +569 -0
- package/lib/components/DatePicker/plugins/appendToPlugin.js +62 -0
- package/lib/components/DatePicker/plugins/fixEventsPlugin.js +93 -0
- package/lib/components/DatePicker/plugins/rangePlugin.js +55 -0
- package/lib/components/DatePickerInput/DatePickerInput.js +281 -0
- package/lib/components/DatePickerInput/index.js +39 -0
- package/lib/components/DatePickerInput/next/DatePickerInput.js +279 -0
- package/lib/components/Dropdown/Dropdown.Skeleton.js +65 -0
- package/lib/components/Dropdown/Dropdown.js +337 -0
- package/lib/components/ErrorBoundary/ErrorBoundary.js +105 -0
- package/lib/components/ErrorBoundary/ErrorBoundaryContext.js +20 -0
- package/lib/components/ExpandableSearch/ExpandableSearch.js +76 -0
- package/lib/components/ExpandableSearch/index.js +16 -0
- package/lib/components/FeatureFlags/index.js +181 -0
- package/lib/components/FileUploader/FileUploader.Skeleton.js +53 -0
- package/lib/components/FileUploader/FileUploader.js +313 -0
- package/lib/components/FileUploader/FileUploaderButton.js +227 -0
- package/lib/components/FileUploader/FileUploaderDropContainer.js +233 -0
- package/lib/components/FileUploader/FileUploaderItem.js +159 -0
- package/lib/components/FileUploader/Filename.js +91 -0
- package/lib/components/FileUploader/index.js +38 -0
- package/lib/components/FluidForm/FluidForm.js +56 -0
- package/lib/components/FluidForm/FormContext.js +18 -0
- package/lib/components/Form/Form.js +51 -0
- package/lib/components/FormGroup/FormGroup.js +107 -0
- package/lib/components/FormItem/FormItem.js +51 -0
- package/lib/components/FormLabel/FormLabel.js +77 -0
- package/lib/components/Grid/CSSGrid.js +149 -0
- package/lib/components/Grid/Column.js +392 -0
- package/lib/components/Grid/ColumnHang.js +61 -0
- package/lib/components/Grid/FlexGrid.js +86 -0
- package/lib/components/Grid/Grid.js +72 -0
- package/lib/components/Grid/GridContext.js +88 -0
- package/lib/components/Grid/Row.js +75 -0
- package/lib/components/Heading/index.js +72 -0
- package/lib/components/Icon/Icon.Skeleton.js +55 -0
- package/lib/components/IconButton/index.js +98 -0
- package/lib/components/InlineCheckbox/InlineCheckbox.js +131 -0
- package/lib/components/InlineLoading/InlineLoading.js +128 -0
- package/lib/components/Layer/LayerContext.js +20 -0
- package/lib/components/Layer/index.js +72 -0
- package/lib/components/Link/Link.js +105 -0
- package/lib/components/ListBox/ListBox.js +139 -0
- package/lib/components/ListBox/ListBoxField.js +71 -0
- package/lib/components/ListBox/ListBoxMenu.js +65 -0
- package/lib/components/ListBox/ListBoxMenuIcon.js +72 -0
- package/lib/components/ListBox/ListBoxMenuItem.js +97 -0
- package/lib/components/ListBox/ListBoxPropTypes.js +42 -0
- package/lib/components/ListBox/ListBoxSelection.js +159 -0
- package/lib/components/ListBox/index.js +25 -0
- package/lib/components/ListBox/next/ListBoxSelection.js +166 -0
- package/lib/components/ListBox/next/ListBoxTrigger.js +79 -0
- package/lib/components/ListItem/ListItem.js +51 -0
- package/lib/components/Loading/Loading.js +112 -0
- package/lib/components/Menu/Menu.js +339 -0
- package/lib/components/Menu/MenuDivider.js +27 -0
- package/lib/components/Menu/MenuGroup.js +43 -0
- package/lib/components/Menu/MenuItem.js +67 -0
- package/lib/components/Menu/MenuOption.js +260 -0
- package/lib/components/Menu/MenuRadioGroup.js +59 -0
- package/lib/components/Menu/MenuRadioGroupOptions.js +73 -0
- package/lib/components/Menu/MenuSelectableItem.js +66 -0
- package/lib/components/Menu/_utils.js +191 -0
- package/lib/components/Menu/index.js +30 -0
- package/lib/components/Modal/Modal.js +353 -0
- package/lib/components/Modal/index.js +39 -0
- package/lib/components/Modal/next/Modal.js +287 -0
- package/lib/components/ModalWrapper/ModalWrapper.js +173 -0
- package/lib/components/MultiSelect/FilterableMultiSelect.js +588 -0
- package/lib/components/MultiSelect/MultiSelect.js +480 -0
- package/lib/components/MultiSelect/MultiSelectPropTypes.js +49 -0
- package/lib/components/MultiSelect/index.js +47 -0
- package/lib/components/MultiSelect/next/FilterableMultiSelect.js +544 -0
- package/lib/components/MultiSelect/tools/itemToString.js +32 -0
- package/lib/components/MultiSelect/tools/sorting.js +58 -0
- package/lib/components/Notification/Notification.js +544 -0
- package/lib/components/Notification/index.js +51 -0
- package/lib/components/Notification/next/Notification.js +698 -0
- package/lib/components/NumberInput/NumberInput.Skeleton.js +54 -0
- package/lib/components/NumberInput/NumberInput.js +546 -0
- package/lib/components/OrderedList/OrderedList.js +76 -0
- package/lib/components/OverflowMenu/OverflowMenu.js +547 -0
- package/lib/components/OverflowMenu/index.js +38 -0
- package/lib/components/OverflowMenuItem/OverflowMenuItem.js +250 -0
- package/lib/components/OverflowMenuItem/index.js +16 -0
- package/lib/components/OverflowMenuV2/index.js +147 -0
- package/lib/components/Pagination/Pagination.Skeleton.js +58 -0
- package/lib/components/Pagination/Pagination.js +430 -0
- package/lib/components/Pagination/experimental/PageSelector.js +91 -0
- package/lib/components/Pagination/experimental/Pagination.js +310 -0
- package/lib/components/Pagination/index.js +38 -0
- package/lib/components/Pagination/next/Pagination.js +411 -0
- package/lib/components/PaginationNav/PaginationNav.js +465 -0
- package/lib/components/Popover/index.js +129 -0
- package/lib/components/PrimaryButton/PrimaryButton.js +28 -0
- package/lib/components/ProgressBar/ProgressBar.js +120 -0
- package/lib/components/ProgressIndicator/ProgressIndicator.Skeleton.js +60 -0
- package/lib/components/ProgressIndicator/ProgressIndicator.js +334 -0
- package/lib/components/ProgressIndicator/index.js +39 -0
- package/lib/components/ProgressIndicator/next/ProgressIndicator.js +127 -0
- package/lib/components/RadioButton/RadioButton.Skeleton.js +47 -0
- package/lib/components/RadioButton/RadioButton.js +183 -0
- package/lib/components/RadioButton/index.js +39 -0
- package/lib/components/RadioButton/next/RadioButton.js +138 -0
- package/lib/components/RadioButtonGroup/RadioButtonGroup.js +200 -0
- package/lib/components/RadioButtonGroup/index.js +39 -0
- package/lib/components/RadioButtonGroup/next/RadioButtonGroup.js +151 -0
- package/lib/components/RadioTile/RadioTile.js +157 -0
- package/lib/components/Search/Search.Skeleton.js +60 -0
- package/lib/components/Search/Search.js +299 -0
- package/lib/components/Search/index.js +39 -0
- package/lib/components/Search/next/Search.js +273 -0
- package/lib/components/SearchFilterButton/SearchFilterButton.js +70 -0
- package/lib/components/SearchLayoutButton/SearchLayoutButton.js +160 -0
- package/lib/components/SecondaryButton/SecondaryButton.js +28 -0
- package/lib/components/Select/Select.Skeleton.js +56 -0
- package/lib/components/Select/Select.js +240 -0
- package/lib/components/SelectItem/SelectItem.js +80 -0
- package/lib/components/SelectItemGroup/SelectItemGroup.js +89 -0
- package/lib/components/SkeletonIcon/SkeletonIcon.js +52 -0
- package/lib/components/SkeletonPlaceholder/SkeletonPlaceholder.js +47 -0
- package/lib/components/SkeletonText/SkeletonText.js +124 -0
- package/lib/components/Slider/Slider.Skeleton.js +66 -0
- package/lib/components/Slider/Slider.js +679 -0
- package/lib/components/Slider/index.js +38 -0
- package/lib/components/Stack/Stack.js +112 -0
- package/lib/components/Stack/index.js +35 -0
- package/lib/components/StructuredList/StructuredList.Skeleton.js +92 -0
- package/lib/components/StructuredList/StructuredList.js +322 -0
- package/lib/components/StructuredList/index.js +52 -0
- package/lib/components/StructuredList/next/StructuredList.js +345 -0
- package/lib/components/Switch/Switch.js +134 -0
- package/lib/components/Tab/Tab.js +220 -0
- package/lib/components/Tab/index.js +39 -0
- package/lib/components/TabContent/TabContent.js +87 -0
- package/lib/components/Tabs/Tabs.Skeleton.js +63 -0
- package/lib/components/Tabs/Tabs.js +629 -0
- package/lib/components/Tabs/index.js +47 -0
- package/lib/components/Tabs/next/Tabs.Skeleton.js +63 -0
- package/lib/components/Tabs/next/Tabs.js +664 -0
- package/lib/components/Tabs/next/usePressable.js +149 -0
- package/lib/components/Tag/Tag.Skeleton.js +50 -0
- package/lib/components/Tag/Tag.js +156 -0
- package/lib/components/Text/Text.js +107 -0
- package/lib/components/Text/TextDirectionContext.js +16 -0
- package/lib/components/Text/createTextComponent.js +41 -0
- package/lib/components/Text/index.js +17 -0
- package/lib/components/TextArea/TextArea.Skeleton.js +54 -0
- package/lib/components/TextArea/TextArea.js +230 -0
- package/lib/components/TextInput/ControlledPasswordInput.js +244 -0
- package/lib/components/TextInput/PasswordInput.js +315 -0
- package/lib/components/TextInput/TextInput.Skeleton.js +54 -0
- package/lib/components/TextInput/TextInput.js +268 -0
- package/lib/components/TextInput/index.js +25 -0
- package/lib/components/TextInput/util.js +37 -0
- package/lib/components/Theme/index.js +116 -0
- package/lib/components/Tile/Tile.js +782 -0
- package/lib/components/Tile/index.js +48 -0
- package/lib/components/Tile/next/Tile.js +662 -0
- package/lib/components/TileGroup/TileGroup.js +173 -0
- package/lib/components/TimePicker/TimePicker.js +266 -0
- package/lib/components/TimePicker/index.js +39 -0
- package/lib/components/TimePicker/next/TimePicker.js +228 -0
- package/lib/components/TimePickerSelect/TimePickerSelect.js +92 -0
- package/lib/components/TimePickerSelect/index.js +39 -0
- package/lib/components/TimePickerSelect/next/TimePickerSelect.js +87 -0
- package/lib/components/Toggle/Toggle.Skeleton.js +84 -0
- package/lib/components/Toggle/Toggle.js +130 -0
- package/lib/components/Toggle/index.js +23 -0
- package/lib/components/Toggle/next/Toggle.js +169 -0
- package/lib/components/ToggleSmall/ToggleSmall.Skeleton.js +81 -0
- package/lib/components/ToggleSmall/ToggleSmall.js +114 -0
- package/lib/components/Toolbar/Toolbar.js +135 -0
- package/lib/components/ToolbarSearch/ToolbarSearch.js +178 -0
- package/lib/components/Tooltip/next/DefinitionTooltip.js +132 -0
- package/lib/components/Tooltip/next/Tooltip.js +164 -0
- package/lib/components/TooltipDefinition/TooltipDefinition.js +178 -0
- package/lib/components/TooltipIcon/TooltipIcon.js +245 -0
- package/lib/components/TreeView/TreeNode.js +335 -0
- package/lib/components/TreeView/TreeView.js +281 -0
- package/lib/components/TreeView/index.js +18 -0
- package/lib/components/UIShell/Content.js +60 -0
- package/lib/components/UIShell/Header.js +47 -0
- package/lib/components/UIShell/HeaderContainer.js +53 -0
- package/lib/components/UIShell/HeaderGlobalAction.js +97 -0
- package/lib/components/UIShell/HeaderGlobalBar.js +24 -0
- package/lib/components/UIShell/HeaderMenu.js +250 -0
- package/lib/components/UIShell/HeaderMenuButton.js +79 -0
- package/lib/components/UIShell/HeaderMenuItem.js +83 -0
- package/lib/components/UIShell/HeaderName.js +72 -0
- package/lib/components/UIShell/HeaderNavigation.js +110 -0
- package/lib/components/UIShell/HeaderPanel.js +62 -0
- package/lib/components/UIShell/HeaderSideNavItems.js +60 -0
- package/lib/components/UIShell/Link.js +59 -0
- package/lib/components/UIShell/SideNav.js +237 -0
- package/lib/components/UIShell/SideNavDetails.js +56 -0
- package/lib/components/UIShell/SideNavDivider.js +40 -0
- package/lib/components/UIShell/SideNavFooter.js +88 -0
- package/lib/components/UIShell/SideNavHeader.js +60 -0
- package/lib/components/UIShell/SideNavIcon.js +59 -0
- package/lib/components/UIShell/SideNavItem.js +57 -0
- package/lib/components/UIShell/SideNavItems.js +66 -0
- package/lib/components/UIShell/SideNavLink.js +84 -0
- package/lib/components/UIShell/SideNavLinkText.js +51 -0
- package/lib/components/UIShell/SideNavMenu.js +209 -0
- package/lib/components/UIShell/SideNavMenuItem.js +67 -0
- package/lib/components/UIShell/SideNavSwitcher.js +90 -0
- package/lib/components/UIShell/SkipToContent.js +67 -0
- package/lib/components/UIShell/Switcher.js +55 -0
- package/lib/components/UIShell/SwitcherDivider.js +45 -0
- package/lib/components/UIShell/SwitcherItem.js +72 -0
- package/lib/components/UIShell/_utils.js +14 -0
- package/lib/components/UIShell/index.js +42 -0
- package/lib/components/UIShell/next/HeaderNavigation.js +62 -0
- package/lib/components/UIShell/next/SideNavMenu.js +170 -0
- package/lib/components/UnorderedList/UnorderedList.js +69 -0
- package/lib/index.js +409 -858
- package/lib/internal/ClickListener.js +110 -0
- package/lib/internal/ComponentToggle.js +50 -0
- package/lib/internal/FeatureFlags.js +56 -0
- package/lib/internal/FloatingMenu.js +498 -0
- package/lib/internal/OptimizedResize.js +73 -0
- package/lib/internal/Selection.js +254 -0
- package/lib/internal/createClassWrapper.js +39 -0
- package/lib/internal/deprecateFieldOnObject.js +30 -0
- package/lib/internal/environment.js +19 -0
- package/lib/internal/focus/index.js +20 -0
- package/lib/internal/keyboard/keys.js +79 -0
- package/lib/internal/keyboard/match.js +87 -0
- package/lib/internal/keyboard/navigation.js +69 -0
- package/lib/internal/useControllableState.js +90 -0
- package/lib/internal/useDelayedState.js +58 -0
- package/lib/internal/useEffectOnce.js +35 -0
- package/lib/internal/useId.js +64 -0
- package/lib/internal/useIsomorphicEffect.js +17 -0
- package/lib/internal/useMatchMedia.js +55 -0
- package/lib/internal/useMergedRefs.js +35 -0
- package/lib/internal/useNoInteractiveChildren.js +97 -0
- package/lib/internal/useNormalizedInputProps.js +96 -0
- package/lib/internal/usePrefix.js +24 -0
- package/lib/internal/useSavedCallback.js +36 -0
- package/lib/internal/warning.js +32 -0
- package/lib/internal/wrapFocus.js +84 -0
- package/lib/node_modules/flatpickr/dist/l10n/index.js +1427 -0
- package/lib/node_modules/flatpickr/dist/plugins/rangePlugin.js +200 -0
- package/lib/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +1116 -0
- package/lib/node_modules/use-resize-observer/polyfilled.js +120 -0
- package/lib/prop-types/AriaPropTypes.js +24 -0
- package/lib/prop-types/deprecate.js +37 -0
- package/lib/prop-types/isRequiredOneOf.js +51 -0
- package/lib/prop-types/requiredIfGivenPropIsTruthy.js +33 -0
- package/lib/prop-types/requiredIfValueExists.js +36 -0
- package/lib/prop-types/types.js +14 -0
- package/lib/tools/array.js +36 -0
- package/lib/tools/createPropAdapter.js +67 -0
- package/lib/tools/events.js +39 -0
- package/lib/tools/mergeRefs.js +35 -0
- package/lib/tools/setupGetInstanceId.js +23 -0
- package/lib/tools/toggleClass.js +18 -0
- package/lib/tools/uniqueId.js +19 -0
- package/lib/tools/wrapComponent.js +52 -0
- package/package.json +49 -18
- package/scss/{grid/_config.scss → components/_index.scss} +1 -1
- package/scss/components/accordion/_accordion.scss +9 -0
- package/scss/components/aspect-ratio/_aspect-ratio.scss +9 -0
- package/scss/components/breadcrumb/_breadcrumb.scss +9 -0
- package/scss/components/button/_button.scss +9 -0
- package/scss/components/button/_tokens.scss +9 -0
- package/scss/components/checkbox/_checkbox.scss +9 -0
- package/scss/components/code-snippet/_code-snippet.scss +9 -0
- package/scss/components/combo-box/_combo-box.scss +9 -0
- package/scss/components/content-switcher/_content-switcher.scss +9 -0
- package/scss/components/copy-button/_copy-button.scss +9 -0
- package/scss/components/data-table/_data-table.scss +9 -0
- package/scss/components/data-table/action/_data-table-action.scss +9 -0
- package/scss/components/data-table/action/_index.scss +9 -0
- package/scss/components/data-table/expandable/_data-table-expandable.scss +9 -0
- package/scss/components/data-table/expandable/_index.scss +9 -0
- package/scss/components/data-table/skeleton/_data-table-skeleton.scss +9 -0
- package/scss/components/data-table/skeleton/_index.scss +9 -0
- package/scss/components/data-table/sort/_data-table-sort.scss +9 -0
- package/scss/components/data-table/sort/_index.scss +9 -0
- package/scss/components/date-picker/_date-picker.scss +9 -0
- package/scss/components/dropdown/_dropdown.scss +9 -0
- package/scss/components/file-uploader/_file-uploader.scss +9 -0
- package/scss/components/form/_form.scss +9 -0
- package/scss/components/inline-loading/_inline-loading.scss +9 -0
- package/scss/components/link/_link.scss +9 -0
- package/scss/components/list/_list.scss +9 -0
- package/scss/components/list-box/_index.scss +9 -0
- package/scss/components/list-box/_list-box.scss +9 -0
- package/scss/components/loading/_loading.scss +9 -0
- package/scss/components/menu/_menu.scss +9 -0
- package/scss/components/modal/_modal.scss +9 -0
- package/scss/components/multiselect/_multiselect.scss +9 -0
- package/scss/components/notification/_actionable-notification.scss +9 -0
- package/scss/components/notification/_inline-notification.scss +9 -0
- package/scss/components/notification/_toast-notification.scss +9 -0
- package/scss/components/notification/_tokens.scss +9 -0
- package/scss/components/number-input/_number-input.scss +9 -0
- package/scss/components/overflow-menu/_overflow-menu.scss +9 -0
- package/scss/components/pagination/_pagination.scss +9 -0
- package/scss/components/pagination/_unstable_pagination.scss +9 -0
- package/scss/components/pagination-nav/_pagination-nav.scss +9 -0
- package/scss/components/popover/_index.scss +9 -0
- package/scss/components/popover/_popover.scss +9 -0
- package/scss/components/progress-bar/_index.scss +9 -0
- package/scss/components/progress-bar/_progress-bar.scss +9 -0
- package/scss/components/progress-indicator/_progress-indicator.scss +9 -0
- package/scss/components/radio-button/_radio-button.scss +9 -0
- package/scss/components/search/_search.scss +9 -0
- package/scss/components/select/_select.scss +9 -0
- package/scss/components/skeleton-styles/_index.scss +9 -0
- package/scss/components/skeleton-styles/_skeleton-styles.scss +9 -0
- package/scss/components/slider/_slider.scss +9 -0
- package/scss/components/stack/_stack.scss +9 -0
- package/scss/components/structured-list/_structured-list.scss +9 -0
- package/scss/components/tabs/_tabs.scss +9 -0
- package/scss/components/tag/_tag.scss +9 -0
- package/scss/components/tag/_tokens.scss +9 -0
- package/scss/components/text-area/_text-area.scss +9 -0
- package/scss/components/text-input/_text-input.scss +9 -0
- package/scss/components/tile/_tile.scss +9 -0
- package/scss/components/time-picker/_time-picker.scss +9 -0
- package/scss/components/toggle/_toggle.scss +9 -0
- package/scss/components/toggletip/_index.scss +9 -0
- package/scss/components/toggletip/_toggletip.scss +9 -0
- package/scss/components/tooltip/_tooltip.scss +9 -0
- package/scss/components/treeview/_treeview.scss +9 -0
- package/scss/components/ui-shell/_ui-shell.scss +9 -0
- package/scss/components/ui-shell/content/_content.scss +9 -0
- package/scss/components/ui-shell/content/_index.scss +9 -0
- package/scss/components/ui-shell/header/_header.scss +9 -0
- package/scss/components/ui-shell/header/_index.scss +9 -0
- package/scss/components/ui-shell/header-panel/_header-panel.scss +9 -0
- package/scss/components/ui-shell/header-panel/_index.scss +9 -0
- package/scss/components/ui-shell/side-nav/_index.scss +9 -0
- package/scss/components/ui-shell/side-nav/_side-nav.scss +9 -0
- package/scss/components/ui-shell/switcher/_index.scss +9 -0
- package/scss/components/ui-shell/switcher/_switcher.scss +9 -0
- package/scss/fonts/_src.scss +9 -0
- package/scss/grid/_css-grid.scss +9 -0
- package/scss/grid/_mixins.scss +9 -0
- package/scss/type/_index.scss +9 -0
- package/scss/type/_reset.scss +9 -0
- package/scss/utilities/_box-shadow.scss +9 -0
- package/scss/utilities/_button-reset.scss +9 -0
- package/scss/utilities/_component-reset.scss +9 -0
- package/scss/utilities/_component-tokens.scss +9 -0
- package/scss/utilities/_custom-property.scss +9 -0
- package/scss/utilities/_focus-outline.scss +9 -0
- package/scss/utilities/_high-contrast-mode.scss +9 -0
- package/scss/utilities/_index.scss +9 -0
- package/scss/utilities/_keyframes.scss +9 -0
- package/scss/utilities/_placeholder-colors.scss +9 -0
- package/scss/utilities/_rotate.scss +9 -0
- package/scss/utilities/_skeleton.scss +9 -0
- package/scss/utilities/_text-overflow.scss +9 -0
- package/scss/utilities/_text-truncate.scss +9 -0
- package/scss/utilities/_visually-hidden.scss +9 -0
- package/icons/es/icon-helpers/es/index.js +0 -141
- package/icons/es/icons-react/next/index.esm.js +0 -14
- package/icons/lib/icon-helpers/es/index.js +0 -146
- package/icons/lib/icons-react/next/index.esm.js +0 -1973
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2021
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { inherits as _inherits, createSuper as _createSuper, classCallCheck as _classCallCheck, assertThisInitialized as _assertThisInitialized, createClass as _createClass, defineProperty as _defineProperty } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
9
|
+
import PropTypes from 'prop-types';
|
|
10
|
+
import React__default from 'react';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Generic component used for reacting to a click event happening outside of a
|
|
14
|
+
* given `children` element.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
var ClickListener = /*#__PURE__*/function (_React$Component) {
|
|
18
|
+
_inherits(ClickListener, _React$Component);
|
|
19
|
+
|
|
20
|
+
var _super = _createSuper(ClickListener);
|
|
21
|
+
|
|
22
|
+
function ClickListener(props) {
|
|
23
|
+
var _this;
|
|
24
|
+
|
|
25
|
+
_classCallCheck(this, ClickListener);
|
|
26
|
+
|
|
27
|
+
_this = _super.call(this, props); // We manually bind handlers in this Component, versus using class
|
|
28
|
+
// properties, so that we can properly test the `handleRef` handler with
|
|
29
|
+
// enzyme.
|
|
30
|
+
|
|
31
|
+
_this.handleRef = _this.handleRef.bind(_assertThisInitialized(_this));
|
|
32
|
+
_this.handleDocumentClick = _this.handleDocumentClick.bind(_assertThisInitialized(_this));
|
|
33
|
+
return _this;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
_createClass(ClickListener, [{
|
|
37
|
+
key: "componentDidMount",
|
|
38
|
+
value: function componentDidMount() {
|
|
39
|
+
document.addEventListener('click', this.handleDocumentClick);
|
|
40
|
+
}
|
|
41
|
+
}, {
|
|
42
|
+
key: "componentWillUnmount",
|
|
43
|
+
value: function componentWillUnmount() {
|
|
44
|
+
document.removeEventListener('click', this.handleDocumentClick);
|
|
45
|
+
}
|
|
46
|
+
}, {
|
|
47
|
+
key: "handleDocumentClick",
|
|
48
|
+
value: function handleDocumentClick(evt) {
|
|
49
|
+
if (this.element) {
|
|
50
|
+
if (this.element.contains && !this.element.contains(ClickListener.getEventTarget(evt))) {
|
|
51
|
+
this.props.onClickOutside(evt);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}, {
|
|
56
|
+
key: "handleRef",
|
|
57
|
+
value: function handleRef(el) {
|
|
58
|
+
var children = this.props.children;
|
|
59
|
+
this.element = el;
|
|
60
|
+
/**
|
|
61
|
+
* One important note, `children.ref` corresponds to a `ref` prop passed in
|
|
62
|
+
* directly to the child, not necessarily a `ref` defined in the component.
|
|
63
|
+
* This means that here we target the following `ref` location:
|
|
64
|
+
*
|
|
65
|
+
* <ClickListener onClickOutside={() => {}}>
|
|
66
|
+
* <Child ref={targetedRefHere} />
|
|
67
|
+
* </ClickListener>
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
if (children.ref && typeof children.ref === 'function') {
|
|
71
|
+
children.ref(el);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
key: "render",
|
|
76
|
+
value: function render() {
|
|
77
|
+
return /*#__PURE__*/React__default.cloneElement(this.props.children, {
|
|
78
|
+
ref: this.handleRef
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}], [{
|
|
82
|
+
key: "getEventTarget",
|
|
83
|
+
value: function getEventTarget(evt) {
|
|
84
|
+
// support Shadow DOM
|
|
85
|
+
if (evt.composed && typeof evt.composedPath === 'function') {
|
|
86
|
+
return evt.composedPath()[0];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return evt.target;
|
|
90
|
+
}
|
|
91
|
+
}]);
|
|
92
|
+
|
|
93
|
+
return ClickListener;
|
|
94
|
+
}(React__default.Component);
|
|
95
|
+
|
|
96
|
+
_defineProperty(ClickListener, "propTypes", {
|
|
97
|
+
children: PropTypes.element.isRequired,
|
|
98
|
+
onClickOutside: PropTypes.func.isRequired
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
export { ClickListener as default };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2021
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
9
|
+
import React__default from 'react';
|
|
10
|
+
import { useFeatureFlag } from '../components/FeatureFlags/index.js';
|
|
11
|
+
|
|
12
|
+
function createComponentToggle(spec) {
|
|
13
|
+
var name = spec.name,
|
|
14
|
+
_spec$flag = spec.flag,
|
|
15
|
+
flag = _spec$flag === void 0 ? 'enable-v11-release' : _spec$flag,
|
|
16
|
+
next = spec.next,
|
|
17
|
+
classic = spec.classic;
|
|
18
|
+
|
|
19
|
+
function ComponentToggle(props, ref) {
|
|
20
|
+
var enabled = useFeatureFlag(flag);
|
|
21
|
+
|
|
22
|
+
if (enabled) {
|
|
23
|
+
if (next) {
|
|
24
|
+
return /*#__PURE__*/React__default.createElement(next, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
25
|
+
ref: ref
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return /*#__PURE__*/React__default.createElement(classic, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
33
|
+
ref: ref
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
var wrappedComponent = /*#__PURE__*/React__default.forwardRef(ComponentToggle);
|
|
38
|
+
wrappedComponent.displayName = "FeatureToggle(".concat(name, ")");
|
|
39
|
+
return wrappedComponent;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { createComponentToggle };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2021
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { enabled } from '@carbon/feature-flags';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* This file contains the list of the default values of compile-time feature flags.
|
|
12
|
+
*
|
|
13
|
+
* Build toolchain can replace variable here and/or the references
|
|
14
|
+
* in order to apply non-default values to those feature flags.
|
|
15
|
+
*
|
|
16
|
+
* @example Render `foo` if `aFeatureFlag` is `true`, render `bar` otherwise.
|
|
17
|
+
* import { aFeatureFlag } from '/path/to/FeatureFlags';
|
|
18
|
+
* ...
|
|
19
|
+
* const MyComponent = props => (<div {...props}>{aFeatureFlag ? 'foo' : 'bar'}</div>);
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* With this flag, certain components will be created in either a controlled or controlled
|
|
24
|
+
* mode based on the existence of a value prop.
|
|
25
|
+
*
|
|
26
|
+
* The following components will have the significance of their props slightly altered as outlined below.
|
|
27
|
+
*
|
|
28
|
+
* Components: `<NumberInput>`
|
|
29
|
+
*
|
|
30
|
+
* * `value` → when provided, enables controlled mode.
|
|
31
|
+
* For the rest of the component's lifecycle, it will be controlled by this prop as it's single source of truth.
|
|
32
|
+
* * `defaultValue` → Optional starting value, used for for uncontrolled mode only (no value prop).
|
|
33
|
+
* The value prop takes precedence over defaultValue.
|
|
34
|
+
* * `onChange` → Optional event handler.
|
|
35
|
+
* However, if value is provided and a handler is not, we'll throw a warning indicating the component is now read-only
|
|
36
|
+
* * `readOnly` → silences the above warning, acknowledging the read-only state of the component
|
|
37
|
+
*
|
|
38
|
+
* This flag also disables prop -> state sync in several components, notably `<NumberInput>`.
|
|
39
|
+
*
|
|
40
|
+
* This flag also updates event handlers to pass an up-to-date value in the second parameter,
|
|
41
|
+
* so applications can use it in both controlled and uncontrolled components.
|
|
42
|
+
*
|
|
43
|
+
* * _With_ this feature flag, the signature of the event handler will be altered to provide additional context in the second parameter: `onChange(event, { value, ...rest })` where:
|
|
44
|
+
* * `event` is the (React) raw event
|
|
45
|
+
* * `value` is the new value
|
|
46
|
+
* * `rest` tells you additional information based on the source component
|
|
47
|
+
* * _Without_ this feature flag the event handler has component-specific signature, e.g. `onChange(event, direction)`.
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
var useControlledStateWithValue = enabled('enable-use-controlled-state-with-value');
|
|
51
|
+
|
|
52
|
+
export { useControlledStateWithValue };
|
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2021
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { inherits as _inherits, createSuper as _createSuper, classCallCheck as _classCallCheck, defineProperty as _defineProperty, assertThisInitialized as _assertThisInitialized, objectSpread2 as _objectSpread2, createClass as _createClass, typeof as _typeof } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
9
|
+
import PropTypes from 'prop-types';
|
|
10
|
+
import React__default from 'react';
|
|
11
|
+
import ReactDOM from 'react-dom';
|
|
12
|
+
import window from 'window-or-global';
|
|
13
|
+
import OptimizedResize from './OptimizedResize.js';
|
|
14
|
+
import { selectorTabbable, selectorFocusable } from './keyboard/navigation.js';
|
|
15
|
+
import { warning } from './warning.js';
|
|
16
|
+
import wrapFocus from './wrapFocus.js';
|
|
17
|
+
import { PrefixContext } from './usePrefix.js';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The structure for the position of floating menu.
|
|
21
|
+
* @typedef {object} FloatingMenu~position
|
|
22
|
+
* @property {number} left The left position.
|
|
23
|
+
* @property {number} top The top position.
|
|
24
|
+
* @property {number} right The right position.
|
|
25
|
+
* @property {number} bottom The bottom position.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The structure for the size of floating menu.
|
|
30
|
+
* @typedef {object} FloatingMenu~size
|
|
31
|
+
* @property {number} width The width.
|
|
32
|
+
* @property {number} height The height.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The structure for the position offset of floating menu.
|
|
37
|
+
* @typedef {object} FloatingMenu~offset
|
|
38
|
+
* @property {number} top The top position.
|
|
39
|
+
* @property {number} left The left position.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The structure for the target container.
|
|
44
|
+
* @typedef {object} FloatingMenu~container
|
|
45
|
+
* @property {DOMRect} rect Return of element.getBoundingClientRect()
|
|
46
|
+
* @property {string} position Position style (static, absolute, relative...)
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
var DIRECTION_LEFT = 'left';
|
|
50
|
+
var DIRECTION_TOP = 'top';
|
|
51
|
+
var DIRECTION_RIGHT = 'right';
|
|
52
|
+
var DIRECTION_BOTTOM = 'bottom';
|
|
53
|
+
/**
|
|
54
|
+
* @param {FloatingMenu~offset} [oldMenuOffset={}] The old value.
|
|
55
|
+
* @param {FloatingMenu~offset} [menuOffset={}] The new value.
|
|
56
|
+
* @returns `true` if the parent component wants to change in the adjustment of the floating menu position.
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
var hasChangeInOffset = function hasChangeInOffset() {
|
|
61
|
+
var oldMenuOffset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
62
|
+
var menuOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
63
|
+
|
|
64
|
+
if (_typeof(oldMenuOffset) !== _typeof(menuOffset)) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (Object(menuOffset) === menuOffset && typeof menuOffset !== 'function') {
|
|
69
|
+
return oldMenuOffset.top !== menuOffset.top || oldMenuOffset.left !== menuOffset.left;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return oldMenuOffset !== menuOffset;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* @param {object} params The parameters.
|
|
76
|
+
* @param {FloatingMenu~size} params.menuSize The size of the menu.
|
|
77
|
+
* @param {FloatingMenu~position} params.refPosition The position of the triggering element.
|
|
78
|
+
* @param {FloatingMenu~offset} [params.offset={ left: 0, top: 0 }] The position offset of the menu.
|
|
79
|
+
* @param {string} [params.direction=bottom] The menu direction.
|
|
80
|
+
* @param {number} [params.scrollX=0] The scroll position of the viewport.
|
|
81
|
+
* @param {number} [params.scrollY=0] The scroll position of the viewport.
|
|
82
|
+
* @param {FloatingMenu~container} [params.container] The size and position type of target element.
|
|
83
|
+
* @returns {FloatingMenu~offset} The position of the menu, relative to the top-left corner of the viewport.
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
var getFloatingPosition = function getFloatingPosition(_ref) {
|
|
89
|
+
var _DIRECTION_LEFT$DIREC;
|
|
90
|
+
|
|
91
|
+
var menuSize = _ref.menuSize,
|
|
92
|
+
_ref$refPosition = _ref.refPosition,
|
|
93
|
+
refPosition = _ref$refPosition === void 0 ? {} : _ref$refPosition,
|
|
94
|
+
_ref$offset = _ref.offset,
|
|
95
|
+
offset = _ref$offset === void 0 ? {} : _ref$offset,
|
|
96
|
+
_ref$direction = _ref.direction,
|
|
97
|
+
direction = _ref$direction === void 0 ? DIRECTION_BOTTOM : _ref$direction,
|
|
98
|
+
_ref$scrollX = _ref.scrollX,
|
|
99
|
+
pageXOffset = _ref$scrollX === void 0 ? 0 : _ref$scrollX,
|
|
100
|
+
_ref$scrollY = _ref.scrollY,
|
|
101
|
+
pageYOffset = _ref$scrollY === void 0 ? 0 : _ref$scrollY,
|
|
102
|
+
container = _ref.container;
|
|
103
|
+
var _refPosition$left = refPosition.left,
|
|
104
|
+
refLeft = _refPosition$left === void 0 ? 0 : _refPosition$left,
|
|
105
|
+
_refPosition$top = refPosition.top,
|
|
106
|
+
refTop = _refPosition$top === void 0 ? 0 : _refPosition$top,
|
|
107
|
+
_refPosition$right = refPosition.right,
|
|
108
|
+
refRight = _refPosition$right === void 0 ? 0 : _refPosition$right,
|
|
109
|
+
_refPosition$bottom = refPosition.bottom,
|
|
110
|
+
refBottom = _refPosition$bottom === void 0 ? 0 : _refPosition$bottom;
|
|
111
|
+
var scrollX = container.position !== 'static' ? 0 : pageXOffset;
|
|
112
|
+
var scrollY = container.position !== 'static' ? 0 : pageYOffset;
|
|
113
|
+
var relativeDiff = {
|
|
114
|
+
top: container.position !== 'static' ? container.rect.top : 0,
|
|
115
|
+
left: container.position !== 'static' ? container.rect.left : 0
|
|
116
|
+
};
|
|
117
|
+
var width = menuSize.width,
|
|
118
|
+
height = menuSize.height;
|
|
119
|
+
var _offset$top = offset.top,
|
|
120
|
+
top = _offset$top === void 0 ? 0 : _offset$top,
|
|
121
|
+
_offset$left = offset.left,
|
|
122
|
+
left = _offset$left === void 0 ? 0 : _offset$left;
|
|
123
|
+
var refCenterHorizontal = (refLeft + refRight) / 2;
|
|
124
|
+
var refCenterVertical = (refTop + refBottom) / 2;
|
|
125
|
+
return (_DIRECTION_LEFT$DIREC = {}, _defineProperty(_DIRECTION_LEFT$DIREC, DIRECTION_LEFT, function () {
|
|
126
|
+
return {
|
|
127
|
+
left: refLeft - width + scrollX - left - relativeDiff.left,
|
|
128
|
+
top: refCenterVertical - height / 2 + scrollY + top - 9 - relativeDiff.top
|
|
129
|
+
};
|
|
130
|
+
}), _defineProperty(_DIRECTION_LEFT$DIREC, DIRECTION_TOP, function () {
|
|
131
|
+
return {
|
|
132
|
+
left: refCenterHorizontal - width / 2 + scrollX + left - relativeDiff.left,
|
|
133
|
+
top: refTop - height + scrollY - top - relativeDiff.top
|
|
134
|
+
};
|
|
135
|
+
}), _defineProperty(_DIRECTION_LEFT$DIREC, DIRECTION_RIGHT, function () {
|
|
136
|
+
return {
|
|
137
|
+
left: refRight + scrollX + left - relativeDiff.left,
|
|
138
|
+
top: refCenterVertical - height / 2 + scrollY + top + 3 - relativeDiff.top
|
|
139
|
+
};
|
|
140
|
+
}), _defineProperty(_DIRECTION_LEFT$DIREC, DIRECTION_BOTTOM, function () {
|
|
141
|
+
return {
|
|
142
|
+
left: refCenterHorizontal - width / 2 + scrollX + left - relativeDiff.left,
|
|
143
|
+
top: refBottom + scrollY + top - relativeDiff.top
|
|
144
|
+
};
|
|
145
|
+
}), _DIRECTION_LEFT$DIREC)[direction]();
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* A menu that is detached from the triggering element.
|
|
149
|
+
* Useful when the container of the triggering element cannot have `overflow:visible` style, etc.
|
|
150
|
+
*/
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
var FloatingMenu = /*#__PURE__*/function (_React$Component) {
|
|
154
|
+
_inherits(FloatingMenu, _React$Component);
|
|
155
|
+
|
|
156
|
+
var _super = _createSuper(FloatingMenu);
|
|
157
|
+
|
|
158
|
+
function FloatingMenu() {
|
|
159
|
+
var _this;
|
|
160
|
+
|
|
161
|
+
_classCallCheck(this, FloatingMenu);
|
|
162
|
+
|
|
163
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
164
|
+
args[_key] = arguments[_key];
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
168
|
+
|
|
169
|
+
_defineProperty(_assertThisInitialized(_this), "_placeInProgress", false);
|
|
170
|
+
|
|
171
|
+
_defineProperty(_assertThisInitialized(_this), "state", {
|
|
172
|
+
/**
|
|
173
|
+
* The position of the menu, relative to the top-left corner of the viewport.
|
|
174
|
+
* @type {FloatingMenu~offset}
|
|
175
|
+
*/
|
|
176
|
+
floatingPosition: undefined
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
_defineProperty(_assertThisInitialized(_this), "_menuContainer", null);
|
|
180
|
+
|
|
181
|
+
_defineProperty(_assertThisInitialized(_this), "_menuBody", null);
|
|
182
|
+
|
|
183
|
+
_defineProperty(_assertThisInitialized(_this), "startSentinel", /*#__PURE__*/React__default.createRef());
|
|
184
|
+
|
|
185
|
+
_defineProperty(_assertThisInitialized(_this), "endSentinel", /*#__PURE__*/React__default.createRef());
|
|
186
|
+
|
|
187
|
+
_defineProperty(_assertThisInitialized(_this), "_updateMenuSize", function () {
|
|
188
|
+
var prevProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
189
|
+
var isAdjustment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
190
|
+
var menuBody = _this._menuBody;
|
|
191
|
+
process.env.NODE_ENV !== "production" ? warning(menuBody, 'The DOM node for menu body for calculating its position is not available. Skipping...') : void 0;
|
|
192
|
+
|
|
193
|
+
if (!menuBody) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
var _prevProps$menuOffset = prevProps.menuOffset,
|
|
198
|
+
oldMenuOffset = _prevProps$menuOffset === void 0 ? {} : _prevProps$menuOffset,
|
|
199
|
+
oldMenuDirection = prevProps.menuDirection;
|
|
200
|
+
var _this$props = _this.props,
|
|
201
|
+
_this$props$menuOffse = _this$props.menuOffset,
|
|
202
|
+
menuOffset = _this$props$menuOffse === void 0 ? {} : _this$props$menuOffse,
|
|
203
|
+
menuDirection = _this$props.menuDirection;
|
|
204
|
+
|
|
205
|
+
if (hasChangeInOffset(oldMenuOffset, menuOffset) || oldMenuDirection !== menuDirection || isAdjustment) {
|
|
206
|
+
var _this$props2 = _this.props,
|
|
207
|
+
flipped = _this$props2.flipped,
|
|
208
|
+
triggerRef = _this$props2.triggerRef,
|
|
209
|
+
updateOrientation = _this$props2.updateOrientation;
|
|
210
|
+
var triggerEl = triggerRef.current;
|
|
211
|
+
var menuSize = menuBody.getBoundingClientRect();
|
|
212
|
+
var refPosition = triggerEl && triggerEl.getBoundingClientRect();
|
|
213
|
+
var offset = typeof menuOffset !== 'function' ? menuOffset : menuOffset(menuBody, menuDirection, triggerEl, flipped); // Optional function to allow parent component to check
|
|
214
|
+
// if the orientation needs to be changed based on params
|
|
215
|
+
|
|
216
|
+
if (updateOrientation) {
|
|
217
|
+
updateOrientation({
|
|
218
|
+
menuSize: menuSize,
|
|
219
|
+
refPosition: refPosition,
|
|
220
|
+
direction: menuDirection,
|
|
221
|
+
offset: offset,
|
|
222
|
+
scrollX: window.pageXOffset,
|
|
223
|
+
scrollY: window.pageYOffset,
|
|
224
|
+
container: {
|
|
225
|
+
rect: _this.props.target().getBoundingClientRect(),
|
|
226
|
+
position: getComputedStyle(_this.props.target()).position
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
} // Skips if either in the following condition:
|
|
230
|
+
// a) Menu body has `display:none`
|
|
231
|
+
// b) `menuOffset` as a callback returns `undefined` (The callback saw that it couldn't calculate the value)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
if (menuSize.width > 0 && menuSize.height > 0 || !offset) {
|
|
235
|
+
_this.setState({
|
|
236
|
+
floatingPosition: getFloatingPosition({
|
|
237
|
+
menuSize: menuSize,
|
|
238
|
+
refPosition: refPosition,
|
|
239
|
+
direction: menuDirection,
|
|
240
|
+
offset: offset,
|
|
241
|
+
scrollX: window.pageXOffset,
|
|
242
|
+
scrollY: window.pageYOffset,
|
|
243
|
+
container: {
|
|
244
|
+
rect: _this.props.target().getBoundingClientRect(),
|
|
245
|
+
position: getComputedStyle(_this.props.target()).position
|
|
246
|
+
}
|
|
247
|
+
})
|
|
248
|
+
}, function () {
|
|
249
|
+
if (!isAdjustment) {
|
|
250
|
+
var newMenuSize = menuBody.getBoundingClientRect();
|
|
251
|
+
|
|
252
|
+
if (newMenuSize !== menuSize) {
|
|
253
|
+
_this._updateMenuSize(_this.props, true);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
_defineProperty(_assertThisInitialized(_this), "_focusMenuContent", function (menuBody) {
|
|
262
|
+
var primaryFocusNode = menuBody.querySelector(_this.props.selectorPrimaryFocus || null);
|
|
263
|
+
var tabbableNode = menuBody.querySelector(selectorTabbable);
|
|
264
|
+
var focusableNode = menuBody.querySelector(selectorFocusable);
|
|
265
|
+
var focusTarget = primaryFocusNode || // User defined focusable node
|
|
266
|
+
tabbableNode || // First sequentially focusable node
|
|
267
|
+
focusableNode || // First programmatic focusable node
|
|
268
|
+
menuBody;
|
|
269
|
+
|
|
270
|
+
if (_this.props.focusTrap) {
|
|
271
|
+
focusTarget.focus();
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if (focusTarget === menuBody && process.env.NODE_ENV !== "production") {
|
|
275
|
+
process.env.NODE_ENV !== "production" ? warning(focusableNode === null, 'Floating Menus must have at least a programmatically focusable child. ' + 'This can be accomplished by adding tabIndex="-1" to the content element.') : void 0;
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
_defineProperty(_assertThisInitialized(_this), "_menuRef", function (menuBody) {
|
|
280
|
+
var menuRef = _this.props.menuRef;
|
|
281
|
+
_this._placeInProgress = !!menuBody;
|
|
282
|
+
menuRef && menuRef(_this._menuBody = menuBody);
|
|
283
|
+
|
|
284
|
+
if (menuBody) {
|
|
285
|
+
_this._updateMenuSize();
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
_defineProperty(_assertThisInitialized(_this), "_getChildrenWithProps", function () {
|
|
290
|
+
var _this$props3 = _this.props,
|
|
291
|
+
styles = _this$props3.styles,
|
|
292
|
+
children = _this$props3.children;
|
|
293
|
+
var pos = _this.state.floatingPosition; // If no pos available, we need to hide the element (offscreen to the left)
|
|
294
|
+
// This is done so we can measure the content before positioning it correctly.
|
|
295
|
+
|
|
296
|
+
var positioningStyle = pos ? {
|
|
297
|
+
left: "".concat(pos.left, "px"),
|
|
298
|
+
top: "".concat(pos.top, "px"),
|
|
299
|
+
right: 'auto'
|
|
300
|
+
} : {
|
|
301
|
+
visibility: 'hidden',
|
|
302
|
+
top: '0px'
|
|
303
|
+
};
|
|
304
|
+
return /*#__PURE__*/React__default.cloneElement(children, {
|
|
305
|
+
ref: _this._menuRef,
|
|
306
|
+
style: _objectSpread2(_objectSpread2(_objectSpread2({}, styles), positioningStyle), {}, {
|
|
307
|
+
position: 'absolute',
|
|
308
|
+
opacity: 1
|
|
309
|
+
})
|
|
310
|
+
});
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
_defineProperty(_assertThisInitialized(_this), "handleBlur", function (_ref2) {
|
|
314
|
+
var oldActiveNode = _ref2.target,
|
|
315
|
+
currentActiveNode = _ref2.relatedTarget;
|
|
316
|
+
|
|
317
|
+
if (currentActiveNode && oldActiveNode) {
|
|
318
|
+
var startSentinelNode = _this.startSentinel.current;
|
|
319
|
+
var endSentinelNode = _this.endSentinel.current;
|
|
320
|
+
wrapFocus({
|
|
321
|
+
bodyNode: _this._menuBody,
|
|
322
|
+
startSentinelNode: startSentinelNode,
|
|
323
|
+
endSentinelNode: endSentinelNode,
|
|
324
|
+
currentActiveNode: currentActiveNode,
|
|
325
|
+
oldActiveNode: oldActiveNode
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
return _this;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
_createClass(FloatingMenu, [{
|
|
334
|
+
key: "componentWillUnmount",
|
|
335
|
+
value: function componentWillUnmount() {
|
|
336
|
+
this.hResize.release();
|
|
337
|
+
}
|
|
338
|
+
}, {
|
|
339
|
+
key: "componentDidMount",
|
|
340
|
+
value: function componentDidMount() {
|
|
341
|
+
var _this2 = this;
|
|
342
|
+
|
|
343
|
+
this.hResize = OptimizedResize.add(function () {
|
|
344
|
+
_this2._updateMenuSize();
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Set focus on floating menu content after menu placement.
|
|
349
|
+
* @param {Element} menuBody The DOM element of the menu body.
|
|
350
|
+
* @private
|
|
351
|
+
*/
|
|
352
|
+
|
|
353
|
+
}, {
|
|
354
|
+
key: "componentDidUpdate",
|
|
355
|
+
value: function componentDidUpdate(prevProps) {
|
|
356
|
+
this._updateMenuSize(prevProps);
|
|
357
|
+
|
|
358
|
+
var onPlace = this.props.onPlace;
|
|
359
|
+
|
|
360
|
+
if (this._placeInProgress && this.state.floatingPosition) {
|
|
361
|
+
if (this._menuBody && !this._menuBody.contains(document.activeElement)) {
|
|
362
|
+
this._focusMenuContent(this._menuBody);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
if (typeof onPlace === 'function') {
|
|
366
|
+
onPlace(this._menuBody);
|
|
367
|
+
this._placeInProgress = false;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* A callback for called when menu body is mounted or unmounted.
|
|
373
|
+
* @param {Element} menuBody The menu body being mounted. `null` if the menu body is being unmounted.
|
|
374
|
+
*/
|
|
375
|
+
|
|
376
|
+
}, {
|
|
377
|
+
key: "render",
|
|
378
|
+
value: function render() {
|
|
379
|
+
var prefix = this.context;
|
|
380
|
+
|
|
381
|
+
if (typeof document !== 'undefined') {
|
|
382
|
+
var _this$props4 = this.props,
|
|
383
|
+
focusTrap = _this$props4.focusTrap,
|
|
384
|
+
target = _this$props4.target;
|
|
385
|
+
return /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React__default.createElement("div", {
|
|
386
|
+
onBlur: focusTrap ? this.handleBlur : null
|
|
387
|
+
}, /*#__PURE__*/React__default.createElement("span", {
|
|
388
|
+
ref: this.startSentinel,
|
|
389
|
+
tabIndex: "0",
|
|
390
|
+
role: "link",
|
|
391
|
+
className: "".concat(prefix, "--visually-hidden")
|
|
392
|
+
}, "Focus sentinel"), this._getChildrenWithProps(), /*#__PURE__*/React__default.createElement("span", {
|
|
393
|
+
ref: this.endSentinel,
|
|
394
|
+
tabIndex: "0",
|
|
395
|
+
role: "link",
|
|
396
|
+
className: "".concat(prefix, "--visually-hidden")
|
|
397
|
+
}, "Focus sentinel")), !target ? document.body : target());
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
return null;
|
|
401
|
+
}
|
|
402
|
+
}]);
|
|
403
|
+
|
|
404
|
+
return FloatingMenu;
|
|
405
|
+
}(React__default.Component);
|
|
406
|
+
|
|
407
|
+
_defineProperty(FloatingMenu, "contextType", PrefixContext);
|
|
408
|
+
|
|
409
|
+
_defineProperty(FloatingMenu, "propTypes", {
|
|
410
|
+
/**
|
|
411
|
+
* Contents to put into the floating menu.
|
|
412
|
+
*/
|
|
413
|
+
children: PropTypes.object,
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* `true` if the menu alignment should be flipped.
|
|
417
|
+
*/
|
|
418
|
+
flipped: PropTypes.bool,
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Enable or disable focus trap behavior
|
|
422
|
+
*/
|
|
423
|
+
focusTrap: PropTypes.bool,
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* Where to put the tooltip, relative to the trigger button.
|
|
427
|
+
*/
|
|
428
|
+
menuDirection: PropTypes.oneOf([DIRECTION_LEFT, DIRECTION_TOP, DIRECTION_RIGHT, DIRECTION_BOTTOM]),
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* The adjustment of the floating menu position, considering the position of dropdown arrow, etc.
|
|
432
|
+
*/
|
|
433
|
+
menuOffset: PropTypes.oneOfType([PropTypes.shape({
|
|
434
|
+
top: PropTypes.number,
|
|
435
|
+
left: PropTypes.number
|
|
436
|
+
}), PropTypes.func]),
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* The callback called when the menu body has been mounted to/will be unmounted from the DOM.
|
|
440
|
+
*/
|
|
441
|
+
menuRef: PropTypes.func,
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* The callback called when the menu body has been mounted and positioned.
|
|
445
|
+
*/
|
|
446
|
+
onPlace: PropTypes.func,
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Specify a CSS selector that matches the DOM element that should
|
|
450
|
+
* be focused when the Modal opens
|
|
451
|
+
*/
|
|
452
|
+
selectorPrimaryFocus: PropTypes.string,
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* The additional styles to put to the floating menu.
|
|
456
|
+
*/
|
|
457
|
+
styles: PropTypes.object,
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* The query selector indicating where the floating menu body should be placed.
|
|
461
|
+
*/
|
|
462
|
+
target: PropTypes.func,
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* The element ref of the tooltip's trigger button.
|
|
466
|
+
*/
|
|
467
|
+
triggerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
|
|
468
|
+
current: PropTypes.any
|
|
469
|
+
})]),
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* Optional function to change orientation of tooltip based on parent
|
|
473
|
+
*/
|
|
474
|
+
updateOrientation: PropTypes.func
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
_defineProperty(FloatingMenu, "defaultProps", {
|
|
478
|
+
menuOffset: {},
|
|
479
|
+
menuDirection: DIRECTION_BOTTOM,
|
|
480
|
+
updateOrientation: null
|
|
481
|
+
});
|
|
482
|
+
|
|
483
|
+
export { DIRECTION_BOTTOM, DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_TOP, FloatingMenu as default };
|