@wordpress/block-editor 17.0.2-next.v.202608281122.0 → 17.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 +29 -1
- package/build/components/background-image-control/index.cjs +18 -1
- package/build/components/background-image-control/index.cjs.map +2 -2
- package/build/components/block-allowed-blocks/modal.cjs +2 -1
- package/build/components/block-allowed-blocks/modal.cjs.map +3 -3
- package/build/components/block-edit/edit.cjs.map +1 -1
- package/build/components/block-inspector/index.cjs +3 -12
- package/build/components/block-inspector/index.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-is-hovered.cjs +17 -4
- package/build/components/block-list/use-block-props/use-is-hovered.cjs.map +2 -2
- package/build/components/block-preview/index.cjs +1 -2
- package/build/components/block-preview/index.cjs.map +2 -2
- package/build/components/block-switcher/index.cjs +2 -1
- package/build/components/block-switcher/index.cjs.map +3 -3
- package/build/components/block-toolbar/pattern-overrides-dropdown.cjs +2 -1
- package/build/components/block-toolbar/pattern-overrides-dropdown.cjs.map +3 -3
- package/build/components/global-styles/border-panel.cjs +19 -42
- package/build/components/global-styles/border-panel.cjs.map +2 -2
- package/build/components/global-styles/image-settings-panel.cjs.map +1 -1
- package/build/components/iframe/index.cjs.map +1 -1
- package/build/components/inserter/hooks/use-patterns-paging.cjs.map +1 -1
- package/build/components/inserter-draggable-blocks/index.cjs.map +1 -1
- package/build/components/inspector-controls-tabs/content-tab.cjs +2 -3
- package/build/components/inspector-controls-tabs/content-tab.cjs.map +2 -2
- package/build/components/inspector-controls-tabs/styles-tab.cjs +1 -3
- package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +1 -2
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
- package/build/components/inspector-popover-header/index.cjs +5 -4
- package/build/components/inspector-popover-header/index.cjs.map +3 -3
- package/build/components/link-control/index.cjs.map +2 -2
- package/build/components/link-control/search-input.cjs.map +1 -1
- package/build/components/list-view/block-select-button.cjs +9 -1
- package/build/components/list-view/block-select-button.cjs.map +2 -2
- package/build/components/list-view/block.cjs +2 -1
- package/build/components/list-view/block.cjs.map +2 -2
- package/build/components/list-view/use-list-view-drop-zone.cjs.map +1 -1
- package/build/components/media-replace-flow/index.cjs +4 -1
- package/build/components/media-replace-flow/index.cjs.map +2 -2
- package/build/components/navigable-toolbar/index.cjs +3 -0
- package/build/components/navigable-toolbar/index.cjs.map +2 -2
- package/build/components/rich-text/event-listeners/enter.cjs +23 -11
- package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
- package/build/components/rich-text/event-listeners/index.cjs +0 -2
- package/build/components/rich-text/event-listeners/index.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/input-rules.cjs +4 -2
- package/build/components/rich-text/event-listeners/input-rules.cjs.map +2 -2
- package/build/components/use-block-drop-zone/index.cjs.map +1 -1
- package/build/components/writing-flow/index.cjs +5 -0
- package/build/components/writing-flow/index.cjs.map +3 -3
- package/build/components/writing-flow/use-arrow-nav.cjs.map +1 -1
- package/build/components/writing-flow/use-input.cjs +12 -2
- package/build/components/writing-flow/use-input.cjs.map +2 -2
- package/build/components/writing-flow/use-tab-nav.cjs +84 -41
- package/build/components/writing-flow/use-tab-nav.cjs.map +3 -3
- package/build/components/{rich-text/event-listeners/undo-automatic-change.cjs → writing-flow/use-undo-automatic-change.cjs} +18 -15
- package/build/components/writing-flow/use-undo-automatic-change.cjs.map +7 -0
- package/build/hooks/border.cjs +2 -46
- package/build/hooks/border.cjs.map +2 -2
- package/build/hooks/generate-fields-from-attributes.cjs.map +1 -1
- package/build/hooks/index.cjs +0 -2
- package/build/hooks/index.cjs.map +3 -3
- package/build/hooks/style.cjs +2 -2
- package/build/hooks/style.cjs.map +2 -2
- package/build/layouts/flex.cjs +3 -0
- package/build/layouts/flex.cjs.map +2 -2
- package/build/store/actions.cjs +12 -9
- package/build/store/actions.cjs.map +3 -3
- package/build-module/components/background-image-control/index.mjs +18 -1
- package/build-module/components/background-image-control/index.mjs.map +2 -2
- package/build-module/components/block-allowed-blocks/modal.mjs +2 -2
- package/build-module/components/block-allowed-blocks/modal.mjs.map +2 -2
- package/build-module/components/block-edit/edit.mjs.map +1 -1
- package/build-module/components/block-inspector/index.mjs +3 -12
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-is-hovered.mjs +17 -4
- package/build-module/components/block-list/use-block-props/use-is-hovered.mjs.map +2 -2
- package/build-module/components/block-preview/index.mjs +1 -2
- package/build-module/components/block-preview/index.mjs.map +2 -2
- package/build-module/components/block-switcher/index.mjs +2 -2
- package/build-module/components/block-switcher/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/pattern-overrides-dropdown.mjs +3 -6
- package/build-module/components/block-toolbar/pattern-overrides-dropdown.mjs.map +2 -2
- package/build-module/components/global-styles/border-panel.mjs +19 -42
- package/build-module/components/global-styles/border-panel.mjs.map +2 -2
- package/build-module/components/global-styles/image-settings-panel.mjs.map +1 -1
- package/build-module/components/iframe/index.mjs.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-paging.mjs.map +1 -1
- package/build-module/components/inserter-draggable-blocks/index.mjs.map +1 -1
- package/build-module/components/inspector-controls-tabs/content-tab.mjs +3 -4
- package/build-module/components/inspector-controls-tabs/content-tab.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs +1 -3
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +1 -2
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
- package/build-module/components/inspector-popover-header/index.mjs +6 -7
- package/build-module/components/inspector-popover-header/index.mjs.map +2 -2
- package/build-module/components/link-control/index.mjs.map +2 -2
- package/build-module/components/link-control/search-input.mjs.map +1 -1
- package/build-module/components/list-view/block-select-button.mjs +9 -1
- package/build-module/components/list-view/block-select-button.mjs.map +2 -2
- package/build-module/components/list-view/block.mjs +2 -1
- package/build-module/components/list-view/block.mjs.map +2 -2
- package/build-module/components/list-view/use-list-view-drop-zone.mjs.map +1 -1
- package/build-module/components/media-replace-flow/index.mjs +4 -1
- package/build-module/components/media-replace-flow/index.mjs.map +2 -2
- package/build-module/components/navigable-toolbar/index.mjs +3 -0
- package/build-module/components/navigable-toolbar/index.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs +23 -11
- package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/index.mjs +0 -2
- package/build-module/components/rich-text/event-listeners/index.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/input-rules.mjs +4 -2
- package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
- package/build-module/components/use-block-drop-zone/index.mjs.map +1 -1
- package/build-module/components/writing-flow/index.mjs +5 -0
- package/build-module/components/writing-flow/index.mjs.map +2 -2
- package/build-module/components/writing-flow/use-arrow-nav.mjs.map +1 -1
- package/build-module/components/writing-flow/use-input.mjs +12 -2
- package/build-module/components/writing-flow/use-input.mjs.map +2 -2
- package/build-module/components/writing-flow/use-tab-nav.mjs +86 -43
- package/build-module/components/writing-flow/use-tab-nav.mjs.map +3 -3
- package/build-module/components/writing-flow/use-undo-automatic-change.mjs +36 -0
- package/build-module/components/writing-flow/use-undo-automatic-change.mjs.map +7 -0
- package/build-module/hooks/border.mjs +1 -45
- package/build-module/hooks/border.mjs.map +2 -2
- package/build-module/hooks/generate-fields-from-attributes.mjs.map +1 -1
- package/build-module/hooks/index.mjs +0 -2
- package/build-module/hooks/index.mjs.map +2 -2
- package/build-module/hooks/style.mjs +3 -2
- package/build-module/hooks/style.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +3 -0
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/store/actions.mjs +12 -9
- package/build-module/store/actions.mjs.map +2 -2
- package/build-style/content-rtl.css +9 -20
- package/build-style/content.css +9 -20
- package/build-style/style-rtl.css +100 -221
- package/build-style/style.css +100 -221
- package/package.json +42 -41
- package/src/autocompleters/test/block.js +1 -0
- package/src/components/alignment-control/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +34 -16
- package/src/components/alignment-control/test/{index.jsx → index.jsdom.test.jsx} +2 -1
- package/src/components/background-image-control/index.jsx +32 -1
- package/src/components/background-image-control/style.scss +5 -3
- package/src/components/background-image-control/test/{index.js → index.jsdom.test.js} +1 -0
- package/src/components/block-alignment-control/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +68 -13
- package/src/components/block-alignment-control/test/{index.jsx → index.jsdom.test.jsx} +2 -1
- package/src/components/block-allowed-blocks/modal.jsx +3 -3
- package/src/components/block-bindings/test/{use-block-bindings-utils.js → use-block-bindings-utils.jsdom.test.js} +2 -1
- package/src/components/block-breadcrumb/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +2 -2
- package/src/components/block-breadcrumb/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/block-compare/test/__snapshots__/{block-view.jsx.snap → block-view.jsdom.test.jsx.snap} +2 -2
- package/src/components/block-compare/test/{block-view.jsx → block-view.jsdom.test.jsx} +1 -0
- package/src/components/block-controls/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/block-edit/edit.jsx +1 -1
- package/src/components/block-edit/test/{edit.jsx → edit.jsdom.test.jsx} +1 -0
- package/src/components/block-icon/content.scss +0 -6
- package/src/components/block-icon/style.scss +0 -6
- package/src/components/block-icon/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +6 -2
- package/src/components/block-inspector/index.jsx +3 -11
- package/src/components/block-list/content.scss +4 -1
- package/src/components/block-list/use-block-props/use-is-hovered.js +24 -5
- package/src/components/block-manager/style.scss +2 -0
- package/src/components/block-mover/test/mover-description.js +1 -0
- package/src/components/block-preview/index.jsx +1 -2
- package/src/components/block-preview/test/{index.jsx → index.jsdom.test.jsx} +10 -6
- package/src/components/block-selection-clearer/test/{index.jsx → index.jsdom.test.jsx} +24 -19
- package/src/components/block-settings-menu/test/{block-mode-toggle.jsx → block-mode-toggle.jsdom.test.jsx} +5 -1
- package/src/components/block-styles/test/utils.js +1 -0
- package/src/components/block-switcher/index.jsx +3 -3
- package/src/components/block-switcher/test/{index.jsx → index.jsdom.test.jsx} +8 -4
- package/src/components/block-switcher/test/use-transformed.patterns.js +1 -0
- package/src/components/block-switcher/test/utils.js +1 -0
- package/src/components/block-title/test/{index.jsx → index.jsdom.test.jsx} +7 -3
- package/src/components/block-toolbar/pattern-overrides-dropdown.jsx +3 -6
- package/src/components/block-toolbar/style.scss +1 -1
- package/src/components/block-toolbar/test/{block-toolbar-icon.jsx → block-toolbar-icon.jsdom.test.jsx} +25 -21
- package/src/components/block-variation-picker/content.scss +5 -3
- package/src/components/block-vertical-alignment-control/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +55 -11
- package/src/components/block-vertical-alignment-control/test/{index.jsx → index.jsdom.test.jsx} +2 -1
- package/src/components/block-visibility/test/{use-block-visibility.js → use-block-visibility.jsdom.test.js} +6 -5
- package/src/components/block-visibility/test/utils.js +2 -1
- package/src/components/border-radius-control/test/{index.jsx → index.jsdom.test.jsx} +8 -1
- package/src/components/border-radius-control/test/utils.js +1 -0
- package/src/components/button-block-appender/content.scss +1 -1
- package/src/components/child-layout-control/test/{index.jsx → index.jsdom.test.jsx} +18 -15
- package/src/components/color-palette/test/{control.jsx → control.jsdom.test.jsx} +15 -4
- package/src/components/colors/test/utils.js +1 -0
- package/src/components/colors/test/{with-colors.jsx → with-colors.jsdom.test.jsx} +4 -3
- package/src/components/colors-gradients/test/{control.jsx → control.jsdom.test.jsx} +8 -3
- package/src/components/contrast-checker/test/{index.jsx → index.jsdom.test.jsx} +2 -1
- package/src/components/default-block-appender/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +4 -4
- package/src/components/default-block-appender/test/{index.jsx → index.jsdom.test.jsx} +8 -7
- package/src/components/dimensions-tool/test/{index.jsx → index.jsdom.test.jsx} +27 -22
- package/src/components/dimensions-tool/test/utils.js +1 -0
- package/src/components/duotone-control/test/{index.jsx → index.jsdom.test.jsx} +6 -3
- package/src/components/font-sizes/test/fluid-utils.js +1 -0
- package/src/components/font-sizes/test/utils.js +1 -0
- package/src/components/global-styles/border-panel.jsx +17 -40
- package/src/components/global-styles/image-settings-panel.jsx +1 -1
- package/src/components/global-styles/inheritance/test/{index.jsx → index.jsdom.test.jsx} +5 -2
- package/src/components/global-styles/test/{background-panel.jsx → background-panel.jsdom.test.jsx} +10 -5
- package/src/components/global-styles/test/{border-panel.jsx → border-panel.jsdom.test.jsx} +113 -13
- package/src/components/global-styles/test/{color-panel.jsx → color-panel.jsdom.test.jsx} +5 -0
- package/src/components/global-styles/test/{dimensions-panel.jsx → dimensions-panel.jsdom.test.jsx} +14 -14
- package/src/components/global-styles/test/{filters-panel.jsx → filters-panel.jsdom.test.jsx} +7 -4
- package/src/components/global-styles/test/{inherited-value-context-core.js → inherited-value-context-core.jsdom.test.js} +10 -9
- package/src/components/global-styles/test/{inherited-value-context.jsx → inherited-value-context.jsdom.test.jsx} +18 -17
- package/src/components/global-styles/test/{state-control-badges.jsx → state-control-badges.jsdom.test.jsx} +3 -2
- package/src/components/global-styles/test/{typography-panel-core.jsx → typography-panel-core.jsdom.test.jsx} +5 -2
- package/src/components/global-styles/test/{typography-panel.jsx → typography-panel.jsdom.test.jsx} +17 -12
- package/src/components/global-styles/test/typography-utils.js +1 -0
- package/src/components/global-styles/test/utils.js +1 -0
- package/src/components/grid/style.scss +0 -10
- package/src/components/iframe/index.jsx +3 -3
- package/src/components/image-editor/test/index.js +1 -0
- package/src/components/image-size-control/test/{index.jsx → index.jsdom.test.jsx} +8 -3
- package/src/components/inner-blocks/test/__snapshots__/index.jsdom.test.jsx.snap +15 -0
- package/src/components/inner-blocks/test/{index.jsx → index.jsdom.test.jsx} +2 -0
- package/src/components/inner-content/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/inserter/hooks/use-patterns-paging.js +1 -1
- package/src/components/inserter/media-tab/test/{hooks.js → hooks.jsdom.test.js} +12 -11
- package/src/components/inserter/media-tab/test/{media-panel.jsx → media-panel.jsdom.test.jsx} +15 -12
- package/src/components/inserter/style.scss +2 -2
- package/src/components/inserter/test/get-appender-label.js +12 -11
- package/src/components/inserter/test/search-items.js +1 -0
- package/src/components/inserter-draggable-blocks/index.jsx +1 -1
- package/src/components/inserter-list-item/style.scss +1 -0
- package/src/components/inspector-controls-tabs/content-tab.jsx +7 -14
- package/src/components/inspector-controls-tabs/styles-tab.jsx +1 -4
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -8
- package/src/components/inspector-popover-header/index.jsx +6 -7
- package/src/components/line-height-control/test/{index.jsx → index.jsdom.test.jsx} +3 -0
- package/src/components/link-control/index.jsx +3 -0
- package/src/components/link-control/search-input.jsx +1 -1
- package/src/components/link-control/style.scss +1 -1
- package/src/components/link-control/test/{index.jsx → index.jsdom.test.jsx} +52 -42
- package/src/components/link-control/test/is-url-like.js +1 -0
- package/src/components/link-control/test/{url-normalization.test.jsx → url-normalization.jsdom.test.jsx} +21 -20
- package/src/components/link-picker/test/{index.jsx → index.jsdom.test.jsx} +31 -30
- package/src/components/list-view/block-select-button.jsx +6 -1
- package/src/components/list-view/block.jsx +6 -4
- package/src/components/list-view/style.scss +55 -35
- package/src/components/list-view/test/use-list-view-drop-zone.js +1 -0
- package/src/components/list-view/test/utils.js +1 -0
- package/src/components/list-view/use-list-view-drop-zone.js +1 -1
- package/src/components/media-placeholder/test/get-computed-accept-attribute.js +1 -0
- package/src/components/media-placeholder/test/{index.jsx → index.jsdom.test.jsx} +8 -2
- package/src/components/media-replace-flow/index.jsx +6 -1
- package/src/components/media-replace-flow/test/{index.jsx → index.jsdom.test.jsx} +3 -0
- package/src/components/navigable-toolbar/index.jsx +4 -0
- package/src/components/navigable-toolbar/test/index.browser.test.js +50 -0
- package/src/components/panel-color-settings/test/{index.jsx → index.jsdom.test.jsx} +3 -0
- package/src/components/preset-input-control/test/{index.jsx → index.jsdom.test.jsx} +8 -2
- package/src/components/preset-input-control/test/utils.js +1 -0
- package/src/components/provider/test/{experimental-provider.jsx → experimental-provider.jsdom.test.jsx} +3 -2
- package/src/components/provider/test/{use-block-sync.jsx → use-block-sync.jsdom.test.jsx} +45 -44
- package/src/components/recursion-provider/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/responsive-block-control/style.scss +1 -0
- package/src/components/responsive-block-control/test/{index.jsx → index.jsdom.test.jsx} +6 -3
- package/src/components/rich-text/event-listeners/enter.js +29 -14
- package/src/components/rich-text/event-listeners/index.js +0 -2
- package/src/components/rich-text/event-listeners/input-rules.js +7 -2
- package/src/components/spacing-sizes-control/test/{index.jsx → index.jsdom.test.jsx} +23 -20
- package/src/components/spacing-sizes-control/test/utils.js +1 -0
- package/src/components/url-input/test/{button.jsx → button.jsdom.test.jsx} +4 -1
- package/src/components/url-input/test/fixtures/validated-input-control-deprecation.js +2 -0
- package/src/components/url-input/test/{index.jsx → index.jsdom.test.jsx} +23 -13
- package/src/components/use-block-display-information/test/{index.jsx → index.jsdom.test.jsx} +14 -10
- package/src/components/use-block-drop-zone/index.js +2 -2
- package/src/components/use-block-drop-zone/test/index.js +1 -0
- package/src/components/use-on-block-drop/test/index.js +28 -31
- package/src/components/warning/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +2 -2
- package/src/components/warning/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/writing-flow/index.jsx +5 -0
- package/src/components/writing-flow/style.scss +48 -0
- package/src/components/writing-flow/test/{index.js → index.jsdom.test.js} +1 -0
- package/src/components/writing-flow/use-arrow-nav.js +2 -2
- package/src/components/writing-flow/use-input.js +29 -2
- package/src/components/writing-flow/use-tab-nav.jsx +155 -70
- package/src/components/writing-flow/use-undo-automatic-change.js +40 -0
- package/src/elements/test/{index.js → index.jsdom.test.js} +1 -0
- package/src/hooks/border.jsx +0 -53
- package/src/hooks/generate-fields-from-attributes.js +1 -1
- package/src/hooks/index.js +0 -2
- package/src/hooks/style.jsx +3 -2
- package/src/hooks/test/{align.jsx → align.jsdom.test.jsx} +1 -0
- package/src/hooks/test/allowed-blocks.js +1 -0
- package/src/hooks/test/{anchor.js → anchor.jsdom.test.js} +1 -0
- package/src/hooks/test/{auto-inspector-controls.js → auto-inspector-controls.jsdom.test.js} +1 -0
- package/src/hooks/test/{background.jsx → background.jsdom.test.jsx} +5 -2
- package/src/hooks/test/{block-style-state.js → block-style-state.jsdom.test.js} +4 -3
- package/src/hooks/test/{cross-origin-isolation.js → cross-origin-isolation.jsdom.test.js} +18 -25
- package/src/hooks/test/{custom-class-name.jsx → custom-class-name.jsdom.test.jsx} +1 -0
- package/src/hooks/test/{dimensions.js → dimensions.jsdom.test.js} +1 -0
- package/src/hooks/test/{duotone.js → duotone.jsdom.test.js} +1 -0
- package/src/hooks/test/{font-size.js → font-size.jsdom.test.js} +1 -0
- package/src/hooks/test/gap.js +1 -0
- package/src/hooks/test/generate-fields-from-attributes.js +1 -0
- package/src/hooks/test/generated-class-name.js +1 -0
- package/src/hooks/test/{inherited-value-wiring.jsx → inherited-value-wiring.jsdom.test.jsx} +49 -51
- package/src/hooks/test/{layout-child.js → layout-child.jsdom.test.js} +1 -0
- package/src/hooks/test/{layout.js → layout.jsdom.test.js} +1 -0
- package/src/hooks/test/metadata.js +1 -0
- package/src/hooks/test/preset-round-trip.js +2 -0
- package/src/hooks/test/settings.jsx +1 -0
- package/src/hooks/test/state-utils.js +1 -0
- package/src/hooks/test/{style.jsx → style.jsdom.test.jsx} +1 -0
- package/src/hooks/test/{text-align.jsx → text-align.jsdom.test.jsx} +1 -0
- package/src/hooks/test/{use-typography-props.js → use-typography-props.jsdom.test.js} +1 -0
- package/src/hooks/test/{utils.js → utils.jsdom.test.js} +1 -0
- package/src/layouts/flex.jsx +7 -0
- package/src/layouts/test/{constrained.jsx → constrained.jsdom.test.jsx} +6 -3
- package/src/layouts/test/{flex.jsx → flex.jsdom.test.jsx} +52 -2
- package/src/layouts/test/{flow.js → flow.jsdom.test.js} +1 -0
- package/src/layouts/test/{grid.jsx → grid.jsdom.test.jsx} +5 -2
- package/src/layouts/test/utils.js +1 -0
- package/src/store/actions.js +14 -12
- package/src/store/test/{actions.js → actions.jsdom.test.js} +50 -49
- package/src/store/test/array.js +1 -0
- package/src/store/test/get-block-settings.js +1 -0
- package/src/store/test/performance.js +2 -1
- package/src/store/test/private-actions.js +1 -0
- package/src/store/test/private-selectors.js +13 -3
- package/src/store/test/reducer.js +37 -8
- package/src/store/test/{registry-selectors.js → registry-selectors.jsdom.test.js} +9 -0
- package/src/store/test/{selectors.jsx → selectors.jsdom.test.jsx} +13 -3
- package/src/style.scss +1 -1
- package/src/utils/test/block-bindings.js +1 -0
- package/src/utils/test/color-values.js +1 -0
- package/src/utils/test/{dom.jsx → dom.jsdom.test.jsx} +38 -43
- package/src/utils/test/format-font-style.js +1 -0
- package/src/utils/test/format-font-weight.js +1 -0
- package/src/utils/test/get-font-styles-and-weights.js +1 -0
- package/src/utils/test/math.js +1 -0
- package/src/utils/test/object.js +1 -0
- package/src/utils/test/pasting.js +1 -0
- package/src/utils/test/selection.js +1 -0
- package/src/utils/test/sorting.js +1 -0
- package/src/utils/test/transform-styles.js +2 -1
- package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +0 -7
- package/build/hooks/block-fields/fields-dropdown-menu.cjs +0 -67
- package/build/hooks/block-fields/fields-dropdown-menu.cjs.map +0 -7
- package/build/hooks/block-fields/index.cjs +0 -238
- package/build/hooks/block-fields/index.cjs.map +0 -7
- package/build/hooks/block-fields/link/index.cjs +0 -174
- package/build/hooks/block-fields/link/index.cjs.map +0 -7
- package/build/hooks/block-fields/media/index.cjs +0 -262
- package/build/hooks/block-fields/media/index.cjs.map +0 -7
- package/build/hooks/block-fields/rich-text/index.cjs +0 -146
- package/build/hooks/block-fields/rich-text/index.cjs.map +0 -7
- package/build/hooks/block-fields/use-inspector-popover-placement.cjs +0 -41
- package/build/hooks/block-fields/use-inspector-popover-placement.cjs.map +0 -7
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +0 -33
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +0 -7
- package/build-module/hooks/block-fields/fields-dropdown-menu.mjs +0 -46
- package/build-module/hooks/block-fields/fields-dropdown-menu.mjs.map +0 -7
- package/build-module/hooks/block-fields/index.mjs +0 -210
- package/build-module/hooks/block-fields/index.mjs.map +0 -7
- package/build-module/hooks/block-fields/link/index.mjs +0 -141
- package/build-module/hooks/block-fields/link/index.mjs.map +0 -7
- package/build-module/hooks/block-fields/media/index.mjs +0 -241
- package/build-module/hooks/block-fields/media/index.mjs.map +0 -7
- package/build-module/hooks/block-fields/rich-text/index.mjs +0 -115
- package/build-module/hooks/block-fields/rich-text/index.mjs.map +0 -7
- package/build-module/hooks/block-fields/use-inspector-popover-placement.mjs +0 -16
- package/build-module/hooks/block-fields/use-inspector-popover-placement.mjs.map +0 -7
- package/src/components/color-palette/test/__snapshots__/control.jsx.snap +0 -143
- package/src/components/inner-blocks/test/__snapshots__/index.jsx.snap +0 -15
- package/src/components/rich-text/event-listeners/undo-automatic-change.js +0 -39
- package/src/hooks/block-fields/fields-dropdown-menu.jsx +0 -47
- package/src/hooks/block-fields/index.jsx +0 -302
- package/src/hooks/block-fields/link/index.jsx +0 -155
- package/src/hooks/block-fields/link/styles.scss +0 -18
- package/src/hooks/block-fields/media/index.jsx +0 -269
- package/src/hooks/block-fields/media/styles.scss +0 -77
- package/src/hooks/block-fields/rich-text/index.jsx +0 -123
- package/src/hooks/block-fields/rich-text/styles.scss +0 -24
- package/src/hooks/block-fields/styles.scss +0 -33
- package/src/hooks/block-fields/use-inspector-popover-placement.js +0 -16
- /package/src/components/block-icon/test/{index.jsx → index.jsdom.test.jsx} +0 -0
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
__experimentalVStack as VStack,
|
|
3
3
|
__experimentalHStack as HStack,
|
|
4
|
-
__experimentalHeading as Heading,
|
|
5
4
|
__experimentalSpacer as Spacer,
|
|
6
5
|
Button,
|
|
7
|
-
__experimentalText as WCText,
|
|
8
6
|
} from '@wordpress/components';
|
|
9
7
|
import { closeSmall } from '@wordpress/icons';
|
|
10
8
|
import { __ } from '@wordpress/i18n';
|
|
9
|
+
import { Text } from '@wordpress/ui';
|
|
11
10
|
|
|
12
11
|
export default function InspectorPopoverHeader( {
|
|
13
12
|
title,
|
|
@@ -18,13 +17,13 @@ export default function InspectorPopoverHeader( {
|
|
|
18
17
|
return (
|
|
19
18
|
<VStack className="block-editor-inspector-popover-header" spacing={ 4 }>
|
|
20
19
|
<HStack alignment="center">
|
|
21
|
-
<
|
|
20
|
+
<Text
|
|
21
|
+
variant="heading-md"
|
|
22
|
+
render={ <h2 /> }
|
|
22
23
|
className="block-editor-inspector-popover-header__heading"
|
|
23
|
-
level={ 2 }
|
|
24
|
-
size={ 13 }
|
|
25
24
|
>
|
|
26
25
|
{ title }
|
|
27
|
-
</
|
|
26
|
+
</Text>
|
|
28
27
|
<Spacer />
|
|
29
28
|
{ actions.map( ( { label, icon, onClick } ) => (
|
|
30
29
|
<Button
|
|
@@ -49,7 +48,7 @@ export default function InspectorPopoverHeader( {
|
|
|
49
48
|
/>
|
|
50
49
|
) }
|
|
51
50
|
</HStack>
|
|
52
|
-
{ help && <
|
|
51
|
+
{ help && <Text>{ help }</Text> }
|
|
53
52
|
</VStack>
|
|
54
53
|
);
|
|
55
54
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { describe, expect, it } 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 LineHeightControl from '../';
|
|
5
6
|
import { BASE_DEFAULT_VALUE, SPIN_FACTOR, STEP } from '../utils';
|
|
6
7
|
|
|
8
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
9
|
+
|
|
7
10
|
const SPIN = STEP * SPIN_FACTOR;
|
|
8
11
|
|
|
9
12
|
const ControlledLineHeightControl = () => {
|
|
@@ -88,11 +88,14 @@ import normalizeUrl from './normalize-url';
|
|
|
88
88
|
* @property {boolean=} forceIsEditingLink If passed as either `true` or `false`, controls the
|
|
89
89
|
* internal editing state of the component to respective
|
|
90
90
|
* show or not show the URL input field.
|
|
91
|
+
* @property {string=} searchInputPlaceholder Placeholder text for the search input.
|
|
91
92
|
* @property {WPLinkControlValue=} value Current link value.
|
|
92
93
|
* @property {WPLinkControlOnChangeProp=} onChange Value change handler, called with the updated value if
|
|
93
94
|
* the user selects a new link or updates settings.
|
|
94
95
|
* @property {Function=} onInputChange Callback fired when the search input value changes.
|
|
95
96
|
* Use this for observation only (e.g., to track search state).
|
|
97
|
+
* @property {Function=} onRemove Callback invoked when the link is removed.
|
|
98
|
+
* @property {Function=} onCancel Callback invoked when editing is cancelled.
|
|
96
99
|
* @property {string=} inputValue Initial value for the search input (uncontrolled).
|
|
97
100
|
* @property {boolean=} noDirectEntry Whether to allow turning a URL-like search query directly into a link.
|
|
98
101
|
* @property {boolean=} showSuggestions Whether to present suggestions when typing the URL.
|
|
@@ -104,7 +104,7 @@ const LinkControlSearchInput = forwardRef(
|
|
|
104
104
|
// entity metadata from persisting when switching to a different link type.
|
|
105
105
|
// For example, when changing from an entity link (kind: 'post-type', type: 'page')
|
|
106
106
|
// to a custom URL (type: 'link', no kind), we need to ensure the old 'kind'
|
|
107
|
-
// doesn't carry over. We do want to preserve other
|
|
107
|
+
// doesn't carry over. We do want to preserve other properties like title, though.
|
|
108
108
|
const { id, url, kind, type, ...restLinkProps } =
|
|
109
109
|
currentLink ?? {};
|
|
110
110
|
onSelect(
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
afterAll,
|
|
3
|
+
afterEach,
|
|
4
|
+
beforeAll,
|
|
5
|
+
beforeEach,
|
|
6
|
+
describe,
|
|
7
|
+
expect,
|
|
8
|
+
it,
|
|
9
|
+
vi,
|
|
10
|
+
} from 'vitest';
|
|
1
11
|
import {
|
|
2
12
|
fireEvent,
|
|
3
13
|
render as baseRender,
|
|
@@ -9,6 +19,7 @@ import userEvent from '@testing-library/user-event';
|
|
|
9
19
|
import { SlotFillProvider } from '@wordpress/components';
|
|
10
20
|
import { useState, createElement } from '@wordpress/element';
|
|
11
21
|
import { useSelect } from '@wordpress/data';
|
|
22
|
+
import { useReducedMotion } from '@wordpress/compose';
|
|
12
23
|
import LinkControl from '../';
|
|
13
24
|
import {
|
|
14
25
|
fauxEntitySuggestions,
|
|
@@ -17,7 +28,12 @@ import {
|
|
|
17
28
|
} from './fixtures';
|
|
18
29
|
import { expectValidatedInputControlDeprecationIfCalled } from '../../url-input/test/fixtures/validated-input-control-deprecation';
|
|
19
30
|
|
|
20
|
-
|
|
31
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
32
|
+
|
|
33
|
+
globalThis.wpVitest.mockScrollIntoView();
|
|
34
|
+
globalThis.wpVitest.mockVisibleElements();
|
|
35
|
+
|
|
36
|
+
const mockFetchSearchSuggestions = vi.fn();
|
|
21
37
|
|
|
22
38
|
function getExpectedVisualTypeName( type ) {
|
|
23
39
|
const builtInLabels = {
|
|
@@ -40,26 +56,22 @@ function getExpectedVisualTypeName( type ) {
|
|
|
40
56
|
*/
|
|
41
57
|
let mockFetchRichUrlData;
|
|
42
58
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
} );
|
|
48
|
-
useSelect.mockImplementation( () => ( {
|
|
49
|
-
fetchSearchSuggestions: mockFetchSearchSuggestions,
|
|
50
|
-
fetchRichUrlData: mockFetchRichUrlData,
|
|
59
|
+
vi.mock( import( '@wordpress/data' ), async ( importOriginal ) => ( {
|
|
60
|
+
...( await importOriginal() ),
|
|
61
|
+
useDispatch: () => ( { saveEntityRecords: vi.fn() } ),
|
|
62
|
+
useSelect: vi.fn(),
|
|
51
63
|
} ) );
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
} ) );
|
|
56
|
-
|
|
57
|
-
jest.mock( '@wordpress/compose', () => ( {
|
|
58
|
-
...jest.requireActual( '@wordpress/compose' ),
|
|
59
|
-
useReducedMotion: jest.fn( () => true ),
|
|
64
|
+
vi.mock( import( '@wordpress/compose' ), async ( importOriginal ) => ( {
|
|
65
|
+
...( await importOriginal() ),
|
|
66
|
+
useReducedMotion: vi.fn( () => true ),
|
|
60
67
|
} ) );
|
|
61
68
|
|
|
62
69
|
beforeEach( () => {
|
|
70
|
+
useReducedMotion.mockReturnValue( true );
|
|
71
|
+
useSelect.mockImplementation( () => ( {
|
|
72
|
+
fetchSearchSuggestions: mockFetchSearchSuggestions,
|
|
73
|
+
fetchRichUrlData: mockFetchRichUrlData,
|
|
74
|
+
} ) );
|
|
63
75
|
// Setup a DOM element as a render target.
|
|
64
76
|
mockFetchSearchSuggestions.mockImplementation( fetchFauxEntitySuggestions );
|
|
65
77
|
} );
|
|
@@ -404,7 +416,7 @@ describe( 'Basic rendering', () => {
|
|
|
404
416
|
|
|
405
417
|
it( 'should show "Unlink" button if a onRemove handler is provided', async () => {
|
|
406
418
|
const user = userEvent.setup();
|
|
407
|
-
const mockOnRemove =
|
|
419
|
+
const mockOnRemove = vi.fn();
|
|
408
420
|
|
|
409
421
|
render(
|
|
410
422
|
<LinkControl
|
|
@@ -425,7 +437,7 @@ describe( 'Basic rendering', () => {
|
|
|
425
437
|
|
|
426
438
|
it( 'should revert to "editing" mode when onRemove is triggered', async () => {
|
|
427
439
|
const user = userEvent.setup();
|
|
428
|
-
const mockOnRemove =
|
|
440
|
+
const mockOnRemove = vi.fn();
|
|
429
441
|
|
|
430
442
|
render(
|
|
431
443
|
<LinkControl
|
|
@@ -812,7 +824,7 @@ describe( 'Manual link entry', () => {
|
|
|
812
824
|
|
|
813
825
|
describe( 'Handling cancellation', () => {
|
|
814
826
|
it( 'should not show cancellation button during link creation', async () => {
|
|
815
|
-
const mockOnRemove =
|
|
827
|
+
const mockOnRemove = vi.fn();
|
|
816
828
|
|
|
817
829
|
render( <LinkControl onRemove={ mockOnRemove } /> );
|
|
818
830
|
|
|
@@ -910,7 +922,7 @@ describe( 'Manual link entry', () => {
|
|
|
910
922
|
|
|
911
923
|
it( 'should call onCancel callback when cancelling if provided', async () => {
|
|
912
924
|
const user = userEvent.setup();
|
|
913
|
-
const mockOnCancel =
|
|
925
|
+
const mockOnCancel = vi.fn();
|
|
914
926
|
|
|
915
927
|
render(
|
|
916
928
|
<LinkControl
|
|
@@ -1054,7 +1066,7 @@ describe( 'Link submission', () => {
|
|
|
1054
1066
|
|
|
1055
1067
|
it( 'should disable Apply button when URL is cleared', async () => {
|
|
1056
1068
|
const user = userEvent.setup();
|
|
1057
|
-
const mockOnChange =
|
|
1069
|
+
const mockOnChange = vi.fn();
|
|
1058
1070
|
|
|
1059
1071
|
const existingLink = { url: 'https://example.com', title: 'Example' };
|
|
1060
1072
|
render(
|
|
@@ -1457,7 +1469,7 @@ describe( 'Creating Entities (eg: Posts, Pages)', () => {
|
|
|
1457
1469
|
render(
|
|
1458
1470
|
<LinkControl
|
|
1459
1471
|
showInitialSuggestions // Should show even if we're not showing initial suggestions.
|
|
1460
|
-
createSuggestion={
|
|
1472
|
+
createSuggestion={ vi.fn() }
|
|
1461
1473
|
/>
|
|
1462
1474
|
);
|
|
1463
1475
|
|
|
@@ -1483,7 +1495,7 @@ describe( 'Creating Entities (eg: Posts, Pages)', () => {
|
|
|
1483
1495
|
'should not show option to "Create Page" when text is a form of direct entry (eg: %s)',
|
|
1484
1496
|
async ( inputText ) => {
|
|
1485
1497
|
const user = userEvent.setup();
|
|
1486
|
-
render( <LinkControl createSuggestion={
|
|
1498
|
+
render( <LinkControl createSuggestion={ vi.fn() } /> );
|
|
1487
1499
|
|
|
1488
1500
|
// Search Input UI.
|
|
1489
1501
|
const searchInput = screen.getByRole( 'combobox', {
|
|
@@ -1763,7 +1775,6 @@ describe( 'Selecting links', () => {
|
|
|
1763
1775
|
} );
|
|
1764
1776
|
|
|
1765
1777
|
// We should have highlighted the first item using the keyboard
|
|
1766
|
-
// eslint-disable-next-line jest/no-conditional-expect
|
|
1767
1778
|
expect( selectedSearchResultElement ).toBe(
|
|
1768
1779
|
secondSearchSuggestion
|
|
1769
1780
|
);
|
|
@@ -1776,7 +1787,6 @@ describe( 'Selecting links', () => {
|
|
|
1776
1787
|
} );
|
|
1777
1788
|
|
|
1778
1789
|
// We should be back to highlighting the first search result again
|
|
1779
|
-
// eslint-disable-next-line jest/no-conditional-expect
|
|
1780
1790
|
expect( selectedSearchResultElement ).toBe(
|
|
1781
1791
|
firstSearchSuggestion
|
|
1782
1792
|
);
|
|
@@ -2032,7 +2042,7 @@ describe( 'Addition Settings UI', () => {
|
|
|
2032
2042
|
it( 'should require settings changes to be submitted/applied', async () => {
|
|
2033
2043
|
const user = userEvent.setup();
|
|
2034
2044
|
|
|
2035
|
-
const mockOnChange =
|
|
2045
|
+
const mockOnChange = vi.fn();
|
|
2036
2046
|
|
|
2037
2047
|
const selectedLink = {
|
|
2038
2048
|
...fauxEntitySuggestions[ 0 ],
|
|
@@ -2160,11 +2170,11 @@ describe( 'Rich link previews', () => {
|
|
|
2160
2170
|
beforeAll( () => {
|
|
2161
2171
|
/**
|
|
2162
2172
|
* These tests require that we exercise the `fetchRichUrlData` function.
|
|
2163
|
-
* We are therefore overwriting the mock "placeholder" with a true
|
|
2173
|
+
* We are therefore overwriting the mock "placeholder" with a true vi mock
|
|
2164
2174
|
* which will cause the code under test to execute the code which fetches
|
|
2165
2175
|
* rich previews.
|
|
2166
2176
|
*/
|
|
2167
|
-
mockFetchRichUrlData =
|
|
2177
|
+
mockFetchRichUrlData = vi.fn();
|
|
2168
2178
|
} );
|
|
2169
2179
|
|
|
2170
2180
|
it( 'should not fetch or display rich previews by default', async () => {
|
|
@@ -2487,7 +2497,7 @@ describe( 'Controlling link title text', () => {
|
|
|
2487
2497
|
|
|
2488
2498
|
it( "should ensure title value matching the text input's current value is included in onChange handler value on submit", async () => {
|
|
2489
2499
|
const user = userEvent.setup();
|
|
2490
|
-
const mockOnChange =
|
|
2500
|
+
const mockOnChange = vi.fn();
|
|
2491
2501
|
const textValue = 'My new text value';
|
|
2492
2502
|
|
|
2493
2503
|
render(
|
|
@@ -2524,7 +2534,7 @@ describe( 'Controlling link title text', () => {
|
|
|
2524
2534
|
it( 'should allow `ENTER` keypress within the text field to trigger submission of value', async () => {
|
|
2525
2535
|
const user = userEvent.setup();
|
|
2526
2536
|
const newTextValue = 'My new text value';
|
|
2527
|
-
const mockOnChange =
|
|
2537
|
+
const mockOnChange = vi.fn();
|
|
2528
2538
|
|
|
2529
2539
|
render(
|
|
2530
2540
|
<LinkControl
|
|
@@ -2563,7 +2573,7 @@ describe( 'Controlling link title text', () => {
|
|
|
2563
2573
|
it( 'should reset state upon controlled value change', async () => {
|
|
2564
2574
|
const user = userEvent.setup();
|
|
2565
2575
|
const textValue = 'My new text value';
|
|
2566
|
-
const mockOnChange =
|
|
2576
|
+
const mockOnChange = vi.fn();
|
|
2567
2577
|
|
|
2568
2578
|
const { rerender } = render(
|
|
2569
2579
|
<LinkControl
|
|
@@ -2719,7 +2729,7 @@ describe( 'Entity handling', () => {
|
|
|
2719
2729
|
type: 'page',
|
|
2720
2730
|
};
|
|
2721
2731
|
|
|
2722
|
-
const onChange =
|
|
2732
|
+
const onChange = vi.fn();
|
|
2723
2733
|
|
|
2724
2734
|
render(
|
|
2725
2735
|
<LinkControl
|
|
@@ -2778,7 +2788,7 @@ describe( 'Entity handling', () => {
|
|
|
2778
2788
|
kind: 'post-type',
|
|
2779
2789
|
};
|
|
2780
2790
|
|
|
2781
|
-
const onChange =
|
|
2791
|
+
const onChange = vi.fn();
|
|
2782
2792
|
|
|
2783
2793
|
render(
|
|
2784
2794
|
<LinkControl
|
|
@@ -2842,7 +2852,7 @@ describe( 'Entity handling', () => {
|
|
|
2842
2852
|
kind: 'post-type',
|
|
2843
2853
|
};
|
|
2844
2854
|
|
|
2845
|
-
const onChange =
|
|
2855
|
+
const onChange = vi.fn();
|
|
2846
2856
|
|
|
2847
2857
|
// Mock search suggestions to return a custom URL
|
|
2848
2858
|
// URL suggestions have an id and type but no 'kind' (which indicates entity metadata)
|
|
@@ -2912,7 +2922,7 @@ describe( 'Entity handling', () => {
|
|
|
2912
2922
|
|
|
2913
2923
|
it( 'should clear entity metadata when pressing Enter for direct entry (without clicking suggestion)', async () => {
|
|
2914
2924
|
const user = userEvent.setup();
|
|
2915
|
-
const onChange =
|
|
2925
|
+
const onChange = vi.fn();
|
|
2916
2926
|
|
|
2917
2927
|
const pageLink = {
|
|
2918
2928
|
id: 123,
|
|
@@ -3063,7 +3073,7 @@ describe( 'Entity handling', () => {
|
|
|
3063
3073
|
describe( 'Custom settings rendering', () => {
|
|
3064
3074
|
it( 'renders custom settings with valid render functions', async () => {
|
|
3065
3075
|
const user = userEvent.setup();
|
|
3066
|
-
const mockRender =
|
|
3076
|
+
const mockRender = vi.fn(
|
|
3067
3077
|
// eslint-disable-next-line no-unused-vars
|
|
3068
3078
|
( setting, value, onChange ) =>
|
|
3069
3079
|
createElement(
|
|
@@ -3106,7 +3116,7 @@ describe( 'Custom settings rendering', () => {
|
|
|
3106
3116
|
|
|
3107
3117
|
it( 'renders only valid settings when mixed with invalid ones', async () => {
|
|
3108
3118
|
const user = userEvent.setup();
|
|
3109
|
-
const validRender =
|
|
3119
|
+
const validRender = vi.fn(
|
|
3110
3120
|
// eslint-disable-next-line no-unused-vars
|
|
3111
3121
|
( setting, value, onChange ) =>
|
|
3112
3122
|
createElement(
|
|
@@ -3184,9 +3194,9 @@ describe( 'Custom settings rendering', () => {
|
|
|
3184
3194
|
|
|
3185
3195
|
it( 'allows custom render functions to call onChange in LinkControl', async () => {
|
|
3186
3196
|
const user = userEvent.setup();
|
|
3187
|
-
const mockOnChange =
|
|
3197
|
+
const mockOnChange = vi.fn();
|
|
3188
3198
|
|
|
3189
|
-
const mockRender =
|
|
3199
|
+
const mockRender = vi.fn( ( setting, value, onChange ) => {
|
|
3190
3200
|
return createElement(
|
|
3191
3201
|
'button',
|
|
3192
3202
|
{
|
|
@@ -3250,7 +3260,7 @@ describe( 'Custom settings rendering', () => {
|
|
|
3250
3260
|
|
|
3251
3261
|
describe( 'URL validation', () => {
|
|
3252
3262
|
const user = userEvent.setup();
|
|
3253
|
-
const mockOnChange =
|
|
3263
|
+
const mockOnChange = vi.fn();
|
|
3254
3264
|
|
|
3255
3265
|
beforeEach( () => {
|
|
3256
3266
|
mockOnChange.mockClear();
|
|
@@ -3581,7 +3591,7 @@ describe( 'inputValue prop', () => {
|
|
|
3581
3591
|
|
|
3582
3592
|
it( 'should call onInputChange when user types, with observable pattern', async () => {
|
|
3583
3593
|
const user = userEvent.setup();
|
|
3584
|
-
const onInputChange =
|
|
3594
|
+
const onInputChange = vi.fn();
|
|
3585
3595
|
|
|
3586
3596
|
render(
|
|
3587
3597
|
<LinkControl
|
|
@@ -1,31 +1,32 @@
|
|
|
1
|
+
import { afterEach, beforeEach, 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 { SlotFillProvider } from '@wordpress/components';
|
|
4
5
|
import { useSelect } from '@wordpress/data';
|
|
6
|
+
import { useReducedMotion } from '@wordpress/compose';
|
|
5
7
|
import LinkControl from '../';
|
|
6
8
|
import { fetchFauxEntitySuggestions } from './fixtures';
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
const mock = jest.fn();
|
|
12
|
-
return mock;
|
|
13
|
-
} );
|
|
14
|
-
|
|
15
|
-
useSelect.mockImplementation( () => ( {
|
|
16
|
-
fetchSearchSuggestions: mockFetchSearchSuggestions,
|
|
17
|
-
} ) );
|
|
12
|
+
const mockFetchSearchSuggestions = vi.fn();
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
vi.mock( import( '@wordpress/data' ), async ( importOriginal ) => ( {
|
|
15
|
+
...( await importOriginal() ),
|
|
16
|
+
useDispatch: () => ( { saveEntityRecords: vi.fn() } ),
|
|
17
|
+
useSelect: vi.fn(),
|
|
21
18
|
} ) );
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
...
|
|
25
|
-
useReducedMotion:
|
|
20
|
+
vi.mock( import( '@wordpress/compose' ), async ( importOriginal ) => ( {
|
|
21
|
+
...( await importOriginal() ),
|
|
22
|
+
useReducedMotion: vi.fn( () => true ),
|
|
26
23
|
} ) );
|
|
27
24
|
|
|
28
25
|
beforeEach( () => {
|
|
26
|
+
useReducedMotion.mockReturnValue( true );
|
|
27
|
+
useSelect.mockImplementation( () => ( {
|
|
28
|
+
fetchSearchSuggestions: mockFetchSearchSuggestions,
|
|
29
|
+
} ) );
|
|
29
30
|
mockFetchSearchSuggestions.mockImplementation( fetchFauxEntitySuggestions );
|
|
30
31
|
} );
|
|
31
32
|
|
|
@@ -40,7 +41,7 @@ function renderWithProvider( ui ) {
|
|
|
40
41
|
describe( 'URL normalization consistency', () => {
|
|
41
42
|
it( 'should normalize bare domain (wordpress.org) to https:// when clicking Apply', async () => {
|
|
42
43
|
const user = userEvent.setup();
|
|
43
|
-
const mockOnChange =
|
|
44
|
+
const mockOnChange = vi.fn();
|
|
44
45
|
|
|
45
46
|
// Start with existing link to show Apply button
|
|
46
47
|
renderWithProvider(
|
|
@@ -78,7 +79,7 @@ describe( 'URL normalization consistency', () => {
|
|
|
78
79
|
|
|
79
80
|
it( 'should normalize www domain (www.wordpress.org) to https:// when clicking Apply', async () => {
|
|
80
81
|
const user = userEvent.setup();
|
|
81
|
-
const mockOnChange =
|
|
82
|
+
const mockOnChange = vi.fn();
|
|
82
83
|
|
|
83
84
|
// Start with existing link to show Apply button
|
|
84
85
|
renderWithProvider(
|
|
@@ -116,7 +117,7 @@ describe( 'URL normalization consistency', () => {
|
|
|
116
117
|
|
|
117
118
|
it( 'should preserve explicit http:// protocol', async () => {
|
|
118
119
|
const user = userEvent.setup();
|
|
119
|
-
const mockOnChange =
|
|
120
|
+
const mockOnChange = vi.fn();
|
|
120
121
|
|
|
121
122
|
renderWithProvider(
|
|
122
123
|
<LinkControl
|
|
@@ -151,7 +152,7 @@ describe( 'URL normalization consistency', () => {
|
|
|
151
152
|
|
|
152
153
|
it( 'should preserve mailto: links without normalization', async () => {
|
|
153
154
|
const user = userEvent.setup();
|
|
154
|
-
const mockOnChange =
|
|
155
|
+
const mockOnChange = vi.fn();
|
|
155
156
|
|
|
156
157
|
renderWithProvider(
|
|
157
158
|
<LinkControl
|
|
@@ -185,7 +186,7 @@ describe( 'URL normalization consistency', () => {
|
|
|
185
186
|
|
|
186
187
|
it( 'should preserve relative paths without normalization', async () => {
|
|
187
188
|
const user = userEvent.setup();
|
|
188
|
-
const mockOnChange =
|
|
189
|
+
const mockOnChange = vi.fn();
|
|
189
190
|
|
|
190
191
|
renderWithProvider(
|
|
191
192
|
<LinkControl
|
|
@@ -219,7 +220,7 @@ describe( 'URL normalization consistency', () => {
|
|
|
219
220
|
|
|
220
221
|
it( 'should preserve hash links without normalization', async () => {
|
|
221
222
|
const user = userEvent.setup();
|
|
222
|
-
const mockOnChange =
|
|
223
|
+
const mockOnChange = vi.fn();
|
|
223
224
|
|
|
224
225
|
renderWithProvider(
|
|
225
226
|
<LinkControl
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
1
2
|
import { render, screen, within, waitFor } from '@testing-library/react';
|
|
2
3
|
import userEvent from '@testing-library/user-event';
|
|
3
4
|
import { useSelect } from '@wordpress/data';
|
|
5
|
+
import { useReducedMotion } from '@wordpress/compose';
|
|
4
6
|
import { LinkPicker } from '../';
|
|
5
7
|
|
|
6
|
-
|
|
8
|
+
globalThis.wpVitest.mockMatchMedia();
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
jest.mock( '@wordpress/data/src/components/use-select', () => {
|
|
10
|
-
const mock = jest.fn();
|
|
11
|
-
return mock;
|
|
12
|
-
} );
|
|
13
|
-
|
|
14
|
-
useSelect.mockImplementation( () => ( {
|
|
15
|
-
fetchSearchSuggestions: mockFetchSearchSuggestions,
|
|
16
|
-
} ) );
|
|
10
|
+
const mockFetchSearchSuggestions = vi.fn();
|
|
17
11
|
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
// Mock useSelect for search suggestions
|
|
13
|
+
vi.mock( import( '@wordpress/data' ), async ( importOriginal ) => ( {
|
|
14
|
+
...( await importOriginal() ),
|
|
15
|
+
useDispatch: () => ( { saveEntityRecords: vi.fn() } ),
|
|
16
|
+
useSelect: vi.fn(),
|
|
20
17
|
} ) );
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
...
|
|
24
|
-
useReducedMotion:
|
|
19
|
+
vi.mock( import( '@wordpress/compose' ), async ( importOriginal ) => ( {
|
|
20
|
+
...( await importOriginal() ),
|
|
21
|
+
useReducedMotion: vi.fn( () => true ),
|
|
25
22
|
} ) );
|
|
26
23
|
|
|
27
24
|
// Helper to create mock suggestions
|
|
@@ -51,6 +48,10 @@ function createMockPreview( {
|
|
|
51
48
|
}
|
|
52
49
|
|
|
53
50
|
beforeEach( () => {
|
|
51
|
+
useReducedMotion.mockReturnValue( true );
|
|
52
|
+
useSelect.mockImplementation( () => ( {
|
|
53
|
+
fetchSearchSuggestions: mockFetchSearchSuggestions,
|
|
54
|
+
} ) );
|
|
54
55
|
mockFetchSearchSuggestions.mockImplementation( () =>
|
|
55
56
|
Promise.resolve( createMockSuggestions() )
|
|
56
57
|
);
|
|
@@ -66,7 +67,7 @@ describe( 'LinkPicker', () => {
|
|
|
66
67
|
render(
|
|
67
68
|
<LinkPicker
|
|
68
69
|
preview={ createMockPreview() }
|
|
69
|
-
onSelect={
|
|
70
|
+
onSelect={ vi.fn() }
|
|
70
71
|
label="Link"
|
|
71
72
|
/>
|
|
72
73
|
);
|
|
@@ -85,7 +86,7 @@ describe( 'LinkPicker', () => {
|
|
|
85
86
|
url: 'example.com',
|
|
86
87
|
badges: [],
|
|
87
88
|
} }
|
|
88
|
-
onSelect={
|
|
89
|
+
onSelect={ vi.fn() }
|
|
89
90
|
label="Link"
|
|
90
91
|
/>
|
|
91
92
|
);
|
|
@@ -104,7 +105,7 @@ describe( 'LinkPicker', () => {
|
|
|
104
105
|
url: 'example.com',
|
|
105
106
|
badges: [ { label: 'Page', intent: 'default' } ],
|
|
106
107
|
} }
|
|
107
|
-
onSelect={
|
|
108
|
+
onSelect={ vi.fn() }
|
|
108
109
|
label="Link"
|
|
109
110
|
/>
|
|
110
111
|
);
|
|
@@ -124,7 +125,7 @@ describe( 'LinkPicker', () => {
|
|
|
124
125
|
image: 'https://example.com/image.jpg',
|
|
125
126
|
badges: [ { label: 'Page', intent: 'default' } ],
|
|
126
127
|
} }
|
|
127
|
-
onSelect={
|
|
128
|
+
onSelect={ vi.fn() }
|
|
128
129
|
label="Link"
|
|
129
130
|
/>
|
|
130
131
|
);
|
|
@@ -144,7 +145,7 @@ describe( 'LinkPicker', () => {
|
|
|
144
145
|
render(
|
|
145
146
|
<LinkPicker
|
|
146
147
|
preview={ createMockPreview( { url: 'example.com' } ) }
|
|
147
|
-
onSelect={
|
|
148
|
+
onSelect={ vi.fn() }
|
|
148
149
|
label="Link to"
|
|
149
150
|
/>
|
|
150
151
|
);
|
|
@@ -156,7 +157,7 @@ describe( 'LinkPicker', () => {
|
|
|
156
157
|
render(
|
|
157
158
|
<LinkPicker
|
|
158
159
|
preview={ createMockPreview( { url: 'example.com' } ) }
|
|
159
|
-
onSelect={
|
|
160
|
+
onSelect={ vi.fn() }
|
|
160
161
|
label="Link"
|
|
161
162
|
help="Synced with the selected page."
|
|
162
163
|
/>
|
|
@@ -175,7 +176,7 @@ describe( 'LinkPicker', () => {
|
|
|
175
176
|
render(
|
|
176
177
|
<LinkPicker
|
|
177
178
|
preview={ createMockPreview( { url: 'example.com' } ) }
|
|
178
|
-
onSelect={
|
|
179
|
+
onSelect={ vi.fn() }
|
|
179
180
|
label="Link"
|
|
180
181
|
/>
|
|
181
182
|
);
|
|
@@ -202,7 +203,7 @@ describe( 'LinkPicker', () => {
|
|
|
202
203
|
render(
|
|
203
204
|
<LinkPicker
|
|
204
205
|
preview={ createMockPreview( { url: 'example.com' } ) }
|
|
205
|
-
onSelect={
|
|
206
|
+
onSelect={ vi.fn() }
|
|
206
207
|
label="Link"
|
|
207
208
|
/>
|
|
208
209
|
);
|
|
@@ -226,7 +227,7 @@ describe( 'LinkPicker', () => {
|
|
|
226
227
|
render(
|
|
227
228
|
<LinkPicker
|
|
228
229
|
preview={ createMockPreview( { url: 'example.com' } ) }
|
|
229
|
-
onSelect={
|
|
230
|
+
onSelect={ vi.fn() }
|
|
230
231
|
label="Link"
|
|
231
232
|
/>
|
|
232
233
|
);
|
|
@@ -263,7 +264,7 @@ describe( 'LinkPicker', () => {
|
|
|
263
264
|
render(
|
|
264
265
|
<LinkPicker
|
|
265
266
|
preview={ createMockPreview( { url: 'example.com' } ) }
|
|
266
|
-
onSelect={
|
|
267
|
+
onSelect={ vi.fn() }
|
|
267
268
|
label="Link"
|
|
268
269
|
help="This is help text"
|
|
269
270
|
/>
|
|
@@ -284,7 +285,7 @@ describe( 'LinkPicker', () => {
|
|
|
284
285
|
render(
|
|
285
286
|
<LinkPicker
|
|
286
287
|
preview={ createMockPreview( { url: 'example.com' } ) }
|
|
287
|
-
onSelect={
|
|
288
|
+
onSelect={ vi.fn() }
|
|
288
289
|
label="Link"
|
|
289
290
|
/>
|
|
290
291
|
);
|
|
@@ -299,7 +300,7 @@ describe( 'LinkPicker', () => {
|
|
|
299
300
|
describe( 'Selection behavior', () => {
|
|
300
301
|
it( 'should call onSelect with suggestion data when a suggestion is selected', async () => {
|
|
301
302
|
const user = userEvent.setup();
|
|
302
|
-
const onSelect =
|
|
303
|
+
const onSelect = vi.fn();
|
|
303
304
|
|
|
304
305
|
render(
|
|
305
306
|
<LinkPicker
|
|
@@ -348,7 +349,7 @@ describe( 'LinkPicker', () => {
|
|
|
348
349
|
render(
|
|
349
350
|
<LinkPicker
|
|
350
351
|
preview={ createMockPreview() }
|
|
351
|
-
onSelect={
|
|
352
|
+
onSelect={ vi.fn() }
|
|
352
353
|
label="Link"
|
|
353
354
|
/>
|
|
354
355
|
);
|
|
@@ -392,7 +393,7 @@ describe( 'LinkPicker', () => {
|
|
|
392
393
|
render(
|
|
393
394
|
<LinkPicker
|
|
394
395
|
preview={ createMockPreview() }
|
|
395
|
-
onSelect={
|
|
396
|
+
onSelect={ vi.fn() }
|
|
396
397
|
suggestionsQuery={ customQuery }
|
|
397
398
|
label="Link"
|
|
398
399
|
/>
|
|
@@ -423,7 +424,7 @@ describe( 'LinkPicker', () => {
|
|
|
423
424
|
describe( 'Integration scenarios', () => {
|
|
424
425
|
it( 'should handle changing from empty link to entity link', async () => {
|
|
425
426
|
const user = userEvent.setup();
|
|
426
|
-
const onSelect =
|
|
427
|
+
const onSelect = vi.fn();
|
|
427
428
|
|
|
428
429
|
render(
|
|
429
430
|
<LinkPicker
|
|
@@ -33,6 +33,7 @@ function ListViewBlockSelectButton(
|
|
|
33
33
|
onDragEnd,
|
|
34
34
|
draggable,
|
|
35
35
|
isExpanded,
|
|
36
|
+
isSelected,
|
|
36
37
|
ariaDescribedBy,
|
|
37
38
|
visibilityLabel,
|
|
38
39
|
isDisabled = false,
|
|
@@ -129,7 +130,11 @@ function ListViewBlockSelectButton(
|
|
|
129
130
|
aria-expanded={ isExpanded }
|
|
130
131
|
>
|
|
131
132
|
<ListViewExpander onClick={ onToggleExpanded } />
|
|
132
|
-
<BlockIcon
|
|
133
|
+
<BlockIcon
|
|
134
|
+
icon={ icon }
|
|
135
|
+
showColors={ ! isSelected }
|
|
136
|
+
context="list-view"
|
|
137
|
+
/>
|
|
133
138
|
<Stack
|
|
134
139
|
align="center"
|
|
135
140
|
className="block-editor-list-view-block-select-button__label-wrapper"
|