@wordpress/block-editor 14.0.0 → 14.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 +2 -0
- package/README.md +9 -14
- package/build/autocompleters/block.js +1 -1
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +2 -2
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +11 -4
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-settings-menu/block-mode-toggle.js +28 -34
- package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +14 -3
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +2 -1
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +8 -4
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/border-radius-control/index.js +1 -0
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +1 -1
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +2 -0
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +3 -0
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/font-family/index.js +3 -0
- package/build/components/font-family/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +114 -42
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/get-global-styles-changes.js +3 -1
- package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build/components/global-styles/hooks.js +0 -7
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +0 -6
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +3 -3
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +8 -24
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid/grid-visualizer.js +20 -5
- package/build/components/grid/grid-visualizer.js.map +1 -1
- package/build/components/height-control/index.js +1 -0
- package/build/components/height-control/index.js.map +1 -1
- package/build/components/iframe/index.js +4 -2
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/zoom-dropdown.js +11 -7
- package/build/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build/components/inner-blocks/button-block-appender.js +8 -8
- package/build/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build/components/inner-blocks/default-block-appender.js +7 -25
- package/build/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +9 -11
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/library.js +4 -2
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +30 -12
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -0
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/line-height-control/index.js +3 -0
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/media-placeholder/index.js +9 -4
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-upload/index.native.js +4 -1
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/multi-selection-inspector/index.js +12 -12
- package/build/components/multi-selection-inspector/index.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/text-alignment-control/index.js +13 -8
- package/build/components/text-alignment-control/index.js.map +1 -1
- package/build/components/text-decoration-control/index.js +13 -8
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +13 -8
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +2 -0
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +14 -2
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/writing-mode-control/index.js +13 -8
- package/build/components/writing-mode-control/index.js.map +1 -1
- package/build/hooks/background.js +19 -23
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-bindings.js +37 -79
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/layouts/constrained.js +1 -0
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +2 -0
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/grid.js +3 -0
- package/build/layouts/grid.js.map +1 -1
- package/build/private-apis.js +3 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/private-selectors.js +30 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +10 -1
- package/build/store/reducer.js.map +1 -1
- package/build/utils/block-bindings.js +112 -0
- package/build/utils/block-bindings.js.map +1 -0
- package/build-module/autocompleters/block.js +1 -1
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +2 -2
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +11 -4
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-settings-menu/block-mode-toggle.js +29 -34
- package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +14 -3
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +2 -1
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +8 -4
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +1 -0
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +1 -1
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +2 -0
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +3 -0
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/font-family/index.js +3 -0
- package/build-module/components/font-family/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +117 -45
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/get-global-styles-changes.js +3 -1
- package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +0 -6
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +1 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +5 -5
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +8 -23
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid/grid-visualizer.js +20 -5
- package/build-module/components/grid/grid-visualizer.js.map +1 -1
- package/build-module/components/height-control/index.js +1 -0
- package/build-module/components/height-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +4 -2
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/zoom-dropdown.js +12 -8
- package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build-module/components/inner-blocks/button-block-appender.js +7 -6
- package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/default-block-appender.js +6 -23
- package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +9 -11
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/library.js +4 -2
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +30 -12
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +5 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/line-height-control/index.js +3 -0
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +9 -4
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +4 -1
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/multi-selection-inspector/index.js +12 -12
- package/build-module/components/multi-selection-inspector/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/text-alignment-control/index.js +13 -8
- package/build-module/components/text-alignment-control/index.js.map +1 -1
- package/build-module/components/text-decoration-control/index.js +13 -8
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +13 -8
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +2 -0
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +14 -2
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/writing-mode-control/index.js +13 -8
- package/build-module/components/writing-mode-control/index.js.map +1 -1
- package/build-module/hooks/background.js +19 -23
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-bindings.js +38 -80
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/layouts/constrained.js +1 -0
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +2 -0
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/grid.js +3 -0
- package/build-module/layouts/grid.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/private-selectors.js +27 -0
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +9 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/utils/block-bindings.js +105 -0
- package/build-module/utils/block-bindings.js.map +1 -0
- package/build-style/content-rtl.css +7 -14
- package/build-style/content.css +7 -14
- package/build-style/default-editor-styles-rtl.css +2 -2
- package/build-style/default-editor-styles.css +2 -2
- package/build-style/style-rtl.css +36 -38
- package/build-style/style.css +36 -38
- package/package.json +32 -32
- package/src/autocompleters/block.js +2 -1
- package/src/components/block-list/content.scss +5 -13
- package/src/components/block-list/use-block-props/index.js +2 -2
- package/src/components/block-list/use-in-between-inserter.js +17 -5
- package/src/components/block-settings-menu/block-mode-toggle.js +28 -31
- package/src/components/block-settings-menu/test/block-mode-toggle.js +26 -23
- package/src/components/block-tools/insertion-point.js +11 -0
- package/src/components/block-tools/style.scss +1 -1
- package/src/components/block-tools/use-show-block-tools.js +4 -1
- package/src/components/block-tools/zoom-out-mode-inserters.js +7 -1
- package/src/components/block-variation-transforms/style.scss +1 -1
- package/src/components/border-radius-control/index.js +1 -0
- package/src/components/border-radius-control/style.scss +0 -10
- package/src/components/convert-to-group-buttons/index.js +1 -1
- package/src/components/date-format-picker/index.js +2 -0
- package/src/components/font-appearance-control/index.js +3 -0
- package/src/components/font-family/README.md +11 -2
- package/src/components/font-family/index.js +3 -0
- package/src/components/global-styles/background-panel.js +132 -53
- package/src/components/global-styles/get-global-styles-changes.js +4 -1
- package/src/components/global-styles/hooks.js +0 -5
- package/src/components/global-styles/index.js +0 -1
- package/src/components/global-styles/style.scss +13 -2
- package/src/components/global-styles/test/use-global-styles-output.js +20 -4
- package/src/components/global-styles/use-global-styles-output.js +5 -6
- package/src/components/global-styles/utils.js +7 -29
- package/src/components/grid/grid-visualizer.js +22 -7
- package/src/components/height-control/index.js +1 -0
- package/src/components/iframe/index.js +4 -2
- package/src/components/image-editor/zoom-dropdown.js +17 -9
- package/src/components/inner-blocks/button-block-appender.js +5 -7
- package/src/components/inner-blocks/default-block-appender.js +4 -23
- package/src/components/inner-blocks/index.js +10 -9
- package/src/components/inserter/library.js +2 -0
- package/src/components/inserter/menu.js +32 -27
- package/src/components/inserter/quick-inserter.js +4 -1
- package/src/components/inserter/style.scss +1 -1
- package/src/components/inserter-list-item/style.scss +1 -0
- package/src/components/line-height-control/README.md +7 -0
- package/src/components/line-height-control/index.js +3 -0
- package/src/components/link-control/style.scss +1 -1
- package/src/components/media-placeholder/index.js +12 -7
- package/src/components/media-upload/README.md +2 -0
- package/src/components/media-upload/index.native.js +2 -0
- package/src/components/multi-selection-inspector/index.js +8 -9
- package/src/components/responsive-block-control/README.md +1 -0
- package/src/components/responsive-block-control/test/index.js +1 -0
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -4
- package/src/components/spacing-sizes-control/style.scss +16 -16
- package/src/components/text-alignment-control/index.js +20 -8
- package/src/components/text-decoration-control/index.js +20 -8
- package/src/components/text-decoration-control/stories/index.story.js +0 -4
- package/src/components/text-transform-control/index.js +20 -8
- package/src/components/text-transform-control/stories/index.story.js +0 -4
- package/src/components/url-input/style.scss +2 -2
- package/src/components/url-popover/image-url-input-ui.js +2 -0
- package/src/components/use-block-drop-zone/index.js +21 -3
- package/src/components/writing-mode-control/index.js +20 -8
- package/src/hooks/background.js +21 -27
- package/src/hooks/block-bindings.js +27 -84
- package/src/hooks/block-bindings.scss +1 -1
- package/src/hooks/test/background.js +60 -0
- package/src/layouts/constrained.js +1 -0
- package/src/layouts/flex.js +2 -0
- package/src/layouts/grid.js +3 -0
- package/src/private-apis.js +2 -0
- package/src/store/private-selectors.js +36 -0
- package/src/store/reducer.js +7 -0
- package/src/store/test/private-selectors.js +89 -0
- package/src/style.scss +0 -1
- package/src/utils/block-bindings.js +98 -0
- package/src/utils/test/transform-styles.js +49 -0
- package/build/components/global-styles/theme-file-uri-utils.js +0 -21
- package/build/components/global-styles/theme-file-uri-utils.js.map +0 -1
- package/build/components/inner-blocks/with-client-id.js +0 -28
- package/build/components/inner-blocks/with-client-id.js.map +0 -1
- package/build/components/segmented-text-control/index.js +0 -63
- package/build/components/segmented-text-control/index.js.map +0 -1
- package/build-module/components/global-styles/theme-file-uri-utils.js +0 -15
- package/build-module/components/global-styles/theme-file-uri-utils.js.map +0 -1
- package/build-module/components/inner-blocks/with-client-id.js +0 -21
- package/build-module/components/inner-blocks/with-client-id.js.map +0 -1
- package/build-module/components/segmented-text-control/index.js +0 -58
- package/build-module/components/segmented-text-control/index.js.map +0 -1
- package/src/components/global-styles/test/theme-file-uri-utils.js +0 -41
- package/src/components/global-styles/theme-file-uri-utils.js +0 -18
- package/src/components/inner-blocks/with-client-id.js +0 -19
- package/src/components/segmented-text-control/index.js +0 -63
- package/src/components/segmented-text-control/style.scss +0 -15
|
@@ -14,11 +14,10 @@ import {
|
|
|
14
14
|
alignJustify,
|
|
15
15
|
} from '@wordpress/icons';
|
|
16
16
|
import { useMemo } from '@wordpress/element';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
import SegmentedTextControl from '../segmented-text-control';
|
|
17
|
+
import {
|
|
18
|
+
__experimentalToggleGroupControl as ToggleGroupControl,
|
|
19
|
+
__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,
|
|
20
|
+
} from '@wordpress/components';
|
|
22
21
|
|
|
23
22
|
const TEXT_ALIGNMENT_OPTIONS = [
|
|
24
23
|
{
|
|
@@ -75,9 +74,11 @@ export default function TextAlignmentControl( {
|
|
|
75
74
|
}
|
|
76
75
|
|
|
77
76
|
return (
|
|
78
|
-
<
|
|
77
|
+
<ToggleGroupControl
|
|
78
|
+
isDeselectable
|
|
79
|
+
__nextHasNoMarginBottom
|
|
80
|
+
__next40pxDefaultSize
|
|
79
81
|
label={ __( 'Text alignment' ) }
|
|
80
|
-
options={ validOptions }
|
|
81
82
|
className={ clsx(
|
|
82
83
|
'block-editor-text-alignment-control',
|
|
83
84
|
className
|
|
@@ -86,6 +87,17 @@ export default function TextAlignmentControl( {
|
|
|
86
87
|
onChange={ ( newValue ) => {
|
|
87
88
|
onChange( newValue === value ? undefined : newValue );
|
|
88
89
|
} }
|
|
89
|
-
|
|
90
|
+
>
|
|
91
|
+
{ validOptions.map( ( option ) => {
|
|
92
|
+
return (
|
|
93
|
+
<ToggleGroupControlOptionIcon
|
|
94
|
+
key={ option.value }
|
|
95
|
+
value={ option.value }
|
|
96
|
+
icon={ option.icon }
|
|
97
|
+
label={ option.label }
|
|
98
|
+
/>
|
|
99
|
+
);
|
|
100
|
+
} ) }
|
|
101
|
+
</ToggleGroupControl>
|
|
90
102
|
);
|
|
91
103
|
}
|
|
@@ -8,11 +8,10 @@ import clsx from 'clsx';
|
|
|
8
8
|
*/
|
|
9
9
|
import { reset, formatStrikethrough, formatUnderline } from '@wordpress/icons';
|
|
10
10
|
import { __ } from '@wordpress/i18n';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import SegmentedTextControl from '../segmented-text-control';
|
|
11
|
+
import {
|
|
12
|
+
__experimentalToggleGroupControl as ToggleGroupControl,
|
|
13
|
+
__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,
|
|
14
|
+
} from '@wordpress/components';
|
|
16
15
|
|
|
17
16
|
const TEXT_DECORATIONS = [
|
|
18
17
|
{
|
|
@@ -48,9 +47,11 @@ export default function TextDecorationControl( {
|
|
|
48
47
|
className,
|
|
49
48
|
} ) {
|
|
50
49
|
return (
|
|
51
|
-
<
|
|
50
|
+
<ToggleGroupControl
|
|
51
|
+
isDeselectable
|
|
52
|
+
__nextHasNoMarginBottom
|
|
53
|
+
__next40pxDefaultSize
|
|
52
54
|
label={ __( 'Decoration' ) }
|
|
53
|
-
options={ TEXT_DECORATIONS }
|
|
54
55
|
className={ clsx(
|
|
55
56
|
'block-editor-text-decoration-control',
|
|
56
57
|
className
|
|
@@ -59,6 +60,17 @@ export default function TextDecorationControl( {
|
|
|
59
60
|
onChange={ ( newValue ) => {
|
|
60
61
|
onChange( newValue === value ? undefined : newValue );
|
|
61
62
|
} }
|
|
62
|
-
|
|
63
|
+
>
|
|
64
|
+
{ TEXT_DECORATIONS.map( ( option ) => {
|
|
65
|
+
return (
|
|
66
|
+
<ToggleGroupControlOptionIcon
|
|
67
|
+
key={ option.value }
|
|
68
|
+
value={ option.value }
|
|
69
|
+
icon={ option.icon }
|
|
70
|
+
label={ option.label }
|
|
71
|
+
/>
|
|
72
|
+
);
|
|
73
|
+
} ) }
|
|
74
|
+
</ToggleGroupControl>
|
|
63
75
|
);
|
|
64
76
|
}
|
|
@@ -13,11 +13,10 @@ import {
|
|
|
13
13
|
formatLowercase,
|
|
14
14
|
formatUppercase,
|
|
15
15
|
} from '@wordpress/icons';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
import SegmentedTextControl from '../segmented-text-control';
|
|
16
|
+
import {
|
|
17
|
+
__experimentalToggleGroupControl as ToggleGroupControl,
|
|
18
|
+
__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,
|
|
19
|
+
} from '@wordpress/components';
|
|
21
20
|
|
|
22
21
|
const TEXT_TRANSFORMS = [
|
|
23
22
|
{
|
|
@@ -54,9 +53,11 @@ const TEXT_TRANSFORMS = [
|
|
|
54
53
|
*/
|
|
55
54
|
export default function TextTransformControl( { className, value, onChange } ) {
|
|
56
55
|
return (
|
|
57
|
-
<
|
|
56
|
+
<ToggleGroupControl
|
|
57
|
+
isDeselectable
|
|
58
|
+
__nextHasNoMarginBottom
|
|
59
|
+
__next40pxDefaultSize
|
|
58
60
|
label={ __( 'Letter case' ) }
|
|
59
|
-
options={ TEXT_TRANSFORMS }
|
|
60
61
|
className={ clsx(
|
|
61
62
|
'block-editor-text-transform-control',
|
|
62
63
|
className
|
|
@@ -65,6 +66,17 @@ export default function TextTransformControl( { className, value, onChange } ) {
|
|
|
65
66
|
onChange={ ( newValue ) => {
|
|
66
67
|
onChange( newValue === value ? undefined : newValue );
|
|
67
68
|
} }
|
|
68
|
-
|
|
69
|
+
>
|
|
70
|
+
{ TEXT_TRANSFORMS.map( ( option ) => {
|
|
71
|
+
return (
|
|
72
|
+
<ToggleGroupControlOptionIcon
|
|
73
|
+
key={ option.value }
|
|
74
|
+
value={ option.value }
|
|
75
|
+
icon={ option.icon }
|
|
76
|
+
label={ option.label }
|
|
77
|
+
/>
|
|
78
|
+
);
|
|
79
|
+
} ) }
|
|
80
|
+
</ToggleGroupControl>
|
|
69
81
|
);
|
|
70
82
|
}
|
|
@@ -120,8 +120,8 @@ $input-size: 300px;
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
.block-editor-url-input__button-modal {
|
|
123
|
-
box-shadow: $
|
|
124
|
-
border:
|
|
123
|
+
box-shadow: $elevation-x-small;
|
|
124
|
+
border: $border-width solid $gray-300;
|
|
125
125
|
background: $white;
|
|
126
126
|
}
|
|
127
127
|
|
|
@@ -227,12 +227,14 @@ const ImageURLInputUI = ( {
|
|
|
227
227
|
checked={ linkTarget === '_blank' }
|
|
228
228
|
/>
|
|
229
229
|
<TextControl
|
|
230
|
+
__next40pxDefaultSize
|
|
230
231
|
__nextHasNoMarginBottom
|
|
231
232
|
label={ __( 'Link rel' ) }
|
|
232
233
|
value={ rel ?? '' }
|
|
233
234
|
onChange={ onSetLinkRel }
|
|
234
235
|
/>
|
|
235
236
|
<TextControl
|
|
237
|
+
__next40pxDefaultSize
|
|
236
238
|
__nextHasNoMarginBottom
|
|
237
239
|
label={ __( 'Link CSS class' ) }
|
|
238
240
|
value={ linkClass || '' }
|
|
@@ -313,6 +313,8 @@ export default function useBlockDropZone( {
|
|
|
313
313
|
getAllowedBlocks,
|
|
314
314
|
isDragging,
|
|
315
315
|
isGroupable,
|
|
316
|
+
getSettings,
|
|
317
|
+
isZoomOutMode,
|
|
316
318
|
} = unlock( useSelect( blockEditorStore ) );
|
|
317
319
|
const {
|
|
318
320
|
showInsertionPoint,
|
|
@@ -343,6 +345,7 @@ export default function useBlockDropZone( {
|
|
|
343
345
|
const targetBlockName = getBlockNamesByClientId( [
|
|
344
346
|
targetRootClientId,
|
|
345
347
|
] )[ 0 ];
|
|
348
|
+
|
|
346
349
|
const draggedBlockNames = getBlockNamesByClientId(
|
|
347
350
|
getDraggedBlockClientIds()
|
|
348
351
|
);
|
|
@@ -352,10 +355,23 @@ export default function useBlockDropZone( {
|
|
|
352
355
|
draggedBlockNames,
|
|
353
356
|
targetBlockName
|
|
354
357
|
);
|
|
358
|
+
|
|
355
359
|
if ( ! isBlockDroppingAllowed ) {
|
|
356
360
|
return;
|
|
357
361
|
}
|
|
358
362
|
|
|
363
|
+
const { sectionRootClientId } = unlock( getSettings() );
|
|
364
|
+
|
|
365
|
+
// In Zoom Out mode, if the target is not the section root provided by settings then
|
|
366
|
+
// do not allow dropping as the drop target is not within the root (that which is
|
|
367
|
+
// treated as "the content" by Zoom Out Mode).
|
|
368
|
+
if (
|
|
369
|
+
isZoomOutMode() &&
|
|
370
|
+
sectionRootClientId !== targetRootClientId
|
|
371
|
+
) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
|
|
359
375
|
const blocks = getBlocks( targetRootClientId );
|
|
360
376
|
|
|
361
377
|
// The block list is empty, don't show the insertion point but still allow dropping.
|
|
@@ -470,6 +486,7 @@ export default function useBlockDropZone( {
|
|
|
470
486
|
} );
|
|
471
487
|
},
|
|
472
488
|
[
|
|
489
|
+
isDragging,
|
|
473
490
|
getAllowedBlocks,
|
|
474
491
|
targetRootClientId,
|
|
475
492
|
getBlockNamesByClientId,
|
|
@@ -481,13 +498,14 @@ export default function useBlockDropZone( {
|
|
|
481
498
|
parentBlockClientId,
|
|
482
499
|
getBlockIndex,
|
|
483
500
|
registry,
|
|
484
|
-
showInsertionPoint,
|
|
485
|
-
isDragging,
|
|
486
501
|
startDragging,
|
|
502
|
+
showInsertionPoint,
|
|
487
503
|
canInsertBlockType,
|
|
504
|
+
isGroupable,
|
|
488
505
|
getBlockVariations,
|
|
489
506
|
getGroupingBlockName,
|
|
490
|
-
|
|
507
|
+
getSettings,
|
|
508
|
+
isZoomOutMode,
|
|
491
509
|
]
|
|
492
510
|
),
|
|
493
511
|
200
|
|
@@ -8,11 +8,10 @@ import clsx from 'clsx';
|
|
|
8
8
|
*/
|
|
9
9
|
import { __, isRTL } from '@wordpress/i18n';
|
|
10
10
|
import { textHorizontal, textVertical } from '@wordpress/icons';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import SegmentedTextControl from '../segmented-text-control';
|
|
11
|
+
import {
|
|
12
|
+
__experimentalToggleGroupControl as ToggleGroupControl,
|
|
13
|
+
__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,
|
|
14
|
+
} from '@wordpress/components';
|
|
16
15
|
|
|
17
16
|
const WRITING_MODES = [
|
|
18
17
|
{
|
|
@@ -39,14 +38,27 @@ const WRITING_MODES = [
|
|
|
39
38
|
*/
|
|
40
39
|
export default function WritingModeControl( { className, value, onChange } ) {
|
|
41
40
|
return (
|
|
42
|
-
<
|
|
41
|
+
<ToggleGroupControl
|
|
42
|
+
isDeselectable
|
|
43
|
+
__nextHasNoMarginBottom
|
|
44
|
+
__next40pxDefaultSize
|
|
43
45
|
label={ __( 'Orientation' ) }
|
|
44
|
-
options={ WRITING_MODES }
|
|
45
46
|
className={ clsx( 'block-editor-writing-mode-control', className ) }
|
|
46
47
|
value={ value }
|
|
47
48
|
onChange={ ( newValue ) => {
|
|
48
49
|
onChange( newValue === value ? undefined : newValue );
|
|
49
50
|
} }
|
|
50
|
-
|
|
51
|
+
>
|
|
52
|
+
{ WRITING_MODES.map( ( option ) => {
|
|
53
|
+
return (
|
|
54
|
+
<ToggleGroupControlOptionIcon
|
|
55
|
+
key={ option.value }
|
|
56
|
+
value={ option.value }
|
|
57
|
+
icon={ option.icon }
|
|
58
|
+
label={ option.label }
|
|
59
|
+
/>
|
|
60
|
+
);
|
|
61
|
+
} ) }
|
|
62
|
+
</ToggleGroupControl>
|
|
51
63
|
);
|
|
52
64
|
}
|
package/src/hooks/background.js
CHANGED
|
@@ -16,16 +16,14 @@ import {
|
|
|
16
16
|
useHasBackgroundPanel,
|
|
17
17
|
hasBackgroundImageValue,
|
|
18
18
|
} from '../components/global-styles/background-panel';
|
|
19
|
-
import {
|
|
20
|
-
globalStylesDataKey,
|
|
21
|
-
globalStylesLinksDataKey,
|
|
22
|
-
} from '../store/private-keys';
|
|
19
|
+
import { globalStylesDataKey } from '../store/private-keys';
|
|
23
20
|
|
|
24
21
|
export const BACKGROUND_SUPPORT_KEY = 'background';
|
|
25
22
|
|
|
26
|
-
// Initial control values
|
|
27
|
-
const
|
|
23
|
+
// Initial control values.
|
|
24
|
+
export const BACKGROUND_BLOCK_DEFAULT_VALUES = {
|
|
28
25
|
backgroundSize: 'cover',
|
|
26
|
+
backgroundPosition: '50% 50%', // used only when backgroundSize is 'contain'.
|
|
29
27
|
};
|
|
30
28
|
|
|
31
29
|
/**
|
|
@@ -55,31 +53,28 @@ export function hasBackgroundSupport( blockName, feature = 'any' ) {
|
|
|
55
53
|
}
|
|
56
54
|
|
|
57
55
|
export function setBackgroundStyleDefaults( backgroundStyle ) {
|
|
58
|
-
if ( ! backgroundStyle ) {
|
|
56
|
+
if ( ! backgroundStyle || ! backgroundStyle?.backgroundImage?.url ) {
|
|
59
57
|
return;
|
|
60
58
|
}
|
|
61
59
|
|
|
62
|
-
const backgroundImage = backgroundStyle?.backgroundImage;
|
|
63
60
|
let backgroundStylesWithDefaults;
|
|
64
61
|
|
|
65
62
|
// Set block background defaults.
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (
|
|
74
|
-
'contain' === backgroundStyle?.backgroundSize &&
|
|
75
|
-
! backgroundStyle?.backgroundPosition
|
|
76
|
-
) {
|
|
77
|
-
backgroundStylesWithDefaults = {
|
|
78
|
-
backgroundPosition: 'center',
|
|
79
|
-
};
|
|
80
|
-
}
|
|
63
|
+
if ( ! backgroundStyle?.backgroundSize ) {
|
|
64
|
+
backgroundStylesWithDefaults = {
|
|
65
|
+
backgroundSize: BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundSize,
|
|
66
|
+
};
|
|
81
67
|
}
|
|
82
68
|
|
|
69
|
+
if (
|
|
70
|
+
'contain' === backgroundStyle?.backgroundSize &&
|
|
71
|
+
! backgroundStyle?.backgroundPosition
|
|
72
|
+
) {
|
|
73
|
+
backgroundStylesWithDefaults = {
|
|
74
|
+
backgroundPosition:
|
|
75
|
+
BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundPosition,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
83
78
|
return backgroundStylesWithDefaults;
|
|
84
79
|
}
|
|
85
80
|
|
|
@@ -138,15 +133,15 @@ export function BackgroundImagePanel( {
|
|
|
138
133
|
setAttributes,
|
|
139
134
|
settings,
|
|
140
135
|
} ) {
|
|
141
|
-
const { style, inheritedValue
|
|
136
|
+
const { style, inheritedValue } = useSelect(
|
|
142
137
|
( select ) => {
|
|
143
138
|
const { getBlockAttributes, getSettings } =
|
|
144
139
|
select( blockEditorStore );
|
|
145
140
|
const _settings = getSettings();
|
|
146
141
|
return {
|
|
147
142
|
style: getBlockAttributes( clientId )?.style,
|
|
148
|
-
_links: _settings[ globalStylesLinksDataKey ],
|
|
149
143
|
/*
|
|
144
|
+
* To ensure we pass down the right inherited values:
|
|
150
145
|
* @TODO 1. Pass inherited value down to all block style controls,
|
|
151
146
|
* See: packages/block-editor/src/hooks/style.js
|
|
152
147
|
* @TODO 2. Add support for block style variations,
|
|
@@ -187,11 +182,10 @@ export function BackgroundImagePanel( {
|
|
|
187
182
|
inheritedValue={ inheritedValue }
|
|
188
183
|
as={ BackgroundInspectorControl }
|
|
189
184
|
panelId={ clientId }
|
|
190
|
-
defaultValues={
|
|
185
|
+
defaultValues={ BACKGROUND_BLOCK_DEFAULT_VALUES }
|
|
191
186
|
settings={ updatedSettings }
|
|
192
187
|
onChange={ onChange }
|
|
193
188
|
value={ style }
|
|
194
|
-
themeFileURIs={ _links?.[ 'wp:theme-file' ] }
|
|
195
189
|
/>
|
|
196
190
|
);
|
|
197
191
|
}
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
__experimentalVStack as VStack,
|
|
14
14
|
privateApis as componentsPrivateApis,
|
|
15
15
|
} from '@wordpress/components';
|
|
16
|
-
import {
|
|
16
|
+
import { useRegistry } from '@wordpress/data';
|
|
17
17
|
import { useContext, Fragment } from '@wordpress/element';
|
|
18
18
|
import { useViewportMatch } from '@wordpress/compose';
|
|
19
19
|
|
|
@@ -24,10 +24,10 @@ import {
|
|
|
24
24
|
canBindAttribute,
|
|
25
25
|
getBindableAttributes,
|
|
26
26
|
} from '../hooks/use-bindings-attributes';
|
|
27
|
-
import { store as blockEditorStore } from '../store';
|
|
28
27
|
import { unlock } from '../lock-unlock';
|
|
29
28
|
import InspectorControls from '../components/inspector-controls';
|
|
30
29
|
import BlockContext from '../components/block-context';
|
|
30
|
+
import { useBlockBindingsUtils } from '../utils/block-bindings';
|
|
31
31
|
|
|
32
32
|
const {
|
|
33
33
|
DropdownMenuV2: DropdownMenu,
|
|
@@ -51,17 +51,15 @@ const useToolsPanelDropdownMenuProps = () => {
|
|
|
51
51
|
: {};
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
function BlockBindingsPanelDropdown( {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
binding,
|
|
59
|
-
} ) {
|
|
54
|
+
function BlockBindingsPanelDropdown( { fieldsList, attribute, binding } ) {
|
|
55
|
+
const { getBlockBindingsSources } = unlock( blocksPrivateApis );
|
|
56
|
+
const registeredSources = getBlockBindingsSources();
|
|
57
|
+
const { updateBlockBindings } = useBlockBindingsUtils();
|
|
60
58
|
const currentKey = binding?.args?.key;
|
|
61
59
|
return (
|
|
62
60
|
<>
|
|
63
|
-
{ Object.entries( fieldsList ).map( ( [
|
|
64
|
-
<Fragment key={
|
|
61
|
+
{ Object.entries( fieldsList ).map( ( [ name, fields ], i ) => (
|
|
62
|
+
<Fragment key={ name }>
|
|
65
63
|
<DropdownMenuGroup>
|
|
66
64
|
{ Object.keys( fieldsList ).length > 1 && (
|
|
67
65
|
<Text
|
|
@@ -70,14 +68,19 @@ function BlockBindingsPanelDropdown( {
|
|
|
70
68
|
variant="muted"
|
|
71
69
|
aria-hidden
|
|
72
70
|
>
|
|
73
|
-
{ label }
|
|
71
|
+
{ registeredSources[ name ].label }
|
|
74
72
|
</Text>
|
|
75
73
|
) }
|
|
76
74
|
{ Object.entries( fields ).map( ( [ key, value ] ) => (
|
|
77
75
|
<DropdownMenuRadioItem
|
|
78
76
|
key={ key }
|
|
79
77
|
onChange={ () =>
|
|
80
|
-
|
|
78
|
+
updateBlockBindings( {
|
|
79
|
+
[ attribute ]: {
|
|
80
|
+
source: name,
|
|
81
|
+
args: { key },
|
|
82
|
+
},
|
|
83
|
+
} )
|
|
81
84
|
}
|
|
82
85
|
name={ attribute + '-binding' }
|
|
83
86
|
value={ key }
|
|
@@ -141,9 +144,8 @@ function EditableBlockBindingsPanelItems( {
|
|
|
141
144
|
attributes,
|
|
142
145
|
bindings,
|
|
143
146
|
fieldsList,
|
|
144
|
-
addConnection,
|
|
145
|
-
removeConnection,
|
|
146
147
|
} ) {
|
|
148
|
+
const { updateBlockBindings } = useBlockBindingsUtils();
|
|
147
149
|
const isMobile = useViewportMatch( 'medium', '<' );
|
|
148
150
|
return (
|
|
149
151
|
<>
|
|
@@ -155,7 +157,9 @@ function EditableBlockBindingsPanelItems( {
|
|
|
155
157
|
hasValue={ () => !! binding }
|
|
156
158
|
label={ attribute }
|
|
157
159
|
onDeselect={ () => {
|
|
158
|
-
|
|
160
|
+
updateBlockBindings( {
|
|
161
|
+
[ attribute ]: undefined,
|
|
162
|
+
} );
|
|
159
163
|
} }
|
|
160
164
|
>
|
|
161
165
|
<DropdownMenu
|
|
@@ -175,7 +179,6 @@ function EditableBlockBindingsPanelItems( {
|
|
|
175
179
|
>
|
|
176
180
|
<BlockBindingsPanelDropdown
|
|
177
181
|
fieldsList={ fieldsList }
|
|
178
|
-
addConnection={ addConnection }
|
|
179
182
|
attribute={ attribute }
|
|
180
183
|
binding={ binding }
|
|
181
184
|
/>
|
|
@@ -187,91 +190,33 @@ function EditableBlockBindingsPanelItems( {
|
|
|
187
190
|
);
|
|
188
191
|
}
|
|
189
192
|
|
|
190
|
-
export const BlockBindingsPanel = ( { name, metadata } ) => {
|
|
193
|
+
export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
|
|
191
194
|
const registry = useRegistry();
|
|
192
195
|
const blockContext = useContext( BlockContext );
|
|
193
196
|
const { bindings } = metadata || {};
|
|
194
|
-
|
|
195
|
-
const bindableAttributes = getBindableAttributes(
|
|
197
|
+
const { removeAllBlockBindings } = useBlockBindingsUtils();
|
|
198
|
+
const bindableAttributes = getBindableAttributes( blockName );
|
|
196
199
|
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
197
200
|
|
|
198
201
|
const filteredBindings = { ...bindings };
|
|
199
202
|
Object.keys( filteredBindings ).forEach( ( key ) => {
|
|
200
203
|
if (
|
|
201
|
-
! canBindAttribute(
|
|
204
|
+
! canBindAttribute( blockName, key ) ||
|
|
202
205
|
filteredBindings[ key ].source === 'core/pattern-overrides'
|
|
203
206
|
) {
|
|
204
207
|
delete filteredBindings[ key ];
|
|
205
208
|
}
|
|
206
209
|
} );
|
|
207
210
|
|
|
208
|
-
const { updateBlockAttributes } = useDispatch( blockEditorStore );
|
|
209
|
-
|
|
210
|
-
const { _id } = useSelect( ( select ) => {
|
|
211
|
-
const { getSelectedBlockClientId } = select( blockEditorStore );
|
|
212
|
-
|
|
213
|
-
return {
|
|
214
|
-
_id: getSelectedBlockClientId(),
|
|
215
|
-
};
|
|
216
|
-
}, [] );
|
|
217
|
-
|
|
218
211
|
if ( ! bindableAttributes || bindableAttributes.length === 0 ) {
|
|
219
212
|
return null;
|
|
220
213
|
}
|
|
221
214
|
|
|
222
|
-
const removeAllConnections = () => {
|
|
223
|
-
const newMetadata = { ...metadata };
|
|
224
|
-
delete newMetadata.bindings;
|
|
225
|
-
updateBlockAttributes( _id, {
|
|
226
|
-
metadata:
|
|
227
|
-
Object.keys( newMetadata ).length === 0
|
|
228
|
-
? undefined
|
|
229
|
-
: newMetadata,
|
|
230
|
-
} );
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
const addConnection = ( value, attribute ) => {
|
|
234
|
-
// Assuming the block expects a flat structure for its metadata attribute
|
|
235
|
-
const newMetadata = {
|
|
236
|
-
...metadata,
|
|
237
|
-
// Adjust this according to the actual structure expected by your block
|
|
238
|
-
bindings: {
|
|
239
|
-
...metadata?.bindings,
|
|
240
|
-
[ attribute ]: {
|
|
241
|
-
source: 'core/post-meta',
|
|
242
|
-
args: { key: value },
|
|
243
|
-
},
|
|
244
|
-
},
|
|
245
|
-
};
|
|
246
|
-
// Update the block's attributes with the new metadata
|
|
247
|
-
updateBlockAttributes( _id, {
|
|
248
|
-
metadata: newMetadata,
|
|
249
|
-
} );
|
|
250
|
-
};
|
|
251
|
-
|
|
252
|
-
const removeConnection = ( key ) => {
|
|
253
|
-
const newMetadata = { ...metadata };
|
|
254
|
-
if ( ! newMetadata.bindings ) {
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
delete newMetadata.bindings[ key ];
|
|
259
|
-
if ( Object.keys( newMetadata.bindings ).length === 0 ) {
|
|
260
|
-
delete newMetadata.bindings;
|
|
261
|
-
}
|
|
262
|
-
updateBlockAttributes( _id, {
|
|
263
|
-
metadata:
|
|
264
|
-
Object.keys( newMetadata ).length === 0
|
|
265
|
-
? undefined
|
|
266
|
-
: newMetadata,
|
|
267
|
-
} );
|
|
268
|
-
};
|
|
269
|
-
|
|
270
215
|
const fieldsList = {};
|
|
271
216
|
const { getBlockBindingsSources } = unlock( blocksPrivateApis );
|
|
272
217
|
const registeredSources = getBlockBindingsSources();
|
|
273
|
-
Object.
|
|
274
|
-
( { getFieldsList,
|
|
218
|
+
Object.entries( registeredSources ).forEach(
|
|
219
|
+
( [ sourceName, { getFieldsList, usesContext } ] ) => {
|
|
275
220
|
if ( getFieldsList ) {
|
|
276
221
|
// Populate context.
|
|
277
222
|
const context = {};
|
|
@@ -286,7 +231,7 @@ export const BlockBindingsPanel = ( { name, metadata } ) => {
|
|
|
286
231
|
} );
|
|
287
232
|
// Only add source if the list is not empty.
|
|
288
233
|
if ( sourceList ) {
|
|
289
|
-
fieldsList[
|
|
234
|
+
fieldsList[ sourceName ] = { ...sourceList };
|
|
290
235
|
}
|
|
291
236
|
}
|
|
292
237
|
}
|
|
@@ -312,7 +257,7 @@ export const BlockBindingsPanel = ( { name, metadata } ) => {
|
|
|
312
257
|
<ToolsPanel
|
|
313
258
|
label={ __( 'Attributes' ) }
|
|
314
259
|
resetAll={ () => {
|
|
315
|
-
|
|
260
|
+
removeAllBlockBindings();
|
|
316
261
|
} }
|
|
317
262
|
dropdownMenuProps={ dropdownMenuProps }
|
|
318
263
|
className="block-editor-bindings__panel"
|
|
@@ -327,8 +272,6 @@ export const BlockBindingsPanel = ( { name, metadata } ) => {
|
|
|
327
272
|
attributes={ bindableAttributes }
|
|
328
273
|
bindings={ filteredBindings }
|
|
329
274
|
fieldsList={ fieldsList }
|
|
330
|
-
addConnection={ addConnection }
|
|
331
|
-
removeConnection={ removeConnection }
|
|
332
275
|
/>
|
|
333
276
|
) }
|
|
334
277
|
</ItemGroup>
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal dependencies
|
|
3
|
+
*/
|
|
4
|
+
import {
|
|
5
|
+
setBackgroundStyleDefaults,
|
|
6
|
+
BACKGROUND_BLOCK_DEFAULT_VALUES,
|
|
7
|
+
} from '../background';
|
|
8
|
+
|
|
9
|
+
describe( 'background', () => {
|
|
10
|
+
describe( 'setBackgroundStyleDefaults', () => {
|
|
11
|
+
const backgroundStyles = {
|
|
12
|
+
backgroundImage: { id: 123, url: 'image.png' },
|
|
13
|
+
};
|
|
14
|
+
const backgroundStylesContain = {
|
|
15
|
+
backgroundImage: { id: 123, url: 'image.png' },
|
|
16
|
+
backgroundSize: 'contain',
|
|
17
|
+
};
|
|
18
|
+
const backgroundStylesNoURL = { backgroundImage: { id: 123 } };
|
|
19
|
+
it.each( [
|
|
20
|
+
[
|
|
21
|
+
'return background size default',
|
|
22
|
+
backgroundStyles,
|
|
23
|
+
{
|
|
24
|
+
backgroundSize:
|
|
25
|
+
BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundSize,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
[ 'return early if no styles are passed', undefined, undefined ],
|
|
29
|
+
[
|
|
30
|
+
'return early if images has no id',
|
|
31
|
+
backgroundStylesNoURL,
|
|
32
|
+
undefined,
|
|
33
|
+
],
|
|
34
|
+
[
|
|
35
|
+
'return early if images has no URL',
|
|
36
|
+
backgroundStylesNoURL,
|
|
37
|
+
undefined,
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
'return background position default',
|
|
41
|
+
backgroundStylesContain,
|
|
42
|
+
{
|
|
43
|
+
backgroundPosition:
|
|
44
|
+
BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundPosition,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
'not apply background position value if one already exists in styles',
|
|
49
|
+
{
|
|
50
|
+
...backgroundStylesContain,
|
|
51
|
+
backgroundPosition: 'center',
|
|
52
|
+
},
|
|
53
|
+
undefined,
|
|
54
|
+
],
|
|
55
|
+
] )( 'should %s', ( message, styles, expected ) => {
|
|
56
|
+
const result = setBackgroundStyleDefaults( styles );
|
|
57
|
+
expect( result ).toEqual( expected );
|
|
58
|
+
} );
|
|
59
|
+
} );
|
|
60
|
+
} );
|