@wordpress/block-editor 10.1.1-next.4d3b314fd5.0 → 10.3.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 +14 -0
- package/README.md +41 -0
- package/build/components/block-controls/slot.js +2 -2
- package/build/components/block-controls/slot.js.map +1 -1
- package/build/components/block-draggable/draggable-chip.js +4 -2
- package/build/components/block-draggable/draggable-chip.js.map +1 -1
- package/build/components/block-inspector/index.js +4 -5
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-list-compact.native.js +1 -0
- package/build/components/block-list/block-list-compact.native.js.map +1 -1
- package/build/components/block-list/block.js +72 -14
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +79 -12
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +7 -23
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-lock/modal.js +9 -6
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-parent-selector/index.js +5 -5
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +5 -4
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-popover/drop-zone.js +85 -0
- package/build/components/block-popover/drop-zone.js.map +1 -0
- package/build/components/block-popover/inbetween.js +3 -1
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +22 -17
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +2 -2
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-preview/index.js +6 -9
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-preview/live.js +3 -7
- package/build/components/block-preview/live.js.map +1 -1
- package/build/components/block-selection-clearer/index.js +9 -1
- package/build/components/block-selection-clearer/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +22 -16
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/index.js +18 -42
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +4 -4
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/back-compat.js +2 -1
- package/build/components/block-tools/back-compat.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +50 -20
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +15 -3
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/colors-gradients/control.js +1 -1
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -2
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +256 -0
- package/build/components/font-sizes/fluid-utils.js.map +1 -0
- package/build/components/font-sizes/index.js +8 -0
- package/build/components/font-sizes/index.js.map +1 -1
- package/build/components/image-editor/use-transform-image.js +2 -2
- package/build/components/image-editor/use-transform-image.js.map +1 -1
- package/build/components/index.js +0 -9
- package/build/components/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -2
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +151 -78
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +1 -1
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/menu.js +14 -3
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/search-items.js +2 -17
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/inserter-draggable-blocks/index.js +4 -2
- package/build/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build/components/inspector-controls/slot.js +2 -1
- package/build/components/inspector-controls/slot.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js +1 -14
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/preview-options/index.js +2 -3
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/rich-text/index.js +17 -0
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/spacing-sizes-control/index.js +10 -2
- package/build/components/spacing-sizes-control/index.js.map +1 -1
- package/build/components/spacing-sizes-control/spacing-input-control.js +40 -9
- package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +98 -57
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +12 -12
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-on-block-drop/types.js +6 -0
- package/build/components/use-on-block-drop/types.js.map +1 -0
- package/build/hooks/align.js +1 -3
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/align.native.js +1 -7
- package/build/hooks/align.native.js.map +1 -1
- package/build/hooks/font-size.js +60 -0
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/margin.js +6 -5
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +2 -1
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/style.js +126 -4
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/use-typography-props.js +17 -3
- package/build/hooks/use-typography-props.js.map +1 -1
- package/build/hooks/utils.js +1 -1
- package/build/hooks/utils.js.map +1 -1
- package/build/store/actions.js +59 -45
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +3 -0
- package/build/store/defaults.js.map +1 -1
- package/build/store/reducer.js +36 -18
- package/build/store/reducer.js.map +1 -1
- package/build/utils/math.js +14 -0
- package/build/utils/math.js.map +1 -1
- package/build/utils/pre-parse-patterns.js +19 -2
- package/build/utils/pre-parse-patterns.js.map +1 -1
- package/build-module/components/block-controls/slot.js +3 -3
- package/build-module/components/block-controls/slot.js.map +1 -1
- package/build-module/components/block-draggable/draggable-chip.js +7 -3
- package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
- package/build-module/components/block-inspector/index.js +5 -6
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-list-compact.native.js +1 -0
- package/build-module/components/block-list/block-list-compact.native.js.map +1 -1
- package/build-module/components/block-list/block.js +72 -14
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +80 -13
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +8 -24
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-lock/modal.js +10 -8
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js +5 -5
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +5 -4
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-popover/drop-zone.js +70 -0
- package/build-module/components/block-popover/drop-zone.js.map +1 -0
- package/build-module/components/block-popover/inbetween.js +3 -1
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +22 -17
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +1 -1
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-preview/index.js +6 -9
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-preview/live.js +3 -6
- package/build-module/components/block-preview/live.js.map +1 -1
- package/build-module/components/block-selection-clearer/index.js +9 -1
- package/build-module/components/block-selection-clearer/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +25 -19
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/index.js +19 -44
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +4 -4
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/back-compat.js +2 -1
- package/build-module/components/block-tools/back-compat.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +48 -20
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +15 -3
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +2 -2
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +3 -3
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +245 -0
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -0
- package/build-module/components/font-sizes/index.js +1 -0
- package/build-module/components/font-sizes/index.js.map +1 -1
- package/build-module/components/image-editor/use-transform-image.js +2 -2
- package/build-module/components/image-editor/use-transform-image.js.map +1 -1
- package/build-module/components/index.js +0 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -2
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +148 -81
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.js +3 -3
- package/build-module/components/inserter/block-types-tab.js.map +1 -1
- package/build-module/components/inserter/menu.js +10 -3
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/search-items.js +3 -17
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter-draggable-blocks/index.js +4 -2
- package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +3 -2
- package/build-module/components/inspector-controls/slot.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js +1 -14
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/preview-options/index.js +2 -3
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +17 -0
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/index.js +10 -3
- package/build-module/components/spacing-sizes-control/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/spacing-input-control.js +40 -10
- package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +98 -58
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +12 -12
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/types.js +2 -0
- package/build-module/components/use-on-block-drop/types.js.map +1 -0
- package/build-module/hooks/align.js +1 -2
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/align.native.js +1 -6
- package/build-module/hooks/align.native.js.map +1 -1
- package/build-module/hooks/font-size.js +59 -1
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/margin.js +6 -5
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +2 -1
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/style.js +124 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/use-typography-props.js +17 -4
- package/build-module/hooks/use-typography-props.js.map +1 -1
- package/build-module/hooks/utils.js +2 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/store/actions.js +55 -42
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +3 -0
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/reducer.js +36 -19
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/utils/math.js +12 -0
- package/build-module/utils/math.js.map +1 -1
- package/build-module/utils/pre-parse-patterns.js +19 -2
- package/build-module/utils/pre-parse-patterns.js.map +1 -1
- package/build-style/style-rtl.css +256 -152
- package/build-style/style.css +256 -152
- package/package.json +28 -29
- package/src/components/block-breadcrumb/test/index.js +1 -1
- package/src/components/block-controls/slot.js +3 -3
- package/src/components/block-draggable/draggable-chip.js +4 -2
- package/src/components/block-inspector/index.js +8 -11
- package/src/components/block-list/block-list-compact.native.js +1 -0
- package/src/components/block-list/block.js +111 -7
- package/src/components/block-list/block.native.js +123 -9
- package/src/components/block-list/style.scss +93 -126
- package/src/components/block-list/use-in-between-inserter.js +8 -19
- package/src/components/block-lock/modal.js +12 -7
- package/src/components/block-mover/style.scss +0 -1
- package/src/components/block-parent-selector/index.js +5 -5
- package/src/components/block-patterns-list/index.js +9 -5
- package/src/components/block-patterns-list/style.scss +7 -3
- package/src/components/block-popover/README.md +8 -0
- package/src/components/block-popover/drop-zone.js +63 -0
- package/src/components/block-popover/inbetween.js +1 -1
- package/src/components/block-popover/index.js +39 -22
- package/src/components/block-popover/style.scss +17 -1
- package/src/components/block-preview/auto.js +1 -1
- package/src/components/block-preview/index.js +7 -8
- package/src/components/block-preview/live.js +2 -7
- package/src/components/block-preview/test/index.js +1 -7
- package/src/components/block-selection-clearer/index.js +7 -2
- package/src/components/block-selection-clearer/test/index.js +118 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +32 -18
- package/src/components/block-settings-menu/test/block-mode-toggle.js +17 -17
- package/src/components/block-styles/index.js +26 -49
- package/src/components/block-switcher/test/__snapshots__/index.js.snap +104 -33
- package/src/components/block-switcher/test/index.js +121 -61
- package/src/components/block-toolbar/index.js +4 -6
- package/src/components/block-toolbar/style.scss +38 -14
- package/src/components/block-tools/back-compat.js +1 -0
- package/src/components/block-tools/insertion-point.js +42 -17
- package/src/components/block-tools/selected-block-popover.js +14 -1
- package/src/components/button-block-appender/style.scss +5 -1
- package/src/components/color-palette/test/__snapshots__/control.js.snap +32 -52
- package/src/components/color-palette/test/control.js +11 -15
- package/src/components/colors-gradients/control.js +2 -2
- package/src/components/colors-gradients/panel-color-gradient-settings.js +3 -4
- package/src/components/colors-gradients/test/control.js +49 -77
- package/src/components/font-sizes/fluid-utils.js +296 -0
- package/src/components/font-sizes/index.js +1 -0
- package/src/components/font-sizes/test/fluid-utils.js +168 -0
- package/src/components/image-editor/use-transform-image.js +2 -2
- package/src/components/image-size-control/test/index.js +47 -60
- package/src/components/index.js +0 -1
- package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -2
- package/src/components/inserter/block-patterns-tab.js +232 -98
- package/src/components/inserter/block-types-tab.js +3 -3
- package/src/components/inserter/menu.js +15 -2
- package/src/components/inserter/search-items.js +3 -15
- package/src/components/inserter/style.scss +94 -9
- package/src/components/inserter/test/reusable-blocks-tab.js +6 -6
- package/src/components/inserter/test/search-items.js +4 -0
- package/src/components/inserter-draggable-blocks/index.js +12 -2
- package/src/components/inserter-list-item/style.scss +20 -1
- package/src/components/inspector-controls/slot.js +6 -2
- package/src/components/link-control/test/index.js +1 -1
- package/src/components/list-view/use-list-view-drop-zone.js +4 -18
- package/src/components/panel-color-settings/test/index.js +4 -4
- package/src/components/preview-options/index.js +2 -2
- package/src/components/preview-options/style.scss +1 -1
- package/src/components/provider/test/use-block-sync.js +131 -165
- package/src/components/responsive-block-control/test/index.js +77 -122
- package/src/components/rich-text/index.js +22 -0
- package/src/components/spacing-sizes-control/index.js +15 -3
- package/src/components/spacing-sizes-control/spacing-input-control.js +24 -9
- package/src/components/spacing-sizes-control/style.scss +42 -31
- package/src/components/use-block-drop-zone/index.js +136 -79
- package/src/components/use-block-drop-zone/test/index.js +333 -81
- package/src/components/use-on-block-drop/index.js +11 -12
- package/src/components/use-on-block-drop/types.ts +1 -0
- package/src/hooks/align.js +3 -2
- package/src/hooks/align.native.js +5 -8
- package/src/hooks/font-size.js +75 -0
- package/src/hooks/margin.js +5 -4
- package/src/hooks/padding.js +1 -0
- package/src/hooks/style.js +122 -3
- package/src/hooks/test/style.js +206 -1
- package/src/hooks/test/use-typography-props.js +22 -0
- package/src/hooks/use-typography-props.js +18 -3
- package/src/hooks/utils.js +6 -2
- package/src/store/actions.js +20 -12
- package/src/store/defaults.js +3 -0
- package/src/store/reducer.js +35 -28
- package/src/store/test/actions.js +0 -9
- package/src/utils/math.js +17 -0
- package/src/utils/pre-parse-patterns.js +12 -7
- package/build/components/inserter/pattern-panel.js +0 -87
- package/build/components/inserter/pattern-panel.js.map +0 -1
- package/build-module/components/inserter/pattern-panel.js +0 -74
- package/build-module/components/inserter/pattern-panel.js.map +0 -1
- package/src/components/inserter/pattern-panel.js +0 -93
|
@@ -32,6 +32,7 @@ function BlockPopover(
|
|
|
32
32
|
__unstableCoverTarget = false,
|
|
33
33
|
__unstablePopoverSlot,
|
|
34
34
|
__unstableContentRef,
|
|
35
|
+
shift = true,
|
|
35
36
|
...props
|
|
36
37
|
},
|
|
37
38
|
ref
|
|
@@ -42,24 +43,15 @@ function BlockPopover(
|
|
|
42
43
|
ref,
|
|
43
44
|
usePopoverScroll( __unstableContentRef ),
|
|
44
45
|
] );
|
|
45
|
-
const style = useMemo( () => {
|
|
46
|
-
if ( ! selectedElement || lastSelectedElement !== selectedElement ) {
|
|
47
|
-
return {};
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return {
|
|
51
|
-
position: 'absolute',
|
|
52
|
-
width: selectedElement.offsetWidth,
|
|
53
|
-
height: selectedElement.offsetHeight,
|
|
54
|
-
};
|
|
55
|
-
}, [ selectedElement, lastSelectedElement, __unstableRefreshSize ] );
|
|
56
46
|
|
|
57
|
-
const [
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
)
|
|
47
|
+
const [
|
|
48
|
+
popoverDimensionsRecomputeCounter,
|
|
49
|
+
forceRecomputePopoverDimensions,
|
|
50
|
+
] = useReducer(
|
|
51
|
+
// Module is there to make sure that the counter doesn't overflow.
|
|
52
|
+
( s ) => ( s + 1 ) % MAX_POPOVER_RECOMPUTE_COUNTER,
|
|
53
|
+
0
|
|
54
|
+
);
|
|
63
55
|
|
|
64
56
|
// When blocks are moved up/down, they are animated to their new position by
|
|
65
57
|
// updating the `transform` property manually (i.e. without using CSS
|
|
@@ -74,7 +66,7 @@ function BlockPopover(
|
|
|
74
66
|
}
|
|
75
67
|
|
|
76
68
|
const observer = new window.MutationObserver(
|
|
77
|
-
|
|
69
|
+
forceRecomputePopoverDimensions
|
|
78
70
|
);
|
|
79
71
|
observer.observe( selectedElement, { attributes: true } );
|
|
80
72
|
|
|
@@ -83,12 +75,36 @@ function BlockPopover(
|
|
|
83
75
|
};
|
|
84
76
|
}, [ selectedElement ] );
|
|
85
77
|
|
|
78
|
+
const style = useMemo( () => {
|
|
79
|
+
if (
|
|
80
|
+
// popoverDimensionsRecomputeCounter is by definition always equal or greater
|
|
81
|
+
// than 0. This check is only there to satisfy the correctness of the
|
|
82
|
+
// exhaustive-deps rule for the `useMemo` hook.
|
|
83
|
+
popoverDimensionsRecomputeCounter < 0 ||
|
|
84
|
+
! selectedElement ||
|
|
85
|
+
lastSelectedElement !== selectedElement
|
|
86
|
+
) {
|
|
87
|
+
return {};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return {
|
|
91
|
+
position: 'absolute',
|
|
92
|
+
width: selectedElement.offsetWidth,
|
|
93
|
+
height: selectedElement.offsetHeight,
|
|
94
|
+
};
|
|
95
|
+
}, [
|
|
96
|
+
selectedElement,
|
|
97
|
+
lastSelectedElement,
|
|
98
|
+
__unstableRefreshSize,
|
|
99
|
+
popoverDimensionsRecomputeCounter,
|
|
100
|
+
] );
|
|
101
|
+
|
|
86
102
|
const popoverAnchor = useMemo( () => {
|
|
87
103
|
if (
|
|
88
|
-
//
|
|
104
|
+
// popoverDimensionsRecomputeCounter is by definition always equal or greater
|
|
89
105
|
// than 0. This check is only there to satisfy the correctness of the
|
|
90
106
|
// exhaustive-deps rule for the `useMemo` hook.
|
|
91
|
-
|
|
107
|
+
popoverDimensionsRecomputeCounter < 0 ||
|
|
92
108
|
! selectedElement ||
|
|
93
109
|
( bottomClientId && ! lastSelectedElement )
|
|
94
110
|
) {
|
|
@@ -132,7 +148,7 @@ function BlockPopover(
|
|
|
132
148
|
bottomClientId,
|
|
133
149
|
lastSelectedElement,
|
|
134
150
|
selectedElement,
|
|
135
|
-
|
|
151
|
+
popoverDimensionsRecomputeCounter,
|
|
136
152
|
] );
|
|
137
153
|
|
|
138
154
|
if ( ! selectedElement || ( bottomClientId && ! lastSelectedElement ) ) {
|
|
@@ -148,9 +164,10 @@ function BlockPopover(
|
|
|
148
164
|
// Render in the old slot if needed for backward compatibility,
|
|
149
165
|
// otherwise render in place (not in the default popover slot).
|
|
150
166
|
__unstableSlotName={ __unstablePopoverSlot || null }
|
|
167
|
+
placement="top-start"
|
|
151
168
|
resize={ false }
|
|
152
169
|
flip={ false }
|
|
153
|
-
shift
|
|
170
|
+
shift={ shift }
|
|
154
171
|
{ ...props }
|
|
155
172
|
className={ classnames(
|
|
156
173
|
'block-editor-block-popover',
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
// Enable pointer events for the toolbar's content.
|
|
24
|
-
&:not(.block-editor-block-popover__inbetween) .components-popover__content {
|
|
24
|
+
&:not(.block-editor-block-popover__inbetween, .block-editor-block-popover__drop-zone) .components-popover__content {
|
|
25
25
|
* {
|
|
26
26
|
pointer-events: all;
|
|
27
27
|
}
|
|
@@ -48,3 +48,19 @@
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
.components-popover.block-editor-block-popover__drop-zone {
|
|
54
|
+
// Disable pointer events for dragging and dropping.
|
|
55
|
+
// This drop zone is fully presentational, the actual DnD implementation is handled elsewhere.
|
|
56
|
+
* {
|
|
57
|
+
pointer-events: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.block-editor-block-popover__drop-zone-foreground {
|
|
61
|
+
position: absolute;
|
|
62
|
+
inset: 0;
|
|
63
|
+
background-color: var(--wp-admin-theme-color);
|
|
64
|
+
border-radius: 2px;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { Disabled } from '@wordpress/components';
|
|
5
4
|
import { useResizeObserver, pure, useRefEffect } from '@wordpress/compose';
|
|
6
5
|
import { useSelect } from '@wordpress/data';
|
|
7
6
|
import { useMemo } from '@wordpress/element';
|
|
7
|
+
import { Disabled } from '@wordpress/components';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Internal dependencies
|
|
@@ -32,11 +32,10 @@ export function BlockPreview( {
|
|
|
32
32
|
( select ) => select( blockEditorStore ).getSettings(),
|
|
33
33
|
[]
|
|
34
34
|
);
|
|
35
|
-
const settings = useMemo(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}, [ originalSettings ] );
|
|
35
|
+
const settings = useMemo(
|
|
36
|
+
() => ( { ...originalSettings, __unstableIsPreviewMode: true } ),
|
|
37
|
+
[ originalSettings ]
|
|
38
|
+
);
|
|
40
39
|
const renderedBlocks = useMemo( () => castArray( blocks ), [ blocks ] );
|
|
41
40
|
if ( ! blocks || blocks.length === 0 ) {
|
|
42
41
|
return null;
|
|
@@ -94,12 +93,12 @@ export function useBlockPreview( {
|
|
|
94
93
|
( select ) => select( blockEditorStore ).getSettings(),
|
|
95
94
|
[]
|
|
96
95
|
);
|
|
97
|
-
const disabledRef = useDisabled();
|
|
98
|
-
const ref = useMergeRefs( [ props.ref, disabledRef ] );
|
|
99
96
|
const settings = useMemo(
|
|
100
|
-
() => ( { ...originalSettings,
|
|
97
|
+
() => ( { ...originalSettings, __unstableIsPreviewMode: true } ),
|
|
101
98
|
[ originalSettings ]
|
|
102
99
|
);
|
|
100
|
+
const disabledRef = useDisabled();
|
|
101
|
+
const ref = useMergeRefs( [ props.ref, disabledRef ] );
|
|
103
102
|
const renderedBlocks = useMemo( () => castArray( blocks ), [ blocks ] );
|
|
104
103
|
|
|
105
104
|
const children = (
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { Disabled } from '@wordpress/components';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* Internal dependencies
|
|
8
3
|
*/
|
|
@@ -16,9 +11,9 @@ export default function LiveBlockPreview( { onClick } ) {
|
|
|
16
11
|
onClick={ onClick }
|
|
17
12
|
onKeyPress={ onClick }
|
|
18
13
|
>
|
|
19
|
-
<
|
|
14
|
+
<div inert="true">
|
|
20
15
|
<BlockList />
|
|
21
|
-
</
|
|
16
|
+
</div>
|
|
22
17
|
</div>
|
|
23
18
|
);
|
|
24
19
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { render, screen
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
@@ -99,12 +99,6 @@ describe( 'useBlockPreview', () => {
|
|
|
99
99
|
);
|
|
100
100
|
expect( previewedBlockContents ).toBeInTheDocument();
|
|
101
101
|
|
|
102
|
-
// Test elements within block contents are disabled.
|
|
103
|
-
await waitFor( () => {
|
|
104
|
-
const button = screen.getByText( 'Button' );
|
|
105
|
-
expect( button.hasAttribute( 'disabled' ) ).toBe( true );
|
|
106
|
-
} );
|
|
107
|
-
|
|
108
102
|
// Ensure the block preview class names are merged with the component's class name.
|
|
109
103
|
expect( container.firstChild.className ).toBe(
|
|
110
104
|
'test-container-classname block-editor-block-preview__live-content components-disabled'
|
|
@@ -17,12 +17,17 @@ import { store as blockEditorStore } from '../../store';
|
|
|
17
17
|
* @return {import('react').RefCallback} Ref callback.
|
|
18
18
|
*/
|
|
19
19
|
export function useBlockSelectionClearer() {
|
|
20
|
-
const { hasSelectedBlock, hasMultiSelection } =
|
|
20
|
+
const { getSettings, hasSelectedBlock, hasMultiSelection } =
|
|
21
21
|
useSelect( blockEditorStore );
|
|
22
22
|
const { clearSelectedBlock } = useDispatch( blockEditorStore );
|
|
23
|
+
const { __experimentalClearBlockSelection: isEnabled } = getSettings();
|
|
23
24
|
|
|
24
25
|
return useRefEffect(
|
|
25
26
|
( node ) => {
|
|
27
|
+
if ( ! isEnabled ) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
26
31
|
function onMouseDown( event ) {
|
|
27
32
|
if ( ! hasSelectedBlock() && ! hasMultiSelection() ) {
|
|
28
33
|
return;
|
|
@@ -42,7 +47,7 @@ export function useBlockSelectionClearer() {
|
|
|
42
47
|
node.removeEventListener( 'mousedown', onMouseDown );
|
|
43
48
|
};
|
|
44
49
|
},
|
|
45
|
-
[ hasSelectedBlock, hasMultiSelection, clearSelectedBlock ]
|
|
50
|
+
[ hasSelectedBlock, hasMultiSelection, clearSelectedBlock, isEnabled ]
|
|
46
51
|
);
|
|
47
52
|
}
|
|
48
53
|
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { fireEvent, render, screen } from '@testing-library/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal dependencies
|
|
13
|
+
*/
|
|
14
|
+
import BlockSelectionClearer from '../';
|
|
15
|
+
|
|
16
|
+
const defaultUseSelectValues = {
|
|
17
|
+
hasSelectedBlock: jest.fn().mockReturnValue( false ),
|
|
18
|
+
hasMultiSelection: jest.fn().mockReturnValue( false ),
|
|
19
|
+
getSettings: jest.fn().mockReturnValue( {
|
|
20
|
+
__experimentalClearBlockSelection: true,
|
|
21
|
+
} ),
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
jest.mock( '@wordpress/data/src/components/use-dispatch', () => ( {
|
|
25
|
+
useDispatch: jest.fn(),
|
|
26
|
+
} ) );
|
|
27
|
+
|
|
28
|
+
jest.mock( '@wordpress/data/src/components/use-select', () => {
|
|
29
|
+
// This allows us to tweak the returned value on each test.
|
|
30
|
+
const mock = jest.fn();
|
|
31
|
+
return mock;
|
|
32
|
+
} );
|
|
33
|
+
|
|
34
|
+
describe( 'BlockSelectionClearer component', () => {
|
|
35
|
+
it( 'should clear the selected block when a selected block exists', () => {
|
|
36
|
+
const mockClearSelectedBlock = jest.fn();
|
|
37
|
+
useSelect.mockImplementation( () => ( {
|
|
38
|
+
...defaultUseSelectValues,
|
|
39
|
+
hasSelectedBlock: jest.fn().mockReturnValue( true ),
|
|
40
|
+
} ) );
|
|
41
|
+
useDispatch.mockImplementation( () => ( {
|
|
42
|
+
clearSelectedBlock: mockClearSelectedBlock,
|
|
43
|
+
} ) );
|
|
44
|
+
|
|
45
|
+
render(
|
|
46
|
+
<BlockSelectionClearer>
|
|
47
|
+
<button>Not a block</button>
|
|
48
|
+
</BlockSelectionClearer>
|
|
49
|
+
);
|
|
50
|
+
const button = screen.getByRole( 'button' );
|
|
51
|
+
fireEvent.mouseDown( button.parentElement );
|
|
52
|
+
|
|
53
|
+
expect( mockClearSelectedBlock ).toBeCalled();
|
|
54
|
+
} );
|
|
55
|
+
|
|
56
|
+
it( 'should clear the selected block when multiple blocks are selected', () => {
|
|
57
|
+
const mockClearSelectedBlock = jest.fn();
|
|
58
|
+
useSelect.mockImplementation( () => ( {
|
|
59
|
+
...defaultUseSelectValues,
|
|
60
|
+
hasMultiSelection: jest.fn().mockReturnValue( true ),
|
|
61
|
+
} ) );
|
|
62
|
+
useDispatch.mockImplementation( () => ( {
|
|
63
|
+
clearSelectedBlock: mockClearSelectedBlock,
|
|
64
|
+
} ) );
|
|
65
|
+
|
|
66
|
+
render(
|
|
67
|
+
<BlockSelectionClearer>
|
|
68
|
+
<button>Not a block</button>
|
|
69
|
+
</BlockSelectionClearer>
|
|
70
|
+
);
|
|
71
|
+
const button = screen.getByRole( 'button' );
|
|
72
|
+
fireEvent.mouseDown( button.parentElement );
|
|
73
|
+
|
|
74
|
+
expect( mockClearSelectedBlock ).toBeCalled();
|
|
75
|
+
} );
|
|
76
|
+
|
|
77
|
+
it( 'should not clear the block selection when no blocks are selected', () => {
|
|
78
|
+
const mockClearSelectedBlock = jest.fn();
|
|
79
|
+
useSelect.mockImplementation( () => defaultUseSelectValues );
|
|
80
|
+
useDispatch.mockImplementation( () => ( {
|
|
81
|
+
clearSelectedBlock: mockClearSelectedBlock,
|
|
82
|
+
} ) );
|
|
83
|
+
|
|
84
|
+
render(
|
|
85
|
+
<BlockSelectionClearer>
|
|
86
|
+
<button>Not a block</button>
|
|
87
|
+
</BlockSelectionClearer>
|
|
88
|
+
);
|
|
89
|
+
const button = screen.getByRole( 'button' );
|
|
90
|
+
fireEvent.mouseDown( button.parentElement );
|
|
91
|
+
|
|
92
|
+
expect( mockClearSelectedBlock ).not.toBeCalled();
|
|
93
|
+
} );
|
|
94
|
+
|
|
95
|
+
it( 'should not clear the block selection when the feature is disabled', () => {
|
|
96
|
+
const mockClearSelectedBlock = jest.fn();
|
|
97
|
+
useSelect.mockImplementation( () => ( {
|
|
98
|
+
...defaultUseSelectValues,
|
|
99
|
+
hasSelectedBlock: jest.fn().mockReturnValue( true ),
|
|
100
|
+
getSettings: jest.fn().mockReturnValue( {
|
|
101
|
+
__experimentalClearBlockSelection: false,
|
|
102
|
+
} ),
|
|
103
|
+
} ) );
|
|
104
|
+
useDispatch.mockImplementation( () => ( {
|
|
105
|
+
clearSelectedBlock: mockClearSelectedBlock,
|
|
106
|
+
} ) );
|
|
107
|
+
|
|
108
|
+
render(
|
|
109
|
+
<BlockSelectionClearer>
|
|
110
|
+
<button>Not a block</button>
|
|
111
|
+
</BlockSelectionClearer>
|
|
112
|
+
);
|
|
113
|
+
const button = screen.getByRole( 'button' );
|
|
114
|
+
fireEvent.mouseDown( button.parentElement );
|
|
115
|
+
|
|
116
|
+
expect( mockClearSelectedBlock ).not.toBeCalled();
|
|
117
|
+
} );
|
|
118
|
+
} );
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { castArray
|
|
4
|
+
import { castArray } from 'lodash';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
getBlockType,
|
|
11
|
+
serialize,
|
|
12
|
+
store as blocksStore,
|
|
13
|
+
} from '@wordpress/blocks';
|
|
10
14
|
import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
|
|
11
15
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
12
16
|
import { moreVertical } from '@wordpress/icons';
|
|
@@ -18,7 +22,7 @@ import {
|
|
|
18
22
|
} from '@wordpress/element';
|
|
19
23
|
import { __, sprintf } from '@wordpress/i18n';
|
|
20
24
|
import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
|
|
21
|
-
import { useCopyToClipboard } from '@wordpress/compose';
|
|
25
|
+
import { pipe, useCopyToClipboard } from '@wordpress/compose';
|
|
22
26
|
|
|
23
27
|
/**
|
|
24
28
|
* Internal dependencies
|
|
@@ -59,7 +63,7 @@ export function BlockSettingsDropdown( {
|
|
|
59
63
|
const firstBlockClientId = blockClientIds[ 0 ];
|
|
60
64
|
const {
|
|
61
65
|
firstParentClientId,
|
|
62
|
-
|
|
66
|
+
isDistractionFree,
|
|
63
67
|
onlyBlock,
|
|
64
68
|
parentBlockType,
|
|
65
69
|
previousBlockClientId,
|
|
@@ -70,22 +74,32 @@ export function BlockSettingsDropdown( {
|
|
|
70
74
|
const {
|
|
71
75
|
getBlockCount,
|
|
72
76
|
getBlockName,
|
|
73
|
-
|
|
77
|
+
getBlockRootClientId,
|
|
74
78
|
getPreviousBlockClientId,
|
|
75
79
|
getNextBlockClientId,
|
|
76
80
|
getSelectedBlockClientIds,
|
|
77
81
|
getSettings,
|
|
82
|
+
getBlockAttributes,
|
|
78
83
|
} = select( blockEditorStore );
|
|
79
84
|
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
const
|
|
85
|
+
const { getActiveBlockVariation } = select( blocksStore );
|
|
86
|
+
|
|
87
|
+
const _firstParentClientId =
|
|
88
|
+
getBlockRootClientId( firstBlockClientId );
|
|
89
|
+
const parentBlockName =
|
|
90
|
+
_firstParentClientId && getBlockName( _firstParentClientId );
|
|
83
91
|
|
|
84
92
|
return {
|
|
85
93
|
firstParentClientId: _firstParentClientId,
|
|
86
|
-
|
|
87
|
-
onlyBlock: 1 === getBlockCount(),
|
|
88
|
-
parentBlockType:
|
|
94
|
+
isDistractionFree: getSettings().isDistractionFree,
|
|
95
|
+
onlyBlock: 1 === getBlockCount( _firstParentClientId ),
|
|
96
|
+
parentBlockType:
|
|
97
|
+
_firstParentClientId &&
|
|
98
|
+
( getActiveBlockVariation(
|
|
99
|
+
parentBlockName,
|
|
100
|
+
getBlockAttributes( _firstParentClientId )
|
|
101
|
+
) ||
|
|
102
|
+
getBlockType( parentBlockName ) ),
|
|
89
103
|
previousBlockClientId:
|
|
90
104
|
getPreviousBlockClientId( firstBlockClientId ),
|
|
91
105
|
nextBlockClientId: getNextBlockClientId( firstBlockClientId ),
|
|
@@ -171,7 +185,7 @@ export function BlockSettingsDropdown( {
|
|
|
171
185
|
const { gestures: showParentOutlineGestures } = useShowMoversGestures( {
|
|
172
186
|
ref: selectParentButtonRef,
|
|
173
187
|
onChange( isFocused ) {
|
|
174
|
-
if ( isFocused &&
|
|
188
|
+
if ( isFocused && isDistractionFree ) {
|
|
175
189
|
return;
|
|
176
190
|
}
|
|
177
191
|
toggleBlockHighlight( firstParentClientId, isFocused );
|
|
@@ -210,7 +224,7 @@ export function BlockSettingsDropdown( {
|
|
|
210
224
|
<__unstableBlockSettingsMenuFirstItem.Slot
|
|
211
225
|
fillProps={ { onClose } }
|
|
212
226
|
/>
|
|
213
|
-
{ firstParentClientId
|
|
227
|
+
{ !! firstParentClientId && (
|
|
214
228
|
<MenuItem
|
|
215
229
|
{ ...showParentOutlineGestures }
|
|
216
230
|
ref={ selectParentButtonRef }
|
|
@@ -241,7 +255,7 @@ export function BlockSettingsDropdown( {
|
|
|
241
255
|
/>
|
|
242
256
|
{ canDuplicate && (
|
|
243
257
|
<MenuItem
|
|
244
|
-
onClick={
|
|
258
|
+
onClick={ pipe(
|
|
245
259
|
onClose,
|
|
246
260
|
onDuplicate,
|
|
247
261
|
updateSelectionAfterDuplicate
|
|
@@ -254,7 +268,7 @@ export function BlockSettingsDropdown( {
|
|
|
254
268
|
{ canInsertDefaultBlock && (
|
|
255
269
|
<>
|
|
256
270
|
<MenuItem
|
|
257
|
-
onClick={
|
|
271
|
+
onClick={ pipe(
|
|
258
272
|
onClose,
|
|
259
273
|
onInsertBefore
|
|
260
274
|
) }
|
|
@@ -263,7 +277,7 @@ export function BlockSettingsDropdown( {
|
|
|
263
277
|
{ __( 'Insert before' ) }
|
|
264
278
|
</MenuItem>
|
|
265
279
|
<MenuItem
|
|
266
|
-
onClick={
|
|
280
|
+
onClick={ pipe(
|
|
267
281
|
onClose,
|
|
268
282
|
onInsertAfter
|
|
269
283
|
) }
|
|
@@ -275,7 +289,7 @@ export function BlockSettingsDropdown( {
|
|
|
275
289
|
) }
|
|
276
290
|
{ canMove && ! onlyBlock && (
|
|
277
291
|
<MenuItem
|
|
278
|
-
onClick={
|
|
292
|
+
onClick={ pipe( onClose, onMoveTo ) }
|
|
279
293
|
>
|
|
280
294
|
{ __( 'Move to' ) }
|
|
281
295
|
</MenuItem>
|
|
@@ -302,7 +316,7 @@ export function BlockSettingsDropdown( {
|
|
|
302
316
|
{ canRemove && (
|
|
303
317
|
<MenuGroup>
|
|
304
318
|
<MenuItem
|
|
305
|
-
onClick={
|
|
319
|
+
onClick={ pipe(
|
|
306
320
|
onClose,
|
|
307
321
|
onRemove,
|
|
308
322
|
updateSelectionAfterRemove
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Internal dependencies
|
|
@@ -9,46 +9,44 @@ import ShallowRenderer from 'react-test-renderer/shallow';
|
|
|
9
9
|
import { BlockModeToggle } from '../block-mode-toggle';
|
|
10
10
|
|
|
11
11
|
describe( 'BlockModeToggle', () => {
|
|
12
|
-
function getShallowRenderOutput( element ) {
|
|
13
|
-
const renderer = new ShallowRenderer();
|
|
14
|
-
renderer.render( element );
|
|
15
|
-
return renderer.getRenderOutput();
|
|
16
|
-
}
|
|
17
|
-
|
|
18
12
|
it( "should not render the HTML mode button if the block doesn't support it", () => {
|
|
19
|
-
|
|
13
|
+
render(
|
|
20
14
|
<BlockModeToggle blockType={ { supports: { html: false } } } />
|
|
21
15
|
);
|
|
22
16
|
|
|
23
|
-
expect(
|
|
17
|
+
expect(
|
|
18
|
+
screen.queryByRole( 'menuitem', { name: 'Edit as HTML' } )
|
|
19
|
+
).not.toBeInTheDocument();
|
|
24
20
|
} );
|
|
25
21
|
|
|
26
22
|
it( 'should render the HTML mode button', () => {
|
|
27
|
-
|
|
23
|
+
render(
|
|
28
24
|
<BlockModeToggle
|
|
29
25
|
blockType={ { supports: { html: true } } }
|
|
30
26
|
mode="visual"
|
|
31
27
|
/>
|
|
32
28
|
);
|
|
33
|
-
const text = wrapper.props.children;
|
|
34
29
|
|
|
35
|
-
expect(
|
|
30
|
+
expect(
|
|
31
|
+
screen.getByRole( 'menuitem', { name: 'Edit as HTML' } )
|
|
32
|
+
).toBeVisible();
|
|
36
33
|
} );
|
|
37
34
|
|
|
38
35
|
it( 'should render the Visual mode button', () => {
|
|
39
|
-
|
|
36
|
+
render(
|
|
40
37
|
<BlockModeToggle
|
|
41
38
|
blockType={ { supports: { html: true } } }
|
|
42
39
|
mode="html"
|
|
43
40
|
/>
|
|
44
41
|
);
|
|
45
|
-
const text = wrapper.props.children;
|
|
46
42
|
|
|
47
|
-
expect(
|
|
43
|
+
expect(
|
|
44
|
+
screen.getByRole( 'menuitem', { name: 'Edit visually' } )
|
|
45
|
+
).toBeVisible();
|
|
48
46
|
} );
|
|
49
47
|
|
|
50
48
|
it( 'should not render the Visual mode button if code editing is disabled', () => {
|
|
51
|
-
|
|
49
|
+
render(
|
|
52
50
|
<BlockModeToggle
|
|
53
51
|
blockType={ { supports: { html: true } } }
|
|
54
52
|
mode="html"
|
|
@@ -56,6 +54,8 @@ describe( 'BlockModeToggle', () => {
|
|
|
56
54
|
/>
|
|
57
55
|
);
|
|
58
56
|
|
|
59
|
-
expect(
|
|
57
|
+
expect(
|
|
58
|
+
screen.queryByRole( 'menuitem', { name: 'Edit visually' } )
|
|
59
|
+
).not.toBeInTheDocument();
|
|
60
60
|
} );
|
|
61
61
|
} );
|