@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/block-editor",
|
|
3
|
-
"version": "17.1.0",
|
|
3
|
+
"version": "17.2.1-next.v.202609171837.0",
|
|
4
4
|
"description": "Generic block editor.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -60,65 +60,64 @@
|
|
|
60
60
|
],
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@react-spring/web": "^9.4.5",
|
|
63
|
-
"@wordpress/a11y": "^4.55.0",
|
|
64
|
-
"@wordpress/base-styles": "^13.1.0",
|
|
65
|
-
"@wordpress/blob": "^4.55.0",
|
|
66
|
-
"@wordpress/block-serialization-default-parser": "^5.55.0",
|
|
67
|
-
"@wordpress/blocks": "^16.
|
|
68
|
-
"@wordpress/commands": "^1.55.0",
|
|
69
|
-
"@wordpress/components": "^
|
|
70
|
-
"@wordpress/compose": "^8.8.0",
|
|
71
|
-
"@wordpress/data": "^10.
|
|
72
|
-
"@wordpress/dataviews": "^19.0.0",
|
|
73
|
-
"@wordpress/date": "^5.55.0",
|
|
74
|
-
"@wordpress/deprecated": "^4.55.0",
|
|
75
|
-
"@wordpress/dom": "^4.55.0",
|
|
76
|
-
"@wordpress/element": "^8.7.0",
|
|
77
|
-
"@wordpress/global-styles-engine": "^1.
|
|
78
|
-
"@wordpress/hooks": "^4.55.0",
|
|
79
|
-
"@wordpress/html-entities": "^4.55.0",
|
|
80
|
-
"@wordpress/i18n": "^6.28.0",
|
|
81
|
-
"@wordpress/icons": "^
|
|
82
|
-
"@wordpress/image-cropper": "^1.19.0",
|
|
83
|
-
"@wordpress/interactivity": "^6.55.0",
|
|
84
|
-
"@wordpress/is-shallow-equal": "^5.55.0",
|
|
85
|
-
"@wordpress/kebab-case": "^1.2.0",
|
|
86
|
-
"@wordpress/keyboard-shortcuts": "^5.
|
|
87
|
-
"@wordpress/keycodes": "^4.
|
|
88
|
-
"@wordpress/notices": "^5.55.0",
|
|
89
|
-
"@wordpress/preferences": "^4.55.0",
|
|
90
|
-
"@wordpress/priority-queue": "^3.55.0",
|
|
91
|
-
"@wordpress/private-apis": "^1.55.0",
|
|
92
|
-
"@wordpress/rich-text": "^7.55.0",
|
|
93
|
-
"@wordpress/style-engine": "^2.
|
|
94
|
-
"@wordpress/token-list": "^3.55.0",
|
|
95
|
-
"@wordpress/ui": "^0.
|
|
96
|
-
"@wordpress/upload-media": "^0.40.0",
|
|
97
|
-
"@wordpress/url": "^4.55.0",
|
|
98
|
-
"@wordpress/warning": "^3.55.0",
|
|
63
|
+
"@wordpress/a11y": "^4.55.1-next.v.202609171837.0",
|
|
64
|
+
"@wordpress/base-styles": "^13.2.1-next.v.202609171837.0",
|
|
65
|
+
"@wordpress/blob": "^4.55.1-next.v.202609171837.0",
|
|
66
|
+
"@wordpress/block-serialization-default-parser": "^5.55.1-next.v.202609171837.0",
|
|
67
|
+
"@wordpress/blocks": "^16.1.1-next.v.202609171837.0",
|
|
68
|
+
"@wordpress/commands": "^1.55.2-next.v.202609171837.0",
|
|
69
|
+
"@wordpress/components": "^41.0.1-next.v.202609171837.0",
|
|
70
|
+
"@wordpress/compose": "^8.8.2-next.v.202609171837.0",
|
|
71
|
+
"@wordpress/data": "^10.56.1-next.v.202609171837.0",
|
|
72
|
+
"@wordpress/dataviews": "^19.0.2-next.v.202609171837.0",
|
|
73
|
+
"@wordpress/date": "^5.55.1-next.v.202609171837.0",
|
|
74
|
+
"@wordpress/deprecated": "^4.55.1-next.v.202609171837.0",
|
|
75
|
+
"@wordpress/dom": "^4.55.2-next.v.202609171837.0",
|
|
76
|
+
"@wordpress/element": "^8.7.1-next.v.202609171837.0",
|
|
77
|
+
"@wordpress/global-styles-engine": "^1.23.1-next.v.202609171837.0",
|
|
78
|
+
"@wordpress/hooks": "^4.55.1-next.v.202609171837.0",
|
|
79
|
+
"@wordpress/html-entities": "^4.55.1-next.v.202609171837.0",
|
|
80
|
+
"@wordpress/i18n": "^6.28.1-next.v.202609171837.0",
|
|
81
|
+
"@wordpress/icons": "^17.0.1-next.v.202609171837.0",
|
|
82
|
+
"@wordpress/image-cropper": "^1.19.1-next.v.202609171837.0",
|
|
83
|
+
"@wordpress/interactivity": "^6.55.1-next.v.202609171837.0",
|
|
84
|
+
"@wordpress/is-shallow-equal": "^5.55.1-next.v.202609171837.0",
|
|
85
|
+
"@wordpress/kebab-case": "^1.2.1-next.v.202609171837.0",
|
|
86
|
+
"@wordpress/keyboard-shortcuts": "^5.56.1-next.v.202609171837.0",
|
|
87
|
+
"@wordpress/keycodes": "^4.56.1-next.v.202609171837.0",
|
|
88
|
+
"@wordpress/notices": "^5.55.1-next.v.202609171837.0",
|
|
89
|
+
"@wordpress/preferences": "^4.55.1-next.v.202609171837.0",
|
|
90
|
+
"@wordpress/priority-queue": "^3.55.1-next.v.202609171837.0",
|
|
91
|
+
"@wordpress/private-apis": "^1.55.1-next.v.202609171837.0",
|
|
92
|
+
"@wordpress/rich-text": "^7.55.2-next.v.202609171837.0",
|
|
93
|
+
"@wordpress/style-engine": "^2.56.1-next.v.202609171837.0",
|
|
94
|
+
"@wordpress/token-list": "^3.55.1-next.v.202609171837.0",
|
|
95
|
+
"@wordpress/ui": "^0.23.1-next.v.202609171837.0",
|
|
96
|
+
"@wordpress/upload-media": "^0.40.2-next.v.202609171837.0",
|
|
97
|
+
"@wordpress/url": "^4.55.1-next.v.202609171837.0",
|
|
98
|
+
"@wordpress/warning": "^3.55.1-next.v.202609171837.0",
|
|
99
99
|
"change-case": "^4.1.2",
|
|
100
100
|
"clsx": "^2.1.1",
|
|
101
|
-
"colord": "^2.9.
|
|
101
|
+
"colord": "^2.9.4",
|
|
102
102
|
"diff": "^8.0.3",
|
|
103
103
|
"fast-deep-equal": "^3.1.3",
|
|
104
104
|
"parsel-js": "^1.1.2",
|
|
105
105
|
"postcss": "^8.4.38",
|
|
106
106
|
"postcss-prefix-selector": "^1.16.0",
|
|
107
107
|
"postcss-urlrebase": "^1.4.0",
|
|
108
|
-
"react-autosize-textarea": "^7.1.0",
|
|
109
108
|
"react-easy-crop": "^5.4.2",
|
|
110
109
|
"remove-accents": "^0.5.0"
|
|
111
110
|
},
|
|
112
111
|
"devDependencies": {
|
|
113
|
-
"@ariakit/test": "^0.7.4",
|
|
114
112
|
"@testing-library/dom": "^10.4.1",
|
|
115
113
|
"@testing-library/react": "^16.3.3",
|
|
116
114
|
"@testing-library/user-event": "^14.6.1",
|
|
117
115
|
"@types/postcss-prefix-selector": "^1.16.3",
|
|
118
|
-
"@wordpress/block-library": "^11.0.0",
|
|
116
|
+
"@wordpress/block-library": "^11.0.2-next.v.202609171837.0",
|
|
119
117
|
"deep-freeze": "^0.0.1",
|
|
120
118
|
"storybook": "^10.5.3",
|
|
121
|
-
"vitest": "^5.0.0"
|
|
119
|
+
"vitest": "^5.0.0",
|
|
120
|
+
"vitest-browser-react": "^2.3.0"
|
|
122
121
|
},
|
|
123
122
|
"peerDependencies": {
|
|
124
123
|
"@types/react": "^18 || ^19",
|
|
@@ -133,5 +132,5 @@
|
|
|
133
132
|
"publishConfig": {
|
|
134
133
|
"access": "public"
|
|
135
134
|
},
|
|
136
|
-
"gitHead": "
|
|
135
|
+
"gitHead": "7fc9f6676debc888d2f071d17cb71837040d4b48"
|
|
137
136
|
}
|
|
@@ -71,11 +71,11 @@ function createBlockCompleter() {
|
|
|
71
71
|
categories,
|
|
72
72
|
collections,
|
|
73
73
|
filterValue
|
|
74
|
-
|
|
74
|
+
)
|
|
75
75
|
: orderInserterBlockItems(
|
|
76
76
|
orderBy( items, 'frecency', 'desc' ),
|
|
77
77
|
prioritizedBlocks
|
|
78
|
-
|
|
78
|
+
);
|
|
79
79
|
|
|
80
80
|
return initialFilteredItems
|
|
81
81
|
.filter( ( item ) => item.id !== selectedBlockId )
|
|
@@ -133,7 +133,7 @@ function createBlockCompleter() {
|
|
|
133
133
|
syncStatus === 'unsynced'
|
|
134
134
|
? ( blocks ?? [] ).map( ( block ) =>
|
|
135
135
|
cloneBlock( block )
|
|
136
|
-
|
|
136
|
+
)
|
|
137
137
|
: createBlock(
|
|
138
138
|
name,
|
|
139
139
|
initialAttributes,
|
|
@@ -141,7 +141,7 @@ function createBlockCompleter() {
|
|
|
141
141
|
innerBlocks
|
|
142
142
|
),
|
|
143
143
|
innerContent
|
|
144
|
-
|
|
144
|
+
),
|
|
145
145
|
};
|
|
146
146
|
},
|
|
147
147
|
};
|
|
@@ -30,7 +30,7 @@ import { getResolvedValue } from '@wordpress/global-styles-engine';
|
|
|
30
30
|
import { hasBackgroundImageValue } from '../global-styles/background-panel';
|
|
31
31
|
import {
|
|
32
32
|
InheritanceResetButton,
|
|
33
|
-
|
|
33
|
+
isGlobalStylesInheritanceIndicatorUIEnabled,
|
|
34
34
|
} from '../global-styles/inheritance';
|
|
35
35
|
import { setImmutably } from '../../utils/object';
|
|
36
36
|
import MediaReplaceFlow from '../media-replace-flow';
|
|
@@ -160,7 +160,7 @@ function InspectorImagePreviewItem( {
|
|
|
160
160
|
/* translators: %s: file name */
|
|
161
161
|
__( 'Background image: %s' ),
|
|
162
162
|
filename || label
|
|
163
|
-
|
|
163
|
+
)
|
|
164
164
|
: __( 'No background image selected' ) }
|
|
165
165
|
</VisuallyHidden>
|
|
166
166
|
</FlexBlock>
|
|
@@ -687,7 +687,7 @@ export default function BackgroundImagePanel( {
|
|
|
687
687
|
inheritedValue = value,
|
|
688
688
|
settings,
|
|
689
689
|
defaultValues = {},
|
|
690
|
-
showInheritanceLabelIndicators =
|
|
690
|
+
showInheritanceLabelIndicators = isGlobalStylesInheritanceIndicatorUIEnabled(),
|
|
691
691
|
} ) {
|
|
692
692
|
/*
|
|
693
693
|
* Resolve inherited `ref` pointers for background controls.
|
|
@@ -2,6 +2,8 @@ import { afterEach, describe, expect, test, vi } from 'vitest';
|
|
|
2
2
|
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import userEvent from '@testing-library/user-event';
|
|
4
4
|
import BlockAlignmentUI from '../ui';
|
|
5
|
+
import { LayoutProvider } from '../../block-list/layout';
|
|
6
|
+
import { BlockEditorProvider } from '../../provider';
|
|
5
7
|
|
|
6
8
|
describe( 'BlockAlignmentUI', () => {
|
|
7
9
|
const alignment = 'left';
|
|
@@ -115,3 +117,268 @@ describe( 'BlockAlignmentUI', () => {
|
|
|
115
117
|
expect( onChange ).toHaveBeenCalledWith( 'center' );
|
|
116
118
|
} );
|
|
117
119
|
} );
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* A theme offering both wide and full. Without one, those alignments were never
|
|
123
|
+
* on the table and are not reported as withheld.
|
|
124
|
+
*/
|
|
125
|
+
const THEME_LAYOUT = { contentSize: '600px', wideSize: '1200px' };
|
|
126
|
+
|
|
127
|
+
function renderWithTheme( ui, layout = THEME_LAYOUT, settings = {} ) {
|
|
128
|
+
return render(
|
|
129
|
+
<BlockEditorProvider
|
|
130
|
+
value={ [] }
|
|
131
|
+
settings={ { __experimentalFeatures: { layout }, ...settings } }
|
|
132
|
+
>
|
|
133
|
+
{ ui }
|
|
134
|
+
</BlockEditorProvider>
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
describe( 'BlockAlignmentUI unavailable alignments', () => {
|
|
139
|
+
// The block supports every alignment; the default flow layout offers only
|
|
140
|
+
// none/left/center/right, so wide and full are taken away by the parent.
|
|
141
|
+
const controls = [ 'left', 'center', 'right', 'wide', 'full' ];
|
|
142
|
+
const onChange = vi.fn();
|
|
143
|
+
|
|
144
|
+
afterEach( () => {
|
|
145
|
+
onChange.mockClear();
|
|
146
|
+
} );
|
|
147
|
+
|
|
148
|
+
async function openMenu() {
|
|
149
|
+
const user = userEvent.setup();
|
|
150
|
+
renderWithTheme(
|
|
151
|
+
<BlockAlignmentUI onChange={ onChange } controls={ controls } />
|
|
152
|
+
);
|
|
153
|
+
await user.click(
|
|
154
|
+
screen.getByRole( 'button', { name: 'Align block' } )
|
|
155
|
+
);
|
|
156
|
+
return user;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
test( 'lists them rather than omitting them, in their usual position', async () => {
|
|
160
|
+
await openMenu();
|
|
161
|
+
|
|
162
|
+
expect(
|
|
163
|
+
screen
|
|
164
|
+
.getAllByRole( 'menuitemradio' )
|
|
165
|
+
.map( ( item ) => item.textContent )
|
|
166
|
+
).toEqual( [
|
|
167
|
+
'None',
|
|
168
|
+
'Wide widthNot available',
|
|
169
|
+
'Full widthNot available',
|
|
170
|
+
'Align left',
|
|
171
|
+
'Align center',
|
|
172
|
+
'Align right',
|
|
173
|
+
] );
|
|
174
|
+
} );
|
|
175
|
+
|
|
176
|
+
test( 'marks them as disabled while keeping them reachable', async () => {
|
|
177
|
+
await openMenu();
|
|
178
|
+
|
|
179
|
+
const wide = screen.getByRole( 'menuitemradio', {
|
|
180
|
+
name: /Wide width/,
|
|
181
|
+
} );
|
|
182
|
+
|
|
183
|
+
expect( wide ).toHaveAttribute( 'aria-disabled', 'true' );
|
|
184
|
+
// `disabled` would remove it from the accessibility tree entirely,
|
|
185
|
+
// taking the explanation with it.
|
|
186
|
+
expect( wide ).toBeEnabled();
|
|
187
|
+
} );
|
|
188
|
+
|
|
189
|
+
test( 'does not change the alignment when one is chosen', async () => {
|
|
190
|
+
const user = await openMenu();
|
|
191
|
+
|
|
192
|
+
await user.click(
|
|
193
|
+
screen.getByRole( 'menuitemradio', { name: /Full width/ } )
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
expect( onChange ).not.toHaveBeenCalled();
|
|
197
|
+
} );
|
|
198
|
+
|
|
199
|
+
test( 'leaves the menu alone when the layout offers every alignment', async () => {
|
|
200
|
+
const user = userEvent.setup();
|
|
201
|
+
renderWithTheme(
|
|
202
|
+
<LayoutProvider
|
|
203
|
+
value={ {
|
|
204
|
+
type: 'constrained',
|
|
205
|
+
contentSize: '600px',
|
|
206
|
+
wideSize: '1200px',
|
|
207
|
+
} }
|
|
208
|
+
>
|
|
209
|
+
<BlockAlignmentUI onChange={ onChange } controls={ controls } />
|
|
210
|
+
</LayoutProvider>
|
|
211
|
+
);
|
|
212
|
+
await user.click(
|
|
213
|
+
screen.getByRole( 'button', { name: 'Align block' } )
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
expect( screen.queryAllByText( 'Not available' ) ).toHaveLength( 0 );
|
|
217
|
+
expect(
|
|
218
|
+
screen
|
|
219
|
+
.getAllByRole( 'menuitemradio' )
|
|
220
|
+
.map( ( item ) => item.textContent )
|
|
221
|
+
).toEqual( [
|
|
222
|
+
'NoneMax 600px wide',
|
|
223
|
+
'Wide widthMax 1200px wide',
|
|
224
|
+
'Full width',
|
|
225
|
+
'Align left',
|
|
226
|
+
'Align center',
|
|
227
|
+
'Align right',
|
|
228
|
+
] );
|
|
229
|
+
} );
|
|
230
|
+
} );
|
|
231
|
+
|
|
232
|
+
describe( 'BlockAlignmentUI with no available alignments', () => {
|
|
233
|
+
// Group supports only wide and full, so a flow layout leaves it nothing.
|
|
234
|
+
const controls = [ 'wide', 'full' ];
|
|
235
|
+
const onChange = vi.fn();
|
|
236
|
+
|
|
237
|
+
afterEach( () => {
|
|
238
|
+
onChange.mockClear();
|
|
239
|
+
} );
|
|
240
|
+
|
|
241
|
+
test( 'still offers None alongside what the layout withholds', async () => {
|
|
242
|
+
const user = userEvent.setup();
|
|
243
|
+
renderWithTheme(
|
|
244
|
+
<BlockAlignmentUI onChange={ onChange } controls={ controls } />
|
|
245
|
+
);
|
|
246
|
+
|
|
247
|
+
await user.click(
|
|
248
|
+
screen.getByRole( 'button', { name: 'Align block' } )
|
|
249
|
+
);
|
|
250
|
+
|
|
251
|
+
expect(
|
|
252
|
+
screen
|
|
253
|
+
.getAllByRole( 'menuitemradio' )
|
|
254
|
+
.map( ( item ) => item.textContent )
|
|
255
|
+
).toEqual( [
|
|
256
|
+
'None',
|
|
257
|
+
'Wide widthNot available',
|
|
258
|
+
'Full widthNot available',
|
|
259
|
+
] );
|
|
260
|
+
} );
|
|
261
|
+
|
|
262
|
+
test( 'renders nothing when the layout places children itself', () => {
|
|
263
|
+
const { container } = renderWithTheme(
|
|
264
|
+
<LayoutProvider value={ { type: 'flex' } }>
|
|
265
|
+
<BlockAlignmentUI onChange={ onChange } controls={ controls } />
|
|
266
|
+
</LayoutProvider>
|
|
267
|
+
);
|
|
268
|
+
|
|
269
|
+
expect( container ).toBeEmptyDOMElement();
|
|
270
|
+
} );
|
|
271
|
+
} );
|
|
272
|
+
|
|
273
|
+
describe( 'BlockAlignmentUI when the theme withholds alignments', () => {
|
|
274
|
+
// A theme offering neither is curating its own options globally, so those
|
|
275
|
+
// alignments stay hidden rather than being reported as unavailable.
|
|
276
|
+
const controls = [ 'left', 'center', 'right', 'wide', 'full' ];
|
|
277
|
+
const onChange = vi.fn();
|
|
278
|
+
|
|
279
|
+
afterEach( () => {
|
|
280
|
+
onChange.mockClear();
|
|
281
|
+
} );
|
|
282
|
+
|
|
283
|
+
async function openMenuForTheme( layout ) {
|
|
284
|
+
const user = userEvent.setup();
|
|
285
|
+
renderWithTheme(
|
|
286
|
+
<BlockAlignmentUI onChange={ onChange } controls={ controls } />,
|
|
287
|
+
layout
|
|
288
|
+
);
|
|
289
|
+
await user.click(
|
|
290
|
+
screen.getByRole( 'button', { name: 'Align block' } )
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
function menuItems() {
|
|
295
|
+
return screen
|
|
296
|
+
.getAllByRole( 'menuitemradio' )
|
|
297
|
+
.map( ( item ) => item.textContent );
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
test( 'hides both when the theme sets no layout at all', async () => {
|
|
301
|
+
// No provider at all, so the store holds no global layout.
|
|
302
|
+
const user = userEvent.setup();
|
|
303
|
+
render(
|
|
304
|
+
<BlockAlignmentUI onChange={ onChange } controls={ controls } />
|
|
305
|
+
);
|
|
306
|
+
await user.click(
|
|
307
|
+
screen.getByRole( 'button', { name: 'Align block' } )
|
|
308
|
+
);
|
|
309
|
+
|
|
310
|
+
expect( menuItems() ).toEqual( [
|
|
311
|
+
'None',
|
|
312
|
+
'Align left',
|
|
313
|
+
'Align center',
|
|
314
|
+
'Align right',
|
|
315
|
+
] );
|
|
316
|
+
} );
|
|
317
|
+
|
|
318
|
+
test( 'hides Wide when the theme sets no wide size', async () => {
|
|
319
|
+
await openMenuForTheme( { contentSize: '600px' } );
|
|
320
|
+
|
|
321
|
+
expect( menuItems() ).toEqual( [
|
|
322
|
+
'None',
|
|
323
|
+
'Full widthNot available',
|
|
324
|
+
'Align left',
|
|
325
|
+
'Align center',
|
|
326
|
+
'Align right',
|
|
327
|
+
] );
|
|
328
|
+
} );
|
|
329
|
+
} );
|
|
330
|
+
|
|
331
|
+
describe( 'BlockAlignmentUI on a theme without layout support', () => {
|
|
332
|
+
// Classic themes opt into wide alignments with `add_theme_support`, which
|
|
333
|
+
// arrives as the `alignWide` setting. There is no layout to withhold
|
|
334
|
+
// anything, so the menu either offers wide and full or leaves them out.
|
|
335
|
+
const controls = [ 'left', 'center', 'right', 'wide', 'full' ];
|
|
336
|
+
const onChange = vi.fn();
|
|
337
|
+
|
|
338
|
+
afterEach( () => {
|
|
339
|
+
onChange.mockClear();
|
|
340
|
+
} );
|
|
341
|
+
|
|
342
|
+
async function openMenuWithAlignWide( alignWide ) {
|
|
343
|
+
const user = userEvent.setup();
|
|
344
|
+
renderWithTheme(
|
|
345
|
+
<BlockAlignmentUI onChange={ onChange } controls={ controls } />,
|
|
346
|
+
undefined,
|
|
347
|
+
{ supportsLayout: false, alignWide }
|
|
348
|
+
);
|
|
349
|
+
await user.click(
|
|
350
|
+
screen.getByRole( 'button', { name: 'Align block' } )
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
function menuItems() {
|
|
355
|
+
return screen
|
|
356
|
+
.getAllByRole( 'menuitemradio' )
|
|
357
|
+
.map( ( item ) => item.textContent );
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
test( 'offers both when the theme supports wide alignments', async () => {
|
|
361
|
+
await openMenuWithAlignWide( true );
|
|
362
|
+
|
|
363
|
+
expect( screen.queryAllByText( 'Not available' ) ).toHaveLength( 0 );
|
|
364
|
+
expect( menuItems() ).toEqual( [
|
|
365
|
+
'None',
|
|
366
|
+
'Align left',
|
|
367
|
+
'Align center',
|
|
368
|
+
'Align right',
|
|
369
|
+
'Wide width',
|
|
370
|
+
'Full width',
|
|
371
|
+
] );
|
|
372
|
+
} );
|
|
373
|
+
|
|
374
|
+
test( 'hides both when the theme does not support wide alignments', async () => {
|
|
375
|
+
await openMenuWithAlignWide( false );
|
|
376
|
+
|
|
377
|
+
expect( menuItems() ).toEqual( [
|
|
378
|
+
'None',
|
|
379
|
+
'Align left',
|
|
380
|
+
'Align center',
|
|
381
|
+
'Align right',
|
|
382
|
+
] );
|
|
383
|
+
} );
|
|
384
|
+
} );
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
MenuGroup,
|
|
7
7
|
MenuItem,
|
|
8
8
|
} from '@wordpress/components';
|
|
9
|
-
import
|
|
9
|
+
import { useAlignmentMenu } from './use-available-alignments';
|
|
10
10
|
import { BLOCK_ALIGNMENTS_CONTROLS, DEFAULT_CONTROL } from './constants';
|
|
11
11
|
|
|
12
12
|
function BlockAlignmentUI( {
|
|
@@ -18,13 +18,39 @@ function BlockAlignmentUI( {
|
|
|
18
18
|
label = __( 'Align block' ),
|
|
19
19
|
description,
|
|
20
20
|
} ) {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
/*
|
|
22
|
+
* Wide and Full are the alignments users look for and fail to find. When a
|
|
23
|
+
* parent layout does not offer them they disappear from this menu with no
|
|
24
|
+
* explanation, which reads as the editor losing the setting. List them as
|
|
25
|
+
* unavailable instead, so the menu says why it cannot do what was asked.
|
|
26
|
+
*/
|
|
27
|
+
const { enabled: enabledControls, unavailable: unavailableControls } =
|
|
28
|
+
useAlignmentMenu( controls );
|
|
23
29
|
|
|
24
|
-
if ( !
|
|
30
|
+
if ( ! enabledControls.length && ! unavailableControls.length ) {
|
|
25
31
|
return null;
|
|
26
32
|
}
|
|
27
33
|
|
|
34
|
+
/*
|
|
35
|
+
* A block whose alignments are all unavailable still needs somewhere to
|
|
36
|
+
* anchor them, and `None` is always a valid choice for it.
|
|
37
|
+
*/
|
|
38
|
+
const menuControls = enabledControls.length
|
|
39
|
+
? [ ...enabledControls ]
|
|
40
|
+
: [ { name: 'none' } ];
|
|
41
|
+
const enabledNames = menuControls.map( ( { name } ) => name );
|
|
42
|
+
|
|
43
|
+
// Unavailable alignments sit where they would have sat had they been
|
|
44
|
+
// offered, which is directly after `none`.
|
|
45
|
+
menuControls.splice(
|
|
46
|
+
enabledNames.indexOf( 'none' ) + 1,
|
|
47
|
+
0,
|
|
48
|
+
...unavailableControls.map( ( name ) => ( {
|
|
49
|
+
name,
|
|
50
|
+
isUnavailable: true,
|
|
51
|
+
} ) )
|
|
52
|
+
);
|
|
53
|
+
|
|
28
54
|
function onChangeAlignment( align ) {
|
|
29
55
|
onChange( [ value, 'none' ].includes( align ) ? undefined : align );
|
|
30
56
|
}
|
|
@@ -53,20 +79,27 @@ function BlockAlignmentUI( {
|
|
|
53
79
|
onClick: () => onChangeAlignment( controlName ),
|
|
54
80
|
};
|
|
55
81
|
} ),
|
|
56
|
-
|
|
82
|
+
}
|
|
57
83
|
: {
|
|
58
84
|
toggleProps: description ? { description } : {},
|
|
59
85
|
children: ( { onClose } ) => {
|
|
60
86
|
return (
|
|
61
87
|
<>
|
|
62
88
|
<MenuGroup className="block-editor-block-alignment-control__menu-group">
|
|
63
|
-
{
|
|
64
|
-
( {
|
|
89
|
+
{ menuControls.map(
|
|
90
|
+
( {
|
|
91
|
+
name: controlName,
|
|
92
|
+
info,
|
|
93
|
+
isUnavailable,
|
|
94
|
+
} ) => {
|
|
65
95
|
const { icon, title } =
|
|
66
96
|
BLOCK_ALIGNMENTS_CONTROLS[
|
|
67
97
|
controlName
|
|
68
98
|
];
|
|
69
99
|
// If no value is provided, mark as selected the `none` option.
|
|
100
|
+
// An unavailable alignment can still be the saved value, and
|
|
101
|
+
// showing it as selected is how the menu says the setting
|
|
102
|
+
// exists but has no effect in this position.
|
|
70
103
|
const isSelected =
|
|
71
104
|
controlName === value ||
|
|
72
105
|
( ! value &&
|
|
@@ -83,6 +116,7 @@ function BlockAlignmentUI( {
|
|
|
83
116
|
}
|
|
84
117
|
) }
|
|
85
118
|
isSelected={ isSelected }
|
|
119
|
+
disabled={ isUnavailable }
|
|
86
120
|
onClick={ () => {
|
|
87
121
|
onChangeAlignment(
|
|
88
122
|
controlName
|
|
@@ -90,7 +124,11 @@ function BlockAlignmentUI( {
|
|
|
90
124
|
onClose();
|
|
91
125
|
} }
|
|
92
126
|
role="menuitemradio"
|
|
93
|
-
info={
|
|
127
|
+
info={
|
|
128
|
+
isUnavailable
|
|
129
|
+
? __( 'Not available' )
|
|
130
|
+
: info
|
|
131
|
+
}
|
|
94
132
|
>
|
|
95
133
|
{ title }
|
|
96
134
|
</MenuItem>
|
|
@@ -101,7 +139,7 @@ function BlockAlignmentUI( {
|
|
|
101
139
|
</>
|
|
102
140
|
);
|
|
103
141
|
},
|
|
104
|
-
|
|
142
|
+
};
|
|
105
143
|
|
|
106
144
|
return <UIComponent { ...commonProps } { ...extraProps } />;
|
|
107
145
|
}
|