@amboss/design-system 4.8.2-canary.1 → 4.9.1
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/build/cjs/components/AIButton/AIButton.js +1 -1
- package/build/cjs/components/AccessCardItem/AccessCardItem.js +1 -1
- package/build/cjs/components/Avatar/Avatar.js +1 -1
- package/build/cjs/components/BulkActionsToolbar/BulkActionsToolbar.js +1 -1
- package/build/cjs/components/Button/Button.js +1 -1
- package/build/cjs/components/Card/CardHeader/CardHeader.js +1 -1
- package/build/cjs/components/CatalogCard/CatalogCard.d.ts +5 -1
- package/build/cjs/components/CatalogCard/CatalogCard.js +1 -1
- package/build/cjs/components/CheckboxCard/CheckboxCard.js +1 -1
- package/build/cjs/components/Collapsible/Collapsible.js +1 -1
- package/build/cjs/components/Container/Container.js +1 -1
- package/build/cjs/components/Content/ContentBadge/ContentBadge.js +1 -1
- package/build/cjs/components/Content/ContentBox/constants.js +1 -1
- package/build/cjs/components/Content/ContentBox/types.d.ts +1 -1
- package/build/cjs/components/Content/ContentCheckbox/ContentCheckbox.js +1 -1
- package/build/cjs/components/Content/ContentLink/ContentLink.js +1 -1
- package/build/cjs/components/Content/ContentPictogramButton/ContentPictogramButton.js +1 -1
- package/build/cjs/components/Content/ContentTableModal/ContentTableModal.js +2 -2
- package/build/cjs/components/Content/ContentText/ContentText.d.ts +1 -1
- package/build/cjs/components/Content/ContentText/ContentText.js +1 -1
- package/build/cjs/components/Content/DosageButton/DosageButton.d.ts +1 -1
- package/build/cjs/components/CountButton/CountButton.js +1 -1
- package/build/cjs/components/DataTable/header/SortableCellContent.js +1 -1
- package/build/cjs/components/DataTable/header/TableHeader.js +1 -1
- package/build/cjs/components/DataTable/useDataTableSelectRows.d.ts +2 -2
- package/build/cjs/components/DataTable/useDataTableSelectRows.js +1 -1
- package/build/cjs/components/DataTable/useDataTableSort.d.ts +3 -3
- package/build/cjs/components/Divider/Divider.js +1 -1
- package/build/cjs/components/DropdownMenu/DropdownMenu.d.ts +5 -1
- package/build/cjs/components/DropdownMenu/DropdownMenu.js +1 -1
- package/build/cjs/components/DropdownMenu/Menu.d.ts +1 -1
- package/build/cjs/components/DropdownMenu/Menu.js +1 -1
- package/build/cjs/components/EntityList/BaseEntityList.js +1 -1
- package/build/cjs/components/EntityList/EntityItemBody.d.ts +3 -1
- package/build/cjs/components/EntityList/EntityItemBody.js +1 -1
- package/build/cjs/components/EntityList/EntityListItem.js +1 -1
- package/build/cjs/components/EntityTree/BaseEntityTree.d.ts +3 -2
- package/build/cjs/components/EntityTree/BaseEntityTree.js +1 -1
- package/build/cjs/components/EntityTree/EntityTreeItem.js +1 -1
- package/build/cjs/components/EntityTree/EntityTreeItemExpandButton.d.ts +3 -1
- package/build/cjs/components/EntityTree/EntityTreeItemExpandButton.js +1 -1
- package/build/cjs/components/EntityTree/tree.d.ts +1 -1
- package/build/cjs/components/EntityTree/tree.js +1 -1
- package/build/cjs/components/Form/Checkbox/Checkbox.js +1 -1
- package/build/cjs/components/Form/Combobox/Combobox.js +1 -1
- package/build/cjs/components/Form/Combobox/MultiSelect.d.ts +1 -1
- package/build/cjs/components/Form/Combobox/MultiSelect.js +1 -1
- package/build/cjs/components/Form/Combobox/MultiSelectReducer.d.ts +1 -1
- package/build/cjs/components/Form/Combobox/OptionsList.d.ts +6 -3
- package/build/cjs/components/Form/Combobox/OptionsList.js +1 -1
- package/build/cjs/components/Form/Combobox/SingleSelect.d.ts +1 -1
- package/build/cjs/components/Form/Combobox/SingleSelect.js +1 -1
- package/build/cjs/components/Form/Combobox/constants.js +1 -1
- package/build/cjs/components/Form/FormFieldGroup/FormFieldGroup.js +1 -1
- package/build/cjs/components/Form/Input/Input.js +1 -1
- package/build/cjs/components/Form/PasswordInput/PasswordInput.js +1 -1
- package/build/cjs/components/Form/PasswordInput/PasswordInputButton.d.ts +2 -2
- package/build/cjs/components/Form/PasswordInput/PasswordInputButton.js +1 -1
- package/build/cjs/components/Form/Radio/Radio.js +1 -1
- package/build/cjs/components/Form/RangeInput/RangeInput.js +1 -1
- package/build/cjs/components/Form/SearchInput/SearchInput.js +1 -1
- package/build/cjs/components/Form/SegmentedControl/-types.d.ts +2 -2
- package/build/cjs/components/Form/SegmentedControl/SegmentedControl.js +1 -1
- package/build/cjs/components/Form/SegmentedControl/SegmentedControlOption.js +1 -1
- package/build/cjs/components/Form/Select/Select.js +1 -1
- package/build/cjs/components/Form/Select/SelectWithCustomTrigger.js +1 -1
- package/build/cjs/components/Form/Select/useTypeAheadSearch.js +1 -1
- package/build/cjs/components/Form/Textarea/Textarea.js +1 -1
- package/build/cjs/components/Form/Toggle/Toggle.js +1 -1
- package/build/cjs/components/Form/ToggleButton/ToggleButton.js +1 -1
- package/build/cjs/components/Grid/Grid.js +1 -1
- package/build/cjs/components/Icon/Icon.js +1 -1
- package/build/cjs/components/Image/Image.js +1 -1
- package/build/cjs/components/Inline/Inline.js +1 -1
- package/build/cjs/components/Internal/BaseTag/BaseTag.d.ts +5 -1
- package/build/cjs/components/Internal/BaseTag/BaseTag.js +1 -1
- package/build/cjs/components/Internal/Float/Float.d.ts +1 -1
- package/build/cjs/components/Internal/Float/Float.js +1 -1
- package/build/cjs/components/Internal/LayoutFloat/LayoutFloatDragHandleGuard.d.ts +3 -1
- package/build/cjs/components/Internal/LayoutFloat/LayoutFloatDragHandleGuard.js +1 -1
- package/build/cjs/components/Internal/PanelHeader/PanelHeader.js +1 -1
- package/build/cjs/components/Internal/Sandwich/useSandwichContext.d.ts +1 -1
- package/build/cjs/components/Layout/-constants.d.ts +12 -0
- package/build/cjs/components/Layout/-constants.js +1 -1
- package/build/cjs/components/Layout/Layout.js +1 -1
- package/build/cjs/components/Layout/LayoutCssVars.d.ts +1 -1
- package/build/cjs/components/Layout/LeftPanel/LeftBarToggle.js +1 -1
- package/build/cjs/components/Layout/Split/MobileSplitView/useMobileSplitStack.d.ts +1 -1
- package/build/cjs/components/Layout/context.d.ts +1 -1
- package/build/cjs/components/Layout/registry.d.ts +4 -4
- package/build/cjs/components/Layout/usePanelDockedSlide.d.ts +10 -0
- package/build/cjs/components/Layout/usePanelDockedSlide.js +1 -1
- package/build/cjs/components/Lightbox/Lightbox.js +2 -2
- package/build/cjs/components/Link/Link.js +1 -1
- package/build/cjs/components/MediaItem/MediaItem.d.ts +1 -0
- package/build/cjs/components/MediaItem/MediaItem.js +1 -1
- package/build/cjs/components/MediaItem/MediaItemSkeleton.js +1 -1
- package/build/cjs/components/MediaViewerBar/MediaViewerBar.js +1 -1
- package/build/cjs/components/MediaViewerCarousel/CarouselThumbnail/CarouselThumbnail.js +1 -1
- package/build/cjs/components/MediaViewerCarousel/MediaCarousel/MediaCarousel.js +1 -1
- package/build/cjs/components/Notification/Notification.d.ts +1 -1
- package/build/cjs/components/Notification/Notification.js +1 -1
- package/build/cjs/components/Patterns/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/build/cjs/components/Patterns/EmptyState/EmptyState.js +1 -1
- package/build/cjs/components/Patterns/Modal/Modal.js +2 -2
- package/build/cjs/components/PictogramButton/PictogramButton.js +1 -1
- package/build/cjs/components/Portal/Portal.d.ts +2 -2
- package/build/cjs/components/PromptButton/PromptButton.js +1 -1
- package/build/cjs/components/PromptInput/AutocompleteList.d.ts +1 -1
- package/build/cjs/components/PromptInput/AutocompleteList.js +1 -1
- package/build/cjs/components/PromptInput/PromptInput.js +1 -1
- package/build/cjs/components/PromptInput/PromptTextArea.js +1 -1
- package/build/cjs/components/RadioCard/RadioCard.js +1 -1
- package/build/cjs/components/RoundButton/RoundButton.js +1 -1
- package/build/cjs/components/SearchResult/SearchResult.js +1 -1
- package/build/cjs/components/SegmentedProgressBar/-utils/getPercentagesForVariants.d.ts +4 -2
- package/build/cjs/components/SegmentedProgressBar/-utils/getPercentagesForVariants.js +1 -1
- package/build/cjs/components/SegmentedProgressBar/LegendPopover.d.ts +2 -1
- package/build/cjs/components/SegmentedProgressBar/LegendPopover.js +1 -1
- package/build/cjs/components/SegmentedProgressBar/SegmentedProgressBar.js +1 -1
- package/build/cjs/components/ShadowWebComponent/ShadowWebComponent.js +1 -1
- package/build/cjs/components/Sheet/Sheet.d.ts +1 -1
- package/build/cjs/components/Sheet/Sheet.js +1 -1
- package/build/cjs/components/SplashCard/SplashCard.js +1 -1
- package/build/cjs/components/SplashCardMedia/SplashCardMedia.js +1 -1
- package/build/cjs/components/Stack/Stack.js +1 -1
- package/build/cjs/components/SubThemeProvider/SubThemeContext.d.ts +1 -1
- package/build/cjs/components/SubThemeProvider/SubThemeProvider.d.ts +2 -1
- package/build/cjs/components/SubThemeProvider/SubThemeProvider.js +1 -1
- package/build/cjs/components/Tabs/Tabs.js +1 -1
- package/build/cjs/components/TagGroup/TagGroup.js +1 -1
- package/build/cjs/components/Toast/Toast.d.ts +2 -1
- package/build/cjs/components/Toast/Toast.js +1 -1
- package/build/cjs/components/Toast/ToastProvider.d.ts +5 -3
- package/build/cjs/components/Toggletip/BasePopover.js +1 -1
- package/build/cjs/components/Tooltip/BaseTooltip.js +1 -1
- package/build/cjs/components/Tooltip/TooltipContent.d.ts +13 -1
- package/build/cjs/components/Tooltip/TooltipContent.js +1 -1
- package/build/cjs/components/Tooltip/utils.d.ts +0 -1
- package/build/cjs/components/Tooltip/utils.js +1 -1
- package/build/cjs/components/Typography/StyledText/StyledText.d.ts +1 -1
- package/build/cjs/components/Typography/StyledText/StyledText.js +1 -1
- package/build/cjs/components/Typography/Text/Text.d.ts +1 -1
- package/build/cjs/components/Typography/Text/Text.js +1 -1
- package/build/cjs/components/Typography/Text/TextSkeleton.js +1 -1
- package/build/cjs/components/Typography/TextClamped/TextClamped.js +1 -1
- package/build/cjs/components/UserHighlightTooltip/UserHighlightTooltip.d.ts +1 -1
- package/build/cjs/components/UserHighlightTooltip/UserHighlightTooltip.js +1 -1
- package/build/cjs/components/Utilities/ContainerQuery/ContainerQueryContext.d.ts +1 -1
- package/build/cjs/components/Utilities/Expandable/Expandable.js +1 -1
- package/build/cjs/components/Utilities/FloatingPosition/utils.d.ts +1 -1
- package/build/cjs/components/VirtualScrollList/VirtualScrollList.d.ts +1 -1
- package/build/cjs/components/VirtualScrollList/VirtualScrollList.js +1 -1
- package/build/cjs/components/VirtualScrollList/VirtualScrollListReducer.d.ts +2 -2
- package/build/cjs/components/VirtualScrollList/VirtualScrollListReducer.js +1 -1
- package/build/cjs/shared/appendId.d.ts +1 -1
- package/build/cjs/shared/forwardRefPolymorphic.d.ts +2 -0
- package/build/cjs/shared/forwardRefPolymorphic.js +1 -0
- package/build/cjs/shared/intl/translations/de.json +7 -1
- package/build/cjs/shared/intl/translations/en.json +7 -1
- package/build/cjs/shared/mediaQueries.d.ts +3 -3
- package/build/cjs/shared/mixins/Button/getPillStyles.js +1 -1
- package/build/cjs/shared/parseDurationMs.d.ts +2 -0
- package/build/cjs/shared/parseDurationMs.js +1 -0
- package/build/cjs/shared/useAutoPosition.js +1 -1
- package/build/cjs/shared/useHover.d.ts +1 -1
- package/build/cjs/shared/useHover.js +1 -1
- package/build/cjs/shared/useOutsideClickDeactivatesWithinPortal.d.ts +1 -1
- package/build/cjs/shared/useOutsideClickDeactivatesWithinPortal.js +1 -1
- package/build/cjs/web-tokens/_colors.json +12 -12
- package/build/cjs/web-tokens/_sizes.json +55 -55
- package/build/cjs/web-tokens/assets/icons.json +4 -5
- package/build/cjs/web-tokens/assets/icons16.json +4 -5
- package/build/cjs/web-tokens/visualConfig.d.ts +14 -0
- package/build/cjs/web-tokens/visualConfig.js +1 -1
- package/build/esm/components/AIButton/AIButton.js +1 -1
- package/build/esm/components/AccessCardItem/AccessCardItem.js +1 -1
- package/build/esm/components/Avatar/Avatar.js +1 -1
- package/build/esm/components/BulkActionsToolbar/BulkActionsToolbar.js +1 -1
- package/build/esm/components/Button/Button.js +1 -1
- package/build/esm/components/Card/CardHeader/CardHeader.js +1 -1
- package/build/esm/components/CatalogCard/CatalogCard.d.ts +5 -1
- package/build/esm/components/CatalogCard/CatalogCard.js +1 -1
- package/build/esm/components/CheckboxCard/CheckboxCard.js +1 -1
- package/build/esm/components/Collapsible/Collapsible.js +1 -1
- package/build/esm/components/Container/Container.js +1 -1
- package/build/esm/components/Content/ContentBadge/ContentBadge.js +1 -1
- package/build/esm/components/Content/ContentBox/constants.js +1 -1
- package/build/esm/components/Content/ContentBox/types.d.ts +1 -1
- package/build/esm/components/Content/ContentCheckbox/ContentCheckbox.js +1 -1
- package/build/esm/components/Content/ContentLink/ContentLink.js +1 -1
- package/build/esm/components/Content/ContentPictogramButton/ContentPictogramButton.js +1 -1
- package/build/esm/components/Content/ContentTableModal/ContentTableModal.js +2 -2
- package/build/esm/components/Content/ContentText/ContentText.d.ts +1 -1
- package/build/esm/components/Content/ContentText/ContentText.js +1 -1
- package/build/esm/components/Content/DosageButton/DosageButton.d.ts +1 -1
- package/build/esm/components/CountButton/CountButton.js +1 -1
- package/build/esm/components/DataTable/header/SortableCellContent.js +1 -1
- package/build/esm/components/DataTable/header/TableHeader.js +1 -1
- package/build/esm/components/DataTable/useDataTableSelectRows.d.ts +2 -2
- package/build/esm/components/DataTable/useDataTableSelectRows.js +1 -1
- package/build/esm/components/DataTable/useDataTableSort.d.ts +3 -3
- package/build/esm/components/Divider/Divider.js +1 -1
- package/build/esm/components/DropdownMenu/DropdownMenu.d.ts +5 -1
- package/build/esm/components/DropdownMenu/DropdownMenu.js +1 -1
- package/build/esm/components/DropdownMenu/Menu.d.ts +1 -1
- package/build/esm/components/DropdownMenu/Menu.js +1 -1
- package/build/esm/components/EntityList/BaseEntityList.js +1 -1
- package/build/esm/components/EntityList/EntityItemBody.d.ts +3 -1
- package/build/esm/components/EntityList/EntityItemBody.js +1 -1
- package/build/esm/components/EntityList/EntityListItem.js +1 -1
- package/build/esm/components/EntityTree/BaseEntityTree.d.ts +3 -2
- package/build/esm/components/EntityTree/BaseEntityTree.js +1 -1
- package/build/esm/components/EntityTree/EntityTreeItem.js +1 -1
- package/build/esm/components/EntityTree/EntityTreeItemExpandButton.d.ts +3 -1
- package/build/esm/components/EntityTree/EntityTreeItemExpandButton.js +1 -1
- package/build/esm/components/EntityTree/tree.d.ts +1 -1
- package/build/esm/components/EntityTree/tree.js +1 -1
- package/build/esm/components/Form/Checkbox/Checkbox.js +1 -1
- package/build/esm/components/Form/Combobox/Combobox.js +1 -1
- package/build/esm/components/Form/Combobox/MultiSelect.d.ts +1 -1
- package/build/esm/components/Form/Combobox/MultiSelect.js +1 -1
- package/build/esm/components/Form/Combobox/MultiSelectReducer.d.ts +1 -1
- package/build/esm/components/Form/Combobox/OptionsList.d.ts +6 -3
- package/build/esm/components/Form/Combobox/OptionsList.js +1 -1
- package/build/esm/components/Form/Combobox/SingleSelect.d.ts +1 -1
- package/build/esm/components/Form/Combobox/SingleSelect.js +1 -1
- package/build/esm/components/Form/Combobox/constants.js +1 -1
- package/build/esm/components/Form/FormFieldGroup/FormFieldGroup.js +1 -1
- package/build/esm/components/Form/Input/Input.js +1 -1
- package/build/esm/components/Form/PasswordInput/PasswordInput.js +1 -1
- package/build/esm/components/Form/PasswordInput/PasswordInputButton.d.ts +2 -2
- package/build/esm/components/Form/PasswordInput/PasswordInputButton.js +1 -1
- package/build/esm/components/Form/Radio/Radio.js +1 -1
- package/build/esm/components/Form/RangeInput/RangeInput.js +1 -1
- package/build/esm/components/Form/SearchInput/SearchInput.js +1 -1
- package/build/esm/components/Form/SegmentedControl/-types.d.ts +2 -2
- package/build/esm/components/Form/SegmentedControl/SegmentedControl.js +1 -1
- package/build/esm/components/Form/SegmentedControl/SegmentedControlOption.js +1 -1
- package/build/esm/components/Form/Select/Select.js +1 -1
- package/build/esm/components/Form/Select/SelectWithCustomTrigger.js +1 -1
- package/build/esm/components/Form/Select/useTypeAheadSearch.js +1 -1
- package/build/esm/components/Form/Textarea/Textarea.js +1 -1
- package/build/esm/components/Form/Toggle/Toggle.js +1 -1
- package/build/esm/components/Form/ToggleButton/ToggleButton.js +1 -1
- package/build/esm/components/Grid/Grid.js +1 -1
- package/build/esm/components/Icon/Icon.js +1 -1
- package/build/esm/components/Image/Image.js +1 -1
- package/build/esm/components/Inline/Inline.js +1 -1
- package/build/esm/components/Internal/BaseTag/BaseTag.d.ts +5 -1
- package/build/esm/components/Internal/BaseTag/BaseTag.js +1 -1
- package/build/esm/components/Internal/Float/Float.d.ts +1 -1
- package/build/esm/components/Internal/Float/Float.js +1 -1
- package/build/esm/components/Internal/LayoutFloat/LayoutFloatDragHandleGuard.d.ts +3 -1
- package/build/esm/components/Internal/LayoutFloat/LayoutFloatDragHandleGuard.js +1 -1
- package/build/esm/components/Internal/PanelHeader/PanelHeader.js +1 -1
- package/build/esm/components/Internal/Sandwich/useSandwichContext.d.ts +1 -1
- package/build/esm/components/Layout/-constants.d.ts +12 -0
- package/build/esm/components/Layout/-constants.js +1 -1
- package/build/esm/components/Layout/Layout.js +1 -1
- package/build/esm/components/Layout/LayoutCssVars.d.ts +1 -1
- package/build/esm/components/Layout/LeftPanel/LeftBarToggle.js +1 -1
- package/build/esm/components/Layout/Split/MobileSplitView/useMobileSplitStack.d.ts +1 -1
- package/build/esm/components/Layout/context.d.ts +1 -1
- package/build/esm/components/Layout/registry.d.ts +4 -4
- package/build/esm/components/Layout/usePanelDockedSlide.d.ts +10 -0
- package/build/esm/components/Layout/usePanelDockedSlide.js +1 -1
- package/build/esm/components/Lightbox/Lightbox.js +2 -2
- package/build/esm/components/Link/Link.js +1 -1
- package/build/esm/components/MediaItem/MediaItem.d.ts +1 -0
- package/build/esm/components/MediaItem/MediaItem.js +1 -1
- package/build/esm/components/MediaItem/MediaItemSkeleton.js +1 -1
- package/build/esm/components/MediaViewerBar/MediaViewerBar.js +1 -1
- package/build/esm/components/MediaViewerCarousel/CarouselThumbnail/CarouselThumbnail.js +1 -1
- package/build/esm/components/MediaViewerCarousel/MediaCarousel/MediaCarousel.js +1 -1
- package/build/esm/components/Notification/Notification.d.ts +1 -1
- package/build/esm/components/Notification/Notification.js +1 -1
- package/build/esm/components/Patterns/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/build/esm/components/Patterns/EmptyState/EmptyState.js +1 -1
- package/build/esm/components/Patterns/Modal/Modal.js +2 -2
- package/build/esm/components/PictogramButton/PictogramButton.js +1 -1
- package/build/esm/components/Portal/Portal.d.ts +2 -2
- package/build/esm/components/PromptButton/PromptButton.js +1 -1
- package/build/esm/components/PromptInput/AutocompleteList.d.ts +1 -1
- package/build/esm/components/PromptInput/AutocompleteList.js +1 -1
- package/build/esm/components/PromptInput/PromptInput.js +1 -1
- package/build/esm/components/PromptInput/PromptTextArea.js +1 -1
- package/build/esm/components/RadioCard/RadioCard.js +1 -1
- package/build/esm/components/RoundButton/RoundButton.js +1 -1
- package/build/esm/components/SearchResult/SearchResult.js +1 -1
- package/build/esm/components/SegmentedProgressBar/-utils/getPercentagesForVariants.d.ts +4 -2
- package/build/esm/components/SegmentedProgressBar/-utils/getPercentagesForVariants.js +1 -1
- package/build/esm/components/SegmentedProgressBar/LegendPopover.d.ts +2 -1
- package/build/esm/components/SegmentedProgressBar/LegendPopover.js +1 -1
- package/build/esm/components/SegmentedProgressBar/SegmentedProgressBar.js +1 -1
- package/build/esm/components/ShadowWebComponent/ShadowWebComponent.js +1 -1
- package/build/esm/components/Sheet/Sheet.d.ts +1 -1
- package/build/esm/components/Sheet/Sheet.js +1 -1
- package/build/esm/components/SplashCard/SplashCard.js +1 -1
- package/build/esm/components/SplashCardMedia/SplashCardMedia.js +1 -1
- package/build/esm/components/Stack/Stack.js +1 -1
- package/build/esm/components/SubThemeProvider/SubThemeContext.d.ts +1 -1
- package/build/esm/components/SubThemeProvider/SubThemeProvider.d.ts +2 -1
- package/build/esm/components/SubThemeProvider/SubThemeProvider.js +1 -1
- package/build/esm/components/Tabs/Tabs.js +1 -1
- package/build/esm/components/TagGroup/TagGroup.js +1 -1
- package/build/esm/components/Toast/Toast.d.ts +2 -1
- package/build/esm/components/Toast/Toast.js +1 -1
- package/build/esm/components/Toast/ToastProvider.d.ts +5 -3
- package/build/esm/components/Toggletip/BasePopover.js +1 -1
- package/build/esm/components/Tooltip/BaseTooltip.js +1 -1
- package/build/esm/components/Tooltip/TooltipContent.d.ts +13 -1
- package/build/esm/components/Tooltip/TooltipContent.js +1 -1
- package/build/esm/components/Tooltip/utils.d.ts +0 -1
- package/build/esm/components/Tooltip/utils.js +1 -1
- package/build/esm/components/Typography/StyledText/StyledText.d.ts +1 -1
- package/build/esm/components/Typography/StyledText/StyledText.js +1 -1
- package/build/esm/components/Typography/Text/Text.d.ts +1 -1
- package/build/esm/components/Typography/Text/Text.js +1 -1
- package/build/esm/components/Typography/Text/TextSkeleton.js +1 -1
- package/build/esm/components/Typography/TextClamped/TextClamped.js +1 -1
- package/build/esm/components/UserHighlightTooltip/UserHighlightTooltip.d.ts +1 -1
- package/build/esm/components/UserHighlightTooltip/UserHighlightTooltip.js +1 -1
- package/build/esm/components/Utilities/ContainerQuery/ContainerQueryContext.d.ts +1 -1
- package/build/esm/components/Utilities/Expandable/Expandable.js +1 -1
- package/build/esm/components/Utilities/FloatingPosition/utils.d.ts +1 -1
- package/build/esm/components/VirtualScrollList/VirtualScrollList.d.ts +1 -1
- package/build/esm/components/VirtualScrollList/VirtualScrollList.js +1 -1
- package/build/esm/components/VirtualScrollList/VirtualScrollListReducer.d.ts +2 -2
- package/build/esm/components/VirtualScrollList/VirtualScrollListReducer.js +1 -1
- package/build/esm/shared/appendId.d.ts +1 -1
- package/build/esm/shared/forwardRefPolymorphic.d.ts +2 -0
- package/build/esm/shared/forwardRefPolymorphic.js +1 -0
- package/build/esm/shared/intl/translations/de.json +7 -1
- package/build/esm/shared/intl/translations/en.json +7 -1
- package/build/esm/shared/mediaQueries.d.ts +3 -3
- package/build/esm/shared/mixins/Button/getPillStyles.js +1 -1
- package/build/esm/shared/parseDurationMs.d.ts +2 -0
- package/build/esm/shared/parseDurationMs.js +1 -0
- package/build/esm/shared/useAutoPosition.js +1 -1
- package/build/esm/shared/useHover.d.ts +1 -1
- package/build/esm/shared/useHover.js +1 -1
- package/build/esm/shared/useOutsideClickDeactivatesWithinPortal.d.ts +1 -1
- package/build/esm/shared/useOutsideClickDeactivatesWithinPortal.js +1 -1
- package/build/esm/web-tokens/_colors.json +12 -12
- package/build/esm/web-tokens/_sizes.json +55 -55
- package/build/esm/web-tokens/assets/icons.json +4 -5
- package/build/esm/web-tokens/assets/icons16.json +4 -5
- package/build/esm/web-tokens/visualConfig.d.ts +14 -0
- package/build/esm/web-tokens/visualConfig.js +1 -1
- package/build/scss/_variables.scss +6 -0
- package/package.json +12 -6
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SpaceSizes } from "../../types";
|
|
1
2
|
/**
|
|
2
3
|
* Slot keys - the single source of truth. The key *types* (`SlotKey`,
|
|
3
4
|
* `SidePanelKey`, `PanelKey`) are derived from these const values below and
|
|
@@ -23,6 +24,16 @@ export type PanelKey = (typeof PANELS)[number];
|
|
|
23
24
|
* says otherwise. The store leaves `variant` unset until then, so every
|
|
24
25
|
* reader resolves it against this. */
|
|
25
26
|
export declare const DEFAULT_LEFT_PANEL_VARIANT = "sidebar";
|
|
27
|
+
/** Both axes of the inset between a bar button and the edge of the left bar's
|
|
28
|
+
* column. Shared by `LeftBarToggle`'s own button and `PanelHeader`'s trailing
|
|
29
|
+
* slot: the header's control walks down onto the bar's as the panel
|
|
30
|
+
* collapses, and the two only land on the same spot because both read this
|
|
31
|
+
* one value - on both axes - rather than each writing its own. */
|
|
32
|
+
type BarButtonInset = {
|
|
33
|
+
hSpace: SpaceSizes;
|
|
34
|
+
vSpace: SpaceSizes;
|
|
35
|
+
};
|
|
36
|
+
export declare const LEFT_BAR_BUTTON_INSET: BarButtonInset;
|
|
26
37
|
/** Everything but pinned `content`, which never competes for row space. */
|
|
27
38
|
export type TogglableSlotKey = Exclude<SlotKey, typeof Slot.content>;
|
|
28
39
|
/** Slots the app opens/closes, in `PANEL_ORDER`. */
|
|
@@ -73,3 +84,4 @@ export declare const PANEL_WIDTH_VAR: {
|
|
|
73
84
|
readonly content: "--ds-layout-content-width";
|
|
74
85
|
readonly rightPanel: "--ds-layout-rightPanel-width";
|
|
75
86
|
};
|
|
87
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{LAYOUT_VARS}from"../../web-tokens/layout-vars";export const Slot={leftPanel:"leftPanel",content:"content",splitview:"splitview",rightPanel:"rightPanel"};export const SIDE_PANELS=[Slot.leftPanel,Slot.rightPanel];export const PANELS=[Slot.content,Slot.splitview];export const PANEL_ORDER=[Slot.leftPanel,Slot.content,Slot.splitview,Slot.rightPanel];export const DEFAULT_LEFT_PANEL_VARIANT="sidebar";export const TOGGLABLE_SLOTS=PANEL_ORDER.filter(slot=>slot!==Slot.content);export const SUBNAV_OFFSET_VAR=LAYOUT_VARS.subnavOffset;export const SPLIT_MAX_WIDTH_VAR=LAYOUT_VARS.splitMaxWidth;export const BOTTOM_BAR_HEIGHT_VAR=LAYOUT_VARS.bottomBarHeight;export const RIGHT_PANEL_BOTTOM_BAR_HEIGHT_VAR=LAYOUT_VARS.rightPanelBottomBarHeight;export const PAGE_BOTTOM_BAR_INSET=`var(${BOTTOM_BAR_HEIGHT_VAR}, 0px)`;export const RIGHT_PANEL_BOTTOM_BAR_INSET=`var(${RIGHT_PANEL_BOTTOM_BAR_HEIGHT_VAR}, ${PAGE_BOTTOM_BAR_INSET})`;export const PANEL_WIDTH_VAR={leftPanel:LAYOUT_VARS.leftPanelWidth,content:LAYOUT_VARS.contentWidth,rightPanel:LAYOUT_VARS.rightPanelWidth};
|
|
1
|
+
import{LAYOUT_VARS}from"../../web-tokens/layout-vars";export const Slot={leftPanel:"leftPanel",content:"content",splitview:"splitview",rightPanel:"rightPanel"};export const SIDE_PANELS=[Slot.leftPanel,Slot.rightPanel];export const PANELS=[Slot.content,Slot.splitview];export const PANEL_ORDER=[Slot.leftPanel,Slot.content,Slot.splitview,Slot.rightPanel];export const DEFAULT_LEFT_PANEL_VARIANT="sidebar";export const LEFT_BAR_BUTTON_INSET={hSpace:"s",vSpace:"xs"};export const TOGGLABLE_SLOTS=PANEL_ORDER.filter(slot=>slot!==Slot.content);export const SUBNAV_OFFSET_VAR=LAYOUT_VARS.subnavOffset;export const SPLIT_MAX_WIDTH_VAR=LAYOUT_VARS.splitMaxWidth;export const BOTTOM_BAR_HEIGHT_VAR=LAYOUT_VARS.bottomBarHeight;export const RIGHT_PANEL_BOTTOM_BAR_HEIGHT_VAR=LAYOUT_VARS.rightPanelBottomBarHeight;export const PAGE_BOTTOM_BAR_INSET=`var(${BOTTOM_BAR_HEIGHT_VAR}, 0px)`;export const RIGHT_PANEL_BOTTOM_BAR_INSET=`var(${RIGHT_PANEL_BOTTOM_BAR_HEIGHT_VAR}, ${PAGE_BOTTOM_BAR_INSET})`;export const PANEL_WIDTH_VAR={leftPanel:LAYOUT_VARS.leftPanelWidth,content:LAYOUT_VARS.contentWidth,rightPanel:LAYOUT_VARS.rightPanelWidth};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import styled from"@emotion/styled";import{Panel}from"../Internal/Panel/Panel";import{LayoutFloat}from"../Internal/LayoutFloat/LayoutFloat";import{useBreakpoints}from"../../shared/useBreakpoints";import{PAGE_BOTTOM_BAR_INSET,PANEL_ORDER,PANEL_WIDTH_VAR,Slot}from"./-constants";import{useLayoutPanelsEnabled,useLayoutPersistence,useLayoutStore}from"./context";import{MobileSplitStackContext}from"./Split/MobileSplitView/useMobileSplitStack";import{useMobileSplitViewEnabled}from"./Split/MobileSplitView/useMobileSplitView";import{LayoutProvider}from"./LayoutProvider";import{Content}from"./Content/Content";import{RightPanel}from"./RightPanel/RightPanel";import{RightPanelHeader}from"./RightPanel/RightPanelHeader";import{RightPanelFooter}from"./RightPanel/RightPanelFooter";import{LeftPanel}from"./LeftPanel/LeftPanel";import{LeftPanelHeader}from"./LeftPanel/LeftPanelHeader";import{LeftPanelFooter}from"./LeftPanel/LeftPanelFooter";import{LeftNavBar}from"./LeftNavBar/LeftNavBar";import{LeftNavBarFooter}from"./LeftNavBar/LeftNavBarFooter";import{Split}from"./Split/Split";import{SplitHeader}from"./Split/SplitHeader";import{SplitFooter}from"./Split/SplitFooter";import{LayoutPortalContext,PanelRegistryContext,PanelDeclarationsContext,PanelPresenceContext,PanelAnimationContext,PanelRowContext}from"./registry";import{usePortalTargets}from"./usePortalTargets";import{LayoutFloatDragProvider}from"../Internal/LayoutFloat/LayoutFloatDragProvider";import{useLayoutVar}from"./LayoutCssVars";import{useLayout}from"./useLayout";import{useLayoutRules}from"./useLayoutRules";import{DEFAULT_LAYOUT_RULES}from"./rules";let resizableFromState=slotState=>"sidePanel"===slotState.kind?slotState.resizable:void 0,useGlobalCssVariables=slotHosts=>{let leftPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.leftPanel),contentWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.content),rightPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.rightPanel);useEffect(()=>{let targets=[[Slot.leftPanel,leftPanelWidthCssVar],[Slot.content,contentWidthCssVar],[Slot.rightPanel,rightPanelWidthCssVar]],observers=[];return targets.forEach(([slot,handle])=>{let node=slotHosts[slot]??null;if(!node)return void handle.set("0px");let publishNodeWidth=()=>handle.set(`${node.getBoundingClientRect().width}px`);if(publishNodeWidth(),"undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(publishNodeWidth);observer.observe(node),observers.push(observer)}),()=>observers.forEach(observer=>observer.disconnect())},[leftPanelWidthCssVar,contentWidthCssVar,rightPanelWidthCssVar,slotHosts])},StyledLayout=styled("div",{target:"e1no219g0",label:"StyledLayout"})({position:"relative",height:"100%",width:"100%"}),StyledPanelRow=styled("div",{target:"e1no219g1",label:"StyledPanelRow"})(({theme,hasOffcanvasLeftBar})=>({height:"100%",boxSizing:"border-box",...hasOffcanvasLeftBar&&{paddingLeft:theme.variables.size.dimension.leftNavBar.width}})),StyledPanelHost=styled("div",{target:"e1no219g2",label:"StyledPanelHost"})({position:"relative",height:"100%",width:"100%"});export const PANEL_HOST_DS_ID="PanelHost";let StyledContentColumn=styled("div",{shouldForwardProp:prop=>"isSplitOpen"!==prop,target:"e1no219g3",label:"StyledContentColumn"})(({isSplitOpen,theme})=>({display:"flex",height:`calc(100% - ${PAGE_BOTTOM_BAR_INSET})`,width:"100%",...isSplitOpen&&{maxWidth:theme.variables.layout.split.maxWidth.default,marginInline:"auto",gap:theme.variables.size.spacing.xxs}})),StyledContentColumnHalf=styled("div",{target:"e1no219g4",label:"StyledContentColumnHalf"})({position:"relative",height:"100%",flex:"1 1 0",minWidth:0}),StyledMobileSplitStackHost=styled("div",{target:"e1no219g5",label:"StyledMobileSplitStackHost"})({position:"absolute",top:0,left:0,right:0,bottom:PAGE_BOTTOM_BAR_INSET,overflow:"hidden",pointerEvents:"none"}),isPanelPresent=({slot,declared,present,isShown})=>!!declared[slot]&&(isShown(slot)||present[slot]),defaultSizeFor=({slot,panel,panelState})=>slot===Slot.content?void 0:panel?.defaultSize!==void 0?panel.defaultSize:panel?.resizable!==!1?panelState.size:void 0,childFor=(slot,contentColumn,slotHostRefs)=>slot===Slot.content?contentColumn:React.createElement(StyledPanelHost,{"data-ds-id":"PanelHost",ref:slotHostRefs[slot]});export const Layout=function({children,persistenceKey,storage,rules=DEFAULT_LAYOUT_RULES,additionalRulesData}){let[declared,setDeclared]=useState({}),layout=useLayout(),{state:layoutState,...panelCallbacks}=layout;useLayoutRules({layout,declared,rules,additionalData:additionalRulesData});let{dispatch}=useLayoutStore(),persistence=useLayoutPersistence(),resolvedKey=persistenceKey??persistence.persistenceKey,resolvedStorage=storage??persistence.storage,{isMobile}=useBreakpoints(),showMobileSplitStack=useMobileSplitViewEnabled(),[mobileSplitStackHost,setMobileSplitStackHost]=useState(null),[splitCount,setSplitCount]=useState(0),registerSplit=useCallback(()=>(setSplitCount(count=>count+1),()=>setSplitCount(count=>count-1)),[]),mobileSplitStack=useMemo(()=>({host:mobileSplitStackHost,isSplitPresent:splitCount>0,registerSplit}),[mobileSplitStackHost,splitCount,registerSplit]),panelsEnabled=useLayoutPanelsEnabled(),rightPanelVariant=layoutState[Slot.rightPanel].variant??declared[Slot.rightPanel]?.variant??"sidebar",isRightPanelFloating=!0===panelsEnabled&&!isMobile&&"float"===rightPanelVariant,hasOffcanvasLeftBar=!!declared[Slot.leftPanel]&&"offcanvas"===layoutState[Slot.leftPanel].variant,isShown=slot=>layoutState[slot].visible&&!(slot===Slot.rightPanel&&(isRightPanelFloating||isMobile))&&!(slot===Slot.leftPanel&&hasOffcanvasLeftBar),[present,setPresent]=useState({}),presence=useMemo(()=>({setPresent:(slot,isPresent)=>setPresent(prev=>prev[slot]===isPresent?prev:{...prev,[slot]:isPresent})}),[]),panelHandles=useRef({}),panelElements=useRef({}),resizeSuppressed=useRef({}),animationControl=useMemo(()=>({setHandle:(slot,handle)=>{panelHandles.current[slot]=handle},getHandle:slot=>panelHandles.current[slot]??null,setElement:(slot,element)=>{panelElements.current[slot]=element},getElement:slot=>panelElements.current[slot]??null,setResizeSuppressed:(slot,suppressed)=>{resizeSuppressed.current[slot]=suppressed}}),[]),panelRefCallbacks=useMemo(()=>{let handleCallbacks=new Map,elementCallbacks=new Map;return{handleFor:id=>{let callback=handleCallbacks.get(id);return callback||(callback=handle=>animationControl.setHandle(id,handle),handleCallbacks.set(id,callback)),callback},elementFor:id=>{let callback=elementCallbacks.get(id);return callback||(callback=element=>animationControl.setElement(id,element),elementCallbacks.set(id,callback)),callback}}},[animationControl]),shouldSuppressLayoutCallback=useCallback(()=>Object.values(resizeSuppressed.current).some(Boolean),[]),registry=useMemo(()=>({register:(slot,reg)=>setDeclared(prev=>({...prev,[slot]:reg})),unregister:slot=>setDeclared(prev=>{if(!(slot in prev))return prev;let next={...prev};return delete next[slot],next})}),[]),{portalTargets,slotHosts,slotHostRefs,floatHostRef}=usePortalTargets({slots:PANEL_ORDER,floatableSlot:Slot.rightPanel,isFloating:isRightPanelFloating});useGlobalCssVariables(slotHosts);let rowSlots=PANEL_ORDER.filter(slot=>slot!==Slot.splitview),declaredSlots=rowSlots.filter(slot=>declared[slot]),isSolo=declaredSlots.length<=1,soloSlot=declaredSlots[0],isSplitOpen=isPanelPresent({slot:Slot.splitview,declared,present,isShown})&&isPanelPresent({slot:Slot.content,declared,present,isShown}),contentColumn=React.createElement(StyledContentColumn,{isSplitOpen:isSplitOpen},React.createElement(StyledContentColumnHalf,{ref:slotHostRefs[Slot.content]}),isSplitOpen&&React.createElement(StyledContentColumnHalf,{ref:slotHostRefs[Slot.splitview]})),panelItems=rowSlots.filter(slot=>isPanelPresent({slot,declared,present,isShown})).map(slot=>{let panel=declared[slot],panelState=layoutState[slot];return{id:slot,child:childFor(slot,contentColumn,slotHostRefs),defaultSize:defaultSizeFor({slot,panel,panelState}),minSize:panel?.minSize??panelState.minSize,maxSize:panel?.maxSize??panelState.maxSize,collapsible:slot!==Slot.content&&(panel?.collapsible??!0),lockWidthOnWindowResize:panel?.lockWidthOnWindowResize,resizable:panel?.resizable??resizableFromState(panelState)}}),rowKey=panelItems.map(item=>item.id).join(","),soloHost=soloSlot&&isShown(soloSlot)?childFor(soloSlot,contentColumn,slotHostRefs):null,panelGroup=panelItems.length>0?React.createElement(Panel,{key:resolvedKey,panels:panelItems,persistenceKey:resolvedKey,storage:resolvedStorage,onResize:(id,size)=>{isShown(id)&&dispatch({type:"resize",slot:id,size:declared[id]?.lockWidthOnWindowResize?Math.round(size.inPixels):`${size.asPercentage}%`})},onCollapse:id=>panelCallbacks[id].hide(),panelHandleFor:panelRefCallbacks.handleFor,panelElementFor:panelRefCallbacks.elementFor,shouldSuppressLayoutCallback:shouldSuppressLayoutCallback}):null;return React.createElement(PanelRegistryContext.Provider,{value:registry},React.createElement(PanelDeclarationsContext.Provider,{value:declared},React.createElement(PanelPresenceContext.Provider,{value:presence},React.createElement(PanelAnimationContext.Provider,{value:animationControl},React.createElement(PanelRowContext.Provider,{value:rowKey},React.createElement(LayoutPortalContext.Provider,{value:portalTargets},React.createElement(LayoutFloatDragProvider,null,React.createElement(MobileSplitStackContext.Provider,{value:mobileSplitStack},React.createElement(StyledLayout,{"data-ds-id":"Layout"},React.createElement(StyledPanelRow,{hasOffcanvasLeftBar:hasOffcanvasLeftBar},isSolo?soloHost:panelGroup),isRightPanelFloating&&layoutState[Slot.rightPanel].visible&&React.createElement(LayoutFloat,{hostRef:floatHostRef}),children,showMobileSplitStack&&React.createElement(StyledMobileSplitStackHost,{ref:setMobileSplitStackHost}))))))))))};Layout.Provider=LayoutProvider,Layout.LeftPanel=LeftPanel,Layout.LeftNavBar=LeftNavBar,Layout.LeftNavBarFooter=LeftNavBarFooter,Layout.LeftPanelHeader=LeftPanelHeader,Layout.LeftPanelFooter=LeftPanelFooter,Layout.RightPanel=RightPanel,Layout.RightPanelHeader=RightPanelHeader,Layout.RightPanelFooter=RightPanelFooter,Layout.Content=Content,Layout.Split=Split,Layout.SplitHeader=SplitHeader,Layout.SplitFooter=SplitFooter;
|
|
1
|
+
import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import styled from"@emotion/styled";import{Panel}from"../Internal/Panel/Panel";import{LayoutFloat}from"../Internal/LayoutFloat/LayoutFloat";import{useBreakpoints}from"../../shared/useBreakpoints";import{PAGE_BOTTOM_BAR_INSET,PANEL_ORDER,PANEL_WIDTH_VAR,Slot}from"./-constants";import{useLayoutPanelsEnabled,useLayoutPersistence,useLayoutStore}from"./context";import{MobileSplitStackContext}from"./Split/MobileSplitView/useMobileSplitStack";import{useMobileSplitViewEnabled}from"./Split/MobileSplitView/useMobileSplitView";import{LayoutProvider}from"./LayoutProvider";import{Content}from"./Content/Content";import{RightPanel}from"./RightPanel/RightPanel";import{RightPanelHeader}from"./RightPanel/RightPanelHeader";import{RightPanelFooter}from"./RightPanel/RightPanelFooter";import{LeftPanel}from"./LeftPanel/LeftPanel";import{LeftPanelHeader}from"./LeftPanel/LeftPanelHeader";import{LeftPanelFooter}from"./LeftPanel/LeftPanelFooter";import{LeftNavBar}from"./LeftNavBar/LeftNavBar";import{LeftNavBarFooter}from"./LeftNavBar/LeftNavBarFooter";import{Split}from"./Split/Split";import{SplitHeader}from"./Split/SplitHeader";import{SplitFooter}from"./Split/SplitFooter";import{LayoutPortalContext,PanelRegistryContext,PanelDeclarationsContext,PanelPresenceContext,PanelAnimationContext,PanelRowContext}from"./registry";import{usePortalTargets}from"./usePortalTargets";import{LayoutFloatDragProvider}from"../Internal/LayoutFloat/LayoutFloatDragProvider";import{useLayoutVar}from"./LayoutCssVars";import{useLayout}from"./useLayout";import{useLayoutRules}from"./useLayoutRules";import{DEFAULT_LAYOUT_RULES}from"./rules";let resizableFromState=slotState=>"sidePanel"===slotState.kind?slotState.resizable:void 0,useGlobalCssVariables=slotHosts=>{let leftPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.leftPanel),contentWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.content),rightPanelWidthCssVar=useLayoutVar(PANEL_WIDTH_VAR.rightPanel);useEffect(()=>{let targets=[[Slot.leftPanel,leftPanelWidthCssVar],[Slot.content,contentWidthCssVar],[Slot.rightPanel,rightPanelWidthCssVar]],observers=[];return targets.forEach(([slot,handle])=>{let node=slotHosts[slot]??null;if(!node)return void handle.set("0px");let publishNodeWidth=()=>handle.set(`${node.getBoundingClientRect().width}px`);if(publishNodeWidth(),"undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(publishNodeWidth);observer.observe(node),observers.push(observer)}),()=>observers.forEach(observer=>observer.disconnect())},[leftPanelWidthCssVar,contentWidthCssVar,rightPanelWidthCssVar,slotHosts])},StyledLayout=styled("div",{target:"e1rj6vf40",label:"StyledLayout"})({position:"relative",height:"100%",width:"100%"}),StyledPanelRow=styled("div",{target:"e1rj6vf41",label:"StyledPanelRow"})(({theme,hasOffcanvasLeftBar})=>({height:"100%",boxSizing:"border-box",...hasOffcanvasLeftBar&&{paddingLeft:theme.variables.size.dimension.leftNavBar.width}})),StyledPanelHost=styled("div",{target:"e1rj6vf42",label:"StyledPanelHost"})({position:"relative",height:"100%",width:"100%"});export const PANEL_HOST_DS_ID="PanelHost";let StyledContentColumn=styled("div",{shouldForwardProp:prop=>"isSplitOpen"!==prop,target:"e1rj6vf43",label:"StyledContentColumn"})(({isSplitOpen,theme})=>({display:"flex",height:`calc(100% - ${PAGE_BOTTOM_BAR_INSET})`,width:"100%",...isSplitOpen&&{maxWidth:theme.variables.layout.split.maxWidth.default,marginInline:"auto",gap:theme.variables.size.spacing.xxs}})),StyledContentColumnHalf=styled("div",{target:"e1rj6vf44",label:"StyledContentColumnHalf"})({position:"relative",height:"100%",flex:"1 1 0",minWidth:0}),StyledMobileSplitStackHost=styled("div",{target:"e1rj6vf45",label:"StyledMobileSplitStackHost"})({position:"absolute",top:0,left:0,right:0,bottom:PAGE_BOTTOM_BAR_INSET,overflow:"hidden",pointerEvents:"none"}),isPanelPresent=({slot,declared,present,isShown})=>!!(declared[slot]&&(isShown(slot)||present[slot])),defaultSizeFor=({slot,panel,panelState})=>slot===Slot.content?void 0:panel?.defaultSize!==void 0?panel.defaultSize:panel?.resizable!==!1?panelState.size:void 0,childFor=(slot,contentColumn,slotHostRefs)=>slot===Slot.content?contentColumn:React.createElement(StyledPanelHost,{"data-ds-id":"PanelHost",ref:slotHostRefs[slot]});export const Layout=function({children,persistenceKey,storage,rules=DEFAULT_LAYOUT_RULES,additionalRulesData}){let[declared,setDeclared]=useState({}),layout=useLayout(),{state:layoutState,...panelCallbacks}=layout;useLayoutRules({layout,declared,rules,additionalData:additionalRulesData});let{dispatch}=useLayoutStore(),persistence=useLayoutPersistence(),resolvedKey=persistenceKey??persistence.persistenceKey,resolvedStorage=storage??persistence.storage,{isMobile}=useBreakpoints(),showMobileSplitStack=useMobileSplitViewEnabled(),[mobileSplitStackHost,setMobileSplitStackHost]=useState(null),[splitCount,setSplitCount]=useState(0),registerSplit=useCallback(()=>(setSplitCount(count=>count+1),()=>setSplitCount(count=>count-1)),[]),mobileSplitStack=useMemo(()=>({host:mobileSplitStackHost,isSplitPresent:splitCount>0,registerSplit}),[mobileSplitStackHost,splitCount,registerSplit]),panelsEnabled=useLayoutPanelsEnabled(),rightPanelVariant=layoutState[Slot.rightPanel].variant??declared[Slot.rightPanel]?.variant??"sidebar",isRightPanelFloating=!0===panelsEnabled&&!isMobile&&"float"===rightPanelVariant,hasOffcanvasLeftBar=!!declared[Slot.leftPanel]&&"offcanvas"===layoutState[Slot.leftPanel].variant,isShown=slot=>layoutState[slot].visible&&!(slot===Slot.rightPanel&&(isRightPanelFloating||isMobile))&&!(slot===Slot.leftPanel&&hasOffcanvasLeftBar),[present,setPresent]=useState({}),presence=useMemo(()=>({setPresent:(slot,isPresent)=>setPresent(prev=>prev[slot]===isPresent?prev:{...prev,[slot]:isPresent})}),[]),panelHandles=useRef({}),panelElements=useRef({}),resizeSuppressed=useRef({}),animationControl=useMemo(()=>({setHandle:(slot,handle)=>{panelHandles.current[slot]=handle},getHandle:slot=>panelHandles.current[slot]??null,setElement:(slot,element)=>{panelElements.current[slot]=element},getElement:slot=>panelElements.current[slot]??null,setResizeSuppressed:(slot,suppressed)=>{resizeSuppressed.current[slot]=suppressed}}),[]),panelRefCallbacks=useMemo(()=>{let handleCallbacks=new Map,elementCallbacks=new Map;return{handleFor:id=>{let callback=handleCallbacks.get(id);return callback||(callback=handle=>animationControl.setHandle(id,handle),handleCallbacks.set(id,callback)),callback},elementFor:id=>{let callback=elementCallbacks.get(id);return callback||(callback=element=>animationControl.setElement(id,element),elementCallbacks.set(id,callback)),callback}}},[animationControl]),shouldSuppressLayoutCallback=useCallback(()=>Object.values(resizeSuppressed.current).some(Boolean),[]),registry=useMemo(()=>({register:(slot,reg)=>setDeclared(prev=>({...prev,[slot]:reg})),unregister:slot=>setDeclared(prev=>{if(!(slot in prev))return prev;let next={...prev};return delete next[slot],next})}),[]),{portalTargets,slotHosts,slotHostRefs,floatHostRef}=usePortalTargets({slots:PANEL_ORDER,floatableSlot:Slot.rightPanel,isFloating:isRightPanelFloating});useGlobalCssVariables(slotHosts);let rowSlots=PANEL_ORDER.filter(slot=>slot!==Slot.splitview),declaredSlots=rowSlots.filter(slot=>declared[slot]),isSolo=declaredSlots.length<=1,soloSlot=declaredSlots[0],isSplitOpen=isPanelPresent({slot:Slot.splitview,declared,present,isShown})&&isPanelPresent({slot:Slot.content,declared,present,isShown}),contentColumn=React.createElement(StyledContentColumn,{isSplitOpen:isSplitOpen},React.createElement(StyledContentColumnHalf,{ref:slotHostRefs[Slot.content]}),isSplitOpen&&React.createElement(StyledContentColumnHalf,{ref:slotHostRefs[Slot.splitview]})),panelItems=rowSlots.filter(slot=>isPanelPresent({slot,declared,present,isShown})).map(slot=>{let panel=declared[slot],panelState=layoutState[slot];return{id:slot,child:childFor(slot,contentColumn,slotHostRefs),defaultSize:defaultSizeFor({slot,panel,panelState}),minSize:panel?.minSize??panelState.minSize,maxSize:panel?.maxSize??panelState.maxSize,collapsible:slot!==Slot.content&&(panel?.collapsible??!0),lockWidthOnWindowResize:panel?.lockWidthOnWindowResize,resizable:panel?.resizable??resizableFromState(panelState)}}),rowKey=panelItems.map(item=>item.id).join(","),soloHost=soloSlot&&isShown(soloSlot)?childFor(soloSlot,contentColumn,slotHostRefs):null,panelGroup=panelItems.length>0?React.createElement(Panel,{key:resolvedKey,panels:panelItems,persistenceKey:resolvedKey,storage:resolvedStorage,onResize:(id,size)=>{isShown(id)&&declared[id]?.resizable!==!1&&dispatch({type:"resize",slot:id,size:declared[id]?.lockWidthOnWindowResize?Math.round(size.inPixels):`${size.asPercentage}%`})},onCollapse:id=>panelCallbacks[id].hide(),panelHandleFor:panelRefCallbacks.handleFor,panelElementFor:panelRefCallbacks.elementFor,shouldSuppressLayoutCallback:shouldSuppressLayoutCallback}):null;return React.createElement(PanelRegistryContext.Provider,{value:registry},React.createElement(PanelDeclarationsContext.Provider,{value:declared},React.createElement(PanelPresenceContext.Provider,{value:presence},React.createElement(PanelAnimationContext.Provider,{value:animationControl},React.createElement(PanelRowContext.Provider,{value:rowKey},React.createElement(LayoutPortalContext.Provider,{value:portalTargets},React.createElement(LayoutFloatDragProvider,null,React.createElement(MobileSplitStackContext.Provider,{value:mobileSplitStack},React.createElement(StyledLayout,{"data-ds-id":"Layout"},React.createElement(StyledPanelRow,{hasOffcanvasLeftBar:hasOffcanvasLeftBar},isSolo?soloHost:panelGroup),isRightPanelFloating&&layoutState[Slot.rightPanel].visible&&React.createElement(LayoutFloat,{hostRef:floatHostRef}),children,showMobileSplitStack&&React.createElement(StyledMobileSplitStackHost,{ref:setMobileSplitStackHost}))))))))))};Layout.Provider=LayoutProvider,Layout.LeftPanel=LeftPanel,Layout.LeftNavBar=LeftNavBar,Layout.LeftNavBarFooter=LeftNavBarFooter,Layout.LeftPanelHeader=LeftPanelHeader,Layout.LeftPanelFooter=LeftPanelFooter,Layout.RightPanel=RightPanel,Layout.RightPanelHeader=RightPanelHeader,Layout.RightPanelFooter=RightPanelFooter,Layout.Content=Content,Layout.Split=Split,Layout.SplitHeader=SplitHeader,Layout.SplitFooter=SplitFooter;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { LayoutCssVarStore } from "./cssVarStore";
|
|
3
|
-
export declare const LayoutCssVarStoreProvider: React.Provider<LayoutCssVarStore>;
|
|
3
|
+
export declare const LayoutCssVarStoreProvider: React.Provider<LayoutCssVarStore | null>;
|
|
4
4
|
/** Imperative handle to one registered layout var. */
|
|
5
5
|
export type LayoutVarHandle = {
|
|
6
6
|
set: (value: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import{Box}from"../../Box/Box";import{PictogramButton}from"../../PictogramButton/PictogramButton";import{Slot}from"../-constants";import{useLayout}from"../useLayout";import{useLeftPanelId}from"../useLeftPanelId";export function LeftBarToggle({"aria-label":ariaLabel,"data-e2e-test-id":dataE2eTestId,buttonRef}){let{show,isVisible}=useLayout()[Slot.leftPanel],leftPanelId=useLeftPanelId();return React.createElement(Box,{space:
|
|
1
|
+
import React from"react";import{Box}from"../../Box/Box";import{PictogramButton}from"../../PictogramButton/PictogramButton";import{LEFT_BAR_BUTTON_INSET,Slot}from"../-constants";import{useLayout}from"../useLayout";import{useLeftPanelId}from"../useLeftPanelId";export function LeftBarToggle({"aria-label":ariaLabel,"data-e2e-test-id":dataE2eTestId,buttonRef}){let{show,isVisible}=useLayout()[Slot.leftPanel],leftPanelId=useLeftPanelId();return React.createElement(Box,{space:LEFT_BAR_BUTTON_INSET.hSpace,vSpace:LEFT_BAR_BUTTON_INSET.vSpace},React.createElement(PictogramButton,{ref:buttonRef,icon:"open-sidebar-left",size:"s",onClick:show,"aria-label":ariaLabel,"data-e2e-test-id":dataE2eTestId,"aria-controls":leftPanelId,"aria-expanded":isVisible}))}
|
|
@@ -16,5 +16,5 @@ export type MobileSplitStackValue = {
|
|
|
16
16
|
* front isn't stored here - it derives from the `splitview` slot's visibility
|
|
17
17
|
* (see {@link useMobileSplitView}).
|
|
18
18
|
*/
|
|
19
|
-
export declare const MobileSplitStackContext: React.Context<MobileSplitStackValue>;
|
|
19
|
+
export declare const MobileSplitStackContext: React.Context<MobileSplitStackValue | null>;
|
|
20
20
|
export declare const useMobileSplitStack: () => MobileSplitStackValue;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LayoutPanelsMode, LayoutState, LayoutStorage, LayoutStore } from "./-types";
|
|
2
|
-
export declare const LayoutStoreProvider: React.Provider<LayoutStore>;
|
|
2
|
+
export declare const LayoutStoreProvider: React.Provider<LayoutStore | null>;
|
|
3
3
|
/** Get the store from context, or throw if used outside the provider. */
|
|
4
4
|
export declare function useLayoutStore(): LayoutStore;
|
|
5
5
|
export declare const LayoutPanelsEnabledProvider: React.Provider<LayoutPanelsMode>;
|
|
@@ -2,7 +2,7 @@ import { type ReactNode } from "react";
|
|
|
2
2
|
import type { PanelImperativeHandle } from "react-resizable-panels";
|
|
3
3
|
import type { RightPanelVariant, Size, SlotKey } from "./-types";
|
|
4
4
|
export type PortalTargets = Partial<Record<SlotKey, HTMLElement | null>>;
|
|
5
|
-
export declare const LayoutPortalContext: React.Context<Partial<Record<"content" | "leftPanel" | "splitview" | "rightPanel", HTMLElement>>>;
|
|
5
|
+
export declare const LayoutPortalContext: React.Context<Partial<Record<"content" | "leftPanel" | "splitview" | "rightPanel", HTMLElement | null>>>;
|
|
6
6
|
/**
|
|
7
7
|
* Portal `children` into the host DOM node registered for `slot`. Returns the
|
|
8
8
|
* portal (or `null` if the host isn't mounted yet). Call unconditionally -
|
|
@@ -35,7 +35,7 @@ export type PanelRegistry = {
|
|
|
35
35
|
register: (slot: SlotKey, reg: PanelReg) => void;
|
|
36
36
|
unregister: (slot: SlotKey) => void;
|
|
37
37
|
};
|
|
38
|
-
export declare const PanelRegistryContext: React.Context<PanelRegistry>;
|
|
38
|
+
export declare const PanelRegistryContext: React.Context<PanelRegistry | null>;
|
|
39
39
|
/** Register this slot as a panel for the marker's lifetime. */
|
|
40
40
|
export declare function useDeclarePanel(slot: SlotKey, reg: PanelReg): void;
|
|
41
41
|
export type PanelDeclarations = Partial<Record<SlotKey, PanelReg>>;
|
|
@@ -60,7 +60,7 @@ export declare const usePanelRow: () => string;
|
|
|
60
60
|
export type PanelPresence = {
|
|
61
61
|
setPresent: (slot: SlotKey, isPresent: boolean) => void;
|
|
62
62
|
};
|
|
63
|
-
export declare const PanelPresenceContext: React.Context<PanelPresence>;
|
|
63
|
+
export declare const PanelPresenceContext: React.Context<PanelPresence | null>;
|
|
64
64
|
/** Report this slot's live presence so the Layout keeps its column mounted
|
|
65
65
|
* through the exit animation. No-op outside a Layout. */
|
|
66
66
|
export declare function usePanelPresence(slot: SlotKey, isPresent: boolean): void;
|
|
@@ -82,7 +82,7 @@ export type PanelAnimationControl = {
|
|
|
82
82
|
/** Mute the Group's resize/collapse/persist callbacks for a slot mid-slide. */
|
|
83
83
|
setResizeSuppressed: (slot: SlotKey, suppressed: boolean) => void;
|
|
84
84
|
};
|
|
85
|
-
export declare const PanelAnimationContext: React.Context<PanelAnimationControl>;
|
|
85
|
+
export declare const PanelAnimationContext: React.Context<PanelAnimationControl | null>;
|
|
86
86
|
/** Access the Layout's panel-animation control. Null outside a Layout. */
|
|
87
87
|
export declare function usePanelAnimationControl(): PanelAnimationControl | null;
|
|
88
88
|
/** Run `onChange(value)` when `value` transitions (not on initial mount). */
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { SidePanelKey } from "./-constants";
|
|
2
2
|
import type { Size } from "./-types";
|
|
3
|
+
type SlidePhase = "idle" | "entering" | "exiting";
|
|
4
|
+
type GetMaxSizeOptions = {
|
|
5
|
+
collapsedSize?: Size;
|
|
6
|
+
isVisible: boolean;
|
|
7
|
+
maxSize?: Size;
|
|
8
|
+
openSize?: Size;
|
|
9
|
+
phase: SlidePhase;
|
|
10
|
+
};
|
|
11
|
+
export declare const getMaxSize: ({ collapsedSize, isVisible, maxSize, openSize, phase, }: GetMaxSizeOptions) => Size | undefined;
|
|
3
12
|
export type PanelDockedSlideOptions = {
|
|
4
13
|
/** Which side-panel slot this animates. */
|
|
5
14
|
slot: SidePanelKey;
|
|
@@ -38,3 +47,4 @@ export type PanelDockedSlide = {
|
|
|
38
47
|
* {@link useExitAnimation} and the Drawer's styled components.
|
|
39
48
|
*/
|
|
40
49
|
export declare function usePanelDockedSlide({ slot, defaultSize, minSize, maxSize, collapsible, resizable, lockWidthOnWindowResize, collapsedSize, }: PanelDockedSlideOptions): PanelDockedSlide;
|
|
50
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useLayoutEffect,useRef,useState}from"react";import{useTheme}from"@emotion/react";import{useWindow}from"../../shared/useWindow";import{prefersReducedMotion}from"../../shared/prefersReducedMotion";import{useDeclarePanel,usePanelAnimationControl,usePanelPresence,usePanelRow}from"./registry";import{useLayout}from"./useLayout";let
|
|
1
|
+
import{useLayoutEffect,useRef,useState}from"react";import{useTheme}from"@emotion/react";import{useWindow}from"../../shared/useWindow";import{parseDurationMs}from"../../shared/parseDurationMs";import{prefersReducedMotion}from"../../shared/prefersReducedMotion";import{useDeclarePanel,usePanelAnimationControl,usePanelPresence,usePanelRow}from"./registry";import{useLayout}from"./useLayout";let resolveSizePx=(size,groupWidthPx)=>{if("number"==typeof size)return size;if("string"!=typeof size)return null;let parsed=parseFloat(size);return Number.isFinite(parsed)?size.trim().endsWith("px")?parsed:null!=groupWidthPx?parsed/100*groupWidthPx:null:null},groupColumnsOf=element=>{let columns=element.closest("[data-group]")?.querySelectorAll("[data-panel]");return columns?Array.from(columns):[element]},isHandleReady=handle=>{try{return handle.isCollapsed(),!0}catch{return!1}},mountDefaultSizeFor=({collapsedSize,defaultSize,isVisible,isSlidingIn})=>void 0!==collapsedSize?isVisible?defaultSize:collapsedSize:isSlidingIn?0:defaultSize,minSizeFor=({collapsedSize,isVisible,minSize})=>void 0===collapsedSize?minSize:isVisible?minSize??collapsedSize:collapsedSize;export const getMaxSize=({collapsedSize,isVisible,maxSize,openSize,phase})=>void 0===collapsedSize?maxSize:isVisible||"idle"!==phase?maxSize??openSize:collapsedSize;export function usePanelDockedSlide({slot,defaultSize,minSize,maxSize,collapsible,resizable,lockWidthOnWindowResize,collapsedSize}){let{isVisible,state}=useLayout()[slot],theme=useTheme(),window=useWindow(),animation=usePanelAnimationControl(),rowKey=usePanelRow(),reducedMotion=prefersReducedMotion(window),hasCollapsedRest=void 0!==collapsedSize,isCollapsible=collapsible&&!hasCollapsedRest,[isMounted,setIsMounted]=useState(isVisible),[phase,setPhase]=useState("idle"),[fixedWidth,setFixedWidth]=useState(null),[prevVisible,setPrevVisible]=useState(isVisible);isVisible!==prevVisible&&(setPrevVisible(isVisible),setPhase(isVisible?"entering":"exiting"),isVisible&&setIsMounted(!0),animation?.setResizeSuppressed(slot,!0));let openSize=hasCollapsedRest?state.size??defaultSize:defaultSize;useDeclarePanel(slot,{defaultSize:mountDefaultSizeFor({collapsedSize,defaultSize:openSize,isVisible,isSlidingIn:"entering"===phase&&collapsible&&!reducedMotion}),minSize:minSizeFor({collapsedSize,isVisible,minSize}),maxSize:getMaxSize({collapsedSize,isVisible,maxSize,openSize,phase}),collapsible:isCollapsible,resizable,lockWidthOnWindowResize}),usePanelPresence(slot,hasCollapsedRest||isMounted);let latestRest=useRef({isVisible,openSize,phase});return latestRest.current={isVisible,openSize,phase},useLayoutEffect(()=>{if(!hasCollapsedRest)return;let frame=0,cancelled=!1,resizeToRest=attempt=>{if(cancelled)return;let handle=animation?.getHandle(slot)??null;if(handle&&isHandleReady(handle)){let rest=latestRest.current;if("idle"!==rest.phase)return;let restSize=rest.isVisible?rest.openSize??minSize:collapsedSize;try{void 0!==restSize&&handle.resize(restSize)}catch{}return}animation&&!(attempt>=30)&&(frame=window.requestAnimationFrame(()=>resizeToRest(attempt+1)))};return Promise.resolve().then(()=>resizeToRest(0)),()=>{cancelled=!0,window.cancelAnimationFrame(frame)}},[rowKey]),useLayoutEffect(()=>{if("idle"===phase)return;let cancelled=!1,frame=0,settleTimer=0,animatedColumns=[];animation?.setResizeSuppressed(slot,!0);let{duration,timingFunction}=hasCollapsedRest?theme.variables.animation.navSlide.collapse:theme.variables.animation.navSlide.open,durationMs=parseDurationMs(duration),setColumnTransitions=enabled=>{animatedColumns.forEach(column=>{enabled?column.style.setProperty("transition",`flex-grow ${duration} ${timingFunction}`):column.style.removeProperty("transition")})},targetSize=state.size??defaultSize??minSize,openColumn=(handle,targetPx)=>{handle.isCollapsed()&&handle.expand(),handle.resize(targetPx??targetSize??minSize??"20%")},settle=handle=>{if(setColumnTransitions(!1),animation?.setResizeSuppressed(slot,!1),"entering"===phase&&handle&&!hasCollapsedRest)try{handle.getSize().inPixels<1&&openColumn(handle,null)}catch{}setFixedWidth(null),"exiting"!==phase||hasCollapsedRest||setIsMounted(!1),setPhase("idle")},runSlide=(handle,element)=>{animatedColumns=groupColumnsOf(element);let groupWidthPx=element.closest("[data-group]")?.getBoundingClientRect().width??null,targetPx=resolveSizePx(targetSize,groupWidthPx),collapsedPx=resolveSizePx(collapsedSize,groupWidthPx);setFixedWidth("entering"===phase?targetPx:handle.getSize().inPixels),reducedMotion||setColumnTransitions(!0),element.getBoundingClientRect();try{"entering"===phase?openColumn(handle,targetPx):hasCollapsedRest?handle.resize(collapsedPx??collapsedSize):handle.collapse()}catch{settle(handle);return}settleTimer=window.setTimeout(()=>settle(handle),reducedMotion?0:durationMs+80)},waitForColumn=attempt=>{if(cancelled)return;if(0===attempt&&hasCollapsedRest){frame=window.requestAnimationFrame(()=>waitForColumn(attempt+1));return}let handle=animation?.getHandle(slot)??null,element=animation?.getElement(slot)??null;return handle&&element&&isHandleReady(handle)?void runSlide(handle,element):"exiting"===phase||!animation||attempt>=30?void settle(handle):void(frame=window.requestAnimationFrame(()=>waitForColumn(attempt+1)))};return collapsible||hasCollapsedRest?waitForColumn(0):settle(animation?.getHandle(slot)??null),()=>{cancelled=!0,window.cancelAnimationFrame(frame),window.clearTimeout(settleTimer),setColumnTransitions(!1),animation?.setResizeSuppressed(slot,!1)}},[phase,slot,collapsible,hasCollapsedRest,reducedMotion,animation,window,theme]),{isMounted:hasCollapsedRest||isMounted,fixedWidth}}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React,{useRef}from"react";import styled from"@emotion/styled";import{keyframes}from"@emotion/react";import{useOutsideClickDeactivatesWithinPortal}from"../../shared/useOutsideClickDeactivatesWithinPortal";import{FOCUSABLE_SELECTOR}from"../../shared/focusableSelector";import{Portal,usePortalContainerElement}from"../Portal/Portal";import{FocusTrapWrapper}from"../../shared/FocusTrapWrapper";import{useResponsiveStyles}from"../../shared/mediaQueries";import{DialogContext}from"../Patterns/Dialog/DialogContext";export const StyledBackdrop=styled("div",{target:"
|
|
1
|
+
import React,{useRef}from"react";import styled from"@emotion/styled";import{keyframes}from"@emotion/react";import{useOutsideClickDeactivatesWithinPortal}from"../../shared/useOutsideClickDeactivatesWithinPortal";import{FOCUSABLE_SELECTOR}from"../../shared/focusableSelector";import{Portal,usePortalContainerElement}from"../Portal/Portal";import{FocusTrapWrapper}from"../../shared/FocusTrapWrapper";import{useResponsiveStyles}from"../../shared/mediaQueries";import{DialogContext}from"../Patterns/Dialog/DialogContext";export const StyledBackdrop=styled("div",{target:"ehzm4j60",label:"StyledBackdrop"})(({theme,justifyContent})=>{let fadeInBackdrop=keyframes`
|
|
2
2
|
from {
|
|
3
3
|
opacity: ${theme.variables.opacity.hidden};
|
|
4
4
|
}
|
|
5
5
|
to {
|
|
6
6
|
opacity: ${theme.variables.opacity.visible};
|
|
7
7
|
}
|
|
8
|
-
`;return{position:"fixed",top:0,left:0,zIndex:theme.variables.zIndex.modal,width:"100%",height:"100dvh",background:theme.values.color.background.backdrop.default,display:"flex",flexDirection:"column",...useResponsiveStyles({justifyContent:[justifyContent,{top:"flex-start",center:"center"}]}),alignItems:"center",flex:"1 0 auto",animation:`${fadeInBackdrop} ${theme.variables.animation.modalBackdrop.open.duration} ${theme.variables.animation.modalBackdrop.open.timingFunction} both`}});export const StyledChildrenWrapper=styled("div",{target:"
|
|
8
|
+
`;return{position:"fixed",top:0,left:0,zIndex:theme.variables.zIndex.modal,width:"100%",height:"100dvh",background:theme.values.color.background.backdrop.default,display:"flex",flexDirection:"column",...useResponsiveStyles({justifyContent:[justifyContent,{top:"flex-start",center:"center"}]}),alignItems:"center",flex:"1 0 auto",animation:`${fadeInBackdrop} ${theme.variables.animation.modalBackdrop.open.duration} ${theme.variables.animation.modalBackdrop.open.timingFunction} both`}});export const StyledChildrenWrapper=styled("div",{target:"ehzm4j61",label:"StyledChildrenWrapper"})({display:"contents"});export function Lightbox({backdropRef,portalContainer,initialFocus,isDismissible=!0,children,handleClose,justifyContent="center",privateProps:{skipPortal,tabbableOptions}={skipPortal:!1}}){let portalContainerElement=usePortalContainerElement(portalContainer),modalRef=useRef(null),handleClickOutsideDeactivates=useOutsideClickDeactivatesWithinPortal({portalContainerElement,outerRef:backdropRef,isDismissible}),getFocusTarget=()=>{let container=modalRef?.current?.firstElementChild,firstFocusable=container?.querySelector(FOCUSABLE_SELECTOR);return firstFocusable||container||document.body},getInitialFocus=()=>"string"==typeof initialFocus?initialFocus:initialFocus?.current??getFocusTarget(),content=React.createElement(StyledBackdrop,{ref:backdropRef,justifyContent:justifyContent,"data-ds-id":"Lightbox"},React.createElement(FocusTrapWrapper,{active:!0,focusTrapOptions:{allowOutsideClick:!0,clickOutsideDeactivates:handleClickOutsideDeactivates,escapeDeactivates:isDismissible,preventScroll:!0,initialFocus:()=>getInitialFocus(),fallbackFocus:()=>getFocusTarget(),...tabbableOptions&&{tabbableOptions},...handleClose&&{onPostDeactivate:handleClose}}},React.createElement(StyledChildrenWrapper,{ref:modalRef},children)));return skipPortal?content:React.createElement(DialogContext.Provider,{value:!0},React.createElement(Portal,{portalContainer:portalContainer},content))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useContext}from"react";import styled from"@emotion/styled";import isPropValid from"@emotion/is-prop-valid";import{TextContext}from"../Typography/Text/Text";import{Icon}from"../Icon/Icon";let StyledLink=styled("a",{shouldForwardProp:prop=>isPropValid(prop)&&"inline"!==prop,target:"
|
|
1
|
+
import React,{useContext}from"react";import styled from"@emotion/styled";import isPropValid from"@emotion/is-prop-valid";import{forwardRefPolymorphic}from"../../shared/forwardRefPolymorphic";import{TextContext}from"../Typography/Text/Text";import{Icon}from"../Icon/Icon";let StyledLink=styled("a",{shouldForwardProp:prop=>isPropValid(prop)&&"inline"!==prop,target:"ert2rd50",label:"StyledLink"})(({theme,weight,size,color,inline})=>({cursor:"pointer",background:"none",border:"none",padding:0,fontSize:(size&&theme.variables.size.font[size])??"inherit",fontWeight:(weight&&theme.variables.weight[weight])??"inherit",lineHeight:size?({xxs:theme.variables.size.lineHeight.m,xs:theme.variables.size.lineHeight.xl,s:theme.variables.size.lineHeight.l,m:theme.variables.size.lineHeight.xl,l:theme.variables.size.lineHeight.xl})[size]:void 0,fontFamily:theme.variables.fontFamily.lato,textDecorationLine:inline?"underline":"none",color:color?theme.values.color.text[color].default:"inherit",...("primary"===color||"secondary"===color||"tertiary"===color)&&{textDecorationColor:theme.values.color.text.underline.default},"&:hover":{textDecorationLine:"underline",textDecorationThickness:"0.125em",...("primary"===color||"secondary"===color||"tertiary"===color)&&{textDecorationColor:theme.values.color.text.underline.hover,color:theme.values.color.text[color].hover}}})),StyledIcon=styled(Icon,{target:"ert2rd51",label:"StyledIcon"})(({position,theme})=>({..."left"===position&&{marginRight:theme.variables.size.spacing.xxs},..."right"===position&&{marginLeft:theme.variables.size.spacing.xxs}}));export const Link=forwardRefPolymorphic(({weight,color:colorProp,size,variant,inline,iconLeft,iconRight,children,"data-e2e-test-id":dataE2eTestId,...rest},ref)=>{let inheritPropsFromText=useContext(TextContext),linkColor=variant?"primary"===variant?"accent":"secondary"===variant?"primary":variant:colorProp||(inheritPropsFromText?.color?inheritPropsFromText?.color:inline?void 0:"accent"),isInlineLink=inline||!!inheritPropsFromText,linkContent=!isInlineLink&&(iconLeft||iconRight)?React.createElement(React.Fragment,null,iconLeft&&React.createElement(StyledIcon,{"aria-hidden":!0,size:"s",name:iconLeft.name,color:iconLeft.color??linkColor,inline:!0,position:"left"}),children,iconRight&&React.createElement(StyledIcon,{"aria-hidden":!0,size:"s",name:iconRight.name,color:iconRight.color??linkColor,inline:!0,position:"right"})):children;return React.createElement(StyledLink,{"data-e2e-test-id":dataE2eTestId,"data-ds-id":"Link",ref:ref,inline:isInlineLink,color:linkColor,size:size||inheritPropsFromText?.size,weight:weight||inheritPropsFromText?.weight,...rest},linkContent)});
|
|
@@ -3,6 +3,7 @@ import type { Property } from "csstype";
|
|
|
3
3
|
import type { Hyphens, MediaItemSize, PolymorphicComponentPropsWithRef } from "../../types";
|
|
4
4
|
import { type IconName } from "../Icon/Icon";
|
|
5
5
|
export declare const mediaSize: Record<MediaItemSize, number>;
|
|
6
|
+
export declare const getMediaSize: (size: MediaItemSize | undefined) => number | undefined;
|
|
6
7
|
export type MediaItemProps = {
|
|
7
8
|
src: string;
|
|
8
9
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useState}from"react";import styled from"@emotion/styled";import{Icon}from"../Icon/Icon";import{Stack}from"../Stack/Stack";import{TextClamped}from"../Typography/TextClamped/TextClamped";import{Inline}from"../Inline/Inline";import{Image}from"../Image/Image";import{ContentText}from"../Content/ContentText/ContentText";export const mediaSize={xs:80,s:88,m:110,l:128,xl:204};let StyledTextClamped=styled(TextClamped,{target:"
|
|
1
|
+
import React,{useState}from"react";import styled from"@emotion/styled";import{forwardRefPolymorphic}from"../../shared/forwardRefPolymorphic";import{Icon}from"../Icon/Icon";import{Stack}from"../Stack/Stack";import{TextClamped}from"../Typography/TextClamped/TextClamped";import{Inline}from"../Inline/Inline";import{Image}from"../Image/Image";import{ContentText}from"../Content/ContentText/ContentText";export const mediaSize={xs:80,s:88,m:110,l:128,xl:204};export const getMediaSize=size=>size?mediaSize[size]:void 0;let StyledTextClamped=styled(TextClamped,{target:"e1oxgvtl0",label:"StyledTextClamped"})(),StyledMedia=styled("div",{target:"e1oxgvtl1",label:"StyledMedia"})(({squareByWidth,srcError})=>({height:"100%",...squareByWidth&&{position:"absolute",left:0,bottom:0,top:0,right:0},...srcError&&{display:"flex",alignItems:"center",justifyContent:"center"}})),StyledOverlay=styled("div",{target:"e1oxgvtl2",label:"StyledOverlay"})(()=>({position:"absolute",left:0,bottom:0,top:0,right:0})),StyledButton=styled("button",{target:"e1oxgvtl3",label:"StyledButton"})(({theme,size,width,isActive})=>({padding:0,backgroundColor:theme.values.color.background.transparent.default,border:"none",cursor:"pointer",borderRadius:theme.variables.size.borderRadius.s,width:getMediaSize(size)||width||"100%",outlineOffset:"1px",outline:`solid 2px ${theme.values.color.background.transparent.default}`,transition:"all 0.3s ease",[`&:hover ${StyledTextClamped}, &:active ${StyledTextClamped}`]:{color:theme.values.color.text.primary.default},[`&:hover ${StyledOverlay}`]:{backgroundColor:theme.values.color.mediaItem.overlay.hover},[`&:active ${StyledOverlay}`]:{backgroundColor:theme.values.color.mediaItem.overlay.active},...!isActive&&{"&:focus-visible":{outlineWidth:"2px",outlineStyle:"solid",outlineColor:"Highlight"},"@media (-webkit-min-device-pixel-ratio:0)":{"&:focus-visible":{outlineColor:"-webkit-focus-ring-color",outlineStyle:"auto"}}},...isActive&&{outlineColor:theme.values.color.border.secondary.active}})),StyledMediaContainer=styled("div",{target:"e1oxgvtl4",label:"StyledMediaContainer"})(({theme,size,height,backgroundColor,squareByWidth,srcError})=>({overflow:"hidden",border:"1px solid",borderColor:theme.values.color.border.secondary.default,borderRadius:theme.variables.size.borderRadius.s,position:"relative",backgroundClip:"padding-box",backgroundColor:theme.values.color.mediaItem.background[backgroundColor],height:getMediaSize(size)||height||"auto",...squareByWidth&&{paddingTop:"calc(100% - 2px)",height:"auto"},...srcError&&{backgroundColor:theme.values.color.background.transparent.active}})),StyledIconContainer=styled("div",{target:"e1oxgvtl5",label:"StyledIconContainer"})(({theme})=>({position:"absolute",left:theme.variables.size.spacing.xxs,bottom:theme.variables.size.spacing.xxs,overflow:"hidden",borderRadius:theme.variables.size.borderRadius.xs,backgroundColor:theme.values.color.mediaItem.categoryIcon.background.default,padding:theme.variables.size.spacing.xxs,color:theme.values.color.text.onAccent.default}));export const MediaItem=forwardRefPolymorphic(({"data-e2e-test-id":dataE2eTestId,as,src,title,showTitle=!0,fit="cover",categoryIcon,categoryLabel,categoryPlacement="outside",size,width,height,backgroundColor="transparent",hyphens="none",squareByWidth=!1,isActive,...rest},ref)=>{let[srcError,setSrcError]=useState(!1),showCategoryOver=categoryIcon&&(!size&&"inside"===categoryPlacement||"xs"===size||"s"===size||"m"===size),showCategoryUnder=categoryIcon&&categoryLabel&&(!size&&"outside"===categoryPlacement||"l"===size||"xl"===size),textSize=size&&["xs","s","m"].includes(size)?"xs":"s",noVisibleText=!showTitle&&!showCategoryUnder;return React.createElement(StyledButton,{"data-ds-id":"MediaItem","data-e2e-test-id":dataE2eTestId,as:as,ref:ref,size:size,width:width,isActive:isActive,...rest,"aria-label":noVisibleText?title:void 0},React.createElement(Stack,{space:"xs"},React.createElement(StyledMediaContainer,{size:size,height:height,backgroundColor:backgroundColor,squareByWidth:squareByWidth,srcError:srcError},React.createElement(StyledMedia,{squareByWidth:squareByWidth,srcError:srcError},srcError?React.createElement(Icon,{name:"image-broken",color:"tertiary"}):React.createElement(Image,{src:src,fit:fit,title:title,alt:title,width:"100%",height:"100%","aria-hidden":"true",onError:()=>{setSrcError(!0)}})),React.createElement(StyledOverlay,null),showCategoryOver&&React.createElement(StyledIconContainer,null,React.createElement(Icon,{name:categoryIcon,size:"s",color:"inherit"}))),(showCategoryUnder||showTitle)&&React.createElement(Stack,{space:"xxs"},showCategoryUnder&&React.createElement(Inline,{space:"xxs",vAlignItems:"center"},React.createElement(Icon,{name:categoryIcon,color:"quaternary",size:"s"}),React.createElement(ContentText,{color:"tertiary",size:"xs",transform:"uppercase",weight:"bold"},categoryLabel)),showTitle&&React.createElement(StyledTextClamped,{size:textSize,color:"secondary",lines:3,hyphens:hyphens,overflowWrap:"break-word"},title))))});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import styled from"@emotion/styled";import{Skeleton}from"../Skeleton/Skeleton";import{Stack}from"../Stack/Stack";import{TextSkeleton}from"../Typography/Text";import{
|
|
1
|
+
import React from"react";import styled from"@emotion/styled";import{Skeleton}from"../Skeleton/Skeleton";import{Stack}from"../Stack/Stack";import{TextSkeleton}from"../Typography/Text";import{getMediaSize}from"./MediaItem";let StyledMediaContainer=styled("div",{target:"e1f6kpba0",label:"StyledMediaContainer"})(({squareByWidth})=>({...squareByWidth&&{position:"relative",paddingTop:"100%"}})),StyledMedia=styled("div",{target:"e1f6kpba1",label:"StyledMedia"})(({squareByWidth,width,height})=>({width,height,...squareByWidth&&{position:"absolute",inset:0}}));export function MediaItemSkeleton({size,showTitle=!0,width,height,squareByWidth,"data-e2e-test-id":dataE2eTestId}){let mediaSizeValue=getMediaSize(size),mediaSizePx=mediaSizeValue&&`${mediaSizeValue}px`,mediaItemWidth=mediaSizePx||width||"100%",mediaItemHeight=mediaSizePx||height||"auto";return React.createElement(Stack,{space:"xs","data-e2e-test-id":dataE2eTestId,"data-ds-id":"MediaItemSkeleton"},React.createElement(StyledMediaContainer,{squareByWidth:squareByWidth},React.createElement(StyledMedia,{width:mediaItemWidth,height:mediaItemHeight,squareByWidth:squareByWidth},React.createElement(Skeleton,{borderRadius:"s"}))),showTitle&&React.createElement(TextSkeleton,{size:"xs"===size||"s"===size?"xs":"s",lines:2,width:mediaItemWidth}))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React,{isValidElement}from"react";import styled from"@emotion/styled";import{Inline}from"../Inline/Inline";import{flattenChildren}from"../../shared/flattenChildren";import{SubThemeProvider}from"../SubThemeProvider/SubThemeProvider";let StyledMediaViewerBar=styled("div",{target:"e1w5iaq30",label:"StyledMediaViewerBar"})(({theme})=>({display:"inline-flex",borderRadius:theme.variables.size.spacing.xxs,height:theme.variables.size.spacing.l,backgroundColor:theme.values.color.background.primary.default,color:theme.values.color.text.secondary.default,overflow:"hidden","> div":{width:"100%","> div":{lineHeight:"normal"}}})),StyledSeparator=styled("div",{target:"e1w5iaq31",label:"StyledSeparator"})(({theme})=>({width:theme.variables.size.dimension.mediaViewerBar.separator.width,height:theme.variables.size.spacing.l,backgroundColor:theme.values.color.background.primary.default}));export function MediaViewerBar({children,hasSeparator,"data-e2e-test-id":dataE2eTestId,...ariaAttributes}){let flattenedChildren=flattenChildren(children);return React.createElement(SubThemeProvider,{name:"dimmed"},React.createElement(StyledMediaViewerBar,{"data-e2e-test-id":dataE2eTestId,"data-ds-id":"MediaViewerBar",...ariaAttributes},React.createElement(Inline,{space:"zero",vAlignItems:"center",alignItems:"center",noWrap:!0},flattenedChildren.map((child,index)=>React.createElement(React.Fragment,{key:isValidElement(child)?child.key:index},hasSeparator&&index>0&&React.createElement(StyledSeparator,null),child)))))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{forwardRef}from"react";import styled from"@emotion/styled";import{Icon}from"../../Icon/Icon";import{MediaItem}from"../../MediaItem/MediaItem";let StyledThumbnail=styled("div",{target:"
|
|
1
|
+
import React,{forwardRef}from"react";import styled from"@emotion/styled";import{Icon}from"../../Icon/Icon";import{MediaItem}from"../../MediaItem/MediaItem";let StyledThumbnail=styled("div",{target:"eqnilxd0",label:"StyledThumbnail"})(({theme})=>({margin:theme.variables.size.spacing.xxs,height:"80px",position:"relative"})),StyledIconContainer=styled("div",{target:"eqnilxd1",label:"StyledIconContainer"})(({theme})=>({position:"absolute",top:theme.variables.size.spacing.xxs,left:theme.variables.size.spacing.xxs,overflow:"hidden",alignItems:"center",justifyContent:"center",backgroundColor:theme.values.color.mediaItem.categoryIcon.background.default,borderRadius:theme.variables.size.borderRadius.xs,padding:theme.variables.size.spacing.xxs,color:theme.values.color.text.onAccent.default,boxShadow:theme.values.elevation[1],display:"flex",zIndex:6}));export const CarouselThumbnail=forwardRef(({assetIndex,bottomLeftIconName,isActive,onClickThumbnail,src,title,topLeftIconName},ref)=>React.createElement(StyledThumbnail,{role:"presentation"},topLeftIconName&&React.createElement(StyledIconContainer,{"data-testid":"top-left-icon"},React.createElement(Icon,{name:topLeftIconName,size:"s",color:"inherit"})),React.createElement(MediaItem,{src:src,title:title??"asset",size:"xs",squareByWidth:!0,categoryIcon:bottomLeftIconName??void 0,categoryPlacement:"inside",showTitle:!1,onClick:()=>{onClickThumbnail(assetIndex)},onKeyDown:ev=>{ev.key.startsWith("Arrow")||"Tab"===ev.key||"Shift"===ev.key||onClickThumbnail(assetIndex,ev)},ref:ref,isActive:isActive})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useRef,useEffect}from"react";import styled from"@emotion/styled";import{Button}from"../../Button/Button";import{Icon}from"../../Icon/Icon";import{Inline}from"../../Inline/Inline";import{useIsScrollable}from"../useIsScrollable";import{CarouselThumbnail}from"../CarouselThumbnail/CarouselThumbnail";let StyledWrapper=styled("div",{target:"
|
|
1
|
+
import React,{useRef,useEffect}from"react";import styled from"@emotion/styled";import{Button}from"../../Button/Button";import{Icon}from"../../Icon/Icon";import{Inline}from"../../Inline/Inline";import{useIsScrollable}from"../useIsScrollable";import{CarouselThumbnail}from"../CarouselThumbnail/CarouselThumbnail";let StyledWrapper=styled("div",{target:"e1fy04om0",label:"StyledWrapper"})(({showNavButtons})=>({width:"100%",...showNavButtons?{padding:"0 40px"}:{padding:"0 8px"}})),StyledButtonWrapper=styled("div",{target:"e1fy04om1",label:"StyledButtonWrapper"})(({alignRight=!1,isScrollable,theme})=>({position:"absolute",top:"0",bottom:"0",left:alignRight?"auto":"0",right:alignRight?"0":"auto",height:"100%",width:40,display:"flex",boxShadow:isScrollable?theme.values.elevation[1]:"none",zIndex:1,button:{width:40}})),StyledOuterContainer=styled("div",{target:"e1fy04om2",label:"StyledOuterContainer"})(({theme})=>({position:"relative",display:"flex",flexWrap:"nowrap",justifyContent:"center",overflowX:"auto",overflowY:"hidden",paddingTop:theme.variables.size.spacing.xxs,scrollBehavior:"smooth",width:"100%",scrollbarWidth:"auto",scrollbarColor:`${theme.values.color.tag.background.gray} ${theme.values.color.background.transparent.active}`,"::-webkit-scrollbar":{height:"8px"},"::-webkit-scrollbar-thumb":{background:theme.values.color.tag.background.gray},"::-webkit-scrollbar-track":{background:theme.values.color.background.transparent.active}})),StyledInnerContainer=styled("div",{target:"e1fy04om3",label:"StyledInnerContainer"})({display:"flex",flexWrap:"nowrap",maxWidth:"100%"});export const MediaCarousel=({activeItemRef,currentIndex,mediaAssets,nextBtnAriaLabel,onClickNext,onClickPrevious,onClickThumbnail,prevBtnAriaLabel,setIsReady,showNavButtons,skipArrowKeysListener,...ariaAttributes})=>{let thumbnailCount=mediaAssets.length,scrollContainerRef=useRef(null),innerContainerRef=useRef(null),isScrollable=useIsScrollable(scrollContainerRef,innerContainerRef),currentIndexRef=useRef(currentIndex);useEffect(()=>{currentIndexRef.current=currentIndex},[currentIndex]),useEffect(()=>{activeItemRef?.current&&scrollContainerRef.current&&innerContainerRef.current&&setIsReady(()=>!0)},[activeItemRef,scrollContainerRef,innerContainerRef,setIsReady]);let handleClickNext=()=>{if(currentIndexRef.current!==thumbnailCount-1&&(onClickNext(),isScrollable&&scrollContainerRef.current&&activeItemRef?.current)){let itemWidth=activeItemRef.current.offsetWidth+8;scrollContainerRef.current?.scrollBy?.({left:itemWidth,behavior:"smooth"})}},handleClickPrevious=()=>{if(!(currentIndexRef.current<=0)&&(onClickPrevious(),isScrollable&&scrollContainerRef.current&&activeItemRef?.current)){let itemWidth=activeItemRef.current.offsetWidth+8;scrollContainerRef.current?.scrollBy?.({left:-itemWidth,behavior:"smooth"})}};return useEffect(()=>{if(skipArrowKeysListener)return;let currentRef=scrollContainerRef.current;if(currentRef)return currentRef.addEventListener("keydown",listener),()=>{currentRef.removeEventListener("keydown",listener)};function listener(event){"ArrowRight"===event.key&&handleClickNext(),"ArrowLeft"===event.key&&handleClickPrevious()}},[scrollContainerRef]),React.createElement(StyledWrapper,{showNavButtons:showNavButtons},showNavButtons&&React.createElement(StyledButtonWrapper,{isScrollable:isScrollable},React.createElement(Button,{variant:"tertiary",onClick:handleClickPrevious,disabled:0===currentIndex,size:"s","aria-label":prevBtnAriaLabel},React.createElement(Icon,{name:"chevron-left",color:"secondary"}))),React.createElement(StyledOuterContainer,{ref:scrollContainerRef,"aria-label":"thumbnails scrollable container",...ariaAttributes},React.createElement(StyledInnerContainer,{ref:innerContainerRef},React.createElement(Inline,{noWrap:!0,space:"xxxs"},mediaAssets.map(({src,title,bottomLeftIconName,topLeftIconName,xid},index)=>React.createElement(CarouselThumbnail,{key:`carousel-item-${xid}`,assetIndex:index,isActive:index===currentIndex,ref:index===currentIndex?activeItemRef:null,src:src,title:title,topLeftIconName:topLeftIconName,bottomLeftIconName:bottomLeftIconName,onClickThumbnail:onClickThumbnail}))))),showNavButtons&&React.createElement(StyledButtonWrapper,{alignRight:!0,isScrollable:isScrollable},React.createElement(Button,{variant:"tertiary",onClick:handleClickNext,disabled:currentIndex===thumbnailCount-1,size:"s","aria-label":nextBtnAriaLabel},React.createElement(Icon,{name:"chevron-right",color:"secondary"}))))};
|
|
@@ -19,4 +19,4 @@ export type NotificationProps = {
|
|
|
19
19
|
onClickDismiss?: () => void;
|
|
20
20
|
children?: React.ReactNode;
|
|
21
21
|
};
|
|
22
|
-
export declare function Notification({ type, text, icon, isDismissable, callToActionLabel, onClickDismiss, onClickCallToAction, expandable, expandButtonLabel, shrinkButtonLabel, children, adjustForSideNavToggle, closeButtonAriaLabel, "data-e2e-test-id": dataE2eTestId, ...ariaAttributes }: NotificationProps): React.ReactElement;
|
|
22
|
+
export declare function Notification({ type, text, icon, isDismissable, callToActionLabel, onClickDismiss, onClickCallToAction, expandable, expandButtonLabel, shrinkButtonLabel, children, adjustForSideNavToggle, closeButtonAriaLabel, "data-e2e-test-id": dataE2eTestId, ...ariaAttributes }: NotificationProps): React.ReactElement | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useState,useContext}from"react";import styled from"@emotion/styled";import{Card}from"../Card/Card";import{Box}from"../Box/Box";import{Columns,Column}from"../Column/Columns";import{Button}from"../Button/Button";import{Icon}from"../Icon/Icon";import{Text}from"../Typography/Text/Text";import{SubThemeProvider}from"../SubThemeProvider/SubThemeProvider";import{SubThemeContext}from"../SubThemeProvider/SubThemeContext";let StyledExpandingContainer=styled("div",{target:"
|
|
1
|
+
import React,{useState,useContext}from"react";import styled from"@emotion/styled";import{Card}from"../Card/Card";import{Box}from"../Box/Box";import{Columns,Column}from"../Column/Columns";import{Button}from"../Button/Button";import{Icon}from"../Icon/Icon";import{Text}from"../Typography/Text/Text";import{SubThemeProvider}from"../SubThemeProvider/SubThemeProvider";import{SubThemeContext}from"../SubThemeProvider/SubThemeContext";let StyledExpandingContainer=styled("div",{target:"elxowvq0",label:"StyledExpandingContainer"})(({isDismissed})=>({transform:`translateY(${isDismissed?"calc(-100% - 8px)":"0%"})`,transition:`transform ${200*!!isDismissed}ms cubic-bezier(0.0, 0.0, 0.25, 1.0)`})),StyledContainer=styled("div",{target:"elxowvq1",label:"StyledContainer"})(()=>({overflow:"hidden"})),DEFAULT_ICONS_BY_TYPE={info:"info",success:"check-circle",error:"alert-triangle"};export function Notification({type,text,icon,isDismissable,callToActionLabel,onClickDismiss,onClickCallToAction,expandable,expandButtonLabel,shrinkButtonLabel,children,adjustForSideNavToggle,closeButtonAriaLabel="Dismiss notification","data-e2e-test-id":dataE2eTestId,...ariaAttributes}){let[isExpanded,setIsExpanded]=useState(!1),[isDismissed,setIsDismissed]=useState(!1),subTheme=useContext(SubThemeContext),subThemeName=subTheme&&Object.keys(DEFAULT_ICONS_BY_TYPE).includes(subTheme)?type??subTheme:type??"info",iconName=void 0===icon?DEFAULT_ICONS_BY_TYPE[subThemeName]:icon;return isDismissed?null:React.createElement(StyledContainer,{"data-ds-id":"Notification",...ariaAttributes,role:"alert"},React.createElement(SubThemeProvider,{name:subThemeName},React.createElement(StyledExpandingContainer,{isDismissed:isDismissed},React.createElement(Card,{squareCorners:!0,"data-e2e-test-id":dataE2eTestId},React.createElement(Box,{space:"s",...adjustForSideNavToggle?{lSpace:["s","l"]}:{}},React.createElement(Columns,{gap:"s",vAlignItems:"top"},iconName&&React.createElement(Column,{size:"narrow"},React.createElement(Box,{vSpace:"xxs",space:"zero"},React.createElement(Icon,{"aria-label":subThemeName,role:"img",name:iconName,color:"primary","data-testid":"icon"}))),React.createElement(Column,{size:"fill"},React.createElement(Box,{vSpace:"xxs",space:"zero"},React.createElement(Text,null,text)))," ",(callToActionLabel||expandable)&&React.createElement(Column,{size:[12,"narrow","narrow"],order:["last","unset","unset"]},callToActionLabel&&React.createElement(Button,{size:"s",fullWidth:!0,onClick:onClickCallToAction},callToActionLabel),expandable&&React.createElement(Button,{size:"s",fullWidth:!0,onClick:()=>setIsExpanded(!isExpanded),rightIcon:isExpanded?"chevron-up":"chevron-down"},isExpanded?shrinkButtonLabel:expandButtonLabel)),isDismissable&&React.createElement(Column,{size:"narrow"},React.createElement(Button,{"aria-label":closeButtonAriaLabel,leftIcon:"x",variant:"tertiary",size:"s",onClick:()=>{setIsDismissed(!0),onClickDismiss&&setTimeout(onClickDismiss,200)}}))),isExpanded&&children)))))}
|
|
@@ -26,4 +26,4 @@ export type ButtonGroupProps<C extends React.ElementType = "button"> = {
|
|
|
26
26
|
buttonSize?: ButtonSize;
|
|
27
27
|
"data-e2e-test-id"?: string;
|
|
28
28
|
} & AriaAttributes;
|
|
29
|
-
export declare function ButtonGroup<C extends React.ElementType = "button">({ cancelButtonText, actionButton, secondaryButton, buttonSize, onButtonClick, "data-e2e-test-id": dataE2eTestId, "aria-describedby": ariaDescribedBy, ...ariaAttributes }: ButtonGroupProps<C>): React.ReactElement;
|
|
29
|
+
export declare function ButtonGroup<C extends React.ElementType = "button">({ cancelButtonText, actionButton, secondaryButton, buttonSize, onButtonClick, "data-e2e-test-id": dataE2eTestId, "aria-describedby": ariaDescribedBy, ...ariaAttributes }: ButtonGroupProps<C>): React.ReactElement | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import{mergeAriaDescribedBy}from"../../../shared/ariaAttributes";import{IconTile}from"../../IconTile/IconTile";import{Link}from"../../Link/Link";import{Stack}from"../../Stack/Stack";import{H3}from"../../Typography/Header";import{Text}from"../../Typography/Text";import{ButtonGroup}from"../ButtonGroup/ButtonGroup";let DEFAULT_ICONS_BY_VARIANT={brand:"face-happy",warning:"alert-circle",error:"alert-triangle",neutral:"info",ai:"ai-sparkle"},ICON_COLORS={brand:"brand",warning:"yellow",error:"red",neutral:"gray",ai:"purple"};export function EmptyState({title,titleAs="p",description,variant,icon,children,"data-e2e-test-id":dataE2eTestId,...ariaAttributes}){let reactId=React.useId(),descriptionId=description&&React.isValidElement(children)?`${reactId}-description`:void 0,action=
|
|
1
|
+
import React from"react";import{mergeAriaDescribedBy}from"../../../shared/ariaAttributes";import{IconTile}from"../../IconTile/IconTile";import{Link}from"../../Link/Link";import{Stack}from"../../Stack/Stack";import{H3}from"../../Typography/Header";import{Text}from"../../Typography/Text";import{ButtonGroup}from"../ButtonGroup/ButtonGroup";let DEFAULT_ICONS_BY_VARIANT={brand:"face-happy",warning:"alert-circle",error:"alert-triangle",neutral:"info",ai:"ai-sparkle"},ICON_COLORS={brand:"brand",warning:"yellow",error:"red",neutral:"gray",ai:"purple"},describeChild=({children,descriptionId})=>descriptionId&&React.isValidElement(children)?React.cloneElement(children,{"aria-describedby":mergeAriaDescribedBy(children.props["aria-describedby"],descriptionId)}):children;export function EmptyState({title,titleAs="p",description,variant,icon,children,"data-e2e-test-id":dataE2eTestId,...ariaAttributes}){let reactId=React.useId(),descriptionId=description&&React.isValidElement(children)?`${reactId}-description`:void 0,action=describeChild({children,descriptionId});return React.createElement(Stack,{alignItems:"center",space:"s","data-e2e-test-id":dataE2eTestId,"data-ds-id":"EmptyState",...ariaAttributes},variant&&React.createElement(IconTile,{icon:icon??DEFAULT_ICONS_BY_VARIANT[variant],color:ICON_COLORS[variant],"aria-hidden":!0}),React.createElement(Stack,{space:"zero",alignItems:"center"},React.createElement(H3,{as:titleAs},title),description&&React.createElement(Text,{id:descriptionId,align:"center",size:"s",color:"tertiary"},description)),action)}EmptyState.ButtonGroup=function({...rest}){return React.createElement(ButtonGroup,{...rest,buttonSize:"s"})},EmptyState.Link=function({children,...rest}){return React.createElement(Link,{...rest,size:"s",color:"accent",weight:"bold",inline:!1},children)};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React,{useMemo,useRef,useId,useEffect,useState}from"react";import styled from"@emotion/styled";import{keyframes}from"@emotion/react";import{H2,H4,H6,H3}from"../../Typography/Header/Header";import{Stack}from"../../Stack/Stack";import{Container}from"../../Container/Container";import{Box}from"../../Box/Box";import{ButtonGroup}from"../ButtonGroup/ButtonGroup";import{PictogramButton}from"../../PictogramButton/PictogramButton";import{Text}from"../../Typography/Text/Text";import{useResponsiveValue}from"../../../shared/mediaQueries";import{useScrollDetection}from"../../../shared/useScrollDetection";import{appendId}from"../../../shared/appendId";import{useWindow}from"../../../shared/useWindow";import{Lightbox}from"../../Lightbox/Lightbox";let getDesktopSpace=theme=>theme.variables.size.spacing.l,getDesktopInnerSpace=theme=>theme.variables.size.spacing.xl,getMobileSpace=theme=>theme.variables.size.spacing.m,getMobileInnerSpace=theme=>theme.variables.size.spacing.m,StyledModalWrapper=styled("div",{target:"
|
|
1
|
+
import React,{useMemo,useRef,useId,useEffect,useState}from"react";import styled from"@emotion/styled";import{keyframes}from"@emotion/react";import{H2,H4,H6,H3}from"../../Typography/Header/Header";import{Stack}from"../../Stack/Stack";import{Container}from"../../Container/Container";import{Box}from"../../Box/Box";import{ButtonGroup}from"../ButtonGroup/ButtonGroup";import{PictogramButton}from"../../PictogramButton/PictogramButton";import{Text}from"../../Typography/Text/Text";import{useResponsiveValue}from"../../../shared/mediaQueries";import{useScrollDetection}from"../../../shared/useScrollDetection";import{appendId}from"../../../shared/appendId";import{useWindow}from"../../../shared/useWindow";import{Lightbox}from"../../Lightbox/Lightbox";let getDesktopSpace=theme=>theme.variables.size.spacing.l,getDesktopInnerSpace=theme=>theme.variables.size.spacing.xl,getMobileSpace=theme=>theme.variables.size.spacing.m,getMobileInnerSpace=theme=>theme.variables.size.spacing.m,StyledModalWrapper=styled("div",{target:"e1v2szni0",label:"StyledModalWrapper"})(({theme,isFullScreen,size})=>{let fadeInModal=useMemo(()=>keyframes`
|
|
2
2
|
from {
|
|
3
3
|
opacity: ${theme.variables.opacity.hidden};
|
|
4
4
|
transform: translateY(20px);
|
|
@@ -7,4 +7,4 @@ import React,{useMemo,useRef,useId,useEffect,useState}from"react";import styled
|
|
|
7
7
|
opacity: ${theme.variables.opacity.visible};
|
|
8
8
|
transform: translateY(0);
|
|
9
9
|
}
|
|
10
|
-
`,[theme.variables.opacity.hidden,theme.variables.opacity.visible]);return{animation:`${fadeInModal} ${theme.variables.animation.modal.open.duration} ${theme.variables.animation.modal.open.delay} ${theme.variables.animation.modal.open.timingFunction} both`,"&:focus":{outline:"none"},...useResponsiveValue({width:[`calc(100% - ${getMobileSpace(theme)} * 2)`,isFullScreen?`calc(100% - ${getDesktopSpace(theme)} * 2)`:theme.variables.size.dimension.modal.width[size]]})}}),StyledInner=styled("div",{target:"
|
|
10
|
+
`,[theme.variables.opacity.hidden,theme.variables.opacity.visible]);return{animation:`${fadeInModal} ${theme.variables.animation.modal.open.duration} ${theme.variables.animation.modal.open.delay} ${theme.variables.animation.modal.open.timingFunction} both`,"&:focus":{outline:"none"},...useResponsiveValue({width:[`calc(100% - ${getMobileSpace(theme)} * 2)`,isFullScreen?`calc(100% - ${getDesktopSpace(theme)} * 2)`:theme.variables.size.dimension.modal.width[size]]})}}),StyledInner=styled("div",{target:"e1v2szni1",label:"StyledInner"})(({theme,isFullScreen,size})=>{let mobileVerticalSpace=getMobileSpace(theme),mobileInnerVerticalSpace=getMobileInnerSpace(theme),desktopVerticalSpace=getDesktopSpace(theme),desktopInnerVerticalSpace=getDesktopInnerSpace(theme),fullScreenMobile=`calc(100dvh - ${mobileVerticalSpace} * 2 - ${mobileInnerVerticalSpace} * 2)`;return{display:"flex",...useResponsiveValue({height:["l"===size||isFullScreen?fullScreenMobile:"auto",isFullScreen?`calc(100dvh - ${desktopVerticalSpace} * 2 - ${desktopInnerVerticalSpace} * 2)`:"l"===size?`calc(100dvh - ${desktopVerticalSpace} * 2 - ${desktopInnerVerticalSpace} * 2 - ${theme.variables.size.dimension.modal.margin.l} * 2)`:"auto"],maxHeight:[fullScreenMobile,isFullScreen?"auto":"l"===size?`calc(${theme.variables.size.dimension.modal.maxHeight.l} - ${desktopInnerVerticalSpace} * 2)`:`calc(100dvh - ${desktopVerticalSpace} * 2 - ${desktopInnerVerticalSpace} * 2)`]}),flexDirection:"column",overflow:"hidden"}}),StyledBody=styled("div",{target:"e1v2szni2",label:"StyledBody"})(({theme,borderBottom,borderTop,size,isFullScreen,privateProps})=>({overflowY:"auto",maxHeight:"100%",...(isFullScreen||"l"===size)&&{flex:1},...privateProps?.height&&{height:privateProps?.height},...borderBottom&&{borderBottom:`1px solid ${theme.values.color.divider.primary}`},...borderTop&&{borderTop:`1px solid ${theme.values.color.divider.primary}`}})),StyledImg=styled("img",{target:"e1v2szni3",label:"StyledImg"})(()=>({width:"100%",aspectRatio:"16/9"})),StyledMaxWidth=styled("div",{target:"e1v2szni4",label:"StyledMaxWidth"})(({theme})=>({maxWidth:theme.variables.size.dimension.modal.fullScreenContentWidth,margin:"0 auto",height:"100%"})),StyledXContainer=styled("div",{target:"e1v2szni5",label:"StyledXContainer"})(({theme})=>({position:"absolute",...useResponsiveValue({top:[theme.variables.size.spacing.s,theme.variables.size.spacing.l],right:[theme.variables.size.spacing.s,theme.variables.size.spacing.l]})})),Footer=({children,alignItems=["stretch","right"],isShortViewport})=>React.createElement(Box,{space:"zero",tSpace:isShortViewport?"m":"l"},React.createElement(Stack,{alignItems:alignItems},children)),HorizontalOffset=({children,isFullScreen,isMaxWidthLimit,height})=>React.createElement(Box,{space:["m","xl"],vSpace:"zero",height:height},isFullScreen&&isMaxWidthLimit?React.createElement(StyledMaxWidth,null,children):children);function getIsShortViewport(window){return void 0!==window&&window.innerHeight<420}export function Modal({header,subHeader,labelHeader,children,imageUrl,ImageComponent,secondaryButton,cancelButtonLabel,isDismissible=!0,isFullScreen,isMaxWidthLimit=!0,actionButton,role="dialog",onAction,size="m",privateProps:{skipPortal,height,zeroPadding,tabbableOptions}={skipPortal:!1,height:void 0,zeroPadding:!1},portalContainer,closeButtonAriaLabel="Dismiss Dialog","data-e2e-test-id":dataE2eTestId,imageAlt,initialFocus,...ariaAttributes}){let{"aria-label":ariaLabel,"aria-describedby":ariaDescribedBy,...restAriaAttributes}=ariaAttributes,backdropRef=useRef(null),subHeaderId=useId(),window=useWindow(),{scrollableRef,isScrollBottom,isScrollTop,hasScroll}=useScrollDetection(),[isShortViewport,setIsShortViewport]=useState(getIsShortViewport(window));useEffect(()=>{let resizeObserver;return"undefined"!=typeof ResizeObserver&&backdropRef.current&&(resizeObserver=new ResizeObserver(()=>{setIsShortViewport(getIsShortViewport(window))})).observe(backdropRef.current),()=>{resizeObserver&&resizeObserver.disconnect()}},[window]);let handleClose=()=>{onAction?.("cancel")},hasImage=imageUrl||ImageComponent,isImageVisible=!isShortViewport&&!!hasImage,horizontalOffsetProps={isFullScreen,isMaxWidthLimit},hasHeaderRow=isDismissible||!!(labelHeader||header||subHeader||isImageVisible),closeButton=isDismissible&&React.createElement(StyledXContainer,null,React.createElement(PictogramButton,{variant:"tertiary",icon:"x",size:"s",onClick:handleClose,"aria-label":closeButtonAriaLabel,"data-modal-close-btn":!0}));return React.createElement(Lightbox,{backdropRef:backdropRef,portalContainer:portalContainer,handleClose:handleClose,isDismissible:isDismissible,privateProps:{skipPortal,tabbableOptions},initialFocus:initialFocus},React.createElement(StyledModalWrapper,{role:role,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"Modal",isFullScreen:isFullScreen,size:size,"aria-label":ariaLabel||header,"aria-describedby":subHeader?appendId(ariaDescribedBy,subHeaderId):ariaDescribedBy,...restAriaAttributes,"aria-modal":"true",tabIndex:-1},React.createElement(Container,{elevation:4},React.createElement(Box,{space:"zero",vSpace:["m","xl"]},React.createElement(StyledInner,{isFullScreen:isFullScreen,size:size},hasHeaderRow&&React.createElement(HorizontalOffset,horizontalOffsetProps,React.createElement(Box,{space:"zero",bSpace:"s"},React.createElement(Stack,{space:isImageVisible?["s","l"]:"zero"},isImageVisible&&(imageUrl?React.createElement(Box,{space:"zero",tSpace:["xl","l"]},React.createElement(StyledImg,{src:imageUrl,alt:imageAlt})):ImageComponent&&React.createElement(ImageComponent,null)),React.createElement(Stack,{space:"xxs"},labelHeader&&React.createElement(H6,{as:"div"},labelHeader),React.createElement(Stack,{space:"zero"},header&&React.createElement(isShortViewport?H3:H2,{as:"h1"},header),subHeader&&React.createElement(H4,{as:"h2",color:"tertiary",id:subHeaderId},subHeader)))))),React.createElement(StyledBody,{ref:scrollableRef,size:size,isFullScreen:isFullScreen,borderBottom:hasScroll&&!isScrollBottom,borderTop:hasScroll&&!isScrollTop,privateProps:{height}},zeroPadding?children:React.createElement(Box,{space:"zero",vSpace:"xxxs",height:"100%"},React.createElement(HorizontalOffset,{...horizontalOffsetProps,height:"100%"},children))),(actionButton||cancelButtonLabel||secondaryButton)&&React.createElement(HorizontalOffset,horizontalOffsetProps,React.createElement(Footer,{isShortViewport:isShortViewport},React.createElement(ButtonGroup,{actionButton:actionButton,secondaryButton:secondaryButton,cancelButtonText:cancelButtonLabel,onButtonClick:onAction}))),closeButton)))))}Modal.Stack=({children,...rest})=>React.createElement(Stack,{...rest,space:"m"},children),Modal.Text=({children,...rest})=>React.createElement(Text,{...rest,size:"m",color:"tertiary"},children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useCallback}from"react";import styled from"@emotion/styled";import{getAriaAttributes}from"../../shared/ariaAttributes";import{Icon}from"../Icon/Icon";import{Inline}from"../Inline/Inline";import{Tooltip}from"../Tooltip/Tooltip";let StyledPictogramButton=styled("button",{target:"
|
|
1
|
+
import React,{useCallback}from"react";import styled from"@emotion/styled";import{forwardRefPolymorphic}from"../../shared/forwardRefPolymorphic";import{getAriaAttributes}from"../../shared/ariaAttributes";import{Icon}from"../Icon/Icon";import{Inline}from"../Inline/Inline";import{Tooltip}from"../Tooltip/Tooltip";let StyledPictogramButton=styled("button",{target:"e1n1i57a0",label:"StyledPictogramButton"})(({theme,variant,size,squareCorners,disabled})=>{let basePadding="xs"===size?theme.variables.size.spacing.xxs:theme.variables.size.spacing.xs;return{"&[type='button']":{appearance:"none",MozAppearance:"none",WebkitAppearance:"none"},border:0,display:"inline-block",textTransform:"none",textDecoration:"none",borderRadius:theme.variables.size.borderRadius.xs,fontFamily:theme.variables.fontFamily.lato,fontSize:theme.variables.size.font.s,lineHeight:theme.variables.size.lineHeight.xs,fontWeight:theme.variables.weight.bold,padding:basePadding,cursor:"pointer",...disabled&&{opacity:theme.variables.opacity.disabled,cursor:"not-allowed"},..."secondary"===variant&&{border:"1px solid",borderColor:theme.values.color.border.primary.default,backgroundColor:theme.values.color.background.transparent.default,padding:parseInt(basePadding,10)-1,color:theme.values.color.icon.secondary.default,...!disabled&&{"&:hover":{color:theme.values.color.icon.primary.default,borderColor:theme.values.color.border.primary.default,backgroundColor:theme.values.color.background.transparent.hover},"&:active":{borderColor:theme.values.color.border.primary.active,backgroundColor:theme.values.color.background.transparent.active}}},..."tertiary"===variant&&{backgroundColor:theme.values.color.background.transparent.default,color:theme.values.color.icon.secondary.default,...!disabled&&{"&:hover":{backgroundColor:theme.values.color.background.transparent.hover},"&:active":{color:theme.values.color.icon.primary.default,backgroundColor:theme.values.color.background.transparent.active}}},..."quaternary"===variant&&{backgroundColor:theme.values.color.background.transparent.default,color:theme.values.color.icon.tertiary.default,...!disabled&&{"&:hover":{backgroundColor:theme.values.color.background.transparent.hover},"&:active":{color:theme.values.color.icon.secondary.default,backgroundColor:theme.values.color.background.transparent.active}}},...squareCorners&&{borderRadius:"0"}}});export const PictogramButton=forwardRefPolymorphic(({ariaAttributes,type="button",size="xs",variant="tertiary",disabled=!1,onClick,onFocus,onBlur,"data-e2e-test-id":dataE2eTestId,as,icon,label,squareCorners=!1,...rest},ref)=>{let mergedAriaAttributes=getAriaAttributes(rest,ariaAttributes),handleClick=useCallback(e=>{disabled&&e.preventDefault(),onClick&&onClick(e)},[disabled,onClick]),ariaLabelProp=label||ariaAttributes?.["aria-label"]?{"aria-label":ariaAttributes?.["aria-label"]||label}:{},pictogramContent=React.createElement(StyledPictogramButton,{ref:ref,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"PictogramButton",as:as,disabled:disabled,type:as&&"button"!==as?void 0:type??void 0,variant:variant,size:size,squareCorners:squareCorners,onClick:handleClick,onFocus:onFocus,onBlur:onBlur,...mergedAriaAttributes,...ariaLabelProp,...rest},React.createElement(Inline,{vAlignItems:"center",alignItems:"center",space:"xxs",noWrap:!0},React.createElement(Icon,{"aria-hidden":!0,size:"m"===size?"m":"s",name:icon,"data-testid":icon,"data-e2e-test-id":icon})));return label?React.createElement(Tooltip,{content:label},pictogramContent):pictogramContent});
|
|
@@ -13,10 +13,10 @@ export declare function usePortalChildZIndex(zIndex: number): number;
|
|
|
13
13
|
* @param portalContainer
|
|
14
14
|
* @returns
|
|
15
15
|
*/
|
|
16
|
-
export declare function usePortalContainerElement(portalContainer?: HTMLElement | null): Element;
|
|
16
|
+
export declare function usePortalContainerElement(portalContainer?: HTMLElement | null): Element | null;
|
|
17
17
|
export type PortalProps = {
|
|
18
18
|
children: React.ReactNode;
|
|
19
19
|
/** Custom portal container to render popup into */
|
|
20
20
|
portalContainer?: HTMLElement | null;
|
|
21
21
|
};
|
|
22
|
-
export declare function Portal({ children, portalContainer, }: PortalProps): React.ReactElement;
|
|
22
|
+
export declare function Portal({ children, portalContainer, }: PortalProps): React.ReactElement | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import styled from"@emotion/styled";import isPropValid from"@emotion/is-prop-valid";import{Icon}from"../Icon/Icon";import{getPillStyles}from"../../shared/mixins";import{Inline}from"../Inline/Inline";import{TextClamped}from"../Typography/TextClamped/TextClamped";let StyledPromptButton=styled("button",{shouldForwardProp:prop=>isPropValid(prop),target:"
|
|
1
|
+
import React from"react";import styled from"@emotion/styled";import isPropValid from"@emotion/is-prop-valid";import{forwardRefPolymorphic}from"../../shared/forwardRefPolymorphic";import{Icon}from"../Icon/Icon";import{getPillStyles}from"../../shared/mixins";import{Inline}from"../Inline/Inline";import{TextClamped}from"../Typography/TextClamped/TextClamped";let StyledPromptButton=styled("button",{shouldForwardProp:prop=>isPropValid(prop),target:"e94xbpi0",label:"StyledPromptButton"})(({theme,disabled,leftIcon,variant})=>getPillStyles({theme,disabled,leftIcon,variant})),CustomTextClamped=styled(TextClamped,{target:"e94xbpi1",label:"CustomTextClamped"})({fontSize:"inherit",lineHeight:"inherit",fontWeight:"inherit",color:"inherit"});export const PromptButton=forwardRefPolymorphic(({as,children,disabled=!1,leftIcon,type="button","data-e2e-test-id":dataE2eTestId,...rest},ref)=>React.createElement(StyledPromptButton,{ref:ref,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"PromptButton",as:as,disabled:disabled,type:as&&"button"!==as?void 0:type,leftIcon:leftIcon,tabIndex:0,...rest},React.createElement(Inline,{alignItems:"center",vAlignItems:"center",space:"xxs",noWrap:!0},leftIcon&&React.createElement(Icon,{"aria-hidden":!0,size:"s",name:leftIcon,"data-testid":leftIcon,"data-e2e-test-id":leftIcon}),React.createElement(CustomTextClamped,{as:"span"},children))));
|
|
@@ -10,4 +10,4 @@ export type AutocompleteListProps = {
|
|
|
10
10
|
autocompleteListFooter?: ReactElement;
|
|
11
11
|
} & Pick<CategoryListProps, "onListItemClick"> & Pick<PromptTextAreaProps, "name" | "value"> & Pick<PortalProps, "portalContainer">;
|
|
12
12
|
export declare function getAutocompleteListId(name: string): string;
|
|
13
|
-
export declare function AutocompleteList({ name, value, autocompleteListItems, triggerRef, portalContainer, selectedListItem, isOpen, autocompleteListFooter, onListItemClick, }: AutocompleteListProps): ReactElement;
|
|
13
|
+
export declare function AutocompleteList({ name, value, autocompleteListItems, triggerRef, portalContainer, selectedListItem, isOpen, autocompleteListFooter, onListItemClick, }: AutocompleteListProps): ReactElement | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useEffect,useRef}from"react";import{usePress}from"@react-aria/interactions";import styled from"@emotion/styled";import{Box}from"../Box/Box";import{Stack}from"../Stack/Stack";import{CategoryList}from"./CategoryList";import{Container}from"../Container";import{Portal,usePortalChildZIndex}from"../Portal/Portal";import{Inline}from"../Inline/Inline";import{useAutocompleteListPosition}from"./useAutocompleteListPosition";export function getAutocompleteListId(name){return`${name}_AutocompleteList`}let StyledContainer=styled("div",{target:"
|
|
1
|
+
import React,{useEffect,useRef}from"react";import{usePress}from"@react-aria/interactions";import styled from"@emotion/styled";import{Box}from"../Box/Box";import{Stack}from"../Stack/Stack";import{CategoryList}from"./CategoryList";import{Container}from"../Container";import{Portal,usePortalChildZIndex}from"../Portal/Portal";import{Inline}from"../Inline/Inline";import{useAutocompleteListPosition}from"./useAutocompleteListPosition";export function getAutocompleteListId(name){return`${name}_AutocompleteList`}let StyledContainer=styled("div",{target:"etdk1ck0",label:"StyledContainer"})(({theme})=>({position:"absolute",zIndex:usePortalChildZIndex(theme.variables.zIndex.dropdown)})),StyledListContainer=styled("div",{target:"etdk1ck1",label:"StyledListContainer"})(({theme})=>({backgroundColor:theme.values.color.canvas,borderRadius:theme.variables.size.borderRadius.s}));export function AutocompleteList({name,value,autocompleteListItems=[],triggerRef,portalContainer,selectedListItem,isOpen,autocompleteListFooter,onListItemClick}){let menuRef=useRef(null),{pressProps}=usePress({preventFocusOnPress:!0}),{listStyle,calculateStyle}=useAutocompleteListPosition({triggerRef,menuRef,isOpen});useEffect(()=>{isOpen&&calculateStyle()},[value,calculateStyle,isOpen]);let lists=autocompleteListItems.map(listItem=>React.createElement(CategoryList,{name:name,key:listItem.category,...listItem,selectedListItem:selectedListItem,onListItemClick:onListItemClick})),listElm=React.createElement(StyledContainer,{...pressProps,ref:menuRef,style:listStyle,id:getAutocompleteListId(name),role:"listbox",translate:"no"},React.createElement(Container,null,React.createElement(Box,{space:"xxs"},React.createElement(StyledListContainer,null,React.createElement(Box,{space:"s",vSpace:"s",bSpace:"xs"},React.createElement(Stack,{space:"xs"},React.createElement(Stack,{space:"s"},lists),React.createElement(Inline,{alignItems:"center"},autocompleteListFooter??[])))))));return isOpen?React.createElement(Portal,{portalContainer:portalContainer},listElm):null}
|