@wordpress/components 28.1.0 → 28.3.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 +179 -120
- package/build/animation/index.js.map +1 -1
- package/build/autocomplete/autocompleter-ui.js +1 -0
- package/build/autocomplete/autocompleter-ui.js.map +1 -1
- package/build/autocomplete/index.js.map +1 -1
- package/build/base-control/index.js +14 -7
- package/build/base-control/index.js.map +1 -1
- package/build/border-box-control/border-box-control-visualizer/component.js +0 -4
- package/build/border-box-control/border-box-control-visualizer/component.js.map +1 -1
- package/build/button/index.js +5 -3
- package/build/button/index.js.map +1 -1
- package/build/button/types.js.map +1 -1
- package/build/combobox-control/index.js +4 -1
- package/build/combobox-control/index.js.map +1 -1
- package/build/composite/current/index.js.map +1 -1
- package/build/custom-select-control-v2/custom-select.js +58 -36
- package/build/custom-select-control-v2/custom-select.js.map +1 -1
- package/build/custom-select-control-v2/default-component/index.js +0 -1
- package/build/custom-select-control-v2/default-component/index.js.map +1 -1
- package/build/custom-select-control-v2/item.js +2 -0
- package/build/custom-select-control-v2/item.js.map +1 -1
- package/build/custom-select-control-v2/legacy-component/index.js +33 -15
- package/build/custom-select-control-v2/legacy-component/index.js.map +1 -1
- package/build/custom-select-control-v2/styles.js +92 -65
- package/build/custom-select-control-v2/styles.js.map +1 -1
- package/build/custom-select-control-v2/types.js.map +1 -1
- package/build/date-time/date-time/index.js +3 -1
- package/build/date-time/date-time/index.js.map +1 -1
- package/build/date-time/index.js +7 -0
- package/build/date-time/index.js.map +1 -1
- package/build/date-time/time/index.js +62 -145
- package/build/date-time/time/index.js.map +1 -1
- package/build/date-time/time-input/index.js +159 -0
- package/build/date-time/time-input/index.js.map +1 -0
- package/build/date-time/types.js.map +1 -1
- package/build/date-time/utils.js +64 -0
- package/build/date-time/utils.js.map +1 -1
- package/build/disclosure/index.js +0 -1
- package/build/disclosure/index.js.map +1 -1
- package/build/divider/component.js +0 -1
- package/build/divider/component.js.map +1 -1
- package/build/divider/types.js.map +1 -1
- package/build/drop-zone/index.js +16 -79
- package/build/drop-zone/index.js.map +1 -1
- package/build/dropdown-menu/index.js +1 -0
- package/build/dropdown-menu/index.js.map +1 -1
- package/build/dropdown-menu-v2/index.js +0 -1
- package/build/dropdown-menu-v2/index.js.map +1 -1
- package/build/dropdown-menu-v2/styles.js +15 -16
- package/build/dropdown-menu-v2/styles.js.map +1 -1
- package/build/dropdown-menu-v2/types.js.map +1 -1
- package/build/font-size-picker/font-size-picker-select.js +2 -2
- package/build/font-size-picker/font-size-picker-select.js.map +1 -1
- package/build/font-size-picker/index.js +1 -1
- package/build/font-size-picker/index.js.map +1 -1
- package/build/font-size-picker/utils.js +0 -4
- package/build/font-size-picker/utils.js.map +1 -1
- package/build/form-token-field/token.js +4 -1
- package/build/form-token-field/token.js.map +1 -1
- package/build/higher-order/with-spoken-messages/index.js +1 -2
- package/build/higher-order/with-spoken-messages/index.js.map +1 -1
- package/build/lock-unlock.js +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/menu-items-choice/types.js.map +1 -1
- package/build/palette-edit/index.js +30 -38
- package/build/palette-edit/index.js.map +1 -1
- package/build/palette-edit/types.js.map +1 -1
- package/build/popover/index.js +0 -4
- package/build/popover/index.js.map +1 -1
- package/build/popover/utils.js +0 -1
- package/build/popover/utils.js.map +1 -1
- package/build/private-apis.js +2 -4
- package/build/private-apis.js.map +1 -1
- package/build/progress-bar/styles.js +19 -13
- package/build/progress-bar/styles.js.map +1 -1
- package/build/radio-group/context.js +0 -1
- package/build/radio-group/context.js.map +1 -1
- package/build/radio-group/index.js +0 -1
- package/build/radio-group/index.js.map +1 -1
- package/build/radio-group/radio.js +0 -1
- package/build/radio-group/radio.js.map +1 -1
- package/build/range-control/index.js +4 -1
- package/build/range-control/index.js.map +1 -1
- package/build/range-control/styles/range-control-styles.js +34 -28
- package/build/range-control/styles/range-control-styles.js.map +1 -1
- package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
- package/build/select-control/index.js +1 -2
- package/build/select-control/index.js.map +1 -1
- package/build/select-control/styles/select-control-styles.js +13 -8
- package/build/select-control/styles/select-control-styles.js.map +1 -1
- package/build/tab-panel/index.js +0 -1
- package/build/tab-panel/index.js.map +1 -1
- package/build/tabs/index.js +0 -1
- package/build/tabs/index.js.map +1 -1
- package/build/tabs/styles.js +3 -5
- package/build/tabs/styles.js.map +1 -1
- package/build/tabs/tablist.js +148 -37
- package/build/tabs/tablist.js.map +1 -1
- package/build/tabs/types.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js +0 -2
- 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 +0 -2
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-base/component.js +0 -4
- package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build/toolbar/toolbar/toolbar-container.js +0 -1
- package/build/toolbar/toolbar/toolbar-container.js.map +1 -1
- package/build/toolbar/toolbar/types.js.map +1 -1
- package/build/toolbar/toolbar-button/index.js +27 -19
- package/build/toolbar/toolbar-button/index.js.map +1 -1
- package/build/toolbar/toolbar-button/types.js.map +1 -1
- package/build/toolbar/toolbar-context/index.js +0 -1
- package/build/toolbar/toolbar-context/index.js.map +1 -1
- package/build/toolbar/toolbar-item/index.js +1 -1
- package/build/toolbar/toolbar-item/index.js.map +1 -1
- package/build/tooltip/index.js +3 -2
- package/build/tooltip/index.js.map +1 -1
- package/build/tooltip/types.js.map +1 -1
- package/build/unit-control/index.js +3 -3
- 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/hooks/use-update-effect.js +4 -1
- package/build/utils/hooks/use-update-effect.js.map +1 -1
- package/build-module/animation/index.js +0 -1
- package/build-module/animation/index.js.map +1 -1
- package/build-module/autocomplete/autocompleter-ui.js +1 -0
- package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
- package/build-module/autocomplete/index.js.map +1 -1
- package/build-module/base-control/index.js +13 -6
- package/build-module/base-control/index.js.map +1 -1
- package/build-module/border-box-control/border-box-control-visualizer/component.js +0 -4
- package/build-module/border-box-control/border-box-control-visualizer/component.js.map +1 -1
- package/build-module/button/index.js +5 -3
- package/build-module/button/index.js.map +1 -1
- package/build-module/button/types.js.map +1 -1
- package/build-module/combobox-control/index.js +4 -1
- package/build-module/combobox-control/index.js.map +1 -1
- package/build-module/composite/current/index.js +0 -3
- package/build-module/composite/current/index.js.map +1 -1
- package/build-module/custom-select-control-v2/custom-select.js +59 -38
- package/build-module/custom-select-control-v2/custom-select.js.map +1 -1
- package/build-module/custom-select-control-v2/default-component/index.js +0 -1
- package/build-module/custom-select-control-v2/default-component/index.js.map +1 -1
- package/build-module/custom-select-control-v2/item.js +2 -0
- package/build-module/custom-select-control-v2/item.js.map +1 -1
- package/build-module/custom-select-control-v2/legacy-component/index.js +33 -16
- package/build-module/custom-select-control-v2/legacy-component/index.js.map +1 -1
- package/build-module/custom-select-control-v2/styles.js +90 -63
- package/build-module/custom-select-control-v2/styles.js.map +1 -1
- package/build-module/custom-select-control-v2/types.js.map +1 -1
- package/build-module/date-time/date-time/index.js +4 -1
- package/build-module/date-time/date-time/index.js.map +1 -1
- package/build-module/date-time/index.js +2 -1
- package/build-module/date-time/index.js.map +1 -1
- package/build-module/date-time/time/index.js +65 -149
- package/build-module/date-time/time/index.js.map +1 -1
- package/build-module/date-time/time-input/index.js +151 -0
- package/build-module/date-time/time-input/index.js.map +1 -0
- package/build-module/date-time/types.js.map +1 -1
- package/build-module/date-time/utils.js +61 -0
- package/build-module/date-time/utils.js.map +1 -1
- package/build-module/disclosure/index.js +0 -1
- package/build-module/disclosure/index.js.map +1 -1
- package/build-module/divider/component.js +0 -1
- package/build-module/divider/component.js.map +1 -1
- package/build-module/divider/types.js.map +1 -1
- package/build-module/drop-zone/index.js +17 -80
- package/build-module/drop-zone/index.js.map +1 -1
- package/build-module/dropdown-menu/index.js +1 -0
- package/build-module/dropdown-menu/index.js.map +1 -1
- package/build-module/dropdown-menu-v2/index.js +0 -1
- package/build-module/dropdown-menu-v2/index.js.map +1 -1
- package/build-module/dropdown-menu-v2/styles.js +14 -15
- package/build-module/dropdown-menu-v2/styles.js.map +1 -1
- package/build-module/dropdown-menu-v2/types.js.map +1 -1
- package/build-module/font-size-picker/font-size-picker-select.js +1 -1
- package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
- package/build-module/font-size-picker/index.js +1 -1
- package/build-module/font-size-picker/index.js.map +1 -1
- package/build-module/font-size-picker/utils.js +0 -4
- package/build-module/font-size-picker/utils.js.map +1 -1
- package/build-module/form-token-field/token.js +4 -1
- package/build-module/form-token-field/token.js.map +1 -1
- package/build-module/higher-order/with-spoken-messages/index.js +1 -2
- package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
- package/build-module/lock-unlock.js +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/menu-items-choice/types.js.map +1 -1
- package/build-module/palette-edit/index.js +31 -39
- package/build-module/palette-edit/index.js.map +1 -1
- package/build-module/palette-edit/types.js.map +1 -1
- package/build-module/popover/index.js +0 -3
- package/build-module/popover/index.js.map +1 -1
- package/build-module/popover/utils.js +0 -1
- package/build-module/popover/utils.js.map +1 -1
- package/build-module/private-apis.js +2 -4
- package/build-module/private-apis.js.map +1 -1
- package/build-module/progress-bar/styles.js +21 -13
- package/build-module/progress-bar/styles.js.map +1 -1
- package/build-module/radio-group/context.js +0 -1
- package/build-module/radio-group/context.js.map +1 -1
- package/build-module/radio-group/index.js +0 -1
- package/build-module/radio-group/index.js.map +1 -1
- package/build-module/radio-group/radio.js +0 -1
- package/build-module/radio-group/radio.js.map +1 -1
- package/build-module/range-control/index.js +4 -1
- package/build-module/range-control/index.js.map +1 -1
- package/build-module/range-control/styles/range-control-styles.js +34 -28
- package/build-module/range-control/styles/range-control-styles.js.map +1 -1
- package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
- package/build-module/select-control/index.js +2 -3
- package/build-module/select-control/index.js.map +1 -1
- package/build-module/select-control/styles/select-control-styles.js +12 -7
- package/build-module/select-control/styles/select-control-styles.js.map +1 -1
- package/build-module/tab-panel/index.js +0 -1
- package/build-module/tab-panel/index.js.map +1 -1
- package/build-module/tabs/index.js +0 -1
- package/build-module/tabs/index.js.map +1 -1
- package/build-module/tabs/styles.js +3 -4
- package/build-module/tabs/styles.js.map +1 -1
- package/build-module/tabs/tablist.js +149 -38
- package/build-module/tabs/tablist.js.map +1 -1
- package/build-module/tabs/types.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +0 -1
- 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 +0 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +0 -2
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build-module/toolbar/toolbar/toolbar-container.js +0 -1
- package/build-module/toolbar/toolbar/toolbar-container.js.map +1 -1
- package/build-module/toolbar/toolbar/types.js.map +1 -1
- package/build-module/toolbar/toolbar-button/index.js +27 -19
- package/build-module/toolbar/toolbar-button/index.js.map +1 -1
- package/build-module/toolbar/toolbar-button/types.js.map +1 -1
- package/build-module/toolbar/toolbar-context/index.js +0 -1
- package/build-module/toolbar/toolbar-context/index.js.map +1 -1
- 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 +3 -2
- package/build-module/tooltip/index.js.map +1 -1
- package/build-module/tooltip/types.js.map +1 -1
- package/build-module/unit-control/index.js +3 -3
- 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/hooks/use-update-effect.js +4 -1
- package/build-module/utils/hooks/use-update-effect.js.map +1 -1
- package/build-style/style-rtl.css +46 -6
- package/build-style/style.css +46 -6
- package/build-types/animation/index.d.ts.map +1 -1
- package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
- package/build-types/autocomplete/index.d.ts.map +1 -1
- package/build-types/base-control/index.d.ts +6 -20
- package/build-types/base-control/index.d.ts.map +1 -1
- package/build-types/base-control/stories/index.story.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-visualizer/component.d.ts.map +1 -1
- package/build-types/button/deprecated.d.ts +4 -4
- package/build-types/button/index.d.ts.map +1 -1
- package/build-types/button/stories/e2e/index.story.d.ts.map +1 -1
- package/build-types/button/types.d.ts +27 -10
- package/build-types/button/types.d.ts.map +1 -1
- package/build-types/combobox-control/index.d.ts.map +1 -1
- package/build-types/composite/current/index.d.ts.map +1 -1
- package/build-types/custom-select-control/stories/index.story.d.ts +15 -0
- package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/custom-select.d.ts +2 -2
- package/build-types/custom-select-control-v2/custom-select.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/default-component/index.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/item.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/legacy-component/index.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/stories/default.story.d.ts +6 -3
- package/build-types/custom-select-control-v2/stories/default.story.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/styles.d.ts +18 -22
- package/build-types/custom-select-control-v2/styles.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/types.d.ts +13 -2
- package/build-types/custom-select-control-v2/types.d.ts.map +1 -1
- package/build-types/date-time/date-time/index.d.ts.map +1 -1
- package/build-types/date-time/index.d.ts +2 -1
- package/build-types/date-time/index.d.ts.map +1 -1
- package/build-types/date-time/stories/time-input.story.d.ts +12 -0
- package/build-types/date-time/stories/time-input.story.d.ts.map +1 -0
- package/build-types/date-time/time/index.d.ts +1 -1
- package/build-types/date-time/time/index.d.ts.map +1 -1
- package/build-types/date-time/time-input/index.d.ts +5 -0
- package/build-types/date-time/time-input/index.d.ts.map +1 -0
- package/build-types/date-time/time-input/test/index.d.ts +2 -0
- package/build-types/date-time/time-input/test/index.d.ts.map +1 -0
- package/build-types/date-time/types.d.ts +54 -0
- package/build-types/date-time/types.d.ts.map +1 -1
- package/build-types/date-time/utils.d.ts +40 -0
- package/build-types/date-time/utils.d.ts.map +1 -1
- package/build-types/disclosure/index.d.ts.map +1 -1
- package/build-types/divider/component.d.ts.map +1 -1
- package/build-types/divider/types.d.ts.map +1 -1
- package/build-types/drop-zone/index.d.ts +3 -0
- package/build-types/drop-zone/index.d.ts.map +1 -1
- package/build-types/dropdown-menu/index.d.ts.map +1 -1
- package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
- package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
- package/build-types/dropdown-menu-v2/types.d.ts.map +1 -1
- package/build-types/font-size-picker/styles.d.ts +1 -1
- package/build-types/font-size-picker/utils.d.ts.map +1 -1
- package/build-types/form-token-field/token.d.ts.map +1 -1
- package/build-types/higher-order/with-spoken-messages/index.d.ts +1 -2
- package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -1
- package/build-types/menu-items-choice/types.d.ts +1 -1
- package/build-types/menu-items-choice/types.d.ts.map +1 -1
- package/build-types/navigator/navigator-back-button/component.d.ts +1 -1
- package/build-types/navigator/navigator-back-button/hook.d.ts +1 -1
- package/build-types/navigator/navigator-button/component.d.ts +1 -1
- package/build-types/navigator/navigator-button/hook.d.ts +1 -1
- package/build-types/navigator/navigator-to-parent-button/component.d.ts +1 -1
- package/build-types/palette-edit/index.d.ts.map +1 -1
- package/build-types/palette-edit/types.d.ts +1 -3
- package/build-types/palette-edit/types.d.ts.map +1 -1
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/popover/utils.d.ts.map +1 -1
- package/build-types/private-apis.d.ts.map +1 -1
- package/build-types/progress-bar/styles.d.ts.map +1 -1
- package/build-types/radio-group/context.d.ts.map +1 -1
- package/build-types/radio-group/index.d.ts.map +1 -1
- package/build-types/radio-group/radio.d.ts.map +1 -1
- package/build-types/range-control/index.d.ts.map +1 -1
- package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
- package/build-types/resizable-box/resize-tooltip/utils.d.ts +2 -2
- package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
- package/build-types/select-control/index.d.ts.map +1 -1
- package/build-types/select-control/styles/select-control-styles.d.ts +5 -0
- package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
- package/build-types/tab-panel/index.d.ts.map +1 -1
- package/build-types/tabs/index.d.ts.map +1 -1
- package/build-types/tabs/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/styles.d.ts.map +1 -1
- package/build-types/tabs/tablist.d.ts.map +1 -1
- package/build-types/tabs/types.d.ts.map +1 -1
- package/build-types/theme/stories/index.story.d.ts.map +1 -1
- 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.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
- package/build-types/toolbar/toolbar/toolbar-container.d.ts.map +1 -1
- package/build-types/toolbar/toolbar/types.d.ts +6 -0
- package/build-types/toolbar/toolbar/types.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-button/index.d.ts +3 -96
- package/build-types/toolbar/toolbar-button/index.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-button/types.d.ts +18 -0
- package/build-types/toolbar/toolbar-button/types.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-context/index.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-item/index.d.ts +1 -3
- package/build-types/toolbar/toolbar-item/index.d.ts.map +1 -1
- package/build-types/tooltip/index.d.ts.map +1 -1
- package/build-types/tooltip/types.d.ts +4 -0
- package/build-types/tooltip/types.d.ts.map +1 -1
- package/build-types/unit-control/index.d.ts.map +1 -1
- package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
- package/build-types/utils/hooks/use-update-effect.d.ts +1 -1
- package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
- package/package.json +19 -19
- package/src/animation/index.tsx +0 -1
- package/src/autocomplete/autocompleter-ui.tsx +1 -0
- package/src/autocomplete/index.tsx +0 -1
- package/src/base-control/index.tsx +16 -6
- package/src/base-control/stories/index.story.tsx +0 -1
- package/src/border-box-control/border-box-control-visualizer/component.tsx +0 -5
- package/src/button/README.md +13 -0
- package/src/button/index.tsx +6 -4
- package/src/button/stories/e2e/index.story.tsx +2 -1
- package/src/button/test/index.tsx +17 -2
- package/src/button/types.ts +27 -10
- package/src/combobox-control/index.tsx +2 -0
- package/src/composite/current/index.ts +0 -2
- package/src/custom-select-control/stories/index.story.tsx +32 -3
- package/src/custom-select-control/test/index.js +247 -28
- package/src/custom-select-control-v2/custom-select.tsx +58 -23
- package/src/custom-select-control-v2/default-component/index.tsx +0 -1
- package/src/custom-select-control-v2/item.tsx +5 -1
- package/src/custom-select-control-v2/legacy-component/index.tsx +45 -16
- package/src/custom-select-control-v2/legacy-component/test/index.tsx +261 -43
- package/src/custom-select-control-v2/styles.ts +156 -74
- package/src/custom-select-control-v2/test/index.tsx +35 -5
- package/src/custom-select-control-v2/types.ts +19 -6
- package/src/date-time/README.md +8 -0
- package/src/date-time/date-time/index.tsx +2 -1
- package/src/date-time/index.ts +2 -1
- package/src/date-time/stories/time-input.story.tsx +36 -0
- package/src/date-time/time/index.tsx +77 -194
- package/src/date-time/time/test/index.tsx +61 -0
- package/src/date-time/time-input/index.tsx +196 -0
- package/src/date-time/time-input/test/index.tsx +171 -0
- package/src/date-time/types.ts +63 -0
- package/src/date-time/utils.ts +69 -0
- package/src/dimension-control/test/__snapshots__/index.test.js.snap +116 -96
- package/src/disclosure/index.tsx +0 -1
- package/src/divider/component.tsx +0 -1
- package/src/divider/types.ts +0 -1
- package/src/drop-zone/index.tsx +17 -76
- package/src/drop-zone/style.scss +51 -16
- package/src/dropdown-menu/index.tsx +1 -0
- package/src/dropdown-menu-v2/index.tsx +0 -1
- package/src/dropdown-menu-v2/styles.ts +0 -1
- package/src/dropdown-menu-v2/types.ts +0 -1
- package/src/font-size-picker/font-size-picker-select.tsx +1 -1
- package/src/font-size-picker/index.tsx +1 -1
- package/src/font-size-picker/test/index.tsx +6 -6
- package/src/font-size-picker/utils.ts +0 -5
- package/src/form-token-field/token.tsx +2 -0
- package/src/higher-order/navigate-regions/style.scss +25 -13
- package/src/higher-order/with-spoken-messages/index.tsx +1 -2
- package/src/lock-unlock.js +1 -1
- package/src/menu-items-choice/types.ts +2 -1
- package/src/palette-edit/index.tsx +33 -45
- package/src/palette-edit/test/index.tsx +3 -4
- package/src/palette-edit/types.ts +1 -3
- package/src/popover/index.tsx +0 -2
- package/src/popover/utils.ts +0 -1
- package/src/private-apis.ts +2 -5
- package/src/progress-bar/styles.ts +18 -9
- package/src/radio-group/context.tsx +0 -1
- package/src/radio-group/index.tsx +0 -1
- package/src/radio-group/radio.tsx +0 -1
- package/src/range-control/index.tsx +2 -0
- package/src/range-control/styles/range-control-styles.ts +6 -2
- package/src/resizable-box/resize-tooltip/utils.ts +1 -1
- package/src/select-control/index.tsx +3 -4
- package/src/select-control/styles/select-control-styles.ts +17 -6
- package/src/tab-panel/index.tsx +0 -1
- package/src/tabs/index.tsx +0 -1
- package/src/tabs/stories/index.story.tsx +25 -18
- package/src/tabs/styles.ts +18 -14
- package/src/tabs/tablist.tsx +187 -43
- package/src/tabs/types.ts +0 -1
- package/src/theme/stories/index.story.tsx +2 -0
- package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +0 -1
- package/src/toggle-group-control/toggle-group-control/component.tsx +0 -2
- package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +0 -2
- package/src/toolbar/toolbar/README.md +9 -0
- package/src/toolbar/toolbar/style.scss +7 -0
- package/src/toolbar/toolbar/toolbar-container.tsx +0 -1
- package/src/toolbar/toolbar/types.ts +6 -0
- package/src/toolbar/toolbar-button/index.tsx +30 -17
- package/src/toolbar/toolbar-button/types.ts +19 -0
- package/src/toolbar/toolbar-context/index.ts +0 -1
- package/src/toolbar/toolbar-item/index.tsx +1 -1
- package/src/tooltip/index.tsx +3 -2
- package/src/tooltip/test/index.tsx +18 -0
- package/src/tooltip/types.ts +4 -0
- package/src/unit-control/index.tsx +3 -2
- package/src/unit-control/styles/unit-control-styles.ts +10 -4
- package/src/utils/hooks/use-update-effect.js +8 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -14,7 +14,11 @@ import { useState } from '@wordpress/element';
|
|
|
14
14
|
*/
|
|
15
15
|
import UncontrolledCustomSelectControl from '..';
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const customClassName = 'amber-skies';
|
|
18
|
+
const customStyles = {
|
|
19
|
+
backgroundColor: 'rgb(127, 255, 212)',
|
|
20
|
+
rotate: '13deg',
|
|
21
|
+
};
|
|
18
22
|
|
|
19
23
|
const legacyProps = {
|
|
20
24
|
label: 'label!',
|
|
@@ -26,7 +30,7 @@ const legacyProps = {
|
|
|
26
30
|
{
|
|
27
31
|
key: 'flower2',
|
|
28
32
|
name: 'crimson clover',
|
|
29
|
-
className:
|
|
33
|
+
className: customClassName,
|
|
30
34
|
},
|
|
31
35
|
{
|
|
32
36
|
key: 'flower3',
|
|
@@ -35,33 +39,43 @@ const legacyProps = {
|
|
|
35
39
|
{
|
|
36
40
|
key: 'color1',
|
|
37
41
|
name: 'amber',
|
|
38
|
-
className:
|
|
42
|
+
className: customClassName,
|
|
39
43
|
},
|
|
40
44
|
{
|
|
41
45
|
key: 'color2',
|
|
42
46
|
name: 'aquamarine',
|
|
43
|
-
style:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
style: customStyles,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: 'color3',
|
|
51
|
+
name: 'tomato (with custom props)',
|
|
52
|
+
className: customClassName,
|
|
53
|
+
style: customStyles,
|
|
54
|
+
// try passing a valid HTML attribute
|
|
55
|
+
'aria-label': 'test label',
|
|
56
|
+
// try adding a custom prop
|
|
57
|
+
customPropFoo: 'foo',
|
|
47
58
|
},
|
|
48
59
|
],
|
|
49
60
|
};
|
|
50
61
|
|
|
51
62
|
const ControlledCustomSelectControl = ( {
|
|
52
63
|
options,
|
|
53
|
-
onChange,
|
|
64
|
+
onChange: onChangeProp,
|
|
54
65
|
...restProps
|
|
55
66
|
}: React.ComponentProps< typeof UncontrolledCustomSelectControl > ) => {
|
|
56
|
-
const [ value, setValue ] = useState( options[ 0 ] );
|
|
67
|
+
const [ value, setValue ] = useState( restProps.value ?? options[ 0 ] );
|
|
68
|
+
|
|
69
|
+
const onChange: typeof onChangeProp = ( changeObject ) => {
|
|
70
|
+
onChangeProp?.( changeObject );
|
|
71
|
+
setValue( changeObject.selectedItem );
|
|
72
|
+
};
|
|
73
|
+
|
|
57
74
|
return (
|
|
58
75
|
<UncontrolledCustomSelectControl
|
|
59
76
|
{ ...restProps }
|
|
60
77
|
options={ options }
|
|
61
|
-
onChange={
|
|
62
|
-
onChange?.( args );
|
|
63
|
-
setValue( args.selectedItem );
|
|
64
|
-
} }
|
|
78
|
+
onChange={ onChange }
|
|
65
79
|
value={ options.find(
|
|
66
80
|
( option: any ) => option.key === value.key
|
|
67
81
|
) }
|
|
@@ -69,12 +83,87 @@ const ControlledCustomSelectControl = ( {
|
|
|
69
83
|
);
|
|
70
84
|
};
|
|
71
85
|
|
|
86
|
+
it( 'Should apply external controlled updates', async () => {
|
|
87
|
+
const mockOnChange = jest.fn();
|
|
88
|
+
const { rerender } = render(
|
|
89
|
+
<UncontrolledCustomSelectControl
|
|
90
|
+
{ ...legacyProps }
|
|
91
|
+
value={ legacyProps.options[ 0 ] }
|
|
92
|
+
onChange={ mockOnChange }
|
|
93
|
+
/>
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
const currentSelectedItem = screen.getByRole( 'combobox', {
|
|
97
|
+
expanded: false,
|
|
98
|
+
} );
|
|
99
|
+
|
|
100
|
+
expect( currentSelectedItem ).toHaveTextContent(
|
|
101
|
+
legacyProps.options[ 0 ].name
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
expect( mockOnChange ).not.toHaveBeenCalled();
|
|
105
|
+
|
|
106
|
+
rerender(
|
|
107
|
+
<UncontrolledCustomSelectControl
|
|
108
|
+
{ ...legacyProps }
|
|
109
|
+
value={ legacyProps.options[ 1 ] }
|
|
110
|
+
/>
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
expect( currentSelectedItem ).toHaveTextContent(
|
|
114
|
+
legacyProps.options[ 1 ].name
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
// Necessary to wait for onChange to potentially fire
|
|
118
|
+
await sleep();
|
|
119
|
+
|
|
120
|
+
expect( mockOnChange ).not.toHaveBeenCalled();
|
|
121
|
+
} );
|
|
122
|
+
|
|
72
123
|
describe.each( [
|
|
73
124
|
[ 'Uncontrolled', UncontrolledCustomSelectControl ],
|
|
74
125
|
[ 'Controlled', ControlledCustomSelectControl ],
|
|
75
126
|
] )( 'CustomSelectControl (%s)', ( ...modeAndComponent ) => {
|
|
76
127
|
const [ , Component ] = modeAndComponent;
|
|
77
128
|
|
|
129
|
+
it( 'Should select the first option when no explicit initial value is passed without firing onChange', async () => {
|
|
130
|
+
const mockOnChange = jest.fn();
|
|
131
|
+
render( <Component { ...legacyProps } onChange={ mockOnChange } /> );
|
|
132
|
+
|
|
133
|
+
expect(
|
|
134
|
+
screen.getByRole( 'combobox', {
|
|
135
|
+
expanded: false,
|
|
136
|
+
} )
|
|
137
|
+
).toHaveTextContent( legacyProps.options[ 0 ].name );
|
|
138
|
+
|
|
139
|
+
// Necessary to wait for onChange to potentially fire
|
|
140
|
+
await sleep();
|
|
141
|
+
|
|
142
|
+
expect( mockOnChange ).not.toHaveBeenCalled();
|
|
143
|
+
} );
|
|
144
|
+
|
|
145
|
+
it( 'Should pick the initially selected option if the value prop is passed without firing onChange', async () => {
|
|
146
|
+
const mockOnChange = jest.fn();
|
|
147
|
+
render(
|
|
148
|
+
<Component
|
|
149
|
+
{ ...legacyProps }
|
|
150
|
+
onChange={ mockOnChange }
|
|
151
|
+
value={ legacyProps.options[ 3 ] }
|
|
152
|
+
/>
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
expect(
|
|
156
|
+
screen.getByRole( 'combobox', {
|
|
157
|
+
expanded: false,
|
|
158
|
+
} )
|
|
159
|
+
).toHaveTextContent( legacyProps.options[ 3 ].name );
|
|
160
|
+
|
|
161
|
+
// Necessary to wait for onChange to potentially fire
|
|
162
|
+
await sleep();
|
|
163
|
+
|
|
164
|
+
expect( mockOnChange ).not.toHaveBeenCalled();
|
|
165
|
+
} );
|
|
166
|
+
|
|
78
167
|
it( 'Should replace the initial selection when a new item is selected', async () => {
|
|
79
168
|
render( <Component { ...legacyProps } /> );
|
|
80
169
|
|
|
@@ -115,14 +204,14 @@ describe.each( [
|
|
|
115
204
|
await press.Enter();
|
|
116
205
|
expect(
|
|
117
206
|
screen.getByRole( 'listbox', {
|
|
118
|
-
name:
|
|
207
|
+
name: legacyProps.label,
|
|
119
208
|
} )
|
|
120
209
|
).toBeVisible();
|
|
121
210
|
|
|
122
211
|
await press.Escape();
|
|
123
212
|
expect(
|
|
124
213
|
screen.queryByRole( 'listbox', {
|
|
125
|
-
name:
|
|
214
|
+
name: legacyProps.label,
|
|
126
215
|
} )
|
|
127
216
|
).not.toBeInTheDocument();
|
|
128
217
|
|
|
@@ -148,7 +237,7 @@ describe.each( [
|
|
|
148
237
|
// assert against filtered array
|
|
149
238
|
itemsWithClass.map( ( { name } ) =>
|
|
150
239
|
expect( screen.getByRole( 'option', { name } ) ).toHaveClass(
|
|
151
|
-
|
|
240
|
+
customClassName
|
|
152
241
|
)
|
|
153
242
|
);
|
|
154
243
|
|
|
@@ -160,15 +249,12 @@ describe.each( [
|
|
|
160
249
|
// assert against filtered array
|
|
161
250
|
itemsWithoutClass.map( ( { name } ) =>
|
|
162
251
|
expect( screen.getByRole( 'option', { name } ) ).not.toHaveClass(
|
|
163
|
-
|
|
252
|
+
customClassName
|
|
164
253
|
)
|
|
165
254
|
);
|
|
166
255
|
} );
|
|
167
256
|
|
|
168
257
|
it( 'Should apply styles only to options that have styles defined', async () => {
|
|
169
|
-
const customStyles =
|
|
170
|
-
'background-color: rgb(127, 255, 212); rotate: 13deg;';
|
|
171
|
-
|
|
172
258
|
render( <Component { ...legacyProps } /> );
|
|
173
259
|
|
|
174
260
|
await click(
|
|
@@ -244,7 +330,7 @@ describe.each( [
|
|
|
244
330
|
screen.getByRole( 'combobox', {
|
|
245
331
|
expanded: false,
|
|
246
332
|
} )
|
|
247
|
-
).toHaveTextContent(
|
|
333
|
+
).toHaveTextContent( 'Hint' )
|
|
248
334
|
);
|
|
249
335
|
} );
|
|
250
336
|
|
|
@@ -281,39 +367,27 @@ describe.each( [
|
|
|
281
367
|
} )
|
|
282
368
|
);
|
|
283
369
|
|
|
284
|
-
expect( mockOnChange ).toHaveBeenNthCalledWith(
|
|
285
|
-
1,
|
|
286
|
-
expect.objectContaining( {
|
|
287
|
-
inputValue: '',
|
|
288
|
-
isOpen: false,
|
|
289
|
-
selectedItem: { key: 'violets', name: 'violets' },
|
|
290
|
-
type: '',
|
|
291
|
-
} )
|
|
292
|
-
);
|
|
293
|
-
|
|
294
370
|
await click(
|
|
295
371
|
screen.getByRole( 'option', {
|
|
296
372
|
name: 'aquamarine',
|
|
297
373
|
} )
|
|
298
374
|
);
|
|
299
375
|
|
|
300
|
-
expect( mockOnChange ).
|
|
301
|
-
|
|
376
|
+
expect( mockOnChange ).toHaveBeenCalledTimes( 1 );
|
|
377
|
+
expect( mockOnChange ).toHaveBeenLastCalledWith(
|
|
302
378
|
expect.objectContaining( {
|
|
303
379
|
inputValue: '',
|
|
304
380
|
isOpen: false,
|
|
305
381
|
selectedItem: expect.objectContaining( {
|
|
306
382
|
name: 'aquamarine',
|
|
307
383
|
} ),
|
|
308
|
-
type:
|
|
384
|
+
type: expect.any( String ),
|
|
309
385
|
} )
|
|
310
386
|
);
|
|
311
387
|
} );
|
|
312
388
|
|
|
313
389
|
it( 'Should return selectedItem object when specified onChange', async () => {
|
|
314
|
-
const mockOnChange = jest.fn(
|
|
315
|
-
( { selectedItem } ) => selectedItem.key
|
|
316
|
-
);
|
|
390
|
+
const mockOnChange = jest.fn();
|
|
317
391
|
|
|
318
392
|
render( <Component { ...legacyProps } onChange={ mockOnChange } /> );
|
|
319
393
|
|
|
@@ -328,10 +402,94 @@ describe.each( [
|
|
|
328
402
|
await type( 'p' );
|
|
329
403
|
await press.Enter();
|
|
330
404
|
|
|
331
|
-
expect( mockOnChange ).
|
|
405
|
+
expect( mockOnChange ).toHaveBeenCalledTimes( 1 );
|
|
406
|
+
expect( mockOnChange ).toHaveBeenLastCalledWith(
|
|
407
|
+
expect.objectContaining( {
|
|
408
|
+
selectedItem: expect.objectContaining( {
|
|
409
|
+
key: 'flower3',
|
|
410
|
+
name: 'poppy',
|
|
411
|
+
} ),
|
|
412
|
+
} )
|
|
413
|
+
);
|
|
414
|
+
} );
|
|
415
|
+
|
|
416
|
+
it( "Should pass arbitrary props to onChange's selectedItem, but apply only style and className to DOM elements", async () => {
|
|
417
|
+
const onChangeMock = jest.fn();
|
|
418
|
+
|
|
419
|
+
render( <Component { ...legacyProps } onChange={ onChangeMock } /> );
|
|
420
|
+
|
|
421
|
+
const currentSelectedItem = screen.getByRole( 'combobox', {
|
|
422
|
+
expanded: false,
|
|
423
|
+
} );
|
|
424
|
+
|
|
425
|
+
await click( currentSelectedItem );
|
|
426
|
+
|
|
427
|
+
const optionWithCustomAttributes = screen.getByRole( 'option', {
|
|
428
|
+
name: 'tomato (with custom props)',
|
|
429
|
+
} );
|
|
430
|
+
|
|
431
|
+
// Assert that the option element does not have the custom attributes
|
|
432
|
+
expect( optionWithCustomAttributes ).not.toHaveAttribute(
|
|
433
|
+
'customPropFoo'
|
|
434
|
+
);
|
|
435
|
+
expect( optionWithCustomAttributes ).not.toHaveAttribute(
|
|
436
|
+
'aria-label'
|
|
437
|
+
);
|
|
438
|
+
|
|
439
|
+
await click( optionWithCustomAttributes );
|
|
440
|
+
|
|
441
|
+
expect( onChangeMock ).toHaveBeenCalledTimes( 1 );
|
|
442
|
+
expect( onChangeMock ).toHaveBeenCalledWith(
|
|
443
|
+
expect.objectContaining( {
|
|
444
|
+
selectedItem: expect.objectContaining( {
|
|
445
|
+
key: 'color3',
|
|
446
|
+
name: 'tomato (with custom props)',
|
|
447
|
+
className: customClassName,
|
|
448
|
+
style: customStyles,
|
|
449
|
+
'aria-label': 'test label',
|
|
450
|
+
customPropFoo: 'foo',
|
|
451
|
+
} ),
|
|
452
|
+
} )
|
|
453
|
+
);
|
|
454
|
+
} );
|
|
455
|
+
|
|
456
|
+
it( 'Should label the component correctly even when the label is not visible', () => {
|
|
457
|
+
render( <Component { ...legacyProps } hideLabelFromVision /> );
|
|
458
|
+
|
|
459
|
+
expect(
|
|
460
|
+
screen.getByRole( 'combobox', {
|
|
461
|
+
name: legacyProps.label,
|
|
462
|
+
} )
|
|
463
|
+
).toBeVisible();
|
|
332
464
|
} );
|
|
333
465
|
|
|
334
466
|
describe( 'Keyboard behavior and accessibility', () => {
|
|
467
|
+
it( 'Captures the keypress event and does not let it propagate', async () => {
|
|
468
|
+
const onKeyDown = jest.fn();
|
|
469
|
+
|
|
470
|
+
render(
|
|
471
|
+
<div
|
|
472
|
+
// This role="none" is required to prevent an eslint warning about accessibility.
|
|
473
|
+
role="none"
|
|
474
|
+
onKeyDown={ onKeyDown }
|
|
475
|
+
>
|
|
476
|
+
<Component { ...legacyProps } />
|
|
477
|
+
</div>
|
|
478
|
+
);
|
|
479
|
+
const currentSelectedItem = screen.getByRole( 'combobox', {
|
|
480
|
+
expanded: false,
|
|
481
|
+
} );
|
|
482
|
+
await click( currentSelectedItem );
|
|
483
|
+
|
|
484
|
+
const customSelect = screen.getByRole( 'listbox', {
|
|
485
|
+
name: legacyProps.label,
|
|
486
|
+
} );
|
|
487
|
+
expect( customSelect ).toHaveFocus();
|
|
488
|
+
await press.Enter();
|
|
489
|
+
|
|
490
|
+
expect( onKeyDown ).toHaveBeenCalledTimes( 0 );
|
|
491
|
+
} );
|
|
492
|
+
|
|
335
493
|
it( 'Should be able to change selection using keyboard', async () => {
|
|
336
494
|
render( <Component { ...legacyProps } /> );
|
|
337
495
|
|
|
@@ -346,14 +504,16 @@ describe.each( [
|
|
|
346
504
|
await press.Enter();
|
|
347
505
|
expect(
|
|
348
506
|
screen.getByRole( 'listbox', {
|
|
349
|
-
name:
|
|
507
|
+
name: legacyProps.label,
|
|
350
508
|
} )
|
|
351
509
|
).toHaveFocus();
|
|
352
510
|
|
|
353
511
|
await press.ArrowDown();
|
|
354
512
|
await press.Enter();
|
|
355
513
|
|
|
356
|
-
expect( currentSelectedItem ).toHaveTextContent(
|
|
514
|
+
expect( currentSelectedItem ).toHaveTextContent(
|
|
515
|
+
legacyProps.options[ 1 ].name
|
|
516
|
+
);
|
|
357
517
|
} );
|
|
358
518
|
|
|
359
519
|
it( 'Should be able to type characters to select matching options', async () => {
|
|
@@ -368,7 +528,7 @@ describe.each( [
|
|
|
368
528
|
await press.Enter();
|
|
369
529
|
expect(
|
|
370
530
|
screen.getByRole( 'listbox', {
|
|
371
|
-
name:
|
|
531
|
+
name: legacyProps.label,
|
|
372
532
|
} )
|
|
373
533
|
).toHaveFocus();
|
|
374
534
|
|
|
@@ -387,14 +547,16 @@ describe.each( [
|
|
|
387
547
|
await sleep();
|
|
388
548
|
await press.Tab();
|
|
389
549
|
expect( currentSelectedItem ).toHaveFocus();
|
|
390
|
-
expect( currentSelectedItem ).toHaveTextContent(
|
|
550
|
+
expect( currentSelectedItem ).toHaveTextContent(
|
|
551
|
+
legacyProps.options[ 0 ].name
|
|
552
|
+
);
|
|
391
553
|
|
|
392
554
|
// Ideally we would test a multi-character typeahead, but anything more than a single character is flaky
|
|
393
555
|
await type( 'a' );
|
|
394
556
|
|
|
395
557
|
expect(
|
|
396
558
|
screen.queryByRole( 'listbox', {
|
|
397
|
-
name:
|
|
559
|
+
name: legacyProps.label,
|
|
398
560
|
hidden: true,
|
|
399
561
|
} )
|
|
400
562
|
).not.toBeInTheDocument();
|
|
@@ -405,6 +567,33 @@ describe.each( [
|
|
|
405
567
|
expect( currentSelectedItem ).toHaveTextContent( 'amber' );
|
|
406
568
|
} );
|
|
407
569
|
|
|
570
|
+
it( 'Can change selection with a focused input and closed dropdown while pressing arrow keys', async () => {
|
|
571
|
+
render( <Component { ...legacyProps } /> );
|
|
572
|
+
|
|
573
|
+
const currentSelectedItem = screen.getByRole( 'combobox', {
|
|
574
|
+
expanded: false,
|
|
575
|
+
} );
|
|
576
|
+
|
|
577
|
+
await sleep();
|
|
578
|
+
await press.Tab();
|
|
579
|
+
expect( currentSelectedItem ).toHaveFocus();
|
|
580
|
+
expect( currentSelectedItem ).toHaveTextContent(
|
|
581
|
+
legacyProps.options[ 0 ].name
|
|
582
|
+
);
|
|
583
|
+
|
|
584
|
+
await press.ArrowDown();
|
|
585
|
+
await press.ArrowDown();
|
|
586
|
+
expect(
|
|
587
|
+
screen.queryByRole( 'listbox', {
|
|
588
|
+
name: legacyProps.label,
|
|
589
|
+
} )
|
|
590
|
+
).not.toBeInTheDocument();
|
|
591
|
+
|
|
592
|
+
expect( currentSelectedItem ).toHaveTextContent(
|
|
593
|
+
legacyProps.options[ 2 ].name
|
|
594
|
+
);
|
|
595
|
+
} );
|
|
596
|
+
|
|
408
597
|
it( 'Should have correct aria-selected value for selections', async () => {
|
|
409
598
|
render( <Component { ...legacyProps } /> );
|
|
410
599
|
|
|
@@ -456,5 +645,34 @@ describe.each( [
|
|
|
456
645
|
} )
|
|
457
646
|
).toBeVisible();
|
|
458
647
|
} );
|
|
648
|
+
|
|
649
|
+
it( 'Should call custom event handlers', async () => {
|
|
650
|
+
const onFocusMock = jest.fn();
|
|
651
|
+
const onBlurMock = jest.fn();
|
|
652
|
+
|
|
653
|
+
render(
|
|
654
|
+
<>
|
|
655
|
+
<Component
|
|
656
|
+
{ ...legacyProps }
|
|
657
|
+
onFocus={ onFocusMock }
|
|
658
|
+
onBlur={ onBlurMock }
|
|
659
|
+
/>
|
|
660
|
+
<button>Focus stop</button>
|
|
661
|
+
</>
|
|
662
|
+
);
|
|
663
|
+
|
|
664
|
+
const currentSelectedItem = screen.getByRole( 'combobox', {
|
|
665
|
+
expanded: false,
|
|
666
|
+
} );
|
|
667
|
+
|
|
668
|
+
await press.Tab();
|
|
669
|
+
|
|
670
|
+
expect( currentSelectedItem ).toHaveFocus();
|
|
671
|
+
expect( onFocusMock ).toHaveBeenCalledTimes( 1 );
|
|
672
|
+
|
|
673
|
+
await press.Tab();
|
|
674
|
+
expect( currentSelectedItem ).not.toHaveFocus();
|
|
675
|
+
expect( onBlurMock ).toHaveBeenCalledTimes( 1 );
|
|
676
|
+
} );
|
|
459
677
|
} );
|
|
460
678
|
} );
|