@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
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
-
exports[`ColorIndicator matches the snapshot 1`] = `
|
|
3
|
+
exports[`ColorIndicator > matches the snapshot 1`] = `
|
|
4
4
|
<div>
|
|
5
5
|
<span
|
|
6
6
|
aria-label="sample label"
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { render, screen, waitFor } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import { useState } from '@wordpress/element';
|
|
4
5
|
import ColorPalette from '..';
|
|
5
6
|
|
|
7
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
8
|
+
|
|
6
9
|
const EXAMPLE_COLORS = [
|
|
7
10
|
{ name: 'red', color: '#f00' },
|
|
8
11
|
{ name: 'green', color: '#0f0' },
|
|
@@ -36,7 +39,7 @@ const ControlledColorPalette = ( {
|
|
|
36
39
|
describe( 'ColorPalette', () => {
|
|
37
40
|
it( 'should use matching values only for display in command button presentation', async () => {
|
|
38
41
|
const user = userEvent.setup();
|
|
39
|
-
const onChange =
|
|
42
|
+
const onChange = vi.fn();
|
|
40
43
|
render(
|
|
41
44
|
<ColorPalette
|
|
42
45
|
aria-label="Colors"
|
|
@@ -66,7 +69,7 @@ describe( 'ColorPalette', () => {
|
|
|
66
69
|
<ColorPalette
|
|
67
70
|
aria-label="Colors"
|
|
68
71
|
colors={ EXAMPLE_COLORS }
|
|
69
|
-
onChange={
|
|
72
|
+
onChange={ vi.fn() }
|
|
70
73
|
asButtons={ false }
|
|
71
74
|
presentation="command-buttons"
|
|
72
75
|
disableCustomColors
|
|
@@ -89,7 +92,7 @@ describe( 'ColorPalette', () => {
|
|
|
89
92
|
colors={ DUPLICATE_COLOR_PALETTE }
|
|
90
93
|
value="#000"
|
|
91
94
|
selectedSlug="dark-background"
|
|
92
|
-
onChange={
|
|
95
|
+
onChange={ vi.fn() }
|
|
93
96
|
asButtons
|
|
94
97
|
disableCustomColors
|
|
95
98
|
clearable={ false }
|
|
@@ -111,7 +114,7 @@ describe( 'ColorPalette', () => {
|
|
|
111
114
|
} );
|
|
112
115
|
|
|
113
116
|
it( 'should render three color button options', () => {
|
|
114
|
-
const onChange =
|
|
117
|
+
const onChange = vi.fn();
|
|
115
118
|
|
|
116
119
|
render(
|
|
117
120
|
<ColorPalette
|
|
@@ -126,7 +129,7 @@ describe( 'ColorPalette', () => {
|
|
|
126
129
|
|
|
127
130
|
it( 'should call onClick on an active button with undefined', async () => {
|
|
128
131
|
const user = userEvent.setup();
|
|
129
|
-
const onChange =
|
|
132
|
+
const onChange = vi.fn();
|
|
130
133
|
|
|
131
134
|
render(
|
|
132
135
|
<ColorPalette
|
|
@@ -144,7 +147,7 @@ describe( 'ColorPalette', () => {
|
|
|
144
147
|
|
|
145
148
|
it( 'should call onClick on an inactive button', async () => {
|
|
146
149
|
const user = userEvent.setup();
|
|
147
|
-
const onChange =
|
|
150
|
+
const onChange = vi.fn();
|
|
148
151
|
|
|
149
152
|
render(
|
|
150
153
|
<ColorPalette
|
|
@@ -173,7 +176,7 @@ describe( 'ColorPalette', () => {
|
|
|
173
176
|
|
|
174
177
|
it( 'should call onClick with undefined, when the clearButton onClick is triggered', async () => {
|
|
175
178
|
const user = userEvent.setup();
|
|
176
|
-
const onChange =
|
|
179
|
+
const onChange = vi.fn();
|
|
177
180
|
|
|
178
181
|
render(
|
|
179
182
|
<ColorPalette
|
|
@@ -190,7 +193,7 @@ describe( 'ColorPalette', () => {
|
|
|
190
193
|
} );
|
|
191
194
|
|
|
192
195
|
it( 'should render custom color picker', () => {
|
|
193
|
-
const onChange =
|
|
196
|
+
const onChange = vi.fn();
|
|
194
197
|
|
|
195
198
|
render(
|
|
196
199
|
<ColorPalette
|
|
@@ -206,7 +209,7 @@ describe( 'ColorPalette', () => {
|
|
|
206
209
|
} );
|
|
207
210
|
|
|
208
211
|
it( 'should allow disabling custom color picker', () => {
|
|
209
|
-
const onChange =
|
|
212
|
+
const onChange = vi.fn();
|
|
210
213
|
|
|
211
214
|
render(
|
|
212
215
|
<ColorPalette
|
|
@@ -223,7 +226,7 @@ describe( 'ColorPalette', () => {
|
|
|
223
226
|
} );
|
|
224
227
|
|
|
225
228
|
it( 'should render nothing when custom colors are disabled, there are no colors, and it is not clearable', () => {
|
|
226
|
-
const onChange =
|
|
229
|
+
const onChange = vi.fn();
|
|
227
230
|
const { container } = render(
|
|
228
231
|
<ColorPalette
|
|
229
232
|
colors={ [] }
|
|
@@ -238,7 +241,7 @@ describe( 'ColorPalette', () => {
|
|
|
238
241
|
|
|
239
242
|
it( 'should render dropdown and its content', async () => {
|
|
240
243
|
const user = userEvent.setup();
|
|
241
|
-
const onChange =
|
|
244
|
+
const onChange = vi.fn();
|
|
242
245
|
|
|
243
246
|
render(
|
|
244
247
|
<ColorPalette
|
|
@@ -277,7 +280,7 @@ describe( 'ColorPalette', () => {
|
|
|
277
280
|
} );
|
|
278
281
|
|
|
279
282
|
it( 'should show the clear button by default', () => {
|
|
280
|
-
const onChange =
|
|
283
|
+
const onChange = vi.fn();
|
|
281
284
|
|
|
282
285
|
render(
|
|
283
286
|
<ColorPalette
|
|
@@ -293,7 +296,7 @@ describe( 'ColorPalette', () => {
|
|
|
293
296
|
} );
|
|
294
297
|
|
|
295
298
|
it( 'should show the clear button even when `colors` is an empty array', () => {
|
|
296
|
-
const onChange =
|
|
299
|
+
const onChange = vi.fn();
|
|
297
300
|
|
|
298
301
|
render( <ColorPalette colors={ [] } onChange={ onChange } /> );
|
|
299
302
|
|
|
@@ -303,7 +306,7 @@ describe( 'ColorPalette', () => {
|
|
|
303
306
|
} );
|
|
304
307
|
|
|
305
308
|
it( 'should still show the clear button when colors is empty and custom colors are disabled', () => {
|
|
306
|
-
const onChange =
|
|
309
|
+
const onChange = vi.fn();
|
|
307
310
|
|
|
308
311
|
render(
|
|
309
312
|
<ColorPalette
|
|
@@ -374,7 +377,7 @@ describe( 'ColorPalette', () => {
|
|
|
374
377
|
<ColorPalette
|
|
375
378
|
colors={ DUPLICATE_COLOR_PALETTE }
|
|
376
379
|
value={ undefined }
|
|
377
|
-
onChange={
|
|
380
|
+
onChange={ vi.fn() }
|
|
378
381
|
/>
|
|
379
382
|
);
|
|
380
383
|
|
|
@@ -387,7 +390,7 @@ describe( 'ColorPalette', () => {
|
|
|
387
390
|
colors={ DUPLICATE_COLOR_PALETTE }
|
|
388
391
|
value="#000"
|
|
389
392
|
selectedSlug="dark-text"
|
|
390
|
-
onChange={
|
|
393
|
+
onChange={ vi.fn() }
|
|
391
394
|
/>
|
|
392
395
|
);
|
|
393
396
|
|
|
@@ -403,7 +406,7 @@ describe( 'ColorPalette', () => {
|
|
|
403
406
|
<ColorPalette
|
|
404
407
|
colors={ DUPLICATE_COLOR_PALETTE }
|
|
405
408
|
value="#000"
|
|
406
|
-
onChange={
|
|
409
|
+
onChange={ vi.fn() }
|
|
407
410
|
/>
|
|
408
411
|
);
|
|
409
412
|
|
|
@@ -420,7 +423,7 @@ describe( 'ColorPalette', () => {
|
|
|
420
423
|
colors={ DUPLICATE_COLOR_PALETTE }
|
|
421
424
|
value="#000"
|
|
422
425
|
selectedSlug=""
|
|
423
|
-
onChange={
|
|
426
|
+
onChange={ vi.fn() }
|
|
424
427
|
/>
|
|
425
428
|
);
|
|
426
429
|
|
|
@@ -435,7 +438,7 @@ describe( 'ColorPalette', () => {
|
|
|
435
438
|
colors={ DUPLICATE_COLOR_PALETTE }
|
|
436
439
|
value="#000"
|
|
437
440
|
selectedSlug="dark-text"
|
|
438
|
-
onChange={
|
|
441
|
+
onChange={ vi.fn() }
|
|
439
442
|
/>
|
|
440
443
|
);
|
|
441
444
|
|
|
@@ -448,7 +451,7 @@ describe( 'ColorPalette', () => {
|
|
|
448
451
|
|
|
449
452
|
it( 'should pass slug as third argument to onChange when a swatch is clicked', async () => {
|
|
450
453
|
const user = userEvent.setup();
|
|
451
|
-
const onChange =
|
|
454
|
+
const onChange = vi.fn();
|
|
452
455
|
|
|
453
456
|
render(
|
|
454
457
|
<ColorPalette
|
|
@@ -466,7 +469,7 @@ describe( 'ColorPalette', () => {
|
|
|
466
469
|
|
|
467
470
|
it( 'should clear the selection when the selected swatch is clicked', async () => {
|
|
468
471
|
const user = userEvent.setup();
|
|
469
|
-
const onChange =
|
|
472
|
+
const onChange = vi.fn();
|
|
470
473
|
|
|
471
474
|
render(
|
|
472
475
|
<ColorPalette
|
|
@@ -496,7 +499,7 @@ describe( 'ColorPalette', () => {
|
|
|
496
499
|
colors={ MIXED_PALETTE }
|
|
497
500
|
value="#fff"
|
|
498
501
|
selectedSlug="brand-white"
|
|
499
|
-
onChange={
|
|
502
|
+
onChange={ vi.fn() }
|
|
500
503
|
/>
|
|
501
504
|
);
|
|
502
505
|
|
|
@@ -1,9 +1,14 @@
|
|
|
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 { useState } from '@wordpress/element';
|
|
4
5
|
import _ComboboxControl from '..';
|
|
5
6
|
import type { ComboboxControlOption, ComboboxControlProps } from '../types';
|
|
6
7
|
|
|
8
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
9
|
+
|
|
10
|
+
globalThis.wpVitest.mockScrollIntoView();
|
|
11
|
+
|
|
7
12
|
const timezones = [
|
|
8
13
|
{ label: 'Greenwich Mean Time', value: 'GMT' },
|
|
9
14
|
{ label: 'Universal Coordinated Time', value: 'UTC' },
|
|
@@ -120,7 +125,7 @@ describe.each( [
|
|
|
120
125
|
it( 'should select the correct option via click events', async () => {
|
|
121
126
|
const user = await userEvent.setup();
|
|
122
127
|
const targetOption = timezones[ 2 ];
|
|
123
|
-
const onChangeSpy =
|
|
128
|
+
const onChangeSpy = vi.fn();
|
|
124
129
|
render(
|
|
125
130
|
<Component
|
|
126
131
|
options={ timezones }
|
|
@@ -145,7 +150,7 @@ describe.each( [
|
|
|
145
150
|
const user = await userEvent.setup();
|
|
146
151
|
const targetIndex = 4;
|
|
147
152
|
const targetOption = timezones[ targetIndex ];
|
|
148
|
-
const onChangeSpy =
|
|
153
|
+
const onChangeSpy = vi.fn();
|
|
149
154
|
render(
|
|
150
155
|
<Component
|
|
151
156
|
options={ timezones }
|
|
@@ -173,7 +178,7 @@ describe.each( [
|
|
|
173
178
|
|
|
174
179
|
it( 'calls onFilterValueChange whenever the textbox changes', async () => {
|
|
175
180
|
const user = userEvent.setup();
|
|
176
|
-
const onFilterValueChangeSpy =
|
|
181
|
+
const onFilterValueChangeSpy = vi.fn();
|
|
177
182
|
render(
|
|
178
183
|
<Component
|
|
179
184
|
options={ timezones }
|
|
@@ -190,7 +195,7 @@ describe.each( [
|
|
|
190
195
|
|
|
191
196
|
it( 'clears the textbox value if there is no selected value on blur', async () => {
|
|
192
197
|
const user = userEvent.setup();
|
|
193
|
-
const onFilterValueChangeSpy =
|
|
198
|
+
const onFilterValueChangeSpy = vi.fn();
|
|
194
199
|
render(
|
|
195
200
|
<Component
|
|
196
201
|
options={ timezones }
|
|
@@ -214,7 +219,7 @@ describe.each( [
|
|
|
214
219
|
it( 'should select the correct option from a search', async () => {
|
|
215
220
|
const user = await userEvent.setup();
|
|
216
221
|
const targetOption = timezones[ 13 ];
|
|
217
|
-
const onChangeSpy =
|
|
222
|
+
const onChangeSpy = vi.fn();
|
|
218
223
|
render(
|
|
219
224
|
<Component
|
|
220
225
|
options={ timezones }
|
|
@@ -241,7 +246,7 @@ describe.each( [
|
|
|
241
246
|
it( 'should render aria-live announcement upon selection', async () => {
|
|
242
247
|
const user = await userEvent.setup();
|
|
243
248
|
const targetOption = timezones[ 9 ];
|
|
244
|
-
const onChangeSpy =
|
|
249
|
+
const onChangeSpy = vi.fn();
|
|
245
250
|
render(
|
|
246
251
|
<Component
|
|
247
252
|
options={ timezones }
|
|
@@ -270,7 +275,7 @@ describe.each( [
|
|
|
270
275
|
const user = await userEvent.setup();
|
|
271
276
|
const unmatchedString = 'Mordor';
|
|
272
277
|
const targetOption = timezones[ 6 ];
|
|
273
|
-
const onChangeSpy =
|
|
278
|
+
const onChangeSpy = vi.fn();
|
|
274
279
|
render(
|
|
275
280
|
<Component
|
|
276
281
|
options={ timezones }
|
package/src/composite/README.md
CHANGED
|
@@ -136,7 +136,7 @@ Allows the component to be rendered as a different HTML element or React compone
|
|
|
136
136
|
|
|
137
137
|
Makes the component a focusable element. When this element gains keyboard focus, it gets a `data-focus-visible` attribute and triggers the `onFocusVisible` prop.
|
|
138
138
|
|
|
139
|
-
The component supports the `disabled` prop even for those elements not supporting the native `disabled` attribute. Disabled elements may be still accessible via keyboard by using the
|
|
139
|
+
The component supports the `disabled` prop even for those elements not supporting the native `disabled` attribute. Disabled elements may be still accessible via keyboard by using the `accessibleWhenDisabled` prop.
|
|
140
140
|
|
|
141
141
|
Non-native focusable elements will lose their focusability entirely. However, native focusable elements will retain their inherent focusability.
|
|
142
142
|
|
|
@@ -5,3 +5,9 @@ export const CompositeContext = createContext< CompositeContextProps >( {} );
|
|
|
5
5
|
CompositeContext.displayName = 'CompositeContext';
|
|
6
6
|
|
|
7
7
|
export const useCompositeContext = () => useContext( CompositeContext );
|
|
8
|
+
|
|
9
|
+
export const CompositeGroupContext = createContext( false );
|
|
10
|
+
CompositeGroupContext.displayName = 'CompositeGroupContext';
|
|
11
|
+
|
|
12
|
+
export const useCompositeGroupContext = () =>
|
|
13
|
+
useContext( CompositeGroupContext );
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Ariakit from '@ariakit/react';
|
|
2
2
|
import { forwardRef } from '@wordpress/element';
|
|
3
3
|
import type { WordPressComponentProps } from '../context';
|
|
4
|
-
import { useCompositeContext } from './context';
|
|
4
|
+
import { useCompositeContext, useCompositeGroupContext } from './context';
|
|
5
5
|
import type { CompositeGroupLabelProps } from './types';
|
|
6
6
|
|
|
7
7
|
export const CompositeGroupLabel = forwardRef<
|
|
@@ -9,6 +9,13 @@ export const CompositeGroupLabel = forwardRef<
|
|
|
9
9
|
WordPressComponentProps< CompositeGroupLabelProps, 'div', false >
|
|
10
10
|
>( function CompositeGroupLabel( props, ref ) {
|
|
11
11
|
const context = useCompositeContext();
|
|
12
|
+
const isWithinGroup = useCompositeGroupContext();
|
|
13
|
+
|
|
14
|
+
if ( ! isWithinGroup ) {
|
|
15
|
+
throw new Error(
|
|
16
|
+
'Composite.GroupLabel can only be rendered inside Composite.Group.'
|
|
17
|
+
);
|
|
18
|
+
}
|
|
12
19
|
|
|
13
20
|
// @ts-expect-error The store prop is undocumented and only used by the
|
|
14
21
|
// legacy compat layer. The `store` prop is documented, but its type is
|
package/src/composite/group.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Ariakit from '@ariakit/react';
|
|
2
2
|
import { forwardRef } from '@wordpress/element';
|
|
3
3
|
import type { WordPressComponentProps } from '../context';
|
|
4
|
-
import { useCompositeContext } from './context';
|
|
4
|
+
import { CompositeGroupContext, useCompositeContext } from './context';
|
|
5
5
|
import type { CompositeGroupProps } from './types';
|
|
6
6
|
|
|
7
7
|
export const CompositeGroup = forwardRef<
|
|
@@ -9,11 +9,18 @@ export const CompositeGroup = forwardRef<
|
|
|
9
9
|
WordPressComponentProps< CompositeGroupProps, 'div', false >
|
|
10
10
|
>( function CompositeGroup( props, ref ) {
|
|
11
11
|
const context = useCompositeContext();
|
|
12
|
+
const { children, ...restProps } = props;
|
|
12
13
|
|
|
13
14
|
// @ts-expect-error The store prop is undocumented and only used by the
|
|
14
15
|
// legacy compat layer. The `store` prop is documented, but its type is
|
|
15
16
|
// obfuscated to discourage its use outside of the component's internals.
|
|
16
17
|
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
17
18
|
|
|
18
|
-
return
|
|
19
|
+
return (
|
|
20
|
+
<Ariakit.CompositeGroup store={ store } { ...restProps } ref={ ref }>
|
|
21
|
+
<CompositeGroupContext.Provider value>
|
|
22
|
+
{ children }
|
|
23
|
+
</CompositeGroupContext.Provider>
|
|
24
|
+
</Ariakit.CompositeGroup>
|
|
25
|
+
);
|
|
19
26
|
} );
|
package/src/composite/item.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Ariakit from '@ariakit/react';
|
|
2
2
|
import { forwardRef } from '@wordpress/element';
|
|
3
|
+
import warning from '@wordpress/warning';
|
|
3
4
|
import type { WordPressComponentProps } from '../context';
|
|
4
5
|
import { useCompositeContext } from './context';
|
|
5
6
|
import type { CompositeItemProps } from './types';
|
|
@@ -14,6 +15,11 @@ export const CompositeItem = forwardRef<
|
|
|
14
15
|
// legacy compat layer. The `store` prop is documented, but its type is
|
|
15
16
|
// obfuscated to discourage its use outside of the component's internals.
|
|
16
17
|
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
18
|
+
if ( ! store ) {
|
|
19
|
+
warning(
|
|
20
|
+
'Composite.Item: Missing composite state. Render inside Composite to enable composite keyboard behavior.'
|
|
21
|
+
);
|
|
22
|
+
}
|
|
17
23
|
|
|
18
24
|
return <Ariakit.CompositeItem store={ store } { ...props } ref={ ref } />;
|
|
19
25
|
} );
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, test, vi } from 'vitest';
|
|
1
2
|
import {
|
|
2
3
|
queryByAttribute,
|
|
3
4
|
render,
|
|
@@ -16,23 +17,15 @@ import {
|
|
|
16
17
|
// page down. Without this, nothing has a height, and so paging up
|
|
17
18
|
// and down doesn't behave as expected in tests.
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
beforeAll( () => {
|
|
24
|
-
clientHeightSpy = jest
|
|
25
|
-
.spyOn( HTMLElement.prototype, 'clientHeight', 'get' )
|
|
26
|
-
.mockImplementation( function getClientHeight( this: HTMLElement ) {
|
|
20
|
+
beforeEach( () => {
|
|
21
|
+
vi.spyOn( HTMLElement.prototype, 'clientHeight', 'get' ).mockImplementation(
|
|
22
|
+
function getClientHeight( this: HTMLElement ) {
|
|
27
23
|
if ( this.tagName === 'BODY' ) {
|
|
28
24
|
return window.outerHeight;
|
|
29
25
|
}
|
|
30
26
|
return 50;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
afterAll( () => {
|
|
35
|
-
clientHeightSpy?.mockRestore();
|
|
27
|
+
}
|
|
28
|
+
);
|
|
36
29
|
} );
|
|
37
30
|
|
|
38
31
|
type InitialState = Parameters< typeof useCompositeState >[ 0 ];
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, test, vi } from 'vitest';
|
|
1
2
|
import { queryByAttribute, render, screen } from '@testing-library/react';
|
|
2
3
|
import { click, press, waitFor } from '@ariakit/test';
|
|
4
|
+
import * as Ariakit from '@ariakit/react';
|
|
3
5
|
import type { ComponentProps } from 'react';
|
|
4
6
|
import { useState } from '@wordpress/element';
|
|
5
7
|
import { Composite } from '..';
|
|
@@ -18,26 +20,20 @@ async function renderAndValidate( ...args: Parameters< typeof render > ) {
|
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
describe( 'Composite', () => {
|
|
21
|
-
|
|
22
|
-
typeof HTMLElement.prototype.clientHeight
|
|
23
|
-
>;
|
|
24
|
-
|
|
25
|
-
beforeAll( () => {
|
|
23
|
+
beforeEach( () => {
|
|
26
24
|
// This is necessary because of how Ariakit calculates page up and
|
|
27
25
|
// page down. Without this, nothing has a height, and so paging up
|
|
28
26
|
// and down doesn't behave as expected in tests.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
afterAll( () => {
|
|
40
|
-
clientHeightSpy?.mockRestore();
|
|
27
|
+
vi.spyOn(
|
|
28
|
+
HTMLElement.prototype,
|
|
29
|
+
'clientHeight',
|
|
30
|
+
'get'
|
|
31
|
+
).mockImplementation( function getClientHeight( this: HTMLElement ) {
|
|
32
|
+
if ( this.tagName === 'BODY' ) {
|
|
33
|
+
return window.outerHeight;
|
|
34
|
+
}
|
|
35
|
+
return 50;
|
|
36
|
+
} );
|
|
41
37
|
} );
|
|
42
38
|
|
|
43
39
|
test( 'Renders as a single tab stop', async () => {
|
|
@@ -700,4 +696,51 @@ describe( 'Composite', () => {
|
|
|
700
696
|
} );
|
|
701
697
|
} );
|
|
702
698
|
} );
|
|
699
|
+
|
|
700
|
+
describe( 'required context', () => {
|
|
701
|
+
it( 'warns when Composite.Item has no composite state', () => {
|
|
702
|
+
render( <Composite.Item>Item</Composite.Item> );
|
|
703
|
+
|
|
704
|
+
expect(
|
|
705
|
+
screen.getByRole( 'button', { name: 'Item' } )
|
|
706
|
+
).toBeVisible();
|
|
707
|
+
expect( console ).toHaveWarnedWith(
|
|
708
|
+
'Composite.Item: Missing composite state. Render inside Composite to enable composite keyboard behavior.'
|
|
709
|
+
);
|
|
710
|
+
} );
|
|
711
|
+
|
|
712
|
+
it( 'supports an explicit store prop for Composite.Item', () => {
|
|
713
|
+
function ItemWithStore() {
|
|
714
|
+
const store = Ariakit.useCompositeStore();
|
|
715
|
+
|
|
716
|
+
return (
|
|
717
|
+
<Composite.Item
|
|
718
|
+
// @ts-expect-error The store prop is intentionally omitted from the public types.
|
|
719
|
+
store={ store }
|
|
720
|
+
>
|
|
721
|
+
Item
|
|
722
|
+
</Composite.Item>
|
|
723
|
+
);
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
render( <ItemWithStore /> );
|
|
727
|
+
|
|
728
|
+
expect(
|
|
729
|
+
screen.getByRole( 'button', { name: 'Item' } )
|
|
730
|
+
).toBeVisible();
|
|
731
|
+
} );
|
|
732
|
+
|
|
733
|
+
it( 'throws when Composite.GroupLabel is outside Composite.Group', () => {
|
|
734
|
+
expect( () =>
|
|
735
|
+
render(
|
|
736
|
+
<Composite>
|
|
737
|
+
<Composite.GroupLabel>Label</Composite.GroupLabel>
|
|
738
|
+
</Composite>
|
|
739
|
+
)
|
|
740
|
+
).toThrow(
|
|
741
|
+
'Composite.GroupLabel can only be rendered inside Composite.Group.'
|
|
742
|
+
);
|
|
743
|
+
expect( console ).toHaveErrored();
|
|
744
|
+
} );
|
|
745
|
+
} );
|
|
703
746
|
} );
|
package/src/composite/types.ts
CHANGED
|
@@ -141,7 +141,7 @@ export type CompositeProps = CompositeStoreProps & {
|
|
|
141
141
|
* `onFocusVisible` prop.
|
|
142
142
|
* The component supports the `disabled` prop even for those elements not
|
|
143
143
|
* supporting the native `disabled` attribute. Disabled elements may be
|
|
144
|
-
* still accessible via keyboard by using the
|
|
144
|
+
* still accessible via keyboard by using the `accessibleWhenDisabled`
|
|
145
145
|
* prop.
|
|
146
146
|
* Non-native focusable elements will lose their focusability entirely.
|
|
147
147
|
* However, native focusable elements will retain their inherent focusability.
|
|
@@ -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 { ConfirmDialog } from '..';
|
|
4
5
|
import styles from '../style.module.scss';
|
|
6
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
5
7
|
|
|
6
8
|
const noop = () => {};
|
|
7
9
|
|
|
@@ -115,7 +117,7 @@ describe( 'Confirm', () => {
|
|
|
115
117
|
it( 'should not render if closed by clicking `OK`, and the `onConfirm` callback should be called', async () => {
|
|
116
118
|
const user = userEvent.setup();
|
|
117
119
|
|
|
118
|
-
const onConfirm =
|
|
120
|
+
const onConfirm = vi.fn().mockName( 'onConfirm()' );
|
|
119
121
|
|
|
120
122
|
render(
|
|
121
123
|
<ConfirmDialog onConfirm={ onConfirm }>
|
|
@@ -135,7 +137,7 @@ describe( 'Confirm', () => {
|
|
|
135
137
|
it( 'should not render if closed by clicking `Cancel`, and the `onCancel` callback should be called', async () => {
|
|
136
138
|
const user = userEvent.setup();
|
|
137
139
|
|
|
138
|
-
const onCancel =
|
|
140
|
+
const onCancel = vi.fn().mockName( 'onCancel()' );
|
|
139
141
|
|
|
140
142
|
render(
|
|
141
143
|
<ConfirmDialog onConfirm={ noop } onCancel={ onCancel }>
|
|
@@ -171,7 +173,7 @@ describe( 'Confirm', () => {
|
|
|
171
173
|
|
|
172
174
|
it( 'should not render if dialog is closed by clicking the overlay, and the `onCancel` callback should be called', async () => {
|
|
173
175
|
const user = userEvent.setup();
|
|
174
|
-
const onCancel =
|
|
176
|
+
const onCancel = vi.fn().mockName( 'onCancel()' );
|
|
175
177
|
|
|
176
178
|
render(
|
|
177
179
|
<ConfirmDialog onConfirm={ noop } onCancel={ onCancel }>
|
|
@@ -192,7 +194,7 @@ describe( 'Confirm', () => {
|
|
|
192
194
|
it( 'should not render if dialog is closed by pressing `Escape`, and the `onCancel` callback should be called', async () => {
|
|
193
195
|
const user = userEvent.setup();
|
|
194
196
|
|
|
195
|
-
const onCancel =
|
|
197
|
+
const onCancel = vi.fn().mockName( 'onCancel()' );
|
|
196
198
|
|
|
197
199
|
render(
|
|
198
200
|
<ConfirmDialog onConfirm={ noop } onCancel={ onCancel }>
|
|
@@ -211,7 +213,7 @@ describe( 'Confirm', () => {
|
|
|
211
213
|
it( 'should not render if dialog is closed by pressing `Enter`, and the `onConfirm` callback should be called', async () => {
|
|
212
214
|
const user = userEvent.setup();
|
|
213
215
|
|
|
214
|
-
const onConfirm =
|
|
216
|
+
const onConfirm = vi.fn().mockName( 'onConfirm()' );
|
|
215
217
|
|
|
216
218
|
render(
|
|
217
219
|
<ConfirmDialog onConfirm={ onConfirm }>
|
|
@@ -230,8 +232,8 @@ describe( 'Confirm', () => {
|
|
|
230
232
|
it( 'calls only the `onCancel` callback and not the `onConfirm` callback when the cancel button is submitted using the keyboard', async () => {
|
|
231
233
|
const user = userEvent.setup();
|
|
232
234
|
|
|
233
|
-
const onConfirm =
|
|
234
|
-
const onCancel =
|
|
235
|
+
const onConfirm = vi.fn().mockName( 'onConfirm()' );
|
|
236
|
+
const onCancel = vi.fn().mockName( 'onCancel()' );
|
|
235
237
|
|
|
236
238
|
render(
|
|
237
239
|
<ConfirmDialog
|
|
@@ -251,8 +253,8 @@ describe( 'Confirm', () => {
|
|
|
251
253
|
it( 'calls only the `onConfirm` callback when the confirm button is submitted using the keyboard', async () => {
|
|
252
254
|
const user = userEvent.setup();
|
|
253
255
|
|
|
254
|
-
const onConfirm =
|
|
255
|
-
const onCancel =
|
|
256
|
+
const onConfirm = vi.fn().mockName( 'onConfirm()' );
|
|
257
|
+
const onCancel = vi.fn().mockName( 'onCancel()' );
|
|
256
258
|
|
|
257
259
|
render(
|
|
258
260
|
<ConfirmDialog
|
|
@@ -305,7 +307,7 @@ describe( 'Confirm', () => {
|
|
|
305
307
|
it( 'should call the `onConfirm` callback if `OK`', async () => {
|
|
306
308
|
const user = userEvent.setup();
|
|
307
309
|
|
|
308
|
-
const onConfirm =
|
|
310
|
+
const onConfirm = vi.fn().mockName( 'onConfirm()' );
|
|
309
311
|
|
|
310
312
|
render(
|
|
311
313
|
<ConfirmDialog isOpen onConfirm={ onConfirm }>
|
|
@@ -323,7 +325,7 @@ describe( 'Confirm', () => {
|
|
|
323
325
|
it( 'should call the `onCancel` callback if `Cancel` is clicked', async () => {
|
|
324
326
|
const user = userEvent.setup();
|
|
325
327
|
|
|
326
|
-
const onCancel =
|
|
328
|
+
const onCancel = vi.fn().mockName( 'onCancel()' );
|
|
327
329
|
|
|
328
330
|
render(
|
|
329
331
|
<ConfirmDialog isOpen onConfirm={ noop } onCancel={ onCancel }>
|
|
@@ -340,7 +342,7 @@ describe( 'Confirm', () => {
|
|
|
340
342
|
|
|
341
343
|
it( 'should call the `onCancel` callback if the overlay is clicked', async () => {
|
|
342
344
|
const user = userEvent.setup();
|
|
343
|
-
const onCancel =
|
|
345
|
+
const onCancel = vi.fn().mockName( 'onCancel()' );
|
|
344
346
|
|
|
345
347
|
render(
|
|
346
348
|
<ConfirmDialog isOpen onConfirm={ noop } onCancel={ onCancel }>
|
|
@@ -360,7 +362,7 @@ describe( 'Confirm', () => {
|
|
|
360
362
|
it( 'should call the `onCancel` callback if the `Escape` key is pressed', async () => {
|
|
361
363
|
const user = userEvent.setup();
|
|
362
364
|
|
|
363
|
-
const onCancel =
|
|
365
|
+
const onCancel = vi.fn().mockName( 'onCancel()' );
|
|
364
366
|
|
|
365
367
|
render(
|
|
366
368
|
<ConfirmDialog onConfirm={ noop } onCancel={ onCancel }>
|
|
@@ -376,7 +378,7 @@ describe( 'Confirm', () => {
|
|
|
376
378
|
it( 'should call the `onConfirm` callback if the `Enter` key is pressed', async () => {
|
|
377
379
|
const user = userEvent.setup();
|
|
378
380
|
|
|
379
|
-
const onConfirm =
|
|
381
|
+
const onConfirm = vi.fn().mockName( 'onConfirm()' );
|
|
380
382
|
|
|
381
383
|
render(
|
|
382
384
|
<ConfirmDialog isOpen onConfirm={ onConfirm } onCancel={ noop }>
|