@wordpress/block-editor 10.3.0 → 10.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/components/alignment-control/ui.js +1 -1
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-control/constants.js +1 -1
- package/build/components/block-alignment-control/constants.js.map +1 -1
- package/build/components/block-alignment-matrix-control/index.js +1 -1
- package/build/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build/components/block-compare/index.js +1 -3
- package/build/components/block-compare/index.js.map +1 -1
- package/build/components/block-edit/index.js +4 -2
- package/build/components/block-edit/index.js.map +1 -1
- package/build/components/block-list/block.js +3 -1
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-popover/inbetween.js +2 -1
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +2 -1
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/index.js +2 -4
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +2 -8
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-switcher/index.js +2 -8
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/preview-block-popover.js +1 -1
- package/build/components/block-switcher/preview-block-popover.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +12 -2
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-vertical-alignment-control/ui.js +1 -1
- package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build/components/border-radius-control/all-input-control.js +2 -1
- package/build/components/border-radius-control/all-input-control.js.map +1 -1
- package/build/components/border-radius-control/index.js +2 -1
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/input-controls.js +2 -1
- package/build/components/border-radius-control/input-controls.js.map +1 -1
- package/build/components/duotone-control/index.js +1 -1
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js +1 -1
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/iframe/index.js +1 -1
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/constants.js +1 -1
- package/build/components/image-editor/constants.js.map +1 -1
- package/build/components/inner-blocks/index.js +6 -2
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/hooks/use-insertion-point.js +2 -7
- package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build/components/inserter/search-items.js +23 -2
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/line-height-control/index.js +2 -1
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +2 -1
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/media-replace-flow/index.js +1 -1
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar/index.js +1 -1
- package/build/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +1 -1
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +1 -1
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/all-input-control.js +6 -2
- package/build/components/spacing-sizes-control/all-input-control.js.map +1 -1
- package/build/components/spacing-sizes-control/axial-input-controls.js +6 -2
- package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
- package/build/components/spacing-sizes-control/index.js +6 -2
- package/build/components/spacing-sizes-control/index.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls.js +6 -2
- package/build/components/spacing-sizes-control/input-controls.js.map +1 -1
- package/build/components/spacing-sizes-control/spacing-input-control.js +12 -5
- package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build/components/url-input/index.js +1 -1
- package/build/components/url-input/index.js.map +1 -1
- package/build/hooks/border.js +1 -0
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/dimensions.js +32 -4
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/font-size.js +1 -0
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/layout.js +4 -3
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/margin.js +22 -16
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +18 -11
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/utils.js +7 -6
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/constrained.js +0 -1
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +1 -1
- package/build/layouts/flex.js.map +1 -1
- package/build/store/actions.js +4 -0
- package/build/store/actions.js.map +1 -1
- package/build/store/array.js +1 -7
- package/build/store/array.js.map +1 -1
- package/build/store/selectors.js +46 -29
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +1 -1
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-control/constants.js +1 -1
- package/build-module/components/block-alignment-control/constants.js.map +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build-module/components/block-compare/index.js +2 -3
- package/build-module/components/block-compare/index.js.map +1 -1
- package/build-module/components/block-edit/index.js +4 -2
- package/build-module/components/block-edit/index.js.map +1 -1
- package/build-module/components/block-list/block.js +3 -1
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +2 -1
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +2 -1
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/index.js +2 -3
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -7
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-switcher/index.js +2 -7
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/preview-block-popover.js +1 -1
- package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +12 -2
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-vertical-alignment-control/ui.js +1 -1
- package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build-module/components/border-radius-control/all-input-control.js +2 -1
- package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +2 -1
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/input-controls.js +2 -1
- package/build-module/components/border-radius-control/input-controls.js.map +1 -1
- package/build-module/components/duotone-control/index.js +1 -1
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js +2 -2
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/iframe/index.js +1 -1
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/constants.js +1 -1
- package/build-module/components/image-editor/constants.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +6 -2
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/hooks/use-insertion-point.js +2 -6
- package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build-module/components/inserter/search-items.js +23 -3
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/line-height-control/index.js +2 -1
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +2 -1
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +1 -1
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar/index.js +1 -1
- package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +1 -1
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/all-input-control.js +6 -2
- package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -1
- package/build-module/components/spacing-sizes-control/axial-input-controls.js +6 -2
- package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
- package/build-module/components/spacing-sizes-control/index.js +6 -2
- package/build-module/components/spacing-sizes-control/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls.js +6 -2
- package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -1
- package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -5
- package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build-module/components/url-input/index.js +1 -1
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/hooks/border.js +1 -0
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/dimensions.js +32 -4
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/font-size.js +1 -0
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/layout.js +5 -4
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/margin.js +23 -17
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +19 -12
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/utils.js +7 -7
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/constrained.js +0 -1
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +1 -1
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/store/actions.js +4 -0
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/array.js +1 -6
- package/build-module/store/array.js.map +1 -1
- package/build-module/store/selectors.js +47 -30
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +49 -62
- package/build-style/style.css +45 -58
- package/package.json +29 -28
- package/src/components/alignment-control/ui.js +1 -1
- package/src/components/block-alignment-control/constants.js +1 -1
- package/src/components/block-alignment-matrix-control/index.js +1 -1
- package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +13 -11
- package/src/components/block-breadcrumb/test/index.js +1 -1
- package/src/components/block-compare/index.js +3 -2
- package/src/components/block-edit/index.js +2 -1
- package/src/components/block-list/block.js +2 -0
- package/src/components/block-list/style.scss +1 -1
- package/src/components/block-mover/stories/index.js +1 -1
- package/src/components/block-mover/style.scss +35 -0
- package/src/components/block-popover/inbetween.js +1 -0
- package/src/components/block-popover/index.js +1 -0
- package/src/components/block-popover/style.scss +0 -4
- package/src/components/block-preview/index.js +8 -3
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -7
- package/src/components/block-switcher/index.js +2 -7
- package/src/components/block-switcher/preview-block-popover.js +1 -1
- package/src/components/block-tools/insertion-point.js +10 -1
- package/src/components/block-variation-picker/README.md +1 -1
- package/src/components/block-vertical-alignment-control/ui.js +1 -1
- package/src/components/border-radius-control/all-input-control.js +1 -0
- package/src/components/border-radius-control/index.js +1 -0
- package/src/components/border-radius-control/input-controls.js +1 -0
- package/src/components/border-radius-control/style.scss +15 -24
- package/src/components/color-palette/test/__snapshots__/control.js.snap +85 -83
- package/src/components/color-palette/test/control.js +1 -1
- package/src/components/duotone-control/index.js +1 -1
- package/src/components/font-sizes/with-font-sizes.js +2 -3
- package/src/components/iframe/index.js +1 -1
- package/src/components/image-editor/constants.js +1 -1
- package/src/components/inner-blocks/index.js +5 -1
- package/src/components/inner-blocks/test/index.js +4 -0
- package/src/components/inserter/hooks/use-insertion-point.js +3 -11
- package/src/components/inserter/search-items.js +23 -3
- package/src/components/inserter/test/search-items.js +6 -0
- package/src/components/inserter-list-item/style.scss +2 -0
- package/src/components/letter-spacing-control/README.md +55 -0
- package/src/components/line-height-control/index.js +1 -0
- package/src/components/link-control/README.md +3 -3
- package/src/components/list-view/drop-indicator.js +1 -0
- package/src/components/list-view/style.scss +1 -36
- package/src/components/media-replace-flow/index.js +1 -1
- package/src/components/media-replace-flow/test/index.js +69 -51
- package/src/components/rich-text/format-toolbar/index.js +1 -1
- package/src/components/rich-text/format-toolbar-container.js +1 -1
- package/src/components/rich-text/use-paste-handler.js +1 -1
- package/src/components/spacing-sizes-control/all-input-control.js +4 -0
- package/src/components/spacing-sizes-control/axial-input-controls.js +4 -0
- package/src/components/spacing-sizes-control/index.js +4 -0
- package/src/components/spacing-sizes-control/input-controls.js +4 -0
- package/src/components/spacing-sizes-control/spacing-input-control.js +10 -1
- package/src/components/spacing-sizes-control/style.scss +1 -0
- package/src/components/url-input/index.js +1 -1
- package/src/hooks/border.js +1 -0
- package/src/hooks/dimensions.js +32 -5
- package/src/hooks/font-size.js +1 -0
- package/src/hooks/layout.js +7 -9
- package/src/hooks/margin.js +19 -14
- package/src/hooks/padding.js +19 -16
- package/src/hooks/test/align.js +96 -72
- package/src/hooks/utils.js +5 -6
- package/src/layouts/constrained.js +0 -1
- package/src/layouts/flex.js +1 -1
- package/src/store/actions.js +4 -0
- package/src/store/array.js +1 -6
- package/src/store/selectors.js +28 -21
- package/src/store/test/selectors.js +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Letter spacing control
|
|
2
|
+
|
|
3
|
+
The `LetterSpacingControl` component renders a [`UnitControl`](https://github.com/WordPress/gutenberg/blob/trunk/packages/block-editor/src/components/unit-control/README.md) that lets the user enter a numeric value and select a unit, for example px or rem.
|
|
4
|
+
|
|
5
|
+
This component is used for blocks that display text, commonly inside a
|
|
6
|
+
[`ToolsPanelItem`](https://github.com/WordPress/gutenberg/blob/trunk/packages/components/src/tools-panel/tools-panel-item/README.md).
|
|
7
|
+
|
|
8
|
+
## Table of contents
|
|
9
|
+
|
|
10
|
+
1. [Development guidelines](#development-guidelines)
|
|
11
|
+
2. [Related components](#related-components)
|
|
12
|
+
|
|
13
|
+
## Development guidelines
|
|
14
|
+
|
|
15
|
+
### Usage
|
|
16
|
+
|
|
17
|
+
Renders a letter spacing control.
|
|
18
|
+
|
|
19
|
+
```jsx
|
|
20
|
+
import { LetterSpacingControl } from '@wordpress/block-editor';
|
|
21
|
+
|
|
22
|
+
const MyLetterSpacingControl = () => (
|
|
23
|
+
<LetterSpacingControl
|
|
24
|
+
value={ value }
|
|
25
|
+
onChange={ onChange }
|
|
26
|
+
__unstableInputWidth="auto"
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Props
|
|
32
|
+
|
|
33
|
+
### `value`
|
|
34
|
+
|
|
35
|
+
- **Type:** `String`
|
|
36
|
+
- **Default:** `undefined`
|
|
37
|
+
|
|
38
|
+
The current value of the letter spacing setting.
|
|
39
|
+
|
|
40
|
+
### `onChange`
|
|
41
|
+
|
|
42
|
+
- **Type:** `Function`
|
|
43
|
+
|
|
44
|
+
A callback function invoked when the value is changed.
|
|
45
|
+
|
|
46
|
+
### `_unstableInputWidth`
|
|
47
|
+
|
|
48
|
+
- **Type:** `string|number|undefined`
|
|
49
|
+
- **Default:** `undefined`
|
|
50
|
+
|
|
51
|
+
Input width to pass through to inner UnitControl. Should be a valid CSS value.
|
|
52
|
+
|
|
53
|
+
## Related components
|
|
54
|
+
|
|
55
|
+
Block Editor components are components that can be used to compose the UI of your block editor. Thus, they can only be used under a [`BlockEditorProvider`](https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/provider/README.md) in the components tree.
|
|
@@ -192,7 +192,7 @@ A `suggestion` should have the following shape:
|
|
|
192
192
|
)}
|
|
193
193
|
/>
|
|
194
194
|
```
|
|
195
|
-
### renderControlBottom
|
|
195
|
+
### renderControlBottom
|
|
196
196
|
|
|
197
197
|
- Type: `Function`
|
|
198
198
|
- Required: No
|
|
@@ -338,7 +338,7 @@ See the [createSuggestion](#createSuggestion) section of this file to learn more
|
|
|
338
338
|
<LinkControlSearchInput
|
|
339
339
|
renderSuggestions={( { suggestions } ) => {
|
|
340
340
|
return (
|
|
341
|
-
<Popover focusOnMount={ false }
|
|
341
|
+
<Popover focusOnMount={ false } placement="bottom">
|
|
342
342
|
<ul>
|
|
343
343
|
{ suggestions.map( () => ( <li key={ `${ suggestion.id }-${ suggestion.type }` }>{ suggestion.title }</li> ) ) }
|
|
344
344
|
</ul>
|
|
@@ -352,7 +352,7 @@ See the [createSuggestion](#createSuggestion) section of this file to learn more
|
|
|
352
352
|
<LinkControlSearchInput
|
|
353
353
|
renderSuggestions={( suggestionsProps ) => {
|
|
354
354
|
return (
|
|
355
|
-
<Popover focusOnMount={ false }
|
|
355
|
+
<Popover focusOnMount={ false } placement="bottom">
|
|
356
356
|
<LinkControlSearchResults { ...suggestionsProps } />
|
|
357
357
|
</Popover>
|
|
358
358
|
);
|
|
@@ -249,39 +249,12 @@
|
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
-
//
|
|
253
|
-
&:focus:enabled {
|
|
254
|
-
box-shadow: none;
|
|
255
|
-
outline: none;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// Focus style.
|
|
259
|
-
&:focus {
|
|
260
|
-
box-shadow: none;
|
|
261
|
-
outline: none;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
&:focus::before {
|
|
265
|
-
@include block-toolbar-button-style__focus();
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
// Focus and toggle pseudo elements.
|
|
252
|
+
// Tweak size and position of focus ring.
|
|
269
253
|
&::before {
|
|
270
|
-
content: "";
|
|
271
|
-
position: absolute;
|
|
272
|
-
display: block;
|
|
273
|
-
border-radius: $radius-block-ui;
|
|
274
254
|
height: 16px;
|
|
275
255
|
min-width: 100%;
|
|
276
|
-
|
|
277
|
-
// Position the focus rectangle.
|
|
278
256
|
left: 0;
|
|
279
257
|
right: 0;
|
|
280
|
-
|
|
281
|
-
// Animate in.
|
|
282
|
-
animation: components-button__appear-animation 0.1s ease;
|
|
283
|
-
animation-fill-mode: forwards;
|
|
284
|
-
@include reduce-motion("animation");
|
|
285
258
|
}
|
|
286
259
|
}
|
|
287
260
|
|
|
@@ -416,14 +389,6 @@ $block-navigation-max-indent: 8;
|
|
|
416
389
|
}
|
|
417
390
|
}
|
|
418
391
|
|
|
419
|
-
// Reset some popover defaults for the drop indicator.
|
|
420
|
-
.block-editor-list-view-drop-indicator > .components-popover__content {
|
|
421
|
-
margin-left: 0;
|
|
422
|
-
border: none;
|
|
423
|
-
box-shadow: none;
|
|
424
|
-
outline: none;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
392
|
.block-editor-list-view-placeholder {
|
|
428
393
|
padding: 0;
|
|
429
394
|
margin: 0;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { render,
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* WordPress dependencies
|
|
@@ -31,80 +32,97 @@ function TestWrapper() {
|
|
|
31
32
|
);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
function setUpMediaReplaceFlow() {
|
|
35
|
-
const { container } = render( <TestWrapper /> );
|
|
36
|
-
return container;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
35
|
describe( 'General media replace flow', () => {
|
|
40
36
|
it( 'renders successfully', () => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
'button
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
render( <TestWrapper /> );
|
|
38
|
+
|
|
39
|
+
expect(
|
|
40
|
+
screen.getByRole( 'button', {
|
|
41
|
+
expanded: false,
|
|
42
|
+
name: 'Replace',
|
|
43
|
+
} )
|
|
44
|
+
).toBeVisible();
|
|
48
45
|
} );
|
|
49
46
|
|
|
50
|
-
it( 'renders replace menu', () => {
|
|
51
|
-
const
|
|
47
|
+
it( 'renders replace menu', async () => {
|
|
48
|
+
const user = userEvent.setup( {
|
|
49
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
50
|
+
} );
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
'button[aria-expanded="false"]'
|
|
55
|
-
);
|
|
56
|
-
mediaReplaceButton.click();
|
|
52
|
+
render( <TestWrapper /> );
|
|
57
53
|
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
await user.click(
|
|
55
|
+
screen.getByRole( 'button', {
|
|
56
|
+
expanded: false,
|
|
57
|
+
name: 'Replace',
|
|
58
|
+
} )
|
|
60
59
|
);
|
|
61
60
|
|
|
62
|
-
|
|
61
|
+
const uploadMenu = screen.getByRole( 'menu' );
|
|
62
|
+
|
|
63
|
+
expect( uploadMenu ).toBeInTheDocument();
|
|
64
|
+
expect( uploadMenu ).not.toBeVisible();
|
|
63
65
|
} );
|
|
64
66
|
|
|
65
|
-
it( 'displays media URL', () => {
|
|
66
|
-
const
|
|
67
|
+
it( 'displays media URL', async () => {
|
|
68
|
+
const user = userEvent.setup( {
|
|
69
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
70
|
+
} );
|
|
67
71
|
|
|
68
|
-
|
|
69
|
-
'button[aria-expanded="false"]'
|
|
70
|
-
);
|
|
71
|
-
mediaReplaceButton.click();
|
|
72
|
+
render( <TestWrapper /> );
|
|
72
73
|
|
|
73
|
-
|
|
74
|
+
await user.click(
|
|
75
|
+
screen.getByRole( 'button', {
|
|
76
|
+
expanded: false,
|
|
77
|
+
name: 'Replace',
|
|
78
|
+
} )
|
|
79
|
+
);
|
|
74
80
|
|
|
75
|
-
expect(
|
|
81
|
+
expect(
|
|
82
|
+
screen.getByRole( 'link', {
|
|
83
|
+
name: 'example.media (opens in a new tab)',
|
|
84
|
+
} )
|
|
85
|
+
).toHaveAttribute( 'href', 'https://example.media' );
|
|
76
86
|
} );
|
|
77
87
|
|
|
78
|
-
it( 'edits media URL', () => {
|
|
79
|
-
const
|
|
88
|
+
it( 'edits media URL', async () => {
|
|
89
|
+
const user = userEvent.setup( {
|
|
90
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
91
|
+
} );
|
|
80
92
|
|
|
81
|
-
|
|
82
|
-
'button[aria-expanded="false"]'
|
|
83
|
-
);
|
|
84
|
-
mediaReplaceButton.click();
|
|
93
|
+
render( <TestWrapper /> );
|
|
85
94
|
|
|
86
|
-
|
|
87
|
-
|
|
95
|
+
await user.click(
|
|
96
|
+
screen.getByRole( 'button', {
|
|
97
|
+
expanded: false,
|
|
98
|
+
name: 'Replace',
|
|
99
|
+
} )
|
|
88
100
|
);
|
|
89
101
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
102
|
+
await user.click(
|
|
103
|
+
screen.getByRole( 'button', {
|
|
104
|
+
name: 'Edit',
|
|
105
|
+
} )
|
|
94
106
|
);
|
|
95
107
|
|
|
96
|
-
|
|
97
|
-
|
|
108
|
+
const mediaURLInput = screen.getByRole( 'combobox', {
|
|
109
|
+
name: 'URL',
|
|
110
|
+
expanded: false,
|
|
98
111
|
} );
|
|
99
112
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
saveMediaURLButton.click();
|
|
113
|
+
await user.clear( mediaURLInput );
|
|
114
|
+
await user.type( mediaURLInput, 'https://new.example.media' );
|
|
105
115
|
|
|
106
|
-
|
|
116
|
+
await user.click(
|
|
117
|
+
screen.getByRole( 'button', {
|
|
118
|
+
name: 'Submit',
|
|
119
|
+
} )
|
|
120
|
+
);
|
|
107
121
|
|
|
108
|
-
expect(
|
|
122
|
+
expect(
|
|
123
|
+
screen.getByRole( 'link', {
|
|
124
|
+
name: 'new.example.media (opens in a new tab)',
|
|
125
|
+
} )
|
|
126
|
+
).toHaveAttribute( 'href', 'https://new.example.media' );
|
|
109
127
|
} );
|
|
110
128
|
} );
|
|
@@ -42,7 +42,7 @@ function InlineSelectionToolbar( {
|
|
|
42
42
|
function InlineToolbar( { popoverAnchor } ) {
|
|
43
43
|
return (
|
|
44
44
|
<Popover
|
|
45
|
-
|
|
45
|
+
placement="top"
|
|
46
46
|
focusOnMount={ false }
|
|
47
47
|
anchor={ popoverAnchor }
|
|
48
48
|
className="block-editor-rich-text__inline-format-toolbar"
|
|
@@ -255,7 +255,7 @@ export function usePasteHandler( props ) {
|
|
|
255
255
|
|
|
256
256
|
/**
|
|
257
257
|
* Normalizes a given string of HTML to remove the Windows-specific "Fragment"
|
|
258
|
-
* comments and any
|
|
258
|
+
* comments and any preceding and trailing content.
|
|
259
259
|
*
|
|
260
260
|
* @param {string} html the html to be normalized
|
|
261
261
|
* @return {string} the normalized html
|
|
@@ -16,6 +16,8 @@ export default function AllInputControl( {
|
|
|
16
16
|
spacingSizes,
|
|
17
17
|
type,
|
|
18
18
|
minimumCustomValue,
|
|
19
|
+
onMouseOver,
|
|
20
|
+
onMouseOut,
|
|
19
21
|
} ) {
|
|
20
22
|
const allValue = getAllRawValue( values );
|
|
21
23
|
const hasValues = isValuesDefined( values );
|
|
@@ -35,6 +37,8 @@ export default function AllInputControl( {
|
|
|
35
37
|
isMixed={ isMixed }
|
|
36
38
|
type={ type }
|
|
37
39
|
minimumCustomValue={ minimumCustomValue }
|
|
40
|
+
onMouseOver={ onMouseOver }
|
|
41
|
+
onMouseOut={ onMouseOut }
|
|
38
42
|
/>
|
|
39
43
|
);
|
|
40
44
|
}
|
|
@@ -13,6 +13,8 @@ export default function AxialInputControls( {
|
|
|
13
13
|
spacingSizes,
|
|
14
14
|
type,
|
|
15
15
|
minimumCustomValue,
|
|
16
|
+
onMouseOver,
|
|
17
|
+
onMouseOut,
|
|
16
18
|
} ) {
|
|
17
19
|
const createHandleOnChange = ( side ) => ( next ) => {
|
|
18
20
|
if ( ! onChange ) {
|
|
@@ -54,6 +56,8 @@ export default function AxialInputControls( {
|
|
|
54
56
|
spacingSizes={ spacingSizes }
|
|
55
57
|
type={ type }
|
|
56
58
|
minimumCustomValue={ minimumCustomValue }
|
|
59
|
+
onMouseOver={ onMouseOver }
|
|
60
|
+
onMouseOut={ onMouseOut }
|
|
57
61
|
/>
|
|
58
62
|
);
|
|
59
63
|
} ) }
|
|
@@ -29,6 +29,8 @@ export default function SpacingSizesControl( {
|
|
|
29
29
|
splitOnAxis = false,
|
|
30
30
|
useSelect,
|
|
31
31
|
minimumCustomValue = 0,
|
|
32
|
+
onMouseOver,
|
|
33
|
+
onMouseOut,
|
|
32
34
|
} ) {
|
|
33
35
|
const spacingSizes = [
|
|
34
36
|
{ name: 0, slug: '0', size: 0 },
|
|
@@ -70,6 +72,8 @@ export default function SpacingSizesControl( {
|
|
|
70
72
|
useSelect,
|
|
71
73
|
type: label,
|
|
72
74
|
minimumCustomValue,
|
|
75
|
+
onMouseOver,
|
|
76
|
+
onMouseOut,
|
|
73
77
|
};
|
|
74
78
|
|
|
75
79
|
return (
|
|
@@ -11,6 +11,8 @@ export default function BoxInputControls( {
|
|
|
11
11
|
spacingSizes,
|
|
12
12
|
type,
|
|
13
13
|
minimumCustomValue,
|
|
14
|
+
onMouseOver,
|
|
15
|
+
onMouseOut,
|
|
14
16
|
} ) {
|
|
15
17
|
// Filter sides if custom configuration provided, maintaining default order.
|
|
16
18
|
const filteredSides = sides?.length
|
|
@@ -38,6 +40,8 @@ export default function BoxInputControls( {
|
|
|
38
40
|
spacingSizes={ spacingSizes }
|
|
39
41
|
type={ type }
|
|
40
42
|
minimumCustomValue={ minimumCustomValue }
|
|
43
|
+
onMouseOver={ onMouseOver }
|
|
44
|
+
onMouseOut={ onMouseOut }
|
|
41
45
|
/>
|
|
42
46
|
);
|
|
43
47
|
} ) }
|
|
@@ -51,6 +51,8 @@ export default function SpacingInputControl( {
|
|
|
51
51
|
isMixed = false,
|
|
52
52
|
type,
|
|
53
53
|
minimumCustomValue,
|
|
54
|
+
onMouseOver,
|
|
55
|
+
onMouseOut,
|
|
54
56
|
} ) {
|
|
55
57
|
// Treat value as a preset value if the passed in value matches the value of one of the spacingSizes.
|
|
56
58
|
value = getPresetValueFromCustomValue( value, spacingSizes );
|
|
@@ -218,6 +220,8 @@ export default function SpacingInputControl( {
|
|
|
218
220
|
{ showCustomValueControl && (
|
|
219
221
|
<>
|
|
220
222
|
<UnitControl
|
|
223
|
+
onMouseOver={ onMouseOver }
|
|
224
|
+
onMouseOut={ onMouseOut }
|
|
221
225
|
onChange={ ( newSize ) =>
|
|
222
226
|
onChange( getNewCustomValue( newSize ) )
|
|
223
227
|
}
|
|
@@ -229,11 +233,12 @@ export default function SpacingInputControl( {
|
|
|
229
233
|
label={ ariaLabel }
|
|
230
234
|
hideLabelFromVision={ true }
|
|
231
235
|
className="components-spacing-sizes-control__custom-value-input"
|
|
232
|
-
style={ { gridColumn: '1' } }
|
|
233
236
|
size={ '__unstable-large' }
|
|
234
237
|
/>
|
|
235
238
|
|
|
236
239
|
<RangeControl
|
|
240
|
+
onMouseOver={ onMouseOver }
|
|
241
|
+
onMouseOut={ onMouseOut }
|
|
237
242
|
value={ customRangeValue }
|
|
238
243
|
min={ 0 }
|
|
239
244
|
max={ CUSTOM_VALUE_SETTINGS[ selectedUnit ]?.max ?? 10 }
|
|
@@ -248,6 +253,8 @@ export default function SpacingInputControl( {
|
|
|
248
253
|
) }
|
|
249
254
|
{ showRangeControl && ! showCustomValueControl && (
|
|
250
255
|
<RangeControl
|
|
256
|
+
onMouseOver={ onMouseOver }
|
|
257
|
+
onMouseOut={ onMouseOut }
|
|
251
258
|
className="components-spacing-sizes-control__range-control"
|
|
252
259
|
value={ currentValue }
|
|
253
260
|
onChange={ ( newSize ) =>
|
|
@@ -293,6 +300,8 @@ export default function SpacingInputControl( {
|
|
|
293
300
|
hideLabelFromVision={ true }
|
|
294
301
|
__nextUnconstrainedWidth={ true }
|
|
295
302
|
size={ '__unstable-large' }
|
|
303
|
+
onMouseOver={ onMouseOver }
|
|
304
|
+
onMouseOut={ onMouseOut }
|
|
296
305
|
/>
|
|
297
306
|
) }
|
|
298
307
|
</>
|
|
@@ -543,7 +543,7 @@ class URLInput extends Component {
|
|
|
543
543
|
!! suggestions.length
|
|
544
544
|
) {
|
|
545
545
|
return (
|
|
546
|
-
<Popover
|
|
546
|
+
<Popover placement="bottom" focusOnMount={ false }>
|
|
547
547
|
<div
|
|
548
548
|
{ ...suggestionsListProps }
|
|
549
549
|
className={ classnames(
|
package/src/hooks/border.js
CHANGED
|
@@ -272,6 +272,7 @@ export function BorderPanel( props ) {
|
|
|
272
272
|
onChange={ onBorderChange }
|
|
273
273
|
popoverOffset={ 40 }
|
|
274
274
|
popoverPlacement="left-start"
|
|
275
|
+
size="__unstable-large"
|
|
275
276
|
value={ hydratedBorder }
|
|
276
277
|
__experimentalHasMultipleOrigins={ true }
|
|
277
278
|
__experimentalIsRenderedInSidebar={ true }
|
package/src/hooks/dimensions.js
CHANGED
|
@@ -7,7 +7,7 @@ import classnames from 'classnames';
|
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
9
|
import { __experimentalToolsPanelItem as ToolsPanelItem } from '@wordpress/components';
|
|
10
|
-
import { Platform } from '@wordpress/element';
|
|
10
|
+
import { Platform, useState } from '@wordpress/element';
|
|
11
11
|
import { __ } from '@wordpress/i18n';
|
|
12
12
|
import { getBlockSupport } from '@wordpress/blocks';
|
|
13
13
|
|
|
@@ -44,6 +44,13 @@ export const SPACING_SUPPORT_KEY = 'spacing';
|
|
|
44
44
|
export const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];
|
|
45
45
|
export const AXIAL_SIDES = [ 'vertical', 'horizontal' ];
|
|
46
46
|
|
|
47
|
+
function useVisualizerMouseOver() {
|
|
48
|
+
const [ isMouseOver, setIsMouseOver ] = useState( false );
|
|
49
|
+
const onMouseOver = () => setIsMouseOver( true );
|
|
50
|
+
const onMouseOut = () => setIsMouseOver( false );
|
|
51
|
+
return { isMouseOver, onMouseOver, onMouseOut };
|
|
52
|
+
}
|
|
53
|
+
|
|
47
54
|
/**
|
|
48
55
|
* Inspector controls for dimensions support.
|
|
49
56
|
*
|
|
@@ -58,6 +65,8 @@ export function DimensionsPanel( props ) {
|
|
|
58
65
|
const isDisabled = useIsDimensionsDisabled( props );
|
|
59
66
|
const isSupported = hasDimensionsSupport( props.name );
|
|
60
67
|
const spacingSizes = useSetting( 'spacing.spacingSizes' );
|
|
68
|
+
const paddingMouseOver = useVisualizerMouseOver();
|
|
69
|
+
const marginMouseOver = useVisualizerMouseOver();
|
|
61
70
|
|
|
62
71
|
if ( isDisabled || ! isSupported ) {
|
|
63
72
|
return null;
|
|
@@ -96,7 +105,11 @@ export function DimensionsPanel( props ) {
|
|
|
96
105
|
isShownByDefault={ defaultSpacingControls?.padding }
|
|
97
106
|
panelId={ props.clientId }
|
|
98
107
|
>
|
|
99
|
-
<PaddingEdit
|
|
108
|
+
<PaddingEdit
|
|
109
|
+
onMouseOver={ paddingMouseOver.onMouseOver }
|
|
110
|
+
onMouseOut={ paddingMouseOver.onMouseOut }
|
|
111
|
+
{ ...props }
|
|
112
|
+
/>
|
|
100
113
|
</ToolsPanelItem>
|
|
101
114
|
) }
|
|
102
115
|
{ ! isMarginDisabled && (
|
|
@@ -109,7 +122,11 @@ export function DimensionsPanel( props ) {
|
|
|
109
122
|
isShownByDefault={ defaultSpacingControls?.margin }
|
|
110
123
|
panelId={ props.clientId }
|
|
111
124
|
>
|
|
112
|
-
<MarginEdit
|
|
125
|
+
<MarginEdit
|
|
126
|
+
onMouseOver={ marginMouseOver.onMouseOver }
|
|
127
|
+
onMouseOut={ marginMouseOver.onMouseOut }
|
|
128
|
+
{ ...props }
|
|
129
|
+
/>
|
|
113
130
|
</ToolsPanelItem>
|
|
114
131
|
) }
|
|
115
132
|
{ ! isGapDisabled && (
|
|
@@ -126,8 +143,18 @@ export function DimensionsPanel( props ) {
|
|
|
126
143
|
</ToolsPanelItem>
|
|
127
144
|
) }
|
|
128
145
|
</InspectorControls>
|
|
129
|
-
{ ! isPaddingDisabled &&
|
|
130
|
-
|
|
146
|
+
{ ! isPaddingDisabled && (
|
|
147
|
+
<PaddingVisualizer
|
|
148
|
+
forceShow={ paddingMouseOver.isMouseOver }
|
|
149
|
+
{ ...props }
|
|
150
|
+
/>
|
|
151
|
+
) }
|
|
152
|
+
{ ! isMarginDisabled && (
|
|
153
|
+
<MarginVisualizer
|
|
154
|
+
forceShow={ marginMouseOver.isMouseOver }
|
|
155
|
+
{ ...props }
|
|
156
|
+
/>
|
|
157
|
+
) }
|
|
131
158
|
</>
|
|
132
159
|
);
|
|
133
160
|
}
|
package/src/hooks/font-size.js
CHANGED
package/src/hooks/layout.js
CHANGED
|
@@ -9,11 +9,7 @@ import { kebabCase } from 'lodash';
|
|
|
9
9
|
*/
|
|
10
10
|
import { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';
|
|
11
11
|
import { addFilter } from '@wordpress/hooks';
|
|
12
|
-
import {
|
|
13
|
-
getBlockDefaultClassName,
|
|
14
|
-
getBlockSupport,
|
|
15
|
-
hasBlockSupport,
|
|
16
|
-
} from '@wordpress/blocks';
|
|
12
|
+
import { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
|
|
17
13
|
import { useSelect } from '@wordpress/data';
|
|
18
14
|
import {
|
|
19
15
|
Button,
|
|
@@ -366,9 +362,8 @@ export const withLayoutStyles = createHigherOrderComponent(
|
|
|
366
362
|
const layoutClasses = hasLayoutBlockSupport
|
|
367
363
|
? useLayoutClasses( block )
|
|
368
364
|
: null;
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
) }.wp-container-${ id }`;
|
|
365
|
+
// Higher specificity to override defaults from theme.json.
|
|
366
|
+
const selector = `.wp-container-${ id }.wp-container-${ id }`;
|
|
372
367
|
const blockGapSupport = useSetting( 'spacing.blockGap' );
|
|
373
368
|
const hasBlockGapSupport = blockGapSupport !== null;
|
|
374
369
|
|
|
@@ -413,7 +408,10 @@ export const withLayoutStyles = createHigherOrderComponent(
|
|
|
413
408
|
/>,
|
|
414
409
|
element
|
|
415
410
|
) }
|
|
416
|
-
<BlockListBlock
|
|
411
|
+
<BlockListBlock
|
|
412
|
+
{ ...props }
|
|
413
|
+
__unstableLayoutClassNames={ className }
|
|
414
|
+
/>
|
|
417
415
|
</>
|
|
418
416
|
);
|
|
419
417
|
}
|