@wordpress/block-library 8.30.0 → 8.31.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/build/block/edit.js +17 -8
- package/build/block/edit.js.map +1 -1
- package/build/code/save.js +3 -1
- package/build/code/save.js.map +1 -1
- package/build/cover/edit/index.js +2 -1
- package/build/cover/edit/index.js.map +1 -1
- package/build/details/edit.js +1 -0
- package/build/details/edit.js.map +1 -1
- package/build/file/edit.js +2 -0
- package/build/file/edit.js.map +1 -1
- package/build/heading/index.js +4 -3
- package/build/heading/index.js.map +1 -1
- package/build/media-text/edit.js +33 -9
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/index.js +5 -0
- package/build/media-text/index.js.map +1 -1
- package/build/media-text/media-container.js +30 -11
- package/build/media-text/media-container.js.map +1 -1
- package/build/media-text/save.js +2 -2
- package/build/media-text/save.js.map +1 -1
- package/build/navigation/edit/index.js +23 -29
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/navigation-menu-delete-control.js +12 -20
- package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build/navigation/edit/navigation-menu-selector.js +24 -23
- package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/build/navigation/edit/placeholder/index.js +4 -4
- package/build/navigation/edit/placeholder/index.js.map +1 -1
- package/build/navigation/use-navigation-menu.js +15 -12
- package/build/navigation/use-navigation-menu.js.map +1 -1
- package/build/navigation-link/edit.js +12 -10
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-submenu/edit.js +4 -0
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/post-author/edit.js +1 -0
- package/build/post-author/edit.js.map +1 -1
- package/build/post-excerpt/edit.js +1 -0
- package/build/post-excerpt/edit.js.map +1 -1
- package/build/post-featured-image/edit.js +4 -1
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-featured-image/index.js +6 -0
- package/build/post-featured-image/index.js.map +1 -1
- package/build/post-navigation-link/edit.js +1 -0
- package/build/post-navigation-link/edit.js.map +1 -1
- package/build/post-terms/edit.js +2 -0
- package/build/post-terms/edit.js.map +1 -1
- package/build/quote/edit.js +2 -2
- package/build/quote/edit.js.map +1 -1
- package/build/read-more/edit.js +1 -0
- package/build/read-more/edit.js.map +1 -1
- package/build/search/edit.js +2 -0
- package/build/search/edit.js.map +1 -1
- package/build/search/edit.native.js +2 -2
- package/build/search/edit.native.js.map +1 -1
- package/build/social-link/edit.js +1 -1
- package/build/social-link/edit.js.map +1 -1
- package/build/social-link/icons/medium.js +1 -1
- package/build/social-link/icons/medium.js.map +1 -1
- package/build/social-link/icons/reddit.js +1 -1
- package/build/social-link/icons/reddit.js.map +1 -1
- package/build/table/deprecated.js +285 -175
- package/build/table/deprecated.js.map +1 -1
- package/build/table/index.js +1 -1
- package/build/template-part/edit/index.js +1 -1
- package/build/template-part/edit/index.js.map +1 -1
- package/build/video/edit.native.js +1 -1
- package/build/video/edit.native.js.map +1 -1
- package/build-module/block/edit.js +18 -9
- package/build-module/block/edit.js.map +1 -1
- package/build-module/code/save.js +3 -1
- package/build-module/code/save.js.map +1 -1
- package/build-module/cover/edit/index.js +2 -1
- package/build-module/cover/edit/index.js.map +1 -1
- package/build-module/details/edit.js +1 -0
- package/build-module/details/edit.js.map +1 -1
- package/build-module/file/edit.js +2 -0
- package/build-module/file/edit.js.map +1 -1
- package/build-module/heading/index.js +4 -3
- package/build-module/heading/index.js.map +1 -1
- package/build-module/media-text/edit.js +34 -10
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/index.js +5 -0
- package/build-module/media-text/index.js.map +1 -1
- package/build-module/media-text/media-container.js +31 -12
- package/build-module/media-text/media-container.js.map +1 -1
- package/build-module/media-text/save.js +2 -2
- package/build-module/media-text/save.js.map +1 -1
- package/build-module/navigation/edit/index.js +24 -30
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-delete-control.js +15 -23
- package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-selector.js +24 -23
- package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/build-module/navigation/edit/placeholder/index.js +4 -4
- package/build-module/navigation/edit/placeholder/index.js.map +1 -1
- package/build-module/navigation/use-navigation-menu.js +15 -12
- package/build-module/navigation/use-navigation-menu.js.map +1 -1
- package/build-module/navigation-link/edit.js +13 -11
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +4 -0
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/post-author/edit.js +1 -0
- package/build-module/post-author/edit.js.map +1 -1
- package/build-module/post-excerpt/edit.js +1 -0
- package/build-module/post-excerpt/edit.js.map +1 -1
- package/build-module/post-featured-image/edit.js +5 -2
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-featured-image/index.js +6 -0
- package/build-module/post-featured-image/index.js.map +1 -1
- package/build-module/post-navigation-link/edit.js +1 -0
- package/build-module/post-navigation-link/edit.js.map +1 -1
- package/build-module/post-terms/edit.js +2 -0
- package/build-module/post-terms/edit.js.map +1 -1
- package/build-module/quote/edit.js +2 -2
- package/build-module/quote/edit.js.map +1 -1
- package/build-module/read-more/edit.js +1 -0
- package/build-module/read-more/edit.js.map +1 -1
- package/build-module/search/edit.js +2 -0
- package/build-module/search/edit.js.map +1 -1
- package/build-module/search/edit.native.js +2 -2
- package/build-module/search/edit.native.js.map +1 -1
- package/build-module/social-link/edit.js +1 -1
- package/build-module/social-link/edit.js.map +1 -1
- package/build-module/social-link/icons/medium.js +1 -1
- package/build-module/social-link/icons/medium.js.map +1 -1
- package/build-module/social-link/icons/reddit.js +1 -1
- package/build-module/social-link/icons/reddit.js.map +1 -1
- package/build-module/table/deprecated.js +286 -176
- package/build-module/table/deprecated.js.map +1 -1
- package/build-module/table/index.js +1 -1
- package/build-module/template-part/edit/index.js +1 -1
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/video/edit.native.js +1 -1
- package/build-module/video/edit.native.js.map +1 -1
- package/build-style/editor-rtl.css +10 -4
- package/build-style/editor.css +10 -4
- package/build-style/file/editor-rtl.css +3 -0
- package/build-style/file/editor.css +3 -0
- package/build-style/image/editor-rtl.css +0 -3
- package/build-style/image/editor.css +0 -3
- package/build-style/media-text/editor-rtl.css +7 -1
- package/build-style/media-text/editor.css +7 -1
- package/build-style/social-links/style-rtl.css +2 -2
- package/build-style/social-links/style.css +2 -2
- package/build-style/style-rtl.css +2 -2
- package/build-style/style.css +2 -2
- package/package.json +34 -34
- package/src/archives/index.php +4 -0
- package/src/avatar/index.php +6 -0
- package/src/block/edit.js +38 -15
- package/src/block/index.php +4 -0
- package/src/block/test/edit.native.js +67 -0
- package/src/calendar/index.php +12 -0
- package/src/categories/index.php +6 -0
- package/src/code/save.js +7 -1
- package/src/comment-author-name/index.php +4 -0
- package/src/comment-content/index.php +4 -0
- package/src/comment-date/index.php +4 -0
- package/src/comment-edit-link/index.php +4 -0
- package/src/comment-reply-link/index.php +4 -0
- package/src/comment-template/index.php +4 -0
- package/src/comments/index.php +10 -0
- package/src/comments-pagination/index.php +4 -0
- package/src/comments-pagination-next/index.php +4 -0
- package/src/comments-pagination-numbers/index.php +4 -0
- package/src/comments-pagination-previous/index.php +4 -0
- package/src/comments-title/index.php +4 -0
- package/src/cover/edit/index.js +4 -1
- package/src/cover/index.php +4 -0
- package/src/details/edit.js +1 -0
- package/src/file/edit.js +2 -0
- package/src/file/editor.scss +3 -0
- package/src/file/index.php +4 -0
- package/src/gallery/index.php +6 -0
- package/src/heading/index.js +4 -3
- package/src/heading/index.php +4 -0
- package/src/home-link/index.php +10 -0
- package/src/image/editor.scss +0 -5
- package/src/image/index.php +12 -1
- package/src/latest-comments/index.php +4 -0
- package/src/latest-posts/index.php +8 -0
- package/src/loginout/index.php +4 -0
- package/src/media-text/block.json +5 -0
- package/src/media-text/edit.js +70 -19
- package/src/media-text/editor.scss +7 -1
- package/src/media-text/index.php +70 -0
- package/src/media-text/media-container.js +49 -9
- package/src/media-text/save.js +2 -2
- package/src/navigation/edit/index.js +67 -71
- package/src/navigation/edit/navigation-menu-delete-control.js +22 -49
- package/src/navigation/edit/navigation-menu-selector.js +39 -21
- package/src/navigation/edit/placeholder/index.js +4 -4
- package/src/navigation/edit/test/navigation-menu-selector.js +75 -53
- package/src/navigation/index.php +101 -26
- package/src/navigation/test/use-navigation-menu.js +21 -21
- package/src/navigation/use-navigation-menu.js +23 -9
- package/src/navigation-link/edit.js +12 -13
- package/src/navigation-link/index.php +14 -0
- package/src/navigation-submenu/edit.js +4 -0
- package/src/navigation-submenu/index.php +8 -0
- package/src/page-list/index.php +12 -0
- package/src/page-list-item/index.php +2 -0
- package/src/pattern/index.php +2 -0
- package/src/post-author/edit.js +1 -0
- package/src/post-author/index.php +4 -0
- package/src/post-author-biography/index.php +4 -0
- package/src/post-author-name/index.php +4 -0
- package/src/post-comments-form/index.php +6 -0
- package/src/post-content/index.php +4 -0
- package/src/post-date/index.php +4 -0
- package/src/post-excerpt/edit.js +1 -0
- package/src/post-excerpt/index.php +4 -0
- package/src/post-featured-image/block.json +6 -0
- package/src/post-featured-image/edit.js +4 -0
- package/src/post-featured-image/index.php +15 -0
- package/src/post-navigation-link/edit.js +1 -0
- package/src/post-navigation-link/index.php +4 -0
- package/src/post-template/index.php +4 -0
- package/src/post-terms/edit.js +2 -0
- package/src/post-terms/index.php +6 -0
- package/src/post-title/index.php +2 -0
- package/src/query/index.php +2 -0
- package/src/query-no-results/index.php +4 -0
- package/src/query-pagination/index.php +4 -0
- package/src/query-pagination-next/index.php +4 -0
- package/src/query-pagination-numbers/index.php +4 -0
- package/src/query-pagination-previous/index.php +4 -0
- package/src/query-title/index.php +4 -0
- package/src/quote/edit.js +11 -5
- package/src/read-more/edit.js +1 -0
- package/src/read-more/index.php +4 -0
- package/src/rss/index.php +4 -0
- package/src/search/edit.js +2 -0
- package/src/search/edit.native.js +2 -2
- package/src/search/index.php +19 -1
- package/src/shortcode/index.php +4 -0
- package/src/site-logo/index.php +20 -0
- package/src/site-tagline/index.php +4 -0
- package/src/site-title/index.php +4 -0
- package/src/social-link/edit.js +1 -1
- package/src/social-link/icons/medium.js +1 -1
- package/src/social-link/icons/reddit.js +1 -1
- package/src/social-link/index.php +22 -9
- package/src/social-link/socials-with-bg.scss +1 -1
- package/src/social-link/socials-without-bg.scss +1 -1
- package/src/table/block.json +1 -1
- package/src/table/deprecated.js +308 -175
- package/src/tag-cloud/index.php +4 -0
- package/src/template-part/edit/index.js +1 -1
- package/src/template-part/index.php +10 -0
- package/src/term-description/index.php +4 -0
- package/src/video/edit.native.js +2 -0
- package/tsconfig.json +1 -0
|
@@ -6,7 +6,7 @@ import classnames from 'classnames';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { ResizableBox, Spinner } from '@wordpress/components';
|
|
9
|
+
import { ResizableBox, Spinner, Placeholder } from '@wordpress/components';
|
|
10
10
|
import {
|
|
11
11
|
BlockControls,
|
|
12
12
|
BlockIcon,
|
|
@@ -56,21 +56,39 @@ const ResizableBoxContainer = forwardRef(
|
|
|
56
56
|
}
|
|
57
57
|
);
|
|
58
58
|
|
|
59
|
-
function ToolbarEditButton( {
|
|
59
|
+
function ToolbarEditButton( {
|
|
60
|
+
mediaId,
|
|
61
|
+
mediaUrl,
|
|
62
|
+
onSelectMedia,
|
|
63
|
+
toggleUseFeaturedImage,
|
|
64
|
+
useFeaturedImage,
|
|
65
|
+
featuredImageURL,
|
|
66
|
+
} ) {
|
|
60
67
|
return (
|
|
61
68
|
<BlockControls group="other">
|
|
62
69
|
<MediaReplaceFlow
|
|
63
70
|
mediaId={ mediaId }
|
|
64
|
-
|
|
71
|
+
mediaUrl={
|
|
72
|
+
useFeaturedImage && featuredImageURL
|
|
73
|
+
? featuredImageURL
|
|
74
|
+
: mediaUrl
|
|
75
|
+
}
|
|
65
76
|
allowedTypes={ ALLOWED_MEDIA_TYPES }
|
|
66
77
|
accept="image/*,video/*"
|
|
67
78
|
onSelect={ onSelectMedia }
|
|
79
|
+
onToggleFeaturedImage={ toggleUseFeaturedImage }
|
|
80
|
+
useFeaturedImage={ useFeaturedImage }
|
|
68
81
|
/>
|
|
69
82
|
</BlockControls>
|
|
70
83
|
);
|
|
71
84
|
}
|
|
72
85
|
|
|
73
|
-
function PlaceholderContainer( {
|
|
86
|
+
function PlaceholderContainer( {
|
|
87
|
+
className,
|
|
88
|
+
mediaUrl,
|
|
89
|
+
onSelectMedia,
|
|
90
|
+
toggleUseFeaturedImage,
|
|
91
|
+
} ) {
|
|
74
92
|
const { createErrorNotice } = useDispatch( noticesStore );
|
|
75
93
|
|
|
76
94
|
const onUploadError = ( message ) => {
|
|
@@ -86,6 +104,7 @@ function PlaceholderContainer( { className, mediaUrl, onSelectMedia } ) {
|
|
|
86
104
|
className={ className }
|
|
87
105
|
onSelect={ onSelectMedia }
|
|
88
106
|
accept="image/*,video/*"
|
|
107
|
+
onToggleFeaturedImage={ toggleUseFeaturedImage }
|
|
89
108
|
allowedTypes={ ALLOWED_MEDIA_TYPES }
|
|
90
109
|
onError={ onUploadError }
|
|
91
110
|
disableMediaButtons={ mediaUrl }
|
|
@@ -110,13 +129,17 @@ function MediaContainer( props, ref ) {
|
|
|
110
129
|
onSelectMedia,
|
|
111
130
|
onWidthChange,
|
|
112
131
|
enableResize,
|
|
132
|
+
toggleUseFeaturedImage,
|
|
133
|
+
useFeaturedImage,
|
|
134
|
+
featuredImageURL,
|
|
135
|
+
featuredImageAlt,
|
|
113
136
|
} = props;
|
|
114
137
|
|
|
115
138
|
const isTemporaryMedia = ! mediaId && isBlobURL( mediaUrl );
|
|
116
139
|
|
|
117
140
|
const { toggleSelection } = useDispatch( blockEditorStore );
|
|
118
141
|
|
|
119
|
-
if ( mediaUrl ) {
|
|
142
|
+
if ( mediaUrl || featuredImageURL || useFeaturedImage ) {
|
|
120
143
|
const onResizeStart = () => {
|
|
121
144
|
toggleSelection( false );
|
|
122
145
|
};
|
|
@@ -134,11 +157,16 @@ function MediaContainer( props, ref ) {
|
|
|
134
157
|
|
|
135
158
|
const backgroundStyles =
|
|
136
159
|
mediaType === 'image' && imageFill
|
|
137
|
-
? imageFillStyles( mediaUrl, focalPoint )
|
|
160
|
+
? imageFillStyles( mediaUrl || featuredImageURL, focalPoint )
|
|
138
161
|
: {};
|
|
139
162
|
|
|
140
163
|
const mediaTypeRenderers = {
|
|
141
|
-
image: () =>
|
|
164
|
+
image: () =>
|
|
165
|
+
useFeaturedImage && featuredImageURL ? (
|
|
166
|
+
<img src={ featuredImageURL } alt={ featuredImageAlt } />
|
|
167
|
+
) : (
|
|
168
|
+
mediaUrl && <img src={ mediaUrl } alt={ mediaAlt } />
|
|
169
|
+
),
|
|
142
170
|
video: () => <video controls src={ mediaUrl } />,
|
|
143
171
|
};
|
|
144
172
|
|
|
@@ -165,12 +193,24 @@ function MediaContainer( props, ref ) {
|
|
|
165
193
|
>
|
|
166
194
|
<ToolbarEditButton
|
|
167
195
|
onSelectMedia={ onSelectMedia }
|
|
168
|
-
mediaUrl={
|
|
196
|
+
mediaUrl={
|
|
197
|
+
useFeaturedImage && featuredImageURL
|
|
198
|
+
? featuredImageURL
|
|
199
|
+
: mediaUrl
|
|
200
|
+
}
|
|
169
201
|
mediaId={ mediaId }
|
|
202
|
+
toggleUseFeaturedImage={ toggleUseFeaturedImage }
|
|
203
|
+
useFeaturedImage={ useFeaturedImage }
|
|
170
204
|
/>
|
|
171
205
|
{ ( mediaTypeRenderers[ mediaType ] || noop )() }
|
|
172
206
|
{ isTemporaryMedia && <Spinner /> }
|
|
173
|
-
<PlaceholderContainer { ...props } />
|
|
207
|
+
{ ! useFeaturedImage && <PlaceholderContainer { ...props } /> }
|
|
208
|
+
{ ! featuredImageURL && useFeaturedImage && (
|
|
209
|
+
<Placeholder
|
|
210
|
+
className="wp-block-media-text--placeholder-image"
|
|
211
|
+
withIllustration
|
|
212
|
+
/>
|
|
213
|
+
) }
|
|
174
214
|
</ResizableBoxContainer>
|
|
175
215
|
);
|
|
176
216
|
}
|
package/src/media-text/save.js
CHANGED
|
@@ -42,13 +42,13 @@ export default function save( { attributes } ) {
|
|
|
42
42
|
[ `size-${ mediaSizeSlug }` ]: mediaId && mediaType === 'image',
|
|
43
43
|
} );
|
|
44
44
|
|
|
45
|
-
let image = (
|
|
45
|
+
let image = mediaUrl ? (
|
|
46
46
|
<img
|
|
47
47
|
src={ mediaUrl }
|
|
48
48
|
alt={ mediaAlt }
|
|
49
49
|
className={ imageClasses || null }
|
|
50
50
|
/>
|
|
51
|
-
);
|
|
51
|
+
) : null;
|
|
52
52
|
|
|
53
53
|
if ( href ) {
|
|
54
54
|
image = (
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
Spinner,
|
|
40
40
|
Notice,
|
|
41
41
|
} from '@wordpress/components';
|
|
42
|
-
import { __
|
|
42
|
+
import { __ } from '@wordpress/i18n';
|
|
43
43
|
import { speak } from '@wordpress/a11y';
|
|
44
44
|
import { close, Icon } from '@wordpress/icons';
|
|
45
45
|
import { useInstanceId } from '@wordpress/compose';
|
|
@@ -153,8 +153,8 @@ function Navigation( {
|
|
|
153
153
|
isError: createNavigationMenuIsError,
|
|
154
154
|
} = useCreateNavigationMenu( clientId );
|
|
155
155
|
|
|
156
|
-
const createUntitledEmptyNavigationMenu = () => {
|
|
157
|
-
createNavigationMenu( '' );
|
|
156
|
+
const createUntitledEmptyNavigationMenu = async () => {
|
|
157
|
+
await createNavigationMenu( '' );
|
|
158
158
|
};
|
|
159
159
|
|
|
160
160
|
const {
|
|
@@ -187,9 +187,9 @@ function Navigation( {
|
|
|
187
187
|
hasResolvedCanUserUpdateNavigationMenu,
|
|
188
188
|
canUserDeleteNavigationMenu,
|
|
189
189
|
hasResolvedCanUserDeleteNavigationMenu,
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
190
|
+
canUserCreateNavigationMenus,
|
|
191
|
+
isResolvingCanUserCreateNavigationMenus,
|
|
192
|
+
hasResolvedCanUserCreateNavigationMenus,
|
|
193
193
|
} = useNavigationMenu( ref );
|
|
194
194
|
|
|
195
195
|
const navMenuResolvedButMissing =
|
|
@@ -342,16 +342,7 @@ function Navigation( {
|
|
|
342
342
|
const [ detectedOverlayColor, setDetectedOverlayColor ] = useState();
|
|
343
343
|
|
|
344
344
|
const onSelectClassicMenu = async ( classicMenu ) => {
|
|
345
|
-
|
|
346
|
-
classicMenu.id,
|
|
347
|
-
classicMenu.name,
|
|
348
|
-
'draft'
|
|
349
|
-
);
|
|
350
|
-
if ( navMenu ) {
|
|
351
|
-
handleUpdateMenu( navMenu.id, {
|
|
352
|
-
focusNavigationBlock: true,
|
|
353
|
-
} );
|
|
354
|
-
}
|
|
345
|
+
return convertClassicMenu( classicMenu.id, classicMenu.name, 'draft' );
|
|
355
346
|
};
|
|
356
347
|
|
|
357
348
|
const onSelectNavigationMenu = ( menuId ) => {
|
|
@@ -402,6 +393,9 @@ function Navigation( {
|
|
|
402
393
|
showClassicMenuConversionNotice(
|
|
403
394
|
__( 'Classic menu imported successfully.' )
|
|
404
395
|
);
|
|
396
|
+
handleUpdateMenu( createNavigationMenuPost?.id, {
|
|
397
|
+
focusNavigationBlock: true,
|
|
398
|
+
} );
|
|
405
399
|
}
|
|
406
400
|
|
|
407
401
|
if ( classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_ERROR ) {
|
|
@@ -414,6 +408,8 @@ function Navigation( {
|
|
|
414
408
|
classicMenuConversionError,
|
|
415
409
|
hideClassicMenuConversionNotice,
|
|
416
410
|
showClassicMenuConversionNotice,
|
|
411
|
+
createNavigationMenuPost?.id,
|
|
412
|
+
handleUpdateMenu,
|
|
417
413
|
] );
|
|
418
414
|
|
|
419
415
|
useEffect( () => {
|
|
@@ -471,8 +467,8 @@ function Navigation( {
|
|
|
471
467
|
|
|
472
468
|
if (
|
|
473
469
|
! ref &&
|
|
474
|
-
|
|
475
|
-
!
|
|
470
|
+
hasResolvedCanUserCreateNavigationMenus &&
|
|
471
|
+
! canUserCreateNavigationMenus
|
|
476
472
|
) {
|
|
477
473
|
showNavigationMenuPermissionsNotice(
|
|
478
474
|
__(
|
|
@@ -486,8 +482,8 @@ function Navigation( {
|
|
|
486
482
|
isInnerBlockSelected,
|
|
487
483
|
canUserUpdateNavigationMenu,
|
|
488
484
|
hasResolvedCanUserUpdateNavigationMenu,
|
|
489
|
-
|
|
490
|
-
|
|
485
|
+
canUserCreateNavigationMenus,
|
|
486
|
+
hasResolvedCanUserCreateNavigationMenus,
|
|
491
487
|
ref,
|
|
492
488
|
hideNavigationMenuPermissionsNotice,
|
|
493
489
|
showNavigationMenuPermissionsNotice,
|
|
@@ -495,7 +491,7 @@ function Navigation( {
|
|
|
495
491
|
] );
|
|
496
492
|
|
|
497
493
|
const hasManagePermissions =
|
|
498
|
-
|
|
494
|
+
canUserCreateNavigationMenus || canUserUpdateNavigationMenu;
|
|
499
495
|
|
|
500
496
|
const overlayMenuPreviewClasses = classnames(
|
|
501
497
|
'wp-block-navigation__overlay-menu-preview',
|
|
@@ -805,9 +801,11 @@ function Navigation( {
|
|
|
805
801
|
isSelected={ isSelected }
|
|
806
802
|
currentMenuId={ ref }
|
|
807
803
|
clientId={ clientId }
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
804
|
+
canUserCreateNavigationMenus={
|
|
805
|
+
canUserCreateNavigationMenus
|
|
806
|
+
}
|
|
807
|
+
isResolvingCanUserCreateNavigationMenus={
|
|
808
|
+
isResolvingCanUserCreateNavigationMenus
|
|
811
809
|
}
|
|
812
810
|
onSelectNavigationMenu={ onSelectNavigationMenu }
|
|
813
811
|
onSelectClassicMenu={ onSelectClassicMenu }
|
|
@@ -845,15 +843,11 @@ function Navigation( {
|
|
|
845
843
|
{ hasResolvedCanUserDeleteNavigationMenu &&
|
|
846
844
|
canUserDeleteNavigationMenu && (
|
|
847
845
|
<NavigationMenuDeleteControl
|
|
848
|
-
onDelete={ (
|
|
846
|
+
onDelete={ () => {
|
|
849
847
|
replaceInnerBlocks( clientId, [] );
|
|
850
848
|
showNavigationMenuStatusNotice(
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
__(
|
|
854
|
-
'Navigation menu %s successfully deleted.'
|
|
855
|
-
),
|
|
856
|
-
deletedMenuTitle
|
|
849
|
+
__(
|
|
850
|
+
'Navigation menu successfully deleted.'
|
|
857
851
|
)
|
|
858
852
|
);
|
|
859
853
|
} }
|
|
@@ -866,50 +860,52 @@ function Navigation( {
|
|
|
866
860
|
</InspectorControls>
|
|
867
861
|
) }
|
|
868
862
|
|
|
869
|
-
|
|
870
|
-
|
|
863
|
+
<TagName
|
|
864
|
+
{ ...blockProps }
|
|
865
|
+
aria-describedby={
|
|
866
|
+
! isPlaceholder && ! isLoading
|
|
867
|
+
? accessibleDescriptionId
|
|
868
|
+
: undefined
|
|
869
|
+
}
|
|
870
|
+
>
|
|
871
|
+
{ isLoading && (
|
|
871
872
|
<div className="wp-block-navigation__loading-indicator-container">
|
|
872
873
|
<Spinner className="wp-block-navigation__loading-indicator" />
|
|
873
874
|
</div>
|
|
874
|
-
|
|
875
|
-
) }
|
|
875
|
+
) }
|
|
876
876
|
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
) }
|
|
910
|
-
</ResponsiveWrapper>
|
|
911
|
-
</TagName>
|
|
912
|
-
) }
|
|
877
|
+
{ ! isLoading && (
|
|
878
|
+
<>
|
|
879
|
+
<AccessibleMenuDescription
|
|
880
|
+
id={ accessibleDescriptionId }
|
|
881
|
+
/>
|
|
882
|
+
<ResponsiveWrapper
|
|
883
|
+
id={ clientId }
|
|
884
|
+
onToggle={ setResponsiveMenuVisibility }
|
|
885
|
+
hasIcon={ hasIcon }
|
|
886
|
+
icon={ icon }
|
|
887
|
+
isOpen={ isResponsiveMenuOpen }
|
|
888
|
+
isResponsive={ isResponsive }
|
|
889
|
+
isHiddenByDefault={ 'always' === overlayMenu }
|
|
890
|
+
overlayBackgroundColor={
|
|
891
|
+
overlayBackgroundColor
|
|
892
|
+
}
|
|
893
|
+
overlayTextColor={ overlayTextColor }
|
|
894
|
+
>
|
|
895
|
+
{ isEntityAvailable && (
|
|
896
|
+
<NavigationInnerBlocks
|
|
897
|
+
clientId={ clientId }
|
|
898
|
+
hasCustomPlaceholder={
|
|
899
|
+
!! CustomPlaceholder
|
|
900
|
+
}
|
|
901
|
+
templateLock={ templateLock }
|
|
902
|
+
orientation={ orientation }
|
|
903
|
+
/>
|
|
904
|
+
) }
|
|
905
|
+
</ResponsiveWrapper>
|
|
906
|
+
</>
|
|
907
|
+
) }
|
|
908
|
+
</TagName>
|
|
913
909
|
</RecursionProvider>
|
|
914
910
|
</EntityProvider>
|
|
915
911
|
);
|
|
@@ -3,23 +3,17 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import {
|
|
5
5
|
Button,
|
|
6
|
-
|
|
7
|
-
__experimentalHStack as HStack,
|
|
6
|
+
__experimentalConfirmDialog as ConfirmDialog,
|
|
8
7
|
} from '@wordpress/components';
|
|
9
|
-
import {
|
|
10
|
-
store as coreStore,
|
|
11
|
-
useEntityId,
|
|
12
|
-
useEntityProp,
|
|
13
|
-
} from '@wordpress/core-data';
|
|
8
|
+
import { store as coreStore, useEntityId } from '@wordpress/core-data';
|
|
14
9
|
import { useDispatch } from '@wordpress/data';
|
|
15
10
|
import { useState } from '@wordpress/element';
|
|
16
|
-
import { __
|
|
11
|
+
import { __ } from '@wordpress/i18n';
|
|
17
12
|
|
|
18
13
|
export default function NavigationMenuDeleteControl( { onDelete } ) {
|
|
19
|
-
const [
|
|
14
|
+
const [ isConfirmDialogVisible, setIsConfirmDialogVisible ] =
|
|
20
15
|
useState( false );
|
|
21
16
|
const id = useEntityId( 'postType', 'wp_navigation' );
|
|
22
|
-
const [ title ] = useEntityProp( 'postType', 'wp_navigation', 'title' );
|
|
23
17
|
const { deleteEntityRecord } = useDispatch( coreStore );
|
|
24
18
|
|
|
25
19
|
return (
|
|
@@ -29,50 +23,29 @@ export default function NavigationMenuDeleteControl( { onDelete } ) {
|
|
|
29
23
|
variant="secondary"
|
|
30
24
|
isDestructive
|
|
31
25
|
onClick={ () => {
|
|
32
|
-
|
|
26
|
+
setIsConfirmDialogVisible( true );
|
|
33
27
|
} }
|
|
34
28
|
>
|
|
35
29
|
{ __( 'Delete menu' ) }
|
|
36
30
|
</Button>
|
|
37
|
-
{
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
{ isConfirmDialogVisible && (
|
|
32
|
+
<ConfirmDialog
|
|
33
|
+
isOpen
|
|
34
|
+
onConfirm={ () => {
|
|
35
|
+
deleteEntityRecord( 'postType', 'wp_navigation', id, {
|
|
36
|
+
force: true,
|
|
37
|
+
} );
|
|
38
|
+
onDelete();
|
|
39
|
+
} }
|
|
40
|
+
onCancel={ () => {
|
|
41
|
+
setIsConfirmDialogVisible( false );
|
|
42
|
+
} }
|
|
43
|
+
confirmButtonText={ __( 'Delete' ) }
|
|
45
44
|
>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
</p>
|
|
51
|
-
<HStack justify="right">
|
|
52
|
-
<Button
|
|
53
|
-
variant="tertiary"
|
|
54
|
-
onClick={ () => {
|
|
55
|
-
setIsConfirmModalVisible( false );
|
|
56
|
-
} }
|
|
57
|
-
>
|
|
58
|
-
{ __( 'Cancel' ) }
|
|
59
|
-
</Button>
|
|
60
|
-
<Button
|
|
61
|
-
variant="primary"
|
|
62
|
-
onClick={ () => {
|
|
63
|
-
deleteEntityRecord(
|
|
64
|
-
'postType',
|
|
65
|
-
'wp_navigation',
|
|
66
|
-
id,
|
|
67
|
-
{ force: true }
|
|
68
|
-
);
|
|
69
|
-
onDelete( title );
|
|
70
|
-
} }
|
|
71
|
-
>
|
|
72
|
-
{ __( 'Confirm' ) }
|
|
73
|
-
</Button>
|
|
74
|
-
</HStack>
|
|
75
|
-
</Modal>
|
|
45
|
+
{ __(
|
|
46
|
+
'Are you sure you want to delete this Navigation menu?'
|
|
47
|
+
) }
|
|
48
|
+
</ConfirmDialog>
|
|
76
49
|
) }
|
|
77
50
|
</>
|
|
78
51
|
);
|
|
@@ -49,7 +49,7 @@ function NavigationMenuSelector( {
|
|
|
49
49
|
/* translators: %s: The name of a menu. */
|
|
50
50
|
const createActionLabel = __( "Create from '%s'" );
|
|
51
51
|
|
|
52
|
-
const [
|
|
52
|
+
const [ isUpdatingMenuRef, setIsUpdatingMenuRef ] = useState( false );
|
|
53
53
|
|
|
54
54
|
actionLabel = actionLabel || createActionLabel;
|
|
55
55
|
|
|
@@ -59,7 +59,7 @@ function NavigationMenuSelector( {
|
|
|
59
59
|
navigationMenus,
|
|
60
60
|
isResolvingNavigationMenus,
|
|
61
61
|
hasResolvedNavigationMenus,
|
|
62
|
-
|
|
62
|
+
canUserCreateNavigationMenus,
|
|
63
63
|
canSwitchNavigationMenu,
|
|
64
64
|
} = useNavigationMenu();
|
|
65
65
|
|
|
@@ -82,15 +82,25 @@ function NavigationMenuSelector( {
|
|
|
82
82
|
value: id,
|
|
83
83
|
label,
|
|
84
84
|
ariaLabel: sprintf( actionLabel, label ),
|
|
85
|
+
disabled:
|
|
86
|
+
isUpdatingMenuRef ||
|
|
87
|
+
isResolvingNavigationMenus ||
|
|
88
|
+
! hasResolvedNavigationMenus,
|
|
85
89
|
};
|
|
86
90
|
} ) || []
|
|
87
91
|
);
|
|
88
|
-
}, [
|
|
92
|
+
}, [
|
|
93
|
+
navigationMenus,
|
|
94
|
+
actionLabel,
|
|
95
|
+
isResolvingNavigationMenus,
|
|
96
|
+
hasResolvedNavigationMenus,
|
|
97
|
+
isUpdatingMenuRef,
|
|
98
|
+
] );
|
|
89
99
|
|
|
90
100
|
const hasNavigationMenus = !! navigationMenus?.length;
|
|
91
101
|
const hasClassicMenus = !! classicMenus?.length;
|
|
92
102
|
const showNavigationMenus = !! canSwitchNavigationMenu;
|
|
93
|
-
const showClassicMenus = !!
|
|
103
|
+
const showClassicMenus = !! canUserCreateNavigationMenus;
|
|
94
104
|
|
|
95
105
|
const noMenuSelected = hasNavigationMenus && ! currentMenuId;
|
|
96
106
|
const noBlockMenus = ! hasNavigationMenus && hasResolvedNavigationMenus;
|
|
@@ -99,7 +109,7 @@ function NavigationMenuSelector( {
|
|
|
99
109
|
|
|
100
110
|
let selectorLabel = '';
|
|
101
111
|
|
|
102
|
-
if (
|
|
112
|
+
if ( isResolvingNavigationMenus ) {
|
|
103
113
|
selectorLabel = __( 'Loading…' );
|
|
104
114
|
} else if ( noMenuSelected || noBlockMenus || menuUnavailable ) {
|
|
105
115
|
// Note: classic Menus may be available.
|
|
@@ -111,17 +121,17 @@ function NavigationMenuSelector( {
|
|
|
111
121
|
|
|
112
122
|
useEffect( () => {
|
|
113
123
|
if (
|
|
114
|
-
|
|
124
|
+
isUpdatingMenuRef &&
|
|
115
125
|
( createNavigationMenuIsSuccess || createNavigationMenuIsError )
|
|
116
126
|
) {
|
|
117
|
-
|
|
127
|
+
setIsUpdatingMenuRef( false );
|
|
118
128
|
}
|
|
119
129
|
}, [
|
|
120
130
|
hasResolvedNavigationMenus,
|
|
121
131
|
createNavigationMenuIsSuccess,
|
|
122
|
-
|
|
132
|
+
canUserCreateNavigationMenus,
|
|
123
133
|
createNavigationMenuIsError,
|
|
124
|
-
|
|
134
|
+
isUpdatingMenuRef,
|
|
125
135
|
menuUnavailable,
|
|
126
136
|
noBlockMenus,
|
|
127
137
|
noMenuSelected,
|
|
@@ -131,7 +141,7 @@ function NavigationMenuSelector( {
|
|
|
131
141
|
<DropdownMenu
|
|
132
142
|
label={ selectorLabel }
|
|
133
143
|
icon={ moreVertical }
|
|
134
|
-
toggleProps={ {
|
|
144
|
+
toggleProps={ { size: 'small' } }
|
|
135
145
|
>
|
|
136
146
|
{ ( { onClose } ) => (
|
|
137
147
|
<>
|
|
@@ -140,12 +150,10 @@ function NavigationMenuSelector( {
|
|
|
140
150
|
<MenuItemsChoice
|
|
141
151
|
value={ currentMenuId }
|
|
142
152
|
onSelect={ ( menuId ) => {
|
|
143
|
-
setIsCreatingMenu( true );
|
|
144
153
|
onSelectNavigationMenu( menuId );
|
|
145
154
|
onClose();
|
|
146
155
|
} }
|
|
147
156
|
choices={ menuChoices }
|
|
148
|
-
disabled={ isCreatingMenu }
|
|
149
157
|
/>
|
|
150
158
|
</MenuGroup>
|
|
151
159
|
) }
|
|
@@ -155,9 +163,10 @@ function NavigationMenuSelector( {
|
|
|
155
163
|
const label = decodeEntities( menu.name );
|
|
156
164
|
return (
|
|
157
165
|
<MenuItem
|
|
158
|
-
onClick={ () => {
|
|
159
|
-
|
|
160
|
-
onSelectClassicMenu( menu );
|
|
166
|
+
onClick={ async () => {
|
|
167
|
+
setIsUpdatingMenuRef( true );
|
|
168
|
+
await onSelectClassicMenu( menu );
|
|
169
|
+
setIsUpdatingMenuRef( false );
|
|
161
170
|
onClose();
|
|
162
171
|
} }
|
|
163
172
|
key={ menu.id }
|
|
@@ -165,7 +174,11 @@ function NavigationMenuSelector( {
|
|
|
165
174
|
createActionLabel,
|
|
166
175
|
label
|
|
167
176
|
) }
|
|
168
|
-
disabled={
|
|
177
|
+
disabled={
|
|
178
|
+
isUpdatingMenuRef ||
|
|
179
|
+
isResolvingNavigationMenus ||
|
|
180
|
+
! hasResolvedNavigationMenus
|
|
181
|
+
}
|
|
169
182
|
>
|
|
170
183
|
{ label }
|
|
171
184
|
</MenuItem>
|
|
@@ -174,15 +187,20 @@ function NavigationMenuSelector( {
|
|
|
174
187
|
</MenuGroup>
|
|
175
188
|
) }
|
|
176
189
|
|
|
177
|
-
{
|
|
190
|
+
{ canUserCreateNavigationMenus && (
|
|
178
191
|
<MenuGroup label={ __( 'Tools' ) }>
|
|
179
192
|
<MenuItem
|
|
180
|
-
|
|
181
|
-
|
|
193
|
+
onClick={ async () => {
|
|
194
|
+
setIsUpdatingMenuRef( true );
|
|
195
|
+
await onCreateNew();
|
|
196
|
+
setIsUpdatingMenuRef( false );
|
|
182
197
|
onClose();
|
|
183
|
-
onCreateNew();
|
|
184
|
-
setIsCreatingMenu( true );
|
|
185
198
|
} }
|
|
199
|
+
disabled={
|
|
200
|
+
isUpdatingMenuRef ||
|
|
201
|
+
isResolvingNavigationMenus ||
|
|
202
|
+
! hasResolvedNavigationMenus
|
|
203
|
+
}
|
|
186
204
|
>
|
|
187
205
|
{ __( 'Create new menu' ) }
|
|
188
206
|
</MenuItem>
|
|
@@ -18,8 +18,8 @@ export default function NavigationPlaceholder( {
|
|
|
18
18
|
isSelected,
|
|
19
19
|
currentMenuId,
|
|
20
20
|
clientId,
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
canUserCreateNavigationMenus = false,
|
|
22
|
+
isResolvingCanUserCreateNavigationMenus,
|
|
23
23
|
onSelectNavigationMenu,
|
|
24
24
|
onSelectClassicMenu,
|
|
25
25
|
onCreateEmpty,
|
|
@@ -41,7 +41,7 @@ export default function NavigationPlaceholder( {
|
|
|
41
41
|
}, [ hasResolvedMenus, isResolvingMenus, isSelected ] );
|
|
42
42
|
|
|
43
43
|
const isResolvingActions =
|
|
44
|
-
isResolvingMenus &&
|
|
44
|
+
isResolvingMenus && isResolvingCanUserCreateNavigationMenus;
|
|
45
45
|
|
|
46
46
|
return (
|
|
47
47
|
<>
|
|
@@ -74,7 +74,7 @@ export default function NavigationPlaceholder( {
|
|
|
74
74
|
|
|
75
75
|
<hr />
|
|
76
76
|
|
|
77
|
-
{
|
|
77
|
+
{ canUserCreateNavigationMenus && (
|
|
78
78
|
<Button
|
|
79
79
|
variant="tertiary"
|
|
80
80
|
onClick={ onCreateEmpty }
|