@wordpress/block-editor 13.0.0 → 13.0.2
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/build/components/block-actions/index.js +4 -6
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-draggable/index.js +1 -1
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-list/block.js +2 -2
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +2 -2
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +3 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-lock/use-block-lock.js +2 -4
- package/build/components/block-lock/use-block-lock.js.map +1 -1
- package/build/components/block-mover/index.js +1 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +1 -1
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-switcher/block-variation-transformations.js +1 -3
- package/build/components/block-switcher/block-variation-transformations.js.map +1 -1
- package/build/components/block-switcher/index.js +13 -6
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +6 -10
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +2 -2
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/button-block-appender/index.js +4 -1
- package/build/components/button-block-appender/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +3 -3
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +2 -2
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +14 -1
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +3 -3
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js +3 -2
- package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build/components/link-control/link-preview.js +1 -0
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +1 -1
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/list-view/block.js +7 -6
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +3 -1
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/use-clipboard-handler.js +1 -1
- package/build/components/list-view/use-clipboard-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +9 -12
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
- package/build/components/use-block-commands/index.js +3 -3
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/components/writing-flow/use-clipboard-handler.js +22 -3
- package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
- package/build/hooks/block-bindings.js +19 -16
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/block-style-variation.js +22 -4
- package/build/hooks/block-style-variation.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +7 -2
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/utils.js +3 -2
- package/build/hooks/utils.js.map +1 -1
- package/build/lock-unlock.js +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/private-apis.js +3 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +21 -5
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +1 -2
- package/build/store/private-actions.js.map +1 -1
- package/build/store/selectors.js +19 -20
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-actions/index.js +4 -6
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +1 -1
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-list/block.js +2 -2
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +2 -2
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +3 -1
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-lock/use-block-lock.js +2 -4
- package/build-module/components/block-lock/use-block-lock.js.map +1 -1
- package/build-module/components/block-mover/index.js +1 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +1 -1
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-switcher/block-variation-transformations.js +1 -3
- package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -1
- package/build-module/components/block-switcher/index.js +15 -8
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +7 -10
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +2 -2
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/button-block-appender/index.js +4 -1
- package/build-module/components/button-block-appender/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +4 -4
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +2 -2
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +14 -1
- package/build-module/components/global-styles/use-global-styles-output.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/hooks/use-block-types-state.js +4 -3
- package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +1 -0
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +1 -1
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/list-view/block.js +7 -6
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +3 -1
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/use-clipboard-handler.js +1 -1
- package/build-module/components/list-view/use-clipboard-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +9 -12
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +3 -3
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/components/writing-flow/use-clipboard-handler.js +23 -4
- package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
- package/build-module/hooks/block-bindings.js +20 -17
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/block-style-variation.js +21 -4
- package/build-module/hooks/block-style-variation.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +7 -2
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/utils.js +3 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/lock-unlock.js +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/private-apis.js +3 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +21 -5
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +1 -2
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/selectors.js +19 -20
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/content-rtl.css +1 -1
- package/build-style/content.css +1 -1
- package/build-style/style-rtl.css +14 -19
- package/build-style/style.css +14 -19
- package/package.json +31 -31
- package/src/components/block-actions/index.js +3 -7
- package/src/components/block-canvas/style.scss +2 -2
- package/src/components/block-draggable/index.js +1 -1
- package/src/components/block-list/block.js +2 -2
- package/src/components/block-list/block.native.js +2 -2
- package/src/components/block-list/use-in-between-inserter.js +3 -1
- package/src/components/block-lock/use-block-lock.js +2 -4
- package/src/components/block-mover/index.js +1 -1
- package/src/components/block-mover/index.native.js +1 -1
- package/src/components/block-settings-menu/block-settings-dropdown.js +1 -1
- package/src/components/block-switcher/block-variation-transformations.js +4 -9
- package/src/components/block-switcher/index.js +27 -12
- package/src/components/block-switcher/style.scss +5 -0
- package/src/components/block-toolbar/index.js +7 -9
- package/src/components/block-toolbar/style.scss +9 -6
- package/src/components/block-tools/block-selection-button.js +2 -2
- package/src/components/block-variation-picker/content.scss +1 -1
- package/src/components/button-block-appender/index.js +2 -0
- package/src/components/global-styles/background-panel.js +13 -4
- package/src/components/global-styles/hooks.js +2 -4
- package/src/components/global-styles/use-global-styles-output.js +24 -4
- package/src/components/inserter/block-types-tab.js +0 -1
- package/src/components/inserter/hooks/use-block-types-state.js +10 -5
- package/src/components/inserter/style.scss +4 -0
- package/src/components/link-control/link-preview.js +1 -0
- package/src/components/link-control/search-input.js +1 -1
- package/src/components/list-view/block.js +7 -7
- package/src/components/list-view/branch.js +5 -1
- package/src/components/list-view/use-clipboard-handler.js +1 -6
- package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +7 -4
- package/src/components/use-block-commands/index.js +3 -4
- package/src/components/writing-flow/use-clipboard-handler.js +29 -7
- package/src/hooks/block-bindings.js +28 -22
- package/src/hooks/block-style-variation.js +21 -4
- package/src/hooks/use-bindings-attributes.js +11 -1
- package/src/hooks/utils.js +3 -1
- package/src/lock-unlock.js +1 -1
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +25 -11
- package/src/store/private-actions.js +1 -5
- package/src/store/selectors.js +22 -27
- package/src/style.scss +0 -1
- package/build/components/block-bindings-toolbar-indicator/index.js +0 -106
- package/build/components/block-bindings-toolbar-indicator/index.js.map +0 -1
- package/build-module/components/block-bindings-toolbar-indicator/index.js +0 -99
- package/build-module/components/block-bindings-toolbar-indicator/index.js.map +0 -1
- package/src/components/block-bindings-toolbar-indicator/index.js +0 -135
- package/src/components/block-bindings-toolbar-indicator/style.scss +0 -12
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
__experimentalHStack as HStack,
|
|
24
24
|
__experimentalTruncate as Truncate,
|
|
25
25
|
} from '@wordpress/components';
|
|
26
|
-
import { __, sprintf } from '@wordpress/i18n';
|
|
26
|
+
import { __, _x, sprintf } from '@wordpress/i18n';
|
|
27
27
|
import { store as noticesStore } from '@wordpress/notices';
|
|
28
28
|
import { getFilename } from '@wordpress/url';
|
|
29
29
|
import { useCallback, Platform, useRef } from '@wordpress/element';
|
|
@@ -544,17 +544,26 @@ function BackgroundSizeToolsPanelItem( {
|
|
|
544
544
|
<ToggleGroupControlOption
|
|
545
545
|
key="cover"
|
|
546
546
|
value="cover"
|
|
547
|
-
label={
|
|
547
|
+
label={ _x(
|
|
548
|
+
'Cover',
|
|
549
|
+
'Size option for background image control'
|
|
550
|
+
) }
|
|
548
551
|
/>
|
|
549
552
|
<ToggleGroupControlOption
|
|
550
553
|
key="contain"
|
|
551
554
|
value="contain"
|
|
552
|
-
label={
|
|
555
|
+
label={ _x(
|
|
556
|
+
'Contain',
|
|
557
|
+
'Size option for background image control'
|
|
558
|
+
) }
|
|
553
559
|
/>
|
|
554
560
|
<ToggleGroupControlOption
|
|
555
561
|
key="tile"
|
|
556
562
|
value="auto"
|
|
557
|
-
label={
|
|
563
|
+
label={ _x(
|
|
564
|
+
'Tile',
|
|
565
|
+
'Size option for background image control'
|
|
566
|
+
) }
|
|
558
567
|
/>
|
|
559
568
|
</ToggleGroupControl>
|
|
560
569
|
<HStack justify="flex-start" spacing={ 2 } as="span">
|
|
@@ -89,10 +89,7 @@ export const useGlobalStylesReset = () => {
|
|
|
89
89
|
const canReset = !! config && ! fastDeepEqual( config, EMPTY_CONFIG );
|
|
90
90
|
return [
|
|
91
91
|
canReset,
|
|
92
|
-
useCallback(
|
|
93
|
-
() => setUserConfig( () => EMPTY_CONFIG ),
|
|
94
|
-
[ setUserConfig ]
|
|
95
|
-
),
|
|
92
|
+
useCallback( () => setUserConfig( EMPTY_CONFIG ), [ setUserConfig ] ),
|
|
96
93
|
];
|
|
97
94
|
};
|
|
98
95
|
|
|
@@ -299,6 +296,7 @@ export function useSettingsForBlockElement(
|
|
|
299
296
|
'fontStyle',
|
|
300
297
|
'fontWeight',
|
|
301
298
|
'letterSpacing',
|
|
299
|
+
'textAlign',
|
|
302
300
|
'textTransform',
|
|
303
301
|
'textDecoration',
|
|
304
302
|
'writingMode',
|
|
@@ -651,7 +651,9 @@ export const getNodesWithStyles = ( tree, blockSelectors ) => {
|
|
|
651
651
|
( [ variationName, variation ] ) => {
|
|
652
652
|
variations[ variationName ] =
|
|
653
653
|
pickStyleKeys( variation );
|
|
654
|
-
|
|
654
|
+
if ( variation?.css ) {
|
|
655
|
+
variations[ variationName ].css = variation.css;
|
|
656
|
+
}
|
|
655
657
|
const variationSelector =
|
|
656
658
|
blockSelectors[ blockName ]
|
|
657
659
|
.styleVariationSelectors?.[ variationName ];
|
|
@@ -697,6 +699,14 @@ export const getNodesWithStyles = ( tree, blockSelectors ) => {
|
|
|
697
699
|
.featureSelectors
|
|
698
700
|
);
|
|
699
701
|
|
|
702
|
+
const variationBlockStyleNodes =
|
|
703
|
+
pickStyleKeys( variationBlockStyles );
|
|
704
|
+
|
|
705
|
+
if ( variationBlockStyles?.css ) {
|
|
706
|
+
variationBlockStyleNodes.css =
|
|
707
|
+
variationBlockStyles.css;
|
|
708
|
+
}
|
|
709
|
+
|
|
700
710
|
nodes.push( {
|
|
701
711
|
selector: variationBlockSelector,
|
|
702
712
|
duotoneSelector: variationDuotoneSelector,
|
|
@@ -707,9 +717,7 @@ export const getNodesWithStyles = ( tree, blockSelectors ) => {
|
|
|
707
717
|
hasLayoutSupport:
|
|
708
718
|
blockSelectors[ variationBlockName ]
|
|
709
719
|
.hasLayoutSupport,
|
|
710
|
-
styles:
|
|
711
|
-
variationBlockStyles
|
|
712
|
-
),
|
|
720
|
+
styles: variationBlockStyleNodes,
|
|
713
721
|
} );
|
|
714
722
|
|
|
715
723
|
// Process element styles for the inner blocks
|
|
@@ -995,6 +1003,12 @@ export const toStyles = (
|
|
|
995
1003
|
';'
|
|
996
1004
|
) };}`;
|
|
997
1005
|
}
|
|
1006
|
+
if ( styles?.css ) {
|
|
1007
|
+
ruleset += processCSSNesting(
|
|
1008
|
+
styles.css,
|
|
1009
|
+
`:root :where(${ selector })`
|
|
1010
|
+
);
|
|
1011
|
+
}
|
|
998
1012
|
|
|
999
1013
|
if ( styleVariationSelectors ) {
|
|
1000
1014
|
Object.entries( styleVariationSelectors ).forEach(
|
|
@@ -1041,6 +1055,12 @@ export const toStyles = (
|
|
|
1041
1055
|
';'
|
|
1042
1056
|
) };}`;
|
|
1043
1057
|
}
|
|
1058
|
+
if ( styleVariations?.css ) {
|
|
1059
|
+
ruleset += processCSSNesting(
|
|
1060
|
+
styleVariations.css,
|
|
1061
|
+
`:root :where(${ styleVariationSelector })`
|
|
1062
|
+
);
|
|
1063
|
+
}
|
|
1044
1064
|
}
|
|
1045
1065
|
}
|
|
1046
1066
|
);
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
parse,
|
|
9
9
|
} from '@wordpress/blocks';
|
|
10
10
|
import { useSelect } from '@wordpress/data';
|
|
11
|
-
import { useCallback } from '@wordpress/element';
|
|
11
|
+
import { useCallback, useMemo } from '@wordpress/element';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Internal dependencies
|
|
@@ -25,13 +25,18 @@ import { withRootClientIdOptionKey } from '../../../store/utils';
|
|
|
25
25
|
* @return {Array} Returns the block types state. (block types, categories, collections, onSelect handler)
|
|
26
26
|
*/
|
|
27
27
|
const useBlockTypesState = ( rootClientId, onInsert, isQuick ) => {
|
|
28
|
+
const options = useMemo(
|
|
29
|
+
() => ( { [ withRootClientIdOptionKey ]: ! isQuick } ),
|
|
30
|
+
[ isQuick ]
|
|
31
|
+
);
|
|
28
32
|
const [ items ] = useSelect(
|
|
29
33
|
( select ) => [
|
|
30
|
-
select( blockEditorStore ).getInserterItems(
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
select( blockEditorStore ).getInserterItems(
|
|
35
|
+
rootClientId,
|
|
36
|
+
options
|
|
37
|
+
),
|
|
33
38
|
],
|
|
34
|
-
[ rootClientId,
|
|
39
|
+
[ rootClientId, options ]
|
|
35
40
|
);
|
|
36
41
|
|
|
37
42
|
const [ categories, collections ] = useSelect( ( select ) => {
|
|
@@ -253,6 +253,10 @@ $block-inserter-tabs-height: 44px;
|
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
+
.block-editor-inserter__insertable-blocks-at-selection {
|
|
257
|
+
border-bottom: $border-width solid $gray-200;
|
|
258
|
+
}
|
|
259
|
+
|
|
256
260
|
.block-editor-inserter__media-tabs-container,
|
|
257
261
|
.block-editor-inserter__block-patterns-tabs-container {
|
|
258
262
|
padding: $grid-unit-20;
|
|
@@ -125,7 +125,7 @@ const LinkControlSearchInput = forwardRef(
|
|
|
125
125
|
className={ className }
|
|
126
126
|
value={ value }
|
|
127
127
|
onChange={ onInputChange }
|
|
128
|
-
placeholder={ placeholder ?? __( 'Search or type
|
|
128
|
+
placeholder={ placeholder ?? __( 'Search or type URL' ) }
|
|
129
129
|
__experimentalRenderSuggestions={
|
|
130
130
|
showSuggestions ? handleRenderSuggestions : null
|
|
131
131
|
}
|
|
@@ -181,6 +181,12 @@ function ListViewBlock( {
|
|
|
181
181
|
return;
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
+
// Do not handle events if it comes from modals;
|
|
185
|
+
// retain the default behavior for these keys.
|
|
186
|
+
if ( event.target.closest( '[role=dialog]' ) ) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
|
|
184
190
|
const isDeleteKey = [ BACKSPACE, DELETE ].includes( event.keyCode );
|
|
185
191
|
|
|
186
192
|
// If multiple blocks are selected, deselect all blocks when the user
|
|
@@ -196,12 +202,6 @@ function ListViewBlock( {
|
|
|
196
202
|
isDeleteKey ||
|
|
197
203
|
isMatch( 'core/block-editor/remove', event )
|
|
198
204
|
) {
|
|
199
|
-
// Do not handle single-key block deletion shortcuts when events come from modals;
|
|
200
|
-
// retain the default behavior for these keys.
|
|
201
|
-
if ( isDeleteKey && event.target.closest( '[role=dialog]' ) ) {
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
205
|
const {
|
|
206
206
|
blocksToUpdate: blocksToDelete,
|
|
207
207
|
firstBlockClientId,
|
|
@@ -210,7 +210,7 @@ function ListViewBlock( {
|
|
|
210
210
|
} = getBlocksToUpdate();
|
|
211
211
|
|
|
212
212
|
// Don't update the selection if the blocks cannot be deleted.
|
|
213
|
-
if ( ! canRemoveBlocks( blocksToDelete
|
|
213
|
+
if ( ! canRemoveBlocks( blocksToDelete ) ) {
|
|
214
214
|
return;
|
|
215
215
|
}
|
|
216
216
|
|
|
@@ -194,10 +194,14 @@ function ListViewBranch( props ) {
|
|
|
194
194
|
// This prevents the entire tree from being rendered when a branch is
|
|
195
195
|
// selected, or a user selects all blocks, while still enabling scroll
|
|
196
196
|
// into view behavior when selecting a block or opening the list view.
|
|
197
|
+
// The first and last blocks of the list are always rendered, to ensure
|
|
198
|
+
// that Home and End keys work as expected.
|
|
197
199
|
const showBlock =
|
|
198
200
|
isDragged ||
|
|
199
201
|
blockInView ||
|
|
200
|
-
( isSelected && clientId === selectedClientIds[ 0 ] )
|
|
202
|
+
( isSelected && clientId === selectedClientIds[ 0 ] ) ||
|
|
203
|
+
index === 0 ||
|
|
204
|
+
index === blockCount - 1;
|
|
201
205
|
return (
|
|
202
206
|
<AsyncModeProvider key={ clientId } value={ ! isSelected }>
|
|
203
207
|
{ showBlock && (
|
|
@@ -112,12 +112,7 @@ export default function useClipboardHandler( { selectBlock } ) {
|
|
|
112
112
|
|
|
113
113
|
if ( event.type === 'cut' ) {
|
|
114
114
|
// Don't update the selection if the blocks cannot be deleted.
|
|
115
|
-
if (
|
|
116
|
-
! canRemoveBlocks(
|
|
117
|
-
selectedBlockClientIds,
|
|
118
|
-
firstBlockRootClientId
|
|
119
|
-
)
|
|
120
|
-
) {
|
|
115
|
+
if ( ! canRemoveBlocks( selectedBlockClientIds ) ) {
|
|
121
116
|
return;
|
|
122
117
|
}
|
|
123
118
|
|
|
@@ -42,7 +42,12 @@ export default function useSpacingSizes() {
|
|
|
42
42
|
...customSizes,
|
|
43
43
|
...themeSizes,
|
|
44
44
|
...defaultSizes,
|
|
45
|
-
]
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
// Using numeric slugs opts-in to sorting by slug.
|
|
48
|
+
if ( sizes.every( ( { slug } ) => /^[0-9]/.test( slug ) ) ) {
|
|
49
|
+
sizes.sort( ( a, b ) => compare( a.slug, b.slug ) );
|
|
50
|
+
}
|
|
46
51
|
|
|
47
52
|
return sizes.length > RANGE_CONTROL_MAX_SIZE
|
|
48
53
|
? [
|
|
@@ -53,8 +58,6 @@ export default function useSpacingSizes() {
|
|
|
53
58
|
},
|
|
54
59
|
...sizes,
|
|
55
60
|
]
|
|
56
|
-
:
|
|
57
|
-
// to use the index as the name in the range control.
|
|
58
|
-
sizes.map( ( { slug, size }, i ) => ( { name: i, slug, size } ) );
|
|
61
|
+
: sizes;
|
|
59
62
|
}, [ customSizes, themeSizes, defaultSizes ] );
|
|
60
63
|
}
|
|
@@ -65,7 +65,7 @@ export const useTransformCommands = () => {
|
|
|
65
65
|
selectedBlocks,
|
|
66
66
|
rootClientId
|
|
67
67
|
),
|
|
68
|
-
canRemove: canRemoveBlocks( selectedBlockClientIds
|
|
68
|
+
canRemove: canRemoveBlocks( selectedBlockClientIds ),
|
|
69
69
|
invalidSelection: false,
|
|
70
70
|
};
|
|
71
71
|
}, [] );
|
|
@@ -150,8 +150,7 @@ const useActionsCommands = () => {
|
|
|
150
150
|
const rootClientId = getBlockRootClientId( clientIds[ 0 ] );
|
|
151
151
|
|
|
152
152
|
const canMove =
|
|
153
|
-
canMoveBlocks( clientIds
|
|
154
|
-
getBlockCount( rootClientId ) !== 1;
|
|
153
|
+
canMoveBlocks( clientIds ) && getBlockCount( rootClientId ) !== 1;
|
|
155
154
|
|
|
156
155
|
const commands = [];
|
|
157
156
|
|
|
@@ -260,7 +259,7 @@ const useQuickActionsCommands = () => {
|
|
|
260
259
|
canInsertBlockType( block.name, rootClientId )
|
|
261
260
|
);
|
|
262
261
|
} );
|
|
263
|
-
const canRemove = canRemoveBlocks( clientIds
|
|
262
|
+
const canRemove = canRemoveBlocks( clientIds );
|
|
264
263
|
|
|
265
264
|
const commands = [];
|
|
266
265
|
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
findTransform,
|
|
7
7
|
getBlockTransforms,
|
|
8
8
|
hasBlockSupport,
|
|
9
|
+
switchToBlockType,
|
|
9
10
|
} from '@wordpress/blocks';
|
|
10
11
|
import {
|
|
11
12
|
documentHasSelection,
|
|
@@ -208,15 +209,36 @@ export default function useClipboardHandler() {
|
|
|
208
209
|
firstSelectedClientId
|
|
209
210
|
);
|
|
210
211
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
)
|
|
215
|
-
|
|
216
|
-
|
|
212
|
+
const newBlocks = [];
|
|
213
|
+
|
|
214
|
+
for ( const block of blocks ) {
|
|
215
|
+
if ( canInsertBlockType( block.name, rootClientId ) ) {
|
|
216
|
+
newBlocks.push( block );
|
|
217
|
+
} else {
|
|
218
|
+
// If a block cannot be inserted in a root block, try
|
|
219
|
+
// converting it to that root block type and insert the
|
|
220
|
+
// inner blocks.
|
|
221
|
+
// Example: paragraphs cannot be inserted into a list,
|
|
222
|
+
// so convert the paragraphs to a list for list items.
|
|
223
|
+
const rootBlockName = getBlockName( rootClientId );
|
|
224
|
+
const switchedBlocks =
|
|
225
|
+
block.name !== rootBlockName
|
|
226
|
+
? switchToBlockType( block, rootBlockName )
|
|
227
|
+
: [ block ];
|
|
228
|
+
|
|
229
|
+
if ( ! switchedBlocks ) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
for ( const switchedBlock of switchedBlocks ) {
|
|
234
|
+
for ( const innerBlock of switchedBlock.innerBlocks ) {
|
|
235
|
+
newBlocks.push( innerBlock );
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
217
239
|
}
|
|
218
240
|
|
|
219
|
-
__unstableSplitSelection(
|
|
241
|
+
__unstableSplitSelection( newBlocks );
|
|
220
242
|
event.preventDefault();
|
|
221
243
|
}
|
|
222
244
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
5
|
import { store as blocksStore } from '@wordpress/blocks';
|
|
6
6
|
import {
|
|
7
|
+
BaseControl,
|
|
7
8
|
PanelBody,
|
|
8
9
|
__experimentalHStack as HStack,
|
|
9
10
|
__experimentalItemGroup as ItemGroup,
|
|
@@ -54,30 +55,35 @@ export const BlockBindingsPanel = ( { name, metadata } ) => {
|
|
|
54
55
|
return (
|
|
55
56
|
<InspectorControls>
|
|
56
57
|
<PanelBody
|
|
57
|
-
title={ __( '
|
|
58
|
+
title={ __( 'Attributes' ) }
|
|
58
59
|
className="components-panel__block-bindings-panel"
|
|
59
60
|
>
|
|
60
|
-
<
|
|
61
|
-
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
61
|
+
<BaseControl
|
|
62
|
+
help={ __( 'Attributes connected to various sources.' ) }
|
|
63
|
+
>
|
|
64
|
+
<ItemGroup isBordered isSeparated size="large">
|
|
65
|
+
{ Object.keys( filteredBindings ).map( ( key ) => {
|
|
66
|
+
return (
|
|
67
|
+
<Item key={ key }>
|
|
68
|
+
<HStack>
|
|
69
|
+
<span>{ key }</span>
|
|
70
|
+
<span className="components-item__block-bindings-source">
|
|
71
|
+
{ sources[
|
|
72
|
+
filteredBindings[ key ].source
|
|
73
|
+
]
|
|
74
|
+
? sources[
|
|
75
|
+
filteredBindings[ key ]
|
|
76
|
+
.source
|
|
77
|
+
].label
|
|
78
|
+
: filteredBindings[ key ]
|
|
79
|
+
.source }
|
|
80
|
+
</span>
|
|
81
|
+
</HStack>
|
|
82
|
+
</Item>
|
|
83
|
+
);
|
|
84
|
+
} ) }
|
|
85
|
+
</ItemGroup>
|
|
86
|
+
</BaseControl>
|
|
81
87
|
</PanelBody>
|
|
82
88
|
</InspectorControls>
|
|
83
89
|
);
|
|
@@ -17,6 +17,23 @@ import { useStyleOverride } from './utils';
|
|
|
17
17
|
import { store as blockEditorStore } from '../store';
|
|
18
18
|
import { globalStylesDataKey } from '../store/private-keys';
|
|
19
19
|
|
|
20
|
+
const VARIATION_PREFIX = 'is-style-';
|
|
21
|
+
|
|
22
|
+
function getVariationMatches( className ) {
|
|
23
|
+
if ( ! className ) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
return className.split( /\s+/ ).reduce( ( matches, name ) => {
|
|
27
|
+
if ( name.startsWith( VARIATION_PREFIX ) ) {
|
|
28
|
+
const match = name.slice( VARIATION_PREFIX.length );
|
|
29
|
+
if ( match !== 'default' ) {
|
|
30
|
+
matches.push( match );
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return matches;
|
|
34
|
+
}, [] );
|
|
35
|
+
}
|
|
36
|
+
|
|
20
37
|
/**
|
|
21
38
|
* Get the first block style variation that has been registered from the class string.
|
|
22
39
|
*
|
|
@@ -28,14 +45,13 @@ import { globalStylesDataKey } from '../store/private-keys';
|
|
|
28
45
|
function getVariationNameFromClass( className, registeredStyles = [] ) {
|
|
29
46
|
// The global flag affects how capturing groups work in JS. So the regex
|
|
30
47
|
// below will only return full CSS classes not just the variation name.
|
|
31
|
-
const matches =
|
|
48
|
+
const matches = getVariationMatches( className );
|
|
32
49
|
|
|
33
50
|
if ( ! matches ) {
|
|
34
51
|
return null;
|
|
35
52
|
}
|
|
36
53
|
|
|
37
|
-
for ( const
|
|
38
|
-
const variation = variationClass.substring( 9 ); // Remove 'is-style-' prefix.
|
|
54
|
+
for ( const variation of matches ) {
|
|
39
55
|
if ( registeredStyles.some( ( style ) => style.name === variation ) ) {
|
|
40
56
|
return variation;
|
|
41
57
|
}
|
|
@@ -94,7 +110,7 @@ function useBlockProps( { name, className, clientId } ) {
|
|
|
94
110
|
|
|
95
111
|
const registeredStyles = getBlockStyles( name );
|
|
96
112
|
const variation = getVariationNameFromClass( className, registeredStyles );
|
|
97
|
-
const variationClass =
|
|
113
|
+
const variationClass = `${ VARIATION_PREFIX }${ variation }-${ clientId }`;
|
|
98
114
|
|
|
99
115
|
const { settings, styles } = useBlockSyleVariation(
|
|
100
116
|
name,
|
|
@@ -152,5 +168,6 @@ function useBlockProps( { name, className, clientId } ) {
|
|
|
152
168
|
export default {
|
|
153
169
|
hasSupport: () => true,
|
|
154
170
|
attributeKeys: [ 'className' ],
|
|
171
|
+
isMatch: ( { className } ) => getVariationMatches( className ).length > 0,
|
|
155
172
|
useBlockProps,
|
|
156
173
|
};
|
|
@@ -97,6 +97,9 @@ export const withBlockBindingSupport = createHigherOrderComponent(
|
|
|
97
97
|
unlock( select( blocksStore ) ).getAllBlockBindingsSources()
|
|
98
98
|
);
|
|
99
99
|
const { name, clientId, context } = props;
|
|
100
|
+
const hasPatternOverridesDefaultBinding =
|
|
101
|
+
props.attributes.metadata?.bindings?.[ DEFAULT_ATTRIBUTE ]
|
|
102
|
+
?.source === 'core/pattern-overrides';
|
|
100
103
|
const bindings = useMemo(
|
|
101
104
|
() =>
|
|
102
105
|
replacePatternOverrideDefaultBindings(
|
|
@@ -213,7 +216,13 @@ export const withBlockBindingSupport = createHigherOrderComponent(
|
|
|
213
216
|
}
|
|
214
217
|
}
|
|
215
218
|
|
|
216
|
-
|
|
219
|
+
// Only apply normal attribute updates to blocks
|
|
220
|
+
// that have partial bindings. Currently this is
|
|
221
|
+
// only skipped for pattern overrides sources.
|
|
222
|
+
if (
|
|
223
|
+
! hasPatternOverridesDefaultBinding &&
|
|
224
|
+
Object.keys( keptAttributes ).length
|
|
225
|
+
) {
|
|
217
226
|
setAttributes( keptAttributes );
|
|
218
227
|
}
|
|
219
228
|
} );
|
|
@@ -226,6 +235,7 @@ export const withBlockBindingSupport = createHigherOrderComponent(
|
|
|
226
235
|
context,
|
|
227
236
|
setAttributes,
|
|
228
237
|
sources,
|
|
238
|
+
hasPatternOverridesDefaultBinding,
|
|
229
239
|
]
|
|
230
240
|
);
|
|
231
241
|
|
package/src/hooks/utils.js
CHANGED
|
@@ -582,6 +582,7 @@ export function createBlockListBlockFilter( features ) {
|
|
|
582
582
|
hasSupport,
|
|
583
583
|
attributeKeys = [],
|
|
584
584
|
useBlockProps,
|
|
585
|
+
isMatch,
|
|
585
586
|
} = feature;
|
|
586
587
|
|
|
587
588
|
const neededProps = {};
|
|
@@ -595,7 +596,8 @@ export function createBlockListBlockFilter( features ) {
|
|
|
595
596
|
// Skip rendering if none of the needed attributes are
|
|
596
597
|
// set.
|
|
597
598
|
! Object.keys( neededProps ).length ||
|
|
598
|
-
! hasSupport( props.name )
|
|
599
|
+
! hasSupport( props.name ) ||
|
|
600
|
+
( isMatch && ! isMatch( neededProps ) )
|
|
599
601
|
) {
|
|
600
602
|
return null;
|
|
601
603
|
}
|
package/src/lock-unlock.js
CHANGED
|
@@ -5,6 +5,6 @@ import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/pri
|
|
|
5
5
|
|
|
6
6
|
export const { lock, unlock } =
|
|
7
7
|
__dangerousOptInToUnstableAPIsOnlyForCoreModules(
|
|
8
|
-
'I
|
|
8
|
+
'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',
|
|
9
9
|
'@wordpress/block-editor'
|
|
10
10
|
);
|
package/src/private-apis.js
CHANGED
|
@@ -43,6 +43,7 @@ import { PrivateBlockPopover } from './components/block-popover';
|
|
|
43
43
|
import { PrivateInserterLibrary } from './components/inserter/library';
|
|
44
44
|
import { PrivatePublishDateTimePicker } from './components/publish-date-time-picker';
|
|
45
45
|
import useSpacingSizes from './components/spacing-sizes-control/hooks/use-spacing-sizes';
|
|
46
|
+
import useBlockDisplayTitle from './components/block-title/use-block-display-title';
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
49
|
* Private @wordpress/block-editor APIs.
|
|
@@ -86,4 +87,5 @@ lock( privateApis, {
|
|
|
86
87
|
PrivateBlockPopover,
|
|
87
88
|
PrivatePublishDateTimePicker,
|
|
88
89
|
useSpacingSizes,
|
|
90
|
+
useBlockDisplayTitle,
|
|
89
91
|
} );
|
package/src/store/actions.js
CHANGED
|
@@ -409,7 +409,7 @@ const createOnMove =
|
|
|
409
409
|
( clientIds, rootClientId ) =>
|
|
410
410
|
( { select, dispatch } ) => {
|
|
411
411
|
// If one of the blocks is locked or the parent is locked, we cannot move any block.
|
|
412
|
-
const canMoveBlocks = select.canMoveBlocks( clientIds
|
|
412
|
+
const canMoveBlocks = select.canMoveBlocks( clientIds );
|
|
413
413
|
if ( ! canMoveBlocks ) {
|
|
414
414
|
return;
|
|
415
415
|
}
|
|
@@ -431,10 +431,7 @@ export const moveBlocksUp = createOnMove( 'MOVE_BLOCKS_UP' );
|
|
|
431
431
|
export const moveBlocksToPosition =
|
|
432
432
|
( clientIds, fromRootClientId = '', toRootClientId = '', index ) =>
|
|
433
433
|
( { select, dispatch } ) => {
|
|
434
|
-
const canMoveBlocks = select.canMoveBlocks(
|
|
435
|
-
clientIds,
|
|
436
|
-
fromRootClientId
|
|
437
|
-
);
|
|
434
|
+
const canMoveBlocks = select.canMoveBlocks( clientIds );
|
|
438
435
|
|
|
439
436
|
// If one of the blocks is locked or the parent is locked, we cannot move any block.
|
|
440
437
|
if ( ! canMoveBlocks ) {
|
|
@@ -443,10 +440,7 @@ export const moveBlocksToPosition =
|
|
|
443
440
|
|
|
444
441
|
// If moving inside the same root block the move is always possible.
|
|
445
442
|
if ( fromRootClientId !== toRootClientId ) {
|
|
446
|
-
const canRemoveBlocks = select.canRemoveBlocks(
|
|
447
|
-
clientIds,
|
|
448
|
-
fromRootClientId
|
|
449
|
-
);
|
|
443
|
+
const canRemoveBlocks = select.canRemoveBlocks( clientIds );
|
|
450
444
|
|
|
451
445
|
// If we're moving to another block, it means we're deleting blocks from
|
|
452
446
|
// the original block, so we need to check if removing is possible.
|
|
@@ -988,7 +982,7 @@ export const __unstableSplitSelection =
|
|
|
988
982
|
},
|
|
989
983
|
};
|
|
990
984
|
|
|
991
|
-
|
|
985
|
+
let tail = {
|
|
992
986
|
...blockB,
|
|
993
987
|
// Only preserve the original client ID if the end is different.
|
|
994
988
|
clientId:
|
|
@@ -1001,6 +995,26 @@ export const __unstableSplitSelection =
|
|
|
1001
995
|
},
|
|
1002
996
|
};
|
|
1003
997
|
|
|
998
|
+
// When splitting a block, attempt to convert the tail block to the
|
|
999
|
+
// default block type. For example, when splitting a heading block, the
|
|
1000
|
+
// tail block will be converted to a paragraph block. Note that for
|
|
1001
|
+
// blocks such as a list item and button, this will be skipped because
|
|
1002
|
+
// the default block type cannot be inserted.
|
|
1003
|
+
const defaultBlockName = getDefaultBlockName();
|
|
1004
|
+
if (
|
|
1005
|
+
// A block is only split when the selection is within the same
|
|
1006
|
+
// block.
|
|
1007
|
+
blockA.clientId === blockB.clientId &&
|
|
1008
|
+
defaultBlockName &&
|
|
1009
|
+
tail.name !== defaultBlockName &&
|
|
1010
|
+
select.canInsertBlockType( defaultBlockName, anchorRootClientId )
|
|
1011
|
+
) {
|
|
1012
|
+
const switched = switchToBlockType( tail, defaultBlockName );
|
|
1013
|
+
if ( switched?.length === 1 ) {
|
|
1014
|
+
tail = switched[ 0 ];
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1004
1018
|
if ( ! blocks.length ) {
|
|
1005
1019
|
dispatch.replaceBlocks( select.getSelectedBlockClientIds(), [
|
|
1006
1020
|
head,
|
|
@@ -2010,7 +2024,7 @@ export function __unstableSetTemporarilyEditingAsBlocks(
|
|
|
2010
2024
|
* per_page: 'page_size',
|
|
2011
2025
|
* search: 'q',
|
|
2012
2026
|
* };
|
|
2013
|
-
* const url = new URL( 'https://api.openverse.
|
|
2027
|
+
* const url = new URL( 'https://api.openverse.org/v1/images/' );
|
|
2014
2028
|
* Object.entries( finalQuery ).forEach( ( [ key, value ] ) => {
|
|
2015
2029
|
* const queryKey = mapFromInserterMediaRequest[ key ] || key;
|
|
2016
2030
|
* url.searchParams.set( queryKey, value );
|
|
@@ -105,11 +105,7 @@ export const privateRemoveBlocks =
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
clientIds = castArray( clientIds );
|
|
108
|
-
const
|
|
109
|
-
const canRemoveBlocks = select.canRemoveBlocks(
|
|
110
|
-
clientIds,
|
|
111
|
-
rootClientId
|
|
112
|
-
);
|
|
108
|
+
const canRemoveBlocks = select.canRemoveBlocks( clientIds );
|
|
113
109
|
|
|
114
110
|
if ( ! canRemoveBlocks ) {
|
|
115
111
|
return;
|