@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,14 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
afterAll,
|
|
3
|
+
afterEach,
|
|
4
|
+
beforeAll,
|
|
5
|
+
beforeEach,
|
|
6
|
+
describe,
|
|
7
|
+
expect,
|
|
8
|
+
it,
|
|
9
|
+
vi,
|
|
10
|
+
} from 'vitest';
|
|
1
11
|
import { render, screen } from '@testing-library/react';
|
|
2
12
|
import userEvent from '@testing-library/user-event';
|
|
3
13
|
import timezoneMock from 'timezone-mock';
|
|
4
14
|
import { getSettings, setSettings, type DateSettings } from '@wordpress/date';
|
|
5
15
|
import TimePicker from '..';
|
|
6
16
|
|
|
17
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
18
|
+
|
|
19
|
+
globalThis.wpVitest.mockResizeObserver();
|
|
20
|
+
|
|
7
21
|
describe( 'TimePicker', () => {
|
|
8
22
|
it( 'should call onChange with updated date values', async () => {
|
|
9
23
|
const user = userEvent.setup();
|
|
10
24
|
|
|
11
|
-
const onChangeSpy =
|
|
25
|
+
const onChangeSpy = vi.fn();
|
|
12
26
|
|
|
13
27
|
render(
|
|
14
28
|
<TimePicker
|
|
@@ -62,7 +76,7 @@ describe( 'TimePicker', () => {
|
|
|
62
76
|
it( 'should call onChange with an updated hour (12-hour clock)', async () => {
|
|
63
77
|
const user = userEvent.setup();
|
|
64
78
|
|
|
65
|
-
const onChangeSpy =
|
|
79
|
+
const onChangeSpy = vi.fn();
|
|
66
80
|
|
|
67
81
|
render(
|
|
68
82
|
<TimePicker
|
|
@@ -84,7 +98,7 @@ describe( 'TimePicker', () => {
|
|
|
84
98
|
it( 'should call onChange with a bounded hour (12-hour clock) if the hour is out of bounds', async () => {
|
|
85
99
|
const user = userEvent.setup();
|
|
86
100
|
|
|
87
|
-
const onChangeSpy =
|
|
101
|
+
const onChangeSpy = vi.fn();
|
|
88
102
|
|
|
89
103
|
render(
|
|
90
104
|
<TimePicker
|
|
@@ -106,7 +120,7 @@ describe( 'TimePicker', () => {
|
|
|
106
120
|
it( 'should call onChange with an updated hour (24-hour clock)', async () => {
|
|
107
121
|
const user = userEvent.setup();
|
|
108
122
|
|
|
109
|
-
const onChangeSpy =
|
|
123
|
+
const onChangeSpy = vi.fn();
|
|
110
124
|
|
|
111
125
|
render(
|
|
112
126
|
<TimePicker
|
|
@@ -128,7 +142,7 @@ describe( 'TimePicker', () => {
|
|
|
128
142
|
it( 'should call onChange with a bounded minute if out of bounds', async () => {
|
|
129
143
|
const user = userEvent.setup();
|
|
130
144
|
|
|
131
|
-
const onChangeSpy =
|
|
145
|
+
const onChangeSpy = vi.fn();
|
|
132
146
|
|
|
133
147
|
render(
|
|
134
148
|
<TimePicker
|
|
@@ -150,7 +164,7 @@ describe( 'TimePicker', () => {
|
|
|
150
164
|
it( 'should call onChange with a bounded day if out of bounds', async () => {
|
|
151
165
|
const user = userEvent.setup();
|
|
152
166
|
|
|
153
|
-
const onChangeSpy =
|
|
167
|
+
const onChangeSpy = vi.fn();
|
|
154
168
|
|
|
155
169
|
render(
|
|
156
170
|
<TimePicker
|
|
@@ -173,7 +187,7 @@ describe( 'TimePicker', () => {
|
|
|
173
187
|
it( 'should clamp day when switching months', async () => {
|
|
174
188
|
const user = userEvent.setup();
|
|
175
189
|
|
|
176
|
-
const onChangeSpy =
|
|
190
|
+
const onChangeSpy = vi.fn();
|
|
177
191
|
|
|
178
192
|
render(
|
|
179
193
|
<TimePicker
|
|
@@ -195,7 +209,7 @@ describe( 'TimePicker', () => {
|
|
|
195
209
|
it( 'should clamp day when switching year from leap to non-leap', async () => {
|
|
196
210
|
const user = userEvent.setup();
|
|
197
211
|
|
|
198
|
-
const onChangeSpy =
|
|
212
|
+
const onChangeSpy = vi.fn();
|
|
199
213
|
|
|
200
214
|
render(
|
|
201
215
|
<TimePicker
|
|
@@ -219,7 +233,7 @@ describe( 'TimePicker', () => {
|
|
|
219
233
|
it( 'should switch to PM correctly', async () => {
|
|
220
234
|
const user = userEvent.setup();
|
|
221
235
|
|
|
222
|
-
const onChangeSpy =
|
|
236
|
+
const onChangeSpy = vi.fn();
|
|
223
237
|
|
|
224
238
|
render(
|
|
225
239
|
<TimePicker
|
|
@@ -239,7 +253,7 @@ describe( 'TimePicker', () => {
|
|
|
239
253
|
it( 'should switch to AM correctly', async () => {
|
|
240
254
|
const user = userEvent.setup();
|
|
241
255
|
|
|
242
|
-
const onChangeSpy =
|
|
256
|
+
const onChangeSpy = vi.fn();
|
|
243
257
|
|
|
244
258
|
render(
|
|
245
259
|
<TimePicker
|
|
@@ -259,7 +273,7 @@ describe( 'TimePicker', () => {
|
|
|
259
273
|
it( 'should allow to set the time correctly when the PM period is selected', async () => {
|
|
260
274
|
const user = userEvent.setup();
|
|
261
275
|
|
|
262
|
-
const onChangeSpy =
|
|
276
|
+
const onChangeSpy = vi.fn();
|
|
263
277
|
|
|
264
278
|
render(
|
|
265
279
|
<TimePicker
|
|
@@ -292,7 +306,7 @@ describe( 'TimePicker', () => {
|
|
|
292
306
|
it( 'should truncate at the minutes on change', async () => {
|
|
293
307
|
const user = userEvent.setup();
|
|
294
308
|
|
|
295
|
-
const onChangeSpy =
|
|
309
|
+
const onChangeSpy = vi.fn();
|
|
296
310
|
|
|
297
311
|
render(
|
|
298
312
|
<TimePicker
|
|
@@ -312,7 +326,7 @@ describe( 'TimePicker', () => {
|
|
|
312
326
|
} );
|
|
313
327
|
|
|
314
328
|
it( 'should reset the date when currentTime changed', () => {
|
|
315
|
-
const onChangeSpy =
|
|
329
|
+
const onChangeSpy = vi.fn();
|
|
316
330
|
|
|
317
331
|
const { rerender } = render(
|
|
318
332
|
<TimePicker
|
|
@@ -351,7 +365,7 @@ describe( 'TimePicker', () => {
|
|
|
351
365
|
} );
|
|
352
366
|
|
|
353
367
|
it( 'should have different layouts/orders for 12/24 hour formats', () => {
|
|
354
|
-
const onChangeSpy =
|
|
368
|
+
const onChangeSpy = vi.fn();
|
|
355
369
|
|
|
356
370
|
const { rerender } = render(
|
|
357
371
|
<form aria-label="form">
|
|
@@ -395,7 +409,7 @@ describe( 'TimePicker', () => {
|
|
|
395
409
|
} );
|
|
396
410
|
|
|
397
411
|
it( 'Should change layouts/orders when `dateOrder` prop is passed', () => {
|
|
398
|
-
const onChangeSpy =
|
|
412
|
+
const onChangeSpy = vi.fn();
|
|
399
413
|
|
|
400
414
|
render(
|
|
401
415
|
<form aria-label="form">
|
|
@@ -425,7 +439,7 @@ describe( 'TimePicker', () => {
|
|
|
425
439
|
} );
|
|
426
440
|
|
|
427
441
|
it( 'Should ignore `is12Hour` prop setting when `dateOrder` prop is explicitly passed', () => {
|
|
428
|
-
const onChangeSpy =
|
|
442
|
+
const onChangeSpy = vi.fn();
|
|
429
443
|
|
|
430
444
|
render(
|
|
431
445
|
<form aria-label="form">
|
|
@@ -456,7 +470,7 @@ describe( 'TimePicker', () => {
|
|
|
456
470
|
} );
|
|
457
471
|
|
|
458
472
|
it( 'Should set a time when passed a null currentTime', () => {
|
|
459
|
-
const onChangeSpy =
|
|
473
|
+
const onChangeSpy = vi.fn();
|
|
460
474
|
|
|
461
475
|
render(
|
|
462
476
|
<TimePicker
|
|
@@ -505,7 +519,7 @@ describe( 'TimePicker', () => {
|
|
|
505
519
|
} );
|
|
506
520
|
|
|
507
521
|
afterEach( () => {
|
|
508
|
-
|
|
522
|
+
vi.useRealTimers();
|
|
509
523
|
timezoneMock.unregister();
|
|
510
524
|
} );
|
|
511
525
|
|
|
@@ -576,19 +590,15 @@ describe( 'TimePicker', () => {
|
|
|
576
590
|
// For undefined, set fake system time to get a known current time
|
|
577
591
|
let user: ReturnType< typeof userEvent.setup >;
|
|
578
592
|
if ( initialTime === undefined ) {
|
|
579
|
-
|
|
593
|
+
vi.useFakeTimers( { toFake: [ 'Date' ] } );
|
|
580
594
|
// Set system time to 12:00 UTC
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
);
|
|
584
|
-
user = userEvent.setup( {
|
|
585
|
-
advanceTimers: jest.advanceTimersByTime,
|
|
586
|
-
} );
|
|
595
|
+
vi.setSystemTime( Date.UTC( 2025, 11, 18, 12, 0, 0 ) );
|
|
596
|
+
user = userEvent.setup();
|
|
587
597
|
} else {
|
|
588
598
|
user = userEvent.setup();
|
|
589
599
|
}
|
|
590
600
|
|
|
591
|
-
const onChange =
|
|
601
|
+
const onChange = vi.fn();
|
|
592
602
|
|
|
593
603
|
const { rerender } = render(
|
|
594
604
|
<TimePicker
|
|
@@ -653,7 +663,7 @@ describe( 'TimePicker', () => {
|
|
|
653
663
|
describe( 'ISO 8601 compliance', () => {
|
|
654
664
|
it( 'should handle years below 1000 with zero-padded output', async () => {
|
|
655
665
|
const user = userEvent.setup();
|
|
656
|
-
const onChangeSpy =
|
|
666
|
+
const onChangeSpy = vi.fn();
|
|
657
667
|
|
|
658
668
|
render(
|
|
659
669
|
<TimePicker
|
|
@@ -1,13 +1,18 @@
|
|
|
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 TimeInput from '..';
|
|
4
5
|
|
|
6
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
7
|
+
|
|
8
|
+
globalThis.wpVitest.mockResizeObserver();
|
|
9
|
+
|
|
5
10
|
describe( 'TimeInput', () => {
|
|
6
11
|
it( 'should call onChange with updated values | 24-hours format', async () => {
|
|
7
12
|
const user = userEvent.setup();
|
|
8
13
|
|
|
9
14
|
const timeInputValue = { hours: 0, minutes: 0 };
|
|
10
|
-
const onChangeSpy =
|
|
15
|
+
const onChangeSpy = vi.fn();
|
|
11
16
|
|
|
12
17
|
render(
|
|
13
18
|
<TimeInput
|
|
@@ -59,7 +64,7 @@ describe( 'TimeInput', () => {
|
|
|
59
64
|
const user = userEvent.setup();
|
|
60
65
|
|
|
61
66
|
const timeInputValue = { hours: 0, minutes: 0 };
|
|
62
|
-
const onChangeSpy =
|
|
67
|
+
const onChangeSpy = vi.fn();
|
|
63
68
|
|
|
64
69
|
render(
|
|
65
70
|
<TimeInput
|
|
@@ -106,7 +111,7 @@ describe( 'TimeInput', () => {
|
|
|
106
111
|
const user = userEvent.setup();
|
|
107
112
|
|
|
108
113
|
const timeInputValue = { hours: 0, minutes: 0 };
|
|
109
|
-
const onChangeSpy =
|
|
114
|
+
const onChangeSpy = vi.fn();
|
|
110
115
|
|
|
111
116
|
render(
|
|
112
117
|
<TimeInput
|
package/src/disabled/index.tsx
CHANGED
|
@@ -59,14 +59,14 @@ function Disabled( {
|
|
|
59
59
|
<div
|
|
60
60
|
// @ts-expect-error `inert` is not declared in React 18's HTML attribute types.
|
|
61
61
|
inert={ isDisabled ? 'true' : undefined }
|
|
62
|
+
// Only the disabled styling is conditional. The consumer's own
|
|
63
|
+
// className has to stick around so the wrapper stays targetable
|
|
64
|
+
// whether or not it is currently disabled.
|
|
62
65
|
className={
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
'components-disabled'
|
|
68
|
-
)
|
|
69
|
-
: undefined
|
|
66
|
+
clsx(
|
|
67
|
+
className,
|
|
68
|
+
isDisabled && [ styles.disabled, 'components-disabled' ]
|
|
69
|
+
) || undefined
|
|
70
70
|
}
|
|
71
71
|
{ ...props }
|
|
72
72
|
>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { describe, expect, it, test } from 'vitest';
|
|
1
2
|
import { render, screen } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import Disabled from '../';
|
|
@@ -67,6 +68,31 @@ describe( 'Disabled', () => {
|
|
|
67
68
|
);
|
|
68
69
|
} );
|
|
69
70
|
|
|
71
|
+
it( 'keeps the consumer className and toggles only the disabled classes', () => {
|
|
72
|
+
const MaybeDisable = ( { isDisabled = true } ) => (
|
|
73
|
+
<Disabled
|
|
74
|
+
isDisabled={ isDisabled }
|
|
75
|
+
className="my-wrapper"
|
|
76
|
+
data-testid="disabled-wrapper"
|
|
77
|
+
>
|
|
78
|
+
<Form />
|
|
79
|
+
</Disabled>
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
const { rerender } = render( <MaybeDisable /> );
|
|
83
|
+
|
|
84
|
+
const wrapper = screen.getByTestId( 'disabled-wrapper' );
|
|
85
|
+
expect( wrapper ).toHaveClass( 'my-wrapper' );
|
|
86
|
+
expect( wrapper ).toHaveClass( 'components-disabled' );
|
|
87
|
+
expect( wrapper ).toHaveClass( styles.disabled );
|
|
88
|
+
|
|
89
|
+
rerender( <MaybeDisable isDisabled={ false } /> );
|
|
90
|
+
|
|
91
|
+
expect( wrapper ).toHaveClass( 'my-wrapper' );
|
|
92
|
+
expect( wrapper ).not.toHaveClass( 'components-disabled' );
|
|
93
|
+
expect( wrapper ).not.toHaveClass( styles.disabled );
|
|
94
|
+
} );
|
|
95
|
+
|
|
70
96
|
it( 'should preserve input values when toggling the isDisabled prop', async () => {
|
|
71
97
|
const user = userEvent.setup();
|
|
72
98
|
|
package/src/draggable/index.tsx
CHANGED
|
@@ -6,7 +6,7 @@ import type { DraggableProps } from './types';
|
|
|
6
6
|
import styles from './style.module.scss';
|
|
7
7
|
|
|
8
8
|
// Legacy class names preserved alongside the CSS-module hashed ones for
|
|
9
|
-
// backwards compatibility. `filter(Boolean)` strips `undefined` from
|
|
9
|
+
// backwards compatibility. `filter(Boolean)` strips `undefined` from the
|
|
10
10
|
// CSS-module mock.
|
|
11
11
|
const dragImageClasses = [
|
|
12
12
|
styles[ 'invisible-drag-image' ],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
.invisible-drag-image {
|
|
4
4
|
position: fixed;
|
|
5
|
-
/* stylelint-disable-next-line
|
|
5
|
+
/* stylelint-disable-next-line logical-css/require-logical-properties -- Offscreen drag-image stand-in; flipping with writing direction has no benefit. */
|
|
6
6
|
left: -1000px;
|
|
7
7
|
height: 50px;
|
|
8
8
|
width: 50px;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
.content-wrapper {
|
|
4
4
|
// Negative margin to reset (offset) the default padding on .components-popover__content.
|
|
5
|
-
/* stylelint-disable
|
|
5
|
+
/* stylelint-disable logical-css/require-logical-properties -- Preserve the previous physical offsets against Popover padding. */
|
|
6
6
|
margin-left: -$grid-unit-10;
|
|
7
7
|
margin-right: -$grid-unit-10;
|
|
8
8
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
&:last-of-type {
|
|
14
14
|
margin-bottom: -$grid-unit-10;
|
|
15
15
|
}
|
|
16
|
-
/* stylelint-enable
|
|
16
|
+
/* stylelint-enable logical-css/require-logical-properties */
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
.padding-small {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { render, screen, waitFor, within } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import { arrowLeft, arrowRight, arrowUp, arrowDown } from '@wordpress/icons';
|
|
@@ -26,22 +27,22 @@ describe( 'DropdownMenu', () => {
|
|
|
26
27
|
{
|
|
27
28
|
title: 'Up',
|
|
28
29
|
icon: arrowUp,
|
|
29
|
-
onClick:
|
|
30
|
+
onClick: vi.fn(),
|
|
30
31
|
},
|
|
31
32
|
{
|
|
32
33
|
title: 'Right',
|
|
33
34
|
icon: arrowRight,
|
|
34
|
-
onClick:
|
|
35
|
+
onClick: vi.fn(),
|
|
35
36
|
},
|
|
36
37
|
{
|
|
37
38
|
title: 'Down',
|
|
38
39
|
icon: arrowDown,
|
|
39
|
-
onClick:
|
|
40
|
+
onClick: vi.fn(),
|
|
40
41
|
},
|
|
41
42
|
{
|
|
42
43
|
title: 'Left',
|
|
43
44
|
icon: arrowLeft,
|
|
44
|
-
onClick:
|
|
45
|
+
onClick: vi.fn(),
|
|
45
46
|
},
|
|
46
47
|
];
|
|
47
48
|
|
package/src/duotone-picker/test/{custom-duotone-bar.tsx → custom-duotone-bar.jsdom.test.tsx}
RENAMED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { fireEvent, render, screen } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import CustomDuotoneBar from '../custom-duotone-bar';
|
|
4
5
|
|
|
6
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
7
|
+
|
|
5
8
|
const VALUE = [ '#000000', '#ffffff' ];
|
|
6
9
|
|
|
7
10
|
describe( 'CustomDuotoneBar', () => {
|
|
8
11
|
it( 'does not offer to reposition control points, since a duotone has no positions to save', () => {
|
|
9
|
-
render( <CustomDuotoneBar value={ VALUE } onChange={
|
|
12
|
+
render( <CustomDuotoneBar value={ VALUE } onChange={ vi.fn() } /> );
|
|
10
13
|
|
|
11
14
|
const [ firstPoint ] = screen.getAllByRole( 'button', {
|
|
12
15
|
name: /Gradient control point/,
|
|
@@ -22,7 +25,7 @@ describe( 'CustomDuotoneBar', () => {
|
|
|
22
25
|
|
|
23
26
|
it( 'ignores arrow keys on a control point', async () => {
|
|
24
27
|
const user = userEvent.setup();
|
|
25
|
-
const onChange =
|
|
28
|
+
const onChange = vi.fn();
|
|
26
29
|
|
|
27
30
|
render( <CustomDuotoneBar value={ VALUE } onChange={ onChange } /> );
|
|
28
31
|
|
|
@@ -36,7 +39,7 @@ describe( 'CustomDuotoneBar', () => {
|
|
|
36
39
|
} );
|
|
37
40
|
|
|
38
41
|
it( 'ignores dragging a control point', () => {
|
|
39
|
-
const onChange =
|
|
42
|
+
const onChange = vi.fn();
|
|
40
43
|
|
|
41
44
|
render( <CustomDuotoneBar value={ VALUE } onChange={ onChange } /> );
|
|
42
45
|
|
|
@@ -56,12 +59,12 @@ describe( 'CustomDuotoneBar', () => {
|
|
|
56
59
|
// gradient bar's own `stopPropagation` guards against.
|
|
57
60
|
it( 'does not let arrow keys bubble out of the control', async () => {
|
|
58
61
|
const user = userEvent.setup();
|
|
59
|
-
const onAncestorKeyDown =
|
|
62
|
+
const onAncestorKeyDown = vi.fn();
|
|
60
63
|
|
|
61
64
|
render(
|
|
62
65
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
63
66
|
<div onKeyDown={ onAncestorKeyDown }>
|
|
64
|
-
<CustomDuotoneBar value={ VALUE } onChange={
|
|
67
|
+
<CustomDuotoneBar value={ VALUE } onChange={ vi.fn() } />
|
|
65
68
|
</div>
|
|
66
69
|
);
|
|
67
70
|
|
|
@@ -79,7 +82,7 @@ describe( 'CustomDuotoneBar', () => {
|
|
|
79
82
|
it( 'still opens the color picker when a control point is clicked', async () => {
|
|
80
83
|
const user = userEvent.setup();
|
|
81
84
|
|
|
82
|
-
render( <CustomDuotoneBar value={ VALUE } onChange={
|
|
85
|
+
render( <CustomDuotoneBar value={ VALUE } onChange={ vi.fn() } /> );
|
|
83
86
|
|
|
84
87
|
await user.click(
|
|
85
88
|
screen.getAllByRole( 'button', {
|
|
@@ -94,12 +97,12 @@ describe( 'CustomDuotoneBar', () => {
|
|
|
94
97
|
|
|
95
98
|
it( 'still lets other keys bubble', async () => {
|
|
96
99
|
const user = userEvent.setup();
|
|
97
|
-
const onAncestorKeyDown =
|
|
100
|
+
const onAncestorKeyDown = vi.fn();
|
|
98
101
|
|
|
99
102
|
render(
|
|
100
103
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
101
104
|
<div onKeyDown={ onAncestorKeyDown }>
|
|
102
|
-
<CustomDuotoneBar value={ VALUE } onChange={
|
|
105
|
+
<CustomDuotoneBar value={ VALUE } onChange={ vi.fn() } />
|
|
103
106
|
</div>
|
|
104
107
|
);
|
|
105
108
|
|
|
@@ -1,3 +1,4 @@
|
|
|
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';
|
|
@@ -23,7 +24,7 @@ const COLOR_PALETTE = [
|
|
|
23
24
|
describe( 'DuotonePicker', () => {
|
|
24
25
|
it( 'should use matching values only for display in command button presentation', async () => {
|
|
25
26
|
const user = userEvent.setup();
|
|
26
|
-
const onChange =
|
|
27
|
+
const onChange = vi.fn();
|
|
27
28
|
render(
|
|
28
29
|
<DuotonePicker
|
|
29
30
|
aria-label="Duotones"
|
|
@@ -63,7 +64,7 @@ describe( 'DuotonePicker', () => {
|
|
|
63
64
|
aria-label="Duotones"
|
|
64
65
|
duotonePalette={ DUPLICATE_DUOTONES }
|
|
65
66
|
colorPalette={ COLOR_PALETTE }
|
|
66
|
-
onChange={
|
|
67
|
+
onChange={ vi.fn() }
|
|
67
68
|
asButtons={ false }
|
|
68
69
|
presentation="command-buttons"
|
|
69
70
|
disableCustomDuotone
|
|
@@ -89,7 +90,7 @@ describe( 'DuotonePicker', () => {
|
|
|
89
90
|
colorPalette={ COLOR_PALETTE }
|
|
90
91
|
value={ COLORS_A }
|
|
91
92
|
selectedSlug="dark-background"
|
|
92
|
-
onChange={
|
|
93
|
+
onChange={ vi.fn() }
|
|
93
94
|
asButtons
|
|
94
95
|
unsetable={ false }
|
|
95
96
|
clearable={ false }
|
|
@@ -120,7 +121,7 @@ describe( 'DuotonePicker', () => {
|
|
|
120
121
|
duotonePalette={ DUPLICATE_DUOTONES }
|
|
121
122
|
colorPalette={ COLOR_PALETTE }
|
|
122
123
|
value={ undefined }
|
|
123
|
-
onChange={
|
|
124
|
+
onChange={ vi.fn() }
|
|
124
125
|
disableCustomDuotone
|
|
125
126
|
disableCustomColors
|
|
126
127
|
/>
|
|
@@ -137,7 +138,7 @@ describe( 'DuotonePicker', () => {
|
|
|
137
138
|
colorPalette={ COLOR_PALETTE }
|
|
138
139
|
value={ COLORS_A }
|
|
139
140
|
selectedSlug="dark-text"
|
|
140
|
-
onChange={
|
|
141
|
+
onChange={ vi.fn() }
|
|
141
142
|
unsetable={ false }
|
|
142
143
|
disableCustomDuotone
|
|
143
144
|
disableCustomColors
|
|
@@ -157,7 +158,7 @@ describe( 'DuotonePicker', () => {
|
|
|
157
158
|
duotonePalette={ DUPLICATE_DUOTONES }
|
|
158
159
|
colorPalette={ COLOR_PALETTE }
|
|
159
160
|
value={ COLORS_A }
|
|
160
|
-
onChange={
|
|
161
|
+
onChange={ vi.fn() }
|
|
161
162
|
unsetable={ false }
|
|
162
163
|
disableCustomDuotone
|
|
163
164
|
disableCustomColors
|
|
@@ -177,7 +178,7 @@ describe( 'DuotonePicker', () => {
|
|
|
177
178
|
colorPalette={ COLOR_PALETTE }
|
|
178
179
|
value={ COLORS_A }
|
|
179
180
|
selectedSlug=""
|
|
180
|
-
onChange={
|
|
181
|
+
onChange={ vi.fn() }
|
|
181
182
|
unsetable={ false }
|
|
182
183
|
disableCustomDuotone
|
|
183
184
|
disableCustomColors
|
|
@@ -191,7 +192,7 @@ describe( 'DuotonePicker', () => {
|
|
|
191
192
|
|
|
192
193
|
it( 'should pass index and slug to onChange when a swatch is clicked', async () => {
|
|
193
194
|
const user = userEvent.setup();
|
|
194
|
-
const onChange =
|
|
195
|
+
const onChange = vi.fn();
|
|
195
196
|
|
|
196
197
|
render(
|
|
197
198
|
<DuotonePicker
|
|
@@ -215,7 +216,7 @@ describe( 'DuotonePicker', () => {
|
|
|
215
216
|
|
|
216
217
|
it( 'should clear only the selected preset, identified by slug', async () => {
|
|
217
218
|
const user = userEvent.setup();
|
|
218
|
-
const onChange =
|
|
219
|
+
const onChange = vi.fn();
|
|
219
220
|
|
|
220
221
|
render(
|
|
221
222
|
<DuotonePicker
|
|
@@ -331,7 +332,7 @@ describe( 'DuotonePicker', () => {
|
|
|
331
332
|
] }
|
|
332
333
|
colorPalette={ COLOR_PALETTE }
|
|
333
334
|
value={ COLORS_B }
|
|
334
|
-
onChange={
|
|
335
|
+
onChange={ vi.fn() }
|
|
335
336
|
unsetable={ false }
|
|
336
337
|
disableCustomDuotone
|
|
337
338
|
disableCustomColors
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { describe, expect, 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 { ExternalLink } from '..';
|
|
@@ -5,7 +6,7 @@ import { ExternalLink } from '..';
|
|
|
5
6
|
describe( 'ExternalLink', () => {
|
|
6
7
|
test( 'should call function passed in onClick handler when clicking the link', async () => {
|
|
7
8
|
const user = await userEvent.setup();
|
|
8
|
-
const onClickMock =
|
|
9
|
+
const onClickMock = vi.fn();
|
|
9
10
|
|
|
10
11
|
render(
|
|
11
12
|
<ExternalLink href="https://wordpress.org" onClick={ onClickMock }>
|
|
@@ -35,7 +36,7 @@ describe( 'ExternalLink', () => {
|
|
|
35
36
|
|
|
36
37
|
// We are using this approach so we can test the defaultPrevented
|
|
37
38
|
// without passing an onClick prop to the component.
|
|
38
|
-
const onClickMock =
|
|
39
|
+
const onClickMock = vi.fn();
|
|
39
40
|
link.onclick = onClickMock;
|
|
40
41
|
|
|
41
42
|
await user.click( link );
|
|
@@ -47,7 +48,7 @@ describe( 'ExternalLink', () => {
|
|
|
47
48
|
|
|
48
49
|
test( 'should call function passed in onClick handler and prevent default action when clicking an internal anchor link', async () => {
|
|
49
50
|
const user = await userEvent.setup();
|
|
50
|
-
const onClickMock =
|
|
51
|
+
const onClickMock = vi.fn();
|
|
51
52
|
|
|
52
53
|
render(
|
|
53
54
|
<ExternalLink href="#test" onClick={ onClickMock }>
|
|
@@ -81,7 +82,7 @@ describe( 'ExternalLink', () => {
|
|
|
81
82
|
|
|
82
83
|
// We are using this approach so we can test the defaultPrevented
|
|
83
84
|
// without passing an onClick prop to the component.
|
|
84
|
-
const onClickMock =
|
|
85
|
+
const onClickMock = vi.fn();
|
|
85
86
|
link.onclick = onClickMock;
|
|
86
87
|
|
|
87
88
|
await user.click( link );
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { fireEvent, render, screen } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import _Picker from '..';
|
|
4
5
|
import type { FocalPointPickerProps } from '../types';
|
|
5
6
|
|
|
7
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
8
|
+
|
|
6
9
|
type Log = { name: string; args: unknown[] };
|
|
7
10
|
type EventLogger = ( name: string, args: unknown[] ) => void;
|
|
8
11
|
|
|
@@ -11,7 +14,7 @@ const Picker = ( props: React.ComponentProps< typeof _Picker > ) => {
|
|
|
11
14
|
};
|
|
12
15
|
|
|
13
16
|
const props: FocalPointPickerProps = {
|
|
14
|
-
onChange:
|
|
17
|
+
onChange: vi.fn(),
|
|
15
18
|
url: 'test-url',
|
|
16
19
|
value: {
|
|
17
20
|
x: 0,
|
|
@@ -24,7 +27,7 @@ describe( 'FocalPointPicker', () => {
|
|
|
24
27
|
it( 'clicking the draggable area should focus it', async () => {
|
|
25
28
|
const user = userEvent.setup();
|
|
26
29
|
|
|
27
|
-
const mockOnChange =
|
|
30
|
+
const mockOnChange = vi.fn();
|
|
28
31
|
|
|
29
32
|
render( <Picker { ...props } onChange={ mockOnChange } /> );
|
|
30
33
|
|
|
@@ -36,9 +39,9 @@ describe( 'FocalPointPicker', () => {
|
|
|
36
39
|
} );
|
|
37
40
|
|
|
38
41
|
it( 'should stop a drag operation when focus is lost', () => {
|
|
39
|
-
const mockOnDrag =
|
|
40
|
-
const mockOnDragEnd =
|
|
41
|
-
const mockOnChange =
|
|
42
|
+
const mockOnDrag = vi.fn();
|
|
43
|
+
const mockOnDragEnd = vi.fn();
|
|
44
|
+
const mockOnChange = vi.fn();
|
|
42
45
|
|
|
43
46
|
render(
|
|
44
47
|
<Picker
|
|
@@ -99,8 +102,8 @@ describe( 'FocalPointPicker', () => {
|
|
|
99
102
|
it( 'should allow value altering', async () => {
|
|
100
103
|
const user = userEvent.setup();
|
|
101
104
|
|
|
102
|
-
const spyChange =
|
|
103
|
-
const spy =
|
|
105
|
+
const spyChange = vi.fn();
|
|
106
|
+
const spy = vi.fn();
|
|
104
107
|
|
|
105
108
|
render(
|
|
106
109
|
<Picker
|
|
@@ -142,7 +145,7 @@ describe( 'FocalPointPicker', () => {
|
|
|
142
145
|
it( 'call onChange with the expected values', async () => {
|
|
143
146
|
const user = userEvent.setup();
|
|
144
147
|
|
|
145
|
-
const spyChange =
|
|
148
|
+
const spyChange = vi.fn();
|
|
146
149
|
render(
|
|
147
150
|
<Picker
|
|
148
151
|
{ ...props }
|
|
@@ -165,7 +168,7 @@ describe( 'FocalPointPicker', () => {
|
|
|
165
168
|
|
|
166
169
|
describe( 'value handling', () => {
|
|
167
170
|
it( 'should handle legacy string values', () => {
|
|
168
|
-
const onChangeSpy =
|
|
171
|
+
const onChangeSpy = vi.fn();
|
|
169
172
|
render(
|
|
170
173
|
<Picker
|
|
171
174
|
{ ...props }
|