@wordpress/edit-site 3.0.8 → 3.0.12
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/build/components/add-new-template/index.js +49 -0
- package/build/components/add-new-template/index.js.map +1 -0
- package/build/components/add-new-template/new-template-part.js +95 -0
- package/build/components/add-new-template/new-template-part.js.map +1 -0
- package/build/components/add-new-template/new-template.js +133 -0
- package/build/components/add-new-template/new-template.js.map +1 -0
- package/build/components/block-editor/index.js +3 -1
- package/build/components/block-editor/index.js.map +1 -1
- package/build/components/create-template-part-modal/index.js +115 -0
- package/build/components/create-template-part-modal/index.js.map +1 -0
- package/build/components/editor/index.js +20 -16
- package/build/components/editor/index.js.map +1 -1
- package/build/components/global-styles/color-palette-panel.js +29 -6
- package/build/components/global-styles/color-palette-panel.js.map +1 -1
- package/build/components/global-styles/global-styles-provider.js +9 -47
- package/build/components/global-styles/global-styles-provider.js.map +1 -1
- package/build/components/global-styles/gradients-palette-panel.js +56 -0
- package/build/components/global-styles/gradients-palette-panel.js.map +1 -0
- package/build/components/global-styles/hooks.js +29 -27
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/palette.js +11 -5
- package/build/components/global-styles/palette.js.map +1 -1
- package/build/components/global-styles/screen-background-color.js +2 -1
- package/build/components/global-styles/screen-background-color.js.map +1 -1
- package/build/components/global-styles/screen-block-list.js +9 -1
- package/build/components/global-styles/screen-block-list.js.map +1 -1
- package/build/components/global-styles/screen-color-palette.js +23 -3
- package/build/components/global-styles/screen-color-palette.js.map +1 -1
- package/build/components/global-styles/screen-link-color.js +2 -1
- package/build/components/global-styles/screen-link-color.js.map +1 -1
- package/build/components/global-styles/screen-text-color.js +2 -1
- package/build/components/global-styles/screen-text-color.js.map +1 -1
- package/build/components/global-styles/screen-typography-element.js +54 -0
- package/build/components/global-styles/screen-typography-element.js.map +1 -0
- package/build/components/global-styles/screen-typography.js +74 -6
- package/build/components/global-styles/screen-typography.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +28 -8
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/ui.js +12 -0
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +2 -2
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +1 -1
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/header/index.js +1 -5
- package/build/components/header/index.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +26 -0
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/list/actions/index.js +104 -0
- package/build/components/list/actions/index.js.map +1 -0
- package/build/components/list/actions/rename-menu-item.js +112 -0
- package/build/components/list/actions/rename-menu-item.js.map +1 -0
- package/build/components/list/added-by.js +180 -0
- package/build/components/list/added-by.js.map +1 -0
- package/build/components/list/header.js +50 -0
- package/build/components/list/header.js.map +1 -0
- package/build/components/list/index.js +102 -0
- package/build/components/list/index.js.map +1 -0
- package/build/components/list/table.js +114 -0
- package/build/components/list/table.js.map +1 -0
- package/build/components/list/use-register-shortcuts.js +52 -0
- package/build/components/list/use-register-shortcuts.js.map +1 -0
- package/build/components/navigation-sidebar/index.js +26 -10
- package/build/components/navigation-sidebar/index.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-panel/index.js +42 -44
- package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-toggle/index.js +5 -17
- package/build/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build/components/template-details/index.js +3 -2
- package/build/components/template-details/index.js.map +1 -1
- package/build/components/template-part-converter/convert-to-template-part.js +20 -84
- package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
- package/build/components/welcome-guide/editor.js +58 -0
- package/build/components/welcome-guide/editor.js.map +1 -0
- package/build/components/welcome-guide/image.js +27 -0
- package/build/components/welcome-guide/image.js.map +1 -0
- package/build/components/welcome-guide/index.js +49 -0
- package/build/components/welcome-guide/index.js.map +1 -0
- package/build/components/welcome-guide/styles.js +83 -0
- package/build/components/welcome-guide/styles.js.map +1 -0
- package/build/index.js +36 -6
- package/build/index.js.map +1 -1
- package/build/plugins/index.js +4 -2
- package/build/plugins/index.js.map +1 -1
- package/build/plugins/welcome-guide-menu-item.js +39 -0
- package/build/plugins/welcome-guide-menu-item.js.map +1 -0
- package/build/store/actions.js +50 -24
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +4 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/selectors.js +25 -5
- package/build/store/selectors.js.map +1 -1
- package/build/utils/is-template-removable.js +21 -0
- package/build/utils/is-template-removable.js.map +1 -0
- package/build-module/components/add-new-template/index.js +36 -0
- package/build-module/components/add-new-template/index.js.map +1 -0
- package/build-module/components/add-new-template/new-template-part.js +79 -0
- package/build-module/components/add-new-template/new-template-part.js.map +1 -0
- package/build-module/components/add-new-template/new-template.js +114 -0
- package/build-module/components/add-new-template/new-template.js.map +1 -0
- package/build-module/components/block-editor/index.js +2 -1
- package/build-module/components/block-editor/index.js.map +1 -1
- package/build-module/components/create-template-part-modal/index.js +102 -0
- package/build-module/components/create-template-part-modal/index.js.map +1 -0
- package/build-module/components/editor/index.js +19 -17
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/global-styles/color-palette-panel.js +29 -7
- package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
- package/build-module/components/global-styles/global-styles-provider.js +10 -43
- package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
- package/build-module/components/global-styles/gradients-palette-panel.js +46 -0
- package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -0
- package/build-module/components/global-styles/hooks.js +30 -28
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/palette.js +12 -5
- package/build-module/components/global-styles/palette.js.map +1 -1
- package/build-module/components/global-styles/screen-background-color.js +2 -1
- package/build-module/components/global-styles/screen-background-color.js.map +1 -1
- package/build-module/components/global-styles/screen-block-list.js +7 -1
- package/build-module/components/global-styles/screen-block-list.js.map +1 -1
- package/build-module/components/global-styles/screen-color-palette.js +22 -3
- package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
- package/build-module/components/global-styles/screen-link-color.js +2 -1
- package/build-module/components/global-styles/screen-link-color.js.map +1 -1
- package/build-module/components/global-styles/screen-text-color.js +2 -1
- package/build-module/components/global-styles/screen-text-color.js.map +1 -1
- package/build-module/components/global-styles/screen-typography-element.js +41 -0
- package/build-module/components/global-styles/screen-typography-element.js.map +1 -0
- package/build-module/components/global-styles/screen-typography.js +70 -6
- package/build-module/components/global-styles/screen-typography.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +28 -8
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/ui.js +11 -0
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +2 -2
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -1
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/header/index.js +1 -3
- package/build-module/components/header/index.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +26 -0
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/list/actions/index.js +85 -0
- package/build-module/components/list/actions/index.js.map +1 -0
- package/build-module/components/list/actions/rename-menu-item.js +101 -0
- package/build-module/components/list/actions/rename-menu-item.js.map +1 -0
- package/build-module/components/list/added-by.js +166 -0
- package/build-module/components/list/added-by.js.map +1 -0
- package/build-module/components/list/header.js +37 -0
- package/build-module/components/list/header.js.map +1 -0
- package/build-module/components/list/index.js +81 -0
- package/build-module/components/list/index.js.map +1 -0
- package/build-module/components/list/table.js +98 -0
- package/build-module/components/list/table.js.map +1 -0
- package/build-module/components/list/use-register-shortcuts.js +41 -0
- package/build-module/components/list/use-register-shortcuts.js.map +1 -0
- package/build-module/components/navigation-sidebar/index.js +26 -10
- package/build-module/components/navigation-sidebar/index.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-panel/index.js +41 -44
- package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js +6 -18
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build-module/components/template-details/index.js +3 -2
- package/build-module/components/template-details/index.js.map +1 -1
- package/build-module/components/template-part-converter/convert-to-template-part.js +20 -84
- package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
- package/build-module/components/welcome-guide/editor.js +45 -0
- package/build-module/components/welcome-guide/editor.js.map +1 -0
- package/build-module/components/welcome-guide/image.js +19 -0
- package/build-module/components/welcome-guide/image.js.map +1 -0
- package/build-module/components/welcome-guide/index.js +35 -0
- package/build-module/components/welcome-guide/index.js.map +1 -0
- package/build-module/components/welcome-guide/styles.js +69 -0
- package/build-module/components/welcome-guide/styles.js.map +1 -0
- package/build-module/index.js +28 -3
- package/build-module/index.js.map +1 -1
- package/build-module/plugins/index.js +3 -2
- package/build-module/plugins/index.js.map +1 -1
- package/build-module/plugins/welcome-guide-menu-item.js +27 -0
- package/build-module/plugins/welcome-guide-menu-item.js.map +1 -0
- package/build-module/store/actions.js +51 -25
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +4 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/selectors.js +21 -3
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/is-template-removable.js +14 -0
- package/build-module/utils/is-template-removable.js.map +1 -0
- package/build-style/style-rtl.css +468 -33
- package/build-style/style.css +468 -33
- package/package.json +10 -8
- package/src/components/add-new-template/index.js +30 -0
- package/src/components/add-new-template/new-template-part.js +81 -0
- package/src/components/add-new-template/new-template.js +136 -0
- package/src/components/add-new-template/style.scss +11 -0
- package/src/components/block-editor/index.js +2 -0
- package/src/components/create-template-part-modal/index.js +132 -0
- package/src/components/{template-part-converter → create-template-part-modal}/style.scss +9 -9
- package/src/components/editor/index.js +22 -15
- package/src/components/editor/style.scss +8 -0
- package/src/components/global-styles/color-palette-panel.js +64 -7
- package/src/components/global-styles/global-styles-provider.js +7 -36
- package/src/components/global-styles/gradients-palette-panel.js +79 -0
- package/src/components/global-styles/hooks.js +59 -27
- package/src/components/global-styles/palette.js +30 -10
- package/src/components/global-styles/screen-background-color.js +1 -0
- package/src/components/global-styles/screen-block-list.js +11 -1
- package/src/components/global-styles/screen-color-palette.js +30 -3
- package/src/components/global-styles/screen-link-color.js +1 -0
- package/src/components/global-styles/screen-text-color.js +1 -0
- package/src/components/global-styles/screen-typography-element.js +39 -0
- package/src/components/global-styles/screen-typography.js +84 -3
- package/src/components/global-styles/style.scss +33 -0
- package/src/components/global-styles/test/use-global-styles-output.js +3 -3
- package/src/components/global-styles/test/utils.js +1 -1
- package/src/components/global-styles/typography-panel.js +37 -7
- package/src/components/global-styles/ui.js +9 -0
- package/src/components/global-styles/use-global-styles-output.js +2 -2
- package/src/components/global-styles/utils.js +1 -1
- package/src/components/header/index.js +0 -6
- package/src/components/keyboard-shortcuts/index.js +32 -0
- package/src/components/list/actions/index.js +95 -0
- package/src/components/list/actions/rename-menu-item.js +134 -0
- package/src/components/list/added-by.js +179 -0
- package/src/components/list/header.js +34 -0
- package/src/components/list/index.js +96 -0
- package/src/components/list/style.scss +208 -0
- package/src/components/list/table.js +121 -0
- package/src/components/list/use-register-shortcuts.js +45 -0
- package/src/components/navigation-sidebar/index.js +24 -8
- package/src/components/navigation-sidebar/navigation-panel/index.js +57 -51
- package/src/components/navigation-sidebar/navigation-panel/style.scss +4 -2
- package/src/components/navigation-sidebar/navigation-toggle/index.js +24 -36
- package/src/components/navigation-sidebar/navigation-toggle/test/index.js +2 -0
- package/src/components/sidebar/style.scss +2 -1
- package/src/components/template-details/index.js +3 -2
- package/src/components/template-part-converter/convert-to-template-part.js +20 -140
- package/src/components/welcome-guide/editor.js +63 -0
- package/src/components/welcome-guide/image.js +11 -0
- package/src/components/welcome-guide/index.js +33 -0
- package/src/components/welcome-guide/style.scss +37 -0
- package/src/components/welcome-guide/styles.js +116 -0
- package/src/index.js +31 -3
- package/src/plugins/index.js +3 -1
- package/src/plugins/welcome-guide-menu-item.js +35 -0
- package/src/store/actions.js +85 -35
- package/src/store/defaults.js +4 -1
- package/src/store/selectors.js +22 -4
- package/src/store/test/actions.js +0 -30
- package/src/store/test/selectors.js +24 -0
- package/src/style.scss +9 -6
- package/src/utils/is-template-removable.js +13 -0
- package/build/components/header/navigation-link/index.js +0 -87
- package/build/components/header/navigation-link/index.js.map +0 -1
- package/build-module/components/header/navigation-link/index.js +0 -74
- package/build-module/components/header/navigation-link/index.js.map +0 -1
- package/src/components/header/navigation-link/index.js +0 -71
- package/src/components/header/navigation-link/style.scss +0 -69
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useDispatch } from '@wordpress/data';
|
|
5
|
+
import { ExternalLink, Guide } from '@wordpress/components';
|
|
6
|
+
import { __ } from '@wordpress/i18n';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Internal dependencies
|
|
10
|
+
*/
|
|
11
|
+
import WelcomeGuideImage from './image';
|
|
12
|
+
import { store as editSiteStore } from '../../store';
|
|
13
|
+
|
|
14
|
+
export default function WelcomeGuideStyles() {
|
|
15
|
+
const { toggleFeature } = useDispatch( editSiteStore );
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<Guide
|
|
19
|
+
className="edit-site-welcome-guide"
|
|
20
|
+
contentLabel={ __( 'Welcome to styles' ) }
|
|
21
|
+
finishButtonText={ __( 'Get Started' ) }
|
|
22
|
+
onFinish={ () => toggleFeature( 'welcomeGuideStyles' ) }
|
|
23
|
+
pages={ [
|
|
24
|
+
{
|
|
25
|
+
image: (
|
|
26
|
+
<WelcomeGuideImage
|
|
27
|
+
nonAnimatedSrc="https://s.w.org/images/block-editor/welcome-to-styles.svg?1"
|
|
28
|
+
animatedSrc="https://s.w.org/images/block-editor/welcome-to-styles.gif?1"
|
|
29
|
+
/>
|
|
30
|
+
),
|
|
31
|
+
content: (
|
|
32
|
+
<>
|
|
33
|
+
<h1 className="edit-site-welcome-guide__heading">
|
|
34
|
+
{ __( 'Welcome to Styles' ) }
|
|
35
|
+
</h1>
|
|
36
|
+
<p className="edit-site-welcome-guide__text">
|
|
37
|
+
{ __(
|
|
38
|
+
'Tweak your site, or give it a whole new look! Get creative — how about a new color palette for your buttons, or choosing a new font? Take a look at what you can do here.'
|
|
39
|
+
) }
|
|
40
|
+
</p>
|
|
41
|
+
</>
|
|
42
|
+
),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
image: (
|
|
46
|
+
<WelcomeGuideImage
|
|
47
|
+
nonAnimatedSrc="https://s.w.org/images/block-editor/set-the-design.svg?1"
|
|
48
|
+
animatedSrc="https://s.w.org/images/block-editor/set-the-design.gif?1"
|
|
49
|
+
/>
|
|
50
|
+
),
|
|
51
|
+
content: (
|
|
52
|
+
<>
|
|
53
|
+
<h1 className="edit-site-welcome-guide__heading">
|
|
54
|
+
{ __( 'Set the design' ) }
|
|
55
|
+
</h1>
|
|
56
|
+
<p className="edit-site-welcome-guide__text">
|
|
57
|
+
{ __(
|
|
58
|
+
'You can customize your site as much as you like with different colors, typography, and layouts. Or if you prefer, just leave it up to your theme to handle! '
|
|
59
|
+
) }
|
|
60
|
+
</p>
|
|
61
|
+
</>
|
|
62
|
+
),
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
image: (
|
|
66
|
+
<WelcomeGuideImage
|
|
67
|
+
nonAnimatedSrc="https://s.w.org/images/block-editor/personalize-blocks.svg?1"
|
|
68
|
+
animatedSrc="https://s.w.org/images/block-editor/personalize-blocks.gif?1"
|
|
69
|
+
/>
|
|
70
|
+
),
|
|
71
|
+
content: (
|
|
72
|
+
<>
|
|
73
|
+
<h1 className="edit-site-welcome-guide__heading">
|
|
74
|
+
{ __( 'Personalize blocks' ) }
|
|
75
|
+
</h1>
|
|
76
|
+
<p className="edit-site-welcome-guide__text">
|
|
77
|
+
{ __(
|
|
78
|
+
'You can adjust your blocks to ensure a cohesive experience across your site — add your unique colors to a branded Button block, or adjust the Heading block to your preferred size.'
|
|
79
|
+
) }
|
|
80
|
+
</p>
|
|
81
|
+
</>
|
|
82
|
+
),
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
image: (
|
|
86
|
+
<WelcomeGuideImage
|
|
87
|
+
nonAnimatedSrc="https://s.w.org/images/block-editor/welcome-documentation.svg"
|
|
88
|
+
animatedSrc="https://s.w.org/images/block-editor/welcome-documentation.gif"
|
|
89
|
+
/>
|
|
90
|
+
),
|
|
91
|
+
content: (
|
|
92
|
+
<>
|
|
93
|
+
<h1 className="edit-site-welcome-guide__heading">
|
|
94
|
+
{ __( 'Learn more' ) }
|
|
95
|
+
</h1>
|
|
96
|
+
<p className="edit-site-welcome-guide__text">
|
|
97
|
+
{ __(
|
|
98
|
+
'New to block themes and styling your site? '
|
|
99
|
+
) }
|
|
100
|
+
<ExternalLink
|
|
101
|
+
href={ __(
|
|
102
|
+
'https://wordpress.org/support/article/wordpress-editor/'
|
|
103
|
+
) }
|
|
104
|
+
>
|
|
105
|
+
{ __(
|
|
106
|
+
'Here’s a detailed guide to learn how to make the most of it.'
|
|
107
|
+
) }
|
|
108
|
+
</ExternalLink>
|
|
109
|
+
</p>
|
|
110
|
+
</>
|
|
111
|
+
),
|
|
112
|
+
},
|
|
113
|
+
] }
|
|
114
|
+
/>
|
|
115
|
+
);
|
|
116
|
+
}
|
package/src/index.js
CHANGED
|
@@ -6,20 +6,23 @@ import {
|
|
|
6
6
|
registerCoreBlocks,
|
|
7
7
|
__experimentalRegisterExperimentalCoreBlocks,
|
|
8
8
|
} from '@wordpress/block-library';
|
|
9
|
-
import { dispatch } from '@wordpress/data';
|
|
9
|
+
import { dispatch, select } from '@wordpress/data';
|
|
10
10
|
import { render, unmountComponentAtNode } from '@wordpress/element';
|
|
11
11
|
import {
|
|
12
12
|
__experimentalFetchLinkSuggestions as fetchLinkSuggestions,
|
|
13
13
|
__experimentalFetchUrlData as fetchUrlData,
|
|
14
14
|
} from '@wordpress/core-data';
|
|
15
|
+
import { store as editorStore } from '@wordpress/editor';
|
|
16
|
+
import { store as viewportStore } from '@wordpress/viewport';
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
19
|
* Internal dependencies
|
|
18
20
|
*/
|
|
19
21
|
import './plugins';
|
|
20
22
|
import './hooks';
|
|
21
|
-
import './store';
|
|
23
|
+
import { store as editSiteStore } from './store';
|
|
22
24
|
import Editor from './components/editor';
|
|
25
|
+
import List from './components/list';
|
|
23
26
|
|
|
24
27
|
/**
|
|
25
28
|
* Reinitializes the editor after the user chooses to reboot the editor after
|
|
@@ -44,7 +47,7 @@ export function reinitializeEditor( target, settings ) {
|
|
|
44
47
|
* @param {string} id ID of the root element to render the screen in.
|
|
45
48
|
* @param {Object} settings Editor settings.
|
|
46
49
|
*/
|
|
47
|
-
export function
|
|
50
|
+
export function initializeEditor( id, settings ) {
|
|
48
51
|
settings.__experimentalFetchLinkSuggestions = ( search, searchOptions ) =>
|
|
49
52
|
fetchLinkSuggestions( search, searchOptions, settings );
|
|
50
53
|
settings.__experimentalFetchRichUrlData = fetchUrlData;
|
|
@@ -67,6 +70,31 @@ export function initialize( id, settings ) {
|
|
|
67
70
|
);
|
|
68
71
|
}
|
|
69
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Initializes the site editor templates list screen.
|
|
75
|
+
*
|
|
76
|
+
* @param {string} id ID of the root element to render the screen in.
|
|
77
|
+
* @param {string} templateType The type of the list. "wp_template" or "wp_template_part".
|
|
78
|
+
* @param {Object} settings Editor settings.
|
|
79
|
+
*/
|
|
80
|
+
export function initializeList( id, templateType, settings ) {
|
|
81
|
+
const target = document.getElementById( id );
|
|
82
|
+
|
|
83
|
+
dispatch( editorStore ).updateEditorSettings( {
|
|
84
|
+
defaultTemplateTypes: settings.defaultTemplateTypes,
|
|
85
|
+
defaultTemplatePartAreas: settings.defaultTemplatePartAreas,
|
|
86
|
+
} );
|
|
87
|
+
|
|
88
|
+
// Default the navigation panel to be opened when we're in a bigger screen.
|
|
89
|
+
// We update the store synchronously before rendering so that we won't
|
|
90
|
+
// trigger an unnecessary re-render with useEffect.
|
|
91
|
+
dispatch( editSiteStore ).setIsNavigationPanelOpened(
|
|
92
|
+
select( viewportStore ).isViewportMatch( 'medium' )
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
render( <List templateType={ templateType } />, target );
|
|
96
|
+
}
|
|
97
|
+
|
|
70
98
|
export { default as __experimentalMainDashboardButton } from './components/main-dashboard-button';
|
|
71
99
|
export { default as __experimentalNavigationToggle } from './components/navigation-sidebar/navigation-toggle';
|
|
72
100
|
export { default as PluginSidebar } from './components/sidebar/plugin-sidebar';
|
package/src/plugins/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import { download } from '@wordpress/icons';
|
|
|
16
16
|
* Internal dependencies
|
|
17
17
|
*/
|
|
18
18
|
import ToolsMoreMenuGroup from '../components/header/tools-more-menu-group';
|
|
19
|
+
import WelcomeGuideMenuItem from './welcome-guide-menu-item';
|
|
19
20
|
|
|
20
21
|
registerPlugin( 'edit-site', {
|
|
21
22
|
render() {
|
|
@@ -27,7 +28,7 @@ registerPlugin( 'edit-site', {
|
|
|
27
28
|
icon={ download }
|
|
28
29
|
onClick={ () =>
|
|
29
30
|
apiFetch( {
|
|
30
|
-
path: '/
|
|
31
|
+
path: '/wp-block-editor/v1/export',
|
|
31
32
|
parse: false,
|
|
32
33
|
} )
|
|
33
34
|
.then( ( res ) => res.blob() )
|
|
@@ -45,6 +46,7 @@ registerPlugin( 'edit-site', {
|
|
|
45
46
|
>
|
|
46
47
|
{ __( 'Export' ) }
|
|
47
48
|
</MenuItem>
|
|
49
|
+
<WelcomeGuideMenuItem />
|
|
48
50
|
</ToolsMoreMenuGroup>
|
|
49
51
|
</>
|
|
50
52
|
);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
6
|
+
import { MenuItem } from '@wordpress/components';
|
|
7
|
+
import { store as interfaceStore } from '@wordpress/interface';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import { store as editSiteStore } from '../store';
|
|
13
|
+
|
|
14
|
+
export default function WelcomeGuideMenuItem() {
|
|
15
|
+
const { toggleFeature } = useDispatch( editSiteStore );
|
|
16
|
+
const isStylesOpen = useSelect( ( select ) => {
|
|
17
|
+
const sidebar = select( interfaceStore ).getActiveComplementaryArea(
|
|
18
|
+
editSiteStore.name
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
return sidebar === 'edit-site/global-styles';
|
|
22
|
+
}, [] );
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<MenuItem
|
|
26
|
+
onClick={ () =>
|
|
27
|
+
toggleFeature(
|
|
28
|
+
isStylesOpen ? 'welcomeGuideStyles' : 'welcomeGuide'
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
>
|
|
32
|
+
{ __( 'Welcome Guide' ) }
|
|
33
|
+
</MenuItem>
|
|
34
|
+
);
|
|
35
|
+
}
|
package/src/store/actions.js
CHANGED
|
@@ -5,7 +5,7 @@ import { parse, __unstableSerializeAndClean } from '@wordpress/blocks';
|
|
|
5
5
|
import { controls, dispatch } from '@wordpress/data';
|
|
6
6
|
import { apiFetch } from '@wordpress/data-controls';
|
|
7
7
|
import { addQueryArgs, getPathAndQueryString } from '@wordpress/url';
|
|
8
|
-
import { __ } from '@wordpress/i18n';
|
|
8
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
9
9
|
import { store as noticesStore } from '@wordpress/notices';
|
|
10
10
|
import { store as coreStore } from '@wordpress/core-data';
|
|
11
11
|
import { store as interfaceStore } from '@wordpress/interface';
|
|
@@ -106,17 +106,56 @@ export function* addTemplate( template ) {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
/**
|
|
109
|
-
* Removes a template
|
|
109
|
+
* Removes a template.
|
|
110
110
|
*
|
|
111
|
-
* @param {
|
|
111
|
+
* @param {Object} template The template object.
|
|
112
112
|
*/
|
|
113
|
-
export function* removeTemplate(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
export function* removeTemplate( template ) {
|
|
114
|
+
try {
|
|
115
|
+
yield controls.dispatch(
|
|
116
|
+
coreStore,
|
|
117
|
+
'deleteEntityRecord',
|
|
118
|
+
'postType',
|
|
119
|
+
template.type,
|
|
120
|
+
template.id,
|
|
121
|
+
{ force: true }
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
const lastError = yield controls.select(
|
|
125
|
+
coreStore,
|
|
126
|
+
'getLastEntityDeleteError',
|
|
127
|
+
'postType',
|
|
128
|
+
template.type,
|
|
129
|
+
template.id
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
if ( lastError ) {
|
|
133
|
+
throw lastError;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
yield controls.dispatch(
|
|
137
|
+
noticesStore,
|
|
138
|
+
'createSuccessNotice',
|
|
139
|
+
sprintf(
|
|
140
|
+
/* translators: The template/part's name. */
|
|
141
|
+
__( '"%s" removed.' ),
|
|
142
|
+
template.title.rendered
|
|
143
|
+
),
|
|
144
|
+
{ type: 'snackbar' }
|
|
145
|
+
);
|
|
146
|
+
} catch ( error ) {
|
|
147
|
+
const errorMessage =
|
|
148
|
+
error.message && error.code !== 'unknown_error'
|
|
149
|
+
? error.message
|
|
150
|
+
: __( 'An error occurred while deleting the template.' );
|
|
151
|
+
|
|
152
|
+
yield controls.dispatch(
|
|
153
|
+
noticesStore,
|
|
154
|
+
'createErrorNotice',
|
|
155
|
+
errorMessage,
|
|
156
|
+
{ type: 'snackbar' }
|
|
157
|
+
);
|
|
158
|
+
}
|
|
120
159
|
}
|
|
121
160
|
|
|
122
161
|
/**
|
|
@@ -336,9 +375,12 @@ export function setIsListViewOpened( isOpen ) {
|
|
|
336
375
|
/**
|
|
337
376
|
* Reverts a template to its original theme-provided file.
|
|
338
377
|
*
|
|
339
|
-
* @param {Object}
|
|
378
|
+
* @param {Object} template The template to revert.
|
|
379
|
+
* @param {Object} [options]
|
|
380
|
+
* @param {boolean} [options.allowUndo] Whether to allow the user to undo
|
|
381
|
+
* reverting the template. Default true.
|
|
340
382
|
*/
|
|
341
|
-
export function* revertTemplate( template ) {
|
|
383
|
+
export function* revertTemplate( template, { allowUndo = true } = {} ) {
|
|
342
384
|
if ( ! isTemplateRevertable( template ) ) {
|
|
343
385
|
yield controls.dispatch(
|
|
344
386
|
noticesStore,
|
|
@@ -426,32 +468,40 @@ export function* revertTemplate( template ) {
|
|
|
426
468
|
}
|
|
427
469
|
);
|
|
428
470
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
471
|
+
if ( allowUndo ) {
|
|
472
|
+
const undoRevert = async () => {
|
|
473
|
+
await dispatch( coreStore ).editEntityRecord(
|
|
474
|
+
'postType',
|
|
475
|
+
template.type,
|
|
476
|
+
edited.id,
|
|
477
|
+
{
|
|
478
|
+
content: serializeBlocks,
|
|
479
|
+
blocks: edited.blocks,
|
|
480
|
+
source: 'custom',
|
|
481
|
+
}
|
|
482
|
+
);
|
|
483
|
+
};
|
|
484
|
+
yield controls.dispatch(
|
|
485
|
+
noticesStore,
|
|
486
|
+
'createSuccessNotice',
|
|
487
|
+
__( 'Template reverted.' ),
|
|
434
488
|
{
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
489
|
+
type: 'snackbar',
|
|
490
|
+
actions: [
|
|
491
|
+
{
|
|
492
|
+
label: __( 'Undo' ),
|
|
493
|
+
onClick: undoRevert,
|
|
494
|
+
},
|
|
495
|
+
],
|
|
438
496
|
}
|
|
439
497
|
);
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
actions: [
|
|
448
|
-
{
|
|
449
|
-
label: __( 'Undo' ),
|
|
450
|
-
onClick: undoRevert,
|
|
451
|
-
},
|
|
452
|
-
],
|
|
453
|
-
}
|
|
454
|
-
);
|
|
498
|
+
} else {
|
|
499
|
+
yield controls.dispatch(
|
|
500
|
+
noticesStore,
|
|
501
|
+
'createSuccessNotice',
|
|
502
|
+
__( 'Template reverted.' )
|
|
503
|
+
);
|
|
504
|
+
}
|
|
455
505
|
} catch ( error ) {
|
|
456
506
|
const errorMessage =
|
|
457
507
|
error.message && error.code !== 'unknown_error'
|
package/src/store/defaults.js
CHANGED
package/src/store/selectors.js
CHANGED
|
@@ -11,6 +11,7 @@ import { store as coreDataStore } from '@wordpress/core-data';
|
|
|
11
11
|
import { createRegistrySelector } from '@wordpress/data';
|
|
12
12
|
import { uploadMedia } from '@wordpress/media-utils';
|
|
13
13
|
import { isTemplatePart } from '@wordpress/blocks';
|
|
14
|
+
import { Platform } from '@wordpress/element';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Internal dependencies
|
|
@@ -64,6 +65,22 @@ export const getCanUserCreateMedia = createRegistrySelector( ( select ) => () =>
|
|
|
64
65
|
select( coreDataStore ).canUser( 'create', 'media' )
|
|
65
66
|
);
|
|
66
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Returns any available Reusable blocks.
|
|
70
|
+
*
|
|
71
|
+
* @param {Object} state Global application state.
|
|
72
|
+
*
|
|
73
|
+
* @return {Array} The available reusable blocks.
|
|
74
|
+
*/
|
|
75
|
+
export const getReusableBlocks = createRegistrySelector( ( select ) => () => {
|
|
76
|
+
const isWeb = Platform.OS === 'web';
|
|
77
|
+
return isWeb
|
|
78
|
+
? select( coreDataStore ).getEntityRecords( 'postType', 'wp_block', {
|
|
79
|
+
per_page: -1,
|
|
80
|
+
} )
|
|
81
|
+
: [];
|
|
82
|
+
} );
|
|
83
|
+
|
|
67
84
|
/**
|
|
68
85
|
* Returns the settings, taking into account active features and permissions.
|
|
69
86
|
*
|
|
@@ -80,6 +97,7 @@ export const getSettings = createSelector(
|
|
|
80
97
|
focusMode: isFeatureActive( state, 'focusMode' ),
|
|
81
98
|
hasFixedToolbar: isFeatureActive( state, 'fixedToolbar' ),
|
|
82
99
|
__experimentalSetIsInserterOpened: setIsInserterOpen,
|
|
100
|
+
__experimentalReusableBlocks: getReusableBlocks( state ),
|
|
83
101
|
};
|
|
84
102
|
|
|
85
103
|
const canUserCreateMedia = getCanUserCreateMedia( state );
|
|
@@ -101,6 +119,7 @@ export const getSettings = createSelector(
|
|
|
101
119
|
state.settings,
|
|
102
120
|
isFeatureActive( state, 'focusMode' ),
|
|
103
121
|
isFeatureActive( state, 'fixedToolbar' ),
|
|
122
|
+
getReusableBlocks( state ),
|
|
104
123
|
]
|
|
105
124
|
);
|
|
106
125
|
|
|
@@ -309,10 +328,9 @@ export const getCurrentTemplateTemplateParts = createRegistrySelector(
|
|
|
309
328
|
templateId
|
|
310
329
|
);
|
|
311
330
|
|
|
312
|
-
const templateParts = select(
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
);
|
|
331
|
+
const templateParts = select(
|
|
332
|
+
coreDataStore
|
|
333
|
+
).getEntityRecords( 'postType', 'wp_template_part', { per_page: -1 } );
|
|
316
334
|
const templatePartsById = keyBy(
|
|
317
335
|
templateParts,
|
|
318
336
|
( templatePart ) => templatePart.id
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
toggleFeature,
|
|
6
6
|
setTemplate,
|
|
7
7
|
addTemplate,
|
|
8
|
-
removeTemplate,
|
|
9
8
|
setTemplatePart,
|
|
10
9
|
setPage,
|
|
11
10
|
showHomepage,
|
|
@@ -76,35 +75,6 @@ describe( 'actions', () => {
|
|
|
76
75
|
} );
|
|
77
76
|
} );
|
|
78
77
|
|
|
79
|
-
describe( 'removeTemplate', () => {
|
|
80
|
-
it( 'should issue a REST request to delete the template, then read the current page and then set the page with an updated template list', () => {
|
|
81
|
-
const templateId = 1;
|
|
82
|
-
const page = { path: '/' };
|
|
83
|
-
|
|
84
|
-
const it = removeTemplate( templateId );
|
|
85
|
-
expect( it.next().value ).toEqual( {
|
|
86
|
-
type: 'API_FETCH',
|
|
87
|
-
request: {
|
|
88
|
-
path: `/wp/v2/templates/${ templateId }`,
|
|
89
|
-
method: 'DELETE',
|
|
90
|
-
},
|
|
91
|
-
} );
|
|
92
|
-
expect( it.next().value ).toEqual( {
|
|
93
|
-
type: '@@data/SELECT',
|
|
94
|
-
storeKey: 'core/edit-site',
|
|
95
|
-
selectorName: 'getPage',
|
|
96
|
-
args: [],
|
|
97
|
-
} );
|
|
98
|
-
expect( it.next( page ).value ).toEqual( {
|
|
99
|
-
type: '@@data/DISPATCH',
|
|
100
|
-
storeKey: 'core/edit-site',
|
|
101
|
-
actionName: 'setPage',
|
|
102
|
-
args: [ page ],
|
|
103
|
-
} );
|
|
104
|
-
expect( it.next().done ).toBe( true );
|
|
105
|
-
} );
|
|
106
|
-
} );
|
|
107
|
-
|
|
108
78
|
describe( 'setTemplatePart', () => {
|
|
109
79
|
it( 'should return the SET_TEMPLATE_PART action', () => {
|
|
110
80
|
const templatePartId = 1;
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
getPreviousEditedPostId,
|
|
18
18
|
getPage,
|
|
19
19
|
getNavigationPanelActiveMenu,
|
|
20
|
+
getReusableBlocks,
|
|
20
21
|
isNavigationOpened,
|
|
21
22
|
isInserterOpened,
|
|
22
23
|
isListViewOpened,
|
|
@@ -24,9 +25,13 @@ import {
|
|
|
24
25
|
|
|
25
26
|
describe( 'selectors', () => {
|
|
26
27
|
const canUser = jest.fn( () => true );
|
|
28
|
+
const getEntityRecords = jest.fn( () => [] );
|
|
27
29
|
getCanUserCreateMedia.registry = {
|
|
28
30
|
select: jest.fn( () => ( { canUser } ) ),
|
|
29
31
|
};
|
|
32
|
+
getReusableBlocks.registry = {
|
|
33
|
+
select: jest.fn( () => ( { getEntityRecords } ) ),
|
|
34
|
+
};
|
|
30
35
|
|
|
31
36
|
describe( 'isFeatureActive', () => {
|
|
32
37
|
it( 'is tolerant to an undefined features preference', () => {
|
|
@@ -83,6 +88,22 @@ describe( 'selectors', () => {
|
|
|
83
88
|
} );
|
|
84
89
|
} );
|
|
85
90
|
|
|
91
|
+
describe( 'getReusableBlocks', () => {
|
|
92
|
+
it( "selects `getEntityRecords( 'postType', 'wp_block' )` from the core store", () => {
|
|
93
|
+
expect( getReusableBlocks() ).toEqual( [] );
|
|
94
|
+
expect( getReusableBlocks.registry.select ).toHaveBeenCalledWith(
|
|
95
|
+
coreDataStore
|
|
96
|
+
);
|
|
97
|
+
expect( getEntityRecords ).toHaveBeenCalledWith(
|
|
98
|
+
'postType',
|
|
99
|
+
'wp_block',
|
|
100
|
+
{
|
|
101
|
+
per_page: -1,
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
} );
|
|
105
|
+
} );
|
|
106
|
+
|
|
86
107
|
describe( 'getSettings', () => {
|
|
87
108
|
it( "returns the settings when the user can't create media", () => {
|
|
88
109
|
canUser.mockReturnValueOnce( false );
|
|
@@ -94,6 +115,7 @@ describe( 'selectors', () => {
|
|
|
94
115
|
focusMode: false,
|
|
95
116
|
hasFixedToolbar: false,
|
|
96
117
|
__experimentalSetIsInserterOpened: setInserterOpened,
|
|
118
|
+
__experimentalReusableBlocks: [],
|
|
97
119
|
} );
|
|
98
120
|
} );
|
|
99
121
|
|
|
@@ -108,12 +130,14 @@ describe( 'selectors', () => {
|
|
|
108
130
|
},
|
|
109
131
|
};
|
|
110
132
|
const setInserterOpened = () => {};
|
|
133
|
+
|
|
111
134
|
expect( getSettings( state, setInserterOpened ) ).toEqual( {
|
|
112
135
|
outlineMode: true,
|
|
113
136
|
key: 'value',
|
|
114
137
|
focusMode: true,
|
|
115
138
|
hasFixedToolbar: true,
|
|
116
139
|
__experimentalSetIsInserterOpened: setInserterOpened,
|
|
140
|
+
__experimentalReusableBlocks: [],
|
|
117
141
|
mediaUpload: expect.any( Function ),
|
|
118
142
|
} );
|
|
119
143
|
} );
|
package/src/style.scss
CHANGED
|
@@ -5,14 +5,18 @@
|
|
|
5
5
|
@import "./components/header/style.scss";
|
|
6
6
|
@import "./components/header/document-actions/style.scss";
|
|
7
7
|
@import "./components/header/more-menu/style.scss";
|
|
8
|
-
@import "./components/
|
|
8
|
+
@import "./components/navigation-sidebar/navigation-toggle/style.scss";
|
|
9
|
+
@import "./components/navigation-sidebar/navigation-panel/style.scss";
|
|
10
|
+
@import "./components/list/style.scss";
|
|
11
|
+
@import "./components/add-new-template/style.scss";
|
|
9
12
|
@import "./components/sidebar/style.scss";
|
|
10
13
|
@import "./components/sidebar/settings-header/style.scss";
|
|
11
14
|
@import "./components/sidebar/template-card/style.scss";
|
|
12
15
|
@import "./components/editor/style.scss";
|
|
13
16
|
@import "./components/template-details/style.scss";
|
|
14
|
-
@import "./components/template-part-
|
|
17
|
+
@import "./components/create-template-part-modal/style.scss";
|
|
15
18
|
@import "./components/secondary-sidebar/style.scss";
|
|
19
|
+
@import "./components/welcome-guide/style.scss";
|
|
16
20
|
|
|
17
21
|
// In order to use mix-blend-mode, this element needs to have an explicitly set background-color.
|
|
18
22
|
// We scope it to .wp-toolbar to be wp-admin only, to prevent bleed into other implementations.
|
|
@@ -37,15 +41,14 @@ body.site-editor-php {
|
|
|
37
41
|
@include break-small {
|
|
38
42
|
bottom: 0;
|
|
39
43
|
left: 0;
|
|
40
|
-
min-height:
|
|
44
|
+
min-height: 100vh;
|
|
41
45
|
position: absolute;
|
|
42
46
|
right: 0;
|
|
43
47
|
top: 0;
|
|
44
48
|
}
|
|
45
49
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
min-height: calc(100vh - #{$admin-bar-height});
|
|
50
|
+
.interface-interface-skeleton {
|
|
51
|
+
top: 0;
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
// Todo: Remove this rule when edit site gets support
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a template is removable.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} template The template entity to check.
|
|
5
|
+
* @return {boolean} Whether the template is revertable.
|
|
6
|
+
*/
|
|
7
|
+
export default function isTemplateRemovable( template ) {
|
|
8
|
+
if ( ! template ) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return template.source === 'custom' && ! template.has_theme_file;
|
|
13
|
+
}
|