@wordpress/components 25.7.0 → 25.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -1
- package/build/animation/index.js +6 -0
- package/build/animation/index.js.map +1 -1
- package/build/border-control/border-control-dropdown/component.js +1 -1
- package/build/border-control/border-control-dropdown/component.js.map +1 -1
- package/build/border-control/styles.js +20 -20
- package/build/border-control/styles.js.map +1 -1
- package/build/box-control/unit-control.js +1 -1
- package/build/box-control/unit-control.js.map +1 -1
- package/build/button/index.js +9 -1
- package/build/button/index.js.map +1 -1
- package/build/button/types.js.map +1 -1
- package/build/circular-option-picker/circular-option-picker-actions.js +53 -0
- package/build/circular-option-picker/circular-option-picker-actions.js.map +1 -0
- package/build/circular-option-picker/circular-option-picker-context.js +14 -0
- package/build/circular-option-picker/circular-option-picker-context.js.map +1 -0
- package/build/circular-option-picker/circular-option-picker-option-group.js +26 -0
- package/build/circular-option-picker/circular-option-picker-option-group.js.map +1 -0
- package/build/circular-option-picker/circular-option-picker-option.js +122 -0
- package/build/circular-option-picker/circular-option-picker-option.js.map +1 -0
- package/build/circular-option-picker/circular-option-picker.js +172 -0
- package/build/circular-option-picker/circular-option-picker.js.map +1 -0
- package/build/circular-option-picker/index.js +29 -137
- package/build/circular-option-picker/index.js.map +1 -1
- package/build/circular-option-picker/types.js.map +1 -1
- package/build/color-palette/index.js +58 -19
- package/build/color-palette/index.js.map +1 -1
- package/build/color-palette/types.js.map +1 -1
- package/build/combobox-control/index.js +0 -3
- package/build/combobox-control/index.js.map +1 -1
- package/build/composite/index.js.map +1 -1
- package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
- package/build/date-time/time/index.js +6 -1
- package/build/date-time/time/index.js.map +1 -1
- package/build/date-time/time/timezone.js +1 -1
- package/build/date-time/time/timezone.js.map +1 -1
- package/build/dropdown/index.js +11 -23
- package/build/dropdown/index.js.map +1 -1
- package/build/dropdown/types.js.map +1 -1
- package/build/dropdown-menu/index.js +7 -1
- package/build/dropdown-menu/index.js.map +1 -1
- package/build/dropdown-menu/types.js.map +1 -1
- package/build/dropdown-menu-v2/styles.js +16 -16
- package/build/dropdown-menu-v2/styles.js.map +1 -1
- package/build/duotone-picker/color-list-picker/index.js +18 -3
- package/build/duotone-picker/color-list-picker/index.js.map +1 -1
- package/build/duotone-picker/duotone-picker.js +33 -1
- package/build/duotone-picker/duotone-picker.js.map +1 -1
- package/build/duotone-picker/types.js.map +1 -1
- package/build/focusable-iframe/index.js +0 -4
- package/build/focusable-iframe/index.js.map +1 -1
- package/build/focusable-iframe/types.js +6 -0
- package/build/focusable-iframe/types.js.map +1 -0
- package/build/form-token-field/index.js +6 -2
- package/build/form-token-field/index.js.map +1 -1
- package/build/form-token-field/types.js.map +1 -1
- package/build/gradient-picker/index.js +57 -15
- package/build/gradient-picker/index.js.map +1 -1
- package/build/gradient-picker/types.js.map +1 -1
- package/build/higher-order/navigate-regions/index.js.map +1 -1
- package/build/higher-order/with-focus-outside/index.js +1 -2
- package/build/higher-order/with-focus-outside/index.js.map +1 -1
- package/build/higher-order/with-spoken-messages/index.js.map +1 -1
- package/build/index.js +6 -0
- package/build/index.js.map +1 -1
- package/build/input-control/styles/input-control-styles.js +22 -22
- package/build/input-control/styles/input-control-styles.js.map +1 -1
- package/build/mobile/bottom-sheet/index.native.js +1 -0
- package/build/mobile/bottom-sheet/index.native.js.map +1 -1
- package/build/mobile/global-styles-context/index.native.js.map +1 -1
- package/build/modal/index.js +12 -3
- package/build/modal/index.js.map +1 -1
- package/build/modal/types.js.map +1 -1
- package/build/navigation/use-navigation-tree-nodes.js.map +1 -1
- package/build/notice/index.js +19 -7
- package/build/notice/index.js.map +1 -1
- package/build/palette-edit/styles.js +10 -10
- package/build/palette-edit/styles.js.map +1 -1
- package/build/placeholder/index.js +10 -4
- package/build/placeholder/index.js.map +1 -1
- package/build/popover/index.js +37 -83
- package/build/popover/index.js.map +1 -1
- package/build/popover/types.js.map +1 -1
- package/build/popover/utils.js +9 -41
- package/build/popover/utils.js.map +1 -1
- package/build/search-control/index.js +12 -3
- package/build/search-control/index.js.map +1 -1
- package/build/search-control/types.js.map +1 -1
- package/build/text/styles.js +7 -7
- package/build/text/styles.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/as-button-group.js +30 -45
- package/build/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js +40 -41
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/component.js +10 -5
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/styles.js +9 -16
- package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/utils.js +44 -0
- package/build/toggle-group-control/toggle-group-control/utils.js.map +1 -0
- package/build/toggle-group-control/toggle-group-control-option-base/component.js +36 -17
- package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js +10 -8
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build/toggle-group-control/types.js.map +1 -1
- package/build/toolbar/toolbar/index.js +7 -1
- package/build/toolbar/toolbar/index.js.map +1 -1
- package/build/toolbar/toolbar-dropdown-menu/index.js +1 -3
- package/build/toolbar/toolbar-dropdown-menu/index.js.map +1 -1
- package/build/toolbar/toolbar-group/index.js +16 -12
- package/build/toolbar/toolbar-group/index.js.map +1 -1
- package/build/toolbar/toolbar-group/toolbar-group-collapsed.js +0 -2
- package/build/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -1
- package/build/toolbar/toolbar-group/toolbar-group-container.js +3 -1
- package/build/toolbar/toolbar-group/toolbar-group-container.js.map +1 -1
- package/build/toolbar/toolbar-group/types.js +6 -0
- package/build/toolbar/toolbar-group/types.js.map +1 -0
- package/build/toolbar/toolbar-item/index.js +1 -1
- package/build/toolbar/toolbar-item/index.js.map +1 -1
- package/build/tooltip/index.js +51 -225
- package/build/tooltip/index.js.map +1 -1
- package/build/tooltip/types.js +6 -0
- package/build/tooltip/types.js.map +1 -0
- package/build/ui/context/context-connect.js.map +1 -1
- package/build/ui/context/wordpress-component.js.map +1 -1
- package/build/unit-control/index.js.map +1 -1
- package/build/unit-control/styles/unit-control-styles.js +7 -7
- package/build/unit-control/styles/unit-control-styles.js.map +1 -1
- package/build/utils/colors-values.js +1 -1
- package/build/utils/colors-values.js.map +1 -1
- package/build/utils/use-deprecated-props.js.map +1 -1
- package/build-module/animation/index.js +1 -1
- package/build-module/animation/index.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/component.js +1 -1
- package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
- package/build-module/border-control/styles.js +20 -20
- package/build-module/border-control/styles.js.map +1 -1
- package/build-module/box-control/unit-control.js +1 -1
- package/build-module/box-control/unit-control.js.map +1 -1
- package/build-module/button/index.js +9 -1
- package/build-module/button/index.js.map +1 -1
- package/build-module/button/types.js.map +1 -1
- package/build-module/circular-option-picker/circular-option-picker-actions.js +44 -0
- package/build-module/circular-option-picker/circular-option-picker-actions.js.map +1 -0
- package/build-module/circular-option-picker/circular-option-picker-context.js +11 -0
- package/build-module/circular-option-picker/circular-option-picker-context.js.map +1 -0
- package/build-module/circular-option-picker/circular-option-picker-option-group.js +23 -0
- package/build-module/circular-option-picker/circular-option-picker-option-group.js.map +1 -0
- package/build-module/circular-option-picker/circular-option-picker-option.js +114 -0
- package/build-module/circular-option-picker/circular-option-picker-option.js.map +1 -0
- package/build-module/circular-option-picker/circular-option-picker.js +165 -0
- package/build-module/circular-option-picker/circular-option-picker.js.map +1 -0
- package/build-module/circular-option-picker/index.js +4 -132
- package/build-module/circular-option-picker/index.js.map +1 -1
- package/build-module/circular-option-picker/types.js.map +1 -1
- package/build-module/color-palette/index.js +58 -19
- package/build-module/color-palette/index.js.map +1 -1
- package/build-module/color-palette/types.js.map +1 -1
- package/build-module/combobox-control/index.js +0 -3
- package/build-module/combobox-control/index.js.map +1 -1
- package/build-module/composite/index.js +2 -0
- package/build-module/composite/index.js.map +1 -1
- package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
- package/build-module/date-time/time/index.js +6 -1
- package/build-module/date-time/time/index.js.map +1 -1
- package/build-module/date-time/time/timezone.js +1 -1
- package/build-module/date-time/time/timezone.js.map +1 -1
- package/build-module/dropdown/index.js +12 -24
- package/build-module/dropdown/index.js.map +1 -1
- package/build-module/dropdown/types.js.map +1 -1
- package/build-module/dropdown-menu/index.js +7 -1
- package/build-module/dropdown-menu/index.js.map +1 -1
- package/build-module/dropdown-menu/types.js.map +1 -1
- package/build-module/dropdown-menu-v2/styles.js +16 -16
- package/build-module/dropdown-menu-v2/styles.js.map +1 -1
- package/build-module/duotone-picker/color-list-picker/index.js +18 -3
- package/build-module/duotone-picker/color-list-picker/index.js.map +1 -1
- package/build-module/duotone-picker/duotone-picker.js +33 -1
- package/build-module/duotone-picker/duotone-picker.js.map +1 -1
- package/build-module/duotone-picker/types.js.map +1 -1
- package/build-module/focusable-iframe/index.js +2 -3
- package/build-module/focusable-iframe/index.js.map +1 -1
- package/build-module/focusable-iframe/types.js +2 -0
- package/build-module/focusable-iframe/types.js.map +1 -0
- package/build-module/form-token-field/index.js +6 -2
- package/build-module/form-token-field/index.js.map +1 -1
- package/build-module/form-token-field/types.js.map +1 -1
- package/build-module/gradient-picker/index.js +57 -15
- package/build-module/gradient-picker/index.js.map +1 -1
- package/build-module/gradient-picker/types.js.map +1 -1
- package/build-module/higher-order/navigate-regions/index.js.map +1 -1
- package/build-module/higher-order/with-focus-outside/index.js +1 -3
- package/build-module/higher-order/with-focus-outside/index.js.map +1 -1
- package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/input-control/styles/input-control-styles.js +23 -23
- package/build-module/input-control/styles/input-control-styles.js.map +1 -1
- package/build-module/mobile/bottom-sheet/index.native.js +1 -0
- package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
- package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
- package/build-module/modal/index.js +12 -3
- package/build-module/modal/index.js.map +1 -1
- package/build-module/modal/types.js.map +1 -1
- package/build-module/navigation/use-navigation-tree-nodes.js.map +1 -1
- package/build-module/notice/index.js +19 -7
- package/build-module/notice/index.js.map +1 -1
- package/build-module/palette-edit/styles.js +10 -10
- package/build-module/palette-edit/styles.js.map +1 -1
- package/build-module/placeholder/index.js +11 -4
- package/build-module/placeholder/index.js.map +1 -1
- package/build-module/popover/index.js +38 -84
- package/build-module/popover/index.js.map +1 -1
- package/build-module/popover/types.js.map +1 -1
- package/build-module/popover/utils.js +8 -39
- package/build-module/popover/utils.js.map +1 -1
- package/build-module/search-control/index.js +12 -3
- package/build-module/search-control/index.js.map +1 -1
- package/build-module/search-control/types.js.map +1 -1
- package/build-module/text/styles.js +7 -7
- package/build-module/text/styles.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/as-button-group.js +32 -47
- package/build-module/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +41 -42
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js +10 -6
- package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/styles.js +8 -14
- package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/utils.js +42 -0
- package/build-module/toggle-group-control/toggle-group-control/utils.js.map +1 -0
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +35 -16
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +8 -7
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build-module/toggle-group-control/types.js.map +1 -1
- package/build-module/toolbar/toolbar/index.js +7 -1
- package/build-module/toolbar/toolbar/index.js.map +1 -1
- package/build-module/toolbar/toolbar-dropdown-menu/index.js +5 -3
- package/build-module/toolbar/toolbar-dropdown-menu/index.js.map +1 -1
- package/build-module/toolbar/toolbar-group/index.js +15 -12
- package/build-module/toolbar/toolbar-group/index.js.map +1 -1
- package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.js +0 -2
- package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -1
- package/build-module/toolbar/toolbar-group/toolbar-group-container.js +3 -1
- package/build-module/toolbar/toolbar-group/toolbar-group-container.js.map +1 -1
- package/build-module/toolbar/toolbar-group/types.js +2 -0
- package/build-module/toolbar/toolbar-group/types.js.map +1 -0
- package/build-module/toolbar/toolbar-item/index.js +1 -1
- package/build-module/toolbar/toolbar-item/index.js.map +1 -1
- package/build-module/tooltip/index.js +53 -224
- package/build-module/tooltip/index.js.map +1 -1
- package/build-module/tooltip/types.js +2 -0
- package/build-module/tooltip/types.js.map +1 -0
- package/build-module/ui/context/context-connect.js.map +1 -1
- package/build-module/ui/context/wordpress-component.js.map +1 -1
- package/build-module/unit-control/index.js.map +1 -1
- package/build-module/unit-control/styles/unit-control-styles.js +7 -7
- package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
- package/build-module/utils/colors-values.js +1 -1
- package/build-module/utils/colors-values.js.map +1 -1
- package/build-module/utils/use-deprecated-props.js.map +1 -1
- package/build-style/style-rtl.css +35 -73
- package/build-style/style.css +35 -73
- package/build-types/animation/index.d.ts +1 -1
- package/build-types/animation/index.d.ts.map +1 -1
- package/build-types/base-control/hooks.d.ts +1 -1
- package/build-types/border-box-control/border-box-control/component.d.ts +1 -1
- package/build-types/border-box-control/border-box-control/hook.d.ts +46 -46
- package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +51 -51
- package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +46 -46
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +46 -46
- package/build-types/border-box-control/stories/index.story.d.ts +2 -2
- package/build-types/border-control/border-control/hook.d.ts +45 -45
- package/build-types/border-control/border-control-dropdown/hook.d.ts +45 -45
- package/build-types/border-control/border-control-style-picker/hook.d.ts +45 -45
- package/build-types/border-control/stories/index.story.d.ts +6 -6
- package/build-types/box-control/styles/box-control-styles.d.ts +1 -1
- package/build-types/button/deprecated.d.ts +16 -22
- package/build-types/button/deprecated.d.ts.map +1 -1
- package/build-types/button/index.d.ts.map +1 -1
- package/build-types/button/types.d.ts +0 -4
- package/build-types/button/types.d.ts.map +1 -1
- package/build-types/card/card/hook.d.ts +46 -46
- package/build-types/card/card-body/hook.d.ts +46 -46
- package/build-types/card/card-divider/hook.d.ts +47 -47
- package/build-types/card/card-footer/hook.d.ts +46 -46
- package/build-types/card/card-header/hook.d.ts +46 -46
- package/build-types/card/card-media/hook.d.ts +46 -46
- package/build-types/card/stories/index.story.d.ts +2 -2
- package/build-types/circular-option-picker/circular-option-picker-actions.d.ts +7 -0
- package/build-types/circular-option-picker/circular-option-picker-actions.d.ts.map +1 -0
- package/build-types/circular-option-picker/circular-option-picker-context.d.ts +7 -0
- package/build-types/circular-option-picker/circular-option-picker-context.d.ts.map +1 -0
- package/build-types/circular-option-picker/circular-option-picker-option-group.d.ts +7 -0
- package/build-types/circular-option-picker/circular-option-picker-option-group.d.ts.map +1 -0
- package/build-types/circular-option-picker/circular-option-picker-option.d.ts +4 -0
- package/build-types/circular-option-picker/circular-option-picker-option.d.ts.map +1 -0
- package/build-types/circular-option-picker/circular-option-picker.d.ts +11 -0
- package/build-types/circular-option-picker/circular-option-picker.d.ts.map +1 -0
- package/build-types/circular-option-picker/index.d.ts +5 -56
- package/build-types/circular-option-picker/index.d.ts.map +1 -1
- package/build-types/circular-option-picker/stories/index.story.d.ts +3 -1
- package/build-types/circular-option-picker/stories/index.story.d.ts.map +1 -1
- package/build-types/circular-option-picker/test/index.d.ts +2 -0
- package/build-types/circular-option-picker/test/index.d.ts.map +1 -0
- package/build-types/circular-option-picker/types.d.ts +53 -1
- package/build-types/circular-option-picker/types.d.ts.map +1 -1
- package/build-types/color-palette/index.d.ts +3 -19
- package/build-types/color-palette/index.d.ts.map +1 -1
- package/build-types/color-palette/stories/index.story.d.ts +3 -36
- package/build-types/color-palette/stories/index.story.d.ts.map +1 -1
- package/build-types/color-palette/styles.d.ts +1 -1
- package/build-types/color-palette/types.d.ts +31 -1
- package/build-types/color-palette/types.d.ts.map +1 -1
- package/build-types/color-picker/component.d.ts +1 -1
- package/build-types/color-picker/stories/index.story.d.ts +1 -1
- package/build-types/color-picker/styles.d.ts +6 -6
- package/build-types/combobox-control/index.d.ts.map +1 -1
- package/build-types/combobox-control/stories/index.story.d.ts +2 -2
- package/build-types/composite/index.d.ts +14 -1
- package/build-types/composite/index.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts +2 -2
- package/build-types/date-time/date/styles.d.ts +3 -3
- package/build-types/date-time/date-time/styles.d.ts +2 -2
- package/build-types/date-time/time/index.d.ts.map +1 -1
- package/build-types/date-time/time/styles.d.ts +12 -12
- package/build-types/dropdown/index.d.ts.map +1 -1
- package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
- package/build-types/dropdown/types.d.ts +12 -4
- package/build-types/dropdown/types.d.ts.map +1 -1
- package/build-types/dropdown-menu/index.d.ts.map +1 -1
- package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
- package/build-types/dropdown-menu/types.d.ts +22 -5
- package/build-types/dropdown-menu/types.d.ts.map +1 -1
- package/build-types/duotone-picker/color-list-picker/index.d.ts.map +1 -1
- package/build-types/duotone-picker/duotone-picker.d.ts +1 -1
- package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -1
- package/build-types/duotone-picker/types.d.ts +31 -1
- package/build-types/duotone-picker/types.d.ts.map +1 -1
- package/build-types/elevation/hook.d.ts +46 -46
- package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
- package/build-types/flex/flex/hook.d.ts +46 -46
- package/build-types/flex/flex-block/hook.d.ts +46 -46
- package/build-types/flex/flex-item/hook.d.ts +46 -46
- package/build-types/focal-point-picker/stories/index.story.d.ts +8 -8
- package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +1 -1
- package/build-types/focusable-iframe/index.d.ts +4 -5
- package/build-types/focusable-iframe/index.d.ts.map +1 -1
- package/build-types/focusable-iframe/types.d.ts +8 -0
- package/build-types/focusable-iframe/types.d.ts.map +1 -0
- package/build-types/font-size-picker/styles.d.ts +2 -2
- package/build-types/form-token-field/index.d.ts.map +1 -1
- package/build-types/form-token-field/types.d.ts +6 -0
- package/build-types/form-token-field/types.d.ts.map +1 -1
- package/build-types/gradient-picker/index.d.ts +1 -1
- package/build-types/gradient-picker/index.d.ts.map +1 -1
- package/build-types/gradient-picker/stories/index.story.d.ts +3 -36
- package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
- package/build-types/gradient-picker/types.d.ts +31 -1
- package/build-types/gradient-picker/types.d.ts.map +1 -1
- package/build-types/grid/hook.d.ts +46 -46
- package/build-types/h-stack/component.d.ts +1 -1
- package/build-types/h-stack/hook.d.ts +46 -46
- package/build-types/heading/hook.d.ts +45 -45
- package/build-types/higher-order/navigate-regions/index.d.ts.map +1 -1
- package/build-types/higher-order/with-focus-outside/index.d.ts +1 -0
- package/build-types/higher-order/with-focus-outside/index.d.ts.map +1 -1
- package/build-types/higher-order/with-focus-outside/test/index.d.ts +2 -0
- package/build-types/higher-order/with-focus-outside/test/index.d.ts.map +1 -0
- package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -1
- package/build-types/index.d.ts +1 -1
- package/build-types/index.d.ts.map +1 -1
- package/build-types/isolated-event-container/test/index.d.ts +2 -0
- package/build-types/isolated-event-container/test/index.d.ts.map +1 -0
- package/build-types/item-group/item/hook.d.ts +46 -46
- package/build-types/item-group/item-group/hook.d.ts +46 -46
- package/build-types/menu-item/index.d.ts +1 -1
- package/build-types/menu-item/stories/index.story.d.ts +4 -4
- package/build-types/modal/index.d.ts.map +1 -1
- package/build-types/modal/stories/index.story.d.ts.map +1 -1
- package/build-types/modal/types.d.ts +1 -1
- package/build-types/modal/types.d.ts.map +1 -1
- package/build-types/navigable-container/menu.d.ts +1 -1
- package/build-types/navigation/back-button/index.d.ts +1 -1
- package/build-types/navigation/styles/navigation-styles.d.ts +5 -3
- package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -1
- package/build-types/navigator/navigator-back-button/component.d.ts +2 -3
- package/build-types/navigator/navigator-back-button/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-back-button/hook.d.ts +53 -54
- package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
- package/build-types/navigator/navigator-button/component.d.ts +2 -3
- package/build-types/navigator/navigator-button/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-button/hook.d.ts +53 -54
- package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
- package/build-types/navigator/navigator-to-parent-button/component.d.ts +2 -3
- package/build-types/navigator/navigator-to-parent-button/component.d.ts.map +1 -1
- package/build-types/notice/index.d.ts.map +1 -1
- package/build-types/number-control/index.d.ts +3 -3
- package/build-types/number-control/stories/index.story.d.ts +3 -3
- package/build-types/palette-edit/styles.d.ts +4 -4
- package/build-types/palette-edit/styles.d.ts.map +1 -1
- package/build-types/placeholder/index.d.ts.map +1 -1
- package/build-types/popover/index.d.ts +1 -1
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/popover/overlay-middlewares.d.ts +1 -1
- package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
- package/build-types/popover/types.d.ts +0 -4
- package/build-types/popover/types.d.ts.map +1 -1
- package/build-types/popover/utils.d.ts +2 -6
- package/build-types/popover/utils.d.ts.map +1 -1
- package/build-types/range-control/index.d.ts +1 -1
- package/build-types/range-control/styles/range-control-styles.d.ts +3 -3
- package/build-types/resizable-box/index.d.ts +1 -1
- package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
- package/build-types/resizable-box/resize-tooltip/label.d.ts +1 -1
- package/build-types/resizable-box/stories/index.story.d.ts +2 -2
- package/build-types/scrollable/hook.d.ts +46 -46
- package/build-types/search-control/index.d.ts +4 -2
- package/build-types/search-control/index.d.ts.map +1 -1
- package/build-types/search-control/stories/index.story.d.ts +8 -4
- package/build-types/search-control/stories/index.story.d.ts.map +1 -1
- package/build-types/search-control/types.d.ts +12 -0
- package/build-types/search-control/types.d.ts.map +1 -1
- package/build-types/spacer/hook.d.ts +46 -46
- package/build-types/spinner/index.d.ts +1 -1
- package/build-types/surface/hook.d.ts +46 -46
- package/build-types/text/hook.d.ts +46 -46
- package/build-types/text/styles.d.ts.map +1 -1
- package/build-types/text-control/index.d.ts +3 -3
- package/build-types/toggle-control/stories/index.story.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -4
- package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -4
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +1 -5
- package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/utils.d.ts +18 -0
- package/build-types/toggle-group-control/toggle-group-control/utils.d.ts.map +1 -0
- package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts +5 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +1 -0
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
- package/build-types/toggle-group-control/types.d.ts +13 -24
- package/build-types/toggle-group-control/types.d.ts.map +1 -1
- package/build-types/toolbar/stories/index.story.d.ts.map +1 -1
- package/build-types/toolbar/toolbar/index.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-button/index.d.ts +16 -22
- package/build-types/toolbar/toolbar-button/index.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-dropdown-menu/index.d.ts +3 -1
- package/build-types/toolbar/toolbar-dropdown-menu/index.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-group/index.d.ts +10 -14
- package/build-types/toolbar/toolbar-group/index.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-group/toolbar-group-collapsed.d.ts +3 -5
- package/build-types/toolbar/toolbar-group/toolbar-group-collapsed.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-group/toolbar-group-container.d.ts +7 -5
- package/build-types/toolbar/toolbar-group/toolbar-group-container.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-group/types.d.ts +77 -0
- package/build-types/toolbar/toolbar-group/types.d.ts.map +1 -0
- package/build-types/toolbar/toolbar-item/index.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel/hook.d.ts +46 -46
- package/build-types/tools-panel/tools-panel-header/hook.d.ts +46 -46
- package/build-types/tools-panel/tools-panel-item/hook.d.ts +46 -46
- package/build-types/tooltip/index.d.ts +8 -5
- package/build-types/tooltip/index.d.ts.map +1 -1
- package/build-types/tooltip/stories/index.story.d.ts +13 -0
- package/build-types/tooltip/stories/index.story.d.ts.map +1 -0
- package/build-types/tooltip/test/index.d.ts +2 -0
- package/build-types/tooltip/test/index.d.ts.map +1 -0
- package/build-types/tooltip/test/utils/index.d.ts +11 -0
- package/build-types/tooltip/test/utils/index.d.ts.map +1 -0
- package/build-types/tooltip/types.d.ts +61 -0
- package/build-types/tooltip/types.d.ts.map +1 -0
- package/build-types/truncate/hook.d.ts +46 -46
- package/build-types/ui/tooltip/content.d.ts +1 -1
- package/build-types/unit-control/index.d.ts +1 -1
- package/build-types/unit-control/index.d.ts.map +1 -1
- package/build-types/unit-control/styles/unit-control-styles.d.ts +3 -3
- package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
- package/build-types/unit-control/unit-select-control.d.ts +1 -1
- package/build-types/utils/use-deprecated-props.d.ts +1 -1
- package/build-types/v-stack/component.d.ts +1 -1
- package/build-types/v-stack/hook.d.ts +46 -46
- package/build-types/v-stack/stories/index.story.d.ts +2 -2
- package/package.json +20 -20
- package/src/animation/index.tsx +1 -0
- package/src/border-control/border-control/README.md +2 -2
- package/src/border-control/border-control-dropdown/component.tsx +1 -1
- package/src/border-control/styles.ts +7 -7
- package/src/border-control/test/index.js +79 -69
- package/src/box-control/unit-control.tsx +1 -1
- package/src/button/README.md +0 -6
- package/src/button/index.tsx +9 -1
- package/src/button/test/index.tsx +19 -0
- package/src/button/types.ts +0 -4
- package/src/circular-option-picker/README.md +14 -0
- package/src/circular-option-picker/circular-option-picker-actions.tsx +60 -0
- package/src/circular-option-picker/circular-option-picker-context.tsx +12 -0
- package/src/circular-option-picker/circular-option-picker-option-group.tsx +34 -0
- package/src/circular-option-picker/circular-option-picker-option.tsx +139 -0
- package/src/circular-option-picker/circular-option-picker.tsx +202 -0
- package/src/circular-option-picker/index.tsx +7 -174
- package/src/circular-option-picker/stories/index.story.tsx +34 -9
- package/src/circular-option-picker/style.scss +11 -7
- package/src/circular-option-picker/test/index.tsx +133 -0
- package/src/circular-option-picker/types.ts +64 -1
- package/src/color-palette/README.md +14 -0
- package/src/color-palette/index.tsx +69 -28
- package/src/color-palette/stories/index.story.tsx +16 -2
- package/src/color-palette/test/index.tsx +32 -30
- package/src/color-palette/types.ts +34 -1
- package/src/combobox-control/index.tsx +7 -5
- package/src/composite/{index.js → index.ts} +3 -0
- package/src/confirm-dialog/stories/index.story.js +13 -14
- package/src/confirm-dialog/test/index.js +10 -18
- package/src/custom-gradient-picker/gradient-bar/control-points.tsx +1 -1
- package/src/custom-gradient-picker/gradient-bar/test/utils.ts +5 -5
- package/src/date-time/time/index.tsx +8 -1
- package/src/date-time/time/timezone.tsx +1 -1
- package/src/dropdown/README.md +13 -3
- package/src/dropdown/index.tsx +16 -34
- package/src/dropdown/stories/index.story.tsx +10 -7
- package/src/dropdown/types.ts +12 -4
- package/src/dropdown-menu/README.md +18 -0
- package/src/dropdown-menu/index.tsx +8 -1
- package/src/dropdown-menu/stories/index.story.tsx +5 -0
- package/src/dropdown-menu/types.ts +23 -6
- package/src/dropdown-menu-v2/styles.ts +1 -1
- package/src/duotone-picker/README.md +14 -0
- package/src/duotone-picker/color-list-picker/index.tsx +28 -12
- package/src/duotone-picker/duotone-picker.tsx +33 -0
- package/src/duotone-picker/types.ts +34 -1
- package/src/focusable-iframe/{index.js → index.tsx} +7 -4
- package/src/focusable-iframe/types.ts +9 -0
- package/src/form-token-field/README.md +1 -0
- package/src/form-token-field/index.tsx +5 -1
- package/src/form-token-field/style.scss +5 -9
- package/src/form-token-field/test/index.tsx +36 -1
- package/src/form-token-field/types.ts +7 -1
- package/src/gradient-picker/README.md +14 -0
- package/src/gradient-picker/index.tsx +60 -11
- package/src/gradient-picker/types.ts +34 -1
- package/src/higher-order/navigate-regions/index.tsx +5 -6
- package/src/higher-order/with-filters/test/index.tsx +36 -43
- package/src/higher-order/with-focus-outside/{index.js → index.tsx} +8 -5
- package/src/higher-order/with-focus-outside/test/{index.js → index.tsx} +13 -11
- package/src/higher-order/with-notices/test/index.tsx +1 -1
- package/src/higher-order/with-spoken-messages/index.tsx +7 -8
- package/src/index.ts +5 -1
- package/src/input-control/styles/input-control-styles.tsx +2 -2
- package/src/isolated-event-container/test/{index.js → index.tsx} +1 -1
- package/src/mobile/bottom-sheet/index.native.js +1 -0
- package/src/mobile/global-styles-context/index.native.js +7 -8
- package/src/modal/README.md +7 -1
- package/src/modal/index.tsx +27 -3
- package/src/modal/stories/index.story.tsx +2 -1
- package/src/modal/test/index.tsx +231 -0
- package/src/modal/types.ts +3 -1
- package/src/navigation/use-navigation-tree-nodes.tsx +1 -1
- package/src/notice/index.tsx +18 -6
- package/src/notice/style.scss +0 -1
- package/src/notice/test/__snapshots__/index.tsx.snap +9 -1
- package/src/palette-edit/styles.js +2 -1
- package/src/placeholder/index.tsx +16 -8
- package/src/placeholder/style.scss +2 -16
- package/src/placeholder/test/index.tsx +34 -15
- package/src/popover/index.tsx +47 -110
- package/src/popover/test/index.tsx +3 -3
- package/src/popover/types.ts +0 -5
- package/src/popover/utils.ts +19 -67
- package/src/search-control/README.md +7 -0
- package/src/search-control/index.tsx +10 -1
- package/src/search-control/style.scss +14 -7
- package/src/search-control/types.ts +12 -0
- package/src/tab-panel/test/index.tsx +5 -0
- package/src/text/styles.js +2 -1
- package/src/theme/README.md +5 -5
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +567 -59
- package/src/toggle-group-control/test/index.tsx +110 -56
- package/src/toggle-group-control/toggle-group-control/README.md +0 -1
- package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +39 -57
- package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +52 -48
- package/src/toggle-group-control/toggle-group-control/component.tsx +12 -6
- package/src/toggle-group-control/toggle-group-control/styles.ts +2 -19
- package/src/toggle-group-control/toggle-group-control/utils.ts +50 -0
- package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +70 -20
- package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +17 -3
- package/src/toggle-group-control/types.ts +14 -32
- package/src/toolbar/stories/index.story.tsx +3 -5
- package/src/toolbar/test/toolbar-group.tsx +13 -7
- package/src/toolbar/toolbar/index.tsx +9 -1
- package/src/toolbar/toolbar-dropdown-menu/{index.js → index.tsx} +11 -4
- package/src/toolbar/toolbar-group/README.md +2 -2
- package/src/toolbar/toolbar-group/{index.js → index.tsx} +19 -14
- package/src/toolbar/toolbar-group/{toolbar-group-collapsed.js → toolbar-group-collapsed.tsx} +10 -4
- package/src/toolbar/toolbar-group/toolbar-group-container.tsx +16 -0
- package/src/toolbar/toolbar-group/types.ts +92 -0
- package/src/toolbar/toolbar-item/index.tsx +3 -1
- package/src/tooltip/README.md +31 -28
- package/src/tooltip/index.tsx +106 -0
- package/src/tooltip/stories/index.story.tsx +59 -0
- package/src/tooltip/style.scss +2 -27
- package/src/tooltip/test/index.tsx +335 -0
- package/src/tooltip/test/utils/index.tsx +20 -0
- package/src/tooltip/types.ts +61 -0
- package/src/ui/context/context-connect.ts +3 -3
- package/src/ui/context/wordpress-component.ts +4 -4
- package/src/unit-control/index.tsx +9 -4
- package/src/unit-control/styles/unit-control-styles.ts +3 -1
- package/src/unit-control/test/utils.ts +1 -1
- package/src/utils/colors-values.js +1 -1
- package/src/utils/use-deprecated-props.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js +0 -78
- package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +0 -1
- package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js +0 -76
- package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +0 -1
- package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts +0 -9
- package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts.map +0 -1
- package/src/color-palette/test/__snapshots__/index.tsx.snap +0 -288
- package/src/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.tsx +0 -84
- package/src/toolbar/toolbar-group/toolbar-group-container.js +0 -8
- package/src/tooltip/index.js +0 -293
- package/src/tooltip/stories/index.story.js +0 -85
- package/src/tooltip/test/index.js +0 -323
|
@@ -17,13 +17,12 @@ import { speak } from '@wordpress/a11y';
|
|
|
17
17
|
* @return {WPComponent} The wrapped component.
|
|
18
18
|
*/
|
|
19
19
|
export default createHigherOrderComponent(
|
|
20
|
-
( Component ) => ( props ) =>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
),
|
|
20
|
+
( Component ) => ( props ) => (
|
|
21
|
+
<Component
|
|
22
|
+
{ ...props }
|
|
23
|
+
speak={ speak }
|
|
24
|
+
debouncedSpeak={ useDebounce( speak, 500 ) }
|
|
25
|
+
/>
|
|
26
|
+
),
|
|
28
27
|
'withSpokenMessages'
|
|
29
28
|
);
|
package/src/index.ts
CHANGED
|
@@ -17,7 +17,11 @@ export {
|
|
|
17
17
|
default as Animate,
|
|
18
18
|
getAnimateClassName as __unstableGetAnimateClassName,
|
|
19
19
|
} from './animate';
|
|
20
|
-
export {
|
|
20
|
+
export {
|
|
21
|
+
__unstableMotion,
|
|
22
|
+
__unstableAnimatePresence,
|
|
23
|
+
__unstableMotionContext,
|
|
24
|
+
} from './animation';
|
|
21
25
|
export { default as AnglePickerControl } from './angle-picker-control';
|
|
22
26
|
export {
|
|
23
27
|
default as Autocomplete,
|
|
@@ -12,7 +12,7 @@ import type { CSSProperties, ReactNode } from 'react';
|
|
|
12
12
|
import type { WordPressComponentProps } from '../../ui/context';
|
|
13
13
|
import { Flex, FlexItem } from '../../flex';
|
|
14
14
|
import { Text } from '../../text';
|
|
15
|
-
import { baseLabelTypography, COLORS, rtl } from '../../utils';
|
|
15
|
+
import { baseLabelTypography, COLORS, CONFIG, rtl } from '../../utils';
|
|
16
16
|
import type { LabelPosition, Size } from '../types';
|
|
17
17
|
import { space } from '../../ui/utils/space';
|
|
18
18
|
|
|
@@ -275,7 +275,7 @@ const backdropFocusedStyles = ( {
|
|
|
275
275
|
let outlineOffset;
|
|
276
276
|
|
|
277
277
|
if ( isFocused ) {
|
|
278
|
-
boxShadow =
|
|
278
|
+
boxShadow = CONFIG.controlBoxShadowFocus;
|
|
279
279
|
// Windows High Contrast mode will show this outline, but not the box-shadow.
|
|
280
280
|
outline = `2px solid transparent`;
|
|
281
281
|
outlineOffset = `-2px`;
|
|
@@ -7,7 +7,7 @@ import userEvent from '@testing-library/user-event';
|
|
|
7
7
|
/**
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
|
-
import IsolatedEventContainer from '
|
|
10
|
+
import IsolatedEventContainer from '..';
|
|
11
11
|
|
|
12
12
|
describe( 'IsolatedEventContainer', () => {
|
|
13
13
|
it( 'should pass props to container', async () => {
|
|
@@ -92,13 +92,12 @@ export const useGlobalStyles = () => {
|
|
|
92
92
|
return globalStyles;
|
|
93
93
|
};
|
|
94
94
|
|
|
95
|
-
export const withGlobalStyles = ( WrappedComponent ) => ( props ) =>
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
{
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
);
|
|
95
|
+
export const withGlobalStyles = ( WrappedComponent ) => ( props ) => (
|
|
96
|
+
<GlobalStylesContext.Consumer>
|
|
97
|
+
{ ( globalStyles ) => (
|
|
98
|
+
<WrappedComponent { ...props } globalStyles={ globalStyles } />
|
|
99
|
+
) }
|
|
100
|
+
</GlobalStylesContext.Consumer>
|
|
101
|
+
);
|
|
103
102
|
|
|
104
103
|
export default GlobalStylesContext;
|
package/src/modal/README.md
CHANGED
|
@@ -187,10 +187,16 @@ Titles are required for accessibility reasons, see `aria.labelledby` and `title`
|
|
|
187
187
|
|
|
188
188
|
- Required: No
|
|
189
189
|
|
|
190
|
-
#### `focusOnMount`: `boolean | 'firstElement'`
|
|
190
|
+
#### `focusOnMount`: `boolean | 'firstElement'` | 'firstContentElement'
|
|
191
191
|
|
|
192
192
|
If this property is true, it will focus the first tabbable element rendered in the modal.
|
|
193
193
|
|
|
194
|
+
If this property is false, focus will not be transferred and it is the responsibility of the consumer to ensure accessible focus management.
|
|
195
|
+
|
|
196
|
+
If set to `firstElement` focus will be placed on the first tabbable element anywhere within the Modal.
|
|
197
|
+
|
|
198
|
+
If set to `firstContentElement` focus will be placed on the first tabbable element within the Modal's **content** (i.e. children). Note that it is the responsibility of the consumer to ensure there is at least one tabbable element within the children **or the focus will be lost**.
|
|
199
|
+
|
|
194
200
|
- Required: No
|
|
195
201
|
- Default: `true`
|
|
196
202
|
|
package/src/modal/index.tsx
CHANGED
|
@@ -71,11 +71,23 @@ function UnforwardedModal(
|
|
|
71
71
|
} = props;
|
|
72
72
|
|
|
73
73
|
const ref = useRef< HTMLDivElement >();
|
|
74
|
+
|
|
74
75
|
const instanceId = useInstanceId( Modal );
|
|
75
76
|
const headingId = title
|
|
76
77
|
? `components-modal-header-${ instanceId }`
|
|
77
78
|
: aria.labelledby;
|
|
78
|
-
|
|
79
|
+
|
|
80
|
+
// The focus hook does not support 'firstContentElement' but this is a valid
|
|
81
|
+
// value for the Modal's focusOnMount prop. The following code ensures the focus
|
|
82
|
+
// hook will focus the first focusable node within the element to which it is applied.
|
|
83
|
+
// When `firstContentElement` is passed as the value of the focusOnMount prop,
|
|
84
|
+
// the focus hook is applied to the Modal's content element.
|
|
85
|
+
// Otherwise, the focus hook is applied to the Modal's ref. This ensures that the
|
|
86
|
+
// focus hook will focus the first element in the Modal's **content** when
|
|
87
|
+
// `firstContentElement` is passed.
|
|
88
|
+
const focusOnMountRef = useFocusOnMount(
|
|
89
|
+
focusOnMount === 'firstContentElement' ? 'firstElement' : focusOnMount
|
|
90
|
+
);
|
|
79
91
|
const constrainedTabbingRef = useConstrainedTabbing();
|
|
80
92
|
const focusReturnRef = useFocusReturn();
|
|
81
93
|
const focusOutsideProps = useFocusOutside( onRequestClose );
|
|
@@ -223,7 +235,9 @@ function UnforwardedModal(
|
|
|
223
235
|
ref={ useMergeRefs( [
|
|
224
236
|
constrainedTabbingRef,
|
|
225
237
|
focusReturnRef,
|
|
226
|
-
|
|
238
|
+
focusOnMount !== 'firstContentElement'
|
|
239
|
+
? focusOnMountRef
|
|
240
|
+
: null,
|
|
227
241
|
] ) }
|
|
228
242
|
role={ role }
|
|
229
243
|
aria-label={ contentLabel }
|
|
@@ -283,7 +297,17 @@ function UnforwardedModal(
|
|
|
283
297
|
) }
|
|
284
298
|
</div>
|
|
285
299
|
) }
|
|
286
|
-
|
|
300
|
+
|
|
301
|
+
<div
|
|
302
|
+
ref={ useMergeRefs( [
|
|
303
|
+
childrenContainerRef,
|
|
304
|
+
focusOnMount === 'firstContentElement'
|
|
305
|
+
? focusOnMountRef
|
|
306
|
+
: null,
|
|
307
|
+
] ) }
|
|
308
|
+
>
|
|
309
|
+
{ children }
|
|
310
|
+
</div>
|
|
287
311
|
</div>
|
|
288
312
|
</div>
|
|
289
313
|
</StyleProvider>
|
|
@@ -28,7 +28,8 @@ const meta: Meta< typeof Modal > = {
|
|
|
28
28
|
control: { type: null },
|
|
29
29
|
},
|
|
30
30
|
focusOnMount: {
|
|
31
|
-
|
|
31
|
+
options: [ true, false, 'firstElement', 'firstContentElement' ],
|
|
32
|
+
control: { type: 'select' },
|
|
32
33
|
},
|
|
33
34
|
role: {
|
|
34
35
|
control: { type: 'text' },
|
package/src/modal/test/index.tsx
CHANGED
|
@@ -13,6 +13,7 @@ import { useState } from '@wordpress/element';
|
|
|
13
13
|
* Internal dependencies
|
|
14
14
|
*/
|
|
15
15
|
import Modal from '../';
|
|
16
|
+
import type { ModalProps } from '../types';
|
|
16
17
|
|
|
17
18
|
const noop = () => {};
|
|
18
19
|
|
|
@@ -116,6 +117,113 @@ describe( 'Modal', () => {
|
|
|
116
117
|
expect( opener ).toHaveFocus();
|
|
117
118
|
} );
|
|
118
119
|
|
|
120
|
+
it( 'should request closing of any non nested modal when opened', async () => {
|
|
121
|
+
const user = userEvent.setup();
|
|
122
|
+
const onRequestClose = jest.fn();
|
|
123
|
+
|
|
124
|
+
const DismissAdjacent = () => {
|
|
125
|
+
const [ isShown, setIsShown ] = useState( false );
|
|
126
|
+
return (
|
|
127
|
+
<>
|
|
128
|
+
<Modal onRequestClose={ onRequestClose }>
|
|
129
|
+
<button onClick={ () => setIsShown( true ) }>💥</button>
|
|
130
|
+
</Modal>
|
|
131
|
+
{ isShown && (
|
|
132
|
+
<Modal onRequestClose={ () => setIsShown( false ) }>
|
|
133
|
+
<p>Adjacent modal content</p>
|
|
134
|
+
</Modal>
|
|
135
|
+
) }
|
|
136
|
+
</>
|
|
137
|
+
);
|
|
138
|
+
};
|
|
139
|
+
render( <DismissAdjacent /> );
|
|
140
|
+
|
|
141
|
+
await user.click( screen.getByRole( 'button', { name: '💥' } ) );
|
|
142
|
+
expect( onRequestClose ).toHaveBeenCalled();
|
|
143
|
+
} );
|
|
144
|
+
|
|
145
|
+
it( 'should support nested modals', async () => {
|
|
146
|
+
const user = userEvent.setup();
|
|
147
|
+
const onRequestClose = jest.fn();
|
|
148
|
+
|
|
149
|
+
const NestSupport = () => {
|
|
150
|
+
const [ isShown, setIsShown ] = useState( false );
|
|
151
|
+
return (
|
|
152
|
+
<>
|
|
153
|
+
<Modal onRequestClose={ onRequestClose }>
|
|
154
|
+
<button onClick={ () => setIsShown( true ) }>🪆</button>
|
|
155
|
+
{ isShown && (
|
|
156
|
+
<Modal onRequestClose={ () => setIsShown( false ) }>
|
|
157
|
+
<p>Nested modal content</p>
|
|
158
|
+
</Modal>
|
|
159
|
+
) }
|
|
160
|
+
</Modal>
|
|
161
|
+
</>
|
|
162
|
+
);
|
|
163
|
+
};
|
|
164
|
+
render( <NestSupport /> );
|
|
165
|
+
|
|
166
|
+
await user.click( screen.getByRole( 'button', { name: '🪆' } ) );
|
|
167
|
+
expect( onRequestClose ).not.toHaveBeenCalled();
|
|
168
|
+
} );
|
|
169
|
+
|
|
170
|
+
// TODO enable once nested modals hide outer modals.
|
|
171
|
+
it.skip( 'should accessibly hide and show siblings including outer modals', async () => {
|
|
172
|
+
const user = userEvent.setup();
|
|
173
|
+
|
|
174
|
+
const AriaDemo = () => {
|
|
175
|
+
const [ isOuterShown, setIsOuterShown ] = useState( false );
|
|
176
|
+
const [ isInnerShown, setIsInnerShown ] = useState( false );
|
|
177
|
+
return (
|
|
178
|
+
<>
|
|
179
|
+
<button onClick={ () => setIsOuterShown( true ) }>
|
|
180
|
+
Start
|
|
181
|
+
</button>
|
|
182
|
+
{ isOuterShown && (
|
|
183
|
+
<Modal
|
|
184
|
+
onRequestClose={ () => setIsOuterShown( false ) }
|
|
185
|
+
>
|
|
186
|
+
<button onClick={ () => setIsInnerShown( true ) }>
|
|
187
|
+
Nest
|
|
188
|
+
</button>
|
|
189
|
+
{ isInnerShown && (
|
|
190
|
+
<Modal
|
|
191
|
+
onRequestClose={ () =>
|
|
192
|
+
setIsInnerShown( false )
|
|
193
|
+
}
|
|
194
|
+
>
|
|
195
|
+
<p>Nested modal content</p>
|
|
196
|
+
</Modal>
|
|
197
|
+
) }
|
|
198
|
+
</Modal>
|
|
199
|
+
) }
|
|
200
|
+
</>
|
|
201
|
+
);
|
|
202
|
+
};
|
|
203
|
+
const { container } = render( <AriaDemo /> );
|
|
204
|
+
|
|
205
|
+
// Opens outer modal > hides container.
|
|
206
|
+
await user.click( screen.getByRole( 'button', { name: 'Start' } ) );
|
|
207
|
+
expect( container ).toHaveAttribute( 'aria-hidden', 'true' );
|
|
208
|
+
|
|
209
|
+
// Disable reason: No semantic query can reach the overlay.
|
|
210
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
211
|
+
const outer = screen.getByRole( 'dialog' ).parentElement!;
|
|
212
|
+
|
|
213
|
+
// Opens inner modal > hides outer modal.
|
|
214
|
+
await user.click( screen.getByRole( 'button', { name: 'Nest' } ) );
|
|
215
|
+
expect( outer ).toHaveAttribute( 'aria-hidden', 'true' );
|
|
216
|
+
|
|
217
|
+
// Closes inner modal > Unhides outer modal and container stays hidden.
|
|
218
|
+
await user.keyboard( '[Escape]' );
|
|
219
|
+
expect( outer ).not.toHaveAttribute( 'aria-hidden' );
|
|
220
|
+
expect( container ).toHaveAttribute( 'aria-hidden', 'true' );
|
|
221
|
+
|
|
222
|
+
// Closes outer modal > Unhides container.
|
|
223
|
+
await user.keyboard( '[Escape]' );
|
|
224
|
+
expect( container ).not.toHaveAttribute( 'aria-hidden' );
|
|
225
|
+
} );
|
|
226
|
+
|
|
119
227
|
it( 'should render `headerActions` React nodes', async () => {
|
|
120
228
|
render(
|
|
121
229
|
<Modal
|
|
@@ -129,4 +237,127 @@ describe( 'Modal', () => {
|
|
|
129
237
|
screen.getByText( 'A sweet button', { selector: 'button' } )
|
|
130
238
|
).toBeInTheDocument();
|
|
131
239
|
} );
|
|
240
|
+
|
|
241
|
+
describe( 'Focus handling', () => {
|
|
242
|
+
let originalGetClientRects: () => DOMRectList;
|
|
243
|
+
|
|
244
|
+
const FocusMountDemo = ( {
|
|
245
|
+
focusOnMount,
|
|
246
|
+
}: Pick< ModalProps, 'focusOnMount' > ) => {
|
|
247
|
+
const [ isShown, setIsShown ] = useState( false );
|
|
248
|
+
return (
|
|
249
|
+
<>
|
|
250
|
+
<button onClick={ () => setIsShown( true ) }>
|
|
251
|
+
Toggle Modal
|
|
252
|
+
</button>
|
|
253
|
+
{ isShown && (
|
|
254
|
+
<Modal
|
|
255
|
+
focusOnMount={ focusOnMount }
|
|
256
|
+
onRequestClose={ () => setIsShown( false ) }
|
|
257
|
+
>
|
|
258
|
+
<p>Modal content</p>
|
|
259
|
+
<a href="https://wordpress.org">
|
|
260
|
+
First Focusable Content Element
|
|
261
|
+
</a>
|
|
262
|
+
|
|
263
|
+
<a href="https://wordpress.org">
|
|
264
|
+
Another Focusable Content Element
|
|
265
|
+
</a>
|
|
266
|
+
</Modal>
|
|
267
|
+
) }
|
|
268
|
+
</>
|
|
269
|
+
);
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
beforeEach( () => {
|
|
273
|
+
/**
|
|
274
|
+
* The test environment does not have a layout engine, so we need to mock
|
|
275
|
+
* the getClientRects method. This ensures that the focusable elements can be
|
|
276
|
+
* found by the `focusOnMount` logic which depends on layout information
|
|
277
|
+
* to determine if the element is visible or not.
|
|
278
|
+
* See https://github.com/WordPress/gutenberg/blob/trunk/packages/dom/src/focusable.js#L55-L61.
|
|
279
|
+
*/
|
|
280
|
+
// @ts-expect-error We're not trying to comply to the DOM spec, only mocking
|
|
281
|
+
window.HTMLElement.prototype.getClientRects = function () {
|
|
282
|
+
return [ 'trick-jsdom-into-having-size-for-element-rect' ];
|
|
283
|
+
};
|
|
284
|
+
} );
|
|
285
|
+
|
|
286
|
+
afterEach( () => {
|
|
287
|
+
// Restore original HTMLElement prototype.
|
|
288
|
+
// See beforeEach for details.
|
|
289
|
+
window.HTMLElement.prototype.getClientRects =
|
|
290
|
+
originalGetClientRects;
|
|
291
|
+
} );
|
|
292
|
+
|
|
293
|
+
it( 'should focus the Modal dialog by default when `focusOnMount` prop is not provided', async () => {
|
|
294
|
+
const user = userEvent.setup();
|
|
295
|
+
|
|
296
|
+
render( <FocusMountDemo /> );
|
|
297
|
+
|
|
298
|
+
const opener = screen.getByRole( 'button', {
|
|
299
|
+
name: 'Toggle Modal',
|
|
300
|
+
} );
|
|
301
|
+
|
|
302
|
+
await user.click( opener );
|
|
303
|
+
|
|
304
|
+
expect( screen.getByRole( 'dialog' ) ).toHaveFocus();
|
|
305
|
+
} );
|
|
306
|
+
|
|
307
|
+
it( 'should focus the Modal dialog when `true` passed as value for `focusOnMount` prop', async () => {
|
|
308
|
+
const user = userEvent.setup();
|
|
309
|
+
|
|
310
|
+
render( <FocusMountDemo focusOnMount={ true } /> );
|
|
311
|
+
|
|
312
|
+
const opener = screen.getByRole( 'button', {
|
|
313
|
+
name: 'Toggle Modal',
|
|
314
|
+
} );
|
|
315
|
+
|
|
316
|
+
await user.click( opener );
|
|
317
|
+
|
|
318
|
+
expect( screen.getByRole( 'dialog' ) ).toHaveFocus();
|
|
319
|
+
} );
|
|
320
|
+
|
|
321
|
+
it( 'should focus the first focusable element in the contents (if found) when `firstContentElement` passed as value for `focusOnMount` prop', async () => {
|
|
322
|
+
const user = userEvent.setup();
|
|
323
|
+
|
|
324
|
+
render( <FocusMountDemo focusOnMount="firstContentElement" /> );
|
|
325
|
+
|
|
326
|
+
const opener = screen.getByRole( 'button' );
|
|
327
|
+
|
|
328
|
+
await user.click( opener );
|
|
329
|
+
|
|
330
|
+
expect(
|
|
331
|
+
screen.getByText( 'First Focusable Content Element' )
|
|
332
|
+
).toHaveFocus();
|
|
333
|
+
} );
|
|
334
|
+
|
|
335
|
+
it( 'should focus the first element anywhere within the Modal when `firstElement` passed as value for `focusOnMount` prop', async () => {
|
|
336
|
+
const user = userEvent.setup();
|
|
337
|
+
|
|
338
|
+
render( <FocusMountDemo focusOnMount="firstElement" /> );
|
|
339
|
+
|
|
340
|
+
const opener = screen.getByRole( 'button' );
|
|
341
|
+
|
|
342
|
+
await user.click( opener );
|
|
343
|
+
|
|
344
|
+
expect(
|
|
345
|
+
screen.getByRole( 'button', { name: 'Close' } )
|
|
346
|
+
).toHaveFocus();
|
|
347
|
+
} );
|
|
348
|
+
|
|
349
|
+
it( 'should not move focus when `false` passed as value for `focusOnMount` prop', async () => {
|
|
350
|
+
const user = userEvent.setup();
|
|
351
|
+
|
|
352
|
+
render( <FocusMountDemo focusOnMount={ false } /> );
|
|
353
|
+
|
|
354
|
+
const opener = screen.getByRole( 'button', {
|
|
355
|
+
name: 'Toggle Modal',
|
|
356
|
+
} );
|
|
357
|
+
|
|
358
|
+
await user.click( opener );
|
|
359
|
+
|
|
360
|
+
expect( opener ).toHaveFocus();
|
|
361
|
+
} );
|
|
362
|
+
} );
|
|
132
363
|
} );
|
package/src/modal/types.ts
CHANGED
|
@@ -68,7 +68,9 @@ export type ModalProps = {
|
|
|
68
68
|
*
|
|
69
69
|
* @default true
|
|
70
70
|
*/
|
|
71
|
-
focusOnMount?:
|
|
71
|
+
focusOnMount?:
|
|
72
|
+
| Parameters< typeof useFocusOnMount >[ 0 ]
|
|
73
|
+
| 'firstContentElement';
|
|
72
74
|
/**
|
|
73
75
|
* Elements that are injected into the modal header to the left of the close button (if rendered).
|
|
74
76
|
* Hidden if `__experimentalHideHeader` is `true`.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { useState } from '@wordpress/element';
|
|
5
5
|
|
|
6
6
|
export function useNavigationTreeNodes<
|
|
7
|
-
TNode extends { children?: React.ReactNode; [ key: string ]: unknown }
|
|
7
|
+
TNode extends { children?: React.ReactNode; [ key: string ]: unknown },
|
|
8
8
|
>() {
|
|
9
9
|
const [ nodes, setNodes ] = useState<
|
|
10
10
|
Record< string, Omit< TNode, 'children' > >
|
package/src/notice/index.tsx
CHANGED
|
@@ -16,8 +16,8 @@ import { close } from '@wordpress/icons';
|
|
|
16
16
|
*/
|
|
17
17
|
import Button from '../button';
|
|
18
18
|
import type { NoticeAction, NoticeProps } from './types';
|
|
19
|
-
import type { SyntheticEvent } from 'react';
|
|
20
19
|
import type { DeprecatedButtonProps } from '../button/types';
|
|
20
|
+
import { VisuallyHidden } from '../visually-hidden';
|
|
21
21
|
|
|
22
22
|
const noop = () => {};
|
|
23
23
|
|
|
@@ -45,10 +45,23 @@ function getDefaultPoliteness( status: NoticeProps[ 'status' ] ) {
|
|
|
45
45
|
case 'warning':
|
|
46
46
|
case 'info':
|
|
47
47
|
return 'polite';
|
|
48
|
+
// The default will also catch the 'error' status.
|
|
49
|
+
default:
|
|
50
|
+
return 'assertive';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
48
53
|
|
|
54
|
+
function getStatusLabel( status: NoticeProps[ 'status' ] ) {
|
|
55
|
+
switch ( status ) {
|
|
56
|
+
case 'warning':
|
|
57
|
+
return __( 'Warning notice' );
|
|
58
|
+
case 'info':
|
|
59
|
+
return __( 'Information notice' );
|
|
49
60
|
case 'error':
|
|
61
|
+
return __( 'Error notice' );
|
|
62
|
+
// The default will also catch the 'success' status.
|
|
50
63
|
default:
|
|
51
|
-
return '
|
|
64
|
+
return __( 'Notice' );
|
|
52
65
|
}
|
|
53
66
|
}
|
|
54
67
|
|
|
@@ -93,14 +106,14 @@ function Notice( {
|
|
|
93
106
|
children = <RawHTML>{ children }</RawHTML>;
|
|
94
107
|
}
|
|
95
108
|
|
|
96
|
-
const onDismissNotice = (
|
|
97
|
-
event?.preventDefault?.();
|
|
109
|
+
const onDismissNotice = () => {
|
|
98
110
|
onDismiss();
|
|
99
111
|
onRemove();
|
|
100
112
|
};
|
|
101
113
|
|
|
102
114
|
return (
|
|
103
115
|
<div className={ classes }>
|
|
116
|
+
<VisuallyHidden>{ getStatusLabel( status ) }</VisuallyHidden>
|
|
104
117
|
<div className="components-notice__content">
|
|
105
118
|
{ children }
|
|
106
119
|
<div className="components-notice__actions">
|
|
@@ -154,9 +167,8 @@ function Notice( {
|
|
|
154
167
|
<Button
|
|
155
168
|
className="components-notice__dismiss"
|
|
156
169
|
icon={ close }
|
|
157
|
-
label={ __( '
|
|
170
|
+
label={ __( 'Close' ) }
|
|
158
171
|
onClick={ onDismissNotice }
|
|
159
|
-
showTooltip={ false }
|
|
160
172
|
/>
|
|
161
173
|
) }
|
|
162
174
|
</div>
|
package/src/notice/style.scss
CHANGED
|
@@ -5,6 +5,14 @@ exports[`Notice should match snapshot 1`] = `
|
|
|
5
5
|
<div
|
|
6
6
|
class="components-notice is-success is-dismissible"
|
|
7
7
|
>
|
|
8
|
+
<div
|
|
9
|
+
class="components-visually-hidden emotion-0 emotion-1"
|
|
10
|
+
data-wp-c16t="true"
|
|
11
|
+
data-wp-component="VisuallyHidden"
|
|
12
|
+
style="border: 0px; clip: rect(1px, 1px, 1px, 1px); clip-path: inset( 50% ); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; width: 1px; word-wrap: normal;"
|
|
13
|
+
>
|
|
14
|
+
Notice
|
|
15
|
+
</div>
|
|
8
16
|
<div
|
|
9
17
|
class="components-notice__content"
|
|
10
18
|
>
|
|
@@ -33,7 +41,7 @@ exports[`Notice should match snapshot 1`] = `
|
|
|
33
41
|
</div>
|
|
34
42
|
</div>
|
|
35
43
|
<button
|
|
36
|
-
aria-label="
|
|
44
|
+
aria-label="Close"
|
|
37
45
|
class="components-button components-notice__dismiss has-icon"
|
|
38
46
|
type="button"
|
|
39
47
|
>
|
|
@@ -41,7 +41,8 @@ export const NameInputControl = styled( InputControl )`
|
|
|
41
41
|
`;
|
|
42
42
|
|
|
43
43
|
export const PaletteItem = styled( View )`
|
|
44
|
-
padding: 3px
|
|
44
|
+
padding-block: 3px;
|
|
45
|
+
padding-inline-start: ${ space( 3 ) };
|
|
45
46
|
border: 1px solid ${ CONFIG.surfaceBorderColor };
|
|
46
47
|
border-bottom-color: transparent;
|
|
47
48
|
&:first-of-type {
|
|
@@ -8,6 +8,8 @@ import classnames from 'classnames';
|
|
|
8
8
|
*/
|
|
9
9
|
import { useResizeObserver } from '@wordpress/compose';
|
|
10
10
|
import { SVG, Path } from '@wordpress/primitives';
|
|
11
|
+
import { useEffect } from '@wordpress/element';
|
|
12
|
+
import { speak } from '@wordpress/a11y';
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* Internal dependencies
|
|
@@ -72,9 +74,17 @@ export function Placeholder(
|
|
|
72
74
|
modifierClassNames,
|
|
73
75
|
withIllustration ? 'has-illustration' : null
|
|
74
76
|
);
|
|
77
|
+
|
|
75
78
|
const fieldsetClasses = classnames( 'components-placeholder__fieldset', {
|
|
76
79
|
'is-column-layout': isColumnLayout,
|
|
77
80
|
} );
|
|
81
|
+
|
|
82
|
+
useEffect( () => {
|
|
83
|
+
if ( instructions ) {
|
|
84
|
+
speak( instructions );
|
|
85
|
+
}
|
|
86
|
+
}, [ instructions ] );
|
|
87
|
+
|
|
78
88
|
return (
|
|
79
89
|
<div { ...additionalProps } className={ classes }>
|
|
80
90
|
{ withIllustration ? PlaceholderIllustration : null }
|
|
@@ -89,14 +99,12 @@ export function Placeholder(
|
|
|
89
99
|
<Icon icon={ icon } />
|
|
90
100
|
{ label }
|
|
91
101
|
</div>
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
{ children }
|
|
99
|
-
</fieldset>
|
|
102
|
+
{ !! instructions && (
|
|
103
|
+
<div className="components-placeholder__instructions">
|
|
104
|
+
{ instructions }
|
|
105
|
+
</div>
|
|
106
|
+
) }
|
|
107
|
+
<div className={ fieldsetClasses }>{ children }</div>
|
|
100
108
|
</div>
|
|
101
109
|
);
|
|
102
110
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
box-sizing: border-box;
|
|
4
4
|
position: relative;
|
|
5
5
|
padding: 1em;
|
|
6
|
-
min-height: 200px;
|
|
7
6
|
width: 100%;
|
|
8
7
|
text-align: left;
|
|
9
8
|
margin: 0;
|
|
@@ -17,7 +16,7 @@
|
|
|
17
16
|
@supports (position: sticky) {
|
|
18
17
|
display: flex;
|
|
19
18
|
flex-direction: column;
|
|
20
|
-
justify-content:
|
|
19
|
+
justify-content: top;
|
|
21
20
|
align-items: flex-start;
|
|
22
21
|
}
|
|
23
22
|
|
|
@@ -73,18 +72,6 @@
|
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
// Overrides for browser and editor fieldset styles.
|
|
77
|
-
.components-placeholder__fieldset.components-placeholder__fieldset {
|
|
78
|
-
border: none;
|
|
79
|
-
padding: 0;
|
|
80
|
-
|
|
81
|
-
.components-placeholder__instructions {
|
|
82
|
-
padding: 0;
|
|
83
|
-
font-weight: normal;
|
|
84
|
-
font-size: 1em;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
75
|
.components-placeholder__fieldset.is-column-layout,
|
|
89
76
|
.components-placeholder__fieldset.is-column-layout form {
|
|
90
77
|
flex-direction: column;
|
|
@@ -180,7 +167,6 @@
|
|
|
180
167
|
color: inherit;
|
|
181
168
|
display: flex;
|
|
182
169
|
box-shadow: none;
|
|
183
|
-
min-width: 100px;
|
|
184
170
|
|
|
185
171
|
// Blur the background so layered dashed placeholders are still visually separate.
|
|
186
172
|
// Make the background transparent to not interfere with the background overlay in placeholder-style() pseudo element
|
|
@@ -225,7 +211,7 @@
|
|
|
225
211
|
|
|
226
212
|
// By painting the borders here, we enable them to be replaced by the Border control.
|
|
227
213
|
@include placeholder-style();
|
|
228
|
-
overflow:
|
|
214
|
+
overflow: auto;
|
|
229
215
|
}
|
|
230
216
|
|
|
231
217
|
// Position the spinner.
|