@wordpress/block-editor 11.8.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +16 -4
- 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-info-slot-fill/index.js +47 -0
- package/build/components/block-info-slot-fill/index.js.map +1 -0
- package/build/components/block-inspector/index.js +4 -2
- package/build/components/block-inspector/index.js.map +1 -1
- 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-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.native.js +343 -300
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.native.js +202 -298
- 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-mobile-toolbar/block-actions-menu.native.js +1 -1
- 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-toolbar/index.js +2 -1
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +40 -11
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +8 -30
- 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/editor-styles/index.js +4 -3
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +21 -14
- package/build/components/font-sizes/fluid-utils.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/border-panel.js +2 -32
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +16 -13
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.native.js +174 -0
- package/build/components/global-styles/color-panel.native.js.map +1 -0
- package/build/components/global-styles/dimensions-panel.js +12 -12
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/effects-panel.js +1 -1
- package/build/components/global-styles/effects-panel.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +78 -14
- package/build/components/global-styles/filters-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 +10 -10
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +114 -81
- 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/image-editor/use-save-image.js +24 -8
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/index.js +7 -0
- package/build/components/index.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +12 -7
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/index.js +2 -1
- package/build/components/inserter/index.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/groups.js +2 -0
- package/build/components/inspector-controls/groups.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/inspector-controls-tabs/styles-tab.js +2 -0
- package/build/components/inspector-controls-tabs/styles-tab.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/block-contents.js +7 -2
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block-select-button.js +9 -3
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +16 -25
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +37 -10
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/list-view/index.js +38 -18
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/leaf.js +2 -1
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +1 -1
- package/build/components/list-view/use-block-selection.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/media-replace-flow/index.js +5 -5
- package/build/components/media-replace-flow/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/navigable-toolbar/index.js +12 -4
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/off-canvas-editor/appender.js +2 -7
- package/build/components/off-canvas-editor/appender.js.map +1 -1
- package/build/components/off-canvas-editor/leaf-more-menu.js +3 -1
- package/build/components/off-canvas-editor/leaf-more-menu.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/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 +1 -2
- package/build/components/url-input/index.js.map +1 -1
- package/build/hooks/align.js +1 -1
- package/build/hooks/align.js.map +1 -1
- 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/duotone.js +29 -4
- package/build/hooks/duotone.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 +2 -2
- 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/hooks/utils.js +15 -3
- package/build/hooks/utils.js.map +1 -1
- package/build/index.native.js +31 -0
- package/build/index.native.js.map +1 -0
- package/build/private-apis.js +10 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +7 -0
- package/build/store/actions.js.map +1 -1
- package/build/utils/object.js +5 -5
- package/build/utils/object.js.map +1 -1
- package/build/utils/transform-styles/index.js +2 -2
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build/utils/use-should-contextual-toolbar-show.js +72 -0
- package/build/utils/use-should-contextual-toolbar-show.js.map +1 -0
- 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-info-slot-fill/index.js +34 -0
- package/build-module/components/block-info-slot-fill/index.js.map +1 -0
- package/build-module/components/block-inspector/index.js +3 -2
- package/build-module/components/block-inspector/index.js.map +1 -1
- 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-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.native.js +341 -299
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.native.js +203 -293
- 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-mobile-toolbar/block-actions-menu.native.js +1 -1
- 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-toolbar/index.js +2 -1
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +37 -11
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +8 -29
- 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/editor-styles/index.js +4 -3
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +21 -14
- package/build-module/components/font-sizes/fluid-utils.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/border-panel.js +2 -32
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +18 -15
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.native.js +150 -0
- package/build-module/components/global-styles/color-panel.native.js.map +1 -0
- package/build-module/components/global-styles/dimensions-panel.js +13 -13
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/effects-panel.js +2 -2
- package/build-module/components/global-styles/effects-panel.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +78 -16
- package/build-module/components/global-styles/filters-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 +11 -11
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +112 -81
- 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/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/index.js +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.js +12 -6
- package/build-module/components/inserter/block-types-tab.js.map +1 -1
- package/build-module/components/inserter/index.js +2 -1
- package/build-module/components/inserter/index.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/groups.js +2 -0
- package/build-module/components/inspector-controls/groups.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/inspector-controls-tabs/styles-tab.js +2 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.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/block-contents.js +7 -3
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +9 -3
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +18 -26
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +36 -10
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/list-view/index.js +39 -19
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/leaf.js +2 -1
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +1 -1
- package/build-module/components/list-view/use-block-selection.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/media-replace-flow/index.js +5 -5
- package/build-module/components/media-replace-flow/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/navigable-toolbar/index.js +12 -4
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/off-canvas-editor/appender.js +1 -5
- package/build-module/components/off-canvas-editor/appender.js.map +1 -1
- package/build-module/components/off-canvas-editor/leaf-more-menu.js +3 -1
- package/build-module/components/off-canvas-editor/leaf-more-menu.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/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 +1 -2
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/hooks/align.js +1 -1
- package/build-module/hooks/align.js.map +1 -1
- 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/duotone.js +28 -5
- package/build-module/hooks/duotone.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 +2 -2
- 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/hooks/utils.js +16 -4
- package/build-module/hooks/utils.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 +7 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +7 -0
- package/build-module/store/actions.js.map +1 -1
- package/build-module/utils/object.js +4 -4
- package/build-module/utils/object.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +2 -2
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-module/utils/use-should-contextual-toolbar-show.js +60 -0
- package/build-module/utils/use-should-contextual-toolbar-show.js.map +1 -0
- package/build-style/content-rtl.css +9 -7
- package/build-style/content.css +9 -7
- package/build-style/style-rtl.css +257 -56
- package/build-style/style.css +257 -56
- package/package.json +32 -32
- 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-info-slot-fill/index.js +24 -0
- package/src/components/block-inspector/index.js +3 -0
- package/src/components/block-list/block-invalid-warning.native.js +17 -9
- 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.native.js +564 -524
- package/src/components/block-list/content.scss +16 -16
- package/src/components/block-list/index.native.js +229 -298
- 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-mobile-toolbar/block-actions-menu.native.js +3 -1
- package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +9 -9
- package/src/components/block-mover/style.scss +10 -4
- package/src/components/block-mover/test/index.native.js +4 -4
- 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/style.scss +4 -4
- package/src/components/block-toolbar/index.js +4 -3
- package/src/components/block-toolbar/style.scss +56 -33
- package/src/components/block-tools/block-contextual-toolbar.js +64 -15
- package/src/components/block-tools/selected-block-popover.js +11 -46
- package/src/components/block-tools/style.scss +165 -3
- package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +16 -2
- package/src/components/editor-styles/index.js +9 -5
- package/src/components/font-sizes/fluid-utils.js +31 -14
- package/src/components/font-sizes/test/fluid-utils.js +5 -16
- package/src/components/global-styles/advanced-panel.js +82 -0
- package/src/components/global-styles/border-panel.js +1 -30
- package/src/components/global-styles/color-panel.js +19 -14
- package/src/components/global-styles/color-panel.native.js +207 -0
- package/src/components/global-styles/dimensions-panel.js +23 -13
- package/src/components/global-styles/effects-panel.js +2 -2
- package/src/components/global-styles/filters-panel.js +90 -17
- 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 +16 -1
- package/src/components/global-styles/test/typography-utils.js +63 -22
- package/src/components/global-styles/test/use-global-styles-output.js +126 -4
- package/src/components/global-styles/test/utils.js +57 -1
- package/src/components/global-styles/typography-panel.js +38 -12
- package/src/components/global-styles/use-global-styles-output.js +85 -67
- package/src/components/global-styles/utils.js +27 -0
- package/src/components/image-editor/use-save-image.js +20 -9
- package/src/components/index.js +1 -0
- package/src/components/inserter/block-types-tab.js +9 -6
- package/src/components/inserter/index.js +1 -1
- 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/groups.js +2 -0
- package/src/components/inspector-controls/slot.js +4 -9
- package/src/components/inspector-controls/slot.native.js +1 -1
- package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
- 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/block-contents.js +26 -20
- package/src/components/list-view/block-select-button.js +11 -2
- package/src/components/list-view/block.js +28 -33
- package/src/components/list-view/drop-indicator.js +67 -22
- package/src/components/list-view/index.js +33 -14
- package/src/components/list-view/leaf.js +1 -0
- package/src/components/list-view/style.scss +18 -3
- package/src/components/list-view/test/use-list-view-drop-zone.js +88 -12
- package/src/components/list-view/use-block-selection.js +1 -1
- 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/media-replace-flow/README.md +3 -2
- package/src/components/media-replace-flow/index.js +4 -5
- package/src/components/multi-selection-inspector/index.js +2 -2
- package/src/components/navigable-toolbar/index.js +12 -3
- package/src/components/off-canvas-editor/appender.js +1 -4
- package/src/components/off-canvas-editor/leaf-more-menu.js +2 -1
- package/src/components/preview-options/index.js +9 -2
- package/src/components/spacing-sizes-control/spacing-input-control.js +1 -0
- package/src/components/url-input/index.js +1 -2
- package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -3
- package/src/hooks/align.js +2 -1
- 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/duotone.js +47 -25
- package/src/hooks/index.native.js +1 -0
- package/src/hooks/layout.js +4 -2
- package/src/hooks/position.js +2 -1
- package/src/hooks/style.js +2 -1
- package/src/hooks/test/anchor.js +113 -0
- package/src/hooks/test/color.js +0 -9
- package/src/hooks/test/use-editor-wrapper-styles.native.js +282 -0
- package/src/hooks/test/use-typography-props.js +49 -4
- package/src/hooks/test/utils.js +20 -101
- 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/hooks/utils.js +20 -3
- package/src/index.native.js +6 -0
- package/src/private-apis.js +6 -0
- package/src/store/actions.js +7 -0
- package/src/utils/object.js +4 -4
- package/src/utils/test/object.js +21 -21
- package/src/utils/transform-styles/index.js +2 -2
- package/src/utils/use-should-contextual-toolbar-show.js +85 -0
- package/tsconfig.json +2 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/hooks/color-panel.native.js +0 -77
- package/build/hooks/color-panel.native.js.map +0 -1
- package/build-module/hooks/color-panel.native.js +0 -62
- package/build-module/hooks/color-panel.native.js.map +0 -1
- package/src/hooks/color-panel.native.js +0 -63
|
@@ -2235,6 +2235,48 @@ describe( 'Controlling link title text', () => {
|
|
|
2235
2235
|
screen.queryByRole( 'textbox', { name: 'Text' } )
|
|
2236
2236
|
).not.toBeInTheDocument();
|
|
2237
2237
|
} );
|
|
2238
|
+
|
|
2239
|
+
it( 'should reset state on value change', async () => {
|
|
2240
|
+
const user = userEvent.setup();
|
|
2241
|
+
const textValue = 'My new text value';
|
|
2242
|
+
const mockOnChange = jest.fn();
|
|
2243
|
+
|
|
2244
|
+
const { rerender } = render(
|
|
2245
|
+
<LinkControl
|
|
2246
|
+
value={ selectedLink }
|
|
2247
|
+
forceIsEditingLink
|
|
2248
|
+
hasTextControl
|
|
2249
|
+
onChange={ mockOnChange }
|
|
2250
|
+
/>
|
|
2251
|
+
);
|
|
2252
|
+
|
|
2253
|
+
await toggleSettingsDrawer( user );
|
|
2254
|
+
|
|
2255
|
+
const textInput = screen.queryByRole( 'textbox', { name: 'Text' } );
|
|
2256
|
+
|
|
2257
|
+
expect( textInput ).toBeVisible();
|
|
2258
|
+
|
|
2259
|
+
await user.clear( textInput );
|
|
2260
|
+
await user.keyboard( textValue );
|
|
2261
|
+
|
|
2262
|
+
// Was originally title: 'Hello Page', but we've changed it.
|
|
2263
|
+
rerender(
|
|
2264
|
+
<LinkControl
|
|
2265
|
+
value={ {
|
|
2266
|
+
...selectedLink,
|
|
2267
|
+
title: 'Something else',
|
|
2268
|
+
} }
|
|
2269
|
+
forceIsEditingLink
|
|
2270
|
+
hasTextControl
|
|
2271
|
+
onChange={ mockOnChange }
|
|
2272
|
+
/>
|
|
2273
|
+
);
|
|
2274
|
+
|
|
2275
|
+
// The text input should not be showing as the form is submitted.
|
|
2276
|
+
expect( screen.queryByRole( 'textbox', { name: 'Text' } ) ).toHaveValue(
|
|
2277
|
+
'Something else'
|
|
2278
|
+
);
|
|
2279
|
+
} );
|
|
2238
2280
|
} );
|
|
2239
2281
|
|
|
2240
2282
|
async function toggleSettingsDrawer( user ) {
|
|
@@ -8,14 +8,15 @@ export default function useInternalInputValue( value ) {
|
|
|
8
8
|
value || ''
|
|
9
9
|
);
|
|
10
10
|
|
|
11
|
+
// If the value prop changes, update the internal state.
|
|
11
12
|
useEffect( () => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
13
|
+
setInternalInputValue( ( prevValue ) => {
|
|
14
|
+
if ( value && value !== prevValue ) {
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return prevValue;
|
|
19
|
+
} );
|
|
19
20
|
}, [ value ] );
|
|
20
21
|
|
|
21
22
|
return [ internalInputValue, setInternalInputValue ];
|
|
@@ -15,6 +15,7 @@ import { forwardRef } from '@wordpress/element';
|
|
|
15
15
|
import ListViewBlockSelectButton from './block-select-button';
|
|
16
16
|
import BlockDraggable from '../block-draggable';
|
|
17
17
|
import { store as blockEditorStore } from '../../store';
|
|
18
|
+
import { useListViewContext } from './context';
|
|
18
19
|
|
|
19
20
|
const ListViewBlockContents = forwardRef(
|
|
20
21
|
(
|
|
@@ -46,6 +47,8 @@ const ListViewBlockContents = forwardRef(
|
|
|
46
47
|
[ clientId ]
|
|
47
48
|
);
|
|
48
49
|
|
|
50
|
+
const { renderAdditionalBlockUI } = useListViewContext();
|
|
51
|
+
|
|
49
52
|
const isBlockMoveTarget =
|
|
50
53
|
blockMovingClientId && selectedBlockInBlockEditor === clientId;
|
|
51
54
|
|
|
@@ -62,26 +65,29 @@ const ListViewBlockContents = forwardRef(
|
|
|
62
65
|
: [ clientId ];
|
|
63
66
|
|
|
64
67
|
return (
|
|
65
|
-
|
|
66
|
-
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
68
|
+
<>
|
|
69
|
+
{ renderAdditionalBlockUI && renderAdditionalBlockUI( block ) }
|
|
70
|
+
<BlockDraggable clientIds={ draggableClientIds }>
|
|
71
|
+
{ ( { draggable, onDragStart, onDragEnd } ) => (
|
|
72
|
+
<ListViewBlockSelectButton
|
|
73
|
+
ref={ ref }
|
|
74
|
+
className={ className }
|
|
75
|
+
block={ block }
|
|
76
|
+
onClick={ onClick }
|
|
77
|
+
onToggleExpanded={ onToggleExpanded }
|
|
78
|
+
isSelected={ isSelected }
|
|
79
|
+
position={ position }
|
|
80
|
+
siblingBlockCount={ siblingBlockCount }
|
|
81
|
+
level={ level }
|
|
82
|
+
draggable={ draggable }
|
|
83
|
+
onDragStart={ onDragStart }
|
|
84
|
+
onDragEnd={ onDragEnd }
|
|
85
|
+
isExpanded={ isExpanded }
|
|
86
|
+
{ ...props }
|
|
87
|
+
/>
|
|
88
|
+
) }
|
|
89
|
+
</BlockDraggable>
|
|
90
|
+
</>
|
|
85
91
|
);
|
|
86
92
|
}
|
|
87
93
|
);
|
|
@@ -35,6 +35,9 @@ function ListViewBlockSelectButton(
|
|
|
35
35
|
onDragStart,
|
|
36
36
|
onDragEnd,
|
|
37
37
|
draggable,
|
|
38
|
+
isExpanded,
|
|
39
|
+
ariaLabel,
|
|
40
|
+
ariaDescribedBy,
|
|
38
41
|
},
|
|
39
42
|
ref
|
|
40
43
|
) {
|
|
@@ -76,10 +79,16 @@ function ListViewBlockSelectButton(
|
|
|
76
79
|
onDragEnd={ onDragEnd }
|
|
77
80
|
draggable={ draggable }
|
|
78
81
|
href={ `#block-${ clientId }` }
|
|
79
|
-
aria-
|
|
82
|
+
aria-label={ ariaLabel }
|
|
83
|
+
aria-describedby={ ariaDescribedBy }
|
|
84
|
+
aria-expanded={ isExpanded }
|
|
80
85
|
>
|
|
81
86
|
<ListViewExpander onClick={ onToggleExpanded } />
|
|
82
|
-
<BlockIcon
|
|
87
|
+
<BlockIcon
|
|
88
|
+
icon={ blockInformation?.icon }
|
|
89
|
+
showColors
|
|
90
|
+
context="list-view"
|
|
91
|
+
/>
|
|
83
92
|
<HStack
|
|
84
93
|
alignment="center"
|
|
85
94
|
className="block-editor-list-view-block-select-button__label-wrapper"
|
|
@@ -40,7 +40,7 @@ import useBlockDisplayInformation from '../use-block-display-information';
|
|
|
40
40
|
import { useBlockLock } from '../block-lock';
|
|
41
41
|
|
|
42
42
|
function ListViewBlock( {
|
|
43
|
-
block,
|
|
43
|
+
block: { clientId },
|
|
44
44
|
isDragged,
|
|
45
45
|
isSelected,
|
|
46
46
|
isBranchSelected,
|
|
@@ -53,13 +53,11 @@ function ListViewBlock( {
|
|
|
53
53
|
path,
|
|
54
54
|
isExpanded,
|
|
55
55
|
selectedClientIds,
|
|
56
|
-
preventAnnouncement,
|
|
57
56
|
isSyncedBranch,
|
|
58
57
|
} ) {
|
|
59
58
|
const cellRef = useRef( null );
|
|
60
59
|
const rowRef = useRef( null );
|
|
61
60
|
const [ isHovered, setIsHovered ] = useState( false );
|
|
62
|
-
const { clientId } = block;
|
|
63
61
|
|
|
64
62
|
const { isLocked, isContentLocked, canEdit } = useBlockLock( clientId );
|
|
65
63
|
const forceSelectionContentLock = useSelect(
|
|
@@ -90,6 +88,11 @@ function ListViewBlock( {
|
|
|
90
88
|
const { toggleBlockHighlight } = useDispatch( blockEditorStore );
|
|
91
89
|
|
|
92
90
|
const blockInformation = useBlockDisplayInformation( clientId );
|
|
91
|
+
const blockTitle = blockInformation?.title || __( 'Untitled' );
|
|
92
|
+
const block = useSelect(
|
|
93
|
+
( select ) => select( blockEditorStore ).getBlock( clientId ),
|
|
94
|
+
[ clientId ]
|
|
95
|
+
);
|
|
93
96
|
const blockName = useSelect(
|
|
94
97
|
( select ) => select( blockEditorStore ).getBlockName( clientId ),
|
|
95
98
|
[ clientId ]
|
|
@@ -111,31 +114,27 @@ function ListViewBlock( {
|
|
|
111
114
|
level
|
|
112
115
|
);
|
|
113
116
|
|
|
114
|
-
|
|
115
|
-
if ( blockInformation ) {
|
|
116
|
-
blockAriaLabel = isLocked
|
|
117
|
-
? sprintf(
|
|
118
|
-
// translators: %s: The title of the block. This string indicates a link to select the locked block.
|
|
119
|
-
__( '%s link (locked)' ),
|
|
120
|
-
blockInformation.title
|
|
121
|
-
)
|
|
122
|
-
: sprintf(
|
|
123
|
-
// translators: %s: The title of the block. This string indicates a link to select the block.
|
|
124
|
-
__( '%s link' ),
|
|
125
|
-
blockInformation.title
|
|
126
|
-
);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const settingsAriaLabel = blockInformation
|
|
117
|
+
const blockAriaLabel = isLocked
|
|
130
118
|
? sprintf(
|
|
131
|
-
// translators: %s: The title of the block.
|
|
132
|
-
__( '
|
|
133
|
-
|
|
119
|
+
// translators: %s: The title of the block. This string indicates a link to select the locked block.
|
|
120
|
+
__( '%s (locked)' ),
|
|
121
|
+
blockTitle
|
|
134
122
|
)
|
|
135
|
-
:
|
|
123
|
+
: blockTitle;
|
|
124
|
+
|
|
125
|
+
const settingsAriaLabel = sprintf(
|
|
126
|
+
// translators: %s: The title of the block.
|
|
127
|
+
__( 'Options for %s' ),
|
|
128
|
+
blockTitle
|
|
129
|
+
);
|
|
136
130
|
|
|
137
|
-
const {
|
|
138
|
-
|
|
131
|
+
const {
|
|
132
|
+
isTreeGridMounted,
|
|
133
|
+
expand,
|
|
134
|
+
collapse,
|
|
135
|
+
BlockSettingsMenu,
|
|
136
|
+
listViewInstanceId,
|
|
137
|
+
} = useListViewContext();
|
|
139
138
|
|
|
140
139
|
const hasSiblings = siblingBlockCount > 0;
|
|
141
140
|
const hasRenderedMovers = showBlockMovers && hasSiblings;
|
|
@@ -246,21 +245,16 @@ function ListViewBlock( {
|
|
|
246
245
|
position={ position }
|
|
247
246
|
rowCount={ rowCount }
|
|
248
247
|
path={ path }
|
|
249
|
-
id={ `list-view-block-${ clientId }` }
|
|
248
|
+
id={ `list-view-${ listViewInstanceId }-block-${ clientId }` }
|
|
250
249
|
data-block={ clientId }
|
|
251
250
|
data-expanded={ canExpand ? isExpanded : undefined }
|
|
252
|
-
isExpanded={ canExpand ? isExpanded : undefined }
|
|
253
|
-
aria-selected={ !! isSelected || forceSelectionContentLock }
|
|
254
251
|
ref={ rowRef }
|
|
255
252
|
>
|
|
256
253
|
<TreeGridCell
|
|
257
254
|
className="block-editor-list-view-block__contents-cell"
|
|
258
255
|
colSpan={ colSpan }
|
|
259
256
|
ref={ cellRef }
|
|
260
|
-
aria-label={ blockAriaLabel }
|
|
261
257
|
aria-selected={ !! isSelected || forceSelectionContentLock }
|
|
262
|
-
aria-expanded={ canExpand ? isExpanded : undefined }
|
|
263
|
-
aria-describedby={ descriptionId }
|
|
264
258
|
>
|
|
265
259
|
{ ( { ref, tabIndex, onFocus } ) => (
|
|
266
260
|
<div className="block-editor-list-view-block__contents-container">
|
|
@@ -277,9 +271,10 @@ function ListViewBlock( {
|
|
|
277
271
|
currentlyEditingBlockInCanvas ? 0 : tabIndex
|
|
278
272
|
}
|
|
279
273
|
onFocus={ onFocus }
|
|
280
|
-
isExpanded={ isExpanded }
|
|
274
|
+
isExpanded={ canExpand ? isExpanded : undefined }
|
|
281
275
|
selectedClientIds={ selectedClientIds }
|
|
282
|
-
|
|
276
|
+
ariaLabel={ blockAriaLabel }
|
|
277
|
+
ariaDescribedBy={ descriptionId }
|
|
283
278
|
/>
|
|
284
279
|
<div
|
|
285
280
|
className="block-editor-list-view-block-select-button__description"
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { Popover } from '@wordpress/components';
|
|
5
|
+
import { getScrollContainer } from '@wordpress/dom';
|
|
5
6
|
import { useCallback, useMemo } from '@wordpress/element';
|
|
6
7
|
|
|
7
8
|
export default function ListViewDropIndicator( {
|
|
@@ -40,33 +41,74 @@ export default function ListViewDropIndicator( {
|
|
|
40
41
|
// is undefined, so the indicator will appear after the rootBlockElement.
|
|
41
42
|
const targetElement = blockElement || rootBlockElement;
|
|
42
43
|
|
|
43
|
-
const getDropIndicatorIndent = useCallback(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
const getDropIndicatorIndent = useCallback(
|
|
45
|
+
( targetElementRect ) => {
|
|
46
|
+
if ( ! rootBlockElement ) {
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Calculate the indent using the block icon of the root block.
|
|
51
|
+
// Using a classname selector here might be flaky and could be
|
|
52
|
+
// improved.
|
|
53
|
+
const rootBlockIconElement = rootBlockElement.querySelector(
|
|
54
|
+
'.block-editor-block-icon'
|
|
55
|
+
);
|
|
56
|
+
const rootBlockIconRect =
|
|
57
|
+
rootBlockIconElement.getBoundingClientRect();
|
|
58
|
+
return rootBlockIconRect.right - targetElementRect.left;
|
|
59
|
+
},
|
|
60
|
+
[ rootBlockElement ]
|
|
61
|
+
);
|
|
47
62
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
63
|
+
const getDropIndicatorWidth = useCallback(
|
|
64
|
+
( targetElementRect, indent ) => {
|
|
65
|
+
if ( ! targetElement ) {
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Default to assuming that the width of the drop indicator
|
|
70
|
+
// should be the same as the target element.
|
|
71
|
+
let width = targetElement.offsetWidth;
|
|
72
|
+
|
|
73
|
+
// In deeply nested lists, where a scrollbar is present,
|
|
74
|
+
// the width of the drop indicator should be the width of
|
|
75
|
+
// the scroll container, minus the distance from the left
|
|
76
|
+
// edge of the scroll container to the left edge of the
|
|
77
|
+
// target element.
|
|
78
|
+
const scrollContainer = getScrollContainer(
|
|
79
|
+
targetElement,
|
|
80
|
+
'horizontal'
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
if ( scrollContainer ) {
|
|
84
|
+
const scrollContainerRect =
|
|
85
|
+
scrollContainer.getBoundingClientRect();
|
|
86
|
+
|
|
87
|
+
if ( scrollContainer.clientWidth < width ) {
|
|
88
|
+
width =
|
|
89
|
+
scrollContainer.clientWidth -
|
|
90
|
+
( targetElementRect.left - scrollContainerRect.left );
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Subtract the indent from the final width of the indicator.
|
|
95
|
+
return width - indent;
|
|
96
|
+
},
|
|
97
|
+
[ targetElement ]
|
|
98
|
+
);
|
|
58
99
|
|
|
59
100
|
const style = useMemo( () => {
|
|
60
101
|
if ( ! targetElement ) {
|
|
61
102
|
return {};
|
|
62
103
|
}
|
|
63
104
|
|
|
64
|
-
const
|
|
105
|
+
const targetElementRect = targetElement.getBoundingClientRect();
|
|
106
|
+
const indent = getDropIndicatorIndent( targetElementRect );
|
|
65
107
|
|
|
66
108
|
return {
|
|
67
|
-
width:
|
|
109
|
+
width: getDropIndicatorWidth( targetElementRect, indent ),
|
|
68
110
|
};
|
|
69
|
-
}, [ getDropIndicatorIndent, targetElement ] );
|
|
111
|
+
}, [ getDropIndicatorIndent, getDropIndicatorWidth, targetElement ] );
|
|
70
112
|
|
|
71
113
|
const popoverAnchor = useMemo( () => {
|
|
72
114
|
const isValidDropPosition =
|
|
@@ -81,10 +123,8 @@ export default function ListViewDropIndicator( {
|
|
|
81
123
|
ownerDocument: targetElement.ownerDocument,
|
|
82
124
|
getBoundingClientRect() {
|
|
83
125
|
const rect = targetElement.getBoundingClientRect();
|
|
84
|
-
const indent = getDropIndicatorIndent();
|
|
85
|
-
|
|
126
|
+
const indent = getDropIndicatorIndent( rect );
|
|
86
127
|
const left = rect.left + indent;
|
|
87
|
-
const right = rect.right;
|
|
88
128
|
let top = 0;
|
|
89
129
|
let bottom = 0;
|
|
90
130
|
|
|
@@ -97,13 +137,18 @@ export default function ListViewDropIndicator( {
|
|
|
97
137
|
bottom = rect.bottom;
|
|
98
138
|
}
|
|
99
139
|
|
|
100
|
-
const width =
|
|
140
|
+
const width = getDropIndicatorWidth( rect, indent );
|
|
101
141
|
const height = bottom - top;
|
|
102
142
|
|
|
103
143
|
return new window.DOMRect( left, top, width, height );
|
|
104
144
|
},
|
|
105
145
|
};
|
|
106
|
-
}, [
|
|
146
|
+
}, [
|
|
147
|
+
targetElement,
|
|
148
|
+
dropPosition,
|
|
149
|
+
getDropIndicatorIndent,
|
|
150
|
+
getDropIndicatorWidth,
|
|
151
|
+
] );
|
|
107
152
|
|
|
108
153
|
if ( ! targetElement ) {
|
|
109
154
|
return null;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import {
|
|
5
|
+
useInstanceId,
|
|
5
6
|
useMergeRefs,
|
|
6
7
|
__experimentalUseFixedWindowList as useFixedWindowList,
|
|
7
8
|
} from '@wordpress/compose';
|
|
@@ -55,15 +56,18 @@ export const BLOCK_LIST_ITEM_HEIGHT = 36;
|
|
|
55
56
|
/**
|
|
56
57
|
* Show a hierarchical list of blocks.
|
|
57
58
|
*
|
|
58
|
-
* @param {Object} props
|
|
59
|
-
* @param {string} props.id
|
|
60
|
-
* @param {Array} props.blocks
|
|
61
|
-
* @param {?boolean} props.showBlockMovers
|
|
62
|
-
* @param {?boolean} props.isExpanded
|
|
63
|
-
* @param {?boolean} props.showAppender
|
|
64
|
-
* @param {?ComponentType} props.blockSettingsMenu
|
|
65
|
-
* @param {string} props.rootClientId
|
|
66
|
-
* @param {
|
|
59
|
+
* @param {Object} props Components props.
|
|
60
|
+
* @param {string} props.id An HTML element id for the root element of ListView.
|
|
61
|
+
* @param {Array} props.blocks _deprecated_ Custom subset of block client IDs to be used instead of the default hierarchy.
|
|
62
|
+
* @param {?boolean} props.showBlockMovers Flag to enable block movers. Defaults to `false`.
|
|
63
|
+
* @param {?boolean} props.isExpanded Flag to determine whether nested levels are expanded by default. Defaults to `false`.
|
|
64
|
+
* @param {?boolean} props.showAppender Flag to show or hide the block appender. Defaults to `false`.
|
|
65
|
+
* @param {?ComponentType} props.blockSettingsMenu Optional more menu substitution. Defaults to the standard `BlockSettingsDropdown` component.
|
|
66
|
+
* @param {string} props.rootClientId The client id of the root block from which we determine the blocks to show in the list.
|
|
67
|
+
* @param {string} props.description Optional accessible description for the tree grid component.
|
|
68
|
+
* @param {?Function} props.onSelect Optional callback to be invoked when a block is selected. Receives the block object that was selected.
|
|
69
|
+
* @param {Function} props.renderAdditionalBlockUI Function that renders additional block content UI.
|
|
70
|
+
* @param {Ref} ref Forwarded ref
|
|
67
71
|
*/
|
|
68
72
|
function ListViewComponent(
|
|
69
73
|
{
|
|
@@ -74,6 +78,9 @@ function ListViewComponent(
|
|
|
74
78
|
showAppender = false,
|
|
75
79
|
blockSettingsMenu: BlockSettingsMenu = BlockSettingsDropdown,
|
|
76
80
|
rootClientId,
|
|
81
|
+
description,
|
|
82
|
+
onSelect,
|
|
83
|
+
renderAdditionalBlockUI,
|
|
77
84
|
},
|
|
78
85
|
ref
|
|
79
86
|
) {
|
|
@@ -88,9 +95,11 @@ function ListViewComponent(
|
|
|
88
95
|
);
|
|
89
96
|
}
|
|
90
97
|
|
|
98
|
+
const instanceId = useInstanceId( ListViewComponent );
|
|
91
99
|
const { clientIdsTree, draggedClientIds, selectedClientIds } =
|
|
92
100
|
useListViewClientIds( { blocks, rootClientId } );
|
|
93
101
|
|
|
102
|
+
const { getBlock } = useSelect( blockEditorStore );
|
|
94
103
|
const { visibleBlockCount, shouldShowInnerBlocks } = useSelect(
|
|
95
104
|
( select ) => {
|
|
96
105
|
const {
|
|
@@ -124,11 +133,14 @@ function ListViewComponent(
|
|
|
124
133
|
setExpandedState,
|
|
125
134
|
} );
|
|
126
135
|
const selectEditorBlock = useCallback(
|
|
127
|
-
( event,
|
|
128
|
-
updateBlockSelection( event,
|
|
129
|
-
setSelectedTreeId(
|
|
136
|
+
( event, blockClientId ) => {
|
|
137
|
+
updateBlockSelection( event, blockClientId );
|
|
138
|
+
setSelectedTreeId( blockClientId );
|
|
139
|
+
if ( onSelect ) {
|
|
140
|
+
onSelect( getBlock( blockClientId ) );
|
|
141
|
+
}
|
|
130
142
|
},
|
|
131
|
-
[ setSelectedTreeId, updateBlockSelection ]
|
|
143
|
+
[ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]
|
|
132
144
|
);
|
|
133
145
|
useEffect( () => {
|
|
134
146
|
isMounted.current = true;
|
|
@@ -198,14 +210,17 @@ function ListViewComponent(
|
|
|
198
210
|
expand,
|
|
199
211
|
collapse,
|
|
200
212
|
BlockSettingsMenu,
|
|
213
|
+
listViewInstanceId: instanceId,
|
|
214
|
+
renderAdditionalBlockUI,
|
|
201
215
|
} ),
|
|
202
216
|
[
|
|
203
|
-
isMounted.current,
|
|
204
217
|
draggedClientIds,
|
|
205
218
|
expandedState,
|
|
206
219
|
expand,
|
|
207
220
|
collapse,
|
|
208
221
|
BlockSettingsMenu,
|
|
222
|
+
instanceId,
|
|
223
|
+
renderAdditionalBlockUI,
|
|
209
224
|
]
|
|
210
225
|
);
|
|
211
226
|
|
|
@@ -229,6 +244,8 @@ function ListViewComponent(
|
|
|
229
244
|
onExpandRow={ expandRow }
|
|
230
245
|
onFocusRow={ focusRow }
|
|
231
246
|
applicationAriaLabel={ __( 'Block navigation structure' ) }
|
|
247
|
+
// eslint-disable-next-line jsx-a11y/aria-props
|
|
248
|
+
aria-description={ description }
|
|
232
249
|
>
|
|
233
250
|
<ListViewContext.Provider value={ contextValue }>
|
|
234
251
|
<ListViewBranch
|
|
@@ -257,6 +274,8 @@ export default forwardRef( ( props, ref ) => {
|
|
|
257
274
|
showAppender={ false }
|
|
258
275
|
blockSettingsMenu={ BlockSettingsDropdown }
|
|
259
276
|
rootClientId={ null }
|
|
277
|
+
onSelect={ null }
|
|
278
|
+
renderAdditionalBlockUICallback={ null }
|
|
260
279
|
/>
|
|
261
280
|
);
|
|
262
281
|
} );
|
|
@@ -15,6 +15,18 @@
|
|
|
15
15
|
// Use position relative for row animation.
|
|
16
16
|
position: relative;
|
|
17
17
|
|
|
18
|
+
.block-editor-list-view-block-select-button {
|
|
19
|
+
// When a row is expanded, retain the dark color.
|
|
20
|
+
&[aria-expanded="true"] {
|
|
21
|
+
color: inherit;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Ensure that on hover, the admin color is still used.
|
|
25
|
+
&:hover {
|
|
26
|
+
color: var(--wp-admin-theme-color);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
18
30
|
// The background has to be applied to the td, not tr, or border-radius won't work.
|
|
19
31
|
&.is-selected td {
|
|
20
32
|
background: var(--wp-admin-theme-color);
|
|
@@ -93,7 +105,7 @@
|
|
|
93
105
|
&.is-branch-selected.is-first-selected td:last-child {
|
|
94
106
|
border-top-right-radius: $radius-block-ui;
|
|
95
107
|
}
|
|
96
|
-
&[
|
|
108
|
+
&[data-expanded="false"] {
|
|
97
109
|
&.is-branch-selected.is-first-selected td:first-child {
|
|
98
110
|
border-top-left-radius: $radius-block-ui;
|
|
99
111
|
}
|
|
@@ -364,6 +376,9 @@ $block-navigation-max-indent: 8;
|
|
|
364
376
|
}
|
|
365
377
|
}
|
|
366
378
|
|
|
379
|
+
// When updating the margin for each indentation level, the corresponding
|
|
380
|
+
// indentation in `use-list-view-drop-zone.js` must be updated as well
|
|
381
|
+
// to ensure the drop zone is aligned with the indentation.
|
|
367
382
|
@for $i from 0 to $block-navigation-max-indent {
|
|
368
383
|
.block-editor-list-view-leaf[aria-level="#{ $i + 1 }"] .block-editor-list-view__expander {
|
|
369
384
|
@if $i - 1 >= 0 {
|
|
@@ -380,7 +395,7 @@ $block-navigation-max-indent: 8;
|
|
|
380
395
|
}
|
|
381
396
|
|
|
382
397
|
// Point downwards when open.
|
|
383
|
-
.block-editor-list-view-leaf[
|
|
398
|
+
.block-editor-list-view-leaf[data-expanded="true"] .block-editor-list-view__expander svg {
|
|
384
399
|
visibility: visible;
|
|
385
400
|
transition: transform 0.2s ease;
|
|
386
401
|
transform: rotate(90deg);
|
|
@@ -388,7 +403,7 @@ $block-navigation-max-indent: 8;
|
|
|
388
403
|
}
|
|
389
404
|
|
|
390
405
|
// Point rightwards when closed
|
|
391
|
-
.block-editor-list-view-leaf[
|
|
406
|
+
.block-editor-list-view-leaf[data-expanded="false"] .block-editor-list-view__expander svg {
|
|
392
407
|
visibility: visible;
|
|
393
408
|
transform: rotate(0deg);
|
|
394
409
|
transition: transform 0.2s ease;
|