@procore/core-react 12.38.0 → 12.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jest/testShims.js +6 -0
- package/CHANGELOG.md +43 -0
- package/dist/AnchorNavigation/AnchorNavigation.styles.js +3 -3
- package/dist/Avatar/Avatar.styles.js +6 -6
- package/dist/Avatar/Avatar.styles.js.map +1 -1
- package/dist/AvatarStack/AvatarStack.js +65 -25
- package/dist/AvatarStack/AvatarStack.js.map +1 -1
- package/dist/AvatarStack/AvatarStack.styles.js +8 -8
- package/dist/AvatarStack/AvatarStack.styles.js.map +1 -1
- package/dist/AvatarStack/useAvatarPopover.d.ts +14 -0
- package/dist/AvatarStack/useAvatarPopover.js +57 -0
- package/dist/AvatarStack/useAvatarPopover.js.map +1 -0
- package/dist/AvatarStack/useAvatarPopover.types.d.ts +4 -0
- package/dist/AvatarStack/useAvatarPopover.types.js +2 -0
- package/dist/AvatarStack/useAvatarPopover.types.js.map +1 -0
- package/dist/Badge/Badge.styles.js +2 -2
- package/dist/BadgePill/BadgePill.styles.js +4 -4
- package/dist/Banner/Banner.styles.js +10 -10
- package/dist/Box/Box.styles.js +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
- package/dist/Button/Button.styles.js +5 -5
- package/dist/Calendar/Calendar.styles.js +9 -9
- package/dist/Card/Card.styles.js +1 -1
- package/dist/Checkbox/Checkbox.d.ts +0 -1
- package/dist/Checkbox/Checkbox.js +5 -6
- package/dist/Checkbox/Checkbox.js.map +1 -1
- package/dist/Checkbox/Checkbox.styles.js +6 -6
- package/dist/ContactItem/ContactItem.styles.js +5 -5
- package/dist/Content/Content.styles.js +2 -2
- package/dist/DateInput/DateInput.js +12 -2
- package/dist/DateInput/DateInput.js.map +1 -1
- package/dist/DateInput/DateInput.styles.js +6 -6
- package/dist/DateSelect/DateSelect.types.d.ts +1 -1
- package/dist/DateSelect/DateSelect.types.js.map +1 -1
- package/dist/DetailPage/DetailPage.styles.js +7 -7
- package/dist/Dropdown/Dropdown.styles.js +3 -3
- package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
- package/dist/Dropzone/Dropzone.js +1 -1
- package/dist/Dropzone/Dropzone.styles.js +9 -9
- package/dist/EmptyState/EmptyState.styles.js +6 -6
- package/dist/Field/Field.styles.js +3 -3
- package/dist/FileList/FileList.js +3 -7
- package/dist/FileList/FileList.js.map +1 -1
- package/dist/FileList/FileList.styles.d.ts +0 -1
- package/dist/FileList/FileList.styles.js +3 -7
- package/dist/FileList/FileList.styles.js.map +1 -1
- package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
- package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
- package/dist/FileSelect/FileSelect.styles.js +2 -2
- package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
- package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
- package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
- package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
- package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
- package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
- package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
- package/dist/FileToken/FileToken.styles.js +4 -4
- package/dist/FilterToken/FilterToken.styles.js +5 -5
- package/dist/FlexList/FlexList.styles.js +1 -1
- package/dist/Form/Form.js +74 -58
- package/dist/Form/Form.js.map +1 -1
- package/dist/Form/Form.styles.d.ts +0 -14
- package/dist/Form/Form.styles.js +14 -24
- package/dist/Form/Form.styles.js.map +1 -1
- package/dist/Form/Form.types.d.ts +22 -2
- package/dist/Form/Form.types.js.map +1 -1
- package/dist/Form/FormFieldTooltip.js +4 -11
- package/dist/Form/FormFieldTooltip.js.map +1 -1
- package/dist/Form/StyledFormikForm.styles.js +2 -2
- package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
- package/dist/Grid/Grid.styles.js +2 -2
- package/dist/GroupSelect/GroupSelect.js +5 -4
- package/dist/GroupSelect/GroupSelect.js.map +1 -1
- package/dist/GroupSelect/GroupSelect.styles.js +1 -1
- package/dist/GroupSelect/GroupSelect.types.d.ts +5 -5
- package/dist/GroupSelect/GroupSelect.types.js.map +1 -1
- package/dist/Input/Input.styles.js +1 -1
- package/dist/Link/Link.styles.js +1 -1
- package/dist/ListPage/ListPage.styles.js +8 -8
- package/dist/Loader/Loader.styles.js +2 -2
- package/dist/Menu/Menu.js +1 -5
- package/dist/Menu/Menu.js.map +1 -1
- package/dist/MenuImperative/MenuImperative.js +7 -10
- package/dist/MenuImperative/MenuImperative.js.map +1 -1
- package/dist/MenuImperative/MenuImperative.styles.d.ts +2 -3
- package/dist/MenuImperative/MenuImperative.styles.js +26 -25
- package/dist/MenuImperative/MenuImperative.styles.js.map +1 -1
- package/dist/MenuImperative/MenuImperative.types.d.ts +4 -0
- package/dist/MenuImperative/MenuImperative.types.js.map +1 -1
- package/dist/MenuImperative/sensors.js +16 -58
- package/dist/MenuImperative/sensors.js.map +1 -1
- package/dist/Modal/Modal.styles.js +13 -13
- package/dist/MultiSelect/MultiSelect.js +50 -28
- package/dist/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/MultiSelect/MultiSelect.styles.d.ts +1 -0
- package/dist/MultiSelect/MultiSelect.styles.js +12 -8
- package/dist/MultiSelect/MultiSelect.styles.js.map +1 -1
- package/dist/MultiSelect/MultiSelect.types.d.ts +31 -1
- package/dist/MultiSelect/MultiSelect.types.js.map +1 -1
- package/dist/NextMenu/NextMenu.styles.js +3 -3
- package/dist/Notation/Notation.js +1 -1
- package/dist/NumberInput/NumberInput.styles.js +7 -7
- package/dist/Overlay/OverlayArrow.styles.js +1 -1
- package/dist/OverlayTrigger/a11yPresets.js +5 -3
- package/dist/OverlayTrigger/a11yPresets.js.map +1 -1
- package/dist/PageLayout/PageLayout.js +31 -12
- package/dist/PageLayout/PageLayout.js.map +1 -1
- package/dist/PageLayout/PageLayout.styles.js +16 -16
- package/dist/PageLayout/PageLayout.types.d.ts +10 -0
- package/dist/PageLayout/PageLayout.types.js.map +1 -1
- package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +1 -1
- package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
- package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
- package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
- package/dist/Pagination/Pagination.styles.js +5 -5
- package/dist/Panel/Panel.styles.js +11 -11
- package/dist/Pill/Pill.styles.js +3 -3
- package/dist/PillSelect/PillSelect.js +4 -3
- package/dist/PillSelect/PillSelect.js.map +1 -1
- package/dist/PillSelect/PillSelect.styles.js +4 -4
- package/dist/Popover/Popover.styles.js +2 -2
- package/dist/Portal/Portal.styles.js +1 -1
- package/dist/ProgressBar/ProgressBar.styles.js +2 -2
- package/dist/RadioButton/RadioButton.styles.js +3 -3
- package/dist/Required/Required.styles.js +3 -3
- package/dist/Search/Search.styles.js +5 -5
- package/dist/Section/Section.styles.js +9 -9
- package/dist/Section/Section.styles.js.map +1 -1
- package/dist/SegmentedController/SegmentedController.js +1 -2
- package/dist/SegmentedController/SegmentedController.js.map +1 -1
- package/dist/SegmentedController/SegmentedController.styles.js +4 -4
- package/dist/Select/Select.d.ts +3 -4
- package/dist/Select/Select.js +2 -2
- package/dist/Select/Select.js.map +1 -1
- package/dist/Select/Select.styles.js +9 -9
- package/dist/Select/Select.styles.js.map +1 -1
- package/dist/Select/Select.types.d.ts +7 -0
- package/dist/Select/Select.types.js.map +1 -1
- package/dist/Select/index.d.ts +1 -1
- package/dist/Select/index.js.map +1 -1
- package/dist/Semantic/Semantic.styles.js +9 -9
- package/dist/Slider/Slider.styles.js +5 -5
- package/dist/Spinner/Spinner.styles.js +7 -7
- package/dist/SplitViewCard/SplitViewCard.js +13 -0
- package/dist/SplitViewCard/SplitViewCard.js.map +1 -1
- package/dist/SplitViewCard/SplitViewCard.styles.js +8 -8
- package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
- package/dist/SuperSelect/SuperSelect.styles.js +38 -38
- package/dist/Switch/Switch.styles.js +4 -4
- package/dist/Table/Table.styles.d.ts +1 -1
- package/dist/Table/Table.styles.js +28 -28
- package/dist/TableShelf/TableShelf.styles.js +5 -5
- package/dist/Tabs/Tabs.styles.js +15 -15
- package/dist/Tearsheet/Tearsheet.styles.js +17 -28
- package/dist/Tearsheet/Tearsheet.styles.js.map +1 -1
- package/dist/Tearsheet/storybook/PageLayoutDemo.js +7 -1
- package/dist/Tearsheet/storybook/PageLayoutDemo.js.map +1 -1
- package/dist/TextArea/TextArea.styles.js +1 -1
- package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
- package/dist/Thumbnail/Thumbnail.styles.js +17 -17
- package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
- package/dist/TieredSelect/TieredSelect.styles.js +9 -9
- package/dist/Tile/Tile.styles.js +8 -8
- package/dist/Title/Title.styles.js +7 -7
- package/dist/Toast/Toast.styles.js +3 -3
- package/dist/ToggleButton/ToggleButton.styles.js +1 -1
- package/dist/Token/Token.styles.js +3 -3
- package/dist/ToolHeader/ToolHeader.styles.js +6 -6
- package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
- package/dist/Tooltip/Tooltip.d.ts +4 -2
- package/dist/Tooltip/Tooltip.js +30 -5
- package/dist/Tooltip/Tooltip.js.map +1 -1
- package/dist/Tooltip/Tooltip.styles.d.ts +1 -0
- package/dist/Tooltip/Tooltip.styles.js +12 -4
- package/dist/Tooltip/Tooltip.styles.js.map +1 -1
- package/dist/Tooltip/Tooltip.types.d.ts +8 -0
- package/dist/Tooltip/Tooltip.types.js.map +1 -1
- package/dist/Tree/Tree.js +1 -1
- package/dist/Tree/Tree.styles.js +10 -10
- package/dist/Typeahead/Typeahead.styles.js +3 -3
- package/dist/Typography/Typography.styles.js +1 -1
- package/dist/Typography/Typography.table.story.js +2 -2
- package/dist/_hooks/I18n.d.ts +61 -48
- package/dist/_hooks/IntersectionObserver/createIntersectionObserver.d.ts +0 -1
- package/dist/_hooks/IntersectionObserver/createIntersectionObserver.js +0 -1
- package/dist/_hooks/IntersectionObserver/createIntersectionObserver.js.map +1 -1
- package/dist/_locales/de-DE.json +3 -1
- package/dist/_locales/en-AU.json +3 -1
- package/dist/_locales/en-CA.json +3 -1
- package/dist/_locales/en-GB.json +3 -1
- package/dist/_locales/en.json +2 -1
- package/dist/_locales/es-ES.json +3 -1
- package/dist/_locales/es.json +3 -1
- package/dist/_locales/fr-CA.json +3 -1
- package/dist/_locales/fr-FR.json +3 -1
- package/dist/_locales/is-IS.json +3 -1
- package/dist/_locales/it-IT.json +3 -1
- package/dist/_locales/ja-JP.json +3 -1
- package/dist/_locales/pl-PL.json +3 -1
- package/dist/_locales/pseudo.json +2 -1
- package/dist/_locales/pt-BR.json +3 -1
- package/dist/_locales/pt-PT.json +5 -3
- package/dist/_locales/th-TH.json +3 -1
- package/dist/_locales/zh-SG.json +3 -1
- package/dist/_locales/zh-TW.json +3 -1
- package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
- package/dist/_storyHelpers_/components/StoryGrid.js +3 -3
- package/dist/_styles/mixins.d.ts +13 -1
- package/dist/_styles/mixins.js +15 -1
- package/dist/_styles/mixins.js.map +1 -1
- package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +3 -3
- package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
- package/dist/_typedoc/AvatarStack/AvatarStack.types.json +24 -24
- package/dist/_typedoc/Badge/Badge.types.json +6 -6
- package/dist/_typedoc/Banner/Banner.types.json +15 -15
- package/dist/_typedoc/Box/Box.types.json +68 -68
- package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +10 -10
- package/dist/_typedoc/Button/Button.types.json +13 -13
- package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
- package/dist/_typedoc/Card/Card.types.json +6 -6
- package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
- package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
- package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
- package/dist/_typedoc/DateSelect/DateSelect.types.json +13 -13
- package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
- package/dist/_typedoc/Dropdown/Dropdown.types.json +37 -37
- package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +31 -31
- package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
- package/dist/_typedoc/EmptyState/EmptyState.types.json +16 -16
- package/dist/_typedoc/FileList/FileList.types.json +9 -9
- package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
- package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
- package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
- package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
- package/dist/_typedoc/Flex/Flex.types.json +27 -27
- package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
- package/dist/_typedoc/Form/Form.types.json +862 -762
- package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
- package/dist/_typedoc/Grid/Grid.types.json +8 -8
- package/dist/_typedoc/GroupSelect/GroupSelect.types.json +75 -55
- package/dist/_typedoc/Input/Input.types.json +2 -2
- package/dist/_typedoc/Link/Link.types.json +1 -1
- package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
- package/dist/_typedoc/Menu/Menu.types.json +62 -62
- package/dist/_typedoc/MenuImperative/MenuImperative.types.json +77 -77
- package/dist/_typedoc/Modal/Modal.types.json +46 -46
- package/dist/_typedoc/MultiSelect/MultiSelect.types.json +52 -32
- package/dist/_typedoc/NextTile/NextTile.types.json +32 -32
- package/dist/_typedoc/Notation/Notation.types.json +4 -4
- package/dist/_typedoc/NumberInput/NumberInput.types.json +48 -48
- package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +33 -33
- package/dist/_typedoc/PageLayout/PageLayout.types.json +46 -26
- package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
- package/dist/_typedoc/Panel/Panel.types.json +30 -30
- package/dist/_typedoc/Pill/Pill.types.json +2 -2
- package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
- package/dist/_typedoc/Popover/Popover.types.json +15 -15
- package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
- package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
- package/dist/_typedoc/Required/Required.types.json +5 -5
- package/dist/_typedoc/Search/Search.types.json +18 -18
- package/dist/_typedoc/Section/Section.types.json +15 -15
- package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
- package/dist/_typedoc/Select/Select.types.json +109 -63
- package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
- package/dist/_typedoc/Slider/Slider.types.json +6 -6
- package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
- package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
- package/dist/_typedoc/Table/Table.types.json +102 -102
- package/dist/_typedoc/Tabs/Tabs.types.json +20 -20
- package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
- package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
- package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
- package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
- package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
- package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
- package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
- package/dist/_typedoc/Tile/Tile.types.json +8 -8
- package/dist/_typedoc/Title/Title.types.json +1 -1
- package/dist/_typedoc/Toast/Toast.types.json +4 -4
- package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
- package/dist/_typedoc/Token/Token.types.json +7 -7
- package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
- package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
- package/dist/_typedoc/Tooltip/Tooltip.types.json +25 -14
- package/dist/_typedoc/Tree/Tree.types.json +88 -88
- package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
- package/dist/_typedoc/Typography/Typography.types.json +9 -9
- package/dist/_typedoc/_utils/types.json +3 -3
- package/dist/_utils/scrollIntoView.js +21 -7
- package/dist/_utils/scrollIntoView.js.map +1 -1
- package/package.json +8 -7
- package/dist/Checkbox/CheckboxTooltip.d.ts +0 -4
- package/dist/Checkbox/CheckboxTooltip.js +0 -26
- package/dist/Checkbox/CheckboxTooltip.js.map +0 -1
package/.jest/testShims.js
CHANGED
|
@@ -14,6 +14,12 @@ global.ResizeObserver = jest.fn(() => ({
|
|
|
14
14
|
disconnect: jest.fn(),
|
|
15
15
|
}))
|
|
16
16
|
|
|
17
|
+
global.IntersectionObserver = jest.fn(() => ({
|
|
18
|
+
observe: jest.fn(),
|
|
19
|
+
unobserve: jest.fn(),
|
|
20
|
+
disconnect: jest.fn(),
|
|
21
|
+
}))
|
|
22
|
+
|
|
17
23
|
// TODO remove this eventually
|
|
18
24
|
global['requestAnimationFrame'] = function requestAnimationFrame(callback) {
|
|
19
25
|
setTimeout(callback, 0)
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 12.39.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 916989e: Improve date input accessibility by adding an `aria-label` prop
|
|
8
|
+
- 3a1321e: Make `AvatarStack` avatar popovers keyboard accessible
|
|
9
|
+
|
|
10
|
+
- Changed avatar triggers from img/link roles to button role
|
|
11
|
+
|
|
12
|
+
- 4ed0299: - Introduced a new hierarchical model for rendering grouped options across `Select`, `MultiSelect`, `GroupSelect`, and `Form` components which improves semantic HTML structure. Backward compatibility is maintained.
|
|
13
|
+
- The `groupHeaderRenderer` prop in `MultiSelect`, `Form.Select`, and `GroupSelect` is deprecated. Use `groupRenderer` instead, which now receives the group object and its `children` (the options).
|
|
14
|
+
- Passing group label as the `children` to `MenuImperative.Group` and `Select.OptGroup` is deprecated. Use the `label` prop for the group title and pass the options as `children`.
|
|
15
|
+
- 82146ce: Improve `MultiSelect` accessibility:
|
|
16
|
+
|
|
17
|
+
- Add `aria-invalid` and `aria-describedby` support for error state
|
|
18
|
+
- Fix selected tokens announcing "selectable" by removing them from tab order
|
|
19
|
+
- Fix combobox input nested inside `role="list"` by separating structure from visual layout
|
|
20
|
+
- Add Delete key support for removing tokens
|
|
21
|
+
- Close dropdown when navigating tokens with arrow keys
|
|
22
|
+
- Add "None selected" announcement when no items are selected
|
|
23
|
+
|
|
24
|
+
- d36f2ec: Make Tooltips announced by screen readers. User should still supply a focusable element like `Button`.
|
|
25
|
+
|
|
26
|
+
- `Tooltip` update default `trigger` to hover _and focus_
|
|
27
|
+
- `Tooltip` supports `trackAriaExpanded` prop to pass aria open state to children. Recommendation set to `true`, valid on elements like `button`. Currently false, possible future default it to true
|
|
28
|
+
- `Tooltip.Content` uses `aria-live` ~possible future: renders empty container, then inner content~
|
|
29
|
+
- `Tooltip` apply `role tooltip` to the overlay to handle `aria-describedby` and `id`. Allow for manual `aria-describedby` and `id`
|
|
30
|
+
- Update tooltips in `Checkbox`, `SegmentedController`, and `SourceItem`
|
|
31
|
+
|
|
32
|
+
- 4bbe568: Added `onTransitionEnd` handler to Panel to unmount it from the DOM after the closing animation finishes
|
|
33
|
+
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
- 374386b: Demo and Coverage stories now wrap `DateSelect` with a visible `Label` ("Date") and `aria-labelledby`. Applies to Basic, Locales, and all variants (empty, with value, error, disabled)
|
|
37
|
+
- f9ed3e9: In `Page.Aside` added optional focus management (`focusOnOpen`, `restoreFocusOnClose`) to move focus into the aside on open and restore it on close, without affecting existing behavior by default.
|
|
38
|
+
- 578560c: Removing the tooltip on non-preview FileList item re: a11y
|
|
39
|
+
- f9ed3e9: Remove scroll area from shifting on focus. Section and Tearsheet use outline instead of border for visible focus
|
|
40
|
+
- b0da9a8: Enhance a11y for `CheckboxOutput` component by moving existing `aria-label` from the `span` wrapper to the `svg` icon.
|
|
41
|
+
- 40ce870: remove intersection observer
|
|
42
|
+
- fd6f808: Disable onClear when Select, TieredSelect, or PillSelect is disabled.
|
|
43
|
+
|
|
3
44
|
## 12.38.0
|
|
4
45
|
|
|
5
46
|
### Minor Changes
|
|
@@ -23,6 +64,8 @@
|
|
|
23
64
|
|
|
24
65
|
## 12.37.0
|
|
25
66
|
|
|
67
|
+
**DO NOT USE 12.37.0** This release changed SuperSelect UI UX which caused issues. It has been reverted, please use `12.38.0` instead.
|
|
68
|
+
|
|
26
69
|
### Minor Changes
|
|
27
70
|
|
|
28
71
|
- 26ca426: _Changes internal HTML structure_ Fix Delete control accessibility in Select components:
|
|
@@ -5,11 +5,11 @@ import { getEllipsis } from '../_styles/mixins';
|
|
|
5
5
|
import { spacing } from '../_styles/spacing';
|
|
6
6
|
export var StyledAnchorNavigation = /*#__PURE__*/styled.ul.withConfig({
|
|
7
7
|
displayName: "StyledAnchorNavigation",
|
|
8
|
-
componentId: "core-
|
|
8
|
+
componentId: "core-12_39_0__sc-aacdj4-0"
|
|
9
9
|
})(["max-width:200px;margin:0;padding-inline-start:0;"]);
|
|
10
10
|
export var StyledAnchorSection = /*#__PURE__*/styled.li.withConfig({
|
|
11
11
|
displayName: "StyledAnchorSection",
|
|
12
|
-
componentId: "core-
|
|
12
|
+
componentId: "core-12_39_0__sc-aacdj4-1"
|
|
13
13
|
})(["display:flex;cursor:pointer;border-left:", "px solid ", ";background-color:", ";border-top-right-radius:4px;border-bottom-right-radius:4px;:hover{border-left:", "px solid ", ";background-color:", ";}"], spacing.xs, function (_ref) {
|
|
14
14
|
var $selected = _ref.$selected;
|
|
15
15
|
return $selected ? colors.gray15 : colors.gray90;
|
|
@@ -22,7 +22,7 @@ export var StyledAnchorSection = /*#__PURE__*/styled.li.withConfig({
|
|
|
22
22
|
}, colors.gray90);
|
|
23
23
|
export var StyledAnchor = /*#__PURE__*/styled.a.withConfig({
|
|
24
24
|
displayName: "StyledAnchor",
|
|
25
|
-
componentId: "core-
|
|
25
|
+
componentId: "core-12_39_0__sc-aacdj4-2"
|
|
26
26
|
})(["width:100%;padding:6px ", "px;", " ", ";", " :focus-visible{box-shadow:inset 0 0 0 2px ", ";outline:none;}"], spacing.sm, getTypographyIntent('body'), function (_ref4) {
|
|
27
27
|
var $selected = _ref4.$selected;
|
|
28
28
|
return $selected ? css(["font-weight:600;"]) : '';
|
|
@@ -28,27 +28,27 @@ var iconSize = {
|
|
|
28
28
|
};
|
|
29
29
|
export var StyledAvatarOverlay = /*#__PURE__*/styled.div.withConfig({
|
|
30
30
|
displayName: "StyledAvatarOverlay",
|
|
31
|
-
componentId: "core-
|
|
31
|
+
componentId: "core-12_39_0__sc-7q2ydl-0"
|
|
32
32
|
})(["width:100%;height:100%;position:absolute;top:0;left:0;border-radius:100%;opacity:0;"]);
|
|
33
33
|
export var StyledIconContainer = /*#__PURE__*/styled.div.withConfig({
|
|
34
34
|
displayName: "StyledIconContainer",
|
|
35
|
-
componentId: "core-
|
|
35
|
+
componentId: "core-12_39_0__sc-7q2ydl-1"
|
|
36
36
|
})(["display:inline-flex;"]);
|
|
37
37
|
export var StyledLabelContainer = /*#__PURE__*/styled.div.withConfig({
|
|
38
38
|
displayName: "StyledLabelContainer",
|
|
39
|
-
componentId: "core-
|
|
39
|
+
componentId: "core-12_39_0__sc-7q2ydl-2"
|
|
40
40
|
})(["text-transform:uppercase;"]);
|
|
41
41
|
export var StyledPortraitContainer = /*#__PURE__*/styled.div.withConfig({
|
|
42
42
|
displayName: "StyledPortraitContainer",
|
|
43
|
-
componentId: "core-
|
|
43
|
+
componentId: "core-12_39_0__sc-7q2ydl-3"
|
|
44
44
|
})(["background-color:", ";background-position:center;background-repeat:no-repeat;background-size:cover;height:100%;width:100%;", ""], colors.white, function (_ref) {
|
|
45
45
|
var $imageUrl = _ref.$imageUrl;
|
|
46
46
|
return css(["background-image:url(", ");"], $imageUrl);
|
|
47
47
|
});
|
|
48
48
|
export var StyledAvatarContainer = /*#__PURE__*/styled.div.withConfig({
|
|
49
49
|
displayName: "StyledAvatarContainer",
|
|
50
|
-
componentId: "core-
|
|
51
|
-
})(["display:inline-flex;justify-content:center;align-items:center;border-radius:100%;overflow:hidden;position:relative;cursor:default;color:", ";background-color:", ";text-decoration:none;a:has(> &){text-decoration:none;}&:focus{", "}a:focus:has(> &){", " border-radius:100%;}", " ", ";"], colors.white, colors.gray30, getGapOutlineFocus, getGapOutlineFocus, function (_ref2) {
|
|
50
|
+
componentId: "core-12_39_0__sc-7q2ydl-4"
|
|
51
|
+
})(["display:inline-flex;justify-content:center;align-items:center;border-radius:100%;overflow:hidden;position:relative;cursor:default;color:", ";background-color:", ";text-decoration:none;a:has(> &){text-decoration:none;}&:focus{", "}a:focus:has(> &){", " border-radius:100%;}", " ", ";"], colors.white, colors.gray30, getGapOutlineFocus('outside'), getGapOutlineFocus('outside'), function (_ref2) {
|
|
52
52
|
var _ref2$$size = _ref2.$size,
|
|
53
53
|
$size = _ref2$$size === void 0 ? 'md' : _ref2$$size;
|
|
54
54
|
return css(["font-size:", "px;font-weight:", ";height:", "px;width:", "px;min-height:", "px;min-width:", "px;", "{svg{height:", "px;width:", "px;}}"], fontSize[$size], fontWeights[$size], containerSize[$size], containerSize[$size], containerSize[$size], containerSize[$size], StyledIconContainer, iconSize[$size], iconSize[$size]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.styles.js","names":["styled","css","colors","getGapOutlineFocus","activeOverlayOpacity","containerSize","xl","lg","md","sm","fontSize","fontWeights","iconSize","StyledAvatarOverlay","div","withConfig","displayName","componentId","StyledIconContainer","StyledLabelContainer","StyledPortraitContainer","white","_ref","$imageUrl","StyledAvatarContainer","gray30","_ref2","_ref2$$size","$size","_ref3","$disabled","$clickable","black","gray85"],"sources":["../../src/Avatar/Avatar.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { colors } from '../_styles/colors'\nimport { getGapOutlineFocus } from '../_styles/mixins'\nimport type { BaseAvatarProps } from './Avatar.types'\n\ninterface StyledAvatarProps {\n $clickable: BaseAvatarProps['clickable']\n $disabled: BaseAvatarProps['disabled']\n $size: BaseAvatarProps['size']\n}\n\nconst activeOverlayOpacity = 0.3\n\nconst containerSize = { xl: 96, lg: 40, md: 32, sm: 24 } as const\n\nconst fontSize = { xl: 40, lg: 14, md: 14, sm: 12 } as const\n\nconst fontWeights = { xl: 700, lg: 600, md: 600, sm: 600 } as const\n\nconst iconSize = { xl: 48, lg: 24, md: 16, sm: 16 } as const\n\nexport const StyledAvatarOverlay = styled.div`\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border-radius: 100%;\n opacity: 0;\n`\n\nexport const StyledIconContainer = styled.div`\n display: inline-flex;\n`\n\nexport const StyledLabelContainer = styled.div`\n text-transform: uppercase;\n`\n\nexport const StyledPortraitContainer = styled.div<{ $imageUrl: string }>`\n background-color: ${colors.white};\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n width: 100%;\n ${({ $imageUrl }) =>\n css`\n background-image: url(${$imageUrl});\n `}\n`\n\nexport const StyledAvatarContainer = styled.div<StyledAvatarProps>`\n display: inline-flex;\n justify-content: center;\n align-items: center;\n border-radius: 100%;\n overflow: hidden;\n position: relative;\n cursor: default;\n color: ${colors.white};\n background-color: ${colors.gray30};\n text-decoration: none;\n\n a:has(> &) {\n text-decoration: none;\n }\n\n &:focus {\n ${getGapOutlineFocus}\n }\n // For safety, separate rule block with 'has' for supported browsers\n // this supports any anchor directly wrapping an Avatar.\n // 'outline' works better on display inline-block and inline-flex,\n // elements, unfortunately anchors and inline by default.\n a:focus:has(> &) {\n ${getGapOutlineFocus}\n border-radius: 100%;\n }\n\n ${({ $size = 'md' }) => css`\n font-size: ${fontSize[$size]}px;\n font-weight: ${fontWeights[$size]};\n height: ${containerSize[$size]}px;\n width: ${containerSize[$size]}px;\n min-height: ${containerSize[$size]}px;\n min-width: ${containerSize[$size]}px;\n\n ${StyledIconContainer} {\n svg {\n height: ${iconSize[$size]}px;\n width: ${iconSize[$size]}px;\n }\n }\n `}\n\n ${({ $disabled, $clickable }) => {\n if (!$disabled && $clickable) {\n return css`\n cursor: pointer;\n\n &:hover {\n ${StyledAvatarOverlay} {\n opacity: ${activeOverlayOpacity};\n }\n }\n\n ${StyledAvatarOverlay} {\n background-color: ${colors.black};\n }\n `\n }\n\n if ($disabled && !$clickable) {\n return css`\n background-color: ${colors.gray85};\n\n ${StyledAvatarOverlay} {\n background-color: ${colors.white};\n opacity: ${activeOverlayOpacity};\n }\n `\n }\n\n if ($disabled && $clickable) {\n return css`\n cursor: pointer;\n background-color: ${colors.gray85};\n\n &:hover {\n ${StyledAvatarOverlay} {\n background-color: ${colors.black};\n opacity: ${activeOverlayOpacity};\n }\n }\n\n ${StyledAvatarOverlay} {\n background-color: ${colors.white};\n opacity: ${activeOverlayOpacity};\n }\n `\n }\n }};\n`\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAC/C,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,kBAAkB,QAAQ,mBAAmB;AAStD,IAAMC,oBAAoB,GAAG,GAAG;AAEhC,IAAMC,aAAa,GAAG;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE;AAAG,CAAU;AAEjE,IAAMC,QAAQ,GAAG;EAAEJ,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE;AAAG,CAAU;AAE5D,IAAME,WAAW,GAAG;EAAEL,EAAE,EAAE,GAAG;EAAEC,EAAE,EAAE,GAAG;EAAEC,EAAE,EAAE,GAAG;EAAEC,EAAE,EAAE;AAAI,CAAU;AAEnE,IAAMG,QAAQ,GAAG;EAAEN,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE;AAAG,CAAU;AAE5D,OAAO,IAAMI,mBAAmB,gBAAGb,MAAM,CAACc,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,2FAQ5C;AAED,OAAO,IAAMC,mBAAmB,gBAAGlB,MAAM,CAACc,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,4BAE5C;AAED,OAAO,IAAME,oBAAoB,gBAAGnB,MAAM,CAACc,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,iCAE7C;AAED,OAAO,IAAMG,uBAAuB,gBAAGpB,MAAM,CAACc,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,uIAC3Bf,MAAM,CAACmB,KAAK,EAM9B,UAAAC,IAAA;EAAA,IAAGC,SAAS,GAAAD,IAAA,CAATC,SAAS;EAAA,OACZtB,GAAG,kCACuBsB,SAAS;AAAA,CAClC,CACJ;AAED,OAAO,IAAMC,qBAAqB,gBAAGxB,MAAM,CAACc,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,mSAQpCf,MAAM,CAACmB,KAAK,EACDnB,MAAM,CAACuB,MAAM,EAQ7BtB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"Avatar.styles.js","names":["styled","css","colors","getGapOutlineFocus","activeOverlayOpacity","containerSize","xl","lg","md","sm","fontSize","fontWeights","iconSize","StyledAvatarOverlay","div","withConfig","displayName","componentId","StyledIconContainer","StyledLabelContainer","StyledPortraitContainer","white","_ref","$imageUrl","StyledAvatarContainer","gray30","_ref2","_ref2$$size","$size","_ref3","$disabled","$clickable","black","gray85"],"sources":["../../src/Avatar/Avatar.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { colors } from '../_styles/colors'\nimport { getGapOutlineFocus } from '../_styles/mixins'\nimport type { BaseAvatarProps } from './Avatar.types'\n\ninterface StyledAvatarProps {\n $clickable: BaseAvatarProps['clickable']\n $disabled: BaseAvatarProps['disabled']\n $size: BaseAvatarProps['size']\n}\n\nconst activeOverlayOpacity = 0.3\n\nconst containerSize = { xl: 96, lg: 40, md: 32, sm: 24 } as const\n\nconst fontSize = { xl: 40, lg: 14, md: 14, sm: 12 } as const\n\nconst fontWeights = { xl: 700, lg: 600, md: 600, sm: 600 } as const\n\nconst iconSize = { xl: 48, lg: 24, md: 16, sm: 16 } as const\n\nexport const StyledAvatarOverlay = styled.div`\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border-radius: 100%;\n opacity: 0;\n`\n\nexport const StyledIconContainer = styled.div`\n display: inline-flex;\n`\n\nexport const StyledLabelContainer = styled.div`\n text-transform: uppercase;\n`\n\nexport const StyledPortraitContainer = styled.div<{ $imageUrl: string }>`\n background-color: ${colors.white};\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n height: 100%;\n width: 100%;\n ${({ $imageUrl }) =>\n css`\n background-image: url(${$imageUrl});\n `}\n`\n\nexport const StyledAvatarContainer = styled.div<StyledAvatarProps>`\n display: inline-flex;\n justify-content: center;\n align-items: center;\n border-radius: 100%;\n overflow: hidden;\n position: relative;\n cursor: default;\n color: ${colors.white};\n background-color: ${colors.gray30};\n text-decoration: none;\n\n a:has(> &) {\n text-decoration: none;\n }\n\n &:focus {\n ${getGapOutlineFocus('outside')}\n }\n // For safety, separate rule block with 'has' for supported browsers\n // this supports any anchor directly wrapping an Avatar.\n // 'outline' works better on display inline-block and inline-flex,\n // elements, unfortunately anchors and inline by default.\n a:focus:has(> &) {\n ${getGapOutlineFocus('outside')}\n border-radius: 100%;\n }\n\n ${({ $size = 'md' }) => css`\n font-size: ${fontSize[$size]}px;\n font-weight: ${fontWeights[$size]};\n height: ${containerSize[$size]}px;\n width: ${containerSize[$size]}px;\n min-height: ${containerSize[$size]}px;\n min-width: ${containerSize[$size]}px;\n\n ${StyledIconContainer} {\n svg {\n height: ${iconSize[$size]}px;\n width: ${iconSize[$size]}px;\n }\n }\n `}\n\n ${({ $disabled, $clickable }) => {\n if (!$disabled && $clickable) {\n return css`\n cursor: pointer;\n\n &:hover {\n ${StyledAvatarOverlay} {\n opacity: ${activeOverlayOpacity};\n }\n }\n\n ${StyledAvatarOverlay} {\n background-color: ${colors.black};\n }\n `\n }\n\n if ($disabled && !$clickable) {\n return css`\n background-color: ${colors.gray85};\n\n ${StyledAvatarOverlay} {\n background-color: ${colors.white};\n opacity: ${activeOverlayOpacity};\n }\n `\n }\n\n if ($disabled && $clickable) {\n return css`\n cursor: pointer;\n background-color: ${colors.gray85};\n\n &:hover {\n ${StyledAvatarOverlay} {\n background-color: ${colors.black};\n opacity: ${activeOverlayOpacity};\n }\n }\n\n ${StyledAvatarOverlay} {\n background-color: ${colors.white};\n opacity: ${activeOverlayOpacity};\n }\n `\n }\n }};\n`\n"],"mappings":"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"}
|
|
@@ -23,12 +23,21 @@ import { Button } from '../Button';
|
|
|
23
23
|
import { ContactItem } from '../ContactItem';
|
|
24
24
|
import { Link } from '../Link';
|
|
25
25
|
import { Modal } from '../Modal';
|
|
26
|
+
import { OverlayTrigger } from '../OverlayTrigger/OverlayTrigger';
|
|
26
27
|
import { Popover } from '../Popover';
|
|
27
28
|
import { Typography } from '../Typography';
|
|
28
29
|
import { useI18nContext } from '../_hooks/I18n';
|
|
29
30
|
import { colorsOrder, foldedItemsCap, restCountThreshold, visibleItemsCap } from './AvatarStack.constants';
|
|
30
31
|
import { StyledAvatar, StyledContactItem, StyledContactItems, StyledModalBody, StyledViewAllWrapper, StyledWrapper } from './AvatarStack.styles';
|
|
31
|
-
|
|
32
|
+
import { useAvatarPopover } from './useAvatarPopover';
|
|
33
|
+
var OVERLAY_WRAPPER_SELECTOR = '[data-qa="core-overlay-trigger-overlay-wrapper"]';
|
|
34
|
+
var FOCUSABLE_SELECTOR = 'a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
35
|
+
var POPOVER_TRIGGER = ['hover', 'focus'];
|
|
36
|
+
var POPOVER_SHOW_KEYS = ['Enter', ' '];
|
|
37
|
+
var POPOVER_HIDE_KEYS = {
|
|
38
|
+
overlay: ['Escape', 'Esc'],
|
|
39
|
+
target: ['Escape', 'Esc']
|
|
40
|
+
};
|
|
32
41
|
export function getOverflowValues(items) {
|
|
33
42
|
var foldedItems = [];
|
|
34
43
|
var restCountLabel = null;
|
|
@@ -145,20 +154,32 @@ function AvatarWithPopover(_ref4) {
|
|
|
145
154
|
var item = _ref4.item,
|
|
146
155
|
size = _ref4.size,
|
|
147
156
|
colors = _ref4.colors;
|
|
148
|
-
var
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
return /*#__PURE__*/React.createElement(Popover, {
|
|
157
|
+
var _useAvatarPopover = useAvatarPopover({
|
|
158
|
+
focusableSelector: FOCUSABLE_SELECTOR,
|
|
159
|
+
overlayWrapperSelector: OVERLAY_WRAPPER_SELECTOR
|
|
160
|
+
}),
|
|
161
|
+
triggerRef = _useAvatarPopover.triggerRef,
|
|
162
|
+
popoverContentRef = _useAvatarPopover.popoverContentRef,
|
|
163
|
+
beforeShow = _useAvatarPopover.beforeShow,
|
|
164
|
+
beforeHide = _useAvatarPopover.beforeHide,
|
|
165
|
+
afterHide = _useAvatarPopover.afterHide;
|
|
166
|
+
return /*#__PURE__*/React.createElement(OverlayTrigger, {
|
|
159
167
|
key: item.id,
|
|
160
|
-
trigger:
|
|
161
|
-
|
|
168
|
+
trigger: POPOVER_TRIGGER,
|
|
169
|
+
showKeys: POPOVER_SHOW_KEYS,
|
|
170
|
+
hideKeys: POPOVER_HIDE_KEYS,
|
|
171
|
+
restoreFocusOnHide: false,
|
|
172
|
+
shrinkOverlay: true,
|
|
173
|
+
arrow: true,
|
|
174
|
+
trackAriaExpanded: true,
|
|
175
|
+
placement: "top",
|
|
176
|
+
beforeShow: beforeShow,
|
|
177
|
+
beforeHide: beforeHide,
|
|
178
|
+
afterHide: afterHide,
|
|
179
|
+
overlay: /*#__PURE__*/React.createElement(Popover.Content, {
|
|
180
|
+
ref: popoverContentRef,
|
|
181
|
+
placement: "top"
|
|
182
|
+
}, /*#__PURE__*/React.createElement(AvatarStackContactItem, {
|
|
162
183
|
id: item.id,
|
|
163
184
|
type: item.type,
|
|
164
185
|
imageUrl: item.imageUrl,
|
|
@@ -168,12 +189,14 @@ function AvatarWithPopover(_ref4) {
|
|
|
168
189
|
linkUrl: item.linkUrl,
|
|
169
190
|
description: item.description
|
|
170
191
|
}))
|
|
171
|
-
}, /*#__PURE__*/React.createElement(StyledAvatar,
|
|
192
|
+
}, /*#__PURE__*/React.createElement(StyledAvatar, {
|
|
193
|
+
ref: triggerRef,
|
|
194
|
+
role: "button",
|
|
172
195
|
$color: colors.get(item.id),
|
|
173
196
|
"aria-label": "".concat(item.name, ", ").concat(item.description),
|
|
174
197
|
disabled: item.inactive,
|
|
175
198
|
size: size
|
|
176
|
-
}
|
|
199
|
+
}, /*#__PURE__*/React.createElement(AvatarContent, {
|
|
177
200
|
imageUrl: item.imageUrl,
|
|
178
201
|
initials: item.initials,
|
|
179
202
|
type: item.type,
|
|
@@ -188,16 +211,33 @@ export function FoldedAvatarStack(_ref5) {
|
|
|
188
211
|
isViewAllNeeded = _ref5.isViewAllNeeded,
|
|
189
212
|
title = _ref5.title;
|
|
190
213
|
var I18n = useI18nContext();
|
|
191
|
-
var overlayRef = React.useRef(null);
|
|
192
214
|
var restAvatarId = useId();
|
|
193
|
-
|
|
215
|
+
var _useAvatarPopover2 = useAvatarPopover({
|
|
216
|
+
focusableSelector: FOCUSABLE_SELECTOR,
|
|
217
|
+
overlayWrapperSelector: OVERLAY_WRAPPER_SELECTOR
|
|
218
|
+
}),
|
|
219
|
+
triggerRef = _useAvatarPopover2.triggerRef,
|
|
220
|
+
popoverContentRef = _useAvatarPopover2.popoverContentRef,
|
|
221
|
+
beforeShow = _useAvatarPopover2.beforeShow,
|
|
222
|
+
beforeHide = _useAvatarPopover2.beforeHide,
|
|
223
|
+
afterHide = _useAvatarPopover2.afterHide;
|
|
224
|
+
return /*#__PURE__*/React.createElement(OverlayTrigger, {
|
|
194
225
|
"aria-labelledby": restAvatarId,
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
226
|
+
trigger: POPOVER_TRIGGER,
|
|
227
|
+
showKeys: POPOVER_SHOW_KEYS,
|
|
228
|
+
hideKeys: POPOVER_HIDE_KEYS,
|
|
229
|
+
restoreFocusOnHide: false,
|
|
230
|
+
shrinkOverlay: true,
|
|
231
|
+
arrow: true,
|
|
232
|
+
trackAriaExpanded: true,
|
|
233
|
+
placement: "top",
|
|
234
|
+
beforeShow: beforeShow,
|
|
235
|
+
beforeHide: beforeHide,
|
|
236
|
+
afterHide: afterHide,
|
|
237
|
+
overlay: /*#__PURE__*/React.createElement(Popover.Content, {
|
|
238
|
+
ref: popoverContentRef,
|
|
239
|
+
placement: "top"
|
|
240
|
+
}, /*#__PURE__*/React.createElement(StyledContactItems, null, items.map(function (item) {
|
|
201
241
|
return /*#__PURE__*/React.createElement(AvatarStackContactItem, {
|
|
202
242
|
key: item.id,
|
|
203
243
|
id: item.id,
|
|
@@ -216,8 +256,8 @@ export function FoldedAvatarStack(_ref5) {
|
|
|
216
256
|
variant: "secondary"
|
|
217
257
|
}, I18n.t('core.avatarStack.viewAll'))))
|
|
218
258
|
}, /*#__PURE__*/React.createElement(StyledAvatar, {
|
|
259
|
+
ref: triggerRef,
|
|
219
260
|
role: "button",
|
|
220
|
-
onPress: onClickViewAll,
|
|
221
261
|
id: restAvatarId,
|
|
222
262
|
"aria-label": "".concat(restCountLabel, ", ").concat(title),
|
|
223
263
|
"data-qa": "core-avatar-stack-folded-avatars-popover-trigger",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarStack.js","names":["Building","People","useId","React","forwardRef","useMemo","useState","Avatar","Button","ContactItem","Link","Modal","Popover","Typography","useI18nContext","colorsOrder","foldedItemsCap","restCountThreshold","visibleItemsCap","StyledAvatar","StyledContactItem","StyledContactItems","StyledModalBody","StyledViewAllWrapper","StyledWrapper","defaultPopoverTrigger","getOverflowValues","items","foldedItems","restCountLabel","isViewAllNeeded","visibleItems","length","slice","restItemsCount","concat","getIcon","type","size","createElement","getContactIcon","getAvatarIcon","avatarSize","getColorOrder","avatarItems","reduce","_ref","item","map","color","imageUrl","inactive","set","id","currentColorIndex","indexOf","nextColorIndex","Map","AvatarStackContactItem","_ref2","initials","name","linkUrl","description","disabled","icon","key","Title","href","Description","AvatarContent","_ref3","props","_objectWithoutProperties","_excluded","avatarIcon","Portrait","_extends","Icon","Label","AvatarWithPopover","_ref4","colors","hasEnabledLink","avatarProps","role","tabIndex","trigger","overlay","Content","$color","get","FoldedAvatarStack","_ref5","onClickViewAll","title","I18n","overlayRef","useRef","restAvatarId","beforeHide","e","onClick","variant","t","onPress","ViewAllModal","_ref6","isOpen","onClose","labelId","text","open","Header","Heading","Footer","FooterButtons","defaultInitials","defaultGetImageUrl","getTransformedItems","_ref7","getInitials","getImageUrl","_objectSpread","_AvatarStack","_ref8","ref","_items","_ref8$size","_ref8$getInitials","_ref8$getImageUrl","_excluded2","_useState","_useState2","_slicedToArray","isModalOpen","setIsModalOpen","_useMemo","visibleItemsColors","AvatarStack","displayName"],"sources":["../../src/AvatarStack/AvatarStack.tsx"],"sourcesContent":["import { Building, People } from '@procore/core-icons'\nimport { useId } from '@react-aria/utils'\nimport React, { forwardRef, useMemo, useState } from 'react'\nimport { Avatar } from '../Avatar'\nimport { Button } from '../Button'\nimport { ContactItem } from '../ContactItem'\nimport { Link } from '../Link'\nimport { Modal } from '../Modal'\nimport type { OverlayTriggerRef } from '../OverlayTrigger/OverlayTrigger.types'\nimport { Popover } from '../Popover'\nimport { Typography } from '../Typography'\nimport { useI18nContext } from '../_hooks/I18n'\nimport type { TriggerVariant } from '../_hooks/Trigger'\nimport type { Color } from '../_styles/colors'\nimport {\n colorsOrder,\n foldedItemsCap,\n restCountThreshold,\n visibleItemsCap,\n} from './AvatarStack.constants'\nimport {\n StyledAvatar,\n StyledContactItem,\n StyledContactItems,\n StyledModalBody,\n StyledViewAllWrapper,\n StyledWrapper,\n} from './AvatarStack.styles'\nimport type {\n AvatarStackItem,\n AvatarStackItemId,\n AvatarStackItemType,\n AvatarStackProps,\n AvatarStackSize,\n FoldedAvatarStackProps,\n ViewAllModalProps,\n} from './AvatarStack.types'\n\nconst defaultPopoverTrigger: TriggerVariant[] = ['hover', 'focus']\n\nexport function getOverflowValues<Item extends AvatarStackItem>(items: Item[]) {\n let foldedItems: Item[] = []\n let restCountLabel: string | null = null\n let isViewAllNeeded = false\n\n const visibleItems =\n items.length > visibleItemsCap ? items.slice(0, visibleItemsCap - 1) : items\n const restItemsCount = items.length - visibleItems.length\n\n if (restItemsCount > 0) {\n foldedItems = items.slice(\n visibleItems.length,\n visibleItems.length + foldedItemsCap\n )\n\n restCountLabel =\n restItemsCount > restCountThreshold\n ? `${restCountThreshold}+`\n : `+${restItemsCount}`\n\n isViewAllNeeded = restItemsCount > foldedItemsCap\n }\n\n return {\n visibleItems,\n foldedItems,\n restCountLabel,\n isViewAllNeeded,\n }\n}\n\nexport function getIcon(type: AvatarStackItemType, size: 'md' | 'sm') {\n switch (type) {\n case 'company':\n return <Building size={size} />\n\n case 'group':\n return <People size={size} />\n\n case 'user':\n default:\n return null\n }\n}\n\nfunction getContactIcon(type: AvatarStackItemType) {\n return getIcon(type, 'md')\n}\n\nexport function getAvatarIcon(\n type: AvatarStackItemType,\n size: AvatarStackSize\n) {\n const avatarSize = size === 'lg' ? 'md' : 'sm'\n return getIcon(type, avatarSize)\n}\n\nexport function getColorOrder(avatarItems: AvatarStackItem[]) {\n return avatarItems.reduce(\n ({ map, color }, item) => {\n if (item.imageUrl) {\n return {\n map,\n color,\n }\n }\n\n if (item.inactive) {\n map.set(item.id, 'gray70')\n\n return {\n map,\n color,\n }\n }\n\n map.set(item.id, color)\n\n const currentColorIndex = colorsOrder.indexOf(color)\n const nextColorIndex = (currentColorIndex + 1) % colorsOrder.length\n return {\n map,\n color: item.imageUrl ? color : colorsOrder[nextColorIndex],\n }\n },\n {\n map: new Map<AvatarStackItemId, Color>(),\n color: colorsOrder[0],\n }\n ).map\n}\n\nexport function AvatarStackContactItem({\n id,\n type,\n imageUrl,\n initials,\n inactive,\n name,\n linkUrl,\n description,\n}: AvatarStackItem) {\n return (\n <StyledContactItem\n disabled={inactive}\n icon={getContactIcon(type)}\n imageUrl={imageUrl}\n initials={initials}\n key={id}\n >\n <ContactItem.Title>\n {!inactive && linkUrl ? <Link href={linkUrl}>{name}</Link> : name}\n </ContactItem.Title>\n <ContactItem.Description>\n {type === 'group' ? (\n <Typography color=\"gray15\">{description}</Typography>\n ) : (\n description\n )}\n </ContactItem.Description>\n </StyledContactItem>\n )\n}\n\nexport function AvatarContent({\n imageUrl,\n initials,\n type,\n size,\n ...props\n}: {\n imageUrl?: AvatarStackItem['imageUrl']\n initials: AvatarStackItem['initials']\n type: AvatarStackItem['type']\n size: AvatarStackSize\n}) {\n const avatarIcon = getAvatarIcon(type, size)\n\n if (imageUrl) {\n return <Avatar.Portrait {...props} imageUrl={imageUrl} />\n }\n\n if (avatarIcon) {\n return <Avatar.Icon {...props} icon={avatarIcon} />\n }\n\n if (initials) {\n return <Avatar.Label {...props}>{initials}</Avatar.Label>\n }\n\n return null\n}\n\nfunction AvatarWithPopover<Item extends AvatarStackItem>({\n item,\n size,\n colors,\n}: {\n item: Item\n size: AvatarStackSize\n colors: Map<AvatarStackItemId, Color>\n}) {\n const hasEnabledLink = item.linkUrl && !item.inactive\n const avatarProps = hasEnabledLink\n ? {\n role: 'link',\n href: item.linkUrl,\n }\n : {\n role: 'img',\n // Allow SR to open Popover as it cycles through. Keeps visual with audio.\n // The link or image is labelled, and focus does not enter the Popover.\n tabIndex: -1,\n }\n\n return (\n <Popover\n key={item.id}\n trigger={defaultPopoverTrigger}\n overlay={\n <Popover.Content>\n <AvatarStackContactItem\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n </Popover.Content>\n }\n >\n <StyledAvatar\n {...avatarProps}\n $color={colors.get(item.id) as Color}\n aria-label={`${item.name}, ${item.description}`}\n disabled={item.inactive}\n size={size}\n >\n <AvatarContent\n imageUrl={item.imageUrl}\n initials={item.initials}\n type={item.type}\n size={size}\n />\n </StyledAvatar>\n </Popover>\n )\n}\n\nexport function FoldedAvatarStack<Item extends AvatarStackItem>({\n items,\n onClickViewAll,\n size,\n restCountLabel,\n isViewAllNeeded,\n title,\n}: FoldedAvatarStackProps<Item>) {\n const I18n = useI18nContext()\n const overlayRef = React.useRef<OverlayTriggerRef>(null)\n const restAvatarId = useId()\n\n return (\n <Popover\n aria-labelledby={restAvatarId}\n overlayRef={overlayRef}\n trigger={defaultPopoverTrigger}\n beforeHide={(e) => {\n return e.type !== 'blur'\n }}\n overlay={\n <Popover.Content>\n <StyledContactItems>\n {items.map((item) => (\n <AvatarStackContactItem\n key={item.id}\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n ))}\n </StyledContactItems>\n {isViewAllNeeded && (\n <StyledViewAllWrapper>\n <Button\n data-qa=\"core-avatar-stack-view-all-modal-trigger\"\n onClick={onClickViewAll}\n size=\"sm\"\n variant=\"secondary\"\n >\n {I18n.t('core.avatarStack.viewAll')}\n </Button>\n </StyledViewAllWrapper>\n )}\n </Popover.Content>\n }\n >\n <StyledAvatar\n role=\"button\"\n onPress={onClickViewAll}\n id={restAvatarId}\n aria-label={`${restCountLabel}, ${title}`}\n data-qa=\"core-avatar-stack-folded-avatars-popover-trigger\"\n size={size}\n $color=\"gray85\"\n >\n <Avatar.Label aria-hidden>\n <Typography color=\"black\">{restCountLabel}</Typography>\n </Avatar.Label>\n </StyledAvatar>\n </Popover>\n )\n}\n\nexport function ViewAllModal<Item extends AvatarStackItem>({\n isOpen,\n onClose,\n title,\n items,\n}: ViewAllModalProps<Item>) {\n const I18n = useI18nContext()\n const labelId = useId()\n const text = `${title} (${items.length})`\n\n return (\n <Modal\n role=\"dialog\"\n aria-labelledby={labelId}\n open={isOpen}\n onClose={onClose}\n >\n <Modal.Header onClose={onClose}>\n <Modal.Heading id={labelId}>{text}</Modal.Heading>\n </Modal.Header>\n <StyledModalBody>\n {items.map((item) => (\n <AvatarStackContactItem\n key={item.id}\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n ))}\n </StyledModalBody>\n <Modal.Footer>\n <Modal.FooterButtons>\n <Button onClick={onClose}>{I18n.t('core.avatarStack.close')}</Button>\n </Modal.FooterButtons>\n </Modal.Footer>\n </Modal>\n )\n}\n\nexport function defaultInitials<Item extends AvatarStackItem>(item: Item) {\n return item.initials as string\n}\n\nexport function defaultGetImageUrl<Item extends AvatarStackItem>(item: Item) {\n return item.imageUrl as string\n}\n\nexport function getTransformedItems<Item extends AvatarStackItem>({\n items,\n getInitials,\n getImageUrl,\n}: {\n items: Item[]\n getInitials: AvatarStackProps<Item>['getInitials']\n getImageUrl: AvatarStackProps<Item>['getImageUrl']\n}) {\n return items.map((item) => ({\n ...item,\n initials: getInitials!(item),\n imageUrl: getImageUrl!(item),\n }))\n}\n\nconst _AvatarStack = <Item extends AvatarStackItem>(\n {\n items: _items,\n title,\n size = 'lg',\n getInitials = defaultInitials,\n getImageUrl = defaultGetImageUrl,\n onClickViewAll,\n ...props\n }: AvatarStackProps<Item>,\n ref: React.ForwardedRef<HTMLDivElement>\n) => {\n const [isModalOpen, setIsModalOpen] = useState(false)\n\n const items = useMemo(\n () =>\n getTransformedItems({\n items: _items,\n getInitials,\n getImageUrl,\n }),\n [_items]\n )\n\n const { visibleItems, foldedItems, restCountLabel, isViewAllNeeded } =\n useMemo(() => getOverflowValues(items), [items])\n\n const visibleItemsColors = useMemo(\n () => getColorOrder(visibleItems),\n [visibleItems]\n )\n\n return (\n <div ref={ref} {...props}>\n {isViewAllNeeded && !onClickViewAll && (\n <ViewAllModal\n isOpen={isModalOpen}\n onClose={() => setIsModalOpen(false)}\n title={title}\n items={items}\n />\n )}\n <StyledWrapper>\n {visibleItems.map((item) => {\n return (\n <AvatarWithPopover\n colors={visibleItemsColors}\n item={item}\n key={`${item.name}_${item.id}`}\n size={size}\n />\n )\n })}\n {foldedItems.length > 0 && (\n <FoldedAvatarStack\n restCountLabel={restCountLabel as string}\n isViewAllNeeded={isViewAllNeeded}\n items={foldedItems}\n onClickViewAll={onClickViewAll || (() => setIsModalOpen(true))}\n size={size}\n title={title}\n />\n )}\n </StyledWrapper>\n </div>\n )\n}\n\n/**\n\n We use avatars to visually represent our users, places, and things in the app.\n These can be in the form of rich media or representative illustrations.\n\n @since 10.19.0\n\n @see [Storybook](https://procore.github.io/core/latest/?path=/story/demos-avatarstack--demo)\n\n @see [Design Guidelines](https://design.procore.com/avatar-stack)\n */\nexport const AvatarStack = forwardRef(_AvatarStack) as <\n Item extends AvatarStackItem\n>(\n props: AvatarStackProps<Item> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof _AvatarStack>\n\n// @ts-ignore\nAvatarStack.displayName = 'AvatarStack'\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AvatarStack.js","names":["Building","People","useId","React","forwardRef","useMemo","useState","Avatar","Button","ContactItem","Link","Modal","OverlayTrigger","Popover","Typography","useI18nContext","colorsOrder","foldedItemsCap","restCountThreshold","visibleItemsCap","StyledAvatar","StyledContactItem","StyledContactItems","StyledModalBody","StyledViewAllWrapper","StyledWrapper","useAvatarPopover","OVERLAY_WRAPPER_SELECTOR","FOCUSABLE_SELECTOR","POPOVER_TRIGGER","POPOVER_SHOW_KEYS","POPOVER_HIDE_KEYS","overlay","target","getOverflowValues","items","foldedItems","restCountLabel","isViewAllNeeded","visibleItems","length","slice","restItemsCount","concat","getIcon","type","size","createElement","getContactIcon","getAvatarIcon","avatarSize","getColorOrder","avatarItems","reduce","_ref","item","map","color","imageUrl","inactive","set","id","currentColorIndex","indexOf","nextColorIndex","Map","AvatarStackContactItem","_ref2","initials","name","linkUrl","description","disabled","icon","key","Title","href","Description","AvatarContent","_ref3","props","_objectWithoutProperties","_excluded","avatarIcon","Portrait","_extends","Icon","Label","AvatarWithPopover","_ref4","colors","_useAvatarPopover","focusableSelector","overlayWrapperSelector","triggerRef","popoverContentRef","beforeShow","beforeHide","afterHide","trigger","showKeys","hideKeys","restoreFocusOnHide","shrinkOverlay","arrow","trackAriaExpanded","placement","Content","ref","role","$color","get","FoldedAvatarStack","_ref5","onClickViewAll","title","I18n","restAvatarId","_useAvatarPopover2","onClick","variant","t","ViewAllModal","_ref6","isOpen","onClose","labelId","text","open","Header","Heading","Footer","FooterButtons","defaultInitials","defaultGetImageUrl","getTransformedItems","_ref7","getInitials","getImageUrl","_objectSpread","_AvatarStack","_ref8","_items","_ref8$size","_ref8$getInitials","_ref8$getImageUrl","_excluded2","_useState","_useState2","_slicedToArray","isModalOpen","setIsModalOpen","_useMemo","visibleItemsColors","AvatarStack","displayName"],"sources":["../../src/AvatarStack/AvatarStack.tsx"],"sourcesContent":["import { Building, People } from '@procore/core-icons'\nimport { useId } from '@react-aria/utils'\nimport React, { forwardRef, useMemo, useState } from 'react'\nimport { Avatar } from '../Avatar'\nimport { Button } from '../Button'\nimport { ContactItem } from '../ContactItem'\nimport { Link } from '../Link'\nimport { Modal } from '../Modal'\nimport { OverlayTrigger } from '../OverlayTrigger/OverlayTrigger'\nimport { Popover } from '../Popover'\nimport { Typography } from '../Typography'\nimport { useI18nContext } from '../_hooks/I18n'\nimport type { TriggerVariant } from '../_hooks/Trigger'\nimport type { Color } from '../_styles/colors'\nimport {\n colorsOrder,\n foldedItemsCap,\n restCountThreshold,\n visibleItemsCap,\n} from './AvatarStack.constants'\nimport {\n StyledAvatar,\n StyledContactItem,\n StyledContactItems,\n StyledModalBody,\n StyledViewAllWrapper,\n StyledWrapper,\n} from './AvatarStack.styles'\nimport type {\n AvatarStackItem,\n AvatarStackItemId,\n AvatarStackItemType,\n AvatarStackProps,\n AvatarStackSize,\n FoldedAvatarStackProps,\n ViewAllModalProps,\n} from './AvatarStack.types'\nimport { useAvatarPopover } from './useAvatarPopover'\n\nconst OVERLAY_WRAPPER_SELECTOR =\n '[data-qa=\"core-overlay-trigger-overlay-wrapper\"]'\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n\nconst POPOVER_TRIGGER = ['hover', 'focus'] as TriggerVariant[]\n\nconst POPOVER_SHOW_KEYS = ['Enter', ' ']\n\nconst POPOVER_HIDE_KEYS = {\n overlay: ['Escape', 'Esc'],\n target: ['Escape', 'Esc'],\n}\n\nexport function getOverflowValues<Item extends AvatarStackItem>(items: Item[]) {\n let foldedItems: Item[] = []\n let restCountLabel: string | null = null\n let isViewAllNeeded = false\n\n const visibleItems =\n items.length > visibleItemsCap ? items.slice(0, visibleItemsCap - 1) : items\n const restItemsCount = items.length - visibleItems.length\n\n if (restItemsCount > 0) {\n foldedItems = items.slice(\n visibleItems.length,\n visibleItems.length + foldedItemsCap\n )\n\n restCountLabel =\n restItemsCount > restCountThreshold\n ? `${restCountThreshold}+`\n : `+${restItemsCount}`\n\n isViewAllNeeded = restItemsCount > foldedItemsCap\n }\n\n return {\n visibleItems,\n foldedItems,\n restCountLabel,\n isViewAllNeeded,\n }\n}\n\nexport function getIcon(type: AvatarStackItemType, size: 'md' | 'sm') {\n switch (type) {\n case 'company':\n return <Building size={size} />\n\n case 'group':\n return <People size={size} />\n\n case 'user':\n default:\n return null\n }\n}\n\nfunction getContactIcon(type: AvatarStackItemType) {\n return getIcon(type, 'md')\n}\n\nexport function getAvatarIcon(\n type: AvatarStackItemType,\n size: AvatarStackSize\n) {\n const avatarSize = size === 'lg' ? 'md' : 'sm'\n return getIcon(type, avatarSize)\n}\n\nexport function getColorOrder(avatarItems: AvatarStackItem[]) {\n return avatarItems.reduce(\n ({ map, color }, item) => {\n if (item.imageUrl) {\n return {\n map,\n color,\n }\n }\n\n if (item.inactive) {\n map.set(item.id, 'gray70')\n\n return {\n map,\n color,\n }\n }\n\n map.set(item.id, color)\n\n const currentColorIndex = colorsOrder.indexOf(color)\n const nextColorIndex = (currentColorIndex + 1) % colorsOrder.length\n return {\n map,\n color: item.imageUrl ? color : colorsOrder[nextColorIndex],\n }\n },\n {\n map: new Map<AvatarStackItemId, Color>(),\n color: colorsOrder[0],\n }\n ).map\n}\n\nexport function AvatarStackContactItem({\n id,\n type,\n imageUrl,\n initials,\n inactive,\n name,\n linkUrl,\n description,\n}: AvatarStackItem) {\n return (\n <StyledContactItem\n disabled={inactive}\n icon={getContactIcon(type)}\n imageUrl={imageUrl}\n initials={initials}\n key={id}\n >\n <ContactItem.Title>\n {!inactive && linkUrl ? <Link href={linkUrl}>{name}</Link> : name}\n </ContactItem.Title>\n <ContactItem.Description>\n {type === 'group' ? (\n <Typography color=\"gray15\">{description}</Typography>\n ) : (\n description\n )}\n </ContactItem.Description>\n </StyledContactItem>\n )\n}\n\nexport function AvatarContent({\n imageUrl,\n initials,\n type,\n size,\n ...props\n}: {\n imageUrl?: AvatarStackItem['imageUrl']\n initials: AvatarStackItem['initials']\n type: AvatarStackItem['type']\n size: AvatarStackSize\n}) {\n const avatarIcon = getAvatarIcon(type, size)\n\n if (imageUrl) {\n return <Avatar.Portrait {...props} imageUrl={imageUrl} />\n }\n\n if (avatarIcon) {\n return <Avatar.Icon {...props} icon={avatarIcon} />\n }\n\n if (initials) {\n return <Avatar.Label {...props}>{initials}</Avatar.Label>\n }\n\n return null\n}\n\nfunction AvatarWithPopover<Item extends AvatarStackItem>({\n item,\n size,\n colors,\n}: {\n item: Item\n size: AvatarStackSize\n colors: Map<AvatarStackItemId, Color>\n}) {\n const { triggerRef, popoverContentRef, beforeShow, beforeHide, afterHide } =\n useAvatarPopover({\n focusableSelector: FOCUSABLE_SELECTOR,\n overlayWrapperSelector: OVERLAY_WRAPPER_SELECTOR,\n })\n\n return (\n <OverlayTrigger\n key={item.id}\n trigger={POPOVER_TRIGGER}\n showKeys={POPOVER_SHOW_KEYS}\n hideKeys={POPOVER_HIDE_KEYS}\n restoreFocusOnHide={false}\n shrinkOverlay\n arrow\n trackAriaExpanded\n placement=\"top\"\n beforeShow={beforeShow}\n beforeHide={beforeHide}\n afterHide={afterHide}\n overlay={\n <Popover.Content ref={popoverContentRef} placement=\"top\">\n <AvatarStackContactItem\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n </Popover.Content>\n }\n >\n <StyledAvatar\n ref={triggerRef}\n role=\"button\"\n $color={colors.get(item.id) as Color}\n aria-label={`${item.name}, ${item.description}`}\n disabled={item.inactive}\n size={size}\n >\n <AvatarContent\n imageUrl={item.imageUrl}\n initials={item.initials}\n type={item.type}\n size={size}\n />\n </StyledAvatar>\n </OverlayTrigger>\n )\n}\n\nexport function FoldedAvatarStack<Item extends AvatarStackItem>({\n items,\n onClickViewAll,\n size,\n restCountLabel,\n isViewAllNeeded,\n title,\n}: FoldedAvatarStackProps<Item>) {\n const I18n = useI18nContext()\n const restAvatarId = useId()\n const { triggerRef, popoverContentRef, beforeShow, beforeHide, afterHide } =\n useAvatarPopover({\n focusableSelector: FOCUSABLE_SELECTOR,\n overlayWrapperSelector: OVERLAY_WRAPPER_SELECTOR,\n })\n\n return (\n <OverlayTrigger\n aria-labelledby={restAvatarId}\n trigger={POPOVER_TRIGGER}\n showKeys={POPOVER_SHOW_KEYS}\n hideKeys={POPOVER_HIDE_KEYS}\n restoreFocusOnHide={false}\n shrinkOverlay\n arrow\n trackAriaExpanded\n placement=\"top\"\n beforeShow={beforeShow}\n beforeHide={beforeHide}\n afterHide={afterHide}\n overlay={\n <Popover.Content ref={popoverContentRef} placement=\"top\">\n <StyledContactItems>\n {items.map((item) => (\n <AvatarStackContactItem\n key={item.id}\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n ))}\n </StyledContactItems>\n {isViewAllNeeded && (\n <StyledViewAllWrapper>\n <Button\n data-qa=\"core-avatar-stack-view-all-modal-trigger\"\n onClick={onClickViewAll}\n size=\"sm\"\n variant=\"secondary\"\n >\n {I18n.t('core.avatarStack.viewAll')}\n </Button>\n </StyledViewAllWrapper>\n )}\n </Popover.Content>\n }\n >\n <StyledAvatar\n ref={triggerRef}\n role=\"button\"\n id={restAvatarId}\n aria-label={`${restCountLabel}, ${title}`}\n data-qa=\"core-avatar-stack-folded-avatars-popover-trigger\"\n size={size}\n $color=\"gray85\"\n >\n <Avatar.Label aria-hidden>\n <Typography color=\"black\">{restCountLabel}</Typography>\n </Avatar.Label>\n </StyledAvatar>\n </OverlayTrigger>\n )\n}\n\nexport function ViewAllModal<Item extends AvatarStackItem>({\n isOpen,\n onClose,\n title,\n items,\n}: ViewAllModalProps<Item>) {\n const I18n = useI18nContext()\n const labelId = useId()\n const text = `${title} (${items.length})`\n\n return (\n <Modal\n role=\"dialog\"\n aria-labelledby={labelId}\n open={isOpen}\n onClose={onClose}\n >\n <Modal.Header onClose={onClose}>\n <Modal.Heading id={labelId}>{text}</Modal.Heading>\n </Modal.Header>\n <StyledModalBody>\n {items.map((item) => (\n <AvatarStackContactItem\n key={item.id}\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n ))}\n </StyledModalBody>\n <Modal.Footer>\n <Modal.FooterButtons>\n <Button onClick={onClose}>{I18n.t('core.avatarStack.close')}</Button>\n </Modal.FooterButtons>\n </Modal.Footer>\n </Modal>\n )\n}\n\nexport function defaultInitials<Item extends AvatarStackItem>(item: Item) {\n return item.initials as string\n}\n\nexport function defaultGetImageUrl<Item extends AvatarStackItem>(item: Item) {\n return item.imageUrl as string\n}\n\nexport function getTransformedItems<Item extends AvatarStackItem>({\n items,\n getInitials,\n getImageUrl,\n}: {\n items: Item[]\n getInitials: AvatarStackProps<Item>['getInitials']\n getImageUrl: AvatarStackProps<Item>['getImageUrl']\n}) {\n return items.map((item) => ({\n ...item,\n initials: getInitials!(item),\n imageUrl: getImageUrl!(item),\n }))\n}\n\nconst _AvatarStack = <Item extends AvatarStackItem>(\n {\n items: _items,\n title,\n size = 'lg',\n getInitials = defaultInitials,\n getImageUrl = defaultGetImageUrl,\n onClickViewAll,\n ...props\n }: AvatarStackProps<Item>,\n ref: React.ForwardedRef<HTMLDivElement>\n) => {\n const [isModalOpen, setIsModalOpen] = useState(false)\n\n const items = useMemo(\n () =>\n getTransformedItems({\n items: _items,\n getInitials,\n getImageUrl,\n }),\n [_items]\n )\n\n const { visibleItems, foldedItems, restCountLabel, isViewAllNeeded } =\n useMemo(() => getOverflowValues(items), [items])\n\n const visibleItemsColors = useMemo(\n () => getColorOrder(visibleItems),\n [visibleItems]\n )\n\n return (\n <div ref={ref} {...props}>\n {isViewAllNeeded && !onClickViewAll && (\n <ViewAllModal\n isOpen={isModalOpen}\n onClose={() => setIsModalOpen(false)}\n title={title}\n items={items}\n />\n )}\n <StyledWrapper>\n {visibleItems.map((item) => {\n return (\n <AvatarWithPopover\n colors={visibleItemsColors}\n item={item}\n key={`${item.name}_${item.id}`}\n size={size}\n />\n )\n })}\n {foldedItems.length > 0 && (\n <FoldedAvatarStack\n restCountLabel={restCountLabel as string}\n isViewAllNeeded={isViewAllNeeded}\n items={foldedItems}\n onClickViewAll={onClickViewAll || (() => setIsModalOpen(true))}\n size={size}\n title={title}\n />\n )}\n </StyledWrapper>\n </div>\n )\n}\n\n/**\n\n We use avatars to visually represent our users, places, and things in the app.\n These can be in the form of rich media or representative illustrations.\n\n @since 10.19.0\n\n @see [Storybook](https://procore.github.io/core/latest/?path=/story/demos-avatarstack--demo)\n\n @see [Design Guidelines](https://design.procore.com/avatar-stack)\n */\nexport const AvatarStack = forwardRef(_AvatarStack) as <\n Item extends AvatarStackItem\n>(\n props: AvatarStackProps<Item> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof _AvatarStack>\n\n// @ts-ignore\nAvatarStack.displayName = 'AvatarStack'\n"],"mappings":"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"}
|
|
@@ -7,32 +7,32 @@ import { spacing } from '../_styles/spacing';
|
|
|
7
7
|
var maxModalWidth = 528;
|
|
8
8
|
var StyledBaseAvatar = /*#__PURE__*/styled(Avatar).withConfig({
|
|
9
9
|
displayName: "StyledBaseAvatar",
|
|
10
|
-
componentId: "core-
|
|
11
|
-
})(["border-color:", ";border-style:solid;border-width:1px;&:hover{z-index:1;}
|
|
10
|
+
componentId: "core-12_39_0__sc-ft72hu-0"
|
|
11
|
+
})(["border-color:", ";border-style:solid;border-width:1px;&:hover{z-index:1;}"], colors.white);
|
|
12
12
|
export var StyledAvatar = /*#__PURE__*/styled(StyledBaseAvatar).withConfig({
|
|
13
13
|
displayName: "StyledAvatar",
|
|
14
|
-
componentId: "core-
|
|
14
|
+
componentId: "core-12_39_0__sc-ft72hu-1"
|
|
15
15
|
})(["background-color:", ";"], function (props) {
|
|
16
16
|
return colors[props.$color];
|
|
17
17
|
});
|
|
18
18
|
export var StyledContactItems = /*#__PURE__*/styled.div.withConfig({
|
|
19
19
|
displayName: "StyledContactItems",
|
|
20
|
-
componentId: "core-
|
|
20
|
+
componentId: "core-12_39_0__sc-ft72hu-2"
|
|
21
21
|
})(["padding-top:", "px;padding-bottom:", "px;padding-left:", "px;"], spacing.sm, spacing.sm, spacing.xs);
|
|
22
22
|
export var StyledWrapper = /*#__PURE__*/styled.div.withConfig({
|
|
23
23
|
displayName: "StyledWrapper",
|
|
24
|
-
componentId: "core-
|
|
24
|
+
componentId: "core-12_39_0__sc-ft72hu-3"
|
|
25
25
|
})(["display:flex;", " + ", "{margin-left:-", "px;}"], StyledAvatar, StyledAvatar, spacing.sm);
|
|
26
26
|
export var StyledViewAllWrapper = /*#__PURE__*/styled.div.withConfig({
|
|
27
27
|
displayName: "StyledViewAllWrapper",
|
|
28
|
-
componentId: "core-
|
|
28
|
+
componentId: "core-12_39_0__sc-ft72hu-4"
|
|
29
29
|
})(["display:flex;margin-left:", "px;margin-bottom:", "px;"], spacing.md, spacing.lg);
|
|
30
30
|
export var StyledModalBody = /*#__PURE__*/styled(Modal.Body).withConfig({
|
|
31
31
|
displayName: "StyledModalBody",
|
|
32
|
-
componentId: "core-
|
|
32
|
+
componentId: "core-12_39_0__sc-ft72hu-5"
|
|
33
33
|
})(["max-width:", "px;"], maxModalWidth);
|
|
34
34
|
export var StyledContactItem = /*#__PURE__*/styled(ContactItem).withConfig({
|
|
35
35
|
displayName: "StyledContactItem",
|
|
36
|
-
componentId: "core-
|
|
36
|
+
componentId: "core-12_39_0__sc-ft72hu-6"
|
|
37
37
|
})(["flex-shrink:0;"]);
|
|
38
38
|
//# sourceMappingURL=AvatarStack.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarStack.styles.js","names":["styled","Avatar","ContactItem","Modal","colors","spacing","maxModalWidth","StyledBaseAvatar","withConfig","displayName","componentId","white","StyledAvatar","props","$color","StyledContactItems","div","sm","xs","StyledWrapper","StyledViewAllWrapper","md","lg","StyledModalBody","Body","StyledContactItem"],"sources":["../../src/AvatarStack/AvatarStack.styles.ts"],"sourcesContent":["import styled from 'styled-components'\nimport { Avatar } from '../Avatar'\nimport { ContactItem } from '../ContactItem'\nimport { Modal } from '../Modal'\nimport type { Color } from '../_styles/colors'\nimport { colors } from '../_styles/colors'\nimport { spacing } from '../_styles/spacing'\n\nconst maxModalWidth = 528\n\nconst StyledBaseAvatar = styled(Avatar)`\n border-color: ${colors.white};\n border-style: solid;\n border-width: 1px;\n\n &:hover {\n z-index: 1;\n }\n
|
|
1
|
+
{"version":3,"file":"AvatarStack.styles.js","names":["styled","Avatar","ContactItem","Modal","colors","spacing","maxModalWidth","StyledBaseAvatar","withConfig","displayName","componentId","white","StyledAvatar","props","$color","StyledContactItems","div","sm","xs","StyledWrapper","StyledViewAllWrapper","md","lg","StyledModalBody","Body","StyledContactItem"],"sources":["../../src/AvatarStack/AvatarStack.styles.ts"],"sourcesContent":["import styled from 'styled-components'\nimport { Avatar } from '../Avatar'\nimport { ContactItem } from '../ContactItem'\nimport { Modal } from '../Modal'\nimport type { Color } from '../_styles/colors'\nimport { colors } from '../_styles/colors'\nimport { spacing } from '../_styles/spacing'\n\nconst maxModalWidth = 528\n\nconst StyledBaseAvatar = styled(Avatar)`\n border-color: ${colors.white};\n border-style: solid;\n border-width: 1px;\n\n &:hover {\n z-index: 1;\n }\n`\n\nexport const StyledAvatar = styled(StyledBaseAvatar)<{ $color: Color }>`\n background-color: ${(props: { $color: Color }) => colors[props.$color]};\n`\n\nexport const StyledContactItems = styled.div`\n padding-top: ${spacing.sm}px;\n padding-bottom: ${spacing.sm}px;\n padding-left: ${spacing.xs}px;\n`\n\nexport const StyledWrapper = styled.div`\n display: flex;\n\n ${StyledAvatar} + ${StyledAvatar} {\n margin-left: -${spacing.sm}px;\n }\n`\n\nexport const StyledViewAllWrapper = styled.div`\n display: flex;\n margin-left: ${spacing.md}px;\n margin-bottom: ${spacing.lg}px;\n`\n\nexport const StyledModalBody = styled(Modal.Body)`\n max-width: ${maxModalWidth}px;\n`\n\nexport const StyledContactItem = styled(ContactItem)`\n flex-shrink: 0;\n`\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AACtC,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,KAAK,QAAQ,UAAU;AAEhC,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,OAAO,QAAQ,oBAAoB;AAE5C,IAAMC,aAAa,GAAG,GAAG;AAEzB,IAAMC,gBAAgB,gBAAGP,MAAM,CAACC,MAAM,CAAC,CAAAO,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,kFACrBN,MAAM,CAACO,KAAK,CAO7B;AAED,OAAO,IAAMC,YAAY,gBAAGZ,MAAM,CAACO,gBAAgB,CAAC,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,+BAC9B,UAACG,KAAwB;EAAA,OAAKT,MAAM,CAACS,KAAK,CAACC,MAAM,CAAC;AAAA,EACvE;AAED,OAAO,IAAMC,kBAAkB,gBAAGf,MAAM,CAACgB,GAAG,CAAAR,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,sEAC3BL,OAAO,CAACY,EAAE,EACPZ,OAAO,CAACY,EAAE,EACZZ,OAAO,CAACa,EAAE,CAC3B;AAED,OAAO,IAAMC,aAAa,gBAAGnB,MAAM,CAACgB,GAAG,CAAAR,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,uDAGnCE,YAAY,EAAMA,YAAY,EACdP,OAAO,CAACY,EAAE,CAE7B;AAED,OAAO,IAAMG,oBAAoB,gBAAGpB,MAAM,CAACgB,GAAG,CAAAR,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,8DAE7BL,OAAO,CAACgB,EAAE,EACRhB,OAAO,CAACiB,EAAE,CAC5B;AAED,OAAO,IAAMC,eAAe,gBAAGvB,MAAM,CAACG,KAAK,CAACqB,IAAI,CAAC,CAAAhB,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,0BAClCJ,aAAa,CAC3B;AAED,OAAO,IAAMmB,iBAAiB,gBAAGzB,MAAM,CAACE,WAAW,CAAC,CAAAM,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,sBAEnD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { UseAvatarPopoverProps } from './useAvatarPopover.types';
|
|
3
|
+
/**
|
|
4
|
+
* Manages the accessibility behavior for avatar popovers, ensuring they are keyboard navigable
|
|
5
|
+
*
|
|
6
|
+
* @see https://procoretech.atlassian.net/browse/UXI-1632?focusedCommentId=6513946
|
|
7
|
+
*/
|
|
8
|
+
export declare const useAvatarPopover: (props: UseAvatarPopoverProps) => {
|
|
9
|
+
triggerRef: React.RefObject<HTMLDivElement>;
|
|
10
|
+
popoverContentRef: (node: HTMLDivElement | null) => void;
|
|
11
|
+
beforeShow: (event: Event) => boolean;
|
|
12
|
+
beforeHide: (event: Event) => boolean;
|
|
13
|
+
afterHide: () => void;
|
|
14
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Manages the accessibility behavior for avatar popovers, ensuring they are keyboard navigable
|
|
4
|
+
*
|
|
5
|
+
* @see https://procoretech.atlassian.net/browse/UXI-1632?focusedCommentId=6513946
|
|
6
|
+
*/
|
|
7
|
+
export var useAvatarPopover = function useAvatarPopover(props) {
|
|
8
|
+
var focusableSelector = props.focusableSelector,
|
|
9
|
+
overlayWrapperSelector = props.overlayWrapperSelector;
|
|
10
|
+
var triggerRef = React.useRef(null);
|
|
11
|
+
var openedByKeyboardRef = React.useRef(false);
|
|
12
|
+
var popoverContentRef = React.useCallback(function (node) {
|
|
13
|
+
if (node && openedByKeyboardRef.current) {
|
|
14
|
+
var firstFocusable = node.querySelector(focusableSelector);
|
|
15
|
+
firstFocusable === null || firstFocusable === void 0 ? void 0 : firstFocusable.focus();
|
|
16
|
+
}
|
|
17
|
+
}, [focusableSelector]);
|
|
18
|
+
var beforeShow = React.useCallback(function (event) {
|
|
19
|
+
// Block auto-open on keyboard focus alone - require Enter/Space
|
|
20
|
+
if (event.type === 'focusin') {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
openedByKeyboardRef.current = event instanceof KeyboardEvent;
|
|
24
|
+
return true;
|
|
25
|
+
}, []);
|
|
26
|
+
var beforeHide = React.useCallback(function (event) {
|
|
27
|
+
if (event.type === 'focusout') {
|
|
28
|
+
var relatedTarget = event.relatedTarget;
|
|
29
|
+
// Keep open when focus moves into the overlay (e.g. auto-focus after keyboard open)
|
|
30
|
+
if (relatedTarget !== null && relatedTarget !== void 0 && relatedTarget.closest(overlayWrapperSelector)) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
// For hover-opened popovers, don't close on focus changes
|
|
34
|
+
if (!openedByKeyboardRef.current) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}, [overlayWrapperSelector]);
|
|
40
|
+
var afterHide = React.useCallback(function () {
|
|
41
|
+
if (openedByKeyboardRef.current) {
|
|
42
|
+
requestAnimationFrame(function () {
|
|
43
|
+
var _triggerRef$current;
|
|
44
|
+
return (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.focus();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
openedByKeyboardRef.current = false;
|
|
48
|
+
}, []);
|
|
49
|
+
return {
|
|
50
|
+
triggerRef: triggerRef,
|
|
51
|
+
popoverContentRef: popoverContentRef,
|
|
52
|
+
beforeShow: beforeShow,
|
|
53
|
+
beforeHide: beforeHide,
|
|
54
|
+
afterHide: afterHide
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=useAvatarPopover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAvatarPopover.js","names":["React","useAvatarPopover","props","focusableSelector","overlayWrapperSelector","triggerRef","useRef","openedByKeyboardRef","popoverContentRef","useCallback","node","current","firstFocusable","querySelector","focus","beforeShow","event","type","KeyboardEvent","beforeHide","relatedTarget","closest","afterHide","requestAnimationFrame","_triggerRef$current"],"sources":["../../src/AvatarStack/useAvatarPopover.tsx"],"sourcesContent":["import React from 'react'\nimport type { UseAvatarPopoverProps } from './useAvatarPopover.types'\n\n/**\n * Manages the accessibility behavior for avatar popovers, ensuring they are keyboard navigable\n *\n * @see https://procoretech.atlassian.net/browse/UXI-1632?focusedCommentId=6513946\n */\nexport const useAvatarPopover = (props: UseAvatarPopoverProps) => {\n const { focusableSelector, overlayWrapperSelector } = props\n const triggerRef = React.useRef<HTMLDivElement>(null)\n const openedByKeyboardRef = React.useRef(false)\n\n const popoverContentRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n if (node && openedByKeyboardRef.current) {\n const firstFocusable = node.querySelector(\n focusableSelector\n ) as HTMLElement | null\n firstFocusable?.focus()\n }\n },\n [focusableSelector]\n )\n\n const beforeShow = React.useCallback((event: Event) => {\n // Block auto-open on keyboard focus alone - require Enter/Space\n if (event.type === 'focusin') {\n return false\n }\n openedByKeyboardRef.current = event instanceof KeyboardEvent\n return true\n }, [])\n\n const beforeHide = React.useCallback(\n (event: Event) => {\n if (event.type === 'focusout') {\n const relatedTarget = (event as FocusEvent)\n .relatedTarget as HTMLElement | null\n // Keep open when focus moves into the overlay (e.g. auto-focus after keyboard open)\n if (relatedTarget?.closest(overlayWrapperSelector)) {\n return false\n }\n // For hover-opened popovers, don't close on focus changes\n if (!openedByKeyboardRef.current) {\n return false\n }\n }\n return true\n },\n [overlayWrapperSelector]\n )\n\n const afterHide = React.useCallback(() => {\n if (openedByKeyboardRef.current) {\n requestAnimationFrame(() => triggerRef.current?.focus())\n }\n openedByKeyboardRef.current = false\n }, [])\n\n return {\n triggerRef,\n popoverContentRef,\n beforeShow,\n beforeHide,\n afterHide,\n }\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,KAA4B,EAAK;EAChE,IAAQC,iBAAiB,GAA6BD,KAAK,CAAnDC,iBAAiB;IAAEC,sBAAsB,GAAKF,KAAK,CAAhCE,sBAAsB;EACjD,IAAMC,UAAU,GAAGL,KAAK,CAACM,MAAM,CAAiB,IAAI,CAAC;EACrD,IAAMC,mBAAmB,GAAGP,KAAK,CAACM,MAAM,CAAC,KAAK,CAAC;EAE/C,IAAME,iBAAiB,GAAGR,KAAK,CAACS,WAAW,CACzC,UAACC,IAA2B,EAAK;IAC/B,IAAIA,IAAI,IAAIH,mBAAmB,CAACI,OAAO,EAAE;MACvC,IAAMC,cAAc,GAAGF,IAAI,CAACG,aAAa,CACvCV,iBACF,CAAuB;MACvBS,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEE,KAAK,CAAC,CAAC;IACzB;EACF,CAAC,EACD,CAACX,iBAAiB,CACpB,CAAC;EAED,IAAMY,UAAU,GAAGf,KAAK,CAACS,WAAW,CAAC,UAACO,KAAY,EAAK;IACrD;IACA,IAAIA,KAAK,CAACC,IAAI,KAAK,SAAS,EAAE;MAC5B,OAAO,KAAK;IACd;IACAV,mBAAmB,CAACI,OAAO,GAAGK,KAAK,YAAYE,aAAa;IAC5D,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,UAAU,GAAGnB,KAAK,CAACS,WAAW,CAClC,UAACO,KAAY,EAAK;IAChB,IAAIA,KAAK,CAACC,IAAI,KAAK,UAAU,EAAE;MAC7B,IAAMG,aAAa,GAAIJ,KAAK,CACzBI,aAAmC;MACtC;MACA,IAAIA,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAEC,OAAO,CAACjB,sBAAsB,CAAC,EAAE;QAClD,OAAO,KAAK;MACd;MACA;MACA,IAAI,CAACG,mBAAmB,CAACI,OAAO,EAAE;QAChC,OAAO,KAAK;MACd;IACF;IACA,OAAO,IAAI;EACb,CAAC,EACD,CAACP,sBAAsB,CACzB,CAAC;EAED,IAAMkB,SAAS,GAAGtB,KAAK,CAACS,WAAW,CAAC,YAAM;IACxC,IAAIF,mBAAmB,CAACI,OAAO,EAAE;MAC/BY,qBAAqB,CAAC;QAAA,IAAAC,mBAAA;QAAA,QAAAA,mBAAA,GAAMnB,UAAU,CAACM,OAAO,cAAAa,mBAAA,uBAAlBA,mBAAA,CAAoBV,KAAK,CAAC,CAAC;MAAA,EAAC;IAC1D;IACAP,mBAAmB,CAACI,OAAO,GAAG,KAAK;EACrC,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACLN,UAAU,EAAVA,UAAU;IACVG,iBAAiB,EAAjBA,iBAAiB;IACjBO,UAAU,EAAVA,UAAU;IACVI,UAAU,EAAVA,UAAU;IACVG,SAAS,EAATA;EACF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAvatarPopover.types.js","names":[],"sources":["../../src/AvatarStack/useAvatarPopover.types.ts"],"sourcesContent":["export type UseAvatarPopoverProps = {\n focusableSelector: string\n overlayWrapperSelector: string\n}\n"],"mappings":""}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import styled from 'styled-components';
|
|
2
2
|
export var StyledBadge = /*#__PURE__*/styled.div.withConfig({
|
|
3
3
|
displayName: "StyledBadge",
|
|
4
|
-
componentId: "core-
|
|
4
|
+
componentId: "core-12_39_0__sc-rpertu-0"
|
|
5
5
|
})(["display:inline-block;position:relative;"]);
|
|
6
6
|
export var StyledBadgeLabel = /*#__PURE__*/styled.span.withConfig({
|
|
7
7
|
displayName: "StyledBadgeLabel",
|
|
8
|
-
componentId: "core-
|
|
8
|
+
componentId: "core-12_39_0__sc-rpertu-1"
|
|
9
9
|
})(["bottom:100%;position:absolute;right:0;transform:translateX(50%) translateY(50%);"]);
|
|
10
10
|
//# sourceMappingURL=Badge.styles.js.map
|