@wordpress/ui 0.11.0 → 0.12.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/CHANGELOG.md +46 -0
- package/README.md +4 -4
- package/build/alert-dialog/index.cjs +3 -0
- package/build/alert-dialog/index.cjs.map +2 -2
- package/build/alert-dialog/popup.cjs +120 -55
- package/build/alert-dialog/popup.cjs.map +3 -3
- package/build/alert-dialog/portal.cjs +38 -0
- package/build/alert-dialog/portal.cjs.map +7 -0
- package/build/alert-dialog/types.cjs.map +1 -1
- package/build/collapsible-card/content.cjs +9 -5
- package/build/collapsible-card/content.cjs.map +2 -2
- package/build/collapsible-card/header.cjs +14 -4
- package/build/collapsible-card/header.cjs.map +3 -3
- package/build/dialog/content.cjs +85 -0
- package/build/dialog/content.cjs.map +7 -0
- package/build/dialog/context.cjs +12 -44
- package/build/dialog/context.cjs.map +2 -2
- package/build/dialog/description.cjs +59 -0
- package/build/dialog/description.cjs.map +7 -0
- package/build/dialog/footer.cjs +5 -4
- package/build/dialog/footer.cjs.map +2 -2
- package/build/dialog/header.cjs +5 -4
- package/build/dialog/header.cjs.map +2 -2
- package/build/dialog/index.cjs +9 -0
- package/build/dialog/index.cjs.map +2 -2
- package/build/dialog/popup.cjs +21 -9
- package/build/dialog/popup.cjs.map +2 -2
- package/build/dialog/portal.cjs +38 -0
- package/build/dialog/portal.cjs.map +7 -0
- package/build/dialog/root.cjs +3 -2
- package/build/dialog/root.cjs.map +2 -2
- package/build/dialog/title.cjs +9 -6
- package/build/dialog/title.cjs.map +2 -2
- package/build/dialog/types.cjs.map +1 -1
- package/build/drawer/action.cjs +48 -0
- package/build/drawer/action.cjs.map +7 -0
- package/build/drawer/close-icon.cjs +58 -0
- package/build/drawer/close-icon.cjs.map +7 -0
- package/build/drawer/content.cjs +86 -0
- package/build/drawer/content.cjs.map +7 -0
- package/build/drawer/context.cjs +44 -0
- package/build/drawer/context.cjs.map +7 -0
- package/build/drawer/description.cjs +47 -0
- package/build/drawer/description.cjs.map +7 -0
- package/build/drawer/footer.cjs +65 -0
- package/build/drawer/footer.cjs.map +7 -0
- package/build/drawer/header.cjs +65 -0
- package/build/drawer/header.cjs.map +7 -0
- package/build/drawer/index.cjs +61 -0
- package/build/drawer/index.cjs.map +7 -0
- package/build/drawer/popup.cjs +103 -0
- package/build/drawer/popup.cjs.map +7 -0
- package/build/drawer/portal.cjs +38 -0
- package/build/drawer/portal.cjs.map +7 -0
- package/build/drawer/root.cjs +49 -0
- package/build/drawer/root.cjs.map +7 -0
- package/build/drawer/title.cjs +70 -0
- package/build/drawer/title.cjs.map +7 -0
- package/build/drawer/trigger.cjs +38 -0
- package/build/drawer/trigger.cjs.map +7 -0
- package/build/drawer/types.cjs +19 -0
- package/build/drawer/types.cjs.map +7 -0
- package/build/form/primitives/autocomplete/clear.cjs +62 -0
- package/build/form/primitives/autocomplete/clear.cjs.map +7 -0
- package/build/form/primitives/autocomplete/collection.cjs +38 -0
- package/build/form/primitives/autocomplete/collection.cjs.map +7 -0
- package/build/form/primitives/autocomplete/empty.cjs +67 -0
- package/build/form/primitives/autocomplete/empty.cjs.map +7 -0
- package/build/form/primitives/autocomplete/index.cjs +64 -0
- package/build/form/primitives/autocomplete/index.cjs.map +7 -0
- package/build/form/primitives/autocomplete/input-group.cjs +36 -0
- package/build/form/primitives/autocomplete/input-group.cjs.map +7 -0
- package/build/form/primitives/autocomplete/input.cjs +47 -0
- package/build/form/primitives/autocomplete/input.cjs.map +7 -0
- package/build/form/primitives/autocomplete/item.cjs +81 -0
- package/build/form/primitives/autocomplete/item.cjs.map +7 -0
- package/build/form/primitives/autocomplete/list-body.cjs +57 -0
- package/build/form/primitives/autocomplete/list-body.cjs.map +7 -0
- package/build/form/primitives/autocomplete/list.cjs +67 -0
- package/build/form/primitives/autocomplete/list.cjs.map +7 -0
- package/build/form/primitives/autocomplete/popup.cjs +102 -0
- package/build/form/primitives/autocomplete/popup.cjs.map +7 -0
- package/build/form/primitives/autocomplete/portal.cjs +38 -0
- package/build/form/primitives/autocomplete/portal.cjs.map +7 -0
- package/build/form/primitives/autocomplete/root.cjs +35 -0
- package/build/form/primitives/autocomplete/root.cjs.map +7 -0
- package/build/form/primitives/autocomplete/types.cjs +19 -0
- package/build/form/primitives/autocomplete/types.cjs.map +7 -0
- package/build/form/primitives/autocomplete/value.cjs +35 -0
- package/build/form/primitives/autocomplete/value.cjs.map +7 -0
- package/build/form/primitives/index.cjs +3 -0
- package/build/form/primitives/index.cjs.map +2 -2
- package/build/form/primitives/select/index.cjs +3 -0
- package/build/form/primitives/select/index.cjs.map +2 -2
- package/build/form/primitives/select/item.cjs +4 -5
- package/build/form/primitives/select/item.cjs.map +2 -2
- package/build/form/primitives/select/popup.cjs +12 -11
- package/build/form/primitives/select/popup.cjs.map +2 -2
- package/build/form/primitives/select/portal.cjs +38 -0
- package/build/form/primitives/select/portal.cjs.map +7 -0
- package/build/form/primitives/select/types.cjs.map +1 -1
- package/build/index.cjs +3 -0
- package/build/index.cjs.map +2 -2
- package/build/link/link.cjs +8 -18
- package/build/link/link.cjs.map +2 -2
- package/build/link/types.cjs.map +1 -1
- package/build/notice/action-button.cjs +3 -3
- package/build/notice/action-button.cjs.map +2 -2
- package/build/notice/action-link.cjs +8 -7
- package/build/notice/action-link.cjs.map +2 -2
- package/build/notice/actions.cjs +3 -3
- package/build/notice/actions.cjs.map +2 -2
- package/build/notice/close-icon.cjs +3 -3
- package/build/notice/close-icon.cjs.map +2 -2
- package/build/notice/description.cjs +3 -3
- package/build/notice/description.cjs.map +2 -2
- package/build/notice/root.cjs +3 -3
- package/build/notice/root.cjs.map +2 -2
- package/build/notice/title.cjs +3 -3
- package/build/notice/title.cjs.map +2 -2
- package/build/popover/arrow.cjs +4 -4
- package/build/popover/arrow.cjs.map +2 -2
- package/build/popover/context.cjs +4 -44
- package/build/popover/context.cjs.map +2 -2
- package/build/popover/description.cjs +1 -24
- package/build/popover/description.cjs.map +4 -4
- package/build/popover/index.cjs +3 -0
- package/build/popover/index.cjs.map +2 -2
- package/build/popover/popup.cjs +15 -15
- package/build/popover/popup.cjs.map +2 -2
- package/build/popover/portal.cjs +38 -0
- package/build/popover/portal.cjs.map +7 -0
- package/build/popover/root.cjs.map +1 -1
- package/build/popover/title.cjs +18 -4
- package/build/popover/title.cjs.map +3 -3
- package/build/popover/types.cjs.map +1 -1
- package/build/tabs/context.cjs +9 -22
- package/build/tabs/context.cjs.map +2 -2
- package/build/tabs/list.cjs +4 -4
- package/build/tabs/list.cjs.map +2 -2
- package/build/tabs/panel.cjs +19 -6
- package/build/tabs/panel.cjs.map +3 -3
- package/build/tabs/tab.cjs +4 -4
- package/build/tabs/tab.cjs.map +2 -2
- package/build/text/text.cjs +2 -2
- package/build/text/text.cjs.map +2 -2
- package/build/tooltip/index.cjs +3 -0
- package/build/tooltip/index.cjs.map +2 -2
- package/build/tooltip/popup.cjs +11 -14
- package/build/tooltip/popup.cjs.map +3 -3
- package/build/tooltip/portal.cjs +38 -0
- package/build/tooltip/portal.cjs.map +7 -0
- package/build/tooltip/provider.cjs +2 -2
- package/build/tooltip/provider.cjs.map +3 -3
- package/build/tooltip/root.cjs.map +3 -3
- package/build/tooltip/trigger.cjs +2 -2
- package/build/tooltip/trigger.cjs.map +3 -3
- package/build/tooltip/types.cjs.map +1 -1
- package/build/utils/create-overlay-modal-context.cjs +48 -0
- package/build/utils/create-overlay-modal-context.cjs.map +7 -0
- package/build/utils/create-overlay-title-validation.cjs +93 -0
- package/build/utils/create-overlay-title-validation.cjs.map +7 -0
- package/build/utils/render-portal-with-children.cjs +37 -0
- package/build/utils/render-portal-with-children.cjs.map +7 -0
- package/build/utils/use-deprioritized-initial-focus.cjs +8 -8
- package/build/utils/use-deprioritized-initial-focus.cjs.map +2 -2
- package/build/utils/use-overlay-scroll-state-attributes.cjs +140 -0
- package/build/utils/use-overlay-scroll-state-attributes.cjs.map +7 -0
- package/build/utils/use-schedule-validation.cjs +59 -0
- package/build/utils/use-schedule-validation.cjs.map +7 -0
- package/build/visually-hidden/visually-hidden.cjs +5 -1
- package/build/visually-hidden/visually-hidden.cjs.map +2 -2
- package/build-module/alert-dialog/index.mjs +2 -0
- package/build-module/alert-dialog/index.mjs.map +2 -2
- package/build-module/alert-dialog/popup.mjs +124 -56
- package/build-module/alert-dialog/popup.mjs.map +3 -3
- package/build-module/alert-dialog/portal.mjs +13 -0
- package/build-module/alert-dialog/portal.mjs.map +7 -0
- package/build-module/collapsible-card/content.mjs +9 -5
- package/build-module/collapsible-card/content.mjs.map +2 -2
- package/build-module/collapsible-card/header.mjs +14 -4
- package/build-module/collapsible-card/header.mjs.map +3 -3
- package/build-module/dialog/content.mjs +50 -0
- package/build-module/dialog/content.mjs.map +7 -0
- package/build-module/dialog/context.mjs +10 -51
- package/build-module/dialog/context.mjs.map +2 -2
- package/build-module/dialog/description.mjs +34 -0
- package/build-module/dialog/description.mjs.map +7 -0
- package/build-module/dialog/footer.mjs +5 -4
- package/build-module/dialog/footer.mjs.map +2 -2
- package/build-module/dialog/header.mjs +5 -4
- package/build-module/dialog/header.mjs.map +2 -2
- package/build-module/dialog/index.mjs +6 -0
- package/build-module/dialog/index.mjs.map +2 -2
- package/build-module/dialog/popup.mjs +23 -11
- package/build-module/dialog/popup.mjs.map +2 -2
- package/build-module/dialog/portal.mjs +13 -0
- package/build-module/dialog/portal.mjs.map +7 -0
- package/build-module/dialog/root.mjs +3 -2
- package/build-module/dialog/root.mjs.map +2 -2
- package/build-module/dialog/title.mjs +10 -7
- package/build-module/dialog/title.mjs.map +2 -2
- package/build-module/drawer/action.mjs +23 -0
- package/build-module/drawer/action.mjs.map +7 -0
- package/build-module/drawer/close-icon.mjs +33 -0
- package/build-module/drawer/close-icon.mjs.map +7 -0
- package/build-module/drawer/content.mjs +51 -0
- package/build-module/drawer/content.mjs.map +7 -0
- package/build-module/drawer/context.mjs +16 -0
- package/build-module/drawer/context.mjs.map +7 -0
- package/build-module/drawer/description.mjs +22 -0
- package/build-module/drawer/description.mjs.map +7 -0
- package/build-module/drawer/footer.mjs +30 -0
- package/build-module/drawer/footer.mjs.map +7 -0
- package/build-module/drawer/header.mjs +30 -0
- package/build-module/drawer/header.mjs.map +7 -0
- package/build-module/drawer/index.mjs +26 -0
- package/build-module/drawer/index.mjs.map +7 -0
- package/build-module/drawer/popup.mjs +70 -0
- package/build-module/drawer/popup.mjs.map +7 -0
- package/build-module/drawer/portal.mjs +13 -0
- package/build-module/drawer/portal.mjs.map +7 -0
- package/build-module/drawer/root.mjs +24 -0
- package/build-module/drawer/root.mjs.map +7 -0
- package/build-module/drawer/title.mjs +45 -0
- package/build-module/drawer/title.mjs.map +7 -0
- package/build-module/drawer/trigger.mjs +13 -0
- package/build-module/drawer/trigger.mjs.map +7 -0
- package/build-module/drawer/types.mjs +1 -0
- package/build-module/form/primitives/autocomplete/clear.mjs +37 -0
- package/build-module/form/primitives/autocomplete/clear.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/collection.mjs +13 -0
- package/build-module/form/primitives/autocomplete/collection.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/empty.mjs +32 -0
- package/build-module/form/primitives/autocomplete/empty.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/index.mjs +28 -0
- package/build-module/form/primitives/autocomplete/index.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/input-group.mjs +11 -0
- package/build-module/form/primitives/autocomplete/input-group.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/input.mjs +22 -0
- package/build-module/form/primitives/autocomplete/input.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/item.mjs +46 -0
- package/build-module/form/primitives/autocomplete/item.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/list-body.mjs +32 -0
- package/build-module/form/primitives/autocomplete/list-body.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/list.mjs +32 -0
- package/build-module/form/primitives/autocomplete/list.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/popup.mjs +69 -0
- package/build-module/form/primitives/autocomplete/popup.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/portal.mjs +13 -0
- package/build-module/form/primitives/autocomplete/portal.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/root.mjs +10 -0
- package/build-module/form/primitives/autocomplete/root.mjs.map +7 -0
- package/build-module/form/primitives/autocomplete/types.mjs +1 -0
- package/build-module/form/primitives/autocomplete/value.mjs +10 -0
- package/build-module/form/primitives/autocomplete/value.mjs.map +7 -0
- package/build-module/form/primitives/index.mjs +2 -0
- package/build-module/form/primitives/index.mjs.map +2 -2
- package/build-module/form/primitives/select/index.mjs +2 -0
- package/build-module/form/primitives/select/index.mjs.map +2 -2
- package/build-module/form/primitives/select/item.mjs +4 -5
- package/build-module/form/primitives/select/item.mjs.map +2 -2
- package/build-module/form/primitives/select/popup.mjs +12 -11
- package/build-module/form/primitives/select/popup.mjs.map +2 -2
- package/build-module/form/primitives/select/portal.mjs +13 -0
- package/build-module/form/primitives/select/portal.mjs.map +7 -0
- package/build-module/index.mjs +2 -0
- package/build-module/index.mjs.map +2 -2
- package/build-module/link/link.mjs +8 -18
- package/build-module/link/link.mjs.map +2 -2
- package/build-module/notice/action-button.mjs +3 -3
- package/build-module/notice/action-button.mjs.map +2 -2
- package/build-module/notice/action-link.mjs +8 -7
- package/build-module/notice/action-link.mjs.map +2 -2
- package/build-module/notice/actions.mjs +3 -3
- package/build-module/notice/actions.mjs.map +2 -2
- package/build-module/notice/close-icon.mjs +3 -3
- package/build-module/notice/close-icon.mjs.map +2 -2
- package/build-module/notice/description.mjs +3 -3
- package/build-module/notice/description.mjs.map +2 -2
- package/build-module/notice/root.mjs +3 -3
- package/build-module/notice/root.mjs.map +2 -2
- package/build-module/notice/title.mjs +3 -3
- package/build-module/notice/title.mjs.map +2 -2
- package/build-module/popover/arrow.mjs +4 -4
- package/build-module/popover/arrow.mjs.map +2 -2
- package/build-module/popover/context.mjs +4 -51
- package/build-module/popover/context.mjs.map +2 -2
- package/build-module/popover/description.mjs +1 -14
- package/build-module/popover/description.mjs.map +3 -3
- package/build-module/popover/index.mjs +2 -0
- package/build-module/popover/index.mjs.map +2 -2
- package/build-module/popover/popup.mjs +16 -16
- package/build-module/popover/popup.mjs.map +2 -2
- package/build-module/popover/portal.mjs +13 -0
- package/build-module/popover/portal.mjs.map +7 -0
- package/build-module/popover/root.mjs.map +1 -1
- package/build-module/popover/title.mjs +19 -5
- package/build-module/popover/title.mjs.map +3 -3
- package/build-module/tabs/context.mjs +11 -24
- package/build-module/tabs/context.mjs.map +2 -2
- package/build-module/tabs/list.mjs +4 -4
- package/build-module/tabs/list.mjs.map +2 -2
- package/build-module/tabs/panel.mjs +19 -6
- package/build-module/tabs/panel.mjs.map +3 -3
- package/build-module/tabs/tab.mjs +4 -4
- package/build-module/tabs/tab.mjs.map +2 -2
- package/build-module/text/text.mjs +2 -2
- package/build-module/text/text.mjs.map +2 -2
- package/build-module/tooltip/index.mjs +2 -0
- package/build-module/tooltip/index.mjs.map +2 -2
- package/build-module/tooltip/popup.mjs +14 -17
- package/build-module/tooltip/popup.mjs.map +2 -2
- package/build-module/tooltip/portal.mjs +13 -0
- package/build-module/tooltip/portal.mjs.map +7 -0
- package/build-module/tooltip/provider.mjs +3 -3
- package/build-module/tooltip/provider.mjs.map +2 -2
- package/build-module/tooltip/root.mjs +2 -2
- package/build-module/tooltip/root.mjs.map +2 -2
- package/build-module/tooltip/trigger.mjs +3 -3
- package/build-module/tooltip/trigger.mjs.map +2 -2
- package/build-module/utils/create-overlay-modal-context.mjs +23 -0
- package/build-module/utils/create-overlay-modal-context.mjs.map +7 -0
- package/build-module/utils/create-overlay-title-validation.mjs +75 -0
- package/build-module/utils/create-overlay-title-validation.mjs.map +7 -0
- package/build-module/utils/render-portal-with-children.mjs +12 -0
- package/build-module/utils/render-portal-with-children.mjs.map +7 -0
- package/build-module/utils/use-deprioritized-initial-focus.mjs +9 -9
- package/build-module/utils/use-deprioritized-initial-focus.mjs.map +2 -2
- package/build-module/utils/use-overlay-scroll-state-attributes.mjs +114 -0
- package/build-module/utils/use-overlay-scroll-state-attributes.mjs.map +7 -0
- package/build-module/utils/use-schedule-validation.mjs +34 -0
- package/build-module/utils/use-schedule-validation.mjs.map +7 -0
- package/build-module/visually-hidden/visually-hidden.mjs +5 -1
- package/build-module/visually-hidden/visually-hidden.mjs.map +2 -2
- package/build-types/alert-dialog/index.d.ts +1 -0
- package/build-types/alert-dialog/index.d.ts.map +1 -1
- package/build-types/alert-dialog/popup.d.ts.map +1 -1
- package/build-types/alert-dialog/portal.d.ts +9 -0
- package/build-types/alert-dialog/portal.d.ts.map +1 -0
- package/build-types/alert-dialog/stories/index.story.d.ts +29 -1
- package/build-types/alert-dialog/stories/index.story.d.ts.map +1 -1
- package/build-types/alert-dialog/types.d.ts +25 -3
- package/build-types/alert-dialog/types.d.ts.map +1 -1
- package/build-types/badge/stories/index.story.d.ts.map +1 -1
- package/build-types/card/stories/index.story.d.ts.map +1 -1
- package/build-types/collapsible/stories/index.story.d.ts.map +1 -1
- package/build-types/collapsible-card/content.d.ts.map +1 -1
- package/build-types/collapsible-card/header.d.ts.map +1 -1
- package/build-types/collapsible-card/stories/index.story.d.ts.map +1 -1
- package/build-types/dialog/content.d.ts +17 -0
- package/build-types/dialog/content.d.ts.map +1 -0
- package/build-types/dialog/context.d.ts +11 -16
- package/build-types/dialog/context.d.ts.map +1 -1
- package/build-types/dialog/description.d.ts +9 -0
- package/build-types/dialog/description.d.ts.map +1 -0
- package/build-types/dialog/footer.d.ts +8 -1
- package/build-types/dialog/footer.d.ts.map +1 -1
- package/build-types/dialog/header.d.ts +8 -1
- package/build-types/dialog/header.d.ts.map +1 -1
- package/build-types/dialog/index.d.ts +4 -1
- package/build-types/dialog/index.d.ts.map +1 -1
- package/build-types/dialog/popup.d.ts +3 -0
- package/build-types/dialog/popup.d.ts.map +1 -1
- package/build-types/dialog/portal.d.ts +10 -0
- package/build-types/dialog/portal.d.ts.map +1 -0
- package/build-types/dialog/root.d.ts +14 -4
- package/build-types/dialog/root.d.ts.map +1 -1
- package/build-types/dialog/stories/index.story.d.ts +29 -6
- package/build-types/dialog/stories/index.story.d.ts.map +1 -1
- package/build-types/dialog/title.d.ts.map +1 -1
- package/build-types/dialog/types.d.ts +60 -7
- package/build-types/dialog/types.d.ts.map +1 -1
- package/build-types/drawer/action.d.ts +8 -0
- package/build-types/drawer/action.d.ts.map +1 -0
- package/build-types/drawer/close-icon.d.ts +8 -0
- package/build-types/drawer/close-icon.d.ts.map +1 -0
- package/build-types/drawer/content.d.ts +21 -0
- package/build-types/drawer/content.d.ts.map +1 -0
- package/build-types/drawer/context.d.ts +20 -0
- package/build-types/drawer/context.d.ts.map +1 -0
- package/build-types/drawer/description.d.ts +9 -0
- package/build-types/drawer/description.d.ts.map +1 -0
- package/build-types/drawer/footer.d.ts +15 -0
- package/build-types/drawer/footer.d.ts.map +1 -0
- package/build-types/drawer/header.d.ts +15 -0
- package/build-types/drawer/header.d.ts.map +1 -0
- package/build-types/drawer/index.d.ts +13 -0
- package/build-types/drawer/index.d.ts.map +1 -0
- package/build-types/drawer/popup.d.ts +16 -0
- package/build-types/drawer/popup.d.ts.map +1 -0
- package/build-types/drawer/portal.d.ts +10 -0
- package/build-types/drawer/portal.d.ts.map +1 -0
- package/build-types/drawer/root.d.ts +21 -0
- package/build-types/drawer/root.d.ts.map +1 -0
- package/build-types/drawer/stories/index.story.d.ts +63 -0
- package/build-types/drawer/stories/index.story.d.ts.map +1 -0
- package/build-types/drawer/test/index.test.d.ts +2 -0
- package/build-types/drawer/test/index.test.d.ts.map +1 -0
- package/build-types/drawer/title.d.ts +22 -0
- package/build-types/drawer/title.d.ts.map +1 -0
- package/build-types/drawer/trigger.d.ts +7 -0
- package/build-types/drawer/trigger.d.ts.map +1 -0
- package/build-types/drawer/types.d.ts +146 -0
- package/build-types/drawer/types.d.ts.map +1 -0
- package/build-types/empty-state/stories/index.story.d.ts +1 -1
- package/build-types/empty-state/stories/index.story.d.ts.map +1 -1
- package/build-types/form/input-control/stories/index.story.d.ts +1 -1
- package/build-types/form/input-control/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/autocomplete/clear.d.ts +13 -0
- package/build-types/form/primitives/autocomplete/clear.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/collection.d.ts +3 -0
- package/build-types/form/primitives/autocomplete/collection.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/empty.d.ts +10 -0
- package/build-types/form/primitives/autocomplete/empty.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/index.d.ts +13 -0
- package/build-types/form/primitives/autocomplete/index.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/input-group.d.ts +16 -0
- package/build-types/form/primitives/autocomplete/input-group.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/input.d.ts +3 -0
- package/build-types/form/primitives/autocomplete/input.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/item.d.ts +10 -0
- package/build-types/form/primitives/autocomplete/item.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/list-body.d.ts +13 -0
- package/build-types/form/primitives/autocomplete/list-body.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/list.d.ts +11 -0
- package/build-types/form/primitives/autocomplete/list.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/popup.d.ts +11 -0
- package/build-types/form/primitives/autocomplete/popup.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/portal.d.ts +8 -0
- package/build-types/form/primitives/autocomplete/portal.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/root.d.ts +8 -0
- package/build-types/form/primitives/autocomplete/root.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/stories/fixtures.d.ts +8 -0
- package/build-types/form/primitives/autocomplete/stories/fixtures.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/stories/index.story.d.ts +41 -0
- package/build-types/form/primitives/autocomplete/stories/index.story.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/test/index.test.d.ts +2 -0
- package/build-types/form/primitives/autocomplete/test/index.test.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/types.d.ts +44 -0
- package/build-types/form/primitives/autocomplete/types.d.ts.map +1 -0
- package/build-types/form/primitives/autocomplete/value.d.ts +3 -0
- package/build-types/form/primitives/autocomplete/value.d.ts.map +1 -0
- package/build-types/form/primitives/field/stories/index.story.d.ts +1 -1
- package/build-types/form/primitives/field/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/fieldset/stories/index.story.d.ts +1 -1
- package/build-types/form/primitives/fieldset/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/index.d.ts +1 -0
- package/build-types/form/primitives/index.d.ts.map +1 -1
- package/build-types/form/primitives/input/stories/index.story.d.ts +1 -1
- package/build-types/form/primitives/input/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/input-layout/stories/index.story.d.ts +1 -1
- package/build-types/form/primitives/input-layout/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/select/index.d.ts +1 -0
- package/build-types/form/primitives/select/index.d.ts.map +1 -1
- package/build-types/form/primitives/select/item.d.ts.map +1 -1
- package/build-types/form/primitives/select/popup.d.ts +1 -2
- package/build-types/form/primitives/select/popup.d.ts.map +1 -1
- package/build-types/form/primitives/select/portal.d.ts +8 -0
- package/build-types/form/primitives/select/portal.d.ts.map +1 -0
- package/build-types/form/primitives/select/stories/index.story.d.ts +14 -6
- package/build-types/form/primitives/select/stories/index.story.d.ts.map +1 -1
- package/build-types/form/primitives/select/types.d.ts +7 -2
- package/build-types/form/primitives/select/types.d.ts.map +1 -1
- package/build-types/index.d.ts +1 -0
- package/build-types/index.d.ts.map +1 -1
- package/build-types/link/link.d.ts.map +1 -1
- package/build-types/link/stories/index.story.d.ts +2 -3
- package/build-types/link/stories/index.story.d.ts.map +1 -1
- package/build-types/link/types.d.ts +1 -2
- package/build-types/link/types.d.ts.map +1 -1
- package/build-types/notice/action-link.d.ts.map +1 -1
- package/build-types/popover/context.d.ts +6 -13
- package/build-types/popover/context.d.ts.map +1 -1
- package/build-types/popover/description.d.ts +0 -1
- package/build-types/popover/description.d.ts.map +1 -1
- package/build-types/popover/index.d.ts +2 -1
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/popover/popup.d.ts +3 -2
- package/build-types/popover/popup.d.ts.map +1 -1
- package/build-types/popover/portal.d.ts +9 -0
- package/build-types/popover/portal.d.ts.map +1 -0
- package/build-types/popover/root.d.ts +2 -2
- package/build-types/popover/stories/index.story.d.ts +23 -15
- package/build-types/popover/stories/index.story.d.ts.map +1 -1
- package/build-types/popover/title.d.ts.map +1 -1
- package/build-types/popover/types.d.ts +8 -15
- package/build-types/popover/types.d.ts.map +1 -1
- package/build-types/stack/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/context.d.ts.map +1 -1
- package/build-types/tabs/panel.d.ts.map +1 -1
- package/build-types/tabs/stories/index.story.d.ts +1 -1
- package/build-types/tabs/stories/index.story.d.ts.map +1 -1
- package/build-types/text/stories/index.story.d.ts.map +1 -1
- package/build-types/tooltip/index.d.ts +2 -1
- package/build-types/tooltip/index.d.ts.map +1 -1
- package/build-types/tooltip/popup.d.ts.map +1 -1
- package/build-types/tooltip/portal.d.ts +8 -0
- package/build-types/tooltip/portal.d.ts.map +1 -0
- package/build-types/tooltip/provider.d.ts +1 -1
- package/build-types/tooltip/provider.d.ts.map +1 -1
- package/build-types/tooltip/stories/index.story.d.ts +18 -1
- package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
- package/build-types/tooltip/stories/usage-guidelines.story.d.ts.map +1 -1
- package/build-types/tooltip/trigger.d.ts.map +1 -1
- package/build-types/tooltip/types.d.ts +11 -7
- package/build-types/tooltip/types.d.ts.map +1 -1
- package/build-types/utils/create-overlay-modal-context.d.ts +14 -0
- package/build-types/utils/create-overlay-modal-context.d.ts.map +1 -0
- package/build-types/utils/create-overlay-title-validation.d.ts +15 -0
- package/build-types/utils/create-overlay-title-validation.d.ts.map +1 -0
- package/build-types/utils/render-portal-with-children.d.ts +16 -0
- package/build-types/utils/render-portal-with-children.d.ts.map +1 -0
- package/build-types/utils/use-deprioritized-initial-focus.d.ts +9 -8
- package/build-types/utils/use-deprioritized-initial-focus.d.ts.map +1 -1
- package/build-types/utils/use-overlay-scroll-state-attributes.d.ts +85 -0
- package/build-types/utils/use-overlay-scroll-state-attributes.d.ts.map +1 -0
- package/build-types/utils/use-schedule-validation.d.ts +13 -0
- package/build-types/utils/use-schedule-validation.d.ts.map +1 -0
- package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -1
- package/build-types/visually-hidden/visually-hidden.d.ts +4 -20
- package/build-types/visually-hidden/visually-hidden.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/alert-dialog/index.ts +1 -0
- package/src/alert-dialog/popup.tsx +114 -45
- package/src/alert-dialog/portal.tsx +17 -0
- package/src/alert-dialog/stories/index.story.tsx +123 -3
- package/src/alert-dialog/style.module.css +13 -4
- package/src/alert-dialog/test/index.test.tsx +329 -3
- package/src/alert-dialog/types.ts +30 -3
- package/src/badge/stories/choosing-intent.story.tsx +1 -1
- package/src/badge/stories/index.story.tsx +1 -0
- package/src/card/stories/index.story.tsx +1 -0
- package/src/collapsible/stories/index.story.tsx +1 -0
- package/src/collapsible-card/content.tsx +12 -1
- package/src/collapsible-card/header.tsx +2 -0
- package/src/collapsible-card/stories/index.story.tsx +1 -0
- package/src/collapsible-card/style.module.css +16 -4
- package/src/dialog/content.tsx +47 -0
- package/src/dialog/context.tsx +14 -98
- package/src/dialog/description.tsx +27 -0
- package/src/dialog/footer.tsx +10 -2
- package/src/dialog/header.tsx +10 -2
- package/src/dialog/index.ts +16 -1
- package/src/dialog/popup.tsx +28 -8
- package/src/dialog/portal.tsx +18 -0
- package/src/dialog/root.tsx +22 -5
- package/src/dialog/stories/index.story.tsx +195 -51
- package/src/dialog/style.module.css +73 -23
- package/src/dialog/test/index.test.tsx +849 -149
- package/src/dialog/title.tsx +6 -4
- package/src/dialog/types.ts +64 -6
- package/src/drawer/action.tsx +28 -0
- package/src/drawer/close-icon.tsx +33 -0
- package/src/drawer/content.tsx +50 -0
- package/src/drawer/context.tsx +29 -0
- package/src/drawer/description.tsx +25 -0
- package/src/drawer/footer.tsx +34 -0
- package/src/drawer/header.tsx +34 -0
- package/src/drawer/index.ts +25 -0
- package/src/drawer/popup.tsx +100 -0
- package/src/drawer/portal.tsx +18 -0
- package/src/drawer/root.tsx +41 -0
- package/src/drawer/stories/index.story.tsx +543 -0
- package/src/drawer/style.module.css +324 -0
- package/src/drawer/test/index.test.tsx +1097 -0
- package/src/drawer/title.tsx +53 -0
- package/src/drawer/trigger.tsx +14 -0
- package/src/drawer/types.ts +174 -0
- package/src/empty-state/stories/index.story.tsx +2 -1
- package/src/form/input-control/stories/index.story.tsx +4 -1
- package/src/form/primitives/autocomplete/clear.tsx +35 -0
- package/src/form/primitives/autocomplete/collection.tsx +13 -0
- package/src/form/primitives/autocomplete/empty.tsx +17 -0
- package/src/form/primitives/autocomplete/index.ts +12 -0
- package/src/form/primitives/autocomplete/input-group.tsx +16 -0
- package/src/form/primitives/autocomplete/input.tsx +20 -0
- package/src/form/primitives/autocomplete/item.tsx +24 -0
- package/src/form/primitives/autocomplete/list-body.tsx +23 -0
- package/src/form/primitives/autocomplete/list.tsx +17 -0
- package/src/form/primitives/autocomplete/popup.tsx +42 -0
- package/src/form/primitives/autocomplete/portal.tsx +16 -0
- package/src/form/primitives/autocomplete/root.tsx +11 -0
- package/src/form/primitives/autocomplete/stories/fixtures.ts +35 -0
- package/src/form/primitives/autocomplete/stories/index.story.tsx +437 -0
- package/src/form/primitives/autocomplete/style.module.css +7 -0
- package/src/form/primitives/autocomplete/test/index.test.tsx +162 -0
- package/src/form/primitives/autocomplete/types.ts +74 -0
- package/src/form/primitives/autocomplete/value.tsx +6 -0
- package/src/form/primitives/field/stories/index.story.tsx +1 -1
- package/src/form/primitives/fieldset/stories/index.story.tsx +1 -1
- package/src/form/primitives/index.ts +1 -0
- package/src/form/primitives/input/stories/index.story.tsx +2 -1
- package/src/form/primitives/input-layout/stories/index.story.tsx +2 -1
- package/src/form/primitives/select/index.ts +1 -0
- package/src/form/primitives/select/item.tsx +0 -1
- package/src/form/primitives/select/popup.tsx +34 -37
- package/src/form/primitives/select/portal.tsx +16 -0
- package/src/form/primitives/select/stories/index.story.tsx +21 -7
- package/src/form/primitives/select/test/index.test.tsx +7 -3
- package/src/form/primitives/select/types.ts +9 -2
- package/src/index.ts +1 -0
- package/src/link/link.tsx +12 -26
- package/src/link/stories/index.story.tsx +6 -11
- package/src/link/style.module.css +5 -17
- package/src/link/test/index.test.tsx +31 -27
- package/src/link/types.ts +1 -2
- package/src/notice/action-link.tsx +7 -4
- package/src/notice/style.module.css +5 -5
- package/src/popover/context.tsx +6 -89
- package/src/popover/description.tsx +1 -5
- package/src/popover/index.ts +2 -1
- package/src/popover/popup.tsx +17 -15
- package/src/popover/portal.tsx +17 -0
- package/src/popover/root.tsx +2 -2
- package/src/popover/stories/index.story.tsx +56 -25
- package/src/popover/style.module.css +33 -4
- package/src/popover/test/index.test.tsx +189 -74
- package/src/popover/title.tsx +9 -5
- package/src/popover/types.ts +10 -15
- package/src/stack/stories/index.story.tsx +1 -0
- package/src/tabs/context.tsx +14 -34
- package/src/tabs/panel.tsx +7 -2
- package/src/tabs/stories/index.story.tsx +2 -1
- package/src/tabs/style.module.css +0 -17
- package/src/tabs/test/index.test.tsx +7 -3
- package/src/text/stories/index.story.tsx +1 -0
- package/src/text/text.tsx +2 -2
- package/src/tooltip/index.ts +2 -1
- package/src/tooltip/popup.tsx +24 -28
- package/src/tooltip/portal.tsx +16 -0
- package/src/tooltip/provider.tsx +3 -3
- package/src/tooltip/root.tsx +2 -2
- package/src/tooltip/stories/index.story.tsx +39 -1
- package/src/tooltip/stories/usage-guidelines.story.tsx +5 -1
- package/src/tooltip/style.module.css +12 -0
- package/src/tooltip/test/index.test.tsx +9 -3
- package/src/tooltip/trigger.tsx +3 -7
- package/src/tooltip/types.ts +13 -7
- package/src/utils/create-overlay-modal-context.tsx +34 -0
- package/src/utils/create-overlay-title-validation.tsx +116 -0
- package/src/utils/css/item-popup.module.css +9 -11
- package/src/utils/css/overlay-chrome.module.css +222 -0
- package/src/utils/render-portal-with-children.ts +27 -0
- package/src/utils/test/use-deprioritized-initial-focus.test.tsx +3 -3
- package/src/utils/use-deprioritized-initial-focus.ts +23 -17
- package/src/utils/use-overlay-scroll-state-attributes.ts +272 -0
- package/src/utils/use-schedule-validation.ts +45 -0
- package/src/visually-hidden/stories/index.story.tsx +1 -0
- package/src/visually-hidden/visually-hidden.tsx +9 -21
- package/build/types/css-modules.d.cjs +0 -2
- package/build/types/react.d.cjs +0 -5
- package/build/types/react.d.cjs.map +0 -7
- package/build-module/types/css-modules.d.mjs +0 -1
- package/build-module/types/react.d.mjs +0 -3
- package/build-module/types/react.d.mjs.map +0 -7
- package/src/types/css-modules.d.ts +0 -4
- package/src/types/react.d.ts +0 -7
- /package/build-module/{types/css-modules.d.mjs.map → drawer/types.mjs.map} +0 -0
- /package/{build/types/css-modules.d.cjs.map → build-module/form/primitives/autocomplete/types.mjs.map} +0 -0
|
@@ -3,8 +3,9 @@ import { useId, useState } from '@wordpress/element';
|
|
|
3
3
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
4
4
|
import { action } from 'storybook/actions';
|
|
5
5
|
import { fn } from 'storybook/test';
|
|
6
|
-
|
|
7
|
-
import {
|
|
6
|
+
import * as AlertDialog from '../';
|
|
7
|
+
import { Stack } from '../../stack';
|
|
8
|
+
import { Text } from '../../text';
|
|
8
9
|
|
|
9
10
|
const meta: Meta< typeof AlertDialog.Root > = {
|
|
10
11
|
title: 'Design System/Components/AlertDialog',
|
|
@@ -97,7 +98,7 @@ export const WithCustomContent: Story = {
|
|
|
97
98
|
>
|
|
98
99
|
<ul
|
|
99
100
|
style={ {
|
|
100
|
-
margin: 0,
|
|
101
|
+
margin: 'var(--wpds-dimension-gap-sm) 0 0',
|
|
101
102
|
paddingInlineStart: 'var(--wpds-dimension-gap-lg)',
|
|
102
103
|
} }
|
|
103
104
|
>
|
|
@@ -111,6 +112,43 @@ export const WithCustomContent: Story = {
|
|
|
111
112
|
},
|
|
112
113
|
};
|
|
113
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Popovers in Gutenberg are managed with explicit z-index values, which can
|
|
117
|
+
* create situations where an alert dialog renders below another popover when
|
|
118
|
+
* you want it above.
|
|
119
|
+
*
|
|
120
|
+
* `AlertDialog` reuses `Dialog`'s styles, so the same
|
|
121
|
+
* `--wp-ui-dialog-z-index` CSS variable controls the z-index of the alert
|
|
122
|
+
* dialog's backdrop and popup. Override it either:
|
|
123
|
+
*
|
|
124
|
+
* - **Globally**, by setting the variable on `:root` or `body` (raises every
|
|
125
|
+
* dialog and alert dialog in the page), or
|
|
126
|
+
* - **Per instance**, by passing an `AlertDialog.Portal` with a `style` (or
|
|
127
|
+
* `className`) to `AlertDialog.Popup`'s `portal` prop. The variable
|
|
128
|
+
* cascades from the portal wrapper to everything rendered inside it.
|
|
129
|
+
*
|
|
130
|
+
* This story demonstrates the per-instance approach.
|
|
131
|
+
*/
|
|
132
|
+
export const WithCustomZIndex: Story = {
|
|
133
|
+
name: 'With Custom z-index',
|
|
134
|
+
args: {
|
|
135
|
+
children: (
|
|
136
|
+
<>
|
|
137
|
+
<AlertDialog.Trigger>Move to trash</AlertDialog.Trigger>
|
|
138
|
+
<AlertDialog.Popup
|
|
139
|
+
title="Move to trash?"
|
|
140
|
+
description="This post will be moved to trash. You can restore it later."
|
|
141
|
+
portal={
|
|
142
|
+
<AlertDialog.Portal
|
|
143
|
+
style={ { '--wp-ui-dialog-z-index': '9999' } }
|
|
144
|
+
/>
|
|
145
|
+
}
|
|
146
|
+
/>
|
|
147
|
+
</>
|
|
148
|
+
),
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
|
|
114
152
|
const menuPopupStyles: React.CSSProperties = {
|
|
115
153
|
background: 'var(--wpds-color-bg-surface-neutral-strong)',
|
|
116
154
|
border: '1px solid var(--wpds-color-stroke-surface-neutral)',
|
|
@@ -274,6 +312,88 @@ export const AsyncConfirm: Story = {
|
|
|
274
312
|
},
|
|
275
313
|
};
|
|
276
314
|
|
|
315
|
+
function StickyToggle( {
|
|
316
|
+
label,
|
|
317
|
+
value,
|
|
318
|
+
onChange,
|
|
319
|
+
}: {
|
|
320
|
+
label: string;
|
|
321
|
+
value: boolean;
|
|
322
|
+
onChange: ( value: boolean ) => void;
|
|
323
|
+
} ) {
|
|
324
|
+
const id = useId();
|
|
325
|
+
return (
|
|
326
|
+
<Stack direction="row" gap="sm" align="center">
|
|
327
|
+
<input
|
|
328
|
+
id={ id }
|
|
329
|
+
type="checkbox"
|
|
330
|
+
checked={ value }
|
|
331
|
+
onChange={ ( event ) => onChange( event.target.checked ) }
|
|
332
|
+
/>
|
|
333
|
+
<label htmlFor={ id }>{ label }</label>
|
|
334
|
+
</Stack>
|
|
335
|
+
);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
function ScrollableContent() {
|
|
339
|
+
const [ stickyHeader, setStickyHeader ] = useState( true );
|
|
340
|
+
const [ stickyFooter, setStickyFooter ] = useState( true );
|
|
341
|
+
return (
|
|
342
|
+
<>
|
|
343
|
+
<Stack direction="column" gap="lg" align="start">
|
|
344
|
+
<Stack direction="row" gap="lg" align="center">
|
|
345
|
+
<StickyToggle
|
|
346
|
+
label="Sticky header"
|
|
347
|
+
value={ stickyHeader }
|
|
348
|
+
onChange={ setStickyHeader }
|
|
349
|
+
/>
|
|
350
|
+
<StickyToggle
|
|
351
|
+
label="Sticky footer"
|
|
352
|
+
value={ stickyFooter }
|
|
353
|
+
onChange={ setStickyFooter }
|
|
354
|
+
/>
|
|
355
|
+
</Stack>
|
|
356
|
+
<AlertDialog.Trigger>Review terms</AlertDialog.Trigger>
|
|
357
|
+
</Stack>
|
|
358
|
+
<AlertDialog.Popup
|
|
359
|
+
title="Terms of service"
|
|
360
|
+
description="Please review the terms before continuing."
|
|
361
|
+
confirmButtonText="Accept"
|
|
362
|
+
cancelButtonText="Decline"
|
|
363
|
+
stickyHeader={ stickyHeader }
|
|
364
|
+
stickyFooter={ stickyFooter }
|
|
365
|
+
>
|
|
366
|
+
<Stack direction="column" gap="lg">
|
|
367
|
+
{ Array.from( { length: 20 } ).map( ( _, index ) => (
|
|
368
|
+
<p key={ index } style={ { margin: 0 } }>
|
|
369
|
+
Paragraph { index + 1 }: Lorem ipsum dolor sit amet,
|
|
370
|
+
consectetur adipiscing elit. Sed do eiusmod tempor
|
|
371
|
+
incididunt ut labore et dolore magna aliqua. Ut enim
|
|
372
|
+
ad minim veniam, quis nostrud exercitation ullamco
|
|
373
|
+
laboris nisi ut aliquip ex ea commodo consequat.
|
|
374
|
+
</p>
|
|
375
|
+
) ) }
|
|
376
|
+
</Stack>
|
|
377
|
+
</AlertDialog.Popup>
|
|
378
|
+
</>
|
|
379
|
+
);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* When the dialog's body overflows the available height, the title/description
|
|
384
|
+
* area stays pinned to the top of the popup and the action buttons stay pinned
|
|
385
|
+
* to the bottom so users keep sight of the context and primary actions while
|
|
386
|
+
* scrolling. Separator borders appear only when there is off-screen content
|
|
387
|
+
* above or below. Pass `stickyHeader={ false }` or `stickyFooter={ false }` on
|
|
388
|
+
* `AlertDialog.Popup` to opt out — the toggles in this story drive both props
|
|
389
|
+
* independently.
|
|
390
|
+
*/
|
|
391
|
+
export const Scrollable: Story = {
|
|
392
|
+
args: {
|
|
393
|
+
children: <ScrollableContent />,
|
|
394
|
+
},
|
|
395
|
+
};
|
|
396
|
+
|
|
277
397
|
/**
|
|
278
398
|
* The `AlertDialog.Trigger` element is not necessary when the open state is
|
|
279
399
|
* controlled externally. This is useful when the dialog needs to be opened
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;
|
|
2
2
|
|
|
3
3
|
@layer wp-ui-components {
|
|
4
|
-
.header {
|
|
5
|
-
margin-bottom: var(--wpds-dimension-gap-lg);
|
|
6
|
-
}
|
|
7
|
-
|
|
8
4
|
.error-message {
|
|
9
5
|
align-self: flex-end;
|
|
10
6
|
color: var(--wpds-color-fg-content-error);
|
|
11
7
|
}
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
* AlertDialog stacks an actions row and an optional error message in
|
|
11
|
+
* its footer. Override the shared `.footer` row layout to a column so
|
|
12
|
+
* both children lay out vertically while inheriting the chrome
|
|
13
|
+
* padding + separator from `overlay-chrome.module.css`.
|
|
14
|
+
*/
|
|
15
|
+
.footer-column {
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
align-items: stretch;
|
|
18
|
+
justify-content: flex-start;
|
|
19
|
+
gap: var(--wpds-dimension-gap-md);
|
|
20
|
+
}
|
|
12
21
|
}
|
|
13
22
|
|
|
14
23
|
@layer wp-ui-compositions {
|
|
@@ -1453,8 +1453,8 @@ describe( 'AlertDialog', () => {
|
|
|
1453
1453
|
} );
|
|
1454
1454
|
} );
|
|
1455
1455
|
|
|
1456
|
-
describe( '
|
|
1457
|
-
it( 'should render inside the container when provided', async () => {
|
|
1456
|
+
describe( 'portal', () => {
|
|
1457
|
+
it( 'should render inside the portal container when a custom target is provided', async () => {
|
|
1458
1458
|
const user = userEvent.setup();
|
|
1459
1459
|
const containerRef = createRef< HTMLDivElement >();
|
|
1460
1460
|
|
|
@@ -1468,7 +1468,11 @@ describe( 'AlertDialog', () => {
|
|
|
1468
1468
|
/>
|
|
1469
1469
|
<AlertDialog.Popup
|
|
1470
1470
|
title="Confirm"
|
|
1471
|
-
|
|
1471
|
+
portal={
|
|
1472
|
+
<AlertDialog.Portal
|
|
1473
|
+
container={ containerRef }
|
|
1474
|
+
/>
|
|
1475
|
+
}
|
|
1472
1476
|
/>
|
|
1473
1477
|
</AlertDialog.Root>
|
|
1474
1478
|
</div>
|
|
@@ -1506,4 +1510,326 @@ describe( 'AlertDialog', () => {
|
|
|
1506
1510
|
);
|
|
1507
1511
|
} );
|
|
1508
1512
|
} );
|
|
1513
|
+
|
|
1514
|
+
describe( 'overlay scroll container', () => {
|
|
1515
|
+
// AlertDialog's scroll container is a library-internal `<div>` with
|
|
1516
|
+
// no role or testid — a `querySelector` is the only way to reach
|
|
1517
|
+
// it from a test. The Testing Library rule is disabled for this
|
|
1518
|
+
// helper because that's exactly what it's flagging.
|
|
1519
|
+
const findScroller = ( popup: HTMLElement | null ): HTMLDivElement => {
|
|
1520
|
+
if ( ! popup ) {
|
|
1521
|
+
throw new Error(
|
|
1522
|
+
'Popup ref not attached — did AlertDialog.Popup render?'
|
|
1523
|
+
);
|
|
1524
|
+
}
|
|
1525
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
1526
|
+
const el = popup.querySelector(
|
|
1527
|
+
'[data-wp-ui-overlay-scroll-container]'
|
|
1528
|
+
);
|
|
1529
|
+
if ( ! ( el instanceof HTMLDivElement ) ) {
|
|
1530
|
+
throw new Error(
|
|
1531
|
+
'Scroll container not found inside AlertDialog popup'
|
|
1532
|
+
);
|
|
1533
|
+
}
|
|
1534
|
+
return el;
|
|
1535
|
+
};
|
|
1536
|
+
|
|
1537
|
+
it( 'renders an internal scroll container with data-wp-ui-overlay-scroll-container', async () => {
|
|
1538
|
+
const popupRef = createRef< HTMLDivElement >();
|
|
1539
|
+
|
|
1540
|
+
render(
|
|
1541
|
+
<AlertDialog.Root defaultOpen>
|
|
1542
|
+
<AlertDialog.Trigger>Open</AlertDialog.Trigger>
|
|
1543
|
+
<AlertDialog.Popup ref={ popupRef } title="Title">
|
|
1544
|
+
Body
|
|
1545
|
+
</AlertDialog.Popup>
|
|
1546
|
+
</AlertDialog.Root>
|
|
1547
|
+
);
|
|
1548
|
+
|
|
1549
|
+
await waitFor( () => {
|
|
1550
|
+
expect( popupRef.current ).toBeInstanceOf( HTMLDivElement );
|
|
1551
|
+
} );
|
|
1552
|
+
|
|
1553
|
+
expect( findScroller( popupRef.current ) ).toBeInstanceOf(
|
|
1554
|
+
HTMLDivElement
|
|
1555
|
+
);
|
|
1556
|
+
} );
|
|
1557
|
+
|
|
1558
|
+
it( 'is always modal (data-wp-ui-overlay-modal present on popup)', async () => {
|
|
1559
|
+
const popupRef = createRef< HTMLDivElement >();
|
|
1560
|
+
|
|
1561
|
+
render(
|
|
1562
|
+
<AlertDialog.Root defaultOpen>
|
|
1563
|
+
<AlertDialog.Trigger>Open</AlertDialog.Trigger>
|
|
1564
|
+
<AlertDialog.Popup ref={ popupRef } title="Title">
|
|
1565
|
+
Body
|
|
1566
|
+
</AlertDialog.Popup>
|
|
1567
|
+
</AlertDialog.Root>
|
|
1568
|
+
);
|
|
1569
|
+
|
|
1570
|
+
await waitFor( () => {
|
|
1571
|
+
expect( popupRef.current ).toBeInstanceOf( HTMLDivElement );
|
|
1572
|
+
} );
|
|
1573
|
+
|
|
1574
|
+
expect( popupRef.current ).toHaveAttribute(
|
|
1575
|
+
'data-wp-ui-overlay-modal'
|
|
1576
|
+
);
|
|
1577
|
+
} );
|
|
1578
|
+
|
|
1579
|
+
it( 'pins header and footer outside the scroller when sticky props are true (default)', async () => {
|
|
1580
|
+
const popupRef = createRef< HTMLDivElement >();
|
|
1581
|
+
|
|
1582
|
+
render(
|
|
1583
|
+
<AlertDialog.Root defaultOpen>
|
|
1584
|
+
<AlertDialog.Trigger>Open</AlertDialog.Trigger>
|
|
1585
|
+
<AlertDialog.Popup ref={ popupRef } title="Title">
|
|
1586
|
+
Body
|
|
1587
|
+
</AlertDialog.Popup>
|
|
1588
|
+
</AlertDialog.Root>
|
|
1589
|
+
);
|
|
1590
|
+
|
|
1591
|
+
await waitFor( () => {
|
|
1592
|
+
expect( popupRef.current ).toBeInstanceOf( HTMLDivElement );
|
|
1593
|
+
} );
|
|
1594
|
+
|
|
1595
|
+
const scroller = findScroller( popupRef.current );
|
|
1596
|
+
const title = screen.getByRole( 'heading', { name: 'Title' } );
|
|
1597
|
+
const ok = screen.getByRole( 'button', { name: 'OK' } );
|
|
1598
|
+
|
|
1599
|
+
// Default: chrome sits outside the scroll container.
|
|
1600
|
+
expect( scroller ).not.toContainElement( title );
|
|
1601
|
+
expect( scroller ).not.toContainElement( ok );
|
|
1602
|
+
} );
|
|
1603
|
+
|
|
1604
|
+
it( 'nests header and footer inside the scroller when stickyHeader and stickyFooter are false', async () => {
|
|
1605
|
+
const popupRef = createRef< HTMLDivElement >();
|
|
1606
|
+
|
|
1607
|
+
render(
|
|
1608
|
+
<AlertDialog.Root defaultOpen>
|
|
1609
|
+
<AlertDialog.Trigger>Open</AlertDialog.Trigger>
|
|
1610
|
+
<AlertDialog.Popup
|
|
1611
|
+
ref={ popupRef }
|
|
1612
|
+
title="Title"
|
|
1613
|
+
stickyHeader={ false }
|
|
1614
|
+
stickyFooter={ false }
|
|
1615
|
+
>
|
|
1616
|
+
Body
|
|
1617
|
+
</AlertDialog.Popup>
|
|
1618
|
+
</AlertDialog.Root>
|
|
1619
|
+
);
|
|
1620
|
+
|
|
1621
|
+
await waitFor( () => {
|
|
1622
|
+
expect( popupRef.current ).toBeInstanceOf( HTMLDivElement );
|
|
1623
|
+
} );
|
|
1624
|
+
|
|
1625
|
+
const scroller = findScroller( popupRef.current );
|
|
1626
|
+
const title = screen.getByRole( 'heading', { name: 'Title' } );
|
|
1627
|
+
const ok = screen.getByRole( 'button', { name: 'OK' } );
|
|
1628
|
+
|
|
1629
|
+
expect( scroller ).toContainElement( title );
|
|
1630
|
+
expect( scroller ).toContainElement( ok );
|
|
1631
|
+
} );
|
|
1632
|
+
|
|
1633
|
+
it( 'toggles tabindex="0" on the scroller based on overflow', async () => {
|
|
1634
|
+
const popupRef = createRef< HTMLDivElement >();
|
|
1635
|
+
|
|
1636
|
+
render(
|
|
1637
|
+
<AlertDialog.Root defaultOpen>
|
|
1638
|
+
<AlertDialog.Trigger>Open</AlertDialog.Trigger>
|
|
1639
|
+
<AlertDialog.Popup ref={ popupRef } title="Title">
|
|
1640
|
+
Body
|
|
1641
|
+
</AlertDialog.Popup>
|
|
1642
|
+
</AlertDialog.Root>
|
|
1643
|
+
);
|
|
1644
|
+
|
|
1645
|
+
await waitFor( () => {
|
|
1646
|
+
expect( popupRef.current ).toBeInstanceOf( HTMLDivElement );
|
|
1647
|
+
} );
|
|
1648
|
+
|
|
1649
|
+
const scroller = findScroller( popupRef.current );
|
|
1650
|
+
|
|
1651
|
+
Object.defineProperty( scroller, 'scrollHeight', {
|
|
1652
|
+
configurable: true,
|
|
1653
|
+
value: 500,
|
|
1654
|
+
} );
|
|
1655
|
+
Object.defineProperty( scroller, 'clientHeight', {
|
|
1656
|
+
configurable: true,
|
|
1657
|
+
value: 100,
|
|
1658
|
+
} );
|
|
1659
|
+
Object.defineProperty( scroller, 'scrollTop', {
|
|
1660
|
+
configurable: true,
|
|
1661
|
+
value: 0,
|
|
1662
|
+
} );
|
|
1663
|
+
|
|
1664
|
+
act( () => {
|
|
1665
|
+
scroller.dispatchEvent(
|
|
1666
|
+
new Event( 'scroll', { bubbles: true } )
|
|
1667
|
+
);
|
|
1668
|
+
} );
|
|
1669
|
+
|
|
1670
|
+
expect( scroller ).toHaveAttribute( 'tabindex', '0' );
|
|
1671
|
+
|
|
1672
|
+
Object.defineProperty( scroller, 'scrollHeight', {
|
|
1673
|
+
configurable: true,
|
|
1674
|
+
value: 100,
|
|
1675
|
+
} );
|
|
1676
|
+
|
|
1677
|
+
act( () => {
|
|
1678
|
+
scroller.dispatchEvent(
|
|
1679
|
+
new Event( 'scroll', { bubbles: true } )
|
|
1680
|
+
);
|
|
1681
|
+
} );
|
|
1682
|
+
|
|
1683
|
+
expect( scroller ).not.toHaveAttribute( 'tabindex' );
|
|
1684
|
+
} );
|
|
1685
|
+
|
|
1686
|
+
it( 'toggles data-wp-ui-overlay-scrolled-from-* on the scroller based on scroll position', async () => {
|
|
1687
|
+
const popupRef = createRef< HTMLDivElement >();
|
|
1688
|
+
|
|
1689
|
+
render(
|
|
1690
|
+
<AlertDialog.Root defaultOpen>
|
|
1691
|
+
<AlertDialog.Trigger>Open</AlertDialog.Trigger>
|
|
1692
|
+
<AlertDialog.Popup ref={ popupRef } title="Title">
|
|
1693
|
+
Body
|
|
1694
|
+
</AlertDialog.Popup>
|
|
1695
|
+
</AlertDialog.Root>
|
|
1696
|
+
);
|
|
1697
|
+
|
|
1698
|
+
await waitFor( () => {
|
|
1699
|
+
expect( popupRef.current ).toBeInstanceOf( HTMLDivElement );
|
|
1700
|
+
} );
|
|
1701
|
+
|
|
1702
|
+
// JSDOM doesn't lay out elements, so we simulate an
|
|
1703
|
+
// overflowing scroll container by stubbing layout metrics
|
|
1704
|
+
// per scenario and dispatching a scroll event.
|
|
1705
|
+
const scroller = findScroller( popupRef.current );
|
|
1706
|
+
Object.defineProperty( scroller, 'scrollHeight', {
|
|
1707
|
+
configurable: true,
|
|
1708
|
+
value: 500,
|
|
1709
|
+
} );
|
|
1710
|
+
Object.defineProperty( scroller, 'clientHeight', {
|
|
1711
|
+
configurable: true,
|
|
1712
|
+
value: 100,
|
|
1713
|
+
} );
|
|
1714
|
+
|
|
1715
|
+
const setScrollTop = ( value: number ) => {
|
|
1716
|
+
Object.defineProperty( scroller, 'scrollTop', {
|
|
1717
|
+
configurable: true,
|
|
1718
|
+
value,
|
|
1719
|
+
} );
|
|
1720
|
+
act( () => {
|
|
1721
|
+
scroller.dispatchEvent(
|
|
1722
|
+
new Event( 'scroll', { bubbles: true } )
|
|
1723
|
+
);
|
|
1724
|
+
} );
|
|
1725
|
+
};
|
|
1726
|
+
|
|
1727
|
+
setScrollTop( 0 );
|
|
1728
|
+
expect( scroller ).not.toHaveAttribute(
|
|
1729
|
+
'data-wp-ui-overlay-scrolled-from-top'
|
|
1730
|
+
);
|
|
1731
|
+
expect( scroller ).toHaveAttribute(
|
|
1732
|
+
'data-wp-ui-overlay-scrolled-from-bottom'
|
|
1733
|
+
);
|
|
1734
|
+
|
|
1735
|
+
setScrollTop( 200 );
|
|
1736
|
+
expect( scroller ).toHaveAttribute(
|
|
1737
|
+
'data-wp-ui-overlay-scrolled-from-top'
|
|
1738
|
+
);
|
|
1739
|
+
expect( scroller ).toHaveAttribute(
|
|
1740
|
+
'data-wp-ui-overlay-scrolled-from-bottom'
|
|
1741
|
+
);
|
|
1742
|
+
|
|
1743
|
+
setScrollTop( 400 );
|
|
1744
|
+
expect( scroller ).toHaveAttribute(
|
|
1745
|
+
'data-wp-ui-overlay-scrolled-from-top'
|
|
1746
|
+
);
|
|
1747
|
+
expect( scroller ).not.toHaveAttribute(
|
|
1748
|
+
'data-wp-ui-overlay-scrolled-from-bottom'
|
|
1749
|
+
);
|
|
1750
|
+
} );
|
|
1751
|
+
|
|
1752
|
+
it( 'does not focus the scroll container on open even when it is keyboard-tabbable', async () => {
|
|
1753
|
+
// JSDOM reports `scrollHeight`/`clientHeight` as 0 by default,
|
|
1754
|
+
// so the scroll container would never overflow on its own and
|
|
1755
|
+
// would never become `tabindex="0"`. Forcing both prototype
|
|
1756
|
+
// getters to overflow values here makes the scroller
|
|
1757
|
+
// keyboard-reachable at the moment Base UI resolves
|
|
1758
|
+
// `initialFocus` — exactly the configuration that, without
|
|
1759
|
+
// `useDeprioritizedInitialFocus` wired up, lets the scroller
|
|
1760
|
+
// steal focus from the action buttons.
|
|
1761
|
+
const originalScrollHeight = Object.getOwnPropertyDescriptor(
|
|
1762
|
+
Element.prototype,
|
|
1763
|
+
'scrollHeight'
|
|
1764
|
+
);
|
|
1765
|
+
const originalClientHeight = Object.getOwnPropertyDescriptor(
|
|
1766
|
+
Element.prototype,
|
|
1767
|
+
'clientHeight'
|
|
1768
|
+
);
|
|
1769
|
+
Object.defineProperty( Element.prototype, 'scrollHeight', {
|
|
1770
|
+
configurable: true,
|
|
1771
|
+
get() {
|
|
1772
|
+
return 500;
|
|
1773
|
+
},
|
|
1774
|
+
} );
|
|
1775
|
+
Object.defineProperty( Element.prototype, 'clientHeight', {
|
|
1776
|
+
configurable: true,
|
|
1777
|
+
get() {
|
|
1778
|
+
return 100;
|
|
1779
|
+
},
|
|
1780
|
+
} );
|
|
1781
|
+
|
|
1782
|
+
try {
|
|
1783
|
+
const user = userEvent.setup();
|
|
1784
|
+
const popupRef = createRef< HTMLDivElement >();
|
|
1785
|
+
|
|
1786
|
+
render(
|
|
1787
|
+
<AlertDialog.Root>
|
|
1788
|
+
<AlertDialog.Trigger>Open</AlertDialog.Trigger>
|
|
1789
|
+
<AlertDialog.Popup ref={ popupRef } title="Title">
|
|
1790
|
+
Body that overflows
|
|
1791
|
+
</AlertDialog.Popup>
|
|
1792
|
+
</AlertDialog.Root>
|
|
1793
|
+
);
|
|
1794
|
+
|
|
1795
|
+
await user.click(
|
|
1796
|
+
screen.getByRole( 'button', { name: 'Open' } )
|
|
1797
|
+
);
|
|
1798
|
+
|
|
1799
|
+
await waitFor( () => {
|
|
1800
|
+
expect( popupRef.current ).toBeInstanceOf( HTMLDivElement );
|
|
1801
|
+
} );
|
|
1802
|
+
|
|
1803
|
+
// The scroll container (overflow forced via the
|
|
1804
|
+
// prototype stubs above) must not steal focus from the
|
|
1805
|
+
// action buttons — that's exactly what the
|
|
1806
|
+
// `useDeprioritizedInitialFocus` wiring on
|
|
1807
|
+
// `AlertDialog.Popup` is there to prevent. The Cancel
|
|
1808
|
+
// button is the first non-deprioritized tabbable, so
|
|
1809
|
+
// focus should settle on it.
|
|
1810
|
+
const scroller = findScroller( popupRef.current );
|
|
1811
|
+
await waitFor( () => {
|
|
1812
|
+
expect(
|
|
1813
|
+
screen.getByRole( 'button', { name: 'Cancel' } )
|
|
1814
|
+
).toHaveFocus();
|
|
1815
|
+
} );
|
|
1816
|
+
expect( scroller ).not.toHaveFocus();
|
|
1817
|
+
} finally {
|
|
1818
|
+
if ( originalScrollHeight ) {
|
|
1819
|
+
Object.defineProperty(
|
|
1820
|
+
Element.prototype,
|
|
1821
|
+
'scrollHeight',
|
|
1822
|
+
originalScrollHeight
|
|
1823
|
+
);
|
|
1824
|
+
}
|
|
1825
|
+
if ( originalClientHeight ) {
|
|
1826
|
+
Object.defineProperty(
|
|
1827
|
+
Element.prototype,
|
|
1828
|
+
'clientHeight',
|
|
1829
|
+
originalClientHeight
|
|
1830
|
+
);
|
|
1831
|
+
}
|
|
1832
|
+
}
|
|
1833
|
+
} );
|
|
1834
|
+
} );
|
|
1509
1835
|
} );
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { AlertDialog as _AlertDialog } from '@base-ui/react/alert-dialog';
|
|
2
|
-
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ComponentPropsWithoutRef, ReactElement, ReactNode } from 'react';
|
|
3
3
|
|
|
4
4
|
import type { ComponentProps } from '../utils/types';
|
|
5
5
|
|
|
6
|
+
export type PortalProps = ComponentPropsWithoutRef<
|
|
7
|
+
typeof _AlertDialog.Portal
|
|
8
|
+
>;
|
|
9
|
+
|
|
6
10
|
/**
|
|
7
11
|
* The return type of `onConfirm`. Return `void` (or nothing) to auto-close
|
|
8
12
|
* the dialog after the confirm handler completes. Return `{ close: false }`
|
|
@@ -63,9 +67,15 @@ export interface PopupProps
|
|
|
63
67
|
extends ComponentProps< 'div' >,
|
|
64
68
|
Pick< _AlertDialog.Popup.Props, 'initialFocus' | 'finalFocus' > {
|
|
65
69
|
/**
|
|
66
|
-
*
|
|
70
|
+
* Optional portal element, typically `<AlertDialog.Portal />` with
|
|
71
|
+
* custom `container`, `className`, or `style`. Overlay content is
|
|
72
|
+
* rendered as this portal's children (do not pass `children` on the portal
|
|
73
|
+
* element; they would be ignored).
|
|
74
|
+
*
|
|
75
|
+
* When omitted, `AlertDialog.Popup` uses `AlertDialog.Portal` with default
|
|
76
|
+
* props.
|
|
67
77
|
*/
|
|
68
|
-
|
|
78
|
+
portal?: ReactElement< Omit< PortalProps, 'children' > >;
|
|
69
79
|
|
|
70
80
|
/**
|
|
71
81
|
* The semantic intent of the dialog, which determines its styling.
|
|
@@ -116,4 +126,21 @@ export interface PopupProps
|
|
|
116
126
|
* @default 'Cancel'
|
|
117
127
|
*/
|
|
118
128
|
cancelButtonText?: string;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* When `true`, the dialog's title stays pinned to the top of the popup
|
|
132
|
+
* as the body scrolls. When `false`, the title scrolls with the body.
|
|
133
|
+
*
|
|
134
|
+
* @default true
|
|
135
|
+
*/
|
|
136
|
+
stickyHeader?: boolean;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* When `true`, the dialog's action buttons (and error message, if any)
|
|
140
|
+
* stay pinned to the bottom of the popup as the body scrolls. When
|
|
141
|
+
* `false`, they scroll with the body.
|
|
142
|
+
*
|
|
143
|
+
* @default true
|
|
144
|
+
*/
|
|
145
|
+
stickyFooter?: boolean;
|
|
119
146
|
}
|
|
@@ -15,7 +15,7 @@ const meta: Meta< typeof Badge > = {
|
|
|
15
15
|
parameters: {
|
|
16
16
|
controls: { disable: true },
|
|
17
17
|
},
|
|
18
|
-
tags: [ '!dev' /* Hide individual story pages from sidebar
|
|
18
|
+
tags: [ '!dev' /* Hide individual story pages from sidebar */, 'manifest' ],
|
|
19
19
|
};
|
|
20
20
|
export default meta;
|
|
21
21
|
|
|
@@ -17,7 +17,18 @@ export const Content = forwardRef< HTMLDivElement, ContentProps >(
|
|
|
17
17
|
return (
|
|
18
18
|
<Collapsible.Panel
|
|
19
19
|
ref={ ref }
|
|
20
|
-
|
|
20
|
+
// @ts-expect-error Base UI supports the callback-style
|
|
21
|
+
// version of the `className` prop, but we're purposefully
|
|
22
|
+
// not advertising it in our `@wordpress/ui` re-export.
|
|
23
|
+
className={ ( state ) =>
|
|
24
|
+
clsx(
|
|
25
|
+
styles.content,
|
|
26
|
+
state.open &&
|
|
27
|
+
state.transitionStatus === 'idle' &&
|
|
28
|
+
styles.overflowVisible,
|
|
29
|
+
className
|
|
30
|
+
)
|
|
31
|
+
}
|
|
21
32
|
hiddenUntilFound={ hiddenUntilFound }
|
|
22
33
|
{ ...restProps }
|
|
23
34
|
>
|
|
@@ -5,6 +5,7 @@ import * as Card from '../card';
|
|
|
5
5
|
import * as Collapsible from '../collapsible';
|
|
6
6
|
import { Icon } from '../icon';
|
|
7
7
|
import styles from './style.module.css';
|
|
8
|
+
import defenseStyles from '../utils/css/global-css-defense.module.css';
|
|
8
9
|
import focusStyles from '../utils/css/focus.module.css';
|
|
9
10
|
import { HeaderDescriptionIdContext } from './context';
|
|
10
11
|
import type { HeaderProps } from './types';
|
|
@@ -55,6 +56,7 @@ export const Header = forwardRef< HTMLDivElement, HeaderProps >(
|
|
|
55
56
|
<div
|
|
56
57
|
className={ clsx(
|
|
57
58
|
styles[ 'header-trigger-wrapper' ],
|
|
59
|
+
defenseStyles.div,
|
|
58
60
|
// While the interactive trigger element is the whole header,
|
|
59
61
|
// the focus ring will be displayed only on the icon to visually
|
|
60
62
|
// emulate it being the button.
|