@wordpress/block-editor 12.0.0 → 12.2.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 +1 -1
- package/build/autocompleters/block.js +13 -5
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-breadcrumb/index.js +6 -3
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-controls/slot.js +12 -4
- package/build/components/block-controls/slot.js.map +1 -1
- package/build/components/block-controls/slot.native.js +10 -1
- package/build/components/block-controls/slot.native.js.map +1 -1
- package/build/components/block-draggable/index.js +11 -7
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-draggable/use-scroll-when-dragging.js +2 -2
- package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
- package/build/components/block-editing-mode/index.js +84 -0
- package/build/components/block-editing-mode/index.js.map +1 -0
- package/build/components/block-list/block-invalid-warning.native.js +15 -7
- package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
- package/build/components/block-list/block-list-block-context.js +15 -0
- package/build/components/block-list/block-list-block-context.js.map +1 -0
- package/build/components/block-list/block-list-item-cell.native.js +15 -2
- package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
- package/build/components/block-list/block-list-item.native.js +158 -195
- package/build/components/block-list/block-list-item.native.js.map +1 -1
- package/build/components/block-list/block-outline.native.js +57 -0
- package/build/components/block-list/block-outline.native.js.map +1 -0
- package/build/components/block-list/block.js +29 -37
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +347 -311
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.native.js +260 -357
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/insertion-point.native.js +4 -2
- package/build/components/block-list/insertion-point.native.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +2 -2
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +7 -5
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list-appender/index.js +15 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +19 -4
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +8 -10
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +15 -4
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/preview-panel.js +1 -2
- package/build/components/block-styles/preview-panel.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.js +8 -0
- package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build/components/block-switcher/block-variation-transformations.js +125 -0
- package/build/components/block-switcher/block-variation-transformations.js.map +1 -0
- package/build/components/block-switcher/index.js +34 -12
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +3 -3
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.js +9 -7
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +22 -65
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +11 -5
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +3 -8
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
- package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +7 -2
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.native.js +87 -3
- package/build/components/convert-to-group-buttons/index.native.js.map +1 -1
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +23 -37
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build/components/global-styles/advanced-panel.js +86 -0
- package/build/components/global-styles/advanced-panel.js.map +1 -0
- package/build/components/global-styles/color-panel.js +4 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +9 -8
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +1 -2
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +24 -0
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +1 -1
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +27 -4
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +30 -0
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/iframe/index.js +14 -7
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/use-save-image.js +24 -8
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/inner-blocks/index.js +2 -1
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/index.native.js +7 -7
- package/build/components/inner-blocks/index.native.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +13 -5
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/index.js +3 -7
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +2 -4
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/search-results.js +19 -6
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter-draggable-blocks/index.js +5 -0
- package/build/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build/components/inspector-controls/fill.js +1 -1
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/inspector-controls/fill.native.js +1 -1
- package/build/components/inspector-controls/fill.native.js.map +1 -1
- package/build/components/inspector-controls/slot.js +3 -6
- package/build/components/inspector-controls/slot.js.map +1 -1
- package/build/components/inspector-controls/slot.native.js +1 -1
- package/build/components/inspector-controls/slot.native.js.map +1 -1
- package/build/components/line-height-control/index.js +7 -2
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/link-control/use-internal-input-value.js +9 -8
- package/build/components/link-control/use-internal-input-value.js.map +1 -1
- package/build/components/list-view/appender.js +6 -1
- package/build/components/list-view/appender.js.map +1 -1
- package/build/components/list-view/block-contents.js +9 -2
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block-select-button.js +2 -1
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +25 -29
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +1 -3
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +43 -22
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-client-ids.js +27 -3
- package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js +163 -11
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/media-placeholder/index.js +68 -7
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/multi-selection-inspector/index.js +2 -2
- package/build/components/multi-selection-inspector/index.js.map +1 -1
- package/build/components/preview-options/index.js +6 -1
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +0 -2
- package/build/components/publish-date-time-picker/index.js.map +1 -1
- package/build/components/spacing-sizes-control/spacing-input-control.js +1 -1
- package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build/components/url-input/index.js +4 -2
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +25 -15
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-resize-canvas/index.js +8 -1
- package/build/components/use-resize-canvas/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +13 -7
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/hooks/align.js +4 -8
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/behaviors.js +115 -0
- package/build/hooks/behaviors.js.map +1 -0
- package/build/hooks/border.js +1 -1
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +1 -1
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/content-lock-ui.js +8 -12
- package/build/hooks/content-lock-ui.js.map +1 -1
- package/build/hooks/dimensions.js +0 -30
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +5 -9
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/index.native.js +8 -0
- package/build/hooks/index.native.js.map +1 -1
- package/build/hooks/layout.js +10 -11
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/position.js +1 -1
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/style.js +1 -1
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/use-editor-wrapper-styles.native.js +255 -0
- package/build/hooks/use-editor-wrapper-styles.native.js.map +1 -0
- package/build/hooks/use-typography-props.js +14 -10
- package/build/hooks/use-typography-props.js.map +1 -1
- package/build/index.native.js +31 -0
- package/build/index.native.js.map +1 -0
- package/build/private-apis.js +4 -7
- package/build/private-apis.js.map +1 -1
- package/build/store/private-actions.js +46 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +88 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +36 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +28 -18
- package/build/store/selectors.js.map +1 -1
- package/build/utils/order-inserter-block-items.js +41 -0
- package/build/utils/order-inserter-block-items.js.map +1 -0
- package/build/utils/use-should-contextual-toolbar-show.js +16 -12
- package/build/utils/use-should-contextual-toolbar-show.js.map +1 -1
- package/build-module/autocompleters/block.js +12 -5
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +5 -3
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-controls/slot.js +11 -4
- package/build-module/components/block-controls/slot.js.map +1 -1
- package/build-module/components/block-controls/slot.native.js +9 -1
- package/build-module/components/block-controls/slot.native.js.map +1 -1
- package/build-module/components/block-draggable/index.js +10 -6
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-draggable/use-scroll-when-dragging.js +2 -2
- package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
- package/build-module/components/block-editing-mode/index.js +72 -0
- package/build-module/components/block-editing-mode/index.js.map +1 -0
- package/build-module/components/block-list/block-invalid-warning.native.js +16 -8
- package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
- package/build-module/components/block-list/block-list-block-context.js +6 -0
- package/build-module/components/block-list/block-list-block-context.js.map +1 -0
- package/build-module/components/block-list/block-list-item-cell.native.js +13 -2
- package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
- package/build-module/components/block-list/block-list-item.native.js +160 -190
- package/build-module/components/block-list/block-list-item.native.js.map +1 -1
- package/build-module/components/block-list/block-outline.native.js +44 -0
- package/build-module/components/block-list/block-outline.native.js.map +1 -0
- package/build-module/components/block-list/block.js +26 -34
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +345 -310
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.native.js +263 -355
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/insertion-point.native.js +4 -2
- package/build-module/components/block-list/insertion-point.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +1 -1
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +6 -5
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +15 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +18 -4
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +8 -9
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +13 -5
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/preview-panel.js +1 -2
- package/build-module/components/block-styles/preview-panel.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.js +7 -0
- package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build-module/components/block-switcher/block-variation-transformations.js +108 -0
- package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -0
- package/build-module/components/block-switcher/index.js +33 -12
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -3
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +8 -7
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +22 -65
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +11 -5
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +3 -7
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
- package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +7 -2
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.native.js +76 -1
- package/build-module/components/convert-to-group-buttons/index.native.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +22 -36
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build-module/components/global-styles/advanced-panel.js +74 -0
- package/build-module/components/global-styles/advanced-panel.js.map +1 -0
- package/build-module/components/global-styles/color-panel.js +5 -2
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +9 -8
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +1 -2
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +3 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +1 -1
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +25 -4
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +25 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +15 -8
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/use-save-image.js +24 -8
- package/build-module/components/image-editor/use-save-image.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +2 -1
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.native.js +7 -6
- package/build-module/components/inner-blocks/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +13 -5
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -7
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +2 -4
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-results.js +16 -6
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter-draggable-blocks/index.js +4 -0
- package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build-module/components/inspector-controls/fill.js +1 -1
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/inspector-controls/fill.native.js +1 -1
- package/build-module/components/inspector-controls/fill.native.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +4 -7
- package/build-module/components/inspector-controls/slot.js.map +1 -1
- package/build-module/components/inspector-controls/slot.native.js +1 -1
- package/build-module/components/inspector-controls/slot.native.js.map +1 -1
- package/build-module/components/line-height-control/index.js +7 -2
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/link-control/use-internal-input-value.js +9 -8
- package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
- package/build-module/components/list-view/appender.js +6 -2
- package/build-module/components/list-view/appender.js.map +1 -1
- package/build-module/components/list-view/block-contents.js +9 -3
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +2 -1
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +24 -29
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +1 -3
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +44 -23
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-client-ids.js +26 -3
- package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js +160 -11
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +66 -7
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/multi-selection-inspector/index.js +2 -2
- package/build-module/components/multi-selection-inspector/index.js.map +1 -1
- package/build-module/components/preview-options/index.js +7 -2
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +0 -2
- package/build-module/components/publish-date-time-picker/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/spacing-input-control.js +1 -1
- package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build-module/components/url-input/index.js +4 -2
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +25 -16
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-resize-canvas/index.js +8 -1
- package/build-module/components/use-resize-canvas/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +13 -7
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/hooks/align.js +4 -7
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/behaviors.js +97 -0
- package/build-module/hooks/behaviors.js.map +1 -0
- package/build-module/hooks/border.js +1 -1
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color.js +1 -1
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +8 -11
- package/build-module/hooks/content-lock-ui.js.map +1 -1
- package/build-module/hooks/dimensions.js +0 -28
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +4 -7
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +1 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/index.native.js +1 -0
- package/build-module/hooks/index.native.js.map +1 -1
- package/build-module/hooks/layout.js +9 -11
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/position.js +1 -1
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/style.js +1 -1
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/use-editor-wrapper-styles.native.js +242 -0
- package/build-module/hooks/use-editor-wrapper-styles.native.js.map +1 -0
- package/build-module/hooks/use-typography-props.js +14 -10
- package/build-module/hooks/use-typography-props.js.map +1 -1
- package/build-module/index.native.js +6 -0
- package/build-module/index.native.js.map +1 -0
- package/build-module/private-apis.js +3 -5
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/private-actions.js +42 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +79 -0
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +34 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +26 -17
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/order-inserter-block-items.js +32 -0
- package/build-module/utils/order-inserter-block-items.js.map +1 -0
- package/build-module/utils/use-should-contextual-toolbar-show.js +16 -12
- package/build-module/utils/use-should-contextual-toolbar-show.js.map +1 -1
- package/build-style/content-rtl.css +32 -14
- package/build-style/content.css +32 -14
- package/build-style/default-editor-styles-rtl.css +1 -1
- package/build-style/default-editor-styles.css +1 -1
- package/build-style/style-rtl.css +56 -77
- package/build-style/style.css +57 -77
- package/package.json +32 -31
- package/src/autocompleters/block.js +15 -7
- package/src/components/block-breadcrumb/index.js +11 -3
- package/src/components/block-breadcrumb/style.scss +2 -1
- package/src/components/block-controls/slot.js +8 -4
- package/src/components/block-controls/slot.native.js +6 -1
- package/src/components/block-draggable/index.js +10 -6
- package/src/components/block-draggable/use-scroll-when-dragging.js +8 -2
- package/src/components/block-editing-mode/index.js +71 -0
- package/src/components/block-list/block-invalid-warning.native.js +17 -9
- package/src/components/block-list/block-list-block-context.js +6 -0
- package/src/components/block-list/block-list-item-cell.native.js +10 -1
- package/src/components/block-list/block-list-item.native.js +180 -208
- package/src/components/block-list/block-outline.native.js +58 -0
- package/src/components/block-list/block.js +38 -56
- package/src/components/block-list/block.native.js +531 -501
- package/src/components/block-list/content.scss +5 -6
- package/src/components/block-list/index.native.js +324 -382
- package/src/components/block-list/insertion-point.native.js +2 -2
- package/src/components/block-list/test/block-invalid-warning.native.js +48 -0
- package/src/components/block-list/test/index.native.js +205 -0
- package/src/components/block-list/use-block-props/index.js +1 -1
- package/src/components/block-list/use-in-between-inserter.js +7 -3
- package/src/components/block-list-appender/index.js +22 -4
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +26 -1
- package/src/components/block-mover/style.scss +1 -0
- package/src/components/block-pattern-setup/style.scss +1 -4
- package/src/components/block-patterns-list/style.scss +1 -4
- package/src/components/block-settings-menu/block-settings-dropdown.js +10 -17
- package/src/components/block-settings-menu-controls/index.js +24 -4
- package/src/components/block-styles/preview-panel.js +1 -3
- package/src/components/block-styles/style.scss +4 -4
- package/src/components/block-switcher/block-transformations-menu.js +12 -0
- package/src/components/block-switcher/block-variation-transformations.js +115 -0
- package/src/components/block-switcher/index.js +38 -5
- package/src/components/block-switcher/pattern-transformations-menu.js +5 -5
- package/src/components/block-switcher/style.scss +6 -5
- package/src/components/block-toolbar/index.js +10 -11
- package/src/components/block-tools/block-contextual-toolbar.js +32 -67
- package/src/components/block-tools/insertion-point.js +23 -9
- package/src/components/block-tools/selected-block-popover.js +3 -5
- package/src/components/block-tools/style.scss +8 -0
- package/src/components/button-block-appender/content.scss +22 -0
- package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +16 -2
- package/src/components/convert-to-group-buttons/index.js +9 -2
- package/src/components/convert-to-group-buttons/index.native.js +79 -1
- package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +32 -38
- package/src/components/global-styles/advanced-panel.js +82 -0
- package/src/components/global-styles/color-panel.js +6 -1
- package/src/components/global-styles/dimensions-panel.js +9 -8
- package/src/components/global-styles/hooks.js +1 -5
- package/src/components/global-styles/index.js +6 -1
- package/src/components/global-styles/style.scss +17 -0
- package/src/components/global-styles/test/utils.js +57 -1
- package/src/components/global-styles/typography-panel.js +1 -1
- package/src/components/global-styles/use-global-styles-output.js +21 -3
- package/src/components/global-styles/utils.js +27 -0
- package/src/components/iframe/index.js +22 -12
- package/src/components/image-editor/use-save-image.js +20 -9
- package/src/components/inner-blocks/README.md +5 -0
- package/src/components/inner-blocks/index.js +2 -0
- package/src/components/inner-blocks/index.native.js +16 -6
- package/src/components/inner-blocks/use-nested-settings-update.js +20 -3
- package/src/components/inserter/index.js +1 -9
- package/src/components/inserter/quick-inserter.js +0 -2
- package/src/components/inserter/search-results.js +32 -6
- package/src/components/inserter-draggable-blocks/index.js +4 -0
- package/src/components/inspector-controls/fill.js +1 -1
- package/src/components/inspector-controls/fill.native.js +1 -1
- package/src/components/inspector-controls/slot.js +4 -9
- package/src/components/inspector-controls/slot.native.js +1 -1
- package/src/components/line-height-control/index.js +7 -2
- package/src/components/line-height-control/stories/index.js +1 -1
- package/src/components/link-control/test/index.js +42 -0
- package/src/components/link-control/use-internal-input-value.js +8 -7
- package/src/components/list-view/appender.js +3 -2
- package/src/components/list-view/block-contents.js +32 -20
- package/src/components/list-view/block-select-button.js +5 -1
- package/src/components/list-view/block.js +34 -37
- package/src/components/list-view/branch.js +1 -7
- package/src/components/list-view/index.js +42 -17
- package/src/components/list-view/style.scss +7 -7
- package/src/components/list-view/test/use-list-view-drop-zone.js +88 -12
- package/src/components/list-view/use-list-view-client-ids.js +21 -4
- package/src/components/list-view/use-list-view-drop-zone.js +194 -11
- package/src/components/media-placeholder/index.js +74 -1
- package/src/components/multi-selection-inspector/index.js +2 -2
- package/src/components/preview-options/index.js +9 -2
- package/src/components/publish-date-time-picker/index.js +0 -2
- package/src/components/spacing-sizes-control/spacing-input-control.js +1 -0
- package/src/components/url-input/README.md +6 -0
- package/src/components/url-input/index.js +2 -2
- package/src/components/use-block-drop-zone/index.js +31 -17
- package/src/components/use-resize-canvas/index.js +9 -1
- package/src/components/writing-flow/test/index.js +15 -0
- package/src/components/writing-flow/use-arrow-nav.js +17 -4
- package/src/hooks/align.js +5 -12
- package/src/hooks/behaviors.js +104 -0
- package/src/hooks/border.js +2 -1
- package/src/hooks/color.js +2 -1
- package/src/hooks/content-lock-ui.js +3 -15
- package/src/hooks/dimensions.js +0 -40
- package/src/hooks/duotone.js +4 -11
- package/src/hooks/index.js +1 -0
- package/src/hooks/index.native.js +1 -0
- package/src/hooks/layout.js +14 -20
- package/src/hooks/position.js +2 -1
- package/src/hooks/style.js +2 -1
- package/src/hooks/test/use-editor-wrapper-styles.native.js +282 -0
- package/src/hooks/test/use-typography-props.js +47 -2
- package/src/hooks/use-editor-wrapper-styles.native.js +250 -0
- package/src/hooks/use-editor-wrapper-styles.native.scss +11 -0
- package/src/hooks/use-typography-props.js +10 -11
- package/src/index.native.js +6 -0
- package/src/private-apis.js +2 -4
- package/src/store/private-actions.js +39 -0
- package/src/store/private-selectors.js +95 -0
- package/src/store/reducer.js +27 -0
- package/src/store/selectors.js +25 -15
- package/src/store/test/private-actions.js +32 -1
- package/src/store/test/private-selectors.js +158 -0
- package/src/store/test/reducer.js +48 -0
- package/src/style.scss +0 -3
- package/src/utils/order-inserter-block-items.js +26 -0
- package/src/utils/use-should-contextual-toolbar-show.js +19 -9
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/block-list/block-list-compact.native.js +0 -75
- package/build/components/block-list/block-list-compact.native.js.map +0 -1
- package/build/components/off-canvas-editor/appender.js +0 -125
- package/build/components/off-canvas-editor/appender.js.map +0 -1
- package/build/components/off-canvas-editor/block-contents.js +0 -141
- package/build/components/off-canvas-editor/block-contents.js.map +0 -1
- package/build/components/off-canvas-editor/block-select-button.js +0 -126
- package/build/components/off-canvas-editor/block-select-button.js.map +0 -1
- package/build/components/off-canvas-editor/block.js +0 -297
- package/build/components/off-canvas-editor/block.js.map +0 -1
- package/build/components/off-canvas-editor/branch.js +0 -197
- package/build/components/off-canvas-editor/branch.js.map +0 -1
- package/build/components/off-canvas-editor/context.js +0 -19
- package/build/components/off-canvas-editor/context.js.map +0 -1
- package/build/components/off-canvas-editor/drop-indicator.js +0 -118
- package/build/components/off-canvas-editor/drop-indicator.js.map +0 -1
- package/build/components/off-canvas-editor/expander.js +0 -41
- package/build/components/off-canvas-editor/expander.js.map +0 -1
- package/build/components/off-canvas-editor/index.js +0 -236
- package/build/components/off-canvas-editor/index.js.map +0 -1
- package/build/components/off-canvas-editor/leaf-more-menu.js +0 -146
- package/build/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
- package/build/components/off-canvas-editor/leaf.js +0 -60
- package/build/components/off-canvas-editor/leaf.js.map +0 -1
- package/build/components/off-canvas-editor/link-ui.js +0 -186
- package/build/components/off-canvas-editor/link-ui.js.map +0 -1
- package/build/components/off-canvas-editor/update-attributes.js +0 -108
- package/build/components/off-canvas-editor/update-attributes.js.map +0 -1
- package/build/components/off-canvas-editor/use-block-selection.js +0 -139
- package/build/components/off-canvas-editor/use-block-selection.js.map +0 -1
- package/build/components/off-canvas-editor/use-inserted-block.js +0 -58
- package/build/components/off-canvas-editor/use-inserted-block.js.map +0 -1
- package/build/components/off-canvas-editor/use-list-view-client-ids.js +0 -33
- package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
- package/build/components/off-canvas-editor/use-list-view-drop-zone.js +0 -235
- package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
- package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -60
- package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
- package/build/components/off-canvas-editor/utils.js +0 -60
- package/build/components/off-canvas-editor/utils.js.map +0 -1
- package/build-module/components/block-list/block-list-compact.native.js +0 -60
- package/build-module/components/block-list/block-list-compact.native.js.map +0 -1
- package/build-module/components/off-canvas-editor/appender.js +0 -108
- package/build-module/components/off-canvas-editor/appender.js.map +0 -1
- package/build-module/components/off-canvas-editor/block-contents.js +0 -121
- package/build-module/components/off-canvas-editor/block-contents.js.map +0 -1
- package/build-module/components/off-canvas-editor/block-select-button.js +0 -107
- package/build-module/components/off-canvas-editor/block-select-button.js.map +0 -1
- package/build-module/components/off-canvas-editor/block.js +0 -273
- package/build-module/components/off-canvas-editor/block.js.map +0 -1
- package/build-module/components/off-canvas-editor/branch.js +0 -179
- package/build-module/components/off-canvas-editor/branch.js.map +0 -1
- package/build-module/components/off-canvas-editor/context.js +0 -7
- package/build-module/components/off-canvas-editor/context.js.map +0 -1
- package/build-module/components/off-canvas-editor/drop-indicator.js +0 -111
- package/build-module/components/off-canvas-editor/drop-indicator.js.map +0 -1
- package/build-module/components/off-canvas-editor/expander.js +0 -32
- package/build-module/components/off-canvas-editor/expander.js.map +0 -1
- package/build-module/components/off-canvas-editor/index.js +0 -213
- package/build-module/components/off-canvas-editor/index.js.map +0 -1
- package/build-module/components/off-canvas-editor/leaf-more-menu.js +0 -128
- package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
- package/build-module/components/off-canvas-editor/leaf.js +0 -45
- package/build-module/components/off-canvas-editor/leaf.js.map +0 -1
- package/build-module/components/off-canvas-editor/link-ui.js +0 -166
- package/build-module/components/off-canvas-editor/link-ui.js.map +0 -1
- package/build-module/components/off-canvas-editor/update-attributes.js +0 -97
- package/build-module/components/off-canvas-editor/update-attributes.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-block-selection.js +0 -124
- package/build-module/components/off-canvas-editor/use-block-selection.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-inserted-block.js +0 -47
- package/build-module/components/off-canvas-editor/use-inserted-block.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +0 -24
- package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +0 -220
- package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -50
- package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
- package/build-module/components/off-canvas-editor/utils.js +0 -44
- package/build-module/components/off-canvas-editor/utils.js.map +0 -1
- package/src/components/block-list/block-list-compact.native.js +0 -63
- package/src/components/off-canvas-editor/README.md +0 -5
- package/src/components/off-canvas-editor/appender.js +0 -124
- package/src/components/off-canvas-editor/block-contents.js +0 -156
- package/src/components/off-canvas-editor/block-select-button.js +0 -128
- package/src/components/off-canvas-editor/block.js +0 -347
- package/src/components/off-canvas-editor/branch.js +0 -238
- package/src/components/off-canvas-editor/context.js +0 -8
- package/src/components/off-canvas-editor/drop-indicator.js +0 -126
- package/src/components/off-canvas-editor/expander.js +0 -26
- package/src/components/off-canvas-editor/index.js +0 -271
- package/src/components/off-canvas-editor/leaf-more-menu.js +0 -157
- package/src/components/off-canvas-editor/leaf.js +0 -52
- package/src/components/off-canvas-editor/link-ui.js +0 -167
- package/src/components/off-canvas-editor/style.scss +0 -34
- package/src/components/off-canvas-editor/test/use-inserted-block.js +0 -108
- package/src/components/off-canvas-editor/test/utils.js +0 -50
- package/src/components/off-canvas-editor/update-attributes.js +0 -99
- package/src/components/off-canvas-editor/use-block-selection.js +0 -169
- package/src/components/off-canvas-editor/use-inserted-block.js +0 -47
- package/src/components/off-canvas-editor/use-list-view-client-ids.js +0 -29
- package/src/components/off-canvas-editor/use-list-view-drop-zone.js +0 -260
- package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -58
- package/src/components/off-canvas-editor/utils.js +0 -58
|
@@ -38,9 +38,10 @@ import { getBlockPositionDescription } from './utils';
|
|
|
38
38
|
import { store as blockEditorStore } from '../../store';
|
|
39
39
|
import useBlockDisplayInformation from '../use-block-display-information';
|
|
40
40
|
import { useBlockLock } from '../block-lock';
|
|
41
|
+
import { unlock } from '../../lock-unlock';
|
|
41
42
|
|
|
42
43
|
function ListViewBlock( {
|
|
43
|
-
block,
|
|
44
|
+
block: { clientId },
|
|
44
45
|
isDragged,
|
|
45
46
|
isSelected,
|
|
46
47
|
isBranchSelected,
|
|
@@ -58,51 +59,42 @@ function ListViewBlock( {
|
|
|
58
59
|
const cellRef = useRef( null );
|
|
59
60
|
const rowRef = useRef( null );
|
|
60
61
|
const [ isHovered, setIsHovered ] = useState( false );
|
|
61
|
-
const { clientId } = block;
|
|
62
62
|
|
|
63
|
-
const { isLocked,
|
|
64
|
-
const forceSelectionContentLock = useSelect(
|
|
65
|
-
( select ) => {
|
|
66
|
-
if ( isSelected ) {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
if ( ! isContentLocked ) {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
return select( blockEditorStore ).hasSelectedInnerBlock(
|
|
73
|
-
clientId,
|
|
74
|
-
true
|
|
75
|
-
);
|
|
76
|
-
},
|
|
77
|
-
[ isContentLocked, clientId, isSelected ]
|
|
78
|
-
);
|
|
63
|
+
const { isLocked, canEdit } = useBlockLock( clientId );
|
|
79
64
|
|
|
80
|
-
const canExpand = isContentLocked ? false : canEdit;
|
|
81
65
|
const isFirstSelectedBlock =
|
|
82
|
-
|
|
83
|
-
( isSelected && selectedClientIds[ 0 ] === clientId );
|
|
66
|
+
isSelected && selectedClientIds[ 0 ] === clientId;
|
|
84
67
|
const isLastSelectedBlock =
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
selectedClientIds[ selectedClientIds.length - 1 ] === clientId );
|
|
68
|
+
isSelected &&
|
|
69
|
+
selectedClientIds[ selectedClientIds.length - 1 ] === clientId;
|
|
88
70
|
|
|
89
71
|
const { toggleBlockHighlight } = useDispatch( blockEditorStore );
|
|
90
72
|
|
|
91
73
|
const blockInformation = useBlockDisplayInformation( clientId );
|
|
92
74
|
const blockTitle = blockInformation?.title || __( 'Untitled' );
|
|
75
|
+
const block = useSelect(
|
|
76
|
+
( select ) => select( blockEditorStore ).getBlock( clientId ),
|
|
77
|
+
[ clientId ]
|
|
78
|
+
);
|
|
93
79
|
const blockName = useSelect(
|
|
94
80
|
( select ) => select( blockEditorStore ).getBlockName( clientId ),
|
|
95
81
|
[ clientId ]
|
|
96
82
|
);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
'__experimentalToolbar',
|
|
104
|
-
true
|
|
83
|
+
const blockEditingMode = useSelect(
|
|
84
|
+
( select ) =>
|
|
85
|
+
unlock( select( blockEditorStore ) ).getBlockEditingMode(
|
|
86
|
+
clientId
|
|
87
|
+
),
|
|
88
|
+
[ clientId ]
|
|
105
89
|
);
|
|
90
|
+
|
|
91
|
+
const showBlockActions =
|
|
92
|
+
// When a block hides its toolbar it also hides the block settings menu,
|
|
93
|
+
// since that menu is part of the toolbar in the editor canvas.
|
|
94
|
+
// List View respects this by also hiding the block settings menu.
|
|
95
|
+
hasBlockSupport( blockName, '__experimentalToolbar', true ) &&
|
|
96
|
+
// Don't show the settings menu if block is disabled or content only.
|
|
97
|
+
blockEditingMode === 'default';
|
|
106
98
|
const instanceId = useInstanceId( ListViewBlock );
|
|
107
99
|
const descriptionId = `list-view-block-select-button__${ instanceId }`;
|
|
108
100
|
const blockPositionDescription = getBlockPositionDescription(
|
|
@@ -131,6 +123,8 @@ function ListViewBlock( {
|
|
|
131
123
|
collapse,
|
|
132
124
|
BlockSettingsMenu,
|
|
133
125
|
listViewInstanceId,
|
|
126
|
+
expandedState,
|
|
127
|
+
setInsertedBlock,
|
|
134
128
|
} = useListViewContext();
|
|
135
129
|
|
|
136
130
|
const hasSiblings = siblingBlockCount > 0;
|
|
@@ -200,7 +194,7 @@ function ListViewBlock( {
|
|
|
200
194
|
}
|
|
201
195
|
|
|
202
196
|
const classes = classnames( {
|
|
203
|
-
'is-selected': isSelected
|
|
197
|
+
'is-selected': isSelected,
|
|
204
198
|
'is-first-selected': isFirstSelectedBlock,
|
|
205
199
|
'is-last-selected': isLastSelectedBlock,
|
|
206
200
|
'is-branch-selected': isBranchSelected,
|
|
@@ -244,14 +238,14 @@ function ListViewBlock( {
|
|
|
244
238
|
path={ path }
|
|
245
239
|
id={ `list-view-${ listViewInstanceId }-block-${ clientId }` }
|
|
246
240
|
data-block={ clientId }
|
|
247
|
-
data-expanded={
|
|
241
|
+
data-expanded={ canEdit ? isExpanded : undefined }
|
|
248
242
|
ref={ rowRef }
|
|
249
243
|
>
|
|
250
244
|
<TreeGridCell
|
|
251
245
|
className="block-editor-list-view-block__contents-cell"
|
|
252
246
|
colSpan={ colSpan }
|
|
253
247
|
ref={ cellRef }
|
|
254
|
-
aria-selected={ !! isSelected
|
|
248
|
+
aria-selected={ !! isSelected }
|
|
255
249
|
>
|
|
256
250
|
{ ( { ref, tabIndex, onFocus } ) => (
|
|
257
251
|
<div className="block-editor-list-view-block__contents-container">
|
|
@@ -268,7 +262,7 @@ function ListViewBlock( {
|
|
|
268
262
|
currentlyEditingBlockInCanvas ? 0 : tabIndex
|
|
269
263
|
}
|
|
270
264
|
onFocus={ onFocus }
|
|
271
|
-
isExpanded={
|
|
265
|
+
isExpanded={ canEdit ? isExpanded : undefined }
|
|
272
266
|
selectedClientIds={ selectedClientIds }
|
|
273
267
|
ariaLabel={ blockAriaLabel }
|
|
274
268
|
ariaDescribedBy={ descriptionId }
|
|
@@ -317,7 +311,7 @@ function ListViewBlock( {
|
|
|
317
311
|
{ showBlockActions && BlockSettingsMenu && (
|
|
318
312
|
<TreeGridCell
|
|
319
313
|
className={ listViewBlockSettingsClassName }
|
|
320
|
-
aria-selected={ !! isSelected
|
|
314
|
+
aria-selected={ !! isSelected }
|
|
321
315
|
>
|
|
322
316
|
{ ( { ref, tabIndex, onFocus } ) => (
|
|
323
317
|
<BlockSettingsMenu
|
|
@@ -333,6 +327,9 @@ function ListViewBlock( {
|
|
|
333
327
|
} }
|
|
334
328
|
disableOpenOnArrowDown
|
|
335
329
|
__experimentalSelectBlock={ updateSelection }
|
|
330
|
+
expand={ expand }
|
|
331
|
+
expandedState={ expandedState }
|
|
332
|
+
setInsertedBlock={ setInsertedBlock }
|
|
336
333
|
/>
|
|
337
334
|
) }
|
|
338
335
|
</TreeGridCell>
|
|
@@ -109,13 +109,7 @@ function ListViewBranch( props ) {
|
|
|
109
109
|
if ( ! parentId ) {
|
|
110
110
|
return true;
|
|
111
111
|
}
|
|
112
|
-
|
|
113
|
-
const isContentLocked =
|
|
114
|
-
select( blockEditorStore ).getTemplateLock( parentId ) ===
|
|
115
|
-
'contentOnly';
|
|
116
|
-
const canEdit = select( blockEditorStore ).canEditBlock( parentId );
|
|
117
|
-
|
|
118
|
-
return isContentLocked ? false : canEdit;
|
|
112
|
+
return select( blockEditorStore ).canEditBlock( parentId );
|
|
119
113
|
},
|
|
120
114
|
[ parentId ]
|
|
121
115
|
);
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
useRef,
|
|
17
17
|
useReducer,
|
|
18
18
|
forwardRef,
|
|
19
|
+
useState,
|
|
19
20
|
} from '@wordpress/element';
|
|
20
21
|
import { __ } from '@wordpress/i18n';
|
|
21
22
|
|
|
@@ -56,16 +57,18 @@ export const BLOCK_LIST_ITEM_HEIGHT = 36;
|
|
|
56
57
|
/**
|
|
57
58
|
* Show a hierarchical list of blocks.
|
|
58
59
|
*
|
|
59
|
-
* @param {Object} props
|
|
60
|
-
* @param {string} props.id
|
|
61
|
-
* @param {Array} props.blocks
|
|
62
|
-
* @param {?boolean} props.showBlockMovers
|
|
63
|
-
* @param {?boolean} props.isExpanded
|
|
64
|
-
* @param {?boolean} props.showAppender
|
|
65
|
-
* @param {?ComponentType} props.blockSettingsMenu
|
|
66
|
-
* @param {string} props.rootClientId
|
|
67
|
-
* @param {string} props.description
|
|
68
|
-
* @param {
|
|
60
|
+
* @param {Object} props Components props.
|
|
61
|
+
* @param {string} props.id An HTML element id for the root element of ListView.
|
|
62
|
+
* @param {Array} props.blocks _deprecated_ Custom subset of block client IDs to be used instead of the default hierarchy.
|
|
63
|
+
* @param {?boolean} props.showBlockMovers Flag to enable block movers. Defaults to `false`.
|
|
64
|
+
* @param {?boolean} props.isExpanded Flag to determine whether nested levels are expanded by default. Defaults to `false`.
|
|
65
|
+
* @param {?boolean} props.showAppender Flag to show or hide the block appender. Defaults to `false`.
|
|
66
|
+
* @param {?ComponentType} props.blockSettingsMenu Optional more menu substitution. Defaults to the standard `BlockSettingsDropdown` component.
|
|
67
|
+
* @param {string} props.rootClientId The client id of the root block from which we determine the blocks to show in the list.
|
|
68
|
+
* @param {string} props.description Optional accessible description for the tree grid component.
|
|
69
|
+
* @param {?Function} props.onSelect Optional callback to be invoked when a block is selected. Receives the block object that was selected.
|
|
70
|
+
* @param {Function} props.renderAdditionalBlockUI Function that renders additional block content UI.
|
|
71
|
+
* @param {Ref} ref Forwarded ref
|
|
69
72
|
*/
|
|
70
73
|
function ListViewComponent(
|
|
71
74
|
{
|
|
@@ -77,6 +80,8 @@ function ListViewComponent(
|
|
|
77
80
|
blockSettingsMenu: BlockSettingsMenu = BlockSettingsDropdown,
|
|
78
81
|
rootClientId,
|
|
79
82
|
description,
|
|
83
|
+
onSelect,
|
|
84
|
+
renderAdditionalBlockUI,
|
|
80
85
|
},
|
|
81
86
|
ref
|
|
82
87
|
) {
|
|
@@ -95,6 +100,7 @@ function ListViewComponent(
|
|
|
95
100
|
const { clientIdsTree, draggedClientIds, selectedClientIds } =
|
|
96
101
|
useListViewClientIds( { blocks, rootClientId } );
|
|
97
102
|
|
|
103
|
+
const { getBlock } = useSelect( blockEditorStore );
|
|
98
104
|
const { visibleBlockCount, shouldShowInnerBlocks } = useSelect(
|
|
99
105
|
( select ) => {
|
|
100
106
|
const {
|
|
@@ -123,16 +129,22 @@ function ListViewComponent(
|
|
|
123
129
|
const treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );
|
|
124
130
|
|
|
125
131
|
const isMounted = useRef( false );
|
|
132
|
+
|
|
133
|
+
const [ insertedBlock, setInsertedBlock ] = useState( null );
|
|
134
|
+
|
|
126
135
|
const { setSelectedTreeId } = useListViewExpandSelectedItem( {
|
|
127
136
|
firstSelectedBlockClientId: selectedClientIds[ 0 ],
|
|
128
137
|
setExpandedState,
|
|
129
138
|
} );
|
|
130
139
|
const selectEditorBlock = useCallback(
|
|
131
|
-
( event,
|
|
132
|
-
updateBlockSelection( event,
|
|
133
|
-
setSelectedTreeId(
|
|
140
|
+
( event, blockClientId ) => {
|
|
141
|
+
updateBlockSelection( event, blockClientId );
|
|
142
|
+
setSelectedTreeId( blockClientId );
|
|
143
|
+
if ( onSelect ) {
|
|
144
|
+
onSelect( getBlock( blockClientId ) );
|
|
145
|
+
}
|
|
134
146
|
},
|
|
135
|
-
[ setSelectedTreeId, updateBlockSelection ]
|
|
147
|
+
[ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]
|
|
136
148
|
);
|
|
137
149
|
useEffect( () => {
|
|
138
150
|
isMounted.current = true;
|
|
@@ -203,6 +215,9 @@ function ListViewComponent(
|
|
|
203
215
|
collapse,
|
|
204
216
|
BlockSettingsMenu,
|
|
205
217
|
listViewInstanceId: instanceId,
|
|
218
|
+
renderAdditionalBlockUI,
|
|
219
|
+
insertedBlock,
|
|
220
|
+
setInsertedBlock,
|
|
206
221
|
} ),
|
|
207
222
|
[
|
|
208
223
|
draggedClientIds,
|
|
@@ -211,11 +226,14 @@ function ListViewComponent(
|
|
|
211
226
|
collapse,
|
|
212
227
|
BlockSettingsMenu,
|
|
213
228
|
instanceId,
|
|
229
|
+
renderAdditionalBlockUI,
|
|
230
|
+
insertedBlock,
|
|
231
|
+
setInsertedBlock,
|
|
214
232
|
]
|
|
215
233
|
);
|
|
216
234
|
|
|
217
|
-
// If there are no blocks to show, do not render the list view.
|
|
218
|
-
if ( ! clientIdsTree.length ) {
|
|
235
|
+
// If there are no blocks to show and we're not showing the appender, do not render the list view.
|
|
236
|
+
if ( ! clientIdsTree.length && ! showAppender ) {
|
|
219
237
|
return null;
|
|
220
238
|
}
|
|
221
239
|
|
|
@@ -254,16 +272,23 @@ function ListViewComponent(
|
|
|
254
272
|
</AsyncModeProvider>
|
|
255
273
|
);
|
|
256
274
|
}
|
|
275
|
+
|
|
276
|
+
// This is the private API for the ListView component.
|
|
277
|
+
// It allows access to all props, not just the public ones.
|
|
257
278
|
export const PrivateListView = forwardRef( ListViewComponent );
|
|
258
279
|
|
|
280
|
+
// This is the public API for the ListView component.
|
|
281
|
+
// We wrap the PrivateListView component to hide some props from the public API.
|
|
259
282
|
export default forwardRef( ( props, ref ) => {
|
|
260
283
|
return (
|
|
261
284
|
<PrivateListView
|
|
262
285
|
ref={ ref }
|
|
263
286
|
{ ...props }
|
|
264
287
|
showAppender={ false }
|
|
265
|
-
blockSettingsMenu={ BlockSettingsDropdown }
|
|
266
288
|
rootClientId={ null }
|
|
289
|
+
onSelect={ null }
|
|
290
|
+
renderAdditionalBlockUI={ null }
|
|
291
|
+
blockSettingsMenu={ undefined }
|
|
267
292
|
/>
|
|
268
293
|
);
|
|
269
294
|
} );
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
// Use position relative for row animation.
|
|
16
16
|
position: relative;
|
|
17
17
|
|
|
18
|
-
.
|
|
18
|
+
.block-editor-list-view-block-select-button {
|
|
19
19
|
// When a row is expanded, retain the dark color.
|
|
20
20
|
&[aria-expanded="true"] {
|
|
21
|
-
color:
|
|
21
|
+
color: inherit;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// Ensure that on hover, the admin color is still used.
|
|
@@ -123,7 +123,6 @@
|
|
|
123
123
|
border-radius: 0;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
|
|
127
126
|
// List View renders a fixed number of items and relies on each item having a fixed height of 36px.
|
|
128
127
|
// If this value changes, we should also change the itemHeight value set in useFixedWindowList.
|
|
129
128
|
// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.
|
|
@@ -214,19 +213,17 @@
|
|
|
214
213
|
line-height: 0;
|
|
215
214
|
width: $button-size;
|
|
216
215
|
vertical-align: middle;
|
|
217
|
-
@include reduce-motion("transition");
|
|
218
216
|
|
|
219
217
|
> * {
|
|
220
|
-
will-change: opacity;
|
|
221
218
|
opacity: 0;
|
|
222
219
|
}
|
|
223
220
|
|
|
224
|
-
// Show on hover, visible, and show above to keep the hit area size.
|
|
221
|
+
// Show on hover, visible, when focused, and show above to keep the hit area size.
|
|
225
222
|
&:hover,
|
|
223
|
+
&:focus-within,
|
|
226
224
|
&.is-visible {
|
|
227
225
|
> * {
|
|
228
226
|
opacity: 1;
|
|
229
|
-
@include edit-post__fade-in-animation;
|
|
230
227
|
}
|
|
231
228
|
}
|
|
232
229
|
|
|
@@ -376,6 +373,9 @@ $block-navigation-max-indent: 8;
|
|
|
376
373
|
}
|
|
377
374
|
}
|
|
378
375
|
|
|
376
|
+
// When updating the margin for each indentation level, the corresponding
|
|
377
|
+
// indentation in `use-list-view-drop-zone.js` must be updated as well
|
|
378
|
+
// to ensure the drop zone is aligned with the indentation.
|
|
379
379
|
@for $i from 0 to $block-navigation-max-indent {
|
|
380
380
|
.block-editor-list-view-leaf[aria-level="#{ $i + 1 }"] .block-editor-list-view__expander {
|
|
381
381
|
@if $i - 1 >= 0 {
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Internal dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
getListViewDropTarget,
|
|
6
|
+
NESTING_LEVEL_INDENTATION,
|
|
7
|
+
} from '../use-list-view-drop-zone';
|
|
5
8
|
|
|
6
9
|
describe( 'getListViewDropTarget', () => {
|
|
7
10
|
const blocksData = [
|
|
@@ -15,10 +18,10 @@ describe( 'getListViewDropTarget', () => {
|
|
|
15
18
|
top: 50,
|
|
16
19
|
bottom: 100,
|
|
17
20
|
left: 10,
|
|
18
|
-
right:
|
|
21
|
+
right: 300,
|
|
19
22
|
x: 10,
|
|
20
23
|
y: 50,
|
|
21
|
-
width:
|
|
24
|
+
width: 290,
|
|
22
25
|
height: 50,
|
|
23
26
|
} ),
|
|
24
27
|
},
|
|
@@ -26,6 +29,7 @@ describe( 'getListViewDropTarget', () => {
|
|
|
26
29
|
isDraggedBlock: false,
|
|
27
30
|
isExpanded: true,
|
|
28
31
|
rootClientId: '',
|
|
32
|
+
nestingLevel: 1,
|
|
29
33
|
},
|
|
30
34
|
{
|
|
31
35
|
blockIndex: 0,
|
|
@@ -37,32 +41,56 @@ describe( 'getListViewDropTarget', () => {
|
|
|
37
41
|
top: 100,
|
|
38
42
|
bottom: 150,
|
|
39
43
|
left: 10,
|
|
40
|
-
right:
|
|
44
|
+
right: 300,
|
|
41
45
|
x: 10,
|
|
42
46
|
y: 100,
|
|
43
|
-
width:
|
|
47
|
+
width: 290,
|
|
44
48
|
height: 50,
|
|
45
49
|
} ),
|
|
46
50
|
},
|
|
47
|
-
innerBlockCount:
|
|
51
|
+
innerBlockCount: 1,
|
|
48
52
|
isDraggedBlock: false,
|
|
49
|
-
isExpanded:
|
|
53
|
+
isExpanded: true,
|
|
50
54
|
rootClientId: 'block-1',
|
|
55
|
+
nestingLevel: 2,
|
|
51
56
|
},
|
|
52
57
|
{
|
|
53
|
-
blockIndex:
|
|
58
|
+
blockIndex: 0,
|
|
54
59
|
canInsertDraggedBlocksAsChild: true,
|
|
55
60
|
canInsertDraggedBlocksAsSibling: true,
|
|
56
61
|
clientId: 'block-3',
|
|
57
62
|
element: {
|
|
58
63
|
getBoundingClientRect: () => ( {
|
|
59
64
|
top: 150,
|
|
60
|
-
bottom:
|
|
65
|
+
bottom: 200,
|
|
61
66
|
left: 10,
|
|
62
|
-
right:
|
|
67
|
+
right: 300,
|
|
63
68
|
x: 10,
|
|
64
69
|
y: 150,
|
|
65
|
-
width:
|
|
70
|
+
width: 290,
|
|
71
|
+
height: 50,
|
|
72
|
+
} ),
|
|
73
|
+
},
|
|
74
|
+
innerBlockCount: 0,
|
|
75
|
+
isDraggedBlock: false,
|
|
76
|
+
isExpanded: true,
|
|
77
|
+
rootClientId: 'block-2',
|
|
78
|
+
nestingLevel: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
blockIndex: 1,
|
|
82
|
+
canInsertDraggedBlocksAsChild: true,
|
|
83
|
+
canInsertDraggedBlocksAsSibling: true,
|
|
84
|
+
clientId: 'block-4',
|
|
85
|
+
element: {
|
|
86
|
+
getBoundingClientRect: () => ( {
|
|
87
|
+
top: 200,
|
|
88
|
+
bottom: 250,
|
|
89
|
+
left: 10,
|
|
90
|
+
right: 300,
|
|
91
|
+
x: 10,
|
|
92
|
+
y: 200,
|
|
93
|
+
width: 290,
|
|
66
94
|
height: 50,
|
|
67
95
|
} ),
|
|
68
96
|
},
|
|
@@ -70,6 +98,7 @@ describe( 'getListViewDropTarget', () => {
|
|
|
70
98
|
isDraggedBlock: false,
|
|
71
99
|
isExpanded: false,
|
|
72
100
|
rootClientId: '',
|
|
101
|
+
nestingLevel: 1,
|
|
73
102
|
},
|
|
74
103
|
];
|
|
75
104
|
|
|
@@ -96,8 +125,55 @@ describe( 'getListViewDropTarget', () => {
|
|
|
96
125
|
} );
|
|
97
126
|
} );
|
|
98
127
|
|
|
128
|
+
it( 'should nest when dragging a block over the right side of the bottom half of a block nested to three levels', () => {
|
|
129
|
+
const position = { x: 250, y: 180 };
|
|
130
|
+
const target = getListViewDropTarget( blocksData, position );
|
|
131
|
+
|
|
132
|
+
expect( target ).toEqual( {
|
|
133
|
+
blockIndex: 0,
|
|
134
|
+
dropPosition: 'inside',
|
|
135
|
+
rootClientId: 'block-3',
|
|
136
|
+
} );
|
|
137
|
+
} );
|
|
138
|
+
|
|
139
|
+
it( 'should drag below when positioned at the bottom half of a block nested to three levels, and over the third level horizontally', () => {
|
|
140
|
+
const position = { x: 10 + NESTING_LEVEL_INDENTATION * 3, y: 180 };
|
|
141
|
+
const target = getListViewDropTarget( blocksData, position );
|
|
142
|
+
|
|
143
|
+
expect( target ).toEqual( {
|
|
144
|
+
blockIndex: 1,
|
|
145
|
+
clientId: 'block-3',
|
|
146
|
+
dropPosition: 'bottom',
|
|
147
|
+
rootClientId: 'block-2',
|
|
148
|
+
} );
|
|
149
|
+
} );
|
|
150
|
+
|
|
151
|
+
it( 'should drag one level up below when positioned at the bottom half of a block nested to three levels, and over the second level horizontally', () => {
|
|
152
|
+
const position = { x: 10 + NESTING_LEVEL_INDENTATION * 2, y: 180 };
|
|
153
|
+
const target = getListViewDropTarget( blocksData, position );
|
|
154
|
+
|
|
155
|
+
expect( target ).toEqual( {
|
|
156
|
+
blockIndex: 1,
|
|
157
|
+
clientId: 'block-3',
|
|
158
|
+
dropPosition: 'bottom',
|
|
159
|
+
rootClientId: 'block-1',
|
|
160
|
+
} );
|
|
161
|
+
} );
|
|
162
|
+
|
|
163
|
+
it( 'should drag two levels up below when positioned at the bottom half of a block nested to three levels, and over the first level horizontally', () => {
|
|
164
|
+
const position = { x: 10 + NESTING_LEVEL_INDENTATION, y: 180 };
|
|
165
|
+
const target = getListViewDropTarget( blocksData, position );
|
|
166
|
+
|
|
167
|
+
expect( target ).toEqual( {
|
|
168
|
+
blockIndex: 1,
|
|
169
|
+
clientId: 'block-3',
|
|
170
|
+
dropPosition: 'bottom',
|
|
171
|
+
rootClientId: '',
|
|
172
|
+
} );
|
|
173
|
+
} );
|
|
174
|
+
|
|
99
175
|
it( 'should nest when dragging a block over the right side and bottom half of a collapsed block with children', () => {
|
|
100
|
-
const position = { x:
|
|
176
|
+
const position = { x: 160, y: 90 };
|
|
101
177
|
|
|
102
178
|
const collapsedBlockData = [ ...blocksData ];
|
|
103
179
|
|
|
@@ -8,6 +8,7 @@ import { useSelect } from '@wordpress/data';
|
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
10
|
import { store as blockEditorStore } from '../../store';
|
|
11
|
+
import { unlock } from '../../lock-unlock';
|
|
11
12
|
|
|
12
13
|
export default function useListViewClientIds( { blocks, rootClientId } ) {
|
|
13
14
|
return useSelect(
|
|
@@ -16,14 +17,30 @@ export default function useListViewClientIds( { blocks, rootClientId } ) {
|
|
|
16
17
|
getDraggedBlockClientIds,
|
|
17
18
|
getSelectedBlockClientIds,
|
|
18
19
|
__unstableGetClientIdsTree,
|
|
19
|
-
|
|
20
|
+
getBlockEditingMode,
|
|
21
|
+
} = unlock( select( blockEditorStore ) );
|
|
22
|
+
|
|
23
|
+
const removeDisabledBlocks = ( tree ) => {
|
|
24
|
+
return tree.flatMap( ( { clientId, innerBlocks, ...rest } ) => {
|
|
25
|
+
if ( getBlockEditingMode( clientId ) === 'disabled' ) {
|
|
26
|
+
return removeDisabledBlocks( innerBlocks );
|
|
27
|
+
}
|
|
28
|
+
return [
|
|
29
|
+
{
|
|
30
|
+
clientId,
|
|
31
|
+
innerBlocks: removeDisabledBlocks( innerBlocks ),
|
|
32
|
+
...rest,
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
} );
|
|
36
|
+
};
|
|
20
37
|
|
|
21
38
|
return {
|
|
22
39
|
selectedClientIds: getSelectedBlockClientIds(),
|
|
23
40
|
draggedClientIds: getDraggedBlockClientIds(),
|
|
24
|
-
clientIdsTree:
|
|
25
|
-
|
|
26
|
-
|
|
41
|
+
clientIdsTree: removeDisabledBlocks(
|
|
42
|
+
blocks ?? __unstableGetClientIdsTree( rootClientId )
|
|
43
|
+
),
|
|
27
44
|
};
|
|
28
45
|
},
|
|
29
46
|
[ blocks, rootClientId ]
|