@wordpress/block-editor 9.8.1-next.957ca95e4c.0 → 10.0.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 +6 -0
- package/README.md +13 -1
- package/build/components/alignment-control/ui.js +6 -5
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-actions/index.js +5 -9
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/ui.js +5 -5
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-content-overlay/index.js +2 -4
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-draggable/draggable-chip.js +2 -1
- package/build/components/block-draggable/draggable-chip.js.map +1 -1
- package/build/components/block-edit/edit.js +1 -1
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-inspector/index.js +125 -17
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block.js +40 -9
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/index.js +4 -4
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +14 -11
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js +3 -2
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -9
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-is-hovered.js +1 -2
- package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +7 -12
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list-appender/index.js +20 -21
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-list-appender/index.native.js +1 -7
- package/build/components/block-list-appender/index.native.js.map +1 -1
- package/build/components/block-lock/use-block-lock.js +3 -1
- package/build/components/block-lock/use-block-lock.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +20 -10
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mover/button.js +4 -6
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +4 -6
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +24 -8
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-popover/inbetween.js +58 -16
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +3 -2
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +4 -2
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +3 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +3 -1
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/preview-panel.js +7 -1
- package/build/components/block-styles/preview-panel.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.js +114 -25
- package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.js +9 -8
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +3 -2
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +13 -5
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +33 -15
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +4 -9
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +9 -8
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +13 -8
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +71 -0
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
- package/build/components/block-vertical-alignment-control/ui.js +5 -2
- package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +1 -1
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/iframe/index.js +31 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inner-blocks/default-block-appender.js +1 -7
- package/build/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +2 -2
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -5
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/index.js +3 -6
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/library.js +14 -3
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +21 -8
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/preview-panel.js +1 -1
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter/tabs.js +11 -4
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/link-control/link-preview.js +1 -1
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +6 -3
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/search-item.js +36 -5
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/list-view/block.js +23 -11
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +19 -2
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +8 -4
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +0 -1
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/provider/use-block-sync.js +1 -7
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +1 -1
- package/build/components/publish-date-time-picker/index.js.map +1 -1
- package/build/components/rich-text/index.js +27 -19
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +11 -20
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/text-decoration-control/index.js +1 -1
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +1 -1
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/tool-selector/index.js +6 -11
- package/build/components/tool-selector/index.js.map +1 -1
- package/build/components/url-popover/index.js +1 -1
- package/build/components/url-popover/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +7 -4
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +9 -28
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +1 -7
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/hooks/align.js +14 -2
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/color-panel.js +2 -1
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/content-lock-ui.js +145 -0
- package/build/hooks/content-lock-ui.js.map +1 -0
- package/build/hooks/duotone.js +8 -1
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +14 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +11 -9
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/metadata-name.js +55 -0
- package/build/hooks/metadata-name.js.map +1 -0
- package/build/hooks/metadata.js +65 -0
- package/build/hooks/metadata.js.map +1 -0
- package/build/hooks/use-typography-props.js +51 -0
- package/build/hooks/use-typography-props.js.map +1 -0
- package/build/hooks/utils.js +3 -1
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/constrained.js +59 -20
- package/build/layouts/constrained.js.map +1 -1
- package/build/store/actions.js +65 -21
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +39 -18
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +95 -9
- package/build/store/selectors.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +1 -1
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +6 -5
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-actions/index.js +5 -8
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js +5 -5
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js +2 -4
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-draggable/draggable-chip.js +2 -1
- package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
- package/build-module/components/block-edit/edit.js +1 -1
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-inspector/index.js +127 -19
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block.js +41 -9
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/index.js +4 -4
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +13 -11
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +3 -2
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +3 -8
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-is-hovered.js +1 -2
- package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +7 -12
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +20 -20
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.native.js +1 -6
- package/build-module/components/block-list-appender/index.native.js.map +1 -1
- package/build-module/components/block-lock/use-block-lock.js +3 -1
- package/build-module/components/block-lock/use-block-lock.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +20 -9
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -5
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +4 -5
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +24 -7
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +59 -17
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +3 -2
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +4 -2
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +3 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +3 -1
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/preview-panel.js +6 -1
- package/build-module/components/block-styles/preview-panel.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.js +115 -27
- package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +9 -8
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +3 -2
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +12 -5
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +30 -15
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +4 -9
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +9 -8
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +13 -8
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +59 -0
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
- package/build-module/components/block-vertical-alignment-control/ui.js +5 -2
- package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +1 -1
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/iframe/index.js +32 -5
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inner-blocks/default-block-appender.js +1 -6
- package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +2 -2
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -5
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -6
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/library.js +14 -3
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +20 -8
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +1 -1
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter/tabs.js +11 -4
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +1 -1
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +6 -2
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/search-item.js +37 -6
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/list-view/block.js +23 -11
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +19 -3
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +8 -4
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +0 -1
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +1 -6
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +1 -1
- package/build-module/components/publish-date-time-picker/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +27 -18
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +11 -18
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/text-decoration-control/index.js +1 -1
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +1 -1
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/tool-selector/index.js +6 -11
- package/build-module/components/tool-selector/index.js.map +1 -1
- package/build-module/components/url-popover/index.js +1 -1
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +7 -4
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +9 -28
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +1 -6
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/hooks/align.js +12 -2
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/color-panel.js +2 -1
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +128 -0
- package/build-module/hooks/content-lock-ui.js.map +1 -0
- package/build-module/hooks/duotone.js +6 -1
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +4 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +11 -9
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/metadata-name.js +45 -0
- package/build-module/hooks/metadata-name.js.map +1 -0
- package/build-module/hooks/metadata.js +50 -0
- package/build-module/hooks/metadata.js.map +1 -0
- package/build-module/hooks/use-typography-props.js +38 -0
- package/build-module/hooks/use-typography-props.js.map +1 -0
- package/build-module/hooks/utils.js +4 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/constrained.js +61 -22
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/store/actions.js +58 -20
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +37 -18
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +80 -9
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +1 -1
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-style/style-rtl.css +95 -45
- package/build-style/style.css +95 -45
- package/package.json +28 -28
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +137 -108
- package/src/components/alignment-control/test/index.js +124 -33
- package/src/components/alignment-control/ui.js +8 -3
- package/src/components/block-actions/index.js +9 -8
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +108 -65
- package/src/components/block-alignment-control/test/index.js +95 -31
- package/src/components/block-alignment-control/ui.js +2 -2
- package/src/components/block-compare/test/__snapshots__/block-view.js.snap +28 -26
- package/src/components/block-compare/test/block-view.js +3 -3
- package/src/components/block-content-overlay/index.js +2 -6
- package/src/components/block-content-overlay/style.scss +24 -3
- package/src/components/block-draggable/draggable-chip.js +4 -1
- package/src/components/block-edit/edit.js +5 -1
- package/src/components/block-edit/test/edit.js +23 -21
- package/src/components/block-icon/test/__snapshots__/index.js.snap +22 -0
- package/src/components/block-icon/test/index.js +31 -16
- package/src/components/block-inspector/index.js +126 -12
- package/src/components/block-inspector/style.scss +7 -1
- package/src/components/block-list/block.js +53 -13
- package/src/components/block-list/index.js +4 -4
- package/src/components/block-list/style.scss +39 -12
- package/src/components/block-list/test/block-list-context.native.js +11 -13
- package/src/components/block-list/use-block-props/index.js +10 -10
- package/src/components/block-list/use-block-props/use-block-class-names.js +4 -1
- package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -8
- package/src/components/block-list/use-block-props/use-is-hovered.js +2 -2
- package/src/components/block-list/use-in-between-inserter.js +11 -13
- package/src/components/block-list-appender/index.js +27 -18
- package/src/components/block-list-appender/index.native.js +3 -6
- package/src/components/block-lock/use-block-lock.js +2 -0
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +15 -9
- package/src/components/block-mover/button.js +6 -5
- package/src/components/block-mover/index.js +8 -7
- package/src/components/block-mover/index.native.js +20 -13
- package/src/components/block-popover/inbetween.js +85 -21
- package/src/components/block-popover/index.js +3 -2
- package/src/components/block-popover/style.scss +3 -4
- package/src/components/block-preview/auto.js +4 -2
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
- package/src/components/block-settings-menu-controls/README.md +9 -0
- package/src/components/block-settings-menu-controls/index.js +13 -2
- package/src/components/block-styles/preview-panel.js +3 -0
- package/src/components/block-switcher/block-transformations-menu.js +127 -33
- package/src/components/block-switcher/style.scss +4 -2
- package/src/components/block-title/test/index.js +28 -25
- package/src/components/block-toolbar/index.js +27 -17
- package/src/components/block-tools/block-contextual-toolbar.js +10 -3
- package/src/components/block-tools/block-selection-button.js +35 -16
- package/src/components/block-tools/index.js +40 -24
- package/src/components/block-tools/insertion-point.js +3 -7
- package/src/components/block-tools/selected-block-popover.js +9 -7
- package/src/components/block-tools/style.scss +5 -0
- package/src/components/block-tools/use-block-toolbar-popover-props.js +19 -6
- package/src/components/block-tools/zoom-out-mode-inserters.js +57 -0
- package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +91 -51
- package/src/components/block-vertical-alignment-control/test/index.js +92 -23
- package/src/components/block-vertical-alignment-control/ui.js +3 -2
- package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -12
- package/src/components/colors/test/with-colors.js +37 -12
- package/src/components/colors-gradients/dropdown.js +1 -1
- package/src/components/contrast-checker/test/index.js +135 -116
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +39 -57
- package/src/components/default-block-appender/test/index.js +32 -18
- package/src/components/font-sizes/README.MD +9 -0
- package/src/components/iframe/index.js +64 -5
- package/src/components/inner-blocks/README.md +2 -1
- package/src/components/inner-blocks/default-block-appender.js +1 -6
- package/src/components/inner-blocks/index.js +3 -2
- package/src/components/inner-blocks/use-inner-block-template-sync.js +9 -5
- package/src/components/inner-blocks/use-nested-settings-update.js +3 -1
- package/src/components/inserter/index.js +2 -8
- package/src/components/inserter/library.js +11 -5
- package/src/components/inserter/menu.js +42 -29
- package/src/components/inserter/preview-panel.js +1 -1
- package/src/components/inserter/stories/fixtures.js +44 -0
- package/src/components/inserter/stories/index.js +90 -0
- package/src/components/inserter/style.scss +21 -27
- package/src/components/inserter/tabs.js +8 -4
- package/src/components/link-control/link-preview.js +5 -3
- package/src/components/link-control/search-input.js +2 -2
- package/src/components/link-control/search-item.js +39 -7
- package/src/components/list-view/block.js +29 -10
- package/src/components/list-view/branch.js +27 -4
- package/src/components/list-view/index.js +8 -3
- package/src/components/list-view/use-block-selection.js +0 -1
- package/src/components/media-placeholder/test/index.js +2 -2
- package/src/components/media-replace-flow/README.md +1 -1
- package/src/components/provider/use-block-sync.js +3 -6
- package/src/components/publish-date-time-picker/index.js +1 -1
- package/src/components/rich-text/index.js +24 -35
- package/src/components/rich-text/index.native.js +8 -21
- package/src/components/text-decoration-control/index.js +1 -1
- package/src/components/text-transform-control/index.js +1 -1
- package/src/components/tool-selector/index.js +9 -11
- package/src/components/url-input/test/button.js +145 -71
- package/src/components/url-popover/index.js +1 -1
- package/src/components/url-popover/test/__snapshots__/index.js.snap +108 -80
- package/src/components/url-popover/test/index.js +14 -12
- package/src/components/use-block-drop-zone/index.js +15 -4
- package/src/components/use-moving-animation/index.js +9 -24
- package/src/components/warning/test/__snapshots__/index.js.snap +11 -14
- package/src/components/warning/test/index.js +32 -29
- package/src/components/writing-flow/use-select-all.js +4 -6
- package/src/hooks/align.js +22 -13
- package/src/hooks/color-panel.js +2 -1
- package/src/hooks/content-lock-ui.js +161 -0
- package/src/hooks/duotone.js +13 -1
- package/src/hooks/index.js +4 -0
- package/src/hooks/layout.js +25 -19
- package/src/hooks/layout.scss +7 -1
- package/src/hooks/metadata-name.js +48 -0
- package/src/hooks/metadata.js +64 -0
- package/src/hooks/test/use-typography-props.js +28 -0
- package/src/hooks/use-typography-props.js +41 -0
- package/src/hooks/utils.js +2 -11
- package/src/index.js +1 -0
- package/src/layouts/constrained.js +73 -24
- package/src/store/actions.js +45 -4
- package/src/store/reducer.js +33 -21
- package/src/store/selectors.js +98 -19
- package/src/store/test/reducer.js +8 -5
- package/src/utils/parse-css-unit-to-px.js +1 -1
- package/src/components/colors/test/__snapshots__/with-colors.js.snap +0 -23
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
@@ -73,9 +73,9 @@ describe( 'BlockTitle', () => {
|
|
|
73
73
|
attributes: null,
|
|
74
74
|
} ) );
|
|
75
75
|
|
|
76
|
-
const
|
|
76
|
+
const { container } = render( <BlockTitle /> );
|
|
77
77
|
|
|
78
|
-
expect(
|
|
78
|
+
expect( container ).toBeEmptyDOMElement();
|
|
79
79
|
} );
|
|
80
80
|
|
|
81
81
|
it( 'renders nothing if block type does not exist', () => {
|
|
@@ -83,11 +83,12 @@ describe( 'BlockTitle', () => {
|
|
|
83
83
|
name: 'name-not-exists',
|
|
84
84
|
attributes: null,
|
|
85
85
|
} ) );
|
|
86
|
-
|
|
86
|
+
|
|
87
|
+
const { container } = render(
|
|
87
88
|
<BlockTitle clientId="afd1cb17-2c08-4e7a-91be-007ba7ddc3a1" />
|
|
88
89
|
);
|
|
89
90
|
|
|
90
|
-
expect(
|
|
91
|
+
expect( container ).toBeEmptyDOMElement();
|
|
91
92
|
} );
|
|
92
93
|
|
|
93
94
|
it( 'renders title if block type exists', () => {
|
|
@@ -96,9 +97,9 @@ describe( 'BlockTitle', () => {
|
|
|
96
97
|
attributes: null,
|
|
97
98
|
} ) );
|
|
98
99
|
|
|
99
|
-
|
|
100
|
+
render( <BlockTitle clientId="id-name-exists" /> );
|
|
100
101
|
|
|
101
|
-
expect(
|
|
102
|
+
expect( screen.getByText( 'Block Title' ) ).toBeVisible();
|
|
102
103
|
} );
|
|
103
104
|
|
|
104
105
|
it( 'renders label if it is set', () => {
|
|
@@ -107,9 +108,9 @@ describe( 'BlockTitle', () => {
|
|
|
107
108
|
attributes: null,
|
|
108
109
|
} ) );
|
|
109
110
|
|
|
110
|
-
|
|
111
|
+
render( <BlockTitle clientId="id-name-with-label" /> );
|
|
111
112
|
|
|
112
|
-
expect(
|
|
113
|
+
expect( screen.getByText( 'Test Label' ) ).toBeVisible();
|
|
113
114
|
} );
|
|
114
115
|
|
|
115
116
|
it( 'should prioritize reusable block title over title', () => {
|
|
@@ -119,9 +120,10 @@ describe( 'BlockTitle', () => {
|
|
|
119
120
|
attributes: null,
|
|
120
121
|
} ) );
|
|
121
122
|
|
|
122
|
-
|
|
123
|
+
render( <BlockTitle clientId="id-name-with-label" /> );
|
|
123
124
|
|
|
124
|
-
expect(
|
|
125
|
+
expect( screen.queryByText( 'Test Label' ) ).not.toBeInTheDocument();
|
|
126
|
+
expect( screen.getByText( 'Reuse me!' ) ).toBeVisible();
|
|
125
127
|
} );
|
|
126
128
|
|
|
127
129
|
it( 'should prioritize block label over title', () => {
|
|
@@ -130,11 +132,12 @@ describe( 'BlockTitle', () => {
|
|
|
130
132
|
attributes: null,
|
|
131
133
|
} ) );
|
|
132
134
|
|
|
133
|
-
|
|
135
|
+
render( <BlockTitle clientId="id-name-with-label" /> );
|
|
134
136
|
|
|
135
|
-
expect(
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
expect( screen.queryByText( 'Test Label' ) ).not.toBeInTheDocument();
|
|
138
|
+
expect(
|
|
139
|
+
screen.getByText( 'A Custom Label like a Block Variation Label' )
|
|
140
|
+
).toBeVisible();
|
|
138
141
|
} );
|
|
139
142
|
|
|
140
143
|
it( 'should default to block information title if no reusable title or block name is available', () => {
|
|
@@ -143,9 +146,9 @@ describe( 'BlockTitle', () => {
|
|
|
143
146
|
attributes: null,
|
|
144
147
|
} ) );
|
|
145
148
|
|
|
146
|
-
|
|
149
|
+
render( <BlockTitle clientId="id-name-with-label" /> );
|
|
147
150
|
|
|
148
|
-
expect(
|
|
151
|
+
expect( screen.getByText( 'Block With Label' ) ).toBeVisible();
|
|
149
152
|
} );
|
|
150
153
|
|
|
151
154
|
it( 'truncates the label with custom truncate length', () => {
|
|
@@ -154,14 +157,14 @@ describe( 'BlockTitle', () => {
|
|
|
154
157
|
attributes: null,
|
|
155
158
|
} ) );
|
|
156
159
|
|
|
157
|
-
|
|
160
|
+
render(
|
|
158
161
|
<BlockTitle
|
|
159
162
|
clientId="id-name-with-long-label"
|
|
160
163
|
maximumLength={ 12 }
|
|
161
164
|
/>
|
|
162
165
|
);
|
|
163
166
|
|
|
164
|
-
expect(
|
|
167
|
+
expect( screen.getByText( 'This is a...' ) ).toBeVisible();
|
|
165
168
|
} );
|
|
166
169
|
|
|
167
170
|
it( 'should not truncate the label if maximum length is undefined', () => {
|
|
@@ -170,12 +173,12 @@ describe( 'BlockTitle', () => {
|
|
|
170
173
|
attributes: null,
|
|
171
174
|
} ) );
|
|
172
175
|
|
|
173
|
-
|
|
174
|
-
<BlockTitle clientId="id-name-with-long-label" />
|
|
175
|
-
);
|
|
176
|
+
render( <BlockTitle clientId="id-name-with-long-label" /> );
|
|
176
177
|
|
|
177
|
-
expect(
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
expect(
|
|
179
|
+
screen.getByText(
|
|
180
|
+
'This is a longer label than typical for blocks to have.'
|
|
181
|
+
)
|
|
182
|
+
).toBeVisible();
|
|
180
183
|
} );
|
|
181
184
|
} );
|
|
@@ -37,6 +37,7 @@ const BlockToolbar = ( { hideDragHandle } ) => {
|
|
|
37
37
|
hasReducedUI,
|
|
38
38
|
isValid,
|
|
39
39
|
isVisual,
|
|
40
|
+
isContentLocked,
|
|
40
41
|
} = useSelect( ( select ) => {
|
|
41
42
|
const {
|
|
42
43
|
getBlockName,
|
|
@@ -45,6 +46,7 @@ const BlockToolbar = ( { hideDragHandle } ) => {
|
|
|
45
46
|
isBlockValid,
|
|
46
47
|
getBlockRootClientId,
|
|
47
48
|
getSettings,
|
|
49
|
+
__unstableGetContentLockingParent,
|
|
48
50
|
} = select( blockEditorStore );
|
|
49
51
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|
50
52
|
const selectedBlockClientId = selectedBlockClientIds[ 0 ];
|
|
@@ -66,6 +68,9 @@ const BlockToolbar = ( { hideDragHandle } ) => {
|
|
|
66
68
|
isVisual: selectedBlockClientIds.every(
|
|
67
69
|
( id ) => getBlockMode( id ) === 'visual'
|
|
68
70
|
),
|
|
71
|
+
isContentLocked: !! __unstableGetContentLockingParent(
|
|
72
|
+
selectedBlockClientId
|
|
73
|
+
),
|
|
69
74
|
};
|
|
70
75
|
}, [] );
|
|
71
76
|
|
|
@@ -112,24 +117,27 @@ const BlockToolbar = ( { hideDragHandle } ) => {
|
|
|
112
117
|
|
|
113
118
|
return (
|
|
114
119
|
<div className={ classes }>
|
|
115
|
-
{ ! isMultiToolbar &&
|
|
116
|
-
|
|
117
|
-
|
|
120
|
+
{ ! isMultiToolbar &&
|
|
121
|
+
! displayHeaderToolbar &&
|
|
122
|
+
! isContentLocked && <BlockParentSelector /> }
|
|
118
123
|
<div ref={ nodeRef } { ...showMoversGestures }>
|
|
119
|
-
{ ( shouldShowVisualToolbar || isMultiToolbar ) &&
|
|
120
|
-
|
|
121
|
-
<
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
124
|
+
{ ( shouldShowVisualToolbar || isMultiToolbar ) &&
|
|
125
|
+
! isContentLocked && (
|
|
126
|
+
<ToolbarGroup className="block-editor-block-toolbar__block-controls">
|
|
127
|
+
<BlockSwitcher clientIds={ blockClientIds } />
|
|
128
|
+
{ ! isMultiToolbar && (
|
|
129
|
+
<BlockLockToolbar
|
|
130
|
+
clientId={ blockClientIds[ 0 ] }
|
|
131
|
+
/>
|
|
132
|
+
) }
|
|
133
|
+
<BlockMover
|
|
134
|
+
clientIds={ blockClientIds }
|
|
135
|
+
hideDragHandle={
|
|
136
|
+
hideDragHandle || hasReducedUI
|
|
137
|
+
}
|
|
125
138
|
/>
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
clientIds={ blockClientIds }
|
|
129
|
-
hideDragHandle={ hideDragHandle || hasReducedUI }
|
|
130
|
-
/>
|
|
131
|
-
</ToolbarGroup>
|
|
132
|
-
) }
|
|
139
|
+
</ToolbarGroup>
|
|
140
|
+
) }
|
|
133
141
|
</div>
|
|
134
142
|
{ shouldShowVisualToolbar && isMultiToolbar && (
|
|
135
143
|
<BlockGroupToolbar />
|
|
@@ -161,7 +169,9 @@ const BlockToolbar = ( { hideDragHandle } ) => {
|
|
|
161
169
|
</>
|
|
162
170
|
) }
|
|
163
171
|
<BlockEditVisuallyButton clientIds={ blockClientIds } />
|
|
164
|
-
|
|
172
|
+
{ ! isContentLocked && (
|
|
173
|
+
<BlockSettingsMenu clientIds={ blockClientIds } />
|
|
174
|
+
) }
|
|
165
175
|
</div>
|
|
166
176
|
);
|
|
167
177
|
};
|
|
@@ -20,8 +20,12 @@ import { store as blockEditorStore } from '../../store';
|
|
|
20
20
|
function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
|
|
21
21
|
const { blockType, hasParents, showParentSelector } = useSelect(
|
|
22
22
|
( select ) => {
|
|
23
|
-
const {
|
|
24
|
-
|
|
23
|
+
const {
|
|
24
|
+
getBlockName,
|
|
25
|
+
getBlockParents,
|
|
26
|
+
getSelectedBlockClientIds,
|
|
27
|
+
__unstableGetContentLockingParent,
|
|
28
|
+
} = select( blockEditorStore );
|
|
25
29
|
const { getBlockType } = select( blocksStore );
|
|
26
30
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|
27
31
|
const selectedBlockClientId = selectedBlockClientIds[ 0 ];
|
|
@@ -42,7 +46,10 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
|
|
|
42
46
|
'__experimentalParentSelector',
|
|
43
47
|
true
|
|
44
48
|
) &&
|
|
45
|
-
selectedBlockClientIds.length <= 1
|
|
49
|
+
selectedBlockClientIds.length <= 1 &&
|
|
50
|
+
! __unstableGetContentLockingParent(
|
|
51
|
+
selectedBlockClientId
|
|
52
|
+
),
|
|
46
53
|
};
|
|
47
54
|
},
|
|
48
55
|
[]
|
|
@@ -39,6 +39,7 @@ import { store as blockEditorStore } from '../../store';
|
|
|
39
39
|
import BlockDraggable from '../block-draggable';
|
|
40
40
|
import useBlockDisplayInformation from '../use-block-display-information';
|
|
41
41
|
import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
|
|
42
|
+
import BlockMover from '../block-mover';
|
|
42
43
|
|
|
43
44
|
/**
|
|
44
45
|
* Block selection button component, displaying the label of the block. If the block
|
|
@@ -59,6 +60,7 @@ function BlockSelectionButton( { clientId, rootClientId } ) {
|
|
|
59
60
|
getBlockIndex,
|
|
60
61
|
hasBlockMovingClientId,
|
|
61
62
|
getBlockListSettings,
|
|
63
|
+
__unstableGetEditorMode,
|
|
62
64
|
} = select( blockEditorStore );
|
|
63
65
|
const index = getBlockIndex( clientId );
|
|
64
66
|
const { name, attributes } = getBlock( clientId );
|
|
@@ -69,11 +71,19 @@ function BlockSelectionButton( { clientId, rootClientId } ) {
|
|
|
69
71
|
attributes,
|
|
70
72
|
blockMovingMode,
|
|
71
73
|
orientation: getBlockListSettings( rootClientId )?.orientation,
|
|
74
|
+
editorMode: __unstableGetEditorMode(),
|
|
72
75
|
};
|
|
73
76
|
},
|
|
74
77
|
[ clientId, rootClientId ]
|
|
75
78
|
);
|
|
76
|
-
const {
|
|
79
|
+
const {
|
|
80
|
+
index,
|
|
81
|
+
name,
|
|
82
|
+
attributes,
|
|
83
|
+
blockMovingMode,
|
|
84
|
+
orientation,
|
|
85
|
+
editorMode,
|
|
86
|
+
} = selected;
|
|
77
87
|
const { setNavigationMode, removeBlock } = useDispatch( blockEditorStore );
|
|
78
88
|
const ref = useRef();
|
|
79
89
|
|
|
@@ -236,25 +246,34 @@ function BlockSelectionButton( { clientId, rootClientId } ) {
|
|
|
236
246
|
<BlockIcon icon={ blockInformation?.icon } showColors />
|
|
237
247
|
</FlexItem>
|
|
238
248
|
<FlexItem>
|
|
239
|
-
|
|
240
|
-
{
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
{ editorMode === 'zoom-out' && (
|
|
250
|
+
<BlockMover clientIds={ [ clientId ] } hideDragHandle />
|
|
251
|
+
) }
|
|
252
|
+
{ editorMode === 'navigation' && (
|
|
253
|
+
<BlockDraggable clientIds={ [ clientId ] }>
|
|
254
|
+
{ ( draggableProps ) => (
|
|
255
|
+
<Button
|
|
256
|
+
icon={ dragHandle }
|
|
257
|
+
className="block-selection-button_drag-handle"
|
|
258
|
+
aria-hidden="true"
|
|
259
|
+
label={ dragHandleLabel }
|
|
260
|
+
// Should not be able to tab to drag handle as this
|
|
261
|
+
// button can only be used with a pointer device.
|
|
262
|
+
tabIndex="-1"
|
|
263
|
+
{ ...draggableProps }
|
|
264
|
+
/>
|
|
265
|
+
) }
|
|
266
|
+
</BlockDraggable>
|
|
267
|
+
) }
|
|
253
268
|
</FlexItem>
|
|
254
269
|
<FlexItem>
|
|
255
270
|
<Button
|
|
256
271
|
ref={ ref }
|
|
257
|
-
onClick={
|
|
272
|
+
onClick={
|
|
273
|
+
editorMode === 'navigation'
|
|
274
|
+
? () => setNavigationMode( false )
|
|
275
|
+
: undefined
|
|
276
|
+
}
|
|
258
277
|
onKeyDown={ onKeyDown }
|
|
259
278
|
label={ label }
|
|
260
279
|
showTooltip={ false }
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { first, last } from 'lodash';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
@@ -10,15 +5,20 @@ import { useSelect, useDispatch } from '@wordpress/data';
|
|
|
10
5
|
import { useViewportMatch } from '@wordpress/compose';
|
|
11
6
|
import { Popover } from '@wordpress/components';
|
|
12
7
|
import { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';
|
|
8
|
+
import { useRef } from '@wordpress/element';
|
|
13
9
|
|
|
14
10
|
/**
|
|
15
11
|
* Internal dependencies
|
|
16
12
|
*/
|
|
17
|
-
import
|
|
13
|
+
import {
|
|
14
|
+
InsertionPointOpenRef,
|
|
15
|
+
default as InsertionPoint,
|
|
16
|
+
} from './insertion-point';
|
|
18
17
|
import SelectedBlockPopover from './selected-block-popover';
|
|
19
18
|
import { store as blockEditorStore } from '../../store';
|
|
20
19
|
import BlockContextualToolbar from './block-contextual-toolbar';
|
|
21
20
|
import usePopoverScroll from '../block-popover/use-popover-scroll';
|
|
21
|
+
import ZoomOutModeInserters from './zoom-out-mode-inserters';
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Renders block tools (the block toolbar, select/navigation mode toolbar, the
|
|
@@ -35,10 +35,15 @@ export default function BlockTools( {
|
|
|
35
35
|
...props
|
|
36
36
|
} ) {
|
|
37
37
|
const isLargeViewport = useViewportMatch( 'medium' );
|
|
38
|
-
const hasFixedToolbar = useSelect(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
const { hasFixedToolbar, isZoomOutMode } = useSelect( ( select ) => {
|
|
39
|
+
const { __unstableGetEditorMode, getSettings } =
|
|
40
|
+
select( blockEditorStore );
|
|
41
|
+
|
|
42
|
+
return {
|
|
43
|
+
isZoomOutMode: __unstableGetEditorMode() === 'zoom-out',
|
|
44
|
+
hasFixedToolbar: getSettings().hasFixedToolbar,
|
|
45
|
+
};
|
|
46
|
+
}, [] );
|
|
42
47
|
const isMatch = useShortcutEventMatch();
|
|
43
48
|
const { getSelectedBlockClientIds, getBlockRootClientId } =
|
|
44
49
|
useSelect( blockEditorStore );
|
|
@@ -59,14 +64,14 @@ export default function BlockTools( {
|
|
|
59
64
|
const clientIds = getSelectedBlockClientIds();
|
|
60
65
|
if ( clientIds.length ) {
|
|
61
66
|
event.preventDefault();
|
|
62
|
-
const rootClientId = getBlockRootClientId(
|
|
67
|
+
const rootClientId = getBlockRootClientId( clientIds[ 0 ] );
|
|
63
68
|
moveBlocksUp( clientIds, rootClientId );
|
|
64
69
|
}
|
|
65
70
|
} else if ( isMatch( 'core/block-editor/move-down', event ) ) {
|
|
66
71
|
const clientIds = getSelectedBlockClientIds();
|
|
67
72
|
if ( clientIds.length ) {
|
|
68
73
|
event.preventDefault();
|
|
69
|
-
const rootClientId = getBlockRootClientId(
|
|
74
|
+
const rootClientId = getBlockRootClientId( clientIds[ 0 ] );
|
|
70
75
|
moveBlocksDown( clientIds, rootClientId );
|
|
71
76
|
}
|
|
72
77
|
} else if ( isMatch( 'core/block-editor/duplicate', event ) ) {
|
|
@@ -85,13 +90,13 @@ export default function BlockTools( {
|
|
|
85
90
|
const clientIds = getSelectedBlockClientIds();
|
|
86
91
|
if ( clientIds.length ) {
|
|
87
92
|
event.preventDefault();
|
|
88
|
-
insertAfterBlock(
|
|
93
|
+
insertAfterBlock( clientIds[ clientIds.length - 1 ] );
|
|
89
94
|
}
|
|
90
95
|
} else if ( isMatch( 'core/block-editor/insert-before', event ) ) {
|
|
91
96
|
const clientIds = getSelectedBlockClientIds();
|
|
92
97
|
if ( clientIds.length ) {
|
|
93
98
|
event.preventDefault();
|
|
94
|
-
insertBeforeBlock(
|
|
99
|
+
insertBeforeBlock( clientIds[ 0 ] );
|
|
95
100
|
}
|
|
96
101
|
} else if ( isMatch( 'core/block-editor/unselect', event ) ) {
|
|
97
102
|
const clientIds = getSelectedBlockClientIds();
|
|
@@ -106,30 +111,41 @@ export default function BlockTools( {
|
|
|
106
111
|
}
|
|
107
112
|
}
|
|
108
113
|
|
|
114
|
+
const blockToolbarRef = usePopoverScroll( __unstableContentRef );
|
|
115
|
+
const blockToolbarAfterRef = usePopoverScroll( __unstableContentRef );
|
|
116
|
+
|
|
109
117
|
return (
|
|
110
118
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
111
119
|
<div { ...props } onKeyDown={ onKeyDown }>
|
|
112
|
-
<
|
|
113
|
-
{
|
|
114
|
-
<
|
|
120
|
+
<InsertionPointOpenRef.Provider value={ useRef( false ) }>
|
|
121
|
+
{ ! isZoomOutMode && (
|
|
122
|
+
<InsertionPoint
|
|
123
|
+
__unstableContentRef={ __unstableContentRef }
|
|
124
|
+
/>
|
|
115
125
|
) }
|
|
126
|
+
{ ! isZoomOutMode &&
|
|
127
|
+
( hasFixedToolbar || ! isLargeViewport ) && (
|
|
128
|
+
<BlockContextualToolbar isFixed />
|
|
129
|
+
) }
|
|
116
130
|
{ /* Even if the toolbar is fixed, the block popover is still
|
|
117
|
-
needed for navigation and
|
|
131
|
+
needed for navigation and zoom-out mode. */ }
|
|
118
132
|
<SelectedBlockPopover
|
|
119
133
|
__unstableContentRef={ __unstableContentRef }
|
|
120
134
|
/>
|
|
121
135
|
{ /* Used for the inline rich text toolbar. */ }
|
|
122
|
-
<Popover.Slot
|
|
123
|
-
name="block-toolbar"
|
|
124
|
-
ref={ usePopoverScroll( __unstableContentRef ) }
|
|
125
|
-
/>
|
|
136
|
+
<Popover.Slot name="block-toolbar" ref={ blockToolbarRef } />
|
|
126
137
|
{ children }
|
|
127
138
|
{ /* Used for inline rich text popovers. */ }
|
|
128
139
|
<Popover.Slot
|
|
129
140
|
name="__unstable-block-tools-after"
|
|
130
|
-
ref={
|
|
141
|
+
ref={ blockToolbarAfterRef }
|
|
131
142
|
/>
|
|
132
|
-
|
|
143
|
+
{ isZoomOutMode && (
|
|
144
|
+
<ZoomOutModeInserters
|
|
145
|
+
__unstableContentRef={ __unstableContentRef }
|
|
146
|
+
/>
|
|
147
|
+
) }
|
|
148
|
+
</InsertionPointOpenRef.Provider>
|
|
133
149
|
</div>
|
|
134
150
|
);
|
|
135
151
|
}
|
|
@@ -200,6 +200,7 @@ function InsertionPointPopover( {
|
|
|
200
200
|
<motion.div
|
|
201
201
|
variants={ lineVariants }
|
|
202
202
|
className="block-editor-block-list__insertion-point-indicator"
|
|
203
|
+
data-testid="block-list-insertion-point-indicator"
|
|
203
204
|
/>
|
|
204
205
|
{ isInserterShown && (
|
|
205
206
|
<motion.div
|
|
@@ -227,15 +228,10 @@ function InsertionPointPopover( {
|
|
|
227
228
|
);
|
|
228
229
|
}
|
|
229
230
|
|
|
230
|
-
export default function InsertionPoint(
|
|
231
|
+
export default function InsertionPoint( props ) {
|
|
231
232
|
const isVisible = useSelect( ( select ) => {
|
|
232
233
|
return select( blockEditorStore ).isBlockInsertionPointVisible();
|
|
233
234
|
}, [] );
|
|
234
235
|
|
|
235
|
-
return
|
|
236
|
-
<InsertionPointOpenRef.Provider value={ useRef( false ) }>
|
|
237
|
-
{ isVisible && <InsertionPointPopover { ...props } /> }
|
|
238
|
-
{ children }
|
|
239
|
-
</InsertionPointOpenRef.Provider>
|
|
240
|
-
);
|
|
236
|
+
return isVisible && <InsertionPointPopover { ...props } />;
|
|
241
237
|
}
|
|
@@ -24,7 +24,7 @@ import useBlockToolbarPopoverProps from './use-block-toolbar-popover-props';
|
|
|
24
24
|
|
|
25
25
|
function selector( select ) {
|
|
26
26
|
const {
|
|
27
|
-
|
|
27
|
+
__unstableGetEditorMode,
|
|
28
28
|
isMultiSelecting,
|
|
29
29
|
hasMultiSelection,
|
|
30
30
|
isTyping,
|
|
@@ -32,7 +32,7 @@ function selector( select ) {
|
|
|
32
32
|
getLastMultiSelectedBlockClientId,
|
|
33
33
|
} = select( blockEditorStore );
|
|
34
34
|
return {
|
|
35
|
-
|
|
35
|
+
editorMode: __unstableGetEditorMode(),
|
|
36
36
|
isMultiSelecting: isMultiSelecting(),
|
|
37
37
|
isTyping: isTyping(),
|
|
38
38
|
hasFixedToolbar: getSettings().hasFixedToolbar,
|
|
@@ -51,7 +51,7 @@ function SelectedBlockPopover( {
|
|
|
51
51
|
__unstableContentRef,
|
|
52
52
|
} ) {
|
|
53
53
|
const {
|
|
54
|
-
|
|
54
|
+
editorMode,
|
|
55
55
|
isMultiSelecting,
|
|
56
56
|
isTyping,
|
|
57
57
|
hasFixedToolbar,
|
|
@@ -80,17 +80,18 @@ function SelectedBlockPopover( {
|
|
|
80
80
|
const { stopTyping } = useDispatch( blockEditorStore );
|
|
81
81
|
|
|
82
82
|
const showEmptyBlockSideInserter =
|
|
83
|
-
! isTyping &&
|
|
84
|
-
const shouldShowBreadcrumb =
|
|
83
|
+
! isTyping && editorMode === 'edit' && isEmptyDefaultBlock;
|
|
84
|
+
const shouldShowBreadcrumb =
|
|
85
|
+
editorMode === 'navigation' || editorMode === 'zoom-out';
|
|
85
86
|
const shouldShowContextualToolbar =
|
|
86
|
-
|
|
87
|
+
editorMode === 'edit' &&
|
|
87
88
|
! hasFixedToolbar &&
|
|
88
89
|
isLargeViewport &&
|
|
89
90
|
! isMultiSelecting &&
|
|
90
91
|
! showEmptyBlockSideInserter &&
|
|
91
92
|
! isTyping;
|
|
92
93
|
const canFocusHiddenToolbar =
|
|
93
|
-
|
|
94
|
+
editorMode === 'edit' &&
|
|
94
95
|
! shouldShowContextualToolbar &&
|
|
95
96
|
! hasFixedToolbar &&
|
|
96
97
|
! isEmptyDefaultBlock;
|
|
@@ -132,6 +133,7 @@ function SelectedBlockPopover( {
|
|
|
132
133
|
} ) }
|
|
133
134
|
__unstablePopoverSlot={ __unstablePopoverSlot }
|
|
134
135
|
__unstableContentRef={ __unstableContentRef }
|
|
136
|
+
resize={ false }
|
|
135
137
|
{ ...popoverProps }
|
|
136
138
|
>
|
|
137
139
|
{ shouldShowContextualToolbar && (
|
|
@@ -14,15 +14,19 @@ import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-
|
|
|
14
14
|
// By default the toolbar sets the `shift` prop. If the user scrolls the page
|
|
15
15
|
// down the toolbar will stay on screen by adopting a sticky position at the
|
|
16
16
|
// top of the viewport.
|
|
17
|
-
const DEFAULT_PROPS = {
|
|
17
|
+
const DEFAULT_PROPS = {
|
|
18
|
+
flip: false,
|
|
19
|
+
shift: true,
|
|
20
|
+
};
|
|
18
21
|
|
|
19
22
|
// When there isn't enough height between the top of the block and the editor
|
|
20
23
|
// canvas, the `shift` prop is set to `false`, as it will cause the block to be
|
|
21
|
-
// obscured. The `flip` behavior is enabled
|
|
22
|
-
//
|
|
24
|
+
// obscured. The `flip` behavior is enabled, which positions the toolbar below
|
|
25
|
+
// the block. This only happens if the block is smaller than the viewport, as
|
|
26
|
+
// otherwise the toolbar will be off-screen.
|
|
23
27
|
const RESTRICTED_HEIGHT_PROPS = {
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
flip: true,
|
|
29
|
+
shift: false,
|
|
26
30
|
};
|
|
27
31
|
|
|
28
32
|
/**
|
|
@@ -42,7 +46,16 @@ function getProps( contentElement, selectedBlockElement, toolbarHeight ) {
|
|
|
42
46
|
const blockRect = selectedBlockElement.getBoundingClientRect();
|
|
43
47
|
const contentRect = contentElement.getBoundingClientRect();
|
|
44
48
|
|
|
45
|
-
|
|
49
|
+
// The document element's clientHeight represents the viewport height.
|
|
50
|
+
const viewportHeight =
|
|
51
|
+
contentElement.ownerDocument.documentElement.clientHeight;
|
|
52
|
+
|
|
53
|
+
const hasSpaceForToolbarAbove =
|
|
54
|
+
blockRect.top - contentRect.top > toolbarHeight;
|
|
55
|
+
const isBlockTallerThanViewport =
|
|
56
|
+
blockRect.height > viewportHeight - toolbarHeight;
|
|
57
|
+
|
|
58
|
+
if ( hasSpaceForToolbarAbove || isBlockTallerThanViewport ) {
|
|
46
59
|
return DEFAULT_PROPS;
|
|
47
60
|
}
|
|
48
61
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useSelect } from '@wordpress/data';
|
|
5
|
+
import { useEffect, useState } from '@wordpress/element';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import BlockPopoverInbetween from '../block-popover/inbetween';
|
|
11
|
+
import { store as blockEditorStore } from '../../store';
|
|
12
|
+
import Inserter from '../inserter';
|
|
13
|
+
|
|
14
|
+
function ZoomOutModeInserters( { __unstableContentRef } ) {
|
|
15
|
+
const [ isReady, setIsReady ] = useState( false );
|
|
16
|
+
const blockOrder = useSelect( ( select ) => {
|
|
17
|
+
return select( blockEditorStore ).getBlockOrder();
|
|
18
|
+
}, [] );
|
|
19
|
+
|
|
20
|
+
// Defer the initial rendering to avoid the jumps due to the animation.
|
|
21
|
+
useEffect( () => {
|
|
22
|
+
const timeout = setTimeout( () => {
|
|
23
|
+
setIsReady( true );
|
|
24
|
+
}, 500 );
|
|
25
|
+
return () => {
|
|
26
|
+
clearTimeout( timeout );
|
|
27
|
+
};
|
|
28
|
+
}, [] );
|
|
29
|
+
|
|
30
|
+
if ( ! isReady ) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return blockOrder.map( ( clientId, index ) => {
|
|
35
|
+
if ( index === blockOrder.length - 1 ) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return (
|
|
39
|
+
<BlockPopoverInbetween
|
|
40
|
+
key={ clientId }
|
|
41
|
+
previousClientId={ clientId }
|
|
42
|
+
nextClientId={ blockOrder[ index + 1 ] }
|
|
43
|
+
__unstableContentRef={ __unstableContentRef }
|
|
44
|
+
>
|
|
45
|
+
<div className="block-editor-block-list__insertion-point-inserter is-with-inserter">
|
|
46
|
+
<Inserter
|
|
47
|
+
position="bottom center"
|
|
48
|
+
clientId={ blockOrder[ index + 1 ] }
|
|
49
|
+
__experimentalIsQuick
|
|
50
|
+
/>
|
|
51
|
+
</div>
|
|
52
|
+
</BlockPopoverInbetween>
|
|
53
|
+
);
|
|
54
|
+
} );
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export default ZoomOutModeInserters;
|