@wordpress/block-editor 17.1.0 → 17.2.1-next.v.202609171837.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 +32 -0
- package/README.md +214 -214
- package/build/autocompleters/block.cjs.map +2 -2
- package/build/components/alignment-control/ui.cjs.map +2 -2
- package/build/components/background-image-control/index.cjs +1 -1
- package/build/components/background-image-control/index.cjs.map +2 -2
- package/build/components/block-alignment-control/ui.cjs +21 -7
- package/build/components/block-alignment-control/ui.cjs.map +3 -3
- package/build/components/block-alignment-control/use-available-alignments.cjs +60 -13
- package/build/components/block-alignment-control/use-available-alignments.cjs.map +2 -2
- package/build/components/block-allowed-blocks/allowed-blocks-control.cjs.map +2 -2
- package/build/components/block-bindings/attribute-control.cjs +30 -30
- package/build/components/block-bindings/attribute-control.cjs.map +3 -3
- package/build/components/block-bindings/source-fields-list.cjs +27 -32
- package/build/components/block-bindings/source-fields-list.cjs.map +3 -3
- package/build/components/block-canvas/index.cjs.map +2 -2
- package/build/components/block-card/index.cjs +1 -2
- package/build/components/block-card/index.cjs.map +3 -3
- package/build/components/block-edit/edit.cjs.map +2 -2
- package/build/components/block-heading-level-dropdown/index.cjs.map +2 -2
- package/build/components/block-icon/index.cjs.map +2 -2
- package/build/components/block-inspector/edit-contents.cjs.map +2 -2
- package/build/components/block-inspector/index.cjs +27 -8
- package/build/components/block-inspector/index.cjs.map +3 -3
- package/build/components/block-keyboard-shortcuts/index.cjs.map +2 -2
- package/build/components/block-list/block-html.cjs +1 -12
- package/build/components/block-list/block-html.cjs.map +3 -3
- package/build/components/block-list/block.cjs +2 -4
- package/build/components/block-list/block.cjs.map +2 -2
- package/build/components/block-list/layout.cjs +1 -1
- package/build/components/block-list/layout.cjs.map +2 -2
- package/build/components/block-list/use-block-props/index.cjs.map +2 -2
- package/build/components/block-lock/modal.cjs +1 -3
- package/build/components/block-lock/modal.cjs.map +2 -2
- package/build/components/block-parent-selector/index.cjs +8 -5
- package/build/components/block-parent-selector/index.cjs.map +2 -2
- package/build/components/block-popover/index.cjs.map +2 -2
- package/build/components/block-rename/modal.cjs.map +2 -2
- package/build/components/block-settings-menu/block-settings-dropdown.cjs.map +2 -2
- package/build/components/block-styles/utils.cjs.map +2 -2
- package/build/components/block-switcher/index.cjs.map +2 -2
- package/build/components/block-toolbar/edit-section-button.cjs.map +2 -2
- package/build/components/block-toolbar/index.cjs +6 -4
- package/build/components/block-toolbar/index.cjs.map +2 -2
- package/build/components/block-toolbar/switch-section-style.cjs.map +2 -2
- package/build/components/block-variation-transforms/index.cjs +28 -18
- package/build/components/block-variation-transforms/index.cjs.map +3 -3
- package/build/components/block-visibility/modal.cjs.map +2 -2
- package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
- package/build/components/border-radius-control/index.cjs.map +2 -2
- package/build/components/color-palette/with-color-context.cjs.map +2 -2
- package/build/components/colors/with-colors.cjs.map +2 -2
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/contrast-checker/index.cjs.map +2 -2
- package/build/components/date-format-picker/index.cjs.map +2 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
- package/build/components/dimensions-tool/width-height-tool.cjs.map +2 -2
- package/build/components/font-sizes/with-font-sizes.cjs.map +2 -2
- package/build/components/global-styles/background-panel.cjs +1 -1
- package/build/components/global-styles/background-panel.cjs.map +2 -2
- package/build/components/global-styles/border-panel.cjs +1 -1
- package/build/components/global-styles/border-panel.cjs.map +2 -2
- package/build/components/global-styles/color-gradient-dropdown-item.cjs +1 -1
- package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +2 -2
- package/build/components/global-styles/color-panel.cjs +1 -1
- package/build/components/global-styles/color-panel.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +1 -1
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/global-styles/filters-panel.cjs +1 -1
- package/build/components/global-styles/filters-panel.cjs.map +2 -2
- package/build/components/global-styles/hooks.cjs +1 -0
- package/build/components/global-styles/hooks.cjs.map +2 -2
- package/build/components/global-styles/inheritance/index.cjs +3 -3
- package/build/components/global-styles/inheritance/index.cjs.map +2 -2
- package/build/components/global-styles/inherited-value-context.cjs +0 -5
- package/build/components/global-styles/inherited-value-context.cjs.map +2 -2
- package/build/components/global-styles/state-control-badges.cjs +0 -1
- package/build/components/global-styles/state-control-badges.cjs.map +2 -2
- package/build/components/global-styles/state-control.cjs +6 -4
- package/build/components/global-styles/state-control.cjs.map +2 -2
- package/build/components/global-styles/text-shadow-panel.cjs +254 -0
- package/build/components/global-styles/text-shadow-panel.cjs.map +7 -0
- package/build/components/global-styles/typography-panel.cjs +46 -5
- package/build/components/global-styles/typography-panel.cjs.map +2 -2
- package/build/components/global-styles/typography-utils.cjs.map +2 -2
- package/build/components/global-styles/utils.cjs.map +2 -2
- package/build/components/html-element-control/index.cjs.map +3 -3
- package/build/components/iframe/index.cjs.map +2 -2
- package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
- package/build/components/image-size-control/index.cjs.map +3 -3
- package/build/components/inner-blocks/index.cjs +6 -1
- package/build/components/inner-blocks/index.cjs.map +2 -2
- package/build/components/inner-content/index.cjs.map +2 -2
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.cjs +4 -23
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.cjs.map +2 -2
- package/build/components/inserter/block-patterns-tab/utils.cjs +26 -0
- package/build/components/inserter/block-patterns-tab/utils.cjs.map +2 -2
- package/build/components/inserter/hooks/use-block-types-state.cjs.map +2 -2
- package/build/components/inserter/hooks/use-insertion-point.cjs.map +2 -2
- package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-panel.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
- package/build/components/inserter-list-item/index.cjs.map +2 -2
- package/build/components/inspector-controls/list-view-content-popover.cjs.map +2 -2
- package/build/components/link-control/search-results.cjs.map +2 -2
- package/build/components/link-control/use-search-handler.cjs +3 -0
- package/build/components/link-control/use-search-handler.cjs.map +2 -2
- package/build/components/list-view/branch.cjs.map +2 -2
- package/build/components/list-view/drop-indicator.cjs.map +2 -2
- package/build/components/list-view/index.cjs.map +2 -2
- package/build/components/list-view/use-list-view-drop-zone.cjs.map +2 -2
- package/build/components/list-view/utils.cjs.map +2 -2
- package/build/components/media-replace-flow/index.cjs +4 -1
- package/build/components/media-replace-flow/index.cjs.map +2 -2
- package/build/components/plain-text/index.cjs +1 -2
- package/build/components/plain-text/index.cjs.map +3 -3
- package/build/components/preset-input-control/index.cjs.map +2 -2
- package/build/components/provider/index.cjs +3 -1
- package/build/components/provider/index.cjs.map +2 -2
- package/build/components/provider/use-block-sync.cjs.map +2 -2
- package/build/components/publish-date-time-picker/index.cjs.map +2 -2
- package/build/components/resizable-box-popover/index.cjs +1 -1
- package/build/components/resizable-box-popover/index.cjs.map +1 -1
- package/build/components/resolution-tool/index.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/enter.cjs +8 -22
- package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
- package/build/components/rich-text/format-edit.cjs.map +2 -2
- package/build/components/rich-text/index.cjs +20 -0
- package/build/components/rich-text/index.cjs.map +2 -2
- package/build/components/rich-text/multiline.cjs +10 -2
- package/build/components/rich-text/multiline.cjs.map +2 -2
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.cjs.map +2 -2
- package/build/components/typewriter/index.cjs.map +2 -2
- package/build/components/use-block-commands/index.cjs.map +2 -2
- package/build/components/writing-flow/index.cjs +3 -0
- package/build/components/writing-flow/index.cjs.map +2 -2
- package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
- package/build/components/writing-flow/use-selection-observer.cjs +5 -3
- package/build/components/writing-flow/use-selection-observer.cjs.map +2 -2
- package/build/hooks/align.cjs +3 -5
- package/build/hooks/align.cjs.map +2 -2
- package/build/hooks/background.cjs.map +2 -2
- package/build/hooks/block-bindings.cjs.map +2 -2
- package/build/hooks/border.cjs.map +2 -2
- package/build/hooks/contrast-checker.cjs.map +2 -2
- package/build/hooks/dimensions.cjs.map +2 -2
- package/build/hooks/duotone.cjs.map +2 -2
- package/build/hooks/elements.cjs.map +2 -2
- package/build/hooks/fit-text.cjs.map +2 -2
- package/build/hooks/gap.cjs +2 -1
- package/build/hooks/gap.cjs.map +3 -3
- package/build/hooks/index.cjs +4 -2
- package/build/hooks/index.cjs.map +3 -3
- package/build/hooks/layout-child.cjs.map +2 -2
- package/build/hooks/layout.cjs +15 -14
- package/build/hooks/layout.cjs.map +3 -3
- package/build/hooks/position.cjs +3 -31
- package/build/hooks/position.cjs.map +2 -2
- package/build/hooks/states.cjs +3 -2
- package/build/hooks/states.cjs.map +2 -2
- package/build/hooks/text-shadow.cjs +100 -0
- package/build/hooks/text-shadow.cjs.map +7 -0
- package/build/hooks/typography.cjs +30 -6
- package/build/hooks/typography.cjs.map +2 -2
- package/build/hooks/utils.cjs +24 -2
- package/build/hooks/utils.cjs.map +2 -2
- package/build/layouts/grid.cjs.map +2 -2
- package/build/layouts/utils.cjs +7 -2
- package/build/layouts/utils.cjs.map +2 -2
- package/build/private-apis.cjs +9 -6
- package/build/private-apis.cjs.map +2 -2
- package/build/store/actions.cjs +26 -4
- package/build/store/actions.cjs.map +3 -3
- package/build/store/private-selectors.cjs.map +2 -2
- package/build/store/reducer.cjs.map +2 -2
- package/build/store/selectors.cjs.map +2 -2
- package/build/utils/get-font-styles-and-weights.cjs.map +2 -2
- package/build/utils/transform-styles/index.cjs.map +1 -1
- package/build-module/autocompleters/block.mjs.map +2 -2
- package/build-module/components/alignment-control/ui.mjs.map +2 -2
- package/build-module/components/background-image-control/index.mjs +2 -2
- package/build-module/components/background-image-control/index.mjs.map +2 -2
- package/build-module/components/block-alignment-control/ui.mjs +21 -7
- package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
- package/build-module/components/block-alignment-control/use-available-alignments.mjs +56 -13
- package/build-module/components/block-alignment-control/use-available-alignments.mjs.map +2 -2
- package/build-module/components/block-allowed-blocks/allowed-blocks-control.mjs.map +2 -2
- package/build-module/components/block-bindings/attribute-control.mjs +31 -32
- package/build-module/components/block-bindings/attribute-control.mjs.map +2 -2
- package/build-module/components/block-bindings/source-fields-list.mjs +25 -30
- package/build-module/components/block-bindings/source-fields-list.mjs.map +2 -2
- package/build-module/components/block-canvas/index.mjs.map +2 -2
- package/build-module/components/block-card/index.mjs +3 -8
- package/build-module/components/block-card/index.mjs.map +2 -2
- package/build-module/components/block-edit/edit.mjs.map +2 -2
- package/build-module/components/block-heading-level-dropdown/index.mjs.map +2 -2
- package/build-module/components/block-icon/index.mjs.map +2 -2
- package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +29 -10
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-keyboard-shortcuts/index.mjs.map +2 -2
- package/build-module/components/block-list/block-html.mjs +1 -2
- package/build-module/components/block-list/block-html.mjs.map +2 -2
- package/build-module/components/block-list/block.mjs +2 -4
- package/build-module/components/block-list/block.mjs.map +2 -2
- package/build-module/components/block-list/layout.mjs +1 -1
- package/build-module/components/block-list/layout.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
- package/build-module/components/block-lock/modal.mjs +1 -3
- package/build-module/components/block-lock/modal.mjs.map +2 -2
- package/build-module/components/block-parent-selector/index.mjs +8 -5
- package/build-module/components/block-parent-selector/index.mjs.map +2 -2
- package/build-module/components/block-popover/index.mjs.map +2 -2
- package/build-module/components/block-rename/modal.mjs.map +2 -2
- package/build-module/components/block-settings-menu/block-settings-dropdown.mjs.map +2 -2
- package/build-module/components/block-styles/utils.mjs.map +2 -2
- package/build-module/components/block-switcher/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/edit-section-button.mjs.map +2 -2
- package/build-module/components/block-toolbar/index.mjs +6 -4
- package/build-module/components/block-toolbar/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
- package/build-module/components/block-variation-transforms/index.mjs +30 -21
- package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
- package/build-module/components/block-visibility/modal.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
- package/build-module/components/border-radius-control/index.mjs.map +2 -2
- package/build-module/components/color-palette/with-color-context.mjs.map +2 -2
- package/build-module/components/colors/with-colors.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/contrast-checker/index.mjs.map +2 -2
- package/build-module/components/date-format-picker/index.mjs.map +2 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +2 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
- package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
- package/build-module/components/font-sizes/with-font-sizes.mjs.map +2 -2
- package/build-module/components/global-styles/background-panel.mjs +2 -2
- package/build-module/components/global-styles/background-panel.mjs.map +2 -2
- package/build-module/components/global-styles/border-panel.mjs +2 -2
- package/build-module/components/global-styles/border-panel.mjs.map +2 -2
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +2 -2
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
- package/build-module/components/global-styles/color-panel.mjs +2 -2
- package/build-module/components/global-styles/color-panel.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/filters-panel.mjs +2 -2
- package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
- package/build-module/components/global-styles/hooks.mjs +1 -0
- package/build-module/components/global-styles/hooks.mjs.map +2 -2
- package/build-module/components/global-styles/inheritance/index.mjs +2 -2
- package/build-module/components/global-styles/inheritance/index.mjs.map +2 -2
- package/build-module/components/global-styles/inherited-value-context.mjs +0 -5
- package/build-module/components/global-styles/inherited-value-context.mjs.map +2 -2
- package/build-module/components/global-styles/state-control-badges.mjs +0 -1
- package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
- package/build-module/components/global-styles/state-control.mjs +6 -4
- package/build-module/components/global-styles/state-control.mjs.map +2 -2
- package/build-module/components/global-styles/text-shadow-panel.mjs +224 -0
- package/build-module/components/global-styles/text-shadow-panel.mjs.map +7 -0
- package/build-module/components/global-styles/typography-panel.mjs +47 -6
- package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
- package/build-module/components/global-styles/typography-utils.mjs.map +2 -2
- package/build-module/components/global-styles/utils.mjs.map +2 -2
- package/build-module/components/html-element-control/index.mjs +2 -2
- package/build-module/components/html-element-control/index.mjs.map +2 -2
- package/build-module/components/iframe/index.mjs.map +2 -2
- package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
- package/build-module/components/image-size-control/index.mjs +2 -2
- package/build-module/components/image-size-control/index.mjs.map +2 -2
- package/build-module/components/inner-blocks/index.mjs +6 -1
- package/build-module/components/inner-blocks/index.mjs.map +2 -2
- package/build-module/components/inner-content/index.mjs.map +2 -2
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.mjs +6 -24
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.mjs.map +2 -2
- package/build-module/components/inserter/block-patterns-tab/utils.mjs +25 -0
- package/build-module/components/inserter/block-patterns-tab/utils.mjs.map +2 -2
- package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
- package/build-module/components/inserter/hooks/use-insertion-point.mjs.map +2 -2
- package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
- package/build-module/components/inserter-list-item/index.mjs.map +2 -2
- package/build-module/components/inspector-controls/list-view-content-popover.mjs.map +2 -2
- package/build-module/components/link-control/search-results.mjs.map +2 -2
- package/build-module/components/link-control/use-search-handler.mjs +3 -0
- package/build-module/components/link-control/use-search-handler.mjs.map +2 -2
- package/build-module/components/list-view/branch.mjs.map +2 -2
- package/build-module/components/list-view/drop-indicator.mjs.map +2 -2
- package/build-module/components/list-view/index.mjs.map +2 -2
- package/build-module/components/list-view/use-list-view-drop-zone.mjs.map +2 -2
- package/build-module/components/list-view/utils.mjs.map +2 -2
- 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/plain-text/index.mjs +1 -2
- package/build-module/components/plain-text/index.mjs.map +2 -2
- package/build-module/components/preset-input-control/index.mjs.map +2 -2
- package/build-module/components/provider/index.mjs +3 -1
- package/build-module/components/provider/index.mjs.map +2 -2
- package/build-module/components/provider/use-block-sync.mjs.map +2 -2
- package/build-module/components/publish-date-time-picker/index.mjs.map +2 -2
- package/build-module/components/resizable-box-popover/index.mjs +1 -1
- package/build-module/components/resizable-box-popover/index.mjs.map +1 -1
- package/build-module/components/resolution-tool/index.mjs +2 -2
- package/build-module/components/resolution-tool/index.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs +8 -22
- package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
- package/build-module/components/rich-text/format-edit.mjs.map +2 -2
- package/build-module/components/rich-text/index.mjs +21 -0
- package/build-module/components/rich-text/index.mjs.map +2 -2
- package/build-module/components/rich-text/multiline.mjs +11 -3
- package/build-module/components/rich-text/multiline.mjs.map +2 -2
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.mjs.map +2 -2
- package/build-module/components/typewriter/index.mjs.map +2 -2
- package/build-module/components/use-block-commands/index.mjs.map +2 -2
- package/build-module/components/writing-flow/index.mjs +3 -0
- package/build-module/components/writing-flow/index.mjs.map +2 -2
- package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
- package/build-module/components/writing-flow/use-selection-observer.mjs +5 -3
- package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
- package/build-module/hooks/align.mjs +6 -6
- package/build-module/hooks/align.mjs.map +2 -2
- package/build-module/hooks/background.mjs.map +2 -2
- package/build-module/hooks/block-bindings.mjs.map +2 -2
- package/build-module/hooks/border.mjs.map +2 -2
- package/build-module/hooks/contrast-checker.mjs.map +2 -2
- package/build-module/hooks/dimensions.mjs.map +2 -2
- package/build-module/hooks/duotone.mjs.map +2 -2
- package/build-module/hooks/elements.mjs.map +2 -2
- package/build-module/hooks/fit-text.mjs.map +2 -2
- package/build-module/hooks/gap.mjs +2 -1
- package/build-module/hooks/gap.mjs.map +2 -2
- package/build-module/hooks/index.mjs +4 -2
- package/build-module/hooks/index.mjs.map +2 -2
- package/build-module/hooks/layout-child.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +6 -5
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/position.mjs +5 -33
- package/build-module/hooks/position.mjs.map +2 -2
- package/build-module/hooks/states.mjs +3 -2
- package/build-module/hooks/states.mjs.map +2 -2
- package/build-module/hooks/text-shadow.mjs +65 -0
- package/build-module/hooks/text-shadow.mjs.map +7 -0
- package/build-module/hooks/typography.mjs +30 -6
- package/build-module/hooks/typography.mjs.map +2 -2
- package/build-module/hooks/utils.mjs +24 -2
- package/build-module/hooks/utils.mjs.map +2 -2
- package/build-module/layouts/grid.mjs.map +2 -2
- package/build-module/layouts/utils.mjs +5 -1
- package/build-module/layouts/utils.mjs.map +2 -2
- package/build-module/private-apis.mjs +6 -2
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/actions.mjs +28 -5
- package/build-module/store/actions.mjs.map +3 -3
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/store/selectors.mjs.map +2 -2
- package/build-module/utils/get-font-styles-and-weights.mjs.map +2 -2
- package/build-module/utils/transform-styles/index.mjs.map +1 -1
- package/build-style/content-rtl.css +7 -2
- package/build-style/content.css +7 -2
- package/build-style/style-rtl.css +90 -25
- package/build-style/style.css +92 -25
- package/package.json +42 -43
- package/src/autocompleters/block.jsx +4 -4
- package/src/components/alignment-control/ui.jsx +1 -1
- package/src/components/background-image-control/index.jsx +3 -3
- package/src/components/block-alignment-control/test/index.jsdom.test.jsx +267 -0
- package/src/components/block-alignment-control/ui.jsx +47 -9
- package/src/components/block-alignment-control/use-available-alignments.js +106 -20
- package/src/components/block-allowed-blocks/allowed-blocks-control.jsx +1 -1
- package/src/components/block-bindings/attribute-control.jsx +27 -29
- package/src/components/block-bindings/source-fields-list.jsx +22 -32
- package/src/components/block-bindings/test/attribute-control.jsdom.test.jsx +115 -0
- package/src/components/block-canvas/index.jsx +1 -1
- package/src/components/block-card/index.jsx +5 -11
- package/src/components/block-card/style.scss +1 -0
- package/src/components/block-edit/edit.jsx +1 -1
- package/src/components/block-heading-level-dropdown/index.jsx +1 -1
- package/src/components/block-icon/index.jsx +1 -1
- package/src/components/block-icon/test/index.browser.test.jsx +74 -0
- package/src/components/block-inspector/edit-contents.jsx +2 -2
- package/src/components/block-inspector/index.jsx +46 -15
- package/src/components/block-inspector/style.scss +16 -0
- package/src/components/block-keyboard-shortcuts/index.jsx +2 -2
- package/src/components/block-list/block-html.jsx +2 -3
- package/src/components/block-list/block.jsx +7 -5
- package/src/components/block-list/content.scss +3 -2
- package/src/components/block-list/layout.jsx +4 -1
- package/src/components/block-list/test/layout.jsdom.test.js +40 -0
- package/src/components/block-list/use-block-props/index.js +1 -1
- package/src/components/block-lock/modal.jsx +2 -3
- package/src/components/block-lock/style.scss +1 -1
- package/src/components/block-mover/style.scss +0 -13
- package/src/components/block-parent-selector/index.jsx +12 -6
- package/src/components/block-patterns-list/style.scss +1 -1
- package/src/components/block-popover/index.jsx +1 -1
- package/src/components/block-rename/modal.jsx +3 -3
- package/src/components/block-settings-menu/block-settings-dropdown.jsx +1 -1
- package/src/components/block-styles/utils.js +1 -1
- package/src/components/block-switcher/index.jsx +3 -3
- package/src/components/block-toolbar/edit-section-button.jsx +2 -2
- package/src/components/block-toolbar/index.jsx +8 -4
- package/src/components/block-toolbar/switch-section-style.jsx +1 -1
- package/src/components/block-variation-transforms/index.jsx +24 -23
- package/src/components/block-variation-transforms/test/index.jsdom.test.jsx +93 -0
- package/src/components/block-visibility/modal.jsx +7 -7
- package/src/components/block-visibility/style.scss +1 -1
- package/src/components/block-visibility/viewport-visibility-info.jsx +5 -7
- package/src/components/border-radius-control/index.jsx +2 -2
- package/src/components/border-radius-control/test/index.jsdom.test.jsx +0 -22
- package/src/components/border-radius-control/test/select.browser.test.js +30 -0
- package/src/components/color-palette/with-color-context.jsx +1 -1
- package/src/components/colors/with-colors.jsx +1 -1
- package/src/components/colors-gradients/control.jsx +2 -2
- package/src/components/colors-gradients/test/{control.jsdom.test.jsx → control.browser.test.jsx} +6 -9
- package/src/components/contrast-checker/index.jsx +2 -2
- package/src/components/date-format-picker/index.jsx +2 -2
- package/src/components/dimensions-tool/aspect-ratio-tool.jsx +4 -4
- package/src/components/dimensions-tool/test/index.jsdom.test.jsx +17 -11
- package/src/components/dimensions-tool/width-height-tool.jsx +2 -2
- package/src/components/font-sizes/with-font-sizes.jsx +2 -3
- package/src/components/global-styles/background-panel.jsx +2 -2
- package/src/components/global-styles/border-panel.jsx +2 -2
- package/src/components/global-styles/color-gradient-dropdown-item.jsx +3 -3
- package/src/components/global-styles/color-panel.jsx +3 -3
- package/src/components/global-styles/dimensions-panel.jsx +6 -6
- package/src/components/global-styles/filters-panel.jsx +2 -2
- package/src/components/global-styles/hooks.js +1 -0
- package/src/components/global-styles/inheritance/index.jsx +9 -6
- package/src/components/global-styles/inheritance/test/{index.jsdom.test.jsx → index.browser.test.jsx} +34 -28
- package/src/components/global-styles/inherited-value-context.js +1 -9
- package/src/components/global-styles/state-control-badges.jsx +0 -1
- package/src/components/global-styles/state-control.jsx +12 -3
- package/src/components/global-styles/style.scss +68 -0
- package/src/components/global-styles/test/{color-panel.jsdom.test.jsx → color-panel.browser.test.jsx} +53 -54
- package/src/components/global-styles/test/inherited-value-context-core.jsdom.test.js +17 -26
- package/src/components/global-styles/test/{typography-panel-core.jsdom.test.jsx → typography-panel-core.browser.test.jsx} +84 -39
- package/src/components/global-styles/test/{typography-panel.jsdom.test.jsx → typography-panel.browser.test.jsx} +80 -122
- package/src/components/global-styles/text-shadow-panel.tsx +257 -0
- package/src/components/global-styles/typography-panel.jsx +52 -13
- package/src/components/global-styles/typography-utils.js +2 -2
- package/src/components/global-styles/utils.js +1 -1
- package/src/components/html-element-control/index.jsx +2 -2
- package/src/components/iframe/index.jsx +1 -1
- package/src/components/iframe/use-scale-canvas.js +1 -1
- package/src/components/image-size-control/index.jsx +2 -2
- package/src/components/inner-blocks/index.jsx +9 -1
- package/src/components/inner-content/index.jsx +1 -1
- package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +7 -33
- package/src/components/inserter/block-patterns-tab/utils.js +44 -0
- package/src/components/inserter/hooks/use-block-types-state.js +2 -2
- package/src/components/inserter/hooks/use-insertion-point.js +1 -1
- package/src/components/inserter/hooks/use-patterns-state.js +1 -1
- package/src/components/inserter/media-tab/media-panel.jsx +9 -9
- package/src/components/inserter/media-tab/media-preview.jsx +1 -1
- package/src/components/inserter-list-item/index.jsx +1 -1
- package/src/components/inserter-list-item/style.scss +2 -2
- package/src/components/inspector-controls/list-view-content-popover.jsx +1 -1
- package/src/components/link-control/search-results.jsx +1 -1
- package/src/components/link-control/style.scss +1 -1
- package/src/components/link-control/test/index.jsdom.test.jsx +38 -110
- package/src/components/link-control/test/keyboard-selection.browser.test.js +110 -0
- package/src/components/link-control/use-search-handler.js +8 -3
- package/src/components/list-view/branch.jsx +1 -1
- package/src/components/list-view/drop-indicator.jsx +3 -3
- package/src/components/list-view/index.jsx +1 -1
- package/src/components/list-view/style.scss +1 -9
- package/src/components/list-view/use-list-view-drop-zone.js +1 -1
- package/src/components/list-view/utils.js +1 -1
- package/src/components/media-replace-flow/index.jsx +4 -1
- package/src/components/navigable-toolbar/test/index.browser.test.js +6 -7
- package/src/components/plain-text/README.md +3 -2
- package/src/components/plain-text/content.scss +0 -1
- package/src/components/plain-text/index.jsx +2 -3
- package/src/components/plain-text/style.scss +4 -0
- package/src/components/preset-input-control/index.jsx +2 -2
- package/src/components/preset-input-control/test/index.jsdom.test.jsx +0 -56
- package/src/components/preset-input-control/test/interaction.browser.test.js +63 -0
- package/src/components/provider/index.jsx +5 -3
- package/src/components/provider/use-block-sync.js +5 -5
- package/src/components/publish-date-time-picker/index.jsx +1 -1
- package/src/components/resizable-box-popover/index.jsx +1 -1
- package/src/components/resolution-tool/index.jsx +2 -2
- package/src/components/responsive-block-control/style.scss +1 -2
- package/src/components/responsive-block-control/test/index.jsdom.test.jsx +2 -2
- package/src/components/rich-text/event-listeners/enter.js +16 -23
- package/src/components/rich-text/format-edit.jsx +1 -1
- package/src/components/rich-text/index.jsx +39 -2
- package/src/components/rich-text/multiline.jsx +11 -3
- package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
- package/src/components/spacing-sizes-control/test/index.jsdom.test.jsx +0 -21
- package/src/components/spacing-sizes-control/test/select.browser.test.js +58 -0
- package/src/components/typewriter/index.jsx +1 -1
- package/src/components/url-input/test/fixtures/validated-input-control-deprecation.js +1 -1
- package/src/components/use-block-commands/index.js +1 -1
- package/src/components/use-block-drop-zone/test/index.js +2 -2
- package/src/components/writing-flow/index.jsx +8 -0
- package/src/components/writing-flow/use-clipboard-handler.js +1 -1
- package/src/components/writing-flow/use-selection-observer.js +15 -6
- package/src/content.scss +1 -0
- package/src/hooks/align.jsx +22 -6
- package/src/hooks/background.jsx +1 -1
- package/src/hooks/block-bindings.jsx +1 -1
- package/src/hooks/block-hooks.scss +0 -6
- package/src/hooks/border.jsx +2 -2
- package/src/hooks/contrast-checker.js +1 -1
- package/src/hooks/dimensions.jsx +2 -2
- package/src/hooks/duotone.jsx +3 -3
- package/src/hooks/elements.jsx +3 -3
- package/src/hooks/fit-text.jsx +1 -1
- package/src/hooks/gap.js +2 -4
- package/src/hooks/index.js +3 -1
- package/src/hooks/layout-child.jsx +3 -4
- package/src/hooks/layout.jsx +17 -18
- package/src/hooks/position.jsx +5 -36
- package/src/hooks/states.jsx +6 -2
- package/src/hooks/test/layout.jsdom.test.js +44 -1
- package/src/hooks/text-shadow.ts +105 -0
- package/src/hooks/typography.jsx +58 -30
- package/src/hooks/utils.jsx +23 -1
- package/src/layouts/grid.jsx +2 -2
- package/src/layouts/test/flex.jsdom.test.jsx +4 -3
- package/src/layouts/test/utils.js +48 -1
- package/src/layouts/utils.js +19 -0
- package/src/private-apis.js +4 -0
- package/src/store/actions.js +50 -10
- package/src/store/private-selectors.js +5 -5
- package/src/store/reducer.js +6 -6
- package/src/store/selectors.js +3 -3
- package/src/store/test/actions.jsdom.test.js +60 -0
- package/src/style.scss +1 -0
- package/src/utils/get-font-styles-and-weights.ts +1 -1
- package/src/utils/transform-styles/index.ts +1 -1
- package/build/hooks/cross-origin-isolation.cjs +0 -56
- package/build/hooks/cross-origin-isolation.cjs.map +0 -7
- package/build-module/hooks/cross-origin-isolation.mjs +0 -54
- package/build-module/hooks/cross-origin-isolation.mjs.map +0 -7
- package/src/components/block-icon/test/__snapshots__/index.jsdom.test.jsx.snap +0 -27
- package/src/components/block-icon/test/index.jsdom.test.jsx +0 -67
- package/src/hooks/cross-origin-isolation.js +0 -73
- package/src/hooks/test/cross-origin-isolation.jsdom.test.js +0 -173
|
@@ -187,7 +187,7 @@ export function MediaCategoryPanel( { rootClientId, onInsert, category } ) {
|
|
|
187
187
|
),
|
|
188
188
|
attachedCount,
|
|
189
189
|
category.postTypeLabel
|
|
190
|
-
|
|
190
|
+
)
|
|
191
191
|
: sprintf(
|
|
192
192
|
/* translators: %d: Number of images attached to the post. */
|
|
193
193
|
_n(
|
|
@@ -196,7 +196,7 @@ export function MediaCategoryPanel( { rootClientId, onInsert, category } ) {
|
|
|
196
196
|
attachedCount
|
|
197
197
|
),
|
|
198
198
|
attachedCount
|
|
199
|
-
|
|
199
|
+
),
|
|
200
200
|
{ type: 'snackbar', id: 'inserter-notice' }
|
|
201
201
|
);
|
|
202
202
|
} catch {
|
|
@@ -227,7 +227,7 @@ export function MediaCategoryPanel( { rootClientId, onInsert, category } ) {
|
|
|
227
227
|
/* translators: %s: Name of the post type e.g: "Page". */
|
|
228
228
|
__( 'Image detached from %s.' ),
|
|
229
229
|
category.postTypeLabel
|
|
230
|
-
|
|
230
|
+
)
|
|
231
231
|
: __( 'Image detached from post.' ),
|
|
232
232
|
{ type: 'snackbar', id: 'inserter-notice' }
|
|
233
233
|
);
|
|
@@ -277,10 +277,10 @@ export function MediaCategoryPanel( { rootClientId, onInsert, category } ) {
|
|
|
277
277
|
<InserterNoResults>
|
|
278
278
|
{ category.emptyMessage && ! debouncedSearch
|
|
279
279
|
? // For a source with a custom empty message (e.g.
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
280
|
+
// Attachments) and no active search, an empty result
|
|
281
|
+
// means nothing is attached yet — clearer than the
|
|
282
|
+
// generic "no results found".
|
|
283
|
+
category.emptyMessage
|
|
284
284
|
: __( 'No results found.' ) }
|
|
285
285
|
</InserterNoResults>
|
|
286
286
|
) }
|
|
@@ -346,10 +346,10 @@ export function MediaCategoryPanel( { rootClientId, onInsert, category } ) {
|
|
|
346
346
|
'Detach this image from the current %s? The image will remain in the Media Library.'
|
|
347
347
|
),
|
|
348
348
|
category.postTypeLabel
|
|
349
|
-
|
|
349
|
+
)
|
|
350
350
|
: __(
|
|
351
351
|
'Detach this image from the current post? The image will remain in the Media Library.'
|
|
352
|
-
|
|
352
|
+
) }
|
|
353
353
|
</p>
|
|
354
354
|
<div className={ `${ baseCssClass }-detach-actions` }>
|
|
355
355
|
<Button
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
justify-content: center;
|
|
45
45
|
cursor: var(--wpds-cursor-control);
|
|
46
46
|
background: transparent;
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
word-break: normal;
|
|
48
|
+
overflow-wrap: break-word;
|
|
49
49
|
@media not ( prefers-reduced-motion ) {
|
|
50
50
|
transition: all 0.05s ease-in-out;
|
|
51
51
|
}
|
|
@@ -31,8 +31,6 @@ import { expectValidatedInputControlDeprecationIfCalled } from '../../url-input/
|
|
|
31
31
|
globalThis.wpVitest.mockMatchMedia();
|
|
32
32
|
|
|
33
33
|
globalThis.wpVitest.mockScrollIntoView();
|
|
34
|
-
globalThis.wpVitest.mockVisibleElements();
|
|
35
|
-
|
|
36
34
|
const mockFetchSearchSuggestions = vi.fn();
|
|
37
35
|
|
|
38
36
|
function getExpectedVisualTypeName( type ) {
|
|
@@ -1706,114 +1704,6 @@ describe( 'Selecting links', () => {
|
|
|
1706
1704
|
} );
|
|
1707
1705
|
|
|
1708
1706
|
describe( 'Selection using keyboard', () => {
|
|
1709
|
-
it.each( [
|
|
1710
|
-
[ 'entity', 'hello world', fauxEntitySuggestions[ 0 ] ], // Entity search.
|
|
1711
|
-
[
|
|
1712
|
-
'url',
|
|
1713
|
-
'https://www.wordpress.org',
|
|
1714
|
-
{
|
|
1715
|
-
id: '1',
|
|
1716
|
-
title: 'https://www.wordpress.org',
|
|
1717
|
-
url: 'https://www.wordpress.org',
|
|
1718
|
-
type: 'link',
|
|
1719
|
-
},
|
|
1720
|
-
], // Url.
|
|
1721
|
-
] )(
|
|
1722
|
-
'should display a current selected link UI when an %s suggestion for the search "%s" is selected using the keyboard',
|
|
1723
|
-
async ( type, searchTerm, selectedLink ) => {
|
|
1724
|
-
const user = userEvent.setup();
|
|
1725
|
-
const LinkControlConsumer = () => {
|
|
1726
|
-
const [ link, setLink ] = useState();
|
|
1727
|
-
|
|
1728
|
-
return (
|
|
1729
|
-
<LinkControl
|
|
1730
|
-
value={ link }
|
|
1731
|
-
onChange={ ( suggestion ) => setLink( suggestion ) }
|
|
1732
|
-
/>
|
|
1733
|
-
);
|
|
1734
|
-
};
|
|
1735
|
-
|
|
1736
|
-
render( <LinkControlConsumer /> );
|
|
1737
|
-
|
|
1738
|
-
// Search Input UI.
|
|
1739
|
-
const searchInput = screen.getByRole( 'combobox', {
|
|
1740
|
-
name: 'Search or type URL',
|
|
1741
|
-
} );
|
|
1742
|
-
|
|
1743
|
-
// Simulate searching for a term.
|
|
1744
|
-
await user.type( searchInput, searchTerm );
|
|
1745
|
-
|
|
1746
|
-
const searchResults = await screen.findByRole( 'listbox', {
|
|
1747
|
-
name: /Search results for.*/,
|
|
1748
|
-
} );
|
|
1749
|
-
|
|
1750
|
-
// Step down into the search results, highlighting the first result item.
|
|
1751
|
-
triggerArrowDown( searchInput );
|
|
1752
|
-
|
|
1753
|
-
const searchResultElements =
|
|
1754
|
-
within( searchResults ).getAllByRole( 'option' );
|
|
1755
|
-
|
|
1756
|
-
const firstSearchSuggestion = searchResultElements[ 0 ];
|
|
1757
|
-
const secondSearchSuggestion = searchResultElements[ 1 ];
|
|
1758
|
-
|
|
1759
|
-
let selectedSearchResultElement = screen.getByRole( 'option', {
|
|
1760
|
-
selected: true,
|
|
1761
|
-
} );
|
|
1762
|
-
|
|
1763
|
-
// We should have highlighted the first item using the keyboard.
|
|
1764
|
-
expect( selectedSearchResultElement ).toBe(
|
|
1765
|
-
firstSearchSuggestion
|
|
1766
|
-
);
|
|
1767
|
-
|
|
1768
|
-
// Only entity searches contain more than 1 suggestion.
|
|
1769
|
-
if ( type === 'entity' ) {
|
|
1770
|
-
// Check we can go down again using the down arrow.
|
|
1771
|
-
triggerArrowDown( searchInput );
|
|
1772
|
-
|
|
1773
|
-
selectedSearchResultElement = screen.getByRole( 'option', {
|
|
1774
|
-
selected: true,
|
|
1775
|
-
} );
|
|
1776
|
-
|
|
1777
|
-
// We should have highlighted the first item using the keyboard
|
|
1778
|
-
expect( selectedSearchResultElement ).toBe(
|
|
1779
|
-
secondSearchSuggestion
|
|
1780
|
-
);
|
|
1781
|
-
|
|
1782
|
-
// Check we can go back up via up arrow.
|
|
1783
|
-
triggerArrowUp( searchInput );
|
|
1784
|
-
|
|
1785
|
-
selectedSearchResultElement = screen.getByRole( 'option', {
|
|
1786
|
-
selected: true,
|
|
1787
|
-
} );
|
|
1788
|
-
|
|
1789
|
-
// We should be back to highlighting the first search result again
|
|
1790
|
-
expect( selectedSearchResultElement ).toBe(
|
|
1791
|
-
firstSearchSuggestion
|
|
1792
|
-
);
|
|
1793
|
-
}
|
|
1794
|
-
|
|
1795
|
-
// Submit the selected item as the current link.
|
|
1796
|
-
triggerEnter( searchInput );
|
|
1797
|
-
|
|
1798
|
-
// Check that the suggestion selected via is now shown as selected.
|
|
1799
|
-
const currentLink = screen.getByRole( 'group', {
|
|
1800
|
-
name: 'Manage link',
|
|
1801
|
-
} );
|
|
1802
|
-
const currentLinkAnchor = screen.getByRole( 'link', {
|
|
1803
|
-
name: `${ selectedLink.title } (opens in a new tab)`,
|
|
1804
|
-
} );
|
|
1805
|
-
|
|
1806
|
-
// Make sure focus is retained after submission.
|
|
1807
|
-
expect( currentLinkAnchor ).toHaveFocus();
|
|
1808
|
-
|
|
1809
|
-
expect( currentLink ).toBeVisible();
|
|
1810
|
-
expect(
|
|
1811
|
-
screen.getByRole( 'button', { name: 'Edit link' } )
|
|
1812
|
-
).toBeVisible();
|
|
1813
|
-
expect( currentLinkAnchor ).toBeVisible();
|
|
1814
|
-
}
|
|
1815
|
-
);
|
|
1816
|
-
|
|
1817
1707
|
it( 'should allow selection of initial search results via the keyboard', async () => {
|
|
1818
1708
|
render( <LinkControl showInitialSuggestions /> );
|
|
1819
1709
|
|
|
@@ -3741,3 +3631,41 @@ describe( 'Link preview with entity data from navigation blocks', () => {
|
|
|
3741
3631
|
} );
|
|
3742
3632
|
} );
|
|
3743
3633
|
} );
|
|
3634
|
+
|
|
3635
|
+
describe( 'Front page and blog home labelling', () => {
|
|
3636
|
+
it( 'should not label a term that shares the front page id as the front page', async () => {
|
|
3637
|
+
const user = userEvent.setup();
|
|
3638
|
+
const aCategory = {
|
|
3639
|
+
id: 1,
|
|
3640
|
+
title: 'Uncategorized',
|
|
3641
|
+
type: 'category',
|
|
3642
|
+
kind: 'taxonomy',
|
|
3643
|
+
url: '/category/uncategorized',
|
|
3644
|
+
};
|
|
3645
|
+
|
|
3646
|
+
// Posts and terms are separate tables, so a term can share an id with
|
|
3647
|
+
// the page set as the front page.
|
|
3648
|
+
useSelect.mockImplementation( () => ( {
|
|
3649
|
+
fetchSearchSuggestions: () => Promise.resolve( [ aCategory ] ),
|
|
3650
|
+
fetchRichUrlData: mockFetchRichUrlData,
|
|
3651
|
+
pageOnFront: 1,
|
|
3652
|
+
pageForPosts: 2,
|
|
3653
|
+
} ) );
|
|
3654
|
+
|
|
3655
|
+
render( <LinkControl /> );
|
|
3656
|
+
|
|
3657
|
+
await user.type(
|
|
3658
|
+
screen.getByRole( 'combobox', { name: 'Search or type URL' } ),
|
|
3659
|
+
'Uncategorized'
|
|
3660
|
+
);
|
|
3661
|
+
|
|
3662
|
+
const searchResults = await screen.findByRole( 'listbox', {
|
|
3663
|
+
name: /Search results for.*/,
|
|
3664
|
+
} );
|
|
3665
|
+
|
|
3666
|
+
const option = within( searchResults ).getByRole( 'option' );
|
|
3667
|
+
|
|
3668
|
+
expect( option ).toHaveTextContent( 'Category' );
|
|
3669
|
+
expect( option ).not.toHaveTextContent( 'Front page' );
|
|
3670
|
+
} );
|
|
3671
|
+
} );
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { page, userEvent } from 'vitest/browser';
|
|
3
|
+
import { render } from 'vitest-browser-react';
|
|
4
|
+
import { screen } from '@testing-library/react';
|
|
5
|
+
import { SlotFillProvider } from '@wordpress/components';
|
|
6
|
+
import { createElement, useState } from '@wordpress/element';
|
|
7
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
8
|
+
import LinkControl from '../';
|
|
9
|
+
import { fauxEntitySuggestions, fetchFauxEntitySuggestions } from './fixtures';
|
|
10
|
+
|
|
11
|
+
const mockFetchSearchSuggestions = vi.fn();
|
|
12
|
+
|
|
13
|
+
vi.mock( import( '@wordpress/data' ), { spy: true } );
|
|
14
|
+
|
|
15
|
+
vi.mock( import( '@wordpress/compose' ), async ( importOriginal ) => ( {
|
|
16
|
+
...( await importOriginal() ),
|
|
17
|
+
useReducedMotion: () => true,
|
|
18
|
+
} ) );
|
|
19
|
+
|
|
20
|
+
beforeEach( () => {
|
|
21
|
+
vi.mocked( useDispatch ).mockReturnValue( {
|
|
22
|
+
saveEntityRecords: vi.fn(),
|
|
23
|
+
} );
|
|
24
|
+
useSelect.mockImplementation( () => ( {
|
|
25
|
+
fetchSearchSuggestions: mockFetchSearchSuggestions,
|
|
26
|
+
fetchRichUrlData: undefined,
|
|
27
|
+
} ) );
|
|
28
|
+
mockFetchSearchSuggestions.mockImplementation( fetchFauxEntitySuggestions );
|
|
29
|
+
} );
|
|
30
|
+
|
|
31
|
+
describe( 'LinkControl keyboard selection', () => {
|
|
32
|
+
it.each( [
|
|
33
|
+
[ 'entity', 'hello world', fauxEntitySuggestions[ 0 ] ],
|
|
34
|
+
[
|
|
35
|
+
'url',
|
|
36
|
+
'https://www.wordpress.org',
|
|
37
|
+
{
|
|
38
|
+
title: 'https://www.wordpress.org',
|
|
39
|
+
url: 'https://www.wordpress.org',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
] )(
|
|
43
|
+
'should display a current selected link UI when an %s suggestion for the search "%s" is selected using the keyboard',
|
|
44
|
+
async ( type, searchTerm, selectedLink ) => {
|
|
45
|
+
const user = userEvent.setup();
|
|
46
|
+
function LinkControlConsumer() {
|
|
47
|
+
const [ link, setLink ] = useState();
|
|
48
|
+
|
|
49
|
+
return createElement( LinkControl, {
|
|
50
|
+
value: link,
|
|
51
|
+
onChange: ( suggestion ) => setLink( suggestion ),
|
|
52
|
+
} );
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
await render(
|
|
56
|
+
createElement(
|
|
57
|
+
SlotFillProvider,
|
|
58
|
+
null,
|
|
59
|
+
createElement( LinkControlConsumer )
|
|
60
|
+
)
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
const searchInput = screen.getByRole( 'combobox', {
|
|
64
|
+
name: 'Search or type URL',
|
|
65
|
+
} );
|
|
66
|
+
await user.type( searchInput, searchTerm );
|
|
67
|
+
|
|
68
|
+
await screen.findByRole( 'listbox', {
|
|
69
|
+
name: /Search results for.*/,
|
|
70
|
+
} );
|
|
71
|
+
const selectedOption = page.getByRole( 'option', {
|
|
72
|
+
selected: true,
|
|
73
|
+
} );
|
|
74
|
+
|
|
75
|
+
await user.keyboard( '{ArrowDown}' );
|
|
76
|
+
await expect
|
|
77
|
+
.element( selectedOption )
|
|
78
|
+
.toHaveTextContent(
|
|
79
|
+
type === 'entity'
|
|
80
|
+
? fauxEntitySuggestions[ 0 ].title
|
|
81
|
+
: searchTerm
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
if ( type === 'entity' ) {
|
|
85
|
+
await user.keyboard( '{ArrowDown}' );
|
|
86
|
+
await expect
|
|
87
|
+
.element( selectedOption )
|
|
88
|
+
.toHaveTextContent( fauxEntitySuggestions[ 1 ].title );
|
|
89
|
+
|
|
90
|
+
await user.keyboard( '{ArrowUp}' );
|
|
91
|
+
await expect
|
|
92
|
+
.element( selectedOption )
|
|
93
|
+
.toHaveTextContent( fauxEntitySuggestions[ 0 ].title );
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
await user.keyboard( '{Enter}' );
|
|
97
|
+
|
|
98
|
+
const selectedLinkName = `${ selectedLink.title } (opens in a new tab)`;
|
|
99
|
+
await expect
|
|
100
|
+
.element( page.getByRole( 'link', { name: selectedLinkName } ) )
|
|
101
|
+
.toHaveFocus();
|
|
102
|
+
await expect
|
|
103
|
+
.element( page.getByRole( 'group', { name: 'Manage link' } ) )
|
|
104
|
+
.toBeVisible();
|
|
105
|
+
await expect
|
|
106
|
+
.element( page.getByRole( 'button', { name: 'Edit link' } ) )
|
|
107
|
+
.toBeVisible();
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
} );
|
|
@@ -32,8 +32,13 @@ const handleEntitySearch = async (
|
|
|
32
32
|
|
|
33
33
|
const results = await fetchSearchSuggestions( val, suggestionsQuery );
|
|
34
34
|
|
|
35
|
-
// Identify front page and update type to match.
|
|
35
|
+
// Identify front page and update type to match. Posts, terms and media can
|
|
36
|
+
// share an id, so only pages are considered.
|
|
36
37
|
results.map( ( result ) => {
|
|
38
|
+
if ( result.type !== 'page' ) {
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
37
42
|
if ( Number( result.id ) === pageOnFront ) {
|
|
38
43
|
result.isFrontPage = true;
|
|
39
44
|
return result;
|
|
@@ -73,7 +78,7 @@ const handleEntitySearch = async (
|
|
|
73
78
|
title: val, // Must match the existing `<input>`s text value.
|
|
74
79
|
url: val, // Must match the existing `<input>`s text value.
|
|
75
80
|
type: CREATE_TYPE,
|
|
76
|
-
|
|
81
|
+
} );
|
|
77
82
|
};
|
|
78
83
|
|
|
79
84
|
export default function useSearchHandler(
|
|
@@ -110,7 +115,7 @@ export default function useSearchHandler(
|
|
|
110
115
|
withCreateSuggestion,
|
|
111
116
|
pageOnFront,
|
|
112
117
|
pageForPosts
|
|
113
|
-
|
|
118
|
+
);
|
|
114
119
|
},
|
|
115
120
|
[
|
|
116
121
|
directEntryHandler,
|
|
@@ -163,7 +163,7 @@ function ListViewBranch( props ) {
|
|
|
163
163
|
const hasNestedBlocks = !! innerBlocks?.length;
|
|
164
164
|
|
|
165
165
|
const shouldExpand = hasNestedBlocks
|
|
166
|
-
? expansionState[ clientId ] ?? isExpanded
|
|
166
|
+
? ( expansionState[ clientId ] ?? isExpanded )
|
|
167
167
|
: undefined;
|
|
168
168
|
|
|
169
169
|
// Make updates to the selected or dragged blocks synchronous,
|
|
@@ -35,7 +35,7 @@ export default function ListViewDropIndicatorPreview( {
|
|
|
35
35
|
const _rootBlockElement = rootClientId
|
|
36
36
|
? listViewRef.current.querySelector(
|
|
37
37
|
`[data-block="${ rootClientId }"]`
|
|
38
|
-
|
|
38
|
+
)
|
|
39
39
|
: undefined;
|
|
40
40
|
|
|
41
41
|
// The clientId represents the sibling block, the dragged block will
|
|
@@ -44,7 +44,7 @@ export default function ListViewDropIndicatorPreview( {
|
|
|
44
44
|
const _blockElement = clientId
|
|
45
45
|
? listViewRef.current.querySelector(
|
|
46
46
|
`[data-block="${ clientId }"]`
|
|
47
|
-
|
|
47
|
+
)
|
|
48
48
|
: undefined;
|
|
49
49
|
|
|
50
50
|
return [ _rootBlockElement, _blockElement ];
|
|
@@ -251,7 +251,7 @@ export default function ListViewDropIndicatorPreview( {
|
|
|
251
251
|
// drop indicator.
|
|
252
252
|
const scrollbarWidth = rtl
|
|
253
253
|
? scrollContainer.offsetWidth -
|
|
254
|
-
|
|
254
|
+
scrollContainer.clientWidth
|
|
255
255
|
: 0;
|
|
256
256
|
|
|
257
257
|
if ( left < scrollContainerRect.left + scrollbarWidth ) {
|
|
@@ -353,7 +353,7 @@
|
|
|
353
353
|
align-items: center;
|
|
354
354
|
}
|
|
355
355
|
|
|
356
|
-
// Keep the tap target large
|
|
356
|
+
// Keep the tap target large.
|
|
357
357
|
.block-editor-block-mover-button {
|
|
358
358
|
position: relative;
|
|
359
359
|
width: $button-size;
|
|
@@ -380,14 +380,6 @@
|
|
|
380
380
|
top: -$grid-unit-05;
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
|
-
|
|
384
|
-
// Tweak size and position of focus ring.
|
|
385
|
-
&::before {
|
|
386
|
-
height: 16px;
|
|
387
|
-
min-width: 100%;
|
|
388
|
-
left: 0;
|
|
389
|
-
right: 0;
|
|
390
|
-
}
|
|
391
383
|
}
|
|
392
384
|
|
|
393
385
|
.block-editor-inserter__toggle {
|
|
@@ -21,7 +21,7 @@ export const getBlockPropertiesDescription = ( positionLabel, isLocked ) =>
|
|
|
21
21
|
// translators: %s: Position of selected block, e.g. "Sticky" or "Fixed".
|
|
22
22
|
__( 'Position: %s' ),
|
|
23
23
|
positionLabel
|
|
24
|
-
|
|
24
|
+
) }.`
|
|
25
25
|
: undefined,
|
|
26
26
|
isLocked ? __( 'This block is locked.' ) : undefined,
|
|
27
27
|
]
|
|
@@ -227,7 +227,10 @@ const MediaReplaceFlow = ( {
|
|
|
227
227
|
{ onToggleFeaturedImage && (
|
|
228
228
|
<MenuItem
|
|
229
229
|
icon={ postFeaturedImage }
|
|
230
|
-
onClick={
|
|
230
|
+
onClick={ () => {
|
|
231
|
+
onToggleFeaturedImage();
|
|
232
|
+
onClose();
|
|
233
|
+
} }
|
|
231
234
|
isPressed={ useFeaturedImage }
|
|
232
235
|
>
|
|
233
236
|
{ __( 'Use featured image' ) }
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { act,
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { act, screen, waitFor } from '@testing-library/react';
|
|
3
|
+
import { render } from 'vitest-browser-react';
|
|
3
4
|
import { createElement } from '@wordpress/element';
|
|
4
5
|
import NavigableToolbar from '..';
|
|
5
6
|
|
|
@@ -19,13 +20,11 @@ function createToolbar( { hidden = false, extraChildren = 0 } = {} ) {
|
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
describe( 'NavigableToolbar', () => {
|
|
22
|
-
afterEach( cleanup );
|
|
23
|
-
|
|
24
23
|
it( 'does not reclassify a visibility-hidden toolbar when its subtree changes', async () => {
|
|
25
|
-
const { rerender } = render( createToolbar() );
|
|
24
|
+
const { rerender } = await render( createToolbar() );
|
|
26
25
|
const initialToolbar = screen.getByRole( 'toolbar' );
|
|
27
26
|
|
|
28
|
-
rerender( createToolbar( { extraChildren: 1 } ) );
|
|
27
|
+
await rerender( createToolbar( { extraChildren: 1 } ) );
|
|
29
28
|
|
|
30
29
|
await waitFor( () => {
|
|
31
30
|
expect( screen.getByRole( 'toolbar' ) ).not.toBe( initialToolbar );
|
|
@@ -33,7 +32,7 @@ describe( 'NavigableToolbar', () => {
|
|
|
33
32
|
expect( console ).toHaveWarned();
|
|
34
33
|
const toolbar = screen.getByRole( 'toolbar' );
|
|
35
34
|
|
|
36
|
-
rerender( createToolbar( { hidden: true, extraChildren: 2 } ) );
|
|
35
|
+
await rerender( createToolbar( { hidden: true, extraChildren: 2 } ) );
|
|
37
36
|
|
|
38
37
|
await act(
|
|
39
38
|
() =>
|
|
@@ -14,9 +14,11 @@ _Required._ Function called when the text value changes.
|
|
|
14
14
|
|
|
15
15
|
You can also pass any extra prop to the textarea rendered by this component.
|
|
16
16
|
|
|
17
|
+
Automatic sizing uses CSS `field-sizing: content`. In browsers that support it, `rows` and `cols` do not set the field's size. Use CSS `min-height` and `max-height` to constrain its height. In browsers without support, the field keeps its native size and scrolls when its content overflows.
|
|
18
|
+
|
|
17
19
|
### `ref: Object`
|
|
18
20
|
|
|
19
|
-
_Optional._ The component forwards the `ref` property to the `
|
|
21
|
+
_Optional._ The component forwards the `ref` property to the `textarea` element.
|
|
20
22
|
|
|
21
23
|
## Example
|
|
22
24
|
|
|
@@ -44,4 +46,3 @@ registerBlockType( /* ... */, {
|
|
|
44
46
|
},
|
|
45
47
|
} );
|
|
46
48
|
```
|
|
47
|
-
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import TextareaAutosize from 'react-autosize-textarea';
|
|
2
1
|
import clsx from 'clsx';
|
|
3
2
|
import { forwardRef } from '@wordpress/element';
|
|
4
3
|
import EditableText from '../editable-text';
|
|
@@ -37,7 +36,7 @@ import EditableText from '../editable-text';
|
|
|
37
36
|
* @param {Object} props Component props.
|
|
38
37
|
* @param {string} props.value String value of the textarea.
|
|
39
38
|
* @param {Function} props.onChange Function called when the text value changes.
|
|
40
|
-
* @param {Object} [props.ref] The component forwards the `ref` property to the `
|
|
39
|
+
* @param {Object} [props.ref] The component forwards the `ref` property to the `textarea` element.
|
|
41
40
|
* @return {Element} Plain text component
|
|
42
41
|
*/
|
|
43
42
|
const PlainText = forwardRef( ( { __experimentalVersion, ...props }, ref ) => {
|
|
@@ -48,7 +47,7 @@ const PlainText = forwardRef( ( { __experimentalVersion, ...props }, ref ) => {
|
|
|
48
47
|
const { className, onChange, ...remainingProps } = props;
|
|
49
48
|
|
|
50
49
|
return (
|
|
51
|
-
<
|
|
50
|
+
<textarea
|
|
52
51
|
ref={ ref }
|
|
53
52
|
className={ clsx( 'block-editor-plain-text', className ) }
|
|
54
53
|
onChange={ ( event ) => onChange( event.target.value ) }
|
|
@@ -91,7 +91,7 @@ export default function PresetInputControl( {
|
|
|
91
91
|
const hasPresets = marks.length > 0;
|
|
92
92
|
const showRangeControl = presets.length <= RANGE_CONTROL_MAX_SIZE;
|
|
93
93
|
|
|
94
|
-
const allPlaceholder = isMixed ? __( 'Mixed' ) : placeholder ?? null;
|
|
94
|
+
const allPlaceholder = isMixed ? __( 'Mixed' ) : ( placeholder ?? null );
|
|
95
95
|
|
|
96
96
|
const [ minValue, setMinValue ] = useState( minimumCustomValue );
|
|
97
97
|
const [ showCustomValueControl, setShowCustomValueControl ] = useState(
|
|
@@ -129,7 +129,7 @@ export default function PresetInputControl( {
|
|
|
129
129
|
{
|
|
130
130
|
name: ! isMixed
|
|
131
131
|
? // translators: %s: A custom measurement, e.g. a number followed by a unit like 12px.
|
|
132
|
-
|
|
132
|
+
sprintf( __( 'Custom (%s)' ), value )
|
|
133
133
|
: __( 'Mixed' ),
|
|
134
134
|
slug: 'custom',
|
|
135
135
|
size: value,
|