@wordpress/edit-site 6.3.0 → 6.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 +2 -0
- package/build/components/add-new-pattern/index.js +8 -2
- package/build/components/add-new-pattern/index.js.map +1 -1
- package/build/components/add-new-template/index.js +3 -1
- package/build/components/add-new-template/index.js.map +1 -1
- package/build/components/block-editor/use-site-editor-settings.js +1 -82
- package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build/components/global-styles/block-preview-panel.js +14 -5
- package/build/components/global-styles/block-preview-panel.js.map +1 -1
- package/build/components/global-styles/font-families.js +42 -23
- package/build/components/global-styles/font-families.js.map +1 -1
- package/build/components/global-styles/font-library-modal/index.js +4 -4
- package/build/components/global-styles/font-library-modal/index.js.map +1 -1
- package/build/components/global-styles/font-library-modal/installed-fonts.js +58 -10
- package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +39 -0
- package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +1 -0
- package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +39 -0
- package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +1 -0
- package/build/components/global-styles/font-sizes/font-size-preview.js +44 -0
- package/build/components/global-styles/font-sizes/font-size-preview.js.map +1 -0
- package/build/components/global-styles/font-sizes/font-size.js +213 -0
- package/build/components/global-styles/font-sizes/font-size.js.map +1 -0
- package/build/components/global-styles/font-sizes/font-sizes-count.js +50 -0
- package/build/components/global-styles/font-sizes/font-sizes-count.js.map +1 -0
- package/build/components/global-styles/font-sizes/font-sizes.js +163 -0
- package/build/components/global-styles/font-sizes/font-sizes.js.map +1 -0
- package/build/components/global-styles/font-sizes/rename-font-size-dialog.js +67 -0
- package/build/components/global-styles/font-sizes/rename-font-size-dialog.js.map +1 -0
- package/build/components/global-styles/screen-block.js +10 -8
- package/build/components/global-styles/screen-block.js.map +1 -1
- package/build/components/global-styles/screen-style-variations.js +2 -2
- package/build/components/global-styles/screen-style-variations.js.map +1 -1
- package/build/components/global-styles/screen-typography.js +3 -2
- package/build/components/global-styles/screen-typography.js.map +1 -1
- package/build/components/global-styles/size-control/index.js +85 -0
- package/build/components/global-styles/size-control/index.js.map +1 -0
- package/build/components/global-styles/style-variations-container.js +3 -0
- package/build/components/global-styles/style-variations-container.js.map +1 -1
- package/build/components/global-styles/ui.js +8 -0
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/global-styles/variations/variations-color.js.map +1 -1
- package/build/components/global-styles/variations/variations-typography.js +1 -1
- package/build/components/global-styles/variations/variations-typography.js.map +1 -1
- package/build/components/layout/index.js +6 -0
- package/build/components/layout/index.js.map +1 -1
- package/build/components/layout/router.js +14 -6
- package/build/components/layout/router.js.map +1 -1
- package/build/components/page-patterns/header.js +1 -1
- package/build/components/page-patterns/header.js.map +1 -1
- package/build/components/page-patterns/index.js +23 -11
- package/build/components/page-patterns/index.js.map +1 -1
- package/build/components/page-templates/index.js +41 -34
- package/build/components/page-templates/index.js.map +1 -1
- package/build/components/post-edit/index.js +105 -0
- package/build/components/post-edit/index.js.map +1 -0
- package/build/components/post-fields/index.js +314 -0
- package/build/components/post-fields/index.js.map +1 -0
- package/build/components/post-list/index.js +281 -0
- package/build/components/post-list/index.js.map +1 -0
- package/build/components/posts-app/router.js +3 -3
- package/build/components/posts-app/router.js.map +1 -1
- package/build/components/sidebar-dataviews/default-views.js +22 -10
- package/build/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build/components/sidebar-dataviews/index.js +40 -1
- package/build/components/sidebar-dataviews/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-global-styles/content.js +64 -0
- package/build/components/sidebar-navigation-screen-global-styles/content.js.map +1 -0
- package/build/components/sidebar-navigation-screen-global-styles/index.js +2 -47
- package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build/hooks/push-changes-to-global-styles/index.js +1 -1
- package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build/index.js +5 -1
- package/build/index.js.map +1 -1
- package/build/store/selectors.js +34 -6
- package/build/store/selectors.js.map +1 -1
- package/build/utils/get-filtered-template-parts.js +64 -0
- package/build/utils/get-filtered-template-parts.js.map +1 -0
- package/build-module/components/add-new-pattern/index.js +8 -2
- package/build-module/components/add-new-pattern/index.js.map +1 -1
- package/build-module/components/add-new-template/index.js +3 -1
- package/build-module/components/add-new-template/index.js.map +1 -1
- package/build-module/components/block-editor/use-site-editor-settings.js +1 -82
- package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build-module/components/global-styles/block-preview-panel.js +14 -5
- package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
- package/build-module/components/global-styles/font-families.js +44 -25
- package/build-module/components/global-styles/font-families.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/index.js +4 -4
- package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js +61 -13
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +32 -0
- package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +1 -0
- package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +32 -0
- package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +1 -0
- package/build-module/components/global-styles/font-sizes/font-size-preview.js +37 -0
- package/build-module/components/global-styles/font-sizes/font-size-preview.js.map +1 -0
- package/build-module/components/global-styles/font-sizes/font-size.js +207 -0
- package/build-module/components/global-styles/font-sizes/font-size.js.map +1 -0
- package/build-module/components/global-styles/font-sizes/font-sizes-count.js +43 -0
- package/build-module/components/global-styles/font-sizes/font-sizes-count.js.map +1 -0
- package/build-module/components/global-styles/font-sizes/font-sizes.js +157 -0
- package/build-module/components/global-styles/font-sizes/font-sizes.js.map +1 -0
- package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js +61 -0
- package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js.map +1 -0
- package/build-module/components/global-styles/screen-block.js +10 -8
- package/build-module/components/global-styles/screen-block.js.map +1 -1
- package/build-module/components/global-styles/screen-style-variations.js +2 -2
- package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
- package/build-module/components/global-styles/screen-typography.js +3 -2
- package/build-module/components/global-styles/screen-typography.js.map +1 -1
- package/build-module/components/global-styles/size-control/index.js +79 -0
- package/build-module/components/global-styles/size-control/index.js.map +1 -0
- package/build-module/components/global-styles/style-variations-container.js +3 -0
- package/build-module/components/global-styles/style-variations-container.js.map +1 -1
- package/build-module/components/global-styles/ui.js +8 -0
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/global-styles/variations/variations-color.js +1 -1
- package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
- package/build-module/components/global-styles/variations/variations-typography.js +1 -2
- package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
- package/build-module/components/layout/index.js +6 -0
- package/build-module/components/layout/index.js.map +1 -1
- package/build-module/components/layout/router.js +14 -6
- package/build-module/components/layout/router.js.map +1 -1
- package/build-module/components/page-patterns/header.js +1 -1
- package/build-module/components/page-patterns/header.js.map +1 -1
- package/build-module/components/page-patterns/index.js +23 -11
- package/build-module/components/page-patterns/index.js.map +1 -1
- package/build-module/components/page-templates/index.js +43 -37
- package/build-module/components/page-templates/index.js.map +1 -1
- package/build-module/components/post-edit/index.js +98 -0
- package/build-module/components/post-edit/index.js.map +1 -0
- package/build-module/components/post-fields/index.js +306 -0
- package/build-module/components/post-fields/index.js.map +1 -0
- package/build-module/components/post-list/index.js +275 -0
- package/build-module/components/post-list/index.js.map +1 -0
- package/build-module/components/posts-app/router.js +3 -3
- package/build-module/components/posts-app/router.js.map +1 -1
- package/build-module/components/sidebar-dataviews/default-views.js +21 -9
- package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build-module/components/sidebar-dataviews/index.js +42 -3
- package/build-module/components/sidebar-dataviews/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-global-styles/content.js +57 -0
- package/build-module/components/sidebar-navigation-screen-global-styles/content.js.map +1 -0
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js +2 -47
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build-module/hooks/push-changes-to-global-styles/index.js +1 -1
- package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build-module/index.js +5 -1
- package/build-module/index.js.map +1 -1
- package/build-module/store/selectors.js +35 -7
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/get-filtered-template-parts.js +57 -0
- package/build-module/utils/get-filtered-template-parts.js.map +1 -0
- package/build-style/posts-rtl.css +581 -503
- package/build-style/posts.css +581 -503
- package/build-style/style-rtl.css +621 -519
- package/build-style/style.css +621 -519
- package/package.json +41 -41
- package/src/components/add-new-pattern/index.js +8 -2
- package/src/components/add-new-template/index.js +4 -1
- package/src/components/add-new-template/style.scss +4 -6
- package/src/components/block-editor/use-site-editor-settings.js +15 -111
- package/src/components/global-styles/block-preview-panel.js +22 -9
- package/src/components/global-styles/font-families.js +66 -31
- package/src/components/global-styles/font-library-modal/index.js +4 -2
- package/src/components/global-styles/font-library-modal/installed-fonts.js +92 -11
- package/src/components/global-styles/font-library-modal/style.scss +9 -0
- package/src/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +43 -0
- package/src/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +37 -0
- package/src/components/global-styles/font-sizes/font-size-preview.js +43 -0
- package/src/components/global-styles/font-sizes/font-size.js +250 -0
- package/src/components/global-styles/font-sizes/font-sizes-count.js +40 -0
- package/src/components/global-styles/font-sizes/font-sizes.js +263 -0
- package/src/components/global-styles/font-sizes/rename-font-size-dialog.js +70 -0
- package/src/components/global-styles/screen-block.js +12 -14
- package/src/components/global-styles/screen-style-variations.js +2 -2
- package/src/components/global-styles/screen-typography.js +3 -2
- package/src/components/global-styles/size-control/index.js +86 -0
- package/src/components/global-styles/style-variations-container.js +4 -0
- package/src/components/global-styles/style.scss +13 -3
- package/src/components/global-styles/ui.js +10 -0
- package/src/components/global-styles/variations/variations-color.js +1 -1
- package/src/components/global-styles/variations/variations-typography.js +1 -2
- package/src/components/layout/index.js +11 -0
- package/src/components/layout/router.js +13 -5
- package/src/components/layout/style.scss +26 -8
- package/src/components/page-patterns/header.js +1 -1
- package/src/components/page-patterns/index.js +15 -8
- package/src/components/page-templates/index.js +51 -46
- package/src/components/page-templates/style.scss +5 -3
- package/src/components/post-edit/index.js +96 -0
- package/src/components/post-edit/style.scss +9 -0
- package/src/components/post-fields/index.js +345 -0
- package/src/components/post-list/index.js +326 -0
- package/src/components/{posts-app → post-list}/style.scss +12 -9
- package/src/components/posts-app/router.js +3 -3
- package/src/components/sidebar-dataviews/default-views.js +21 -9
- package/src/components/sidebar-dataviews/index.js +36 -1
- package/src/components/sidebar-navigation-screen-global-styles/content.js +55 -0
- package/src/components/sidebar-navigation-screen-global-styles/index.js +1 -55
- package/src/hooks/push-changes-to-global-styles/index.js +1 -1
- package/src/index.js +7 -1
- package/src/posts.scss +1 -1
- package/src/store/selectors.js +53 -14
- package/src/store/test/selectors.js +1 -26
- package/src/style.scss +2 -1
- package/src/utils/get-filtered-template-parts.js +61 -0
- package/src/utils/test/get-filtered-template-parts.js +127 -0
- package/build/components/global-styles/screen-background.js +0 -36
- package/build/components/global-styles/screen-background.js.map +0 -1
- package/build/components/posts-app/posts-list.js +0 -568
- package/build/components/posts-app/posts-list.js.map +0 -1
- package/build-module/components/global-styles/screen-background.js +0 -30
- package/build-module/components/global-styles/screen-background.js.map +0 -1
- package/build-module/components/posts-app/posts-list.js +0 -560
- package/build-module/components/posts-app/posts-list.js.map +0 -1
- package/src/components/global-styles/screen-background.js +0 -29
- package/src/components/posts-app/posts-list.js +0 -651
|
@@ -175,8 +175,11 @@ html.canvas-mode-edit-transition::view-transition-group(toggle) {
|
|
|
175
175
|
color: $white;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
+
&:focus-visible,
|
|
178
179
|
&:focus {
|
|
179
|
-
box-shadow:
|
|
180
|
+
box-shadow: 0 0 0 3px #1e1e1e, 0 0 0 6px var(--wp-admin-theme-color);
|
|
181
|
+
outline: 4px solid #0000;
|
|
182
|
+
outline-offset: 4px;
|
|
180
183
|
}
|
|
181
184
|
|
|
182
185
|
&::before {
|
|
@@ -193,13 +196,6 @@ html.canvas-mode-edit-transition::view-transition-group(toggle) {
|
|
|
193
196
|
box-shadow: none;
|
|
194
197
|
}
|
|
195
198
|
|
|
196
|
-
// Lightened spot color focus.
|
|
197
|
-
&:focus::before {
|
|
198
|
-
box-shadow:
|
|
199
|
-
inset 0 0 0 var(--wp-admin-border-width-focus) rgba($white, 0.1),
|
|
200
|
-
inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
199
|
.edit-site-layout__view-mode-toggle-icon {
|
|
204
200
|
display: flex;
|
|
205
201
|
height: $grid-unit-80;
|
|
@@ -255,3 +251,25 @@ html.canvas-mode-edit-transition::view-transition-group(toggle) {
|
|
|
255
251
|
padding-left: 16px;
|
|
256
252
|
padding-right: 16px;
|
|
257
253
|
}
|
|
254
|
+
|
|
255
|
+
.edit-site-layout.is-full-canvas {
|
|
256
|
+
.edit-site-layout__view-mode-toggle.components-button {
|
|
257
|
+
&:focus-visible,
|
|
258
|
+
&:focus {
|
|
259
|
+
|
|
260
|
+
box-shadow: none;
|
|
261
|
+
outline: none;
|
|
262
|
+
outline-offset: 0;
|
|
263
|
+
|
|
264
|
+
.edit-site-site-icon svg {
|
|
265
|
+
box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color, #3858e9);
|
|
266
|
+
outline: 3px solid #0000;
|
|
267
|
+
height: 40px;
|
|
268
|
+
width: 40px;
|
|
269
|
+
padding: 2px;
|
|
270
|
+
border-radius: 2px;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
@@ -80,7 +80,7 @@ export default function PatternsHeader( {
|
|
|
80
80
|
label={ __( 'Actions' ) }
|
|
81
81
|
toggleProps={ {
|
|
82
82
|
className: 'edit-site-patterns__button',
|
|
83
|
-
|
|
83
|
+
description: sprintf(
|
|
84
84
|
/* translators: %s: pattern category name */
|
|
85
85
|
__( 'Action menu for %s pattern category' ),
|
|
86
86
|
title
|
|
@@ -62,6 +62,14 @@ const defaultLayouts = {
|
|
|
62
62
|
[ LAYOUT_TABLE ]: {
|
|
63
63
|
layout: {
|
|
64
64
|
primaryField: 'title',
|
|
65
|
+
styles: {
|
|
66
|
+
preview: {
|
|
67
|
+
width: '1%',
|
|
68
|
+
},
|
|
69
|
+
author: {
|
|
70
|
+
width: '1%',
|
|
71
|
+
},
|
|
72
|
+
},
|
|
65
73
|
},
|
|
66
74
|
},
|
|
67
75
|
[ LAYOUT_GRID ]: {
|
|
@@ -169,7 +177,7 @@ function Author( { item, viewType } ) {
|
|
|
169
177
|
const withIcon = viewType !== LAYOUT_LIST;
|
|
170
178
|
|
|
171
179
|
return (
|
|
172
|
-
<HStack alignment="left" spacing={
|
|
180
|
+
<HStack alignment="left" spacing={ 0 }>
|
|
173
181
|
{ withIcon && imageUrl && (
|
|
174
182
|
<div
|
|
175
183
|
className={ clsx( 'page-templates-author-field__avatar', {
|
|
@@ -276,17 +284,17 @@ export default function DataviewsPatterns() {
|
|
|
276
284
|
const fields = useMemo( () => {
|
|
277
285
|
const _fields = [
|
|
278
286
|
{
|
|
279
|
-
|
|
287
|
+
label: __( 'Preview' ),
|
|
280
288
|
id: 'preview',
|
|
281
289
|
render: ( { item } ) => (
|
|
282
290
|
<Preview item={ item } viewType={ view.type } />
|
|
283
291
|
),
|
|
284
292
|
enableSorting: false,
|
|
285
|
-
width: '1%',
|
|
286
293
|
},
|
|
287
294
|
{
|
|
288
|
-
|
|
295
|
+
label: __( 'Title' ),
|
|
289
296
|
id: 'title',
|
|
297
|
+
getValue: ( { item } ) => item.title?.raw || item.title,
|
|
290
298
|
render: ( { item } ) => <Title item={ item } />,
|
|
291
299
|
enableHiding: false,
|
|
292
300
|
},
|
|
@@ -294,7 +302,7 @@ export default function DataviewsPatterns() {
|
|
|
294
302
|
|
|
295
303
|
if ( type === PATTERN_TYPES.user ) {
|
|
296
304
|
_fields.push( {
|
|
297
|
-
|
|
305
|
+
label: __( 'Sync status' ),
|
|
298
306
|
id: 'sync-status',
|
|
299
307
|
render: ( { item } ) => {
|
|
300
308
|
const syncStatus =
|
|
@@ -325,7 +333,7 @@ export default function DataviewsPatterns() {
|
|
|
325
333
|
} );
|
|
326
334
|
} else if ( type === TEMPLATE_PART_POST_TYPE ) {
|
|
327
335
|
_fields.push( {
|
|
328
|
-
|
|
336
|
+
label: __( 'Author' ),
|
|
329
337
|
id: 'author',
|
|
330
338
|
getValue: ( { item } ) => item.author_text,
|
|
331
339
|
render: ( { item } ) => {
|
|
@@ -335,7 +343,6 @@ export default function DataviewsPatterns() {
|
|
|
335
343
|
filterBy: {
|
|
336
344
|
isPrimary: true,
|
|
337
345
|
},
|
|
338
|
-
width: '1%',
|
|
339
346
|
} );
|
|
340
347
|
}
|
|
341
348
|
|
|
@@ -345,7 +352,7 @@ export default function DataviewsPatterns() {
|
|
|
345
352
|
// Reset the page number when the category changes.
|
|
346
353
|
useEffect( () => {
|
|
347
354
|
if ( previousCategoryId !== categoryId ) {
|
|
348
|
-
setView(
|
|
355
|
+
setView( ( prevView ) => ( { ...prevView, page: 1 } ) );
|
|
349
356
|
}
|
|
350
357
|
}, [ categoryId, previousCategoryId ] );
|
|
351
358
|
const { data, paginationInfo } = useMemo( () => {
|
|
@@ -6,12 +6,7 @@ import clsx from 'clsx';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
10
|
-
Icon,
|
|
11
|
-
__experimentalText as Text,
|
|
12
|
-
__experimentalHStack as HStack,
|
|
13
|
-
VisuallyHidden,
|
|
14
|
-
} from '@wordpress/components';
|
|
9
|
+
import { Icon, __experimentalHStack as HStack } from '@wordpress/components';
|
|
15
10
|
import { __ } from '@wordpress/i18n';
|
|
16
11
|
import { useState, useMemo, useCallback, useEffect } from '@wordpress/element';
|
|
17
12
|
import { useEntityRecords } from '@wordpress/core-data';
|
|
@@ -23,7 +18,10 @@ import {
|
|
|
23
18
|
} from '@wordpress/block-editor';
|
|
24
19
|
import { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';
|
|
25
20
|
import { privateApis as routerPrivateApis } from '@wordpress/router';
|
|
26
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
privateApis as editorPrivateApis,
|
|
23
|
+
EditorProvider,
|
|
24
|
+
} from '@wordpress/editor';
|
|
27
25
|
|
|
28
26
|
/**
|
|
29
27
|
* Internal dependencies
|
|
@@ -47,20 +45,41 @@ import { useEditPostAction } from '../dataviews-actions';
|
|
|
47
45
|
|
|
48
46
|
const { usePostActions } = unlock( editorPrivateApis );
|
|
49
47
|
|
|
50
|
-
const {
|
|
51
|
-
blockEditorPrivateApis
|
|
52
|
-
);
|
|
48
|
+
const { useGlobalStyle } = unlock( blockEditorPrivateApis );
|
|
53
49
|
const { useHistory, useLocation } = unlock( routerPrivateApis );
|
|
54
50
|
|
|
55
51
|
const EMPTY_ARRAY = [];
|
|
56
52
|
|
|
57
53
|
const defaultLayouts = {
|
|
58
54
|
[ LAYOUT_TABLE ]: {
|
|
55
|
+
fields: [ 'template', 'author' ],
|
|
59
56
|
layout: {
|
|
60
57
|
primaryField: 'title',
|
|
58
|
+
combinedFields: [
|
|
59
|
+
{
|
|
60
|
+
id: 'template',
|
|
61
|
+
label: __( 'Template' ),
|
|
62
|
+
children: [ 'title', 'description' ],
|
|
63
|
+
direction: 'vertical',
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
styles: {
|
|
67
|
+
template: {
|
|
68
|
+
maxWidth: 400,
|
|
69
|
+
minWidth: 320,
|
|
70
|
+
},
|
|
71
|
+
preview: {
|
|
72
|
+
minWidth: 120,
|
|
73
|
+
maxWidth: 120,
|
|
74
|
+
},
|
|
75
|
+
author: {
|
|
76
|
+
width: '1%',
|
|
77
|
+
},
|
|
78
|
+
},
|
|
61
79
|
},
|
|
62
80
|
},
|
|
63
81
|
[ LAYOUT_GRID ]: {
|
|
82
|
+
fields: [ 'title', 'description', 'author' ],
|
|
64
83
|
layout: {
|
|
65
84
|
mediaField: 'preview',
|
|
66
85
|
primaryField: 'title',
|
|
@@ -68,6 +87,7 @@ const defaultLayouts = {
|
|
|
68
87
|
},
|
|
69
88
|
},
|
|
70
89
|
[ LAYOUT_LIST ]: {
|
|
90
|
+
fields: [ 'title', 'description', 'author' ],
|
|
71
91
|
layout: {
|
|
72
92
|
primaryField: 'title',
|
|
73
93
|
mediaField: 'preview',
|
|
@@ -84,7 +104,7 @@ const DEFAULT_VIEW = {
|
|
|
84
104
|
field: 'title',
|
|
85
105
|
direction: 'asc',
|
|
86
106
|
},
|
|
87
|
-
fields: [
|
|
107
|
+
fields: defaultLayouts[ LAYOUT_GRID ].fields,
|
|
88
108
|
layout: defaultLayouts[ LAYOUT_GRID ].layout,
|
|
89
109
|
filters: [],
|
|
90
110
|
};
|
|
@@ -107,14 +127,13 @@ function Title( { item, viewType } ) {
|
|
|
107
127
|
);
|
|
108
128
|
}
|
|
109
129
|
|
|
110
|
-
function AuthorField( { item
|
|
130
|
+
function AuthorField( { item } ) {
|
|
111
131
|
const [ isImageLoaded, setIsImageLoaded ] = useState( false );
|
|
112
132
|
const { text, icon, imageUrl } = useAddedBy( item.type, item.id );
|
|
113
|
-
const withIcon = viewType !== LAYOUT_LIST;
|
|
114
133
|
|
|
115
134
|
return (
|
|
116
|
-
<HStack alignment="left" spacing={
|
|
117
|
-
{
|
|
135
|
+
<HStack alignment="left" spacing={ 0 }>
|
|
136
|
+
{ imageUrl && (
|
|
118
137
|
<div
|
|
119
138
|
className={ clsx( 'page-templates-author-field__avatar', {
|
|
120
139
|
'is-loaded': isImageLoaded,
|
|
@@ -127,7 +146,7 @@ function AuthorField( { item, viewType } ) {
|
|
|
127
146
|
/>
|
|
128
147
|
</div>
|
|
129
148
|
) }
|
|
130
|
-
{
|
|
149
|
+
{ ! imageUrl && (
|
|
131
150
|
<div className="page-templates-author-field__icon">
|
|
132
151
|
<Icon icon={ icon } />
|
|
133
152
|
</div>
|
|
@@ -158,7 +177,7 @@ function Preview( { item, viewType } ) {
|
|
|
158
177
|
// the block editor settings are needed in context where we don't have the block editor.
|
|
159
178
|
// Explore how we can solve this in a better way.
|
|
160
179
|
return (
|
|
161
|
-
<
|
|
180
|
+
<EditorProvider post={ item } settings={ settings }>
|
|
162
181
|
<div
|
|
163
182
|
className={ `page-templates-preview-field is-viewtype-${ viewType }` }
|
|
164
183
|
style={ { backgroundColor } }
|
|
@@ -184,7 +203,7 @@ function Preview( { item, viewType } ) {
|
|
|
184
203
|
</button>
|
|
185
204
|
) }
|
|
186
205
|
</div>
|
|
187
|
-
</
|
|
206
|
+
</EditorProvider>
|
|
188
207
|
);
|
|
189
208
|
}
|
|
190
209
|
|
|
@@ -199,6 +218,7 @@ export default function PageTemplates() {
|
|
|
199
218
|
...DEFAULT_VIEW,
|
|
200
219
|
type: usedType,
|
|
201
220
|
layout: defaultLayouts[ usedType ].layout,
|
|
221
|
+
fields: defaultLayouts[ usedType ].fields,
|
|
202
222
|
filters:
|
|
203
223
|
activeView !== 'all'
|
|
204
224
|
? [
|
|
@@ -236,12 +256,13 @@ export default function PageTemplates() {
|
|
|
236
256
|
}
|
|
237
257
|
);
|
|
238
258
|
const history = useHistory();
|
|
239
|
-
const
|
|
259
|
+
const onChangeSelection = useCallback(
|
|
240
260
|
( items ) => {
|
|
261
|
+
setSelection( items );
|
|
241
262
|
if ( view?.type === LAYOUT_LIST ) {
|
|
242
263
|
history.push( {
|
|
243
264
|
...params,
|
|
244
|
-
postId: items.length === 1 ? items[ 0 ]
|
|
265
|
+
postId: items.length === 1 ? items[ 0 ] : undefined,
|
|
245
266
|
} );
|
|
246
267
|
}
|
|
247
268
|
},
|
|
@@ -265,61 +286,46 @@ export default function PageTemplates() {
|
|
|
265
286
|
const fields = useMemo(
|
|
266
287
|
() => [
|
|
267
288
|
{
|
|
268
|
-
|
|
289
|
+
label: __( 'Preview' ),
|
|
269
290
|
id: 'preview',
|
|
270
291
|
render: ( { item } ) => {
|
|
271
292
|
return <Preview item={ item } viewType={ view.type } />;
|
|
272
293
|
},
|
|
273
|
-
minWidth: 120,
|
|
274
|
-
maxWidth: 120,
|
|
275
294
|
enableSorting: false,
|
|
276
295
|
},
|
|
277
296
|
{
|
|
278
|
-
|
|
297
|
+
label: __( 'Template' ),
|
|
279
298
|
id: 'title',
|
|
280
299
|
getValue: ( { item } ) => item.title?.rendered,
|
|
281
300
|
render: ( { item } ) => (
|
|
282
301
|
<Title item={ item } viewType={ view.type } />
|
|
283
302
|
),
|
|
284
|
-
maxWidth: 400,
|
|
285
303
|
enableHiding: false,
|
|
286
304
|
enableGlobalSearch: true,
|
|
287
305
|
},
|
|
288
306
|
{
|
|
289
|
-
|
|
307
|
+
label: __( 'Description' ),
|
|
290
308
|
id: 'description',
|
|
291
309
|
render: ( { item } ) => {
|
|
292
|
-
return
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
view.type === LAYOUT_TABLE && (
|
|
298
|
-
<>
|
|
299
|
-
<Text variant="muted" aria-hidden="true">
|
|
300
|
-
—
|
|
301
|
-
</Text>
|
|
302
|
-
<VisuallyHidden>
|
|
303
|
-
{ __( 'No description.' ) }
|
|
304
|
-
</VisuallyHidden>
|
|
305
|
-
</>
|
|
310
|
+
return (
|
|
311
|
+
item.description && (
|
|
312
|
+
<span className="page-templates-description">
|
|
313
|
+
{ decodeEntities( item.description ) }
|
|
314
|
+
</span>
|
|
306
315
|
)
|
|
307
316
|
);
|
|
308
317
|
},
|
|
309
|
-
maxWidth: 400,
|
|
310
|
-
minWidth: 320,
|
|
311
318
|
enableSorting: false,
|
|
312
319
|
enableGlobalSearch: true,
|
|
313
320
|
},
|
|
314
321
|
{
|
|
315
|
-
|
|
322
|
+
label: __( 'Author' ),
|
|
316
323
|
id: 'author',
|
|
317
324
|
getValue: ( { item } ) => item.author_text,
|
|
318
325
|
render: ( { item } ) => {
|
|
319
326
|
return <AuthorField viewType={ view.type } item={ item } />;
|
|
320
327
|
},
|
|
321
328
|
elements: authors,
|
|
322
|
-
width: '1%',
|
|
323
329
|
},
|
|
324
330
|
],
|
|
325
331
|
[ authors, view.type ]
|
|
@@ -367,9 +373,8 @@ export default function PageTemplates() {
|
|
|
367
373
|
isLoading={ isLoadingData }
|
|
368
374
|
view={ view }
|
|
369
375
|
onChangeView={ onChangeView }
|
|
370
|
-
|
|
376
|
+
onChangeSelection={ onChangeSelection }
|
|
371
377
|
selection={ selection }
|
|
372
|
-
setSelection={ setSelection }
|
|
373
378
|
defaultLayouts={ defaultLayouts }
|
|
374
379
|
/>
|
|
375
380
|
</Page>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: column;
|
|
4
4
|
height: 100%;
|
|
5
|
+
width: 100%;
|
|
5
6
|
|
|
6
7
|
.page-templates-preview-field__button {
|
|
7
8
|
box-shadow: none;
|
|
@@ -67,12 +68,12 @@
|
|
|
67
68
|
width: $grid-unit-30;
|
|
68
69
|
height: $grid-unit-30;
|
|
69
70
|
align-items: center;
|
|
70
|
-
justify-content:
|
|
71
|
+
justify-content: left;
|
|
71
72
|
display: flex;
|
|
72
73
|
|
|
73
74
|
img {
|
|
74
|
-
width:
|
|
75
|
-
height:
|
|
75
|
+
width: $grid-unit-20;
|
|
76
|
+
height: $grid-unit-20;
|
|
76
77
|
object-fit: cover;
|
|
77
78
|
opacity: 0;
|
|
78
79
|
transition: opacity 0.1s linear;
|
|
@@ -94,6 +95,7 @@
|
|
|
94
95
|
height: $grid-unit-30;
|
|
95
96
|
|
|
96
97
|
svg {
|
|
98
|
+
margin-left: -$grid-unit-05;
|
|
97
99
|
fill: currentColor;
|
|
98
100
|
}
|
|
99
101
|
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { __ } from '@wordpress/i18n';
|
|
10
|
+
import { DataForm } from '@wordpress/dataviews';
|
|
11
|
+
import { useDispatch, useSelect, useRegistry } from '@wordpress/data';
|
|
12
|
+
import { store as coreDataStore } from '@wordpress/core-data';
|
|
13
|
+
import { Button } from '@wordpress/components';
|
|
14
|
+
import { useState, useMemo } from '@wordpress/element';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Internal dependencies
|
|
18
|
+
*/
|
|
19
|
+
import Page from '../page';
|
|
20
|
+
import usePostFields from '../post-fields';
|
|
21
|
+
|
|
22
|
+
function PostEditForm( { postType, postId } ) {
|
|
23
|
+
const ids = useMemo( () => postId.split( ',' ), [ postId ] );
|
|
24
|
+
const { initialEdits } = useSelect(
|
|
25
|
+
( select ) => {
|
|
26
|
+
if ( ids.length !== 1 ) {
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
initialEdits:
|
|
30
|
+
ids.length === 1
|
|
31
|
+
? select( coreDataStore ).getEntityRecord(
|
|
32
|
+
'postType',
|
|
33
|
+
postType,
|
|
34
|
+
ids[ 0 ]
|
|
35
|
+
)
|
|
36
|
+
: null,
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
[ postType, ids ]
|
|
40
|
+
);
|
|
41
|
+
const registry = useRegistry();
|
|
42
|
+
const { saveEntityRecord } = useDispatch( coreDataStore );
|
|
43
|
+
const { fields } = usePostFields();
|
|
44
|
+
const form = {
|
|
45
|
+
visibleFields: [ 'title' ],
|
|
46
|
+
};
|
|
47
|
+
const [ edits, setEdits ] = useState( {} );
|
|
48
|
+
const itemWithEdits = useMemo( () => {
|
|
49
|
+
return {
|
|
50
|
+
...initialEdits,
|
|
51
|
+
...edits,
|
|
52
|
+
};
|
|
53
|
+
}, [ initialEdits, edits ] );
|
|
54
|
+
const onSubmit = async ( event ) => {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
const { getEntityRecord } = registry.resolveSelect( coreDataStore );
|
|
57
|
+
for ( const id of ids ) {
|
|
58
|
+
const item = await getEntityRecord( 'postType', postType, id );
|
|
59
|
+
saveEntityRecord( 'postType', postType, {
|
|
60
|
+
...item,
|
|
61
|
+
...edits,
|
|
62
|
+
} );
|
|
63
|
+
}
|
|
64
|
+
setEdits( {} );
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<form onSubmit={ onSubmit }>
|
|
69
|
+
<DataForm
|
|
70
|
+
data={ itemWithEdits }
|
|
71
|
+
fields={ fields }
|
|
72
|
+
form={ form }
|
|
73
|
+
onChange={ setEdits }
|
|
74
|
+
/>
|
|
75
|
+
<Button variant="primary" type="submit">
|
|
76
|
+
{ __( 'Update' ) }
|
|
77
|
+
</Button>
|
|
78
|
+
</form>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function PostEdit( { postType, postId } ) {
|
|
83
|
+
return (
|
|
84
|
+
<Page
|
|
85
|
+
className={ clsx( 'edit-site-post-edit', {
|
|
86
|
+
'is-empty': ! postId,
|
|
87
|
+
} ) }
|
|
88
|
+
label={ __( 'Post Edit' ) }
|
|
89
|
+
>
|
|
90
|
+
{ postId && (
|
|
91
|
+
<PostEditForm postType={ postType } postId={ postId } />
|
|
92
|
+
) }
|
|
93
|
+
{ ! postId && <p>{ __( 'Select a page to edit' ) }</p> }
|
|
94
|
+
</Page>
|
|
95
|
+
);
|
|
96
|
+
}
|