@wordpress/edit-site 5.28.2 → 5.29.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 +18 -8
- package/build/components/add-new-pattern/index.js.map +1 -1
- package/build/components/block-editor/use-site-editor-settings.js +2 -1
- package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build/components/code-editor/index.js +3 -2
- package/build/components/code-editor/index.js.map +1 -1
- package/build/components/editor/index.js +4 -4
- package/build/components/editor/index.js.map +1 -1
- package/build/components/editor-canvas-container/index.js +1 -1
- package/build/components/editor-canvas-container/index.js.map +1 -1
- package/build/components/global-styles/block-preview-panel.js +2 -2
- package/build/components/global-styles/block-preview-panel.js.map +1 -1
- package/build/components/global-styles/font-library-modal/collection-font-details.js +1 -1
- package/build/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-collection.js +84 -7
- package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
- package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
- package/build/components/global-styles/font-library-modal/installed-fonts.js +10 -7
- package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build/components/header-edit-mode/document-tools/index.js +1 -2
- package/build/components/header-edit-mode/document-tools/index.js.map +1 -1
- package/build/components/header-edit-mode/index.js +3 -1
- package/build/components/header-edit-mode/index.js.map +1 -1
- package/build/components/header-edit-mode/more-menu/index.js +7 -4
- package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
- package/build/components/keyboard-shortcuts/edit-mode.js +0 -13
- package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
- package/build/components/keyboard-shortcuts/register.js +0 -18
- package/build/components/keyboard-shortcuts/register.js.map +1 -1
- package/build/components/layout/index.js +8 -4
- package/build/components/layout/index.js.map +1 -1
- package/build/components/layout/router.js +26 -5
- package/build/components/layout/router.js.map +1 -1
- package/build/components/page-patterns/dataviews-pattern-actions.js +25 -8
- package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
- package/build/components/page-patterns/header.js +2 -1
- package/build/components/page-patterns/header.js.map +1 -1
- package/build/components/page-patterns/index.js +0 -1
- package/build/components/page-patterns/index.js.map +1 -1
- package/build/components/page-patterns/use-patterns.js +10 -5
- package/build/components/page-patterns/use-patterns.js.map +1 -1
- package/build/components/page-templates-template-parts/index.js +1 -0
- package/build/components/page-templates-template-parts/index.js.map +1 -1
- package/build/components/save-button/index.js +2 -1
- package/build/components/save-button/index.js.map +1 -1
- package/build/components/sidebar/index.js +5 -2
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
- package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
- package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/index.js +48 -5
- package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
- package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
- package/build/components/sidebar-navigation-screen-global-styles/index.js +6 -2
- package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pages/index.js +3 -1
- package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
- package/build/components/style-book/index.js +2 -0
- package/build/components/style-book/index.js.map +1 -1
- package/build/hooks/commands/use-edit-mode-commands.js +3 -171
- package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build/hooks/index.js +0 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/push-changes-to-global-styles/index.js +4 -5
- package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +91 -0
- package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
- package/build/store/actions.js +19 -50
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +3 -1
- package/build/store/private-actions.js.map +1 -1
- package/build/utils/clone-deep.js +15 -0
- package/build/utils/clone-deep.js.map +1 -0
- package/build-module/components/add-new-pattern/index.js +18 -8
- package/build-module/components/add-new-pattern/index.js.map +1 -1
- package/build-module/components/block-editor/use-site-editor-settings.js +2 -1
- package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build-module/components/code-editor/index.js +3 -2
- package/build-module/components/code-editor/index.js.map +1 -1
- package/build-module/components/editor/index.js +4 -4
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/editor-canvas-container/index.js +2 -2
- package/build-module/components/editor-canvas-container/index.js.map +1 -1
- package/build-module/components/global-styles/block-preview-panel.js +2 -2
- package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/collection-font-details.js +1 -1
- package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/font-collection.js +87 -10
- package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
- package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js +11 -8
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build-module/components/header-edit-mode/document-tools/index.js +1 -2
- package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -1
- package/build-module/components/header-edit-mode/index.js +3 -1
- package/build-module/components/header-edit-mode/index.js.map +1 -1
- package/build-module/components/header-edit-mode/more-menu/index.js +6 -3
- package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/edit-mode.js +0 -13
- package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/register.js +0 -18
- package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
- package/build-module/components/layout/index.js +9 -5
- package/build-module/components/layout/index.js.map +1 -1
- package/build-module/components/layout/router.js +26 -5
- package/build-module/components/layout/router.js.map +1 -1
- package/build-module/components/page-patterns/dataviews-pattern-actions.js +25 -8
- package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
- package/build-module/components/page-patterns/header.js +2 -1
- package/build-module/components/page-patterns/header.js.map +1 -1
- package/build-module/components/page-patterns/index.js +0 -1
- package/build-module/components/page-patterns/index.js.map +1 -1
- package/build-module/components/page-patterns/use-patterns.js +10 -5
- package/build-module/components/page-patterns/use-patterns.js.map +1 -1
- package/build-module/components/page-templates-template-parts/index.js +1 -0
- package/build-module/components/page-templates-template-parts/index.js.map +1 -1
- package/build-module/components/save-button/index.js +2 -1
- package/build-module/components/save-button/index.js.map +1 -1
- package/build-module/components/sidebar/index.js +5 -2
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
- package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
- package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/index.js +50 -7
- package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
- package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -2
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pages/index.js +3 -1
- package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
- package/build-module/components/style-book/index.js +2 -0
- package/build-module/components/style-book/index.js.map +1 -1
- package/build-module/hooks/commands/use-edit-mode-commands.js +4 -172
- package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build-module/hooks/index.js +0 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/push-changes-to-global-styles/index.js +1 -3
- package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +82 -0
- package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
- package/build-module/store/actions.js +19 -50
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +3 -1
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/utils/clone-deep.js +9 -0
- package/build-module/utils/clone-deep.js.map +1 -0
- package/build-style/style-rtl.css +46 -209
- package/build-style/style.css +46 -209
- package/package.json +43 -42
- package/src/components/add-new-pattern/index.js +27 -11
- package/src/components/block-editor/use-site-editor-settings.js +1 -0
- package/src/components/code-editor/index.js +3 -2
- package/src/components/editor/index.js +11 -7
- package/src/components/editor-canvas-container/index.js +2 -5
- package/src/components/{test → error-boundary/test}/error-boundary.js +7 -5
- package/src/components/global-styles/block-preview-panel.js +2 -2
- package/src/components/global-styles/font-library-modal/collection-font-details.js +1 -1
- package/src/components/global-styles/font-library-modal/font-collection.js +118 -13
- package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
- package/src/components/global-styles/font-library-modal/installed-fonts.js +25 -23
- package/src/components/global-styles/font-library-modal/style.scss +2 -5
- package/src/components/global-styles/screen-revisions/style.scss +2 -2
- package/src/components/global-styles/style.scss +1 -1
- package/src/components/header-edit-mode/document-tools/index.js +1 -2
- package/src/components/header-edit-mode/index.js +1 -1
- package/src/components/header-edit-mode/more-menu/index.js +8 -3
- package/src/components/keyboard-shortcuts/edit-mode.js +0 -11
- package/src/components/keyboard-shortcuts/register.js +0 -19
- package/src/components/layout/index.js +47 -32
- package/src/components/layout/router.js +31 -2
- package/src/components/layout/style.scss +7 -0
- package/src/components/page-patterns/dataviews-pattern-actions.js +41 -10
- package/src/components/page-patterns/header.js +1 -0
- package/src/components/page-patterns/index.js +0 -1
- package/src/components/page-patterns/style.scss +8 -180
- package/src/components/page-patterns/use-patterns.js +13 -5
- package/src/components/page-templates-template-parts/index.js +1 -0
- package/src/components/page-templates-template-parts/style.scss +6 -0
- package/src/components/save-button/index.js +2 -1
- package/src/components/save-hub/style.scss +1 -1
- package/src/components/sidebar/index.js +8 -3
- package/src/components/sidebar-button/style.scss +1 -1
- package/src/components/sidebar-edit-mode/global-styles-sidebar.js +5 -7
- package/src/components/sidebar-edit-mode/style.scss +4 -0
- package/src/components/sidebar-edit-mode/template-panel/hooks.js +37 -24
- package/src/components/sidebar-edit-mode/template-panel/index.js +76 -18
- package/src/components/sidebar-edit-mode/template-panel/style.scss +5 -14
- package/src/components/sidebar-edit-mode/template-panel/template-actions.js +1 -12
- package/src/components/sidebar-navigation-screen-global-styles/index.js +4 -1
- package/src/components/sidebar-navigation-screen-pages/index.js +10 -6
- package/src/components/style-book/index.js +5 -1
- package/src/hooks/commands/use-edit-mode-commands.js +3 -184
- package/src/hooks/index.js +0 -1
- package/src/hooks/push-changes-to-global-styles/index.js +1 -4
- package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +964 -0
- package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +92 -0
- package/src/store/actions.js +21 -85
- package/src/store/private-actions.js +4 -0
- package/src/store/test/actions.js +0 -75
- package/src/style.scss +1 -6
- package/src/utils/clone-deep.js +8 -0
- package/build/components/global-styles/font-library-modal/fonts-grid.js +0 -57
- package/build/components/global-styles/font-library-modal/fonts-grid.js.map +0 -1
- package/build/components/header-edit-mode/mode-switcher/index.js +0 -62
- package/build/components/header-edit-mode/mode-switcher/index.js.map +0 -1
- package/build/components/page-patterns/duplicate-menu-item.js +0 -93
- package/build/components/page-patterns/duplicate-menu-item.js.map +0 -1
- package/build/components/page-patterns/grid-item.js +0 -223
- package/build/components/page-patterns/grid-item.js.map +0 -1
- package/build/components/page-patterns/grid.js +0 -31
- package/build/components/page-patterns/grid.js.map +0 -1
- package/build/components/page-patterns/no-patterns.js +0 -18
- package/build/components/page-patterns/no-patterns.js.map +0 -1
- package/build/components/page-patterns/patterns-list.js +0 -168
- package/build/components/page-patterns/patterns-list.js.map +0 -1
- package/build/components/page-patterns/rename-menu-item.js +0 -105
- package/build/components/page-patterns/rename-menu-item.js.map +0 -1
- package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -83
- package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
- package/build/hooks/navigation-menu-edit.js +0 -82
- package/build/hooks/navigation-menu-edit.js.map +0 -1
- package/build-module/components/global-styles/font-library-modal/fonts-grid.js +0 -50
- package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +0 -1
- package/build-module/components/header-edit-mode/mode-switcher/index.js +0 -56
- package/build-module/components/header-edit-mode/mode-switcher/index.js.map +0 -1
- package/build-module/components/page-patterns/duplicate-menu-item.js +0 -85
- package/build-module/components/page-patterns/duplicate-menu-item.js.map +0 -1
- package/build-module/components/page-patterns/grid-item.js +0 -215
- package/build-module/components/page-patterns/grid-item.js.map +0 -1
- package/build-module/components/page-patterns/grid.js +0 -23
- package/build-module/components/page-patterns/grid.js.map +0 -1
- package/build-module/components/page-patterns/no-patterns.js +0 -11
- package/build-module/components/page-patterns/no-patterns.js.map +0 -1
- package/build-module/components/page-patterns/patterns-list.js +0 -160
- package/build-module/components/page-patterns/patterns-list.js.map +0 -1
- package/build-module/components/page-patterns/rename-menu-item.js +0 -98
- package/build-module/components/page-patterns/rename-menu-item.js.map +0 -1
- package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -76
- package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
- package/build-module/hooks/navigation-menu-edit.js +0 -75
- package/build-module/hooks/navigation-menu-edit.js.map +0 -1
- package/src/components/global-styles/font-library-modal/fonts-grid.js +0 -59
- package/src/components/header-edit-mode/mode-switcher/index.js +0 -60
- package/src/components/page-patterns/duplicate-menu-item.js +0 -105
- package/src/components/page-patterns/grid-item.js +0 -331
- package/src/components/page-patterns/grid.js +0 -22
- package/src/components/page-patterns/no-patterns.js +0 -12
- package/src/components/page-patterns/patterns-list.js +0 -229
- package/src/components/page-patterns/rename-menu-item.js +0 -132
- package/src/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -89
- package/src/hooks/navigation-menu-edit.js +0 -92
|
@@ -23,13 +23,21 @@ const { useLocation } = unlock( routerPrivateApis );
|
|
|
23
23
|
export default function useLayoutAreas() {
|
|
24
24
|
const isSiteEditorLoading = useIsSiteEditorLoading();
|
|
25
25
|
const { params } = useLocation();
|
|
26
|
-
const { postType, postId, path, layout, isCustom } = params ?? {};
|
|
26
|
+
const { postType, postId, path, layout, isCustom, canvas } = params ?? {};
|
|
27
|
+
|
|
28
|
+
// Note: Since "sidebar" is not yet supported here,
|
|
29
|
+
// returning undefined from "mobile" means show the sidebar.
|
|
30
|
+
|
|
27
31
|
// Regular page
|
|
28
32
|
if ( path === '/page' ) {
|
|
29
33
|
return {
|
|
30
34
|
areas: {
|
|
31
35
|
content: undefined,
|
|
32
36
|
preview: <Editor isLoading={ isSiteEditorLoading } />,
|
|
37
|
+
mobile:
|
|
38
|
+
canvas === 'edit' ? (
|
|
39
|
+
<Editor isLoading={ isSiteEditorLoading } />
|
|
40
|
+
) : undefined,
|
|
33
41
|
},
|
|
34
42
|
widths: {
|
|
35
43
|
content: undefined,
|
|
@@ -63,6 +71,10 @@ export default function useLayoutAreas() {
|
|
|
63
71
|
return {
|
|
64
72
|
areas: {
|
|
65
73
|
preview: <Editor isLoading={ isSiteEditorLoading } />,
|
|
74
|
+
mobile:
|
|
75
|
+
canvas === 'edit' ? (
|
|
76
|
+
<Editor isLoading={ isSiteEditorLoading } />
|
|
77
|
+
) : undefined,
|
|
66
78
|
},
|
|
67
79
|
};
|
|
68
80
|
}
|
|
@@ -79,6 +91,11 @@ export default function useLayoutAreas() {
|
|
|
79
91
|
preview: isListLayout && (
|
|
80
92
|
<Editor isLoading={ isSiteEditorLoading } />
|
|
81
93
|
),
|
|
94
|
+
mobile: (
|
|
95
|
+
<PageTemplatesTemplateParts
|
|
96
|
+
postType={ TEMPLATE_POST_TYPE }
|
|
97
|
+
/>
|
|
98
|
+
),
|
|
82
99
|
},
|
|
83
100
|
widths: {
|
|
84
101
|
content: isListLayout ? 380 : undefined,
|
|
@@ -98,6 +115,11 @@ export default function useLayoutAreas() {
|
|
|
98
115
|
preview: isListLayout && (
|
|
99
116
|
<Editor isLoading={ isSiteEditorLoading } />
|
|
100
117
|
),
|
|
118
|
+
mobile: (
|
|
119
|
+
<PageTemplatesTemplateParts
|
|
120
|
+
postType={ TEMPLATE_PART_POST_TYPE }
|
|
121
|
+
/>
|
|
122
|
+
),
|
|
101
123
|
},
|
|
102
124
|
widths: {
|
|
103
125
|
content: isListLayout ? 380 : undefined,
|
|
@@ -110,12 +132,19 @@ export default function useLayoutAreas() {
|
|
|
110
132
|
return {
|
|
111
133
|
areas: {
|
|
112
134
|
content: <PagePatterns />,
|
|
135
|
+
mobile: <PagePatterns />,
|
|
113
136
|
},
|
|
114
137
|
};
|
|
115
138
|
}
|
|
116
139
|
|
|
117
140
|
// Fallback shows the home page preview
|
|
118
141
|
return {
|
|
119
|
-
areas: {
|
|
142
|
+
areas: {
|
|
143
|
+
preview: <Editor isLoading={ isSiteEditorLoading } />,
|
|
144
|
+
mobile:
|
|
145
|
+
canvas === 'edit' ? (
|
|
146
|
+
<Editor isLoading={ isSiteEditorLoading } />
|
|
147
|
+
) : undefined,
|
|
148
|
+
},
|
|
120
149
|
};
|
|
121
150
|
}
|
|
@@ -83,6 +83,12 @@
|
|
|
83
83
|
flex-direction: column;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
.edit-site-layout__mobile {
|
|
87
|
+
position: relative;
|
|
88
|
+
width: 100%;
|
|
89
|
+
z-index: z-index(".edit-site-layout__canvas-container");
|
|
90
|
+
}
|
|
91
|
+
|
|
86
92
|
.edit-site-layout__canvas-container {
|
|
87
93
|
position: relative;
|
|
88
94
|
flex-grow: 1;
|
|
@@ -147,6 +153,7 @@
|
|
|
147
153
|
}
|
|
148
154
|
|
|
149
155
|
// This shouldn't be necessary (we should have a way to say that a skeletton is relative
|
|
156
|
+
.edit-site-layout__mobile .interface-interface-skeleton,
|
|
150
157
|
.edit-site-layout__canvas .interface-interface-skeleton,
|
|
151
158
|
.edit-site-template-pages-preview .interface-interface-skeleton {
|
|
152
159
|
position: relative !important;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { paramCase as kebabCase } from 'change-case';
|
|
5
|
+
import { downloadZip } from 'client-zip';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* WordPress dependencies
|
|
@@ -41,21 +42,51 @@ const { useHistory } = unlock( routerPrivateApis );
|
|
|
41
42
|
const { CreatePatternModalContents, useDuplicatePatternProps } =
|
|
42
43
|
unlock( patternsPrivateApis );
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
isEligible: ( item ) => item.type === PATTERN_TYPES.user,
|
|
48
|
-
callback: ( [ item ] ) => {
|
|
49
|
-
const json = {
|
|
45
|
+
function getJsonFromItem( item ) {
|
|
46
|
+
return JSON.stringify(
|
|
47
|
+
{
|
|
50
48
|
__file: item.type,
|
|
51
49
|
title: item.title || item.name,
|
|
52
50
|
content: item.patternPost.content.raw,
|
|
53
51
|
syncStatus: item.patternPost.wp_pattern_sync_status,
|
|
54
|
-
}
|
|
52
|
+
},
|
|
53
|
+
null,
|
|
54
|
+
2
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const exportJSONaction = {
|
|
59
|
+
id: 'export-pattern',
|
|
60
|
+
label: __( 'Export as JSON' ),
|
|
61
|
+
supportsBulk: true,
|
|
62
|
+
isEligible: ( item ) => item.type === PATTERN_TYPES.user,
|
|
63
|
+
callback: async ( items ) => {
|
|
64
|
+
if ( items.length === 1 ) {
|
|
65
|
+
return downloadBlob(
|
|
66
|
+
`${ kebabCase( items[ 0 ].title || items[ 0 ].name ) }.json`,
|
|
67
|
+
getJsonFromItem( items[ 0 ] ),
|
|
68
|
+
'application/json'
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
const nameCount = {};
|
|
72
|
+
const filesToZip = items.map( ( item ) => {
|
|
73
|
+
const name = kebabCase( item.title || item.name );
|
|
74
|
+
nameCount[ name ] = ( nameCount[ name ] || 0 ) + 1;
|
|
75
|
+
return {
|
|
76
|
+
name: `${
|
|
77
|
+
name +
|
|
78
|
+
( nameCount[ name ] > 1
|
|
79
|
+
? '-' + ( nameCount[ name ] - 1 )
|
|
80
|
+
: '' )
|
|
81
|
+
}.json`,
|
|
82
|
+
lastModified: new Date(),
|
|
83
|
+
input: getJsonFromItem( item ),
|
|
84
|
+
};
|
|
85
|
+
} );
|
|
55
86
|
return downloadBlob(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
'application/
|
|
87
|
+
__( 'patterns-export' ) + '.zip',
|
|
88
|
+
await downloadZip( filesToZip ).blob(),
|
|
89
|
+
'application/zip'
|
|
59
90
|
);
|
|
60
91
|
},
|
|
61
92
|
};
|
|
@@ -391,7 +391,6 @@ export default function DataviewsPatterns() {
|
|
|
391
391
|
// Wrap everything in a block editor provider.
|
|
392
392
|
// This ensures 'styles' that are needed for the previews are synced
|
|
393
393
|
// from the site editor store to the block editor store.
|
|
394
|
-
// TODO: check if I add the provider in every preview like in templates...
|
|
395
394
|
return (
|
|
396
395
|
<ExperimentalBlockEditorProvider settings={ settings }>
|
|
397
396
|
<Page
|
|
@@ -1,70 +1,3 @@
|
|
|
1
|
-
.edit-site-patterns {
|
|
2
|
-
background: #1e1e1e;
|
|
3
|
-
border-left: 1px solid $gray-800;
|
|
4
|
-
margin: $header-height 0 0;
|
|
5
|
-
border-radius: 0;
|
|
6
|
-
padding: 0;
|
|
7
|
-
overflow-x: auto;
|
|
8
|
-
min-height: 100%;
|
|
9
|
-
|
|
10
|
-
.components-base-control {
|
|
11
|
-
width: 100%;
|
|
12
|
-
@include break-medium {
|
|
13
|
-
width: auto;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.components-text {
|
|
18
|
-
color: $gray-600;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.components-heading {
|
|
22
|
-
color: $gray-200;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
@include break-medium {
|
|
26
|
-
margin: 0;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.edit-site-patterns__search-block {
|
|
30
|
-
min-width: fit-content;
|
|
31
|
-
flex-grow: 1;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// TODO: Consider using the Theme component to automatically adapt to a dark background.
|
|
35
|
-
.edit-site-patterns__search {
|
|
36
|
-
--wp-components-color-foreground: #{$gray-200};
|
|
37
|
-
|
|
38
|
-
.components-input-control__container {
|
|
39
|
-
background: $gray-800;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
svg {
|
|
43
|
-
fill: $gray-600;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.edit-site-patterns__sync-status-filter {
|
|
48
|
-
background: $gray-800;
|
|
49
|
-
border: none;
|
|
50
|
-
height: $button-size-next-default-40px;
|
|
51
|
-
min-width: max-content;
|
|
52
|
-
width: 100%;
|
|
53
|
-
max-width: 100%;
|
|
54
|
-
|
|
55
|
-
@include break-medium {
|
|
56
|
-
width: 300px;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
.edit-site-patterns__sync-status-filter-option:not([aria-checked="true"]) {
|
|
60
|
-
color: $gray-600;
|
|
61
|
-
}
|
|
62
|
-
.edit-site-patterns__sync-status-filter-option:active {
|
|
63
|
-
background: $gray-700;
|
|
64
|
-
color: $gray-100;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
1
|
.edit-site-patterns__header {
|
|
69
2
|
position: sticky;
|
|
70
3
|
top: 0;
|
|
@@ -77,97 +10,13 @@
|
|
|
77
10
|
}
|
|
78
11
|
}
|
|
79
12
|
|
|
80
|
-
.edit-site-patterns__section {
|
|
81
|
-
padding: $grid-unit-30 $grid-unit-40;
|
|
82
|
-
flex: 1;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
13
|
.edit-site-patterns__section-header {
|
|
86
14
|
.screen-reader-shortcut:focus {
|
|
87
15
|
top: 0;
|
|
88
16
|
}
|
|
89
17
|
}
|
|
90
18
|
|
|
91
|
-
.edit-site-patterns__grid {
|
|
92
|
-
display: grid;
|
|
93
|
-
grid-template-columns: 1fr;
|
|
94
|
-
gap: $grid-unit-40;
|
|
95
|
-
margin-top: 0;
|
|
96
|
-
margin-bottom: 0;
|
|
97
|
-
@include break-large {
|
|
98
|
-
grid-template-columns: 1fr 1fr;
|
|
99
|
-
}
|
|
100
|
-
@include break-huge {
|
|
101
|
-
grid-template-columns: 1fr 1fr 1fr;
|
|
102
|
-
}
|
|
103
|
-
@include break-xhuge {
|
|
104
|
-
grid-template-columns: 1fr 1fr 1fr 1fr;
|
|
105
|
-
}
|
|
106
|
-
.edit-site-patterns__pattern {
|
|
107
|
-
break-inside: avoid-column;
|
|
108
|
-
display: flex;
|
|
109
|
-
flex-direction: column;
|
|
110
|
-
.edit-site-patterns__preview {
|
|
111
|
-
box-shadow: none;
|
|
112
|
-
border: none;
|
|
113
|
-
padding: 0;
|
|
114
|
-
background-color: unset;
|
|
115
|
-
box-sizing: border-box;
|
|
116
|
-
border-radius: 4px;
|
|
117
|
-
cursor: pointer;
|
|
118
|
-
overflow: hidden;
|
|
119
|
-
|
|
120
|
-
&:focus {
|
|
121
|
-
box-shadow: inset 0 0 0 0 $white, 0 0 0 2px var(--wp-admin-theme-color);
|
|
122
|
-
// Windows High Contrast mode will show this outline, but not the box-shadow.
|
|
123
|
-
outline: 2px solid transparent;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
&.is-inactive {
|
|
127
|
-
cursor: default;
|
|
128
|
-
}
|
|
129
|
-
&.is-inactive:focus {
|
|
130
|
-
box-shadow: 0 0 0 var(--wp-admin-border-width-focus) $gray-800;
|
|
131
|
-
opacity: 0.8;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.edit-site-patterns__footer,
|
|
136
|
-
.edit-site-patterns__button {
|
|
137
|
-
color: $gray-600;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.edit-site-patterns__dropdown {
|
|
141
|
-
flex-shrink: 0;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
&.is-placeholder .edit-site-patterns__preview {
|
|
145
|
-
min-height: $grid-unit-80;
|
|
146
|
-
color: $gray-600;
|
|
147
|
-
border: 1px dashed $gray-800;
|
|
148
|
-
display: flex;
|
|
149
|
-
align-items: center;
|
|
150
|
-
justify-content: center;
|
|
151
|
-
|
|
152
|
-
&:focus {
|
|
153
|
-
box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
.edit-site-patterns__preview {
|
|
159
|
-
flex: 0 1 auto;
|
|
160
|
-
margin-bottom: $grid-unit-15;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
.edit-site-patterns__load-more {
|
|
165
|
-
align-self: center;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
19
|
.edit-site-patterns__pattern-title {
|
|
169
|
-
color: $gray-200;
|
|
170
|
-
|
|
171
20
|
.is-link {
|
|
172
21
|
text-decoration: none;
|
|
173
22
|
color: $gray-200;
|
|
@@ -189,42 +38,17 @@
|
|
|
189
38
|
}
|
|
190
39
|
}
|
|
191
40
|
|
|
192
|
-
.edit-site-patterns__no-results {
|
|
193
|
-
color: $gray-600;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
41
|
.edit-site-patterns__delete-modal {
|
|
197
42
|
width: $modal-width-small;
|
|
198
43
|
}
|
|
199
44
|
|
|
200
|
-
.edit-site-
|
|
201
|
-
|
|
202
|
-
border-top: 1px solid $gray-800;
|
|
203
|
-
background: $gray-900;
|
|
204
|
-
position: sticky;
|
|
205
|
-
bottom: 0;
|
|
206
|
-
color: $gray-100;
|
|
207
|
-
z-index: z-index(".edit-site-patterns__grid-pagination");
|
|
208
|
-
.components-button.is-tertiary {
|
|
209
|
-
background-color: $gray-800;
|
|
210
|
-
color: $gray-100;
|
|
211
|
-
|
|
212
|
-
&:disabled {
|
|
213
|
-
color: $gray-600;
|
|
214
|
-
background: none;
|
|
215
|
-
}
|
|
45
|
+
.edit-site-page-patterns-dataviews {
|
|
46
|
+
margin-top: 60px;
|
|
216
47
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
48
|
+
@include break-medium {
|
|
49
|
+
margin-top: 0;
|
|
220
50
|
}
|
|
221
|
-
}
|
|
222
51
|
|
|
223
|
-
/**
|
|
224
|
-
* DataViews patterns styles.
|
|
225
|
-
* TODO: when this becomes stable, consolidate styles with the above.
|
|
226
|
-
*/
|
|
227
|
-
.edit-site-page-patterns-dataviews {
|
|
228
52
|
.page-patterns-preview-field {
|
|
229
53
|
display: flex;
|
|
230
54
|
flex-direction: column;
|
|
@@ -283,6 +107,10 @@
|
|
|
283
107
|
text-overflow: ellipsis;
|
|
284
108
|
color: inherit;
|
|
285
109
|
}
|
|
110
|
+
|
|
111
|
+
.dataviews-pagination {
|
|
112
|
+
z-index: z-index(".edit-site-patterns__dataviews-list-pagination");
|
|
113
|
+
}
|
|
286
114
|
}
|
|
287
115
|
|
|
288
116
|
.dataviews-action-modal__duplicate-pattern {
|
|
@@ -111,6 +111,7 @@ const selectTemplatePartsAsPatterns = createSelector(
|
|
|
111
111
|
const selectThemePatterns = createSelector(
|
|
112
112
|
( select ) => {
|
|
113
113
|
const { getSettings } = unlock( select( editSiteStore ) );
|
|
114
|
+
const { getIsResolving } = select( coreStore );
|
|
114
115
|
const settings = getSettings();
|
|
115
116
|
const blockPatterns =
|
|
116
117
|
settings.__experimentalAdditionalBlockPatterns ??
|
|
@@ -136,19 +137,23 @@ const selectThemePatterns = createSelector(
|
|
|
136
137
|
__unstableSkipMigrationLogs: true,
|
|
137
138
|
} ),
|
|
138
139
|
} ) );
|
|
139
|
-
|
|
140
|
-
return { patterns, isResolving: false };
|
|
140
|
+
return { patterns, isResolving: getIsResolving( 'getBlockPatterns' ) };
|
|
141
141
|
},
|
|
142
142
|
( select ) => [
|
|
143
143
|
select( coreStore ).getBlockPatterns(),
|
|
144
|
+
select( coreStore ).getIsResolving( 'getBlockPatterns' ),
|
|
144
145
|
unlock( select( editSiteStore ) ).getSettings(),
|
|
145
146
|
]
|
|
146
147
|
);
|
|
147
148
|
|
|
148
149
|
const selectPatterns = createSelector(
|
|
149
150
|
( select, categoryId, syncStatus, search = '' ) => {
|
|
150
|
-
const {
|
|
151
|
-
|
|
151
|
+
const {
|
|
152
|
+
patterns: themePatterns,
|
|
153
|
+
isResolving: isResolvingThemePatterns,
|
|
154
|
+
} = selectThemePatterns( select );
|
|
155
|
+
const { patterns: userPatterns, isResolving: isResolvingUserPatterns } =
|
|
156
|
+
selectUserPatterns( select );
|
|
152
157
|
|
|
153
158
|
let patterns = [
|
|
154
159
|
...( themePatterns || [] ),
|
|
@@ -176,7 +181,10 @@ const selectPatterns = createSelector(
|
|
|
176
181
|
hasCategory: ( item ) => ! item.hasOwnProperty( 'categories' ),
|
|
177
182
|
} );
|
|
178
183
|
}
|
|
179
|
-
return {
|
|
184
|
+
return {
|
|
185
|
+
patterns,
|
|
186
|
+
isResolving: isResolvingThemePatterns || isResolvingUserPatterns,
|
|
187
|
+
};
|
|
180
188
|
},
|
|
181
189
|
( select ) => [
|
|
182
190
|
selectThemePatterns( select ),
|
|
@@ -22,6 +22,7 @@ export default function SaveButton( {
|
|
|
22
22
|
showTooltip = true,
|
|
23
23
|
defaultLabel,
|
|
24
24
|
icon,
|
|
25
|
+
size,
|
|
25
26
|
__next40pxDefaultSize = false,
|
|
26
27
|
} ) {
|
|
27
28
|
const { isDirty, isSaving, isSaveViewOpen, previewingThemeName } =
|
|
@@ -119,7 +120,7 @@ export default function SaveButton( {
|
|
|
119
120
|
showTooltip={ showTooltip }
|
|
120
121
|
icon={ icon }
|
|
121
122
|
__next40pxDefaultSize={ __next40pxDefaultSize }
|
|
122
|
-
size=
|
|
123
|
+
size={ size }
|
|
123
124
|
>
|
|
124
125
|
{ label }
|
|
125
126
|
</Button>
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
__experimentalNavigatorScreen as NavigatorScreen,
|
|
13
13
|
} from '@wordpress/components';
|
|
14
14
|
import { privateApis as routerPrivateApis } from '@wordpress/router';
|
|
15
|
+
import { useViewportMatch } from '@wordpress/compose';
|
|
15
16
|
import { __ } from '@wordpress/i18n';
|
|
16
17
|
|
|
17
18
|
/**
|
|
@@ -52,6 +53,7 @@ function SidebarScreenWrapper( { className, ...props } ) {
|
|
|
52
53
|
|
|
53
54
|
function SidebarScreens() {
|
|
54
55
|
useSyncPathWithURL();
|
|
56
|
+
const isMobileViewport = useViewportMatch( 'medium', '<' );
|
|
55
57
|
|
|
56
58
|
return (
|
|
57
59
|
<>
|
|
@@ -74,6 +76,7 @@ function SidebarScreens() {
|
|
|
74
76
|
<SidebarNavigationScreen
|
|
75
77
|
title={ __( 'Pages' ) }
|
|
76
78
|
content={ <DataViewsSidebarContent /> }
|
|
79
|
+
backPath="/page"
|
|
77
80
|
/>
|
|
78
81
|
</SidebarScreenWrapper>
|
|
79
82
|
<SidebarScreenWrapper path="/page/:postId">
|
|
@@ -82,9 +85,11 @@ function SidebarScreens() {
|
|
|
82
85
|
<SidebarScreenWrapper path="/:postType(wp_template)">
|
|
83
86
|
<SidebarNavigationScreenTemplates />
|
|
84
87
|
</SidebarScreenWrapper>
|
|
85
|
-
|
|
86
|
-
<
|
|
87
|
-
|
|
88
|
+
{ ! isMobileViewport && (
|
|
89
|
+
<SidebarScreenWrapper path="/patterns">
|
|
90
|
+
<SidebarNavigationScreenPatterns />
|
|
91
|
+
</SidebarScreenWrapper>
|
|
92
|
+
) }
|
|
88
93
|
<SidebarScreenWrapper path="/:postType(wp_template|wp_template_part)/all">
|
|
89
94
|
<SidebarNavigationScreenTemplatesBrowse />
|
|
90
95
|
</SidebarScreenWrapper>
|
|
@@ -41,7 +41,7 @@ export default function GlobalStylesSidebar() {
|
|
|
41
41
|
);
|
|
42
42
|
const canvasContainerView = getEditorCanvasContainerView();
|
|
43
43
|
const _isVisualEditorMode =
|
|
44
|
-
'visual' === select(
|
|
44
|
+
'visual' === select( editorStore ).getEditorMode();
|
|
45
45
|
const _isEditCanvasMode = 'edit' === getCanvasMode();
|
|
46
46
|
const _showListViewByDefault = select( preferencesStore ).get(
|
|
47
47
|
'core',
|
|
@@ -132,13 +132,11 @@ export default function GlobalStylesSidebar() {
|
|
|
132
132
|
closeLabel={ __( 'Close Styles' ) }
|
|
133
133
|
panelClassName="edit-site-global-styles-sidebar__panel"
|
|
134
134
|
header={
|
|
135
|
-
<Flex
|
|
136
|
-
className="edit-site-global-styles-sidebar__header"
|
|
137
|
-
role="menubar"
|
|
138
|
-
aria-label={ __( 'Styles actions' ) }
|
|
139
|
-
>
|
|
135
|
+
<Flex className="edit-site-global-styles-sidebar__header">
|
|
140
136
|
<FlexBlock style={ { minWidth: 'min-content' } }>
|
|
141
|
-
<
|
|
137
|
+
<h2 className="edit-site-global-styles-sidebar__header-title">
|
|
138
|
+
{ __( 'Styles' ) }
|
|
139
|
+
</h2>
|
|
142
140
|
</FlexBlock>
|
|
143
141
|
<FlexItem>
|
|
144
142
|
<Button
|
|
@@ -36,7 +36,14 @@ function injectThemeAttributeInBlockTemplateContent(
|
|
|
36
36
|
return block;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Filter all patterns and return only the ones that are compatible with the current template.
|
|
41
|
+
*
|
|
42
|
+
* @param {Array} patterns An array of patterns.
|
|
43
|
+
* @param {Object} template The current template.
|
|
44
|
+
* @return {Array} Array of patterns that are compatible with the current template.
|
|
45
|
+
*/
|
|
46
|
+
function filterPatterns( patterns, template ) {
|
|
40
47
|
// Filter out duplicates.
|
|
41
48
|
const filterOutDuplicatesByName = ( currentItem, index, items ) =>
|
|
42
49
|
index === items.findIndex( ( item ) => currentItem.name === item.name );
|
|
@@ -45,30 +52,35 @@ function preparePatterns( patterns, template, currentThemeStylesheet ) {
|
|
|
45
52
|
const filterOutExcludedPatternSources = ( pattern ) =>
|
|
46
53
|
! EXCLUDED_PATTERN_SOURCES.includes( pattern.source );
|
|
47
54
|
|
|
48
|
-
//
|
|
55
|
+
// Looks for patterns that have the same template type as the current template,
|
|
56
|
+
// or have a block type that matches the current template area.
|
|
49
57
|
const filterCompatiblePatterns = ( pattern ) =>
|
|
50
|
-
pattern.templateTypes?.includes( template.slug )
|
|
58
|
+
pattern.templateTypes?.includes( template.slug ) ||
|
|
59
|
+
pattern.blockTypes?.includes( 'core/template-part/' + template.area );
|
|
60
|
+
|
|
61
|
+
return patterns.filter( ( pattern, index, items ) => {
|
|
62
|
+
return (
|
|
63
|
+
filterOutDuplicatesByName( pattern, index, items ) &&
|
|
64
|
+
filterOutExcludedPatternSources( pattern ) &&
|
|
65
|
+
filterCompatiblePatterns( pattern )
|
|
66
|
+
);
|
|
67
|
+
} );
|
|
68
|
+
}
|
|
51
69
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
.map( (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
injectThemeAttributeInBlockTemplateContent(
|
|
67
|
-
block,
|
|
68
|
-
currentThemeStylesheet
|
|
69
|
-
)
|
|
70
|
-
),
|
|
71
|
-
} ) );
|
|
70
|
+
function preparePatterns( patterns, template, currentThemeStylesheet ) {
|
|
71
|
+
return patterns.map( ( pattern ) => ( {
|
|
72
|
+
...pattern,
|
|
73
|
+
keywords: pattern.keywords || [],
|
|
74
|
+
type: PATTERN_TYPES.theme,
|
|
75
|
+
blocks: parse( pattern.content, {
|
|
76
|
+
__unstableSkipMigrationLogs: true,
|
|
77
|
+
} ).map( ( block ) =>
|
|
78
|
+
injectThemeAttributeInBlockTemplateContent(
|
|
79
|
+
block,
|
|
80
|
+
currentThemeStylesheet
|
|
81
|
+
)
|
|
82
|
+
),
|
|
83
|
+
} ) );
|
|
72
84
|
}
|
|
73
85
|
|
|
74
86
|
export function useAvailablePatterns( template ) {
|
|
@@ -92,8 +104,9 @@ export function useAvailablePatterns( template ) {
|
|
|
92
104
|
...( blockPatterns || [] ),
|
|
93
105
|
...( restBlockPatterns || [] ),
|
|
94
106
|
];
|
|
107
|
+
const filteredPatterns = filterPatterns( mergedPatterns, template );
|
|
95
108
|
return preparePatterns(
|
|
96
|
-
|
|
109
|
+
filteredPatterns,
|
|
97
110
|
template,
|
|
98
111
|
currentThemeStylesheet
|
|
99
112
|
);
|