@wordpress/components 40.0.0 → 40.1.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 +40 -0
- package/CONTRIBUTING.md +2 -0
- package/build/border-box-control/border-box-control/component.cjs +37 -5
- package/build/border-box-control/border-box-control/component.cjs.map +3 -3
- package/build/border-box-control/border-box-control/hook.cjs +24 -3
- package/build/border-box-control/border-box-control/hook.cjs.map +3 -3
- package/build/border-box-control/border-box-control-linked-button/hook.cjs +2 -2
- package/build/border-box-control/border-box-control-linked-button/hook.cjs.map +2 -2
- package/build/border-box-control/border-box-control-split-controls/hook.cjs +2 -2
- package/build/border-box-control/border-box-control-split-controls/hook.cjs.map +2 -2
- package/build/border-box-control/border-box-control-visualizer/hook.cjs +2 -2
- package/build/border-box-control/border-box-control-visualizer/hook.cjs.map +2 -2
- package/build/color-palette/index.cjs +1 -1
- package/build/color-palette/index.cjs.map +2 -2
- package/build/composite/context.cjs +9 -2
- package/build/composite/context.cjs.map +2 -2
- package/build/composite/group-label.cjs +4 -0
- package/build/composite/group-label.cjs.map +2 -2
- package/build/composite/group.cjs +10 -2
- package/build/composite/group.cjs.map +2 -2
- package/build/composite/item.cjs +4 -0
- package/build/composite/item.cjs.map +3 -3
- package/build/context/context-system-provider.cjs +2 -5
- package/build/context/context-system-provider.cjs.map +3 -3
- package/build/context/use-context-system.cjs +7 -2
- package/build/context/use-context-system.cjs.map +2 -2
- package/build/disabled/index.cjs +1 -1
- package/build/disabled/index.cjs.map +2 -2
- package/build/draggable/index.cjs.map +1 -1
- package/build/form-token-field/index.cjs +1 -1
- package/build/form-token-field/index.cjs.map +2 -2
- package/build/icon/index.cjs +30 -12
- package/build/icon/index.cjs.map +2 -2
- package/build/input-control/styles/input-control-styles.cjs +42 -27
- package/build/input-control/styles/input-control-styles.cjs.map +2 -2
- package/build/item-group/context.cjs +1 -0
- package/build/item-group/context.cjs.map +2 -2
- package/build/item-group/item/component.cjs +12 -0
- package/build/item-group/item/component.cjs.map +3 -3
- package/build/item-group/item/hook.cjs +7 -6
- package/build/item-group/item/hook.cjs.map +2 -2
- package/build/item-group/item-group/component.cjs +1 -0
- package/build/item-group/item-group/component.cjs.map +2 -2
- package/build/item-group/item-group/hook.cjs +1 -1
- package/build/item-group/item-group/hook.cjs.map +2 -2
- package/build/progress-bar/index.cjs +1 -1
- package/build/progress-bar/index.cjs.map +2 -2
- package/build/resizable-box/index.cjs.map +1 -1
- package/build/snackbar/index.cjs +8 -5
- package/build/snackbar/index.cjs.map +2 -2
- package/build/textarea-control/index.cjs +1 -1
- package/build/textarea-control/index.cjs.map +2 -2
- package/build/toggle-group-control/context.cjs +8 -2
- package/build/toggle-group-control/context.cjs.map +2 -2
- package/build/toggle-group-control/toggle-group-control/as-button-group.cjs +5 -2
- package/build/toggle-group-control/toggle-group-control/as-button-group.cjs.map +2 -2
- package/build/toggle-group-control/toggle-group-control/as-radio-group.cjs +5 -2
- package/build/toggle-group-control/toggle-group-control/as-radio-group.cjs.map +2 -2
- package/build/toggle-group-control/toggle-group-control/component.cjs +3 -1
- package/build/toggle-group-control/toggle-group-control/component.cjs.map +2 -2
- package/build/toggle-group-control/toggle-group-control-option/component.cjs +2 -0
- package/build/toggle-group-control/toggle-group-control-option/component.cjs.map +2 -2
- package/build/toggle-group-control/toggle-group-control-option-base/component.cjs +2 -1
- package/build/toggle-group-control/toggle-group-control-option-base/component.cjs.map +2 -2
- package/build/toggle-group-control/toggle-group-control-option-icon/component.cjs +2 -0
- package/build/toggle-group-control/toggle-group-control-option-icon/component.cjs.map +2 -2
- package/build/tools-panel/tools-panel/hook.cjs +102 -106
- package/build/tools-panel/tools-panel/hook.cjs.map +2 -2
- package/build/tools-panel/tools-panel-item/hook.cjs +33 -33
- package/build/tools-panel/tools-panel-item/hook.cjs.map +2 -2
- package/build/tree-grid/cell.cjs +4 -0
- package/build/tree-grid/cell.cjs.map +2 -2
- package/build/tree-grid/roving-tab-index-item.cjs +5 -1
- package/build/tree-grid/roving-tab-index-item.cjs.map +2 -2
- package/build/tree-grid/row.cjs +6 -1
- package/build/tree-grid/row.cjs.map +2 -2
- package/build/tree-grid/use-validate-tree-grid-structure.cjs +81 -0
- package/build/tree-grid/use-validate-tree-grid-structure.cjs.map +7 -0
- package/build/utils/colors-values.cjs +3 -2
- package/build/utils/colors-values.cjs.map +2 -2
- package/build-module/border-box-control/border-box-control/component.mjs +38 -6
- package/build-module/border-box-control/border-box-control/component.mjs.map +2 -2
- package/build-module/border-box-control/border-box-control/hook.mjs +14 -3
- package/build-module/border-box-control/border-box-control/hook.mjs.map +2 -2
- package/build-module/border-box-control/border-box-control-linked-button/hook.mjs +2 -2
- package/build-module/border-box-control/border-box-control-linked-button/hook.mjs.map +2 -2
- package/build-module/border-box-control/border-box-control-split-controls/hook.mjs +2 -2
- package/build-module/border-box-control/border-box-control-split-controls/hook.mjs.map +2 -2
- package/build-module/border-box-control/border-box-control-visualizer/hook.mjs +2 -2
- package/build-module/border-box-control/border-box-control-visualizer/hook.mjs.map +2 -2
- package/build-module/color-palette/index.mjs +1 -1
- package/build-module/color-palette/index.mjs.map +2 -2
- package/build-module/composite/context.mjs +6 -1
- package/build-module/composite/context.mjs.map +2 -2
- package/build-module/composite/group-label.mjs +5 -1
- package/build-module/composite/group-label.mjs.map +2 -2
- package/build-module/composite/group.mjs +11 -3
- package/build-module/composite/group.mjs.map +2 -2
- package/build-module/composite/item.mjs +4 -0
- package/build-module/composite/item.mjs.map +2 -2
- package/build-module/context/context-system-provider.mjs +2 -5
- package/build-module/context/context-system-provider.mjs.map +3 -3
- package/build-module/context/use-context-system.mjs +7 -2
- package/build-module/context/use-context-system.mjs.map +2 -2
- package/build-module/disabled/index.mjs +1 -1
- package/build-module/disabled/index.mjs.map +2 -2
- package/build-module/draggable/index.mjs.map +1 -1
- package/build-module/form-token-field/index.mjs +1 -1
- package/build-module/form-token-field/index.mjs.map +2 -2
- package/build-module/icon/index.mjs +30 -12
- package/build-module/icon/index.mjs.map +2 -2
- package/build-module/input-control/styles/input-control-styles.mjs +42 -27
- package/build-module/input-control/styles/input-control-styles.mjs.map +2 -2
- package/build-module/item-group/context.mjs +1 -0
- package/build-module/item-group/context.mjs.map +2 -2
- package/build-module/item-group/item/component.mjs +12 -0
- package/build-module/item-group/item/component.mjs.map +2 -2
- package/build-module/item-group/item/hook.mjs +7 -6
- package/build-module/item-group/item/hook.mjs.map +2 -2
- package/build-module/item-group/item-group/component.mjs +1 -0
- package/build-module/item-group/item-group/component.mjs.map +2 -2
- package/build-module/item-group/item-group/hook.mjs +1 -1
- package/build-module/item-group/item-group/hook.mjs.map +2 -2
- package/build-module/progress-bar/index.mjs +1 -1
- package/build-module/progress-bar/index.mjs.map +2 -2
- package/build-module/resizable-box/index.mjs.map +1 -1
- package/build-module/snackbar/index.mjs +8 -5
- package/build-module/snackbar/index.mjs.map +2 -2
- package/build-module/textarea-control/index.mjs +1 -1
- package/build-module/textarea-control/index.mjs.map +2 -2
- package/build-module/toggle-group-control/context.mjs +8 -2
- package/build-module/toggle-group-control/context.mjs.map +2 -2
- package/build-module/toggle-group-control/toggle-group-control/as-button-group.mjs +5 -2
- package/build-module/toggle-group-control/toggle-group-control/as-button-group.mjs.map +2 -2
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.mjs +5 -2
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.mjs.map +2 -2
- package/build-module/toggle-group-control/toggle-group-control/component.mjs +3 -1
- package/build-module/toggle-group-control/toggle-group-control/component.mjs.map +2 -2
- package/build-module/toggle-group-control/toggle-group-control-option/component.mjs +2 -0
- package/build-module/toggle-group-control/toggle-group-control-option/component.mjs.map +2 -2
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs +2 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs.map +2 -2
- package/build-module/toggle-group-control/toggle-group-control-option-icon/component.mjs +2 -0
- package/build-module/toggle-group-control/toggle-group-control-option-icon/component.mjs.map +2 -2
- package/build-module/tools-panel/tools-panel/hook.mjs +103 -107
- package/build-module/tools-panel/tools-panel/hook.mjs.map +2 -2
- package/build-module/tools-panel/tools-panel-item/hook.mjs +35 -35
- package/build-module/tools-panel/tools-panel-item/hook.mjs.map +2 -2
- package/build-module/tree-grid/cell.mjs +5 -1
- package/build-module/tree-grid/cell.mjs.map +2 -2
- package/build-module/tree-grid/roving-tab-index-item.mjs +5 -1
- package/build-module/tree-grid/roving-tab-index-item.mjs.map +2 -2
- package/build-module/tree-grid/row.mjs +7 -2
- package/build-module/tree-grid/row.mjs.map +2 -2
- package/build-module/tree-grid/use-validate-tree-grid-structure.mjs +56 -0
- package/build-module/tree-grid/use-validate-tree-grid-structure.mjs.map +7 -0
- package/build-module/utils/colors-values.mjs +3 -2
- package/build-module/utils/colors-values.mjs.map +2 -2
- package/build-style/style-rtl.css +27 -85
- package/build-style/style.css +27 -85
- package/build-types/border-box-control/border-box-control/component.d.ts +4 -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 +4 -2
- package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
- package/build-types/border-box-control/types.d.ts +6 -2
- package/build-types/border-box-control/types.d.ts.map +1 -1
- package/build-types/composite/context.d.ts +2 -0
- package/build-types/composite/context.d.ts.map +1 -1
- package/build-types/composite/group-label.d.ts.map +1 -1
- package/build-types/composite/group.d.ts.map +1 -1
- package/build-types/composite/item.d.ts.map +1 -1
- package/build-types/composite/types.d.ts +1 -1
- package/build-types/context/context-system-provider.d.ts +8 -6
- package/build-types/context/context-system-provider.d.ts.map +1 -1
- package/build-types/context/use-context-system.d.ts.map +1 -1
- package/build-types/icon/index.d.ts.map +1 -1
- package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
- package/build-types/item-group/context.d.ts.map +1 -1
- package/build-types/item-group/item/component.d.ts.map +1 -1
- package/build-types/item-group/item/hook.d.ts +1 -1
- package/build-types/item-group/item/hook.d.ts.map +1 -1
- package/build-types/item-group/item-group/component.d.ts.map +1 -1
- package/build-types/item-group/types.d.ts +4 -0
- package/build-types/item-group/types.d.ts.map +1 -1
- package/build-types/popover/types.d.ts +6 -2
- package/build-types/popover/types.d.ts.map +1 -1
- package/build-types/snackbar/index.d.ts.map +1 -1
- package/build-types/toggle-group-control/context.d.ts +2 -2
- package/build-types/toggle-group-control/context.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +1 -1
- package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +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/component.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control-option/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/toggle-group-control/toggle-group-control-option-icon/component.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/types.d.ts +12 -3
- package/build-types/toggle-group-control/types.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel/hook.d.ts +4 -4
- package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
- package/build-types/tools-panel/types.d.ts +52 -9
- package/build-types/tools-panel/types.d.ts.map +1 -1
- package/build-types/tree-grid/cell.d.ts.map +1 -1
- package/build-types/tree-grid/roving-tab-index-item.d.ts.map +1 -1
- package/build-types/tree-grid/row.d.ts.map +1 -1
- package/build-types/tree-grid/use-validate-tree-grid-structure.d.ts +2 -0
- package/build-types/tree-grid/use-validate-tree-grid-structure.d.ts.map +1 -0
- package/build-types/utils/colors-values.d.ts.map +1 -1
- package/emotion-to-scss-modules.md +149 -0
- package/package.json +28 -27
- package/src/alignment-matrix-control/test/{index.tsx → index.jsdom.test.tsx} +5 -4
- package/src/angle-picker-control/style.module.scss +1 -1
- package/src/autocomplete/test/get-autocomplete-match.ts +2 -1
- package/src/autocomplete/test/{index.tsx → index.jsdom.test.tsx} +2 -1
- package/src/badge/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/base-control/stories/index.story.tsx +2 -2
- package/src/base-control/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/border-box-control/border-box-control/README.md +5 -3
- package/src/border-box-control/border-box-control/component.tsx +83 -15
- package/src/border-box-control/border-box-control/hook.ts +19 -1
- package/src/border-box-control/stories/index.story.tsx +10 -0
- package/src/border-box-control/style.module.scss +34 -3
- package/src/border-box-control/test/{index.tsx → index.jsdom.test.tsx} +138 -2
- package/src/border-box-control/test/utils.ts +11 -0
- package/src/border-box-control/types.ts +6 -2
- package/src/border-control/test/{index.js → index.jsdom.test.tsx} +44 -24
- package/src/box-control/test/{index.tsx → index.jsdom.test.tsx} +6 -3
- package/src/button/style.scss +0 -6
- package/src/button/test/{index.tsx → index.jsdom.test.tsx} +6 -2
- package/src/checkbox-control/stories/index.story.tsx +1 -1
- package/src/checkbox-control/style.scss +2 -2
- package/src/checkbox-control/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +10 -7
- package/src/checkbox-control/test/{index.tsx → index.jsdom.test.tsx} +4 -1
- package/src/circular-option-picker/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/color-indicator/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +2 -2
- package/src/color-indicator/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/color-palette/index.tsx +1 -1
- package/src/color-palette/test/{index.tsx → index.jsdom.test.tsx} +25 -22
- package/src/color-palette/test/{utils.ts → utils.jsdom.test.ts} +1 -0
- package/src/combobox-control/test/{index.tsx → index.jsdom.test.tsx} +12 -7
- package/src/composite/README.md +1 -1
- package/src/composite/context.tsx +6 -0
- package/src/composite/group-label.tsx +8 -1
- package/src/composite/group.tsx +9 -2
- package/src/composite/item.tsx +6 -0
- package/src/composite/legacy/test/{index.tsx → index.jsdom.test.tsx} +6 -13
- package/src/composite/test/{index.tsx → index.jsdom.test.tsx} +60 -17
- package/src/composite/types.ts +1 -1
- package/src/confirm-dialog/test/{index.tsx → index.jsdom.test.tsx} +16 -14
- package/src/content-editable-control/test/{index.tsx → index.jsdom.test.tsx} +4 -3
- package/src/context/{context-system-provider.js → context-system-provider.tsx} +19 -5
- package/src/context/stories/{ComponentsProvider.stories.jsx → ComponentsProvider.stories.tsx} +2 -2
- package/src/context/test/context-connect.tsx +1 -2
- package/src/context/test/{context-system-provider.js → context-system-provider.jsdom.test.tsx} +93 -51
- package/src/context/test/wordpress-component.tsx +1 -2
- package/src/context/use-context-system.js +13 -4
- package/src/custom-gradient-picker/gradient-bar/test/{utils.ts → utils.jsdom.test.ts} +6 -5
- package/src/custom-gradient-picker/test/serializer.ts +1 -0
- package/src/custom-select-control-v2/test/{index.tsx → index.jsdom.test.tsx} +4 -1
- package/src/date-time/date-picker/test/{index.tsx → index.jsdom.test.tsx} +6 -3
- package/src/date-time/date-picker/test/{use-lilius.ts → use-lilius.jsdom.test.ts} +1 -0
- package/src/date-time/date-time/test/{index.tsx → index.jsdom.test.tsx} +20 -11
- package/src/date-time/test/utils.test.ts +9 -0
- package/src/date-time/time-picker/test/{index.tsx → index.jsdom.test.tsx} +37 -27
- package/src/date-time/time-picker/time-input/test/{index.tsx → index.jsdom.test.tsx} +8 -3
- package/src/disabled/index.tsx +7 -7
- package/src/disabled/test/{index.tsx → index.jsdom.test.tsx} +26 -0
- package/src/draggable/index.tsx +1 -1
- package/src/draggable/style.module.scss +1 -1
- package/src/dropdown/style.module.scss +2 -2
- package/src/dropdown/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/dropdown-menu/test/{index.tsx → index.jsdom.test.tsx} +5 -4
- package/src/duotone-picker/test/{custom-duotone-bar.tsx → custom-duotone-bar.jsdom.test.tsx} +11 -8
- package/src/duotone-picker/test/{index.tsx → index.jsdom.test.tsx} +11 -10
- package/src/external-link/test/{index.tsx → index.jsdom.test.tsx} +5 -4
- package/src/focal-point-picker/test/{index.tsx → index.jsdom.test.tsx} +12 -9
- package/src/focal-point-picker/test/{media.tsx → media.jsdom.test.tsx} +1 -0
- package/src/font-size-picker/test/{font-size-picker-select.tsx → font-size-picker-select.jsdom.test.tsx} +19 -16
- package/src/font-size-picker/test/{font-size-picker-toggle-group.tsx → font-size-picker-toggle-group.jsdom.test.tsx} +13 -11
- package/src/font-size-picker/test/{index.tsx → index.jsdom.test.tsx} +19 -14
- package/src/font-size-picker/test/utils.ts +1 -0
- package/src/form-toggle/style.scss +1 -1
- package/src/form-toggle/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +4 -4
- package/src/form-toggle/test/{index.tsx → index.jsdom.test.tsx} +2 -1
- package/src/form-token-field/index.tsx +1 -1
- package/src/form-token-field/test/{index.tsx → index.jsdom.test.tsx} +86 -44
- package/src/gradient-picker/test/{index.tsx → index.jsdom.test.tsx} +12 -9
- package/src/guide/test/{index.tsx → index.jsdom.test.tsx} +4 -2
- package/src/h-stack/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +4 -4
- package/src/h-stack/test/{index.tsx → index.jsdom.test.tsx} +3 -0
- package/src/higher-order/with-fallback-styles/test/{index.tsx → index.jsdom.test.tsx} +3 -2
- package/src/higher-order/with-filters/test/__snapshots__/index.jsdom.test.tsx.snap +87 -0
- package/src/higher-order/with-filters/test/{index.tsx → index.jsdom.test.tsx} +6 -5
- package/src/higher-order/with-focus-outside/test/{index.tsx → index.jsdom.test.tsx} +2 -1
- package/src/higher-order/with-focus-return/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/higher-order/with-notices/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/higher-order/with-spoken-messages/test/{index.tsx → index.jsdom.test.tsx} +3 -2
- package/src/icon/index.tsx +28 -12
- package/src/icon/test/{index.tsx → index.jsdom.test.tsx} +66 -0
- package/src/input-control/styles/input-control-styles.tsx +38 -7
- package/src/input-control/test/{index.js → index.jsdom.test.tsx} +16 -10
- package/src/isolated-event-container/test/{index.tsx → index.jsdom.test.tsx} +4 -3
- package/src/item-group/context.ts +1 -0
- package/src/item-group/item/component.tsx +19 -1
- package/src/item-group/item/hook.ts +2 -3
- package/src/item-group/item-group/component.tsx +1 -0
- package/src/item-group/style.module.scss +1 -2
- package/src/item-group/test/__snapshots__/{index.js.snap → index.jsdom.test.tsx.snap} +9 -9
- package/src/item-group/test/{index.js → index.jsdom.test.tsx} +99 -2
- package/src/item-group/types.ts +4 -0
- package/src/keyboard-shortcuts/test/{index.tsx → index.jsdom.test.tsx} +5 -4
- package/src/menu/test/{index.tsx → index.jsdom.test.tsx} +67 -23
- package/src/menu-group/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/menu-item/test/__snapshots__/{index.js.snap → index.jsdom.test.tsx.snap} +5 -5
- package/src/menu-item/test/{index.js → index.jsdom.test.tsx} +1 -0
- package/src/modal/test/{aria-helper.ts → aria-helper.jsdom.test.ts} +1 -0
- package/src/modal/test/{index.tsx → index.jsdom.test.tsx} +9 -5
- package/src/navigable-container/test/{navigable-menu.tsx → navigable-menu.jsdom.test.tsx} +7 -5
- package/src/navigable-container/test/{tababble-container.tsx → tababble-container.jsdom.test.tsx} +5 -3
- package/src/navigator/test/{index.tsx → index.jsdom.test.tsx} +5 -2
- package/src/navigator/test/router.ts +1 -0
- package/src/notice/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +7 -4
- package/src/notice/test/{index.tsx → index.jsdom.test.tsx} +8 -4
- package/src/notice/test/{list.tsx → list.jsdom.test.tsx} +1 -0
- package/src/number-control/test/{index.tsx → index.jsdom.test.tsx} +9 -6
- package/src/palette-edit/test/{index.tsx → index.jsdom.test.tsx} +16 -13
- package/src/panel/test/__snapshots__/body.jsdom.test.tsx.snap +9 -0
- package/src/panel/test/__snapshots__/header.jsdom.test.tsx.snap +9 -0
- package/src/panel/test/__snapshots__/index.jsdom.test.tsx.snap +17 -0
- package/src/panel/test/__snapshots__/row.jsdom.test.tsx.snap +17 -0
- package/src/panel/test/{body.tsx → body.jsdom.test.tsx} +2 -1
- package/src/panel/test/{header.tsx → header.jsdom.test.tsx} +1 -0
- package/src/panel/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/panel/test/{row.tsx → row.jsdom.test.tsx} +1 -0
- package/src/placeholder/style.scss +0 -5
- package/src/placeholder/test/{index.tsx → index.jsdom.test.tsx} +19 -14
- package/src/popover/README.md +2 -2
- package/src/popover/test/{index.tsx → index.jsdom.test.tsx} +23 -0
- package/src/popover/types.ts +9 -3
- package/src/progress-bar/style.module.scss +9 -1
- package/src/query-controls/test/terms.ts +1 -0
- package/src/radio-control/test/{index.tsx → index.jsdom.test.tsx} +14 -11
- package/src/range-control/test/{index.tsx → index.jsdom.test.tsx} +10 -7
- package/src/resizable-box/index.tsx +1 -1
- package/src/sandbox/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/scroll-lock/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/shortcut/test/__snapshots__/index.jsdom.test.tsx.snap +15 -0
- package/src/shortcut/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/slot-fill/test/{index.js → index.jsdom.test.tsx} +4 -3
- package/src/slot-fill/test/{slot.js → slot.jsdom.test.tsx} +17 -9
- package/src/snackbar/index.tsx +10 -6
- package/src/snackbar/test/{index.tsx → index.jsdom.test.tsx} +41 -11
- package/src/snackbar/test/list.jsdom.test.tsx +100 -0
- package/src/style-provider/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/surface/style.module.scss +2 -2
- package/src/surface/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/tab-panel/style.scss +4 -23
- package/src/tab-panel/test/{index.tsx → index.jsdom.test.tsx} +22 -21
- package/src/tabs/test/{index.tsx → index.jsdom.test.tsx} +21 -19
- package/src/text-control/test/{text-control.tsx → text-control.jsdom.test.tsx} +1 -0
- package/src/text-highlight/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/textarea-control/style.module.scss +9 -4
- package/src/tip/style.scss +1 -1
- package/src/toggle-control/test/{index.tsx → index.jsdom.test.tsx} +4 -1
- package/src/toggle-group-control/context.ts +14 -5
- package/src/toggle-group-control/stories/index.story.tsx +15 -2
- package/src/toggle-group-control/test/{index.tsx → index.jsdom.test.tsx} +283 -9
- package/src/toggle-group-control/toggle-group-control/README.md +8 -5
- package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +4 -0
- package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +4 -0
- package/src/toggle-group-control/toggle-group-control/component.tsx +2 -0
- package/src/toggle-group-control/toggle-group-control/style.module.scss +8 -2
- package/src/toggle-group-control/toggle-group-control-option/README.md +8 -5
- package/src/toggle-group-control/toggle-group-control-option/component.tsx +2 -0
- package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +4 -1
- package/src/toggle-group-control/toggle-group-control-option-icon/README.md +7 -0
- package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +2 -0
- package/src/toggle-group-control/types.ts +12 -3
- package/src/toolbar/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/toolbar/test/{toolbar-group.tsx → toolbar-group.jsdom.test.tsx} +2 -1
- package/src/tools-panel/test/{index.tsx → index.jsdom.test.tsx} +595 -47
- package/src/tools-panel/tools-panel/hook.ts +195 -180
- package/src/tools-panel/tools-panel-item/README.md +42 -1
- package/src/tools-panel/tools-panel-item/hook.ts +97 -69
- package/src/tools-panel/types.ts +54 -9
- package/src/tooltip/test/{index.tsx → index.jsdom.test.tsx} +5 -3
- package/src/tree-grid/cell.tsx +6 -2
- package/src/tree-grid/roving-tab-index-item.tsx +7 -3
- package/src/tree-grid/row.tsx +8 -2
- package/src/tree-grid/test/__snapshots__/{cell.tsx.snap → cell.jsdom.test.tsx.snap} +2 -2
- package/src/tree-grid/test/__snapshots__/index.jsdom.test.tsx.snap +3 -0
- package/src/tree-grid/test/__snapshots__/roving-tab-index-item.jsdom.test.tsx.snap +27 -0
- package/src/tree-grid/test/__snapshots__/roving-tab-index.jsdom.test.tsx.snap +9 -0
- package/src/tree-grid/test/__snapshots__/{row.tsx.snap → row.jsdom.test.tsx.snap} +9 -5
- package/src/tree-grid/test/cell.jsdom.test.tsx +149 -0
- package/src/tree-grid/test/{index.tsx → index.jsdom.test.tsx} +9 -7
- package/src/tree-grid/test/{roving-tab-index-item.tsx → roving-tab-index-item.jsdom.test.tsx} +4 -1
- package/src/tree-grid/test/{roving-tab-index.tsx → roving-tab-index.jsdom.test.tsx} +1 -0
- package/src/tree-grid/test/row.jsdom.test.tsx +132 -0
- package/src/tree-grid/use-validate-tree-grid-structure.ts +104 -0
- package/src/truncate/style.module.scss +0 -1
- package/src/truncate/test/{index.tsx → index.jsdom.test.tsx} +1 -0
- package/src/unit-control/test/{index.tsx → index.jsdom.test.tsx} +22 -19
- package/src/unit-control/test/utils.ts +1 -0
- package/src/utils/colors-values.js +5 -4
- package/src/utils/hooks/test/{use-controlled-state.js → use-controlled-state.jsdom.test.tsx} +22 -7
- package/src/utils/hooks/test/{use-controlled-value.js → use-controlled-value.jsdom.test.tsx} +6 -3
- package/src/utils/hooks/test/{use-cx.js → use-cx.jsdom.test.tsx} +8 -5
- package/src/utils/test/colors.js +1 -0
- package/src/utils/test/{get-node-text.js → get-node-text.tsx} +1 -0
- package/src/utils/test/math.js +1 -0
- package/src/utils/test/rtl.js +1 -0
- package/src/utils/test/space.js +1 -0
- package/src/utils/test/strings.js +1 -0
- package/src/utils/test/unit-values.js +1 -0
- package/src/v-stack/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +4 -4
- package/src/v-stack/test/{index.tsx → index.jsdom.test.tsx} +3 -0
- package/src/validated-form-controls/style.scss +11 -15
- package/src/validated-form-controls/test/{content-editable-control.tsx → content-editable-control.jsdom.test.tsx} +1 -1
- package/src/validated-form-controls/test/{custom-select-control.tsx → custom-select-control.jsdom.test.tsx} +3 -0
- package/src/validated-form-controls/test/{input-control.tsx → input-control.jsdom.test.tsx} +3 -0
- package/src/validated-form-controls/test/{range-control.tsx → range-control.jsdom.test.tsx} +3 -0
- package/src/validated-form-controls/test/{textarea-control.tsx → textarea-control.jsdom.test.tsx} +1 -0
- package/src/view/test/__snapshots__/{index.js.snap → index.jsdom.test.tsx.snap} +7 -7
- package/src/view/test/{index.js → index.jsdom.test.tsx} +7 -2
- package/src/context/test/__snapshots__/context-system-provider.js.snap +0 -35
- package/src/higher-order/with-filters/test/__snapshots__/index.tsx.snap +0 -87
- package/src/panel/test/__snapshots__/body.tsx.snap +0 -9
- package/src/panel/test/__snapshots__/header.tsx.snap +0 -9
- package/src/panel/test/__snapshots__/index.tsx.snap +0 -17
- package/src/panel/test/__snapshots__/row.tsx.snap +0 -17
- package/src/shortcut/test/__snapshots__/index.tsx.snap +0 -15
- package/src/snackbar/test/list.tsx +0 -39
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +0 -359
- package/src/tree-grid/test/__snapshots__/index.tsx.snap +0 -3
- package/src/tree-grid/test/__snapshots__/roving-tab-index-item.tsx.snap +0 -27
- package/src/tree-grid/test/__snapshots__/roving-tab-index.tsx.snap +0 -9
- package/src/tree-grid/test/cell.tsx +0 -46
- package/src/tree-grid/test/row.tsx +0 -37
- /package/src/card/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +0 -0
- /package/src/card/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/color-picker/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/custom-gradient-picker/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/custom-select-control/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +0 -0
- /package/src/custom-select-control/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/divider/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/elevation/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +0 -0
- /package/src/elevation/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/flex/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +0 -0
- /package/src/flex/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/form-file-upload/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/grid/test/{grid.tsx → grid.jsdom.test.tsx} +0 -0
- /package/src/heading/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +0 -0
- /package/src/heading/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/input-control/test/__snapshots__/{index.js.snap → index.jsdom.test.tsx.snap} +0 -0
- /package/src/progress-bar/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/resizable-box/resize-tooltip/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/resizable-box/resize-tooltip/test/{label.tsx → label.jsdom.test.tsx} +0 -0
- /package/src/scrollable/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/search-control/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/select-control/test/__snapshots__/{select-control.tsx.snap → select-control.jsdom.test.tsx.snap} +0 -0
- /package/src/select-control/test/{select-control.tsx → select-control.jsdom.test.tsx} +0 -0
- /package/src/slot-fill/test/__snapshots__/{slot.js.snap → slot.jsdom.test.tsx.snap} +0 -0
- /package/src/spacer/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +0 -0
- /package/src/spacer/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/text/test/__snapshots__/{index.tsx.snap → index.jsdom.test.tsx.snap} +0 -0
- /package/src/text/test/{index.tsx → index.jsdom.test.tsx} +0 -0
- /package/src/utils/test/{polymorphic-element.tsx → polymorphic-element.jsdom.test.tsx} +0 -0
package/src/item-group/types.ts
CHANGED
|
@@ -45,6 +45,10 @@ export interface ItemProps {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
export type ItemGroupContext = {
|
|
48
|
+
/**
|
|
49
|
+
* Whether items should use list semantics.
|
|
50
|
+
*/
|
|
51
|
+
isList: boolean;
|
|
48
52
|
/**
|
|
49
53
|
* When true, each `Item` will be styled as an individual item (e.g. with rounded
|
|
50
54
|
* borders), instead of being part of the same UI block with the rest of the items.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { createEvent, fireEvent, render, screen } from '@testing-library/react';
|
|
2
3
|
import KeyboardShortcuts from '..';
|
|
3
4
|
|
|
@@ -22,7 +23,7 @@ describe( 'KeyboardShortcuts', () => {
|
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
it( 'should capture key events', async () => {
|
|
25
|
-
const spy =
|
|
26
|
+
const spy = vi.fn();
|
|
26
27
|
|
|
27
28
|
render(
|
|
28
29
|
<KeyboardShortcuts
|
|
@@ -38,7 +39,7 @@ describe( 'KeyboardShortcuts', () => {
|
|
|
38
39
|
} );
|
|
39
40
|
|
|
40
41
|
it( 'should capture key events globally', () => {
|
|
41
|
-
const spy =
|
|
42
|
+
const spy = vi.fn();
|
|
42
43
|
|
|
43
44
|
render(
|
|
44
45
|
<div>
|
|
@@ -58,7 +59,7 @@ describe( 'KeyboardShortcuts', () => {
|
|
|
58
59
|
} );
|
|
59
60
|
|
|
60
61
|
it( 'should capture key events on specific event', () => {
|
|
61
|
-
const spy =
|
|
62
|
+
const spy = vi.fn();
|
|
62
63
|
|
|
63
64
|
render(
|
|
64
65
|
<div>
|
|
@@ -78,7 +79,7 @@ describe( 'KeyboardShortcuts', () => {
|
|
|
78
79
|
} );
|
|
79
80
|
|
|
80
81
|
it( 'should capture key events on children', () => {
|
|
81
|
-
const spy =
|
|
82
|
+
const spy = vi.fn();
|
|
82
83
|
|
|
83
84
|
render(
|
|
84
85
|
<div>
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import {
|
|
3
|
+
act,
|
|
4
|
+
fireEvent,
|
|
5
|
+
render,
|
|
6
|
+
screen,
|
|
7
|
+
waitFor,
|
|
8
|
+
} from '@testing-library/react';
|
|
2
9
|
import userEvent from '@testing-library/user-event';
|
|
3
10
|
import { useState } from '@wordpress/element';
|
|
4
11
|
import { Menu } from '..';
|
|
5
12
|
import Modal from '../../modal';
|
|
13
|
+
globalThis.wpVitest.mockCSSSupports();
|
|
14
|
+
globalThis.wpVitest.mockScrollIntoView();
|
|
15
|
+
globalThis.wpVitest.mockVisibleElements();
|
|
6
16
|
|
|
7
17
|
const waitForFocusedMenu = () =>
|
|
8
18
|
waitFor( () => expect( screen.getByRole( 'menu' ) ).toHaveFocus() );
|
|
@@ -30,7 +40,7 @@ const isBodyScrollLocked = () =>
|
|
|
30
40
|
document.body.classList.contains( 'modal-open' );
|
|
31
41
|
|
|
32
42
|
const resetTypeahead = () => {
|
|
33
|
-
act( () =>
|
|
43
|
+
act( () => vi.advanceTimersByTime( 500 ) );
|
|
34
44
|
};
|
|
35
45
|
|
|
36
46
|
const MenuWithModal = ( { nested = false }: { nested?: boolean } ) => {
|
|
@@ -443,7 +453,7 @@ describe( 'Menu', () => {
|
|
|
443
453
|
} );
|
|
444
454
|
|
|
445
455
|
it( 'should use a `hideOnClick` callback to decide whether to close', async () => {
|
|
446
|
-
const hideOnClick =
|
|
456
|
+
const hideOnClick = vi.fn( () => false );
|
|
447
457
|
render(
|
|
448
458
|
<Menu defaultOpen>
|
|
449
459
|
<Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
|
|
@@ -462,7 +472,7 @@ describe( 'Menu', () => {
|
|
|
462
472
|
} );
|
|
463
473
|
|
|
464
474
|
it( 'should close when a `hideOnClick` callback returns `true`', async () => {
|
|
465
|
-
const hideOnClick =
|
|
475
|
+
const hideOnClick = vi.fn( () => true );
|
|
466
476
|
render(
|
|
467
477
|
<Menu defaultOpen>
|
|
468
478
|
<Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
|
|
@@ -755,7 +765,7 @@ describe( 'Menu', () => {
|
|
|
755
765
|
} );
|
|
756
766
|
|
|
757
767
|
it( 'should check radio items and keep the menu open when clicking (controlled)', async () => {
|
|
758
|
-
const onRadioValueChangeSpy =
|
|
768
|
+
const onRadioValueChangeSpy = vi.fn();
|
|
759
769
|
|
|
760
770
|
const ControlledRadioGroup = () => {
|
|
761
771
|
const [ radioValue, setRadioValue ] = useState( 'two' );
|
|
@@ -843,7 +853,7 @@ describe( 'Menu', () => {
|
|
|
843
853
|
} );
|
|
844
854
|
|
|
845
855
|
it( 'should check radio items and keep the menu open when clicking (uncontrolled)', async () => {
|
|
846
|
-
const onRadioValueChangeSpy =
|
|
856
|
+
const onRadioValueChangeSpy = vi.fn();
|
|
847
857
|
render(
|
|
848
858
|
<Menu>
|
|
849
859
|
<Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
|
|
@@ -923,7 +933,7 @@ describe( 'Menu', () => {
|
|
|
923
933
|
} );
|
|
924
934
|
|
|
925
935
|
it( 'should check checkbox items and keep the menu open when clicking (controlled)', async () => {
|
|
926
|
-
const onCheckboxValueChangeSpy =
|
|
936
|
+
const onCheckboxValueChangeSpy = vi.fn();
|
|
927
937
|
|
|
928
938
|
const ControlledRadioGroup = () => {
|
|
929
939
|
const [ itemOneChecked, setItemOneChecked ] =
|
|
@@ -1055,7 +1065,7 @@ describe( 'Menu', () => {
|
|
|
1055
1065
|
} );
|
|
1056
1066
|
|
|
1057
1067
|
it( 'should check checkbox items and keep the menu open when clicking (uncontrolled)', async () => {
|
|
1058
|
-
const onCheckboxValueChangeSpy =
|
|
1068
|
+
const onCheckboxValueChangeSpy = vi.fn();
|
|
1059
1069
|
|
|
1060
1070
|
render(
|
|
1061
1071
|
<Menu>
|
|
@@ -1239,7 +1249,7 @@ describe( 'Menu', () => {
|
|
|
1239
1249
|
// The outer button can be focused by pressing tab. Doing so will cause
|
|
1240
1250
|
// the Menu to close.
|
|
1241
1251
|
await user.tab();
|
|
1242
|
-
expect( outerButton ).toHaveFocus();
|
|
1252
|
+
await waitFor( () => expect( outerButton ).toHaveFocus() );
|
|
1243
1253
|
await waitFor( () =>
|
|
1244
1254
|
expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument()
|
|
1245
1255
|
);
|
|
@@ -1365,15 +1375,8 @@ describe( 'Menu', () => {
|
|
|
1365
1375
|
} );
|
|
1366
1376
|
|
|
1367
1377
|
describe( 'typeahead', () => {
|
|
1368
|
-
beforeEach( () => {
|
|
1369
|
-
jest.useFakeTimers();
|
|
1370
|
-
user = userEvent.setup( {
|
|
1371
|
-
advanceTimers: jest.advanceTimersByTime,
|
|
1372
|
-
} );
|
|
1373
|
-
} );
|
|
1374
|
-
|
|
1375
1378
|
afterEach( () => {
|
|
1376
|
-
|
|
1379
|
+
vi.useRealTimers();
|
|
1377
1380
|
} );
|
|
1378
1381
|
|
|
1379
1382
|
it( 'should highlight matching item', async () => {
|
|
@@ -1394,9 +1397,17 @@ describe( 'Menu', () => {
|
|
|
1394
1397
|
} )
|
|
1395
1398
|
);
|
|
1396
1399
|
await waitForFocusedMenu();
|
|
1400
|
+
vi.useFakeTimers();
|
|
1397
1401
|
|
|
1398
1402
|
// Type "tw", it should match and focus the item with content "Two"
|
|
1399
|
-
|
|
1403
|
+
fireEvent.keyDown( screen.getByRole( 'menu' ), {
|
|
1404
|
+
code: 'KeyT',
|
|
1405
|
+
key: 't',
|
|
1406
|
+
} );
|
|
1407
|
+
fireEvent.keyDown( screen.getByRole( 'menu' ), {
|
|
1408
|
+
code: 'KeyW',
|
|
1409
|
+
key: 'w',
|
|
1410
|
+
} );
|
|
1400
1411
|
expect(
|
|
1401
1412
|
screen.getByRole( 'menuitem', { name: 'Two' } )
|
|
1402
1413
|
).toHaveFocus();
|
|
@@ -1405,7 +1416,18 @@ describe( 'Menu', () => {
|
|
|
1405
1416
|
resetTypeahead();
|
|
1406
1417
|
|
|
1407
1418
|
// Type "on", it should match and focus the item with content "One"
|
|
1408
|
-
|
|
1419
|
+
fireEvent.keyDown(
|
|
1420
|
+
screen.getByRole( 'menuitem', { name: 'Two' } ),
|
|
1421
|
+
{
|
|
1422
|
+
key: 'o',
|
|
1423
|
+
}
|
|
1424
|
+
);
|
|
1425
|
+
fireEvent.keyDown(
|
|
1426
|
+
screen.getByRole( 'menuitem', { name: 'Two' } ),
|
|
1427
|
+
{
|
|
1428
|
+
key: 'n',
|
|
1429
|
+
}
|
|
1430
|
+
);
|
|
1409
1431
|
expect(
|
|
1410
1432
|
screen.getByRole( 'menuitem', { name: 'One' } )
|
|
1411
1433
|
).toHaveFocus();
|
|
@@ -1429,16 +1451,20 @@ describe( 'Menu', () => {
|
|
|
1429
1451
|
} )
|
|
1430
1452
|
);
|
|
1431
1453
|
await waitForFocusedMenu();
|
|
1454
|
+
vi.useFakeTimers();
|
|
1432
1455
|
|
|
1433
1456
|
// Type a string that doesn't match any items. Focus shouldn't move.
|
|
1434
|
-
|
|
1457
|
+
fireEvent.keyDown( screen.getByRole( 'menu' ), { key: 'a' } );
|
|
1458
|
+
fireEvent.keyDown( screen.getByRole( 'menu' ), { key: 'b' } );
|
|
1459
|
+
fireEvent.keyDown( screen.getByRole( 'menu' ), { key: 'c' } );
|
|
1435
1460
|
expect( screen.getByRole( 'menu' ) ).toHaveFocus();
|
|
1436
1461
|
|
|
1437
1462
|
// Reset the typeahead search so the next keystrokes start a new query.
|
|
1438
1463
|
resetTypeahead();
|
|
1439
1464
|
|
|
1440
1465
|
// Type "on", it should match and focus the item with content "One"
|
|
1441
|
-
|
|
1466
|
+
fireEvent.keyDown( screen.getByRole( 'menu' ), { key: 'o' } );
|
|
1467
|
+
fireEvent.keyDown( screen.getByRole( 'menu' ), { key: 'n' } );
|
|
1442
1468
|
expect(
|
|
1443
1469
|
screen.getByRole( 'menuitem', { name: 'One' } )
|
|
1444
1470
|
).toHaveFocus();
|
|
@@ -1447,7 +1473,18 @@ describe( 'Menu', () => {
|
|
|
1447
1473
|
resetTypeahead();
|
|
1448
1474
|
|
|
1449
1475
|
// Type a string that doesn't match any items. Focus shouldn't move.
|
|
1450
|
-
|
|
1476
|
+
fireEvent.keyDown(
|
|
1477
|
+
screen.getByRole( 'menuitem', { name: 'One' } ),
|
|
1478
|
+
{ key: 'a' }
|
|
1479
|
+
);
|
|
1480
|
+
fireEvent.keyDown(
|
|
1481
|
+
screen.getByRole( 'menuitem', { name: 'One' } ),
|
|
1482
|
+
{ key: 'b' }
|
|
1483
|
+
);
|
|
1484
|
+
fireEvent.keyDown(
|
|
1485
|
+
screen.getByRole( 'menuitem', { name: 'One' } ),
|
|
1486
|
+
{ key: 'c' }
|
|
1487
|
+
);
|
|
1451
1488
|
expect(
|
|
1452
1489
|
screen.getByRole( 'menuitem', { name: 'One' } )
|
|
1453
1490
|
).toHaveFocus();
|
|
@@ -1456,7 +1493,14 @@ describe( 'Menu', () => {
|
|
|
1456
1493
|
resetTypeahead();
|
|
1457
1494
|
|
|
1458
1495
|
// Type "tw", it should match and focus the item with content "Two"
|
|
1459
|
-
|
|
1496
|
+
fireEvent.keyDown(
|
|
1497
|
+
screen.getByRole( 'menuitem', { name: 'One' } ),
|
|
1498
|
+
{ key: 't' }
|
|
1499
|
+
);
|
|
1500
|
+
fireEvent.keyDown(
|
|
1501
|
+
screen.getByRole( 'menuitem', { name: 'One' } ),
|
|
1502
|
+
{ key: 'w' }
|
|
1503
|
+
);
|
|
1460
1504
|
expect(
|
|
1461
1505
|
screen.getByRole( 'menuitem', { name: 'Two' } )
|
|
1462
1506
|
).toHaveFocus();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
-
exports[`MenuItem should match snapshot when all props provided 1`] = `
|
|
3
|
+
exports[`MenuItem > should match snapshot when all props provided 1`] = `
|
|
4
4
|
<button
|
|
5
5
|
aria-checked="true"
|
|
6
6
|
class="components-button components-menu-item__button my-class is-compact"
|
|
@@ -34,7 +34,7 @@ exports[`MenuItem should match snapshot when all props provided 1`] = `
|
|
|
34
34
|
</button>
|
|
35
35
|
`;
|
|
36
36
|
|
|
37
|
-
exports[`MenuItem should match snapshot when info is provided 1`] = `
|
|
37
|
+
exports[`MenuItem > should match snapshot when info is provided 1`] = `
|
|
38
38
|
<button
|
|
39
39
|
class="components-button components-menu-item__button is-compact"
|
|
40
40
|
role="menuitem"
|
|
@@ -61,7 +61,7 @@ exports[`MenuItem should match snapshot when info is provided 1`] = `
|
|
|
61
61
|
</button>
|
|
62
62
|
`;
|
|
63
63
|
|
|
64
|
-
exports[`MenuItem should match snapshot when isSelected and role are optionally provided 1`] = `
|
|
64
|
+
exports[`MenuItem > should match snapshot when isSelected and role are optionally provided 1`] = `
|
|
65
65
|
<button
|
|
66
66
|
class="components-button components-menu-item__button my-class is-compact"
|
|
67
67
|
role="menuitem"
|
|
@@ -94,7 +94,7 @@ exports[`MenuItem should match snapshot when isSelected and role are optionally
|
|
|
94
94
|
</button>
|
|
95
95
|
`;
|
|
96
96
|
|
|
97
|
-
exports[`MenuItem should match snapshot when only label provided 1`] = `
|
|
97
|
+
exports[`MenuItem > should match snapshot when only label provided 1`] = `
|
|
98
98
|
<button
|
|
99
99
|
class="components-button components-menu-item__button is-compact"
|
|
100
100
|
role="menuitem"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { render, screen, within } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import { useEffect, useState } from '@wordpress/element';
|
|
@@ -7,6 +8,9 @@ import {
|
|
|
7
8
|
} from '@wordpress/ui';
|
|
8
9
|
import Modal from '../';
|
|
9
10
|
import type { ModalProps } from '../types';
|
|
11
|
+
globalThis.wpVitest.mockCSSSupports();
|
|
12
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
13
|
+
globalThis.wpVitest.mockVisibleElements();
|
|
10
14
|
|
|
11
15
|
const noop = () => {};
|
|
12
16
|
|
|
@@ -72,7 +76,7 @@ describe( 'Modal', () => {
|
|
|
72
76
|
|
|
73
77
|
it( 'should call onRequestClose when the escape key is pressed', async () => {
|
|
74
78
|
const user = userEvent.setup();
|
|
75
|
-
const onRequestClose =
|
|
79
|
+
const onRequestClose = vi.fn();
|
|
76
80
|
render(
|
|
77
81
|
<Modal onRequestClose={ onRequestClose }>
|
|
78
82
|
<p>Modal content</p>
|
|
@@ -84,7 +88,7 @@ describe( 'Modal', () => {
|
|
|
84
88
|
|
|
85
89
|
it( 'should stop an Escape key press from propagating when it dismisses the modal', async () => {
|
|
86
90
|
const user = userEvent.setup();
|
|
87
|
-
const documentKeyDownHandler =
|
|
91
|
+
const documentKeyDownHandler = vi.fn();
|
|
88
92
|
document.addEventListener( 'keydown', documentKeyDownHandler );
|
|
89
93
|
|
|
90
94
|
try {
|
|
@@ -131,7 +135,7 @@ describe( 'Modal', () => {
|
|
|
131
135
|
|
|
132
136
|
it( 'should request closing of any non nested modal when opened', async () => {
|
|
133
137
|
const user = userEvent.setup();
|
|
134
|
-
const onRequestClose =
|
|
138
|
+
const onRequestClose = vi.fn();
|
|
135
139
|
|
|
136
140
|
const DismissAdjacent = () => {
|
|
137
141
|
const [ isShown, setIsShown ] = useState( false );
|
|
@@ -156,7 +160,7 @@ describe( 'Modal', () => {
|
|
|
156
160
|
|
|
157
161
|
it( 'should support nested modals', async () => {
|
|
158
162
|
const user = userEvent.setup();
|
|
159
|
-
const onRequestClose =
|
|
163
|
+
const onRequestClose = vi.fn();
|
|
160
164
|
|
|
161
165
|
const NestSupport = () => {
|
|
162
166
|
const [ isShown, setIsShown ] = useState( false );
|
|
@@ -181,7 +185,7 @@ describe( 'Modal', () => {
|
|
|
181
185
|
|
|
182
186
|
it( 'should request closing of nested modal when outer modal unmounts', async () => {
|
|
183
187
|
const user = userEvent.setup();
|
|
184
|
-
const onRequestClose =
|
|
188
|
+
const onRequestClose = vi.fn();
|
|
185
189
|
|
|
186
190
|
const RequestCloseOfNested = () => {
|
|
187
191
|
const [ isShown, setIsShown ] = useState( true );
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { render, screen } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import { NavigableMenu } from '../menu';
|
|
4
5
|
import type { NavigableMenuProps } from '../types';
|
|
6
|
+
globalThis.wpVitest.mockVisibleElements();
|
|
5
7
|
|
|
6
8
|
const NavigableMenuTestCase = ( props: NavigableMenuProps ) => (
|
|
7
9
|
<NavigableMenu { ...props }>
|
|
@@ -25,7 +27,7 @@ describe( 'NavigableMenu', () => {
|
|
|
25
27
|
it( 'moves focus on its focusable children by using the up/down arrow keys', async () => {
|
|
26
28
|
const user = userEvent.setup();
|
|
27
29
|
|
|
28
|
-
const onNavigateSpy =
|
|
30
|
+
const onNavigateSpy = vi.fn();
|
|
29
31
|
|
|
30
32
|
render( <NavigableMenuTestCase onNavigate={ onNavigateSpy } /> );
|
|
31
33
|
|
|
@@ -64,7 +66,7 @@ describe( 'NavigableMenu', () => {
|
|
|
64
66
|
it( 'moves focus on its focusable children by using the left/right arrow keys when the `orientation`prop is set to `horizontal', async () => {
|
|
65
67
|
const user = userEvent.setup();
|
|
66
68
|
|
|
67
|
-
const onNavigateSpy =
|
|
69
|
+
const onNavigateSpy = vi.fn();
|
|
68
70
|
|
|
69
71
|
render(
|
|
70
72
|
<NavigableMenuTestCase
|
|
@@ -108,7 +110,7 @@ describe( 'NavigableMenu', () => {
|
|
|
108
110
|
it( 'should stop at the edges when the `cycle` prop is set to `false`', async () => {
|
|
109
111
|
const user = userEvent.setup();
|
|
110
112
|
|
|
111
|
-
const onNavigateSpy =
|
|
113
|
+
const onNavigateSpy = vi.fn();
|
|
112
114
|
|
|
113
115
|
const { rerender } = render(
|
|
114
116
|
<NavigableMenuTestCase onNavigate={ onNavigateSpy } />
|
|
@@ -166,7 +168,7 @@ describe( 'NavigableMenu', () => {
|
|
|
166
168
|
it( 'stops keydown event propagation when arrow keys are pressed, regardless of the `orientation` prop', async () => {
|
|
167
169
|
const user = userEvent.setup();
|
|
168
170
|
|
|
169
|
-
const externalWrapperOnKeyDownSpy =
|
|
171
|
+
const externalWrapperOnKeyDownSpy = vi.fn();
|
|
170
172
|
|
|
171
173
|
render(
|
|
172
174
|
// Disable reason: this is only for test purposes.
|
|
@@ -193,7 +195,7 @@ describe( 'NavigableMenu', () => {
|
|
|
193
195
|
} );
|
|
194
196
|
|
|
195
197
|
it( 'should keep forwarded callback refs stable across rerenders', () => {
|
|
196
|
-
const refSpy =
|
|
198
|
+
const refSpy = vi.fn();
|
|
197
199
|
|
|
198
200
|
const { rerender } = render(
|
|
199
201
|
<NavigableMenu ref={ refSpy }>
|
package/src/navigable-container/test/{tababble-container.tsx → tababble-container.jsdom.test.tsx}
RENAMED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { render, screen } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import { TabbableContainer } from '../tabbable';
|
|
4
5
|
import type { TabbableContainerProps } from '../types';
|
|
6
|
+
globalThis.wpVitest.mockVisibleElements();
|
|
5
7
|
|
|
6
8
|
const TabbableContainerTestCase = ( props: TabbableContainerProps ) => (
|
|
7
9
|
<>
|
|
@@ -32,7 +34,7 @@ describe( 'TabbableContainer', () => {
|
|
|
32
34
|
it( 'moves focus on its tabbable children by using the tab key', async () => {
|
|
33
35
|
const user = userEvent.setup();
|
|
34
36
|
|
|
35
|
-
const onNavigateSpy =
|
|
37
|
+
const onNavigateSpy = vi.fn();
|
|
36
38
|
|
|
37
39
|
render( <TabbableContainerTestCase onNavigate={ onNavigateSpy } /> );
|
|
38
40
|
|
|
@@ -65,7 +67,7 @@ describe( 'TabbableContainer', () => {
|
|
|
65
67
|
it( 'should stop at the edges when the `cycle` prop is set to `false`', async () => {
|
|
66
68
|
const user = userEvent.setup();
|
|
67
69
|
|
|
68
|
-
const onNavigateSpy =
|
|
70
|
+
const onNavigateSpy = vi.fn();
|
|
69
71
|
|
|
70
72
|
const { rerender } = render(
|
|
71
73
|
<TabbableContainerTestCase onNavigate={ onNavigateSpy } />
|
|
@@ -137,7 +139,7 @@ describe( 'TabbableContainer', () => {
|
|
|
137
139
|
it( 'stops keydown event propagation when the tab key is pressed', async () => {
|
|
138
140
|
const user = userEvent.setup();
|
|
139
141
|
|
|
140
|
-
const externalWrapperOnKeyDownSpy =
|
|
142
|
+
const externalWrapperOnKeyDownSpy = vi.fn();
|
|
141
143
|
|
|
142
144
|
render(
|
|
143
145
|
// Disable reason: this is only for test purposes.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
3
|
import { render, screen } from '@testing-library/react';
|
|
3
4
|
import userEvent from '@testing-library/user-event';
|
|
@@ -6,6 +7,8 @@ import Button from '../../button';
|
|
|
6
7
|
import { Navigator, useNavigator } from '..';
|
|
7
8
|
import { NavigatorToParentButton } from '../legacy';
|
|
8
9
|
import type { NavigateOptions } from '../types';
|
|
10
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
11
|
+
globalThis.wpVitest.mockVisibleElements();
|
|
9
12
|
|
|
10
13
|
const INVALID_HTML_ATTRIBUTE = {
|
|
11
14
|
raw: '/ "\'><=invalid_path',
|
|
@@ -497,7 +500,7 @@ describe( 'Navigator', () => {
|
|
|
497
500
|
} );
|
|
498
501
|
|
|
499
502
|
it( 'should navigate across screens', async () => {
|
|
500
|
-
const spy =
|
|
503
|
+
const spy = vi.fn();
|
|
501
504
|
|
|
502
505
|
const user = userEvent.setup();
|
|
503
506
|
|
|
@@ -567,7 +570,7 @@ describe( 'Navigator', () => {
|
|
|
567
570
|
} );
|
|
568
571
|
|
|
569
572
|
it( 'should not render anything if the path does not match any available screen', async () => {
|
|
570
|
-
const spy =
|
|
573
|
+
const spy = vi.fn();
|
|
571
574
|
|
|
572
575
|
const user = userEvent.setup();
|
|
573
576
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
-
exports[`Notice should match snapshot 1`] = `
|
|
3
|
+
exports[`Notice > should match snapshot 1`] = `
|
|
4
4
|
<div>
|
|
5
5
|
<div
|
|
6
6
|
class="components-notice is-success"
|
|
@@ -48,15 +48,18 @@ exports[`Notice should match snapshot 1`] = `
|
|
|
48
48
|
>
|
|
49
49
|
<svg
|
|
50
50
|
aria-hidden="true"
|
|
51
|
-
fill="currentColor"
|
|
52
51
|
focusable="false"
|
|
53
52
|
height="24"
|
|
53
|
+
stroke="currentColor"
|
|
54
|
+
stroke-width="1.5"
|
|
55
|
+
style="fill: none;"
|
|
54
56
|
viewBox="0 0 24 24"
|
|
55
57
|
width="24"
|
|
56
58
|
xmlns="http://www.w3.org/2000/svg"
|
|
57
59
|
>
|
|
58
60
|
<path
|
|
59
|
-
d="
|
|
61
|
+
d="M7.75 16.25L16.25 7.75M16.25 16.25L7.75 7.75"
|
|
62
|
+
vector-effect="non-scaling-stroke"
|
|
60
63
|
/>
|
|
61
64
|
</svg>
|
|
62
65
|
</button>
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { render, screen } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import { speak } from '@wordpress/a11y';
|
|
4
5
|
import Notice from '../index';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
vi.mock( import( '@wordpress/a11y' ), async ( importOriginal ) => ( {
|
|
8
|
+
...( await importOriginal() ),
|
|
9
|
+
speak: vi.fn(),
|
|
10
|
+
} ) );
|
|
11
|
+
const mockedSpeak = vi.mocked( speak );
|
|
8
12
|
|
|
9
13
|
function getNoticeWrapper( container: HTMLElement ) {
|
|
10
14
|
return container.firstChild;
|
|
@@ -118,7 +122,7 @@ describe( 'Notice', () => {
|
|
|
118
122
|
actions={ [
|
|
119
123
|
{
|
|
120
124
|
label: 'Disabled action',
|
|
121
|
-
onClick:
|
|
125
|
+
onClick: vi.fn(),
|
|
122
126
|
disabled: true,
|
|
123
127
|
},
|
|
124
128
|
] }
|
|
@@ -136,7 +140,7 @@ describe( 'Notice', () => {
|
|
|
136
140
|
|
|
137
141
|
it( 'should call onClick when action with url is clicked', async () => {
|
|
138
142
|
const user = userEvent.setup();
|
|
139
|
-
const onClick =
|
|
143
|
+
const onClick = vi.fn( ( e ) => e.preventDefault() );
|
|
140
144
|
|
|
141
145
|
render(
|
|
142
146
|
<Notice
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { describe, expect, it, test, vi } from 'vitest';
|
|
1
2
|
import { render, screen } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import { useState } from '@wordpress/element';
|
|
4
5
|
import _NumberControl from '..';
|
|
5
6
|
import type { NumberControlProps } from '../types';
|
|
6
7
|
|
|
8
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
9
|
+
|
|
7
10
|
const NumberControl = (
|
|
8
11
|
props: React.ComponentProps< typeof _NumberControl >
|
|
9
12
|
) => <_NumberControl { ...props } />;
|
|
@@ -50,7 +53,7 @@ describe( 'NumberControl', () => {
|
|
|
50
53
|
describe( 'onChange handling', () => {
|
|
51
54
|
it( 'should provide onChange callback with number value', async () => {
|
|
52
55
|
const user = userEvent.setup();
|
|
53
|
-
const spy =
|
|
56
|
+
const spy = vi.fn();
|
|
54
57
|
|
|
55
58
|
render(
|
|
56
59
|
<NumberControl value={ 5 } onChange={ ( v ) => spy( v ) } />
|
|
@@ -65,7 +68,7 @@ describe( 'NumberControl', () => {
|
|
|
65
68
|
|
|
66
69
|
it( 'should call onChange callback when value is clamped on blur', async () => {
|
|
67
70
|
const user = userEvent.setup();
|
|
68
|
-
const onChangeSpy =
|
|
71
|
+
const onChangeSpy = vi.fn();
|
|
69
72
|
|
|
70
73
|
render(
|
|
71
74
|
<NumberControl
|
|
@@ -108,7 +111,7 @@ describe( 'NumberControl', () => {
|
|
|
108
111
|
|
|
109
112
|
it( 'should call onChange callback when value is not valid', async () => {
|
|
110
113
|
const user = userEvent.setup();
|
|
111
|
-
const onChangeSpy =
|
|
114
|
+
const onChangeSpy = vi.fn();
|
|
112
115
|
|
|
113
116
|
render(
|
|
114
117
|
<NumberControl
|
|
@@ -251,7 +254,7 @@ describe( 'NumberControl', () => {
|
|
|
251
254
|
it( 'should fire onKeyDown callback', async () => {
|
|
252
255
|
const user = userEvent.setup();
|
|
253
256
|
|
|
254
|
-
const spy =
|
|
257
|
+
const spy = vi.fn();
|
|
255
258
|
|
|
256
259
|
render( <StatefulNumberControl value={ 5 } onKeyDown={ spy } /> );
|
|
257
260
|
|
|
@@ -404,7 +407,7 @@ describe( 'NumberControl', () => {
|
|
|
404
407
|
describe( 'Key DOWN interactions', () => {
|
|
405
408
|
it( 'should fire onKeyDown callback', async () => {
|
|
406
409
|
const user = userEvent.setup();
|
|
407
|
-
const spy =
|
|
410
|
+
const spy = vi.fn();
|
|
408
411
|
|
|
409
412
|
render( <StatefulNumberControl value={ 5 } onKeyDown={ spy } /> );
|
|
410
413
|
|
|
@@ -587,7 +590,7 @@ describe( 'NumberControl', () => {
|
|
|
587
590
|
'should spin %s to %s when props = %o',
|
|
588
591
|
async ( direction, expectedValue, props ) => {
|
|
589
592
|
const user = userEvent.setup();
|
|
590
|
-
const onChange =
|
|
593
|
+
const onChange = vi.fn();
|
|
591
594
|
render(
|
|
592
595
|
<NumberControl
|
|
593
596
|
{ ...props }
|