@wordpress/components 28.10.0 → 28.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -0
- package/build/autocomplete/autocompleter-ui.js +2 -6
- package/build/autocomplete/autocompleter-ui.js.map +1 -1
- package/build/autocomplete/autocompleter-ui.native.js +2 -4
- package/build/autocomplete/autocompleter-ui.native.js.map +1 -1
- package/build/autocomplete/index.js +4 -5
- package/build/autocomplete/index.js.map +1 -1
- package/build/base-control/types.js.map +1 -1
- package/build/border-box-control/border-box-control/component.js +1 -0
- package/build/border-box-control/border-box-control/component.js.map +1 -1
- package/build/border-box-control/border-box-control/hook.js +6 -0
- package/build/border-box-control/border-box-control/hook.js.map +1 -1
- package/build/border-control/border-control/component.js +1 -0
- package/build/border-control/border-control/component.js.map +1 -1
- package/build/border-control/border-control/hook.js +6 -0
- package/build/border-control/border-control/hook.js.map +1 -1
- package/build/border-control/border-control-dropdown/component.js +13 -13
- package/build/border-control/border-control-dropdown/component.js.map +1 -1
- package/build/color-palette/index.js +1 -1
- package/build/color-palette/index.js.map +1 -1
- package/build/color-palette/index.native.js +1 -2
- package/build/color-palette/index.native.js.map +1 -1
- package/build/color-picker/index.native.js +0 -1
- package/build/color-picker/index.native.js.map +1 -1
- package/build/composite/legacy/index.js +5 -2
- package/build/composite/legacy/index.js.map +1 -1
- package/build/custom-gradient-picker/gradient-bar/control-points.js +1 -1
- package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
- package/build/date-time/date/index.js +0 -1
- package/build/date-time/date/index.js.map +1 -1
- package/build/font-size-picker/index.native.js +6 -6
- package/build/font-size-picker/index.native.js.map +1 -1
- package/build/form-file-upload/index.js +5 -1
- package/build/form-file-upload/index.js.map +1 -1
- package/build/form-token-field/index.js +0 -3
- package/build/form-token-field/index.js.map +1 -1
- package/build/form-token-field/suggestions-list.js +7 -3
- package/build/form-token-field/suggestions-list.js.map +1 -1
- package/build/form-token-field/token.js +1 -0
- package/build/form-token-field/token.js.map +1 -1
- package/build/guide/page-control.js +1 -0
- package/build/guide/page-control.js.map +1 -1
- package/build/{dropdown-menu-v2 → menu}/checkbox-item.js +8 -8
- package/build/menu/checkbox-item.js.map +1 -0
- package/build/{dropdown-menu-v2 → menu}/context.js +2 -2
- package/build/menu/context.js.map +1 -0
- package/build/{dropdown-menu-v2 → menu}/group-label.js +5 -5
- package/build/menu/group-label.js.map +1 -0
- package/build/{dropdown-menu-v2 → menu}/group.js +5 -5
- package/build/menu/group.js.map +1 -0
- package/build/{dropdown-menu-v2 → menu}/index.js +38 -38
- package/build/menu/index.js.map +1 -0
- package/build/{dropdown-menu-v2 → menu}/item-help-text.js +3 -3
- package/build/menu/item-help-text.js.map +1 -0
- package/build/{dropdown-menu-v2 → menu}/item-label.js +3 -3
- package/build/menu/item-label.js.map +1 -0
- package/build/{dropdown-menu-v2 → menu}/item.js +7 -7
- package/build/menu/item.js.map +1 -0
- package/build/{dropdown-menu-v2 → menu}/radio-item.js +8 -8
- package/build/menu/radio-item.js.map +1 -0
- package/build/{dropdown-menu-v2 → menu}/separator.js +6 -6
- package/build/menu/separator.js.map +1 -0
- package/build/menu/styles.js +150 -0
- package/build/menu/styles.js.map +1 -0
- package/build/menu/types.js.map +1 -0
- package/build/menu/use-temporary-focus-visible-fix.js.map +1 -0
- package/build/menu-item/index.js +1 -0
- package/build/menu-item/index.js.map +1 -1
- package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
- package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
- package/build/mobile/bottom-sheet/range-cell.native.js +1 -1
- package/build/mobile/bottom-sheet/range-cell.native.js.map +1 -1
- package/build/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
- package/build/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
- package/build/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
- package/build/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
- package/build/mobile/bottom-sheet-select-control/index.native.js +2 -2
- package/build/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
- package/build/mobile/color-settings/index.native.js +1 -3
- package/build/mobile/color-settings/index.native.js.map +1 -1
- package/build/mobile/color-settings/picker-screen.native.js +1 -3
- package/build/mobile/color-settings/picker-screen.native.js.map +1 -1
- package/build/mobile/image/index.native.js +1 -3
- package/build/mobile/image/index.native.js.map +1 -1
- package/build/mobile/keyboard-avoiding-view/index.ios.js +1 -3
- package/build/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
- package/build/mobile/link-picker/link-picker-results.native.js +2 -5
- package/build/mobile/link-picker/link-picker-results.native.js.map +1 -1
- package/build/mobile/link-picker/link-picker-screen.native.js +1 -3
- package/build/mobile/link-picker/link-picker-screen.native.js.map +1 -1
- package/build/mobile/link-settings/index.native.js +6 -18
- package/build/mobile/link-settings/index.native.js.map +1 -1
- package/build/mobile/link-settings/link-settings-screen.native.js +1 -3
- package/build/mobile/link-settings/link-settings-screen.native.js.map +1 -1
- package/build/mobile/segmented-control/index.native.js +2 -6
- package/build/mobile/segmented-control/index.native.js.map +1 -1
- package/build/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
- package/build/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
- package/build/navigation/index.js +1 -2
- package/build/navigation/index.js.map +1 -1
- package/build/navigation/item/use-navigation-tree-item.js +2 -2
- package/build/navigation/item/use-navigation-tree-item.js.map +1 -1
- package/build/navigation/menu/menu-title-search.js +2 -2
- package/build/navigation/menu/menu-title-search.js.map +1 -1
- package/build/navigation/menu/use-navigation-tree-menu.js +2 -2
- package/build/navigation/menu/use-navigation-tree-menu.js.map +1 -1
- package/build/notice/index.js +2 -0
- package/build/notice/index.js.map +1 -1
- package/build/palette-edit/index.js +9 -2
- package/build/palette-edit/index.js.map +1 -1
- package/build/palette-edit/styles.js +13 -28
- package/build/palette-edit/styles.js.map +1 -1
- package/build/panel/body.js +1 -0
- package/build/panel/body.js.map +1 -1
- package/build/popover/index.js +4 -1
- package/build/popover/index.js.map +1 -1
- package/build/private-apis.js +4 -4
- package/build/private-apis.js.map +1 -1
- package/build/radio-group/index.js +3 -1
- package/build/radio-group/index.js.map +1 -1
- package/build/radio-group/radio.js +6 -0
- package/build/radio-group/radio.js.map +1 -1
- package/build/radio-group/types.js.map +1 -1
- package/build/sandbox/index.js +3 -6
- package/build/sandbox/index.js.map +1 -1
- package/build/sandbox/index.native.js +1 -3
- package/build/sandbox/index.native.js.map +1 -1
- package/build/search-control/index.native.js +1 -3
- package/build/search-control/index.native.js.map +1 -1
- package/build/slot-fill/bubbles-virtually/slot.js +1 -2
- package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
- package/build/slot-fill/fill.js +3 -6
- package/build/slot-fill/fill.js.map +1 -1
- package/build/snackbar/index.js +2 -1
- package/build/snackbar/index.js.map +1 -1
- package/build/spacer/hook.js +5 -3
- package/build/spacer/hook.js.map +1 -1
- package/build/tab-panel/index.js +4 -1
- package/build/tab-panel/index.js.map +1 -1
- package/build/tabs/index.js +48 -113
- package/build/tabs/index.js.map +1 -1
- package/build/tabs/styles.js +12 -12
- package/build/tabs/styles.js.map +1 -1
- package/build/tabs/tab.js +23 -6
- package/build/tabs/tab.js.map +1 -1
- package/build/tabs/tablist.js +37 -14
- package/build/tabs/tablist.js.map +1 -1
- package/build/tabs/types.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/component.js +3 -2
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toolbar/toolbar/index.js +3 -0
- package/build/toolbar/toolbar/index.js.map +1 -1
- package/build/tools-panel/tools-panel-header/component.js +1 -1
- package/build/tools-panel/tools-panel-header/component.js.map +1 -1
- package/build/tools-panel/tools-panel-item/hook.js +0 -2
- package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
- package/build/tooltip/index.native.js +5 -15
- package/build/tooltip/index.native.js.map +1 -1
- package/build/unit-control/index.native.js +2 -6
- package/build/unit-control/index.native.js.map +1 -1
- package/build/utils/deprecated-36px-size.js +27 -0
- package/build/utils/deprecated-36px-size.js.map +1 -0
- package/build/utils/element-rect.js +13 -2
- package/build/utils/element-rect.js.map +1 -1
- package/build/utils/hooks/use-animated-offset-rect.js +3 -2
- package/build/utils/hooks/use-animated-offset-rect.js.map +1 -1
- package/build/utils/hooks/use-update-effect.js +0 -2
- package/build/utils/hooks/use-update-effect.js.map +1 -1
- package/build-module/autocomplete/autocompleter-ui.js +2 -6
- package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
- package/build-module/autocomplete/autocompleter-ui.native.js +2 -4
- package/build-module/autocomplete/autocompleter-ui.native.js.map +1 -1
- package/build-module/autocomplete/index.js +4 -5
- package/build-module/autocomplete/index.js.map +1 -1
- package/build-module/base-control/types.js.map +1 -1
- package/build-module/border-box-control/border-box-control/component.js +1 -0
- package/build-module/border-box-control/border-box-control/component.js.map +1 -1
- package/build-module/border-box-control/border-box-control/hook.js +6 -0
- package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
- package/build-module/border-control/border-control/component.js +1 -0
- package/build-module/border-control/border-control/component.js.map +1 -1
- package/build-module/border-control/border-control/hook.js +7 -0
- package/build-module/border-control/border-control/hook.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/component.js +13 -13
- package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
- package/build-module/color-palette/index.js +1 -1
- package/build-module/color-palette/index.js.map +1 -1
- package/build-module/color-palette/index.native.js +1 -2
- package/build-module/color-palette/index.native.js.map +1 -1
- package/build-module/color-picker/index.native.js +0 -1
- package/build-module/color-picker/index.native.js.map +1 -1
- package/build-module/composite/legacy/index.js +5 -2
- package/build-module/composite/legacy/index.js.map +1 -1
- package/build-module/custom-gradient-picker/gradient-bar/control-points.js +1 -1
- package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
- package/build-module/date-time/date/index.js +0 -1
- package/build-module/date-time/date/index.js.map +1 -1
- package/build-module/font-size-picker/index.native.js +7 -7
- package/build-module/font-size-picker/index.native.js.map +1 -1
- package/build-module/form-file-upload/index.js +5 -1
- package/build-module/form-file-upload/index.js.map +1 -1
- package/build-module/form-token-field/index.js +0 -3
- package/build-module/form-token-field/index.js.map +1 -1
- package/build-module/form-token-field/suggestions-list.js +7 -3
- package/build-module/form-token-field/suggestions-list.js.map +1 -1
- package/build-module/form-token-field/token.js +1 -0
- package/build-module/form-token-field/token.js.map +1 -1
- package/build-module/guide/page-control.js +1 -0
- package/build-module/guide/page-control.js.map +1 -1
- package/build-module/{dropdown-menu-v2 → menu}/checkbox-item.js +8 -8
- package/build-module/menu/checkbox-item.js.map +1 -0
- package/build-module/{dropdown-menu-v2 → menu}/context.js +1 -1
- package/build-module/menu/context.js.map +1 -0
- package/build-module/{dropdown-menu-v2 → menu}/group-label.js +5 -5
- package/build-module/menu/group-label.js.map +1 -0
- package/build-module/menu/group.js +21 -0
- package/build-module/menu/group.js.map +1 -0
- package/build-module/{dropdown-menu-v2 → menu}/index.js +46 -46
- package/build-module/menu/index.js.map +1 -0
- package/build-module/{dropdown-menu-v2 → menu}/item-help-text.js +2 -2
- package/build-module/menu/item-help-text.js.map +1 -0
- package/build-module/{dropdown-menu-v2 → menu}/item-label.js +2 -2
- package/build-module/menu/item-label.js.map +1 -0
- package/build-module/{dropdown-menu-v2 → menu}/item.js +7 -7
- package/build-module/menu/item.js.map +1 -0
- package/build-module/{dropdown-menu-v2 → menu}/radio-item.js +8 -8
- package/build-module/menu/radio-item.js.map +1 -0
- package/build-module/menu/separator.js +22 -0
- package/build-module/menu/separator.js.map +1 -0
- package/build-module/menu/styles.js +143 -0
- package/build-module/menu/styles.js.map +1 -0
- package/build-module/menu/types.js.map +1 -0
- package/build-module/menu/use-temporary-focus-visible-fix.js.map +1 -0
- package/build-module/menu-item/index.js +1 -0
- package/build-module/menu-item/index.js.map +1 -1
- package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
- package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/range-cell.native.js +1 -1
- package/build-module/mobile/bottom-sheet/range-cell.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
- package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
- package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet-select-control/index.native.js +2 -2
- package/build-module/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
- package/build-module/mobile/color-settings/index.native.js +1 -3
- package/build-module/mobile/color-settings/index.native.js.map +1 -1
- package/build-module/mobile/color-settings/picker-screen.native.js +1 -3
- package/build-module/mobile/color-settings/picker-screen.native.js.map +1 -1
- package/build-module/mobile/image/index.native.js +1 -3
- package/build-module/mobile/image/index.native.js.map +1 -1
- package/build-module/mobile/keyboard-avoiding-view/index.ios.js +1 -3
- package/build-module/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
- package/build-module/mobile/link-picker/link-picker-results.native.js +2 -5
- package/build-module/mobile/link-picker/link-picker-results.native.js.map +1 -1
- package/build-module/mobile/link-picker/link-picker-screen.native.js +1 -3
- package/build-module/mobile/link-picker/link-picker-screen.native.js.map +1 -1
- package/build-module/mobile/link-settings/index.native.js +6 -18
- package/build-module/mobile/link-settings/index.native.js.map +1 -1
- package/build-module/mobile/link-settings/link-settings-screen.native.js +1 -3
- package/build-module/mobile/link-settings/link-settings-screen.native.js.map +1 -1
- package/build-module/mobile/segmented-control/index.native.js +2 -6
- package/build-module/mobile/segmented-control/index.native.js.map +1 -1
- package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
- package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
- package/build-module/navigation/index.js +1 -2
- package/build-module/navigation/index.js.map +1 -1
- package/build-module/navigation/item/use-navigation-tree-item.js +2 -2
- package/build-module/navigation/item/use-navigation-tree-item.js.map +1 -1
- package/build-module/navigation/menu/menu-title-search.js +2 -2
- package/build-module/navigation/menu/menu-title-search.js.map +1 -1
- package/build-module/navigation/menu/use-navigation-tree-menu.js +2 -2
- package/build-module/navigation/menu/use-navigation-tree-menu.js.map +1 -1
- package/build-module/notice/index.js +2 -0
- package/build-module/notice/index.js.map +1 -1
- package/build-module/palette-edit/index.js +11 -4
- package/build-module/palette-edit/index.js.map +1 -1
- package/build-module/palette-edit/styles.js +13 -29
- package/build-module/palette-edit/styles.js.map +1 -1
- package/build-module/panel/body.js +1 -0
- package/build-module/panel/body.js.map +1 -1
- package/build-module/popover/index.js +4 -1
- package/build-module/popover/index.js.map +1 -1
- package/build-module/private-apis.js +3 -3
- package/build-module/private-apis.js.map +1 -1
- package/build-module/radio-group/index.js +3 -1
- package/build-module/radio-group/index.js.map +1 -1
- package/build-module/radio-group/radio.js +6 -0
- package/build-module/radio-group/radio.js.map +1 -1
- package/build-module/radio-group/types.js.map +1 -1
- package/build-module/sandbox/index.js +3 -6
- package/build-module/sandbox/index.js.map +1 -1
- package/build-module/sandbox/index.native.js +1 -3
- package/build-module/sandbox/index.native.js.map +1 -1
- package/build-module/search-control/index.native.js +1 -3
- package/build-module/search-control/index.native.js.map +1 -1
- package/build-module/slot-fill/bubbles-virtually/slot.js +1 -2
- package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
- package/build-module/slot-fill/fill.js +3 -6
- package/build-module/slot-fill/fill.js.map +1 -1
- package/build-module/snackbar/index.js +2 -1
- package/build-module/snackbar/index.js.map +1 -1
- package/build-module/spacer/hook.js +5 -3
- package/build-module/spacer/hook.js.map +1 -1
- package/build-module/tab-panel/index.js +4 -1
- package/build-module/tab-panel/index.js.map +1 -1
- package/build-module/tabs/index.js +47 -112
- package/build-module/tabs/index.js.map +1 -1
- package/build-module/tabs/styles.js +11 -11
- package/build-module/tabs/styles.js.map +1 -1
- package/build-module/tabs/tab.js +21 -6
- package/build-module/tabs/tab.js.map +1 -1
- package/build-module/tabs/tablist.js +37 -14
- 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/component.js +3 -2
- package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build-module/toolbar/toolbar/index.js +3 -0
- package/build-module/toolbar/toolbar/index.js.map +1 -1
- package/build-module/tools-panel/tools-panel-header/component.js +1 -1
- package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
- package/build-module/tools-panel/tools-panel-item/hook.js +0 -2
- package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
- package/build-module/tooltip/index.native.js +5 -15
- package/build-module/tooltip/index.native.js.map +1 -1
- package/build-module/unit-control/index.native.js +2 -6
- package/build-module/unit-control/index.native.js.map +1 -1
- package/build-module/utils/deprecated-36px-size.js +19 -0
- package/build-module/utils/deprecated-36px-size.js.map +1 -0
- package/build-module/utils/element-rect.js +13 -2
- package/build-module/utils/element-rect.js.map +1 -1
- package/build-module/utils/hooks/use-animated-offset-rect.js +3 -2
- package/build-module/utils/hooks/use-animated-offset-rect.js.map +1 -1
- package/build-module/utils/hooks/use-update-effect.js +0 -2
- package/build-module/utils/hooks/use-update-effect.js.map +1 -1
- package/build-style/style-rtl.css +21 -35
- package/build-style/style.css +21 -35
- package/build-types/animate/stories/index.story.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/stories/index.story.d.ts.map +1 -1
- package/build-types/base-control/types.d.ts +3 -0
- package/build-types/base-control/types.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control/component.d.ts +1 -0
- package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
- package/build-types/border-control/border-control/component.d.ts +1 -0
- package/build-types/border-control/border-control/component.d.ts.map +1 -1
- package/build-types/border-control/border-control/hook.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
- package/build-types/border-control/stories/index.story.d.ts.map +1 -1
- package/build-types/button/stories/index.story.d.ts.map +1 -1
- package/build-types/card/stories/index.story.d.ts.map +1 -1
- package/build-types/composite/legacy/index.d.ts.map +1 -1
- package/build-types/composite/stories/index.story.d.ts.map +1 -1
- package/build-types/confirm-dialog/stories/index.story.d.ts.map +1 -1
- package/build-types/date-time/date/index.d.ts.map +1 -1
- package/build-types/disabled/stories/index.story.d.ts.map +1 -1
- package/build-types/draggable/stories/index.story.d.ts.map +1 -1
- package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
- package/build-types/external-link/stories/index.story.d.ts.map +1 -1
- package/build-types/form-file-upload/index.d.ts.map +1 -1
- package/build-types/form-token-field/index.d.ts.map +1 -1
- package/build-types/form-token-field/suggestions-list.d.ts.map +1 -1
- package/build-types/form-token-field/token.d.ts.map +1 -1
- package/build-types/guide/page-control.d.ts.map +1 -1
- package/build-types/heading/stories/index.story.d.ts.map +1 -1
- package/build-types/item-group/stories/index.story.d.ts +1 -1
- package/build-types/item-group/stories/index.story.d.ts.map +1 -1
- package/build-types/keyboard-shortcuts/stories/index.story.d.ts.map +1 -1
- package/build-types/lock-unlock.d.ts +2 -2
- package/build-types/menu/checkbox-item.d.ts +3 -0
- package/build-types/menu/checkbox-item.d.ts.map +1 -0
- package/build-types/menu/context.d.ts +6 -0
- package/build-types/menu/context.d.ts.map +1 -0
- package/build-types/menu/group-label.d.ts +3 -0
- package/build-types/menu/group-label.d.ts.map +1 -0
- package/build-types/menu/group.d.ts +3 -0
- package/build-types/menu/group.d.ts.map +1 -0
- package/build-types/menu/index.d.ts +40 -0
- package/build-types/menu/index.d.ts.map +1 -0
- package/build-types/{dropdown-menu-v2 → menu}/item-help-text.d.ts +1 -1
- package/build-types/menu/item-help-text.d.ts.map +1 -0
- package/build-types/{dropdown-menu-v2 → menu}/item-label.d.ts +1 -1
- package/build-types/menu/item-label.d.ts.map +1 -0
- package/build-types/menu/item.d.ts +3 -0
- package/build-types/menu/item.d.ts.map +1 -0
- package/build-types/menu/radio-item.d.ts +3 -0
- package/build-types/menu/radio-item.d.ts.map +1 -0
- package/build-types/menu/separator.d.ts +3 -0
- package/build-types/menu/separator.d.ts.map +1 -0
- package/build-types/menu/stories/index.story.d.ts +16 -0
- package/build-types/menu/stories/index.story.d.ts.map +1 -0
- package/build-types/{dropdown-menu-v2 → menu}/styles.d.ts +13 -13
- package/build-types/menu/styles.d.ts.map +1 -0
- package/build-types/menu/test/index.d.ts.map +1 -0
- package/build-types/{dropdown-menu-v2 → menu}/types.d.ts +22 -21
- package/build-types/menu/types.d.ts.map +1 -0
- package/build-types/menu/use-temporary-focus-visible-fix.d.ts.map +1 -0
- package/build-types/menu-item/index.d.ts.map +1 -1
- package/build-types/modal/stories/index.story.d.ts.map +1 -1
- package/build-types/navigable-container/stories/navigable-menu.story.d.ts.map +1 -1
- package/build-types/navigable-container/stories/tabbable-container.story.d.ts.map +1 -1
- package/build-types/navigation/index.d.ts.map +1 -1
- package/build-types/navigator/stories/index.story.d.ts.map +1 -1
- package/build-types/notice/index.d.ts.map +1 -1
- package/build-types/notice/stories/index.story.d.ts.map +1 -1
- package/build-types/palette-edit/index.d.ts.map +1 -1
- package/build-types/palette-edit/styles.d.ts +0 -256
- package/build-types/palette-edit/styles.d.ts.map +1 -1
- package/build-types/panel/body.d.ts.map +1 -1
- package/build-types/panel/stories/index.story.d.ts.map +1 -1
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/popover/stories/index.story.d.ts.map +1 -1
- package/build-types/progress-bar/stories/index.story.d.ts.map +1 -1
- package/build-types/radio-group/index.d.ts.map +1 -1
- package/build-types/radio-group/radio.d.ts +4 -2
- package/build-types/radio-group/radio.d.ts.map +1 -1
- package/build-types/radio-group/stories/index.story.d.ts.map +1 -1
- package/build-types/radio-group/types.d.ts +5 -1
- package/build-types/radio-group/types.d.ts.map +1 -1
- package/build-types/resizable-box/stories/index.story.d.ts.map +1 -1
- package/build-types/sandbox/index.d.ts.map +1 -1
- package/build-types/sandbox/stories/index.story.d.ts.map +1 -1
- package/build-types/scroll-lock/stories/index.story.d.ts.map +1 -1
- package/build-types/shortcut/stories/index.story.d.ts.map +1 -1
- package/build-types/slot-fill/bubbles-virtually/slot.d.ts.map +1 -1
- package/build-types/slot-fill/fill.d.ts.map +1 -1
- package/build-types/slot-fill/stories/index.story.d.ts.map +1 -1
- package/build-types/snackbar/index.d.ts.map +1 -1
- package/build-types/snackbar/stories/index.story.d.ts.map +1 -1
- package/build-types/snackbar/stories/list.story.d.ts.map +1 -1
- package/build-types/spacer/hook.d.ts.map +1 -1
- package/build-types/spinner/stories/index.story.d.ts.map +1 -1
- package/build-types/tab-panel/index.d.ts.map +1 -1
- package/build-types/tab-panel/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/index.d.ts +21 -8
- package/build-types/tabs/index.d.ts.map +1 -1
- package/build-types/tabs/stories/index.story.d.ts +1 -1
- package/build-types/tabs/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/styles.d.ts +6 -3
- package/build-types/tabs/styles.d.ts.map +1 -1
- package/build-types/tabs/tab.d.ts +0 -3
- package/build-types/tabs/tab.d.ts.map +1 -1
- package/build-types/tabs/tablist.d.ts.map +1 -1
- package/build-types/tabs/types.d.ts +85 -48
- package/build-types/tabs/types.d.ts.map +1 -1
- package/build-types/text/stories/index.story.d.ts.map +1 -1
- package/build-types/text-highlight/stories/index.story.d.ts.map +1 -1
- package/build-types/theme/stories/index.story.d.ts.map +1 -1
- package/build-types/tip/stories/index.story.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
- package/build-types/toolbar/toolbar/index.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
- package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
- package/build-types/tree-grid/stories/index.story.d.ts.map +1 -1
- package/build-types/truncate/stories/index.story.d.ts.map +1 -1
- package/build-types/utils/deprecated-36px-size.d.ts +6 -0
- package/build-types/utils/deprecated-36px-size.d.ts.map +1 -0
- package/build-types/utils/element-rect.d.ts +1 -1
- package/build-types/utils/element-rect.d.ts.map +1 -1
- package/build-types/utils/hooks/use-animated-offset-rect.d.ts +8 -1
- package/build-types/utils/hooks/use-animated-offset-rect.d.ts.map +1 -1
- package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
- package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -1
- package/package.json +21 -20
- package/src/alignment-matrix-control/README.md +1 -2
- package/src/angle-picker-control/README.md +1 -2
- package/src/animate/stories/index.story.tsx +2 -1
- package/src/autocomplete/autocompleter-ui.native.js +2 -4
- package/src/autocomplete/autocompleter-ui.tsx +2 -6
- package/src/autocomplete/index.tsx +4 -5
- package/src/base-control/README.md +58 -47
- package/src/base-control/docs-manifest.json +12 -0
- package/src/base-control/stories/index.story.tsx +4 -0
- package/src/base-control/types.ts +3 -0
- package/src/border-box-control/border-box-control/README.md +1 -0
- package/src/border-box-control/border-box-control/component.tsx +1 -0
- package/src/border-box-control/border-box-control/hook.ts +7 -0
- package/src/border-box-control/stories/index.story.tsx +1 -0
- package/src/border-box-control/test/index.tsx +1 -0
- package/src/border-control/border-control/README.md +1 -0
- package/src/border-control/border-control/component.tsx +1 -0
- package/src/border-control/border-control/hook.ts +7 -1
- package/src/border-control/border-control-dropdown/component.tsx +25 -13
- package/src/border-control/stories/index.story.tsx +1 -0
- package/src/border-control/test/index.js +1 -0
- package/src/button/stories/index.story.tsx +2 -1
- package/src/card/stories/index.story.tsx +2 -1
- package/src/color-palette/index.native.js +1 -2
- package/src/color-palette/index.tsx +1 -1
- package/src/color-palette/style.scss +2 -4
- package/src/color-picker/index.native.js +0 -1
- package/src/composite/legacy/index.tsx +5 -2
- package/src/composite/stories/index.story.tsx +2 -1
- package/src/confirm-dialog/stories/index.story.tsx +2 -1
- package/src/custom-gradient-picker/gradient-bar/control-points.tsx +1 -1
- package/src/date-time/date/index.tsx +0 -1
- package/src/disabled/stories/index.story.tsx +2 -1
- package/src/draggable/stories/index.story.tsx +2 -1
- package/src/dropdown/stories/index.story.tsx +2 -1
- package/src/external-link/stories/index.story.tsx +2 -1
- package/src/font-size-picker/index.native.js +7 -7
- package/src/form-file-upload/index.tsx +7 -1
- package/src/form-token-field/index.tsx +0 -3
- package/src/form-token-field/style.scss +12 -13
- package/src/form-token-field/suggestions-list.tsx +6 -0
- package/src/form-token-field/token.tsx +1 -0
- package/src/guide/page-control.tsx +1 -0
- package/src/guide/style.scss +4 -6
- package/src/heading/stories/index.story.tsx +2 -1
- package/src/item-group/stories/index.story.tsx +8 -4
- package/src/keyboard-shortcuts/stories/index.story.tsx +2 -1
- package/src/{dropdown-menu-v2 → menu}/README.md +34 -34
- package/src/{dropdown-menu-v2 → menu}/checkbox-item.tsx +14 -14
- package/src/menu/context.tsx +13 -0
- package/src/{dropdown-menu-v2 → menu}/group-label.tsx +8 -8
- package/src/menu/group.tsx +26 -0
- package/src/{dropdown-menu-v2 → menu}/index.tsx +65 -70
- package/src/{dropdown-menu-v2 → menu}/item-help-text.tsx +3 -7
- package/src/{dropdown-menu-v2 → menu}/item-label.tsx +3 -7
- package/src/{dropdown-menu-v2 → menu}/item.tsx +13 -13
- package/src/{dropdown-menu-v2 → menu}/radio-item.tsx +14 -14
- package/src/menu/separator.tsx +27 -0
- package/src/menu/stories/index.story.tsx +543 -0
- package/src/{dropdown-menu-v2 → menu}/styles.ts +17 -17
- package/src/{dropdown-menu-v2 → menu}/test/index.tsx +145 -225
- package/src/{dropdown-menu-v2 → menu}/types.ts +24 -23
- package/src/menu-item/index.tsx +1 -0
- package/src/menu-item/test/__snapshots__/index.js.snap +4 -4
- package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
- package/src/mobile/bottom-sheet/range-cell.native.js +1 -1
- package/src/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
- package/src/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
- package/src/mobile/bottom-sheet-select-control/index.native.js +2 -2
- package/src/mobile/color-settings/index.native.js +1 -3
- package/src/mobile/color-settings/picker-screen.native.js +1 -3
- package/src/mobile/image/index.native.js +1 -3
- package/src/mobile/keyboard-avoiding-view/index.ios.js +1 -3
- package/src/mobile/link-picker/link-picker-results.native.js +2 -5
- package/src/mobile/link-picker/link-picker-screen.native.js +1 -3
- package/src/mobile/link-settings/index.native.js +6 -18
- package/src/mobile/link-settings/link-settings-screen.native.js +1 -3
- package/src/mobile/segmented-control/index.native.js +2 -6
- package/src/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
- package/src/modal/stories/index.story.tsx +2 -1
- package/src/navigable-container/stories/navigable-menu.story.tsx +2 -1
- package/src/navigable-container/stories/tabbable-container.story.tsx +2 -1
- package/src/navigation/index.tsx +1 -2
- package/src/navigation/item/use-navigation-tree-item.tsx +2 -2
- package/src/navigation/menu/menu-title-search.tsx +2 -2
- package/src/navigation/menu/use-navigation-tree-menu.tsx +2 -2
- package/src/navigator/stories/index.story.tsx +2 -1
- package/src/notice/index.tsx +2 -0
- package/src/notice/stories/index.story.tsx +7 -2
- package/src/notice/test/__snapshots__/index.tsx.snap +4 -4
- package/src/palette-edit/index.tsx +9 -5
- package/src/palette-edit/styles.ts +1 -67
- package/src/panel/body.tsx +1 -0
- package/src/panel/stories/index.story.tsx +2 -1
- package/src/popover/index.tsx +3 -0
- package/src/popover/stories/index.story.tsx +2 -1
- package/src/private-apis.ts +3 -3
- package/src/progress-bar/stories/index.story.tsx +2 -1
- package/src/radio-group/README.md +8 -8
- package/src/radio-group/index.tsx +2 -0
- package/src/radio-group/radio.tsx +7 -0
- package/src/radio-group/stories/index.story.tsx +16 -4
- package/src/radio-group/types.ts +6 -1
- package/src/resizable-box/stories/index.story.tsx +2 -1
- package/src/sandbox/index.native.js +1 -3
- package/src/sandbox/index.tsx +3 -6
- package/src/sandbox/stories/index.story.tsx +2 -1
- package/src/scroll-lock/stories/index.story.tsx +2 -1
- package/src/search-control/index.native.js +1 -3
- package/src/shortcut/stories/index.story.tsx +2 -1
- package/src/slot-fill/bubbles-virtually/slot.tsx +1 -2
- package/src/slot-fill/fill.ts +3 -6
- package/src/slot-fill/stories/index.story.tsx +2 -1
- package/src/snackbar/index.tsx +2 -1
- package/src/snackbar/stories/index.story.tsx +2 -1
- package/src/snackbar/stories/list.story.tsx +2 -1
- package/src/snackbar/style.scss +7 -16
- package/src/spacer/hook.ts +3 -2
- package/src/spinner/stories/index.story.tsx +2 -1
- package/src/tab-panel/index.tsx +3 -0
- package/src/tab-panel/stories/index.story.tsx +2 -1
- package/src/tab-panel/style.scss +1 -3
- package/src/tabs/README.md +63 -21
- package/src/tabs/index.tsx +112 -189
- package/src/tabs/stories/index.story.tsx +5 -2
- package/src/tabs/styles.ts +13 -5
- package/src/tabs/tab.tsx +23 -3
- package/src/tabs/tablist.tsx +44 -17
- package/src/tabs/test/index.tsx +131 -118
- package/src/tabs/types.ts +89 -49
- package/src/text/stories/index.story.tsx +2 -1
- package/src/text-highlight/stories/index.story.tsx +2 -1
- package/src/theme/stories/index.story.tsx +2 -1
- package/src/tip/stories/index.story.tsx +2 -1
- package/src/toggle-group-control/toggle-group-control/component.tsx +2 -1
- package/src/toolbar/toolbar/index.tsx +3 -0
- package/src/tools-panel/tools-panel-header/component.tsx +1 -1
- package/src/tools-panel/tools-panel-item/hook.ts +0 -2
- package/src/tooltip/index.native.js +5 -15
- package/src/tooltip/stories/index.story.tsx +2 -1
- package/src/tree-grid/stories/index.story.tsx +2 -1
- package/src/truncate/stories/index.story.tsx +2 -1
- package/src/unit-control/index.native.js +2 -6
- package/src/utils/deprecated-36px-size.ts +27 -0
- package/src/utils/element-rect.ts +14 -2
- package/src/utils/hooks/use-animated-offset-rect.ts +13 -1
- package/src/utils/hooks/use-update-effect.js +0 -2
- package/src/visually-hidden/stories/index.story.tsx +2 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/dropdown-menu-v2/checkbox-item.js.map +0 -1
- package/build/dropdown-menu-v2/context.js.map +0 -1
- package/build/dropdown-menu-v2/group-label.js.map +0 -1
- package/build/dropdown-menu-v2/group.js.map +0 -1
- package/build/dropdown-menu-v2/index.js.map +0 -1
- package/build/dropdown-menu-v2/item-help-text.js.map +0 -1
- package/build/dropdown-menu-v2/item-label.js.map +0 -1
- package/build/dropdown-menu-v2/item.js.map +0 -1
- package/build/dropdown-menu-v2/radio-item.js.map +0 -1
- package/build/dropdown-menu-v2/separator.js.map +0 -1
- package/build/dropdown-menu-v2/styles.js +0 -150
- package/build/dropdown-menu-v2/styles.js.map +0 -1
- package/build/dropdown-menu-v2/types.js.map +0 -1
- package/build/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +0 -1
- package/build-module/dropdown-menu-v2/checkbox-item.js.map +0 -1
- package/build-module/dropdown-menu-v2/context.js.map +0 -1
- package/build-module/dropdown-menu-v2/group-label.js.map +0 -1
- package/build-module/dropdown-menu-v2/group.js +0 -21
- package/build-module/dropdown-menu-v2/group.js.map +0 -1
- package/build-module/dropdown-menu-v2/index.js.map +0 -1
- package/build-module/dropdown-menu-v2/item-help-text.js.map +0 -1
- package/build-module/dropdown-menu-v2/item-label.js.map +0 -1
- package/build-module/dropdown-menu-v2/item.js.map +0 -1
- package/build-module/dropdown-menu-v2/radio-item.js.map +0 -1
- package/build-module/dropdown-menu-v2/separator.js +0 -22
- package/build-module/dropdown-menu-v2/separator.js.map +0 -1
- package/build-module/dropdown-menu-v2/styles.js +0 -143
- package/build-module/dropdown-menu-v2/styles.js.map +0 -1
- package/build-module/dropdown-menu-v2/types.js.map +0 -1
- package/build-module/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +0 -1
- package/build-types/dropdown-menu-v2/checkbox-item.d.ts +0 -3
- package/build-types/dropdown-menu-v2/checkbox-item.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/context.d.ts +0 -6
- package/build-types/dropdown-menu-v2/context.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/group-label.d.ts +0 -3
- package/build-types/dropdown-menu-v2/group-label.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/group.d.ts +0 -3
- package/build-types/dropdown-menu-v2/group.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/index.d.ts +0 -40
- package/build-types/dropdown-menu-v2/index.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/item-help-text.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/item-label.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/item.d.ts +0 -3
- package/build-types/dropdown-menu-v2/item.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/radio-item.d.ts +0 -3
- package/build-types/dropdown-menu-v2/radio-item.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/separator.d.ts +0 -3
- package/build-types/dropdown-menu-v2/separator.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/stories/index.story.d.ts +0 -16
- package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/styles.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/test/index.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/types.d.ts.map +0 -1
- package/build-types/dropdown-menu-v2/use-temporary-focus-visible-fix.d.ts.map +0 -1
- package/src/dropdown-menu-v2/context.tsx +0 -13
- package/src/dropdown-menu-v2/group.tsx +0 -26
- package/src/dropdown-menu-v2/separator.tsx +0 -27
- package/src/dropdown-menu-v2/stories/index.story.tsx +0 -639
- /package/build/{dropdown-menu-v2 → menu}/types.js +0 -0
- /package/build/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.js +0 -0
- /package/build-module/{dropdown-menu-v2 → menu}/types.js +0 -0
- /package/build-module/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.js +0 -0
- /package/build-types/{dropdown-menu-v2 → menu}/test/index.d.ts +0 -0
- /package/build-types/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.d.ts +0 -0
- /package/src/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.ts +0 -0
|
@@ -12,34 +12,24 @@ import { useState } from '@wordpress/element';
|
|
|
12
12
|
/**
|
|
13
13
|
* Internal dependencies
|
|
14
14
|
*/
|
|
15
|
-
import {
|
|
15
|
+
import { Menu } from '..';
|
|
16
16
|
|
|
17
17
|
const delay = ( delayInMs: number ) => {
|
|
18
18
|
return new Promise( ( resolve ) => setTimeout( resolve, delayInMs ) );
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
describe( '
|
|
21
|
+
describe( 'Menu', () => {
|
|
22
22
|
// See https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/
|
|
23
23
|
it( 'should follow the WAI-ARIA spec', async () => {
|
|
24
24
|
render(
|
|
25
|
-
<
|
|
26
|
-
<
|
|
27
|
-
<
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
>
|
|
35
|
-
<DropdownMenuV2.Item>
|
|
36
|
-
Dropdown submenu item 1
|
|
37
|
-
</DropdownMenuV2.Item>
|
|
38
|
-
<DropdownMenuV2.Item>
|
|
39
|
-
Dropdown submenu item 2
|
|
40
|
-
</DropdownMenuV2.Item>
|
|
41
|
-
</DropdownMenuV2>
|
|
42
|
-
</DropdownMenuV2>
|
|
25
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
26
|
+
<Menu.Item>Menu item</Menu.Item>
|
|
27
|
+
<Menu.Separator />
|
|
28
|
+
<Menu trigger={ <Menu.Item>Submenu trigger item</Menu.Item> }>
|
|
29
|
+
<Menu.Item>Submenu item 1</Menu.Item>
|
|
30
|
+
<Menu.Item>Submenu item 2</Menu.Item>
|
|
31
|
+
</Menu>
|
|
32
|
+
</Menu>
|
|
43
33
|
);
|
|
44
34
|
|
|
45
35
|
const toggleButton = screen.getByRole( 'button', {
|
|
@@ -68,7 +58,7 @@ describe( 'DropdownMenu', () => {
|
|
|
68
58
|
expect( screen.getAllByRole( 'menuitem' ) ).toHaveLength( 2 );
|
|
69
59
|
|
|
70
60
|
const submenuTrigger = screen.getByRole( 'menuitem', {
|
|
71
|
-
name: '
|
|
61
|
+
name: 'Submenu trigger item',
|
|
72
62
|
} );
|
|
73
63
|
expect( submenuTrigger ).toHaveAttribute( 'aria-haspopup', 'menu' );
|
|
74
64
|
expect( submenuTrigger ).toHaveAttribute( 'aria-expanded', 'false' );
|
|
@@ -94,36 +84,32 @@ describe( 'DropdownMenu', () => {
|
|
|
94
84
|
describe( 'pointer and keyboard interactions', () => {
|
|
95
85
|
it( 'should open and focus the menu when clicking the trigger', async () => {
|
|
96
86
|
render(
|
|
97
|
-
<
|
|
98
|
-
<
|
|
99
|
-
|
|
100
|
-
</DropdownMenuV2.Item>
|
|
101
|
-
</DropdownMenuV2>
|
|
87
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
88
|
+
<Menu.Item>Menu item</Menu.Item>
|
|
89
|
+
</Menu>
|
|
102
90
|
);
|
|
103
91
|
|
|
104
92
|
const toggleButton = screen.getByRole( 'button', {
|
|
105
93
|
name: 'Open dropdown',
|
|
106
94
|
} );
|
|
107
95
|
|
|
108
|
-
//
|
|
96
|
+
// Menu closed
|
|
109
97
|
expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument();
|
|
110
98
|
|
|
111
99
|
// Click to open the menu
|
|
112
100
|
await click( toggleButton );
|
|
113
101
|
|
|
114
|
-
//
|
|
102
|
+
// Menu open, focus is on the menu wrapper
|
|
115
103
|
expect( screen.getByRole( 'menu' ) ).toHaveFocus();
|
|
116
104
|
} );
|
|
117
105
|
|
|
118
106
|
it( 'should open and focus the first item when pressing the arrow down key on the trigger', async () => {
|
|
119
107
|
render(
|
|
120
|
-
<
|
|
121
|
-
<
|
|
122
|
-
|
|
123
|
-
</
|
|
124
|
-
|
|
125
|
-
<DropdownMenuV2.Item>Third item</DropdownMenuV2.Item>
|
|
126
|
-
</DropdownMenuV2>
|
|
108
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
109
|
+
<Menu.Item disabled>First item</Menu.Item>
|
|
110
|
+
<Menu.Item>Second item</Menu.Item>
|
|
111
|
+
<Menu.Item>Third item</Menu.Item>
|
|
112
|
+
</Menu>
|
|
127
113
|
);
|
|
128
114
|
|
|
129
115
|
const toggleButton = screen.getByRole( 'button', {
|
|
@@ -135,12 +121,12 @@ describe( 'DropdownMenu', () => {
|
|
|
135
121
|
|
|
136
122
|
expect( toggleButton ).toHaveFocus();
|
|
137
123
|
|
|
138
|
-
//
|
|
124
|
+
// Menu closed
|
|
139
125
|
expect( screen.queryByRole( 'menuitem' ) ).not.toBeInTheDocument();
|
|
140
126
|
|
|
141
127
|
await press.ArrowDown();
|
|
142
128
|
|
|
143
|
-
//
|
|
129
|
+
// Menu open, focus is on the first focusable item
|
|
144
130
|
// (disabled items are still focusable and accessible)
|
|
145
131
|
expect(
|
|
146
132
|
screen.getByRole( 'menuitem', { name: 'First item' } )
|
|
@@ -149,13 +135,11 @@ describe( 'DropdownMenu', () => {
|
|
|
149
135
|
|
|
150
136
|
it( 'should open and focus the first item when pressing the space key on the trigger', async () => {
|
|
151
137
|
render(
|
|
152
|
-
<
|
|
153
|
-
<
|
|
154
|
-
|
|
155
|
-
</
|
|
156
|
-
|
|
157
|
-
<DropdownMenuV2.Item>Third item</DropdownMenuV2.Item>
|
|
158
|
-
</DropdownMenuV2>
|
|
138
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
139
|
+
<Menu.Item disabled>First item</Menu.Item>
|
|
140
|
+
<Menu.Item>Second item</Menu.Item>
|
|
141
|
+
<Menu.Item>Third item</Menu.Item>
|
|
142
|
+
</Menu>
|
|
159
143
|
);
|
|
160
144
|
|
|
161
145
|
const toggleButton = screen.getByRole( 'button', {
|
|
@@ -167,12 +151,12 @@ describe( 'DropdownMenu', () => {
|
|
|
167
151
|
|
|
168
152
|
expect( toggleButton ).toHaveFocus();
|
|
169
153
|
|
|
170
|
-
//
|
|
154
|
+
// Menu closed
|
|
171
155
|
expect( screen.queryByRole( 'menuitem' ) ).not.toBeInTheDocument();
|
|
172
156
|
|
|
173
157
|
await press.Space();
|
|
174
158
|
|
|
175
|
-
//
|
|
159
|
+
// Menu open, focus is on the first focusable item
|
|
176
160
|
// (disabled items are still focusable and accessible
|
|
177
161
|
expect(
|
|
178
162
|
screen.getByRole( 'menuitem', { name: 'First item' } )
|
|
@@ -181,11 +165,9 @@ describe( 'DropdownMenu', () => {
|
|
|
181
165
|
|
|
182
166
|
it( 'should close when pressing the escape key', async () => {
|
|
183
167
|
render(
|
|
184
|
-
<
|
|
185
|
-
<
|
|
186
|
-
|
|
187
|
-
</DropdownMenuV2.Item>
|
|
188
|
-
</DropdownMenuV2>
|
|
168
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
169
|
+
<Menu.Item>Menu item</Menu.Item>
|
|
170
|
+
</Menu>
|
|
189
171
|
);
|
|
190
172
|
|
|
191
173
|
const trigger = screen.getByRole( 'button', {
|
|
@@ -212,14 +194,9 @@ describe( 'DropdownMenu', () => {
|
|
|
212
194
|
|
|
213
195
|
it( 'should close when clicking outside of the content', async () => {
|
|
214
196
|
render(
|
|
215
|
-
<
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
>
|
|
219
|
-
<DropdownMenuV2.Item>
|
|
220
|
-
Dropdown menu item
|
|
221
|
-
</DropdownMenuV2.Item>
|
|
222
|
-
</DropdownMenuV2>
|
|
197
|
+
<Menu defaultOpen trigger={ <button>Open dropdown</button> }>
|
|
198
|
+
<Menu.Item>Menu item</Menu.Item>
|
|
199
|
+
</Menu>
|
|
223
200
|
);
|
|
224
201
|
|
|
225
202
|
expect( screen.getByRole( 'menu' ) ).toBeInTheDocument();
|
|
@@ -232,14 +209,9 @@ describe( 'DropdownMenu', () => {
|
|
|
232
209
|
|
|
233
210
|
it( 'should close when clicking on a menu item', async () => {
|
|
234
211
|
render(
|
|
235
|
-
<
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
>
|
|
239
|
-
<DropdownMenuV2.Item>
|
|
240
|
-
Dropdown menu item
|
|
241
|
-
</DropdownMenuV2.Item>
|
|
242
|
-
</DropdownMenuV2>
|
|
212
|
+
<Menu defaultOpen trigger={ <button>Open dropdown</button> }>
|
|
213
|
+
<Menu.Item>Menu item</Menu.Item>
|
|
214
|
+
</Menu>
|
|
243
215
|
);
|
|
244
216
|
|
|
245
217
|
expect( screen.getByRole( 'menu' ) ).toBeInTheDocument();
|
|
@@ -252,14 +224,9 @@ describe( 'DropdownMenu', () => {
|
|
|
252
224
|
|
|
253
225
|
it( 'should not close when clicking on a menu item when the `hideOnClick` prop is set to `false`', async () => {
|
|
254
226
|
render(
|
|
255
|
-
<
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
>
|
|
259
|
-
<DropdownMenuV2.Item hideOnClick={ false }>
|
|
260
|
-
Dropdown menu item
|
|
261
|
-
</DropdownMenuV2.Item>
|
|
262
|
-
</DropdownMenuV2>
|
|
227
|
+
<Menu defaultOpen trigger={ <button>Open dropdown</button> }>
|
|
228
|
+
<Menu.Item hideOnClick={ false }>Menu item</Menu.Item>
|
|
229
|
+
</Menu>
|
|
263
230
|
);
|
|
264
231
|
|
|
265
232
|
expect( screen.getByRole( 'menu' ) ).toBeVisible();
|
|
@@ -272,14 +239,9 @@ describe( 'DropdownMenu', () => {
|
|
|
272
239
|
|
|
273
240
|
it( 'should not close when clicking on a disabled menu item', async () => {
|
|
274
241
|
render(
|
|
275
|
-
<
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
>
|
|
279
|
-
<DropdownMenuV2.Item disabled>
|
|
280
|
-
Dropdown menu item
|
|
281
|
-
</DropdownMenuV2.Item>
|
|
282
|
-
</DropdownMenuV2>
|
|
242
|
+
<Menu defaultOpen trigger={ <button>Open dropdown</button> }>
|
|
243
|
+
<Menu.Item disabled>Menu item</Menu.Item>
|
|
244
|
+
</Menu>
|
|
283
245
|
);
|
|
284
246
|
|
|
285
247
|
expect( screen.getByRole( 'menu' ) ).toBeInTheDocument();
|
|
@@ -292,85 +254,51 @@ describe( 'DropdownMenu', () => {
|
|
|
292
254
|
|
|
293
255
|
it( 'should reveal submenu content when hovering over the submenu trigger', async () => {
|
|
294
256
|
render(
|
|
295
|
-
<
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
Dropdown menu item 1
|
|
301
|
-
</DropdownMenuV2.Item>
|
|
302
|
-
<DropdownMenuV2.Item>
|
|
303
|
-
Dropdown menu item 2
|
|
304
|
-
</DropdownMenuV2.Item>
|
|
305
|
-
<DropdownMenuV2
|
|
306
|
-
trigger={
|
|
307
|
-
<DropdownMenuV2.Item>
|
|
308
|
-
Dropdown submenu
|
|
309
|
-
</DropdownMenuV2.Item>
|
|
310
|
-
}
|
|
257
|
+
<Menu defaultOpen trigger={ <button>Open dropdown</button> }>
|
|
258
|
+
<Menu.Item>Menu item 1</Menu.Item>
|
|
259
|
+
<Menu.Item>Menu item 2</Menu.Item>
|
|
260
|
+
<Menu
|
|
261
|
+
trigger={ <Menu.Item>Submenu trigger item</Menu.Item> }
|
|
311
262
|
>
|
|
312
|
-
<
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
</DropdownMenuV2.Item>
|
|
318
|
-
</DropdownMenuV2>
|
|
319
|
-
<DropdownMenuV2.Item>
|
|
320
|
-
Dropdown menu item 3
|
|
321
|
-
</DropdownMenuV2.Item>
|
|
322
|
-
</DropdownMenuV2>
|
|
263
|
+
<Menu.Item>Submenu item 1</Menu.Item>
|
|
264
|
+
<Menu.Item>Submenu item 2</Menu.Item>
|
|
265
|
+
</Menu>
|
|
266
|
+
<Menu.Item>Menu item 3</Menu.Item>
|
|
267
|
+
</Menu>
|
|
323
268
|
);
|
|
324
269
|
|
|
325
270
|
// Before hover, submenu items are not rendered
|
|
326
271
|
expect(
|
|
327
272
|
screen.queryByRole( 'menuitem', {
|
|
328
|
-
name: '
|
|
273
|
+
name: 'Submenu item 1',
|
|
329
274
|
} )
|
|
330
275
|
).not.toBeInTheDocument();
|
|
331
276
|
|
|
332
277
|
await hover(
|
|
333
|
-
screen.getByRole( 'menuitem', { name: '
|
|
278
|
+
screen.getByRole( 'menuitem', { name: 'Submenu trigger item' } )
|
|
334
279
|
);
|
|
335
280
|
|
|
336
281
|
// After hover, submenu items are rendered
|
|
337
282
|
// Reason for `findByRole`: due to the animation, we've got to wait
|
|
338
283
|
// a short amount of time for the submenu to appear
|
|
339
284
|
await screen.findByRole( 'menuitem', {
|
|
340
|
-
name: '
|
|
285
|
+
name: 'Submenu item 1',
|
|
341
286
|
} );
|
|
342
287
|
} );
|
|
343
288
|
|
|
344
289
|
it( 'should navigate menu items and subitems using the arrow, spacebar and enter keys', async () => {
|
|
345
290
|
render(
|
|
346
|
-
<
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
Dropdown menu item 1
|
|
352
|
-
</DropdownMenuV2.Item>
|
|
353
|
-
<DropdownMenuV2.Item>
|
|
354
|
-
Dropdown menu item 2
|
|
355
|
-
</DropdownMenuV2.Item>
|
|
356
|
-
<DropdownMenuV2
|
|
357
|
-
trigger={
|
|
358
|
-
<DropdownMenuV2.Item>
|
|
359
|
-
Dropdown submenu
|
|
360
|
-
</DropdownMenuV2.Item>
|
|
361
|
-
}
|
|
291
|
+
<Menu defaultOpen trigger={ <button>Open dropdown</button> }>
|
|
292
|
+
<Menu.Item>Menu item 1</Menu.Item>
|
|
293
|
+
<Menu.Item>Menu item 2</Menu.Item>
|
|
294
|
+
<Menu
|
|
295
|
+
trigger={ <Menu.Item>Submenu trigger item</Menu.Item> }
|
|
362
296
|
>
|
|
363
|
-
<
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
</DropdownMenuV2.Item>
|
|
369
|
-
</DropdownMenuV2>
|
|
370
|
-
<DropdownMenuV2.Item>
|
|
371
|
-
Dropdown menu item 3
|
|
372
|
-
</DropdownMenuV2.Item>
|
|
373
|
-
</DropdownMenuV2>
|
|
297
|
+
<Menu.Item>Submenu item 1</Menu.Item>
|
|
298
|
+
<Menu.Item>Submenu item 2</Menu.Item>
|
|
299
|
+
</Menu>
|
|
300
|
+
<Menu.Item>Menu item 3</Menu.Item>
|
|
301
|
+
</Menu>
|
|
374
302
|
);
|
|
375
303
|
|
|
376
304
|
// The menu is focused automatically when `defaultOpen` is set.
|
|
@@ -382,58 +310,58 @@ describe( 'DropdownMenu', () => {
|
|
|
382
310
|
// The selection wraps around from last to first and viceversa
|
|
383
311
|
await press.ArrowDown();
|
|
384
312
|
expect(
|
|
385
|
-
screen.getByRole( 'menuitem', { name: '
|
|
313
|
+
screen.getByRole( 'menuitem', { name: 'Menu item 1' } )
|
|
386
314
|
).toHaveFocus();
|
|
387
315
|
|
|
388
316
|
await press.ArrowDown();
|
|
389
317
|
expect(
|
|
390
|
-
screen.getByRole( 'menuitem', { name: '
|
|
318
|
+
screen.getByRole( 'menuitem', { name: 'Menu item 2' } )
|
|
391
319
|
).toHaveFocus();
|
|
392
320
|
|
|
393
321
|
await press.ArrowDown();
|
|
394
322
|
expect(
|
|
395
|
-
screen.getByRole( 'menuitem', { name: '
|
|
323
|
+
screen.getByRole( 'menuitem', { name: 'Submenu trigger item' } )
|
|
396
324
|
).toHaveFocus();
|
|
397
325
|
|
|
398
326
|
await press.ArrowDown();
|
|
399
327
|
expect(
|
|
400
|
-
screen.getByRole( 'menuitem', { name: '
|
|
328
|
+
screen.getByRole( 'menuitem', { name: 'Menu item 3' } )
|
|
401
329
|
).toHaveFocus();
|
|
402
330
|
|
|
403
331
|
await press.ArrowDown();
|
|
404
332
|
expect(
|
|
405
|
-
screen.getByRole( 'menuitem', { name: '
|
|
333
|
+
screen.getByRole( 'menuitem', { name: 'Menu item 1' } )
|
|
406
334
|
).toHaveFocus();
|
|
407
335
|
|
|
408
336
|
await press.ArrowUp();
|
|
409
337
|
expect(
|
|
410
|
-
screen.getByRole( 'menuitem', { name: '
|
|
338
|
+
screen.getByRole( 'menuitem', { name: 'Menu item 3' } )
|
|
411
339
|
).toHaveFocus();
|
|
412
340
|
|
|
413
341
|
await press.ArrowUp();
|
|
414
342
|
expect(
|
|
415
|
-
screen.getByRole( 'menuitem', { name: '
|
|
343
|
+
screen.getByRole( 'menuitem', { name: 'Submenu trigger item' } )
|
|
416
344
|
).toHaveFocus();
|
|
417
345
|
|
|
418
346
|
// Arrow right/left can be used to enter/leave submenus
|
|
419
347
|
await press.ArrowRight();
|
|
420
348
|
expect(
|
|
421
349
|
screen.getByRole( 'menuitem', {
|
|
422
|
-
name: '
|
|
350
|
+
name: 'Submenu item 1',
|
|
423
351
|
} )
|
|
424
352
|
).toHaveFocus();
|
|
425
353
|
|
|
426
354
|
await press.ArrowDown();
|
|
427
355
|
expect(
|
|
428
356
|
screen.getByRole( 'menuitem', {
|
|
429
|
-
name: '
|
|
357
|
+
name: 'Submenu item 2',
|
|
430
358
|
} )
|
|
431
359
|
).toHaveFocus();
|
|
432
360
|
|
|
433
361
|
await press.ArrowLeft();
|
|
434
362
|
expect(
|
|
435
363
|
screen.getByRole( 'menuitem', {
|
|
436
|
-
name: '
|
|
364
|
+
name: 'Submenu trigger item',
|
|
437
365
|
} )
|
|
438
366
|
).toHaveFocus();
|
|
439
367
|
|
|
@@ -441,28 +369,28 @@ describe( 'DropdownMenu', () => {
|
|
|
441
369
|
await press.Enter();
|
|
442
370
|
expect(
|
|
443
371
|
screen.getByRole( 'menuitem', {
|
|
444
|
-
name: '
|
|
372
|
+
name: 'Submenu item 1',
|
|
445
373
|
} )
|
|
446
374
|
).toHaveFocus();
|
|
447
375
|
|
|
448
376
|
await press.ArrowLeft();
|
|
449
377
|
expect(
|
|
450
378
|
screen.getByRole( 'menuitem', {
|
|
451
|
-
name: '
|
|
379
|
+
name: 'Submenu trigger item',
|
|
452
380
|
} )
|
|
453
381
|
).toHaveFocus();
|
|
454
382
|
|
|
455
383
|
await press.Space();
|
|
456
384
|
expect(
|
|
457
385
|
screen.getByRole( 'menuitem', {
|
|
458
|
-
name: '
|
|
386
|
+
name: 'Submenu item 1',
|
|
459
387
|
} )
|
|
460
388
|
).toHaveFocus();
|
|
461
389
|
|
|
462
390
|
await press.ArrowLeft();
|
|
463
391
|
expect(
|
|
464
392
|
screen.getByRole( 'menuitem', {
|
|
465
|
-
name: '
|
|
393
|
+
name: 'Submenu trigger item',
|
|
466
394
|
} )
|
|
467
395
|
).toHaveFocus();
|
|
468
396
|
} );
|
|
@@ -473,32 +401,32 @@ describe( 'DropdownMenu', () => {
|
|
|
473
401
|
const ControlledRadioGroup = () => {
|
|
474
402
|
const [ radioValue, setRadioValue ] = useState( 'two' );
|
|
475
403
|
const onRadioChange: React.ComponentProps<
|
|
476
|
-
typeof
|
|
404
|
+
typeof Menu.RadioItem
|
|
477
405
|
>[ 'onChange' ] = ( e ) => {
|
|
478
406
|
onRadioValueChangeSpy( e.target.value );
|
|
479
407
|
setRadioValue( e.target.value );
|
|
480
408
|
};
|
|
481
409
|
return (
|
|
482
|
-
<
|
|
483
|
-
<
|
|
484
|
-
<
|
|
410
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
411
|
+
<Menu.Group>
|
|
412
|
+
<Menu.RadioItem
|
|
485
413
|
name="radio-test"
|
|
486
414
|
value="radio-one"
|
|
487
415
|
checked={ radioValue === 'radio-one' }
|
|
488
416
|
onChange={ onRadioChange }
|
|
489
417
|
>
|
|
490
418
|
Radio item one
|
|
491
|
-
</
|
|
492
|
-
<
|
|
419
|
+
</Menu.RadioItem>
|
|
420
|
+
<Menu.RadioItem
|
|
493
421
|
name="radio-test"
|
|
494
422
|
value="radio-two"
|
|
495
423
|
checked={ radioValue === 'radio-two' }
|
|
496
424
|
onChange={ onRadioChange }
|
|
497
425
|
>
|
|
498
426
|
Radio item two
|
|
499
|
-
</
|
|
500
|
-
</
|
|
501
|
-
</
|
|
427
|
+
</Menu.RadioItem>
|
|
428
|
+
</Menu.Group>
|
|
429
|
+
</Menu>
|
|
502
430
|
);
|
|
503
431
|
};
|
|
504
432
|
|
|
@@ -556,9 +484,9 @@ describe( 'DropdownMenu', () => {
|
|
|
556
484
|
it( 'should check radio items and keep the menu open when clicking (uncontrolled)', async () => {
|
|
557
485
|
const onRadioValueChangeSpy = jest.fn();
|
|
558
486
|
render(
|
|
559
|
-
<
|
|
560
|
-
<
|
|
561
|
-
<
|
|
487
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
488
|
+
<Menu.Group>
|
|
489
|
+
<Menu.RadioItem
|
|
562
490
|
name="radio-test"
|
|
563
491
|
value="radio-one"
|
|
564
492
|
onChange={ ( e ) =>
|
|
@@ -566,8 +494,8 @@ describe( 'DropdownMenu', () => {
|
|
|
566
494
|
}
|
|
567
495
|
>
|
|
568
496
|
Radio item one
|
|
569
|
-
</
|
|
570
|
-
<
|
|
497
|
+
</Menu.RadioItem>
|
|
498
|
+
<Menu.RadioItem
|
|
571
499
|
name="radio-test"
|
|
572
500
|
value="radio-two"
|
|
573
501
|
defaultChecked
|
|
@@ -576,9 +504,9 @@ describe( 'DropdownMenu', () => {
|
|
|
576
504
|
}
|
|
577
505
|
>
|
|
578
506
|
Radio item two
|
|
579
|
-
</
|
|
580
|
-
</
|
|
581
|
-
</
|
|
507
|
+
</Menu.RadioItem>
|
|
508
|
+
</Menu.Group>
|
|
509
|
+
</Menu>
|
|
582
510
|
);
|
|
583
511
|
|
|
584
512
|
// Open dropdown
|
|
@@ -640,8 +568,8 @@ describe( 'DropdownMenu', () => {
|
|
|
640
568
|
useState< boolean >();
|
|
641
569
|
|
|
642
570
|
return (
|
|
643
|
-
<
|
|
644
|
-
<
|
|
571
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
572
|
+
<Menu.CheckboxItem
|
|
645
573
|
name="item-one"
|
|
646
574
|
value="item-one-value"
|
|
647
575
|
checked={ itemOneChecked }
|
|
@@ -655,9 +583,9 @@ describe( 'DropdownMenu', () => {
|
|
|
655
583
|
} }
|
|
656
584
|
>
|
|
657
585
|
Checkbox item one
|
|
658
|
-
</
|
|
586
|
+
</Menu.CheckboxItem>
|
|
659
587
|
|
|
660
|
-
<
|
|
588
|
+
<Menu.CheckboxItem
|
|
661
589
|
name="item-two"
|
|
662
590
|
value="item-two-value"
|
|
663
591
|
checked={ itemTwoChecked }
|
|
@@ -671,8 +599,8 @@ describe( 'DropdownMenu', () => {
|
|
|
671
599
|
} }
|
|
672
600
|
>
|
|
673
601
|
Checkbox item two
|
|
674
|
-
</
|
|
675
|
-
</
|
|
602
|
+
</Menu.CheckboxItem>
|
|
603
|
+
</Menu>
|
|
676
604
|
);
|
|
677
605
|
};
|
|
678
606
|
|
|
@@ -763,8 +691,8 @@ describe( 'DropdownMenu', () => {
|
|
|
763
691
|
const onCheckboxValueChangeSpy = jest.fn();
|
|
764
692
|
|
|
765
693
|
render(
|
|
766
|
-
<
|
|
767
|
-
<
|
|
694
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
695
|
+
<Menu.CheckboxItem
|
|
768
696
|
name="item-one"
|
|
769
697
|
value="item-one-value"
|
|
770
698
|
onChange={ ( e ) => {
|
|
@@ -776,9 +704,9 @@ describe( 'DropdownMenu', () => {
|
|
|
776
704
|
} }
|
|
777
705
|
>
|
|
778
706
|
Checkbox item one
|
|
779
|
-
</
|
|
707
|
+
</Menu.CheckboxItem>
|
|
780
708
|
|
|
781
|
-
<
|
|
709
|
+
<Menu.CheckboxItem
|
|
782
710
|
name="item-two"
|
|
783
711
|
value="item-two-value"
|
|
784
712
|
defaultChecked
|
|
@@ -791,8 +719,8 @@ describe( 'DropdownMenu', () => {
|
|
|
791
719
|
} }
|
|
792
720
|
>
|
|
793
721
|
Checkbox item two
|
|
794
|
-
</
|
|
795
|
-
</
|
|
722
|
+
</Menu.CheckboxItem>
|
|
723
|
+
</Menu>
|
|
796
724
|
);
|
|
797
725
|
|
|
798
726
|
// Open dropdown
|
|
@@ -881,11 +809,9 @@ describe( 'DropdownMenu', () => {
|
|
|
881
809
|
it( 'should be modal by default', async () => {
|
|
882
810
|
render(
|
|
883
811
|
<>
|
|
884
|
-
<
|
|
885
|
-
<
|
|
886
|
-
|
|
887
|
-
</DropdownMenuV2.Item>
|
|
888
|
-
</DropdownMenuV2>
|
|
812
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
813
|
+
<Menu.Item>Menu item</Menu.Item>
|
|
814
|
+
</Menu>
|
|
889
815
|
<button>Button outside of dropdown</button>
|
|
890
816
|
</>
|
|
891
817
|
);
|
|
@@ -897,7 +823,7 @@ describe( 'DropdownMenu', () => {
|
|
|
897
823
|
} )
|
|
898
824
|
);
|
|
899
825
|
|
|
900
|
-
//
|
|
826
|
+
// Menu open, focus is on the menu wrapper
|
|
901
827
|
expect( screen.getByRole( 'menu' ) ).toHaveFocus();
|
|
902
828
|
|
|
903
829
|
expect(
|
|
@@ -910,14 +836,12 @@ describe( 'DropdownMenu', () => {
|
|
|
910
836
|
it( 'should not be modal when the `modal` prop is set to `false`', async () => {
|
|
911
837
|
render(
|
|
912
838
|
<>
|
|
913
|
-
<
|
|
839
|
+
<Menu
|
|
914
840
|
trigger={ <button>Open dropdown</button> }
|
|
915
841
|
modal={ false }
|
|
916
842
|
>
|
|
917
|
-
<
|
|
918
|
-
|
|
919
|
-
</DropdownMenuV2.Item>
|
|
920
|
-
</DropdownMenuV2>
|
|
843
|
+
<Menu.Item>Menu item</Menu.Item>
|
|
844
|
+
</Menu>
|
|
921
845
|
<button>Button outside of dropdown</button>
|
|
922
846
|
</>
|
|
923
847
|
);
|
|
@@ -929,17 +853,17 @@ describe( 'DropdownMenu', () => {
|
|
|
929
853
|
} )
|
|
930
854
|
);
|
|
931
855
|
|
|
932
|
-
//
|
|
856
|
+
// Menu open, focus is on the menu wrapper
|
|
933
857
|
expect( screen.getByRole( 'menu' ) ).toHaveFocus();
|
|
934
858
|
|
|
935
|
-
//
|
|
859
|
+
// Menu is not modal, therefore the outer button is part of the
|
|
936
860
|
// accessibility tree and can be found.
|
|
937
861
|
const outerButton = screen.getByRole( 'button', {
|
|
938
862
|
name: 'Button outside of dropdown',
|
|
939
863
|
} );
|
|
940
864
|
|
|
941
865
|
// The outer button can be focused by pressing tab. Doing so will cause
|
|
942
|
-
// the
|
|
866
|
+
// the Menu to close.
|
|
943
867
|
await press.Tab();
|
|
944
868
|
expect( outerButton ).toBeInTheDocument();
|
|
945
869
|
expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument();
|
|
@@ -949,11 +873,9 @@ describe( 'DropdownMenu', () => {
|
|
|
949
873
|
describe( 'items prefix and suffix', () => {
|
|
950
874
|
it( 'should display a prefix on regular items', async () => {
|
|
951
875
|
render(
|
|
952
|
-
<
|
|
953
|
-
<
|
|
954
|
-
|
|
955
|
-
</DropdownMenuV2.Item>
|
|
956
|
-
</DropdownMenuV2>
|
|
876
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
877
|
+
<Menu.Item prefix={ <>Item prefix</> }>Menu item</Menu.Item>
|
|
878
|
+
</Menu>
|
|
957
879
|
);
|
|
958
880
|
|
|
959
881
|
// Click to open the menu
|
|
@@ -966,18 +888,16 @@ describe( 'DropdownMenu', () => {
|
|
|
966
888
|
// The contents of the prefix are rendered before the item's children
|
|
967
889
|
expect(
|
|
968
890
|
screen.getByRole( 'menuitem', {
|
|
969
|
-
name: 'Item prefix
|
|
891
|
+
name: 'Item prefix Menu item',
|
|
970
892
|
} )
|
|
971
893
|
).toBeInTheDocument();
|
|
972
894
|
} );
|
|
973
895
|
|
|
974
896
|
it( 'should display a suffix on regular items', async () => {
|
|
975
897
|
render(
|
|
976
|
-
<
|
|
977
|
-
<
|
|
978
|
-
|
|
979
|
-
</DropdownMenuV2.Item>
|
|
980
|
-
</DropdownMenuV2>
|
|
898
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
899
|
+
<Menu.Item suffix={ <>Item suffix</> }>Menu item</Menu.Item>
|
|
900
|
+
</Menu>
|
|
981
901
|
);
|
|
982
902
|
|
|
983
903
|
// Click to open the menu
|
|
@@ -990,22 +910,22 @@ describe( 'DropdownMenu', () => {
|
|
|
990
910
|
// The contents of the suffix are rendered after the item's children
|
|
991
911
|
expect(
|
|
992
912
|
screen.getByRole( 'menuitem', {
|
|
993
|
-
name: '
|
|
913
|
+
name: 'Menu item Item suffix',
|
|
994
914
|
} )
|
|
995
915
|
).toBeInTheDocument();
|
|
996
916
|
} );
|
|
997
917
|
|
|
998
918
|
it( 'should display a suffix on radio items', async () => {
|
|
999
919
|
render(
|
|
1000
|
-
<
|
|
1001
|
-
<
|
|
920
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
921
|
+
<Menu.RadioItem
|
|
1002
922
|
name="radio-test"
|
|
1003
923
|
value="radio-one"
|
|
1004
924
|
suffix="Radio suffix"
|
|
1005
925
|
>
|
|
1006
926
|
Radio item one
|
|
1007
|
-
</
|
|
1008
|
-
</
|
|
927
|
+
</Menu.RadioItem>
|
|
928
|
+
</Menu>
|
|
1009
929
|
);
|
|
1010
930
|
|
|
1011
931
|
// Click to open the menu
|
|
@@ -1025,15 +945,15 @@ describe( 'DropdownMenu', () => {
|
|
|
1025
945
|
|
|
1026
946
|
it( 'should display a suffix on checkbox items', async () => {
|
|
1027
947
|
render(
|
|
1028
|
-
<
|
|
1029
|
-
<
|
|
948
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
949
|
+
<Menu.CheckboxItem
|
|
1030
950
|
name="checkbox-test"
|
|
1031
951
|
value="checkbox-one"
|
|
1032
952
|
suffix="Checkbox suffix"
|
|
1033
953
|
>
|
|
1034
954
|
Checkbox item one
|
|
1035
|
-
</
|
|
1036
|
-
</
|
|
955
|
+
</Menu.CheckboxItem>
|
|
956
|
+
</Menu>
|
|
1037
957
|
);
|
|
1038
958
|
|
|
1039
959
|
// Click to open the menu
|
|
@@ -1055,10 +975,10 @@ describe( 'DropdownMenu', () => {
|
|
|
1055
975
|
describe( 'typeahead', () => {
|
|
1056
976
|
it( 'should highlight matching item', async () => {
|
|
1057
977
|
render(
|
|
1058
|
-
<
|
|
1059
|
-
<
|
|
1060
|
-
<
|
|
1061
|
-
</
|
|
978
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
979
|
+
<Menu.Item>One</Menu.Item>
|
|
980
|
+
<Menu.Item>Two</Menu.Item>
|
|
981
|
+
</Menu>
|
|
1062
982
|
);
|
|
1063
983
|
|
|
1064
984
|
// Click to open the menu
|
|
@@ -1088,10 +1008,10 @@ describe( 'DropdownMenu', () => {
|
|
|
1088
1008
|
|
|
1089
1009
|
it( 'should keep previous focus when no matches are found', async () => {
|
|
1090
1010
|
render(
|
|
1091
|
-
<
|
|
1092
|
-
<
|
|
1093
|
-
<
|
|
1094
|
-
</
|
|
1011
|
+
<Menu trigger={ <button>Open dropdown</button> }>
|
|
1012
|
+
<Menu.Item>One</Menu.Item>
|
|
1013
|
+
<Menu.Item>Two</Menu.Item>
|
|
1014
|
+
</Menu>
|
|
1095
1015
|
);
|
|
1096
1016
|
|
|
1097
1017
|
// Click to open the menu
|