@wordpress/edit-site 3.0.14 → 3.0.18-next.33ec3857e2.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/build/components/add-new-template/new-template-part.js +29 -18
- package/build/components/add-new-template/new-template-part.js.map +1 -1
- package/build/components/add-new-template/new-template.js +30 -23
- package/build/components/add-new-template/new-template.js.map +1 -1
- package/build/components/app/index.js +51 -0
- package/build/components/app/index.js.map +1 -0
- package/build/components/block-editor/back-button.js +8 -20
- package/build/components/block-editor/back-button.js.map +1 -1
- package/build/components/block-editor/index.js +2 -1
- package/build/components/block-editor/index.js.map +1 -1
- package/build/components/block-editor/resizable-editor.js +1 -0
- package/build/components/block-editor/resizable-editor.js.map +1 -1
- package/build/components/create-template-part-modal/index.js +0 -2
- package/build/components/create-template-part-modal/index.js.map +1 -1
- package/build/components/edit-template-part-menu-button/index.js +20 -8
- package/build/components/edit-template-part-menu-button/index.js.map +1 -1
- package/build/components/editor/index.js +11 -30
- package/build/components/editor/index.js.map +1 -1
- package/build/components/global-styles/border-panel.js +81 -22
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/gradients-palette-panel.js +10 -10
- package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
- package/build/components/global-styles/screen-background-color.js +9 -10
- package/build/components/global-styles/screen-background-color.js.map +1 -1
- package/build/components/global-styles/screen-colors.js +1 -1
- package/build/components/global-styles/screen-colors.js.map +1 -1
- package/build/components/global-styles/screen-link-color.js +6 -10
- package/build/components/global-styles/screen-link-color.js.map +1 -1
- package/build/components/global-styles/screen-root.js +8 -2
- package/build/components/global-styles/screen-root.js.map +1 -1
- package/build/components/global-styles/screen-text-color.js +6 -10
- package/build/components/global-styles/screen-text-color.js.map +1 -1
- package/build/components/global-styles/ui.js +27 -14
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +1 -2
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/header/document-actions/index.js +3 -6
- package/build/components/header/document-actions/index.js.map +1 -1
- package/build/components/list/actions/index.js +1 -0
- package/build/components/list/actions/index.js.map +1 -1
- package/build/components/list/index.js +17 -15
- package/build/components/list/index.js.map +1 -1
- package/build/components/list/table.js +4 -4
- package/build/components/list/table.js.map +1 -1
- package/build/components/navigation-sidebar/index.js +12 -13
- package/build/components/navigation-sidebar/index.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-panel/index.js +26 -24
- package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-toggle/index.js +3 -1
- package/build/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build/components/routes/index.js +60 -0
- package/build/components/routes/index.js.map +1 -0
- package/build/components/routes/link.js +65 -0
- package/build/components/routes/link.js.map +1 -0
- package/build/components/routes/use-title.js +57 -0
- package/build/components/routes/use-title.js.map +1 -0
- package/build/components/sidebar/default-sidebar.js +4 -2
- package/build/components/sidebar/default-sidebar.js.map +1 -1
- package/build/components/sidebar/global-styles-sidebar.js +11 -0
- package/build/components/sidebar/global-styles-sidebar.js.map +1 -1
- package/build/components/sidebar/template-card/template-areas.js +7 -4
- package/build/components/sidebar/template-card/template-areas.js.map +1 -1
- package/build/components/template-details/index.js +12 -10
- package/build/components/template-details/index.js.map +1 -1
- package/build/components/template-details/template-areas.js +27 -10
- package/build/components/template-details/template-areas.js.map +1 -1
- package/build/components/template-part-converter/convert-to-template-part.js +7 -12
- package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
- package/build/components/url-query-controller/index.js +41 -50
- package/build/components/url-query-controller/index.js.map +1 -1
- package/build/components/welcome-guide/editor.js +6 -0
- package/build/components/welcome-guide/editor.js.map +1 -1
- package/build/components/welcome-guide/index.js +1 -28
- package/build/components/welcome-guide/index.js.map +1 -1
- package/build/components/welcome-guide/styles.js +18 -1
- package/build/components/welcome-guide/styles.js.map +1 -1
- package/build/index.js +29 -35
- package/build/index.js.map +1 -1
- package/build/plugins/index.js +3 -23
- package/build/plugins/index.js.map +1 -1
- package/build/plugins/site-export.js +67 -0
- package/build/plugins/site-export.js.map +1 -0
- package/build/plugins/welcome-guide-menu-item.js +1 -7
- package/build/plugins/welcome-guide-menu-item.js.map +1 -1
- package/build/store/actions.js +0 -27
- package/build/store/actions.js.map +1 -1
- package/build/store/constants.js +1 -14
- package/build/store/constants.js.map +1 -1
- package/build/store/reducer.js +7 -16
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +1 -31
- package/build/store/selectors.js.map +1 -1
- package/build/utils/get-is-list-page.js +23 -0
- package/build/utils/get-is-list-page.js.map +1 -0
- package/build/utils/history.js +35 -0
- package/build/utils/history.js.map +1 -0
- package/build-module/components/add-new-template/new-template-part.js +27 -16
- package/build-module/components/add-new-template/new-template-part.js.map +1 -1
- package/build-module/components/add-new-template/new-template.js +28 -18
- package/build-module/components/add-new-template/new-template.js.map +1 -1
- package/build-module/components/app/index.js +35 -0
- package/build-module/components/app/index.js.map +1 -0
- package/build-module/components/block-editor/back-button.js +8 -19
- package/build-module/components/block-editor/back-button.js.map +1 -1
- 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/block-editor/resizable-editor.js +1 -0
- package/build-module/components/block-editor/resizable-editor.js.map +1 -1
- package/build-module/components/create-template-part-modal/index.js +0 -2
- package/build-module/components/create-template-part-modal/index.js.map +1 -1
- package/build-module/components/edit-template-part-menu-button/index.js +17 -9
- package/build-module/components/edit-template-part-menu-button/index.js.map +1 -1
- package/build-module/components/editor/index.js +13 -33
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +82 -23
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/gradients-palette-panel.js +10 -10
- package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
- package/build-module/components/global-styles/screen-background-color.js +9 -11
- package/build-module/components/global-styles/screen-background-color.js.map +1 -1
- package/build-module/components/global-styles/screen-colors.js +1 -1
- package/build-module/components/global-styles/screen-colors.js.map +1 -1
- package/build-module/components/global-styles/screen-link-color.js +7 -11
- package/build-module/components/global-styles/screen-link-color.js.map +1 -1
- package/build-module/components/global-styles/screen-root.js +9 -4
- package/build-module/components/global-styles/screen-root.js.map +1 -1
- package/build-module/components/global-styles/screen-text-color.js +7 -11
- package/build-module/components/global-styles/screen-text-color.js.map +1 -1
- package/build-module/components/global-styles/ui.js +26 -14
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +1 -2
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/header/document-actions/index.js +3 -6
- package/build-module/components/header/document-actions/index.js.map +1 -1
- package/build-module/components/list/actions/index.js +1 -0
- package/build-module/components/list/actions/index.js.map +1 -1
- package/build-module/components/list/index.js +15 -15
- package/build-module/components/list/index.js.map +1 -1
- package/build-module/components/list/table.js +4 -4
- package/build-module/components/list/table.js.map +1 -1
- package/build-module/components/navigation-sidebar/index.js +13 -13
- package/build-module/components/navigation-sidebar/index.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-panel/index.js +24 -24
- package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js +3 -1
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build-module/components/routes/index.js +47 -0
- package/build-module/components/routes/index.js.map +1 -0
- package/build-module/components/routes/link.js +51 -0
- package/build-module/components/routes/link.js.map +1 -0
- package/build-module/components/routes/use-title.js +44 -0
- package/build-module/components/routes/use-title.js.map +1 -0
- package/build-module/components/sidebar/default-sidebar.js +4 -2
- package/build-module/components/sidebar/default-sidebar.js.map +1 -1
- package/build-module/components/sidebar/global-styles-sidebar.js +9 -0
- package/build-module/components/sidebar/global-styles-sidebar.js.map +1 -1
- package/build-module/components/sidebar/template-card/template-areas.js +8 -4
- package/build-module/components/sidebar/template-card/template-areas.js.map +1 -1
- package/build-module/components/template-details/index.js +10 -9
- package/build-module/components/template-details/index.js.map +1 -1
- package/build-module/components/template-details/template-areas.js +24 -9
- package/build-module/components/template-details/template-areas.js.map +1 -1
- package/build-module/components/template-part-converter/convert-to-template-part.js +7 -12
- package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
- package/build-module/components/url-query-controller/index.js +40 -49
- package/build-module/components/url-query-controller/index.js.map +1 -1
- package/build-module/components/welcome-guide/editor.js +7 -1
- package/build-module/components/welcome-guide/editor.js.map +1 -1
- package/build-module/components/welcome-guide/index.js +2 -26
- package/build-module/components/welcome-guide/index.js.map +1 -1
- package/build-module/components/welcome-guide/styles.js +18 -2
- package/build-module/components/welcome-guide/styles.js.map +1 -1
- package/build-module/index.js +28 -33
- package/build-module/index.js.map +1 -1
- package/build-module/plugins/index.js +2 -18
- package/build-module/plugins/index.js.map +1 -1
- package/build-module/plugins/site-export.js +51 -0
- package/build-module/plugins/site-export.js.map +1 -0
- package/build-module/plugins/welcome-guide-menu-item.js +2 -7
- package/build-module/plugins/welcome-guide-menu-item.js.map +1 -1
- package/build-module/store/actions.js +0 -23
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/constants.js +0 -11
- package/build-module/store/constants.js.map +1 -1
- package/build-module/store/reducer.js +7 -16
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +1 -27
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/get-is-list-page.js +16 -0
- package/build-module/utils/get-is-list-page.js.map +1 -0
- package/build-module/utils/history.js +25 -0
- package/build-module/utils/history.js.map +1 -0
- package/build-style/style-rtl.css +36 -61
- package/build-style/style.css +36 -61
- package/package.json +29 -28
- package/src/components/add-new-template/new-template-part.js +29 -11
- package/src/components/add-new-template/new-template.js +26 -12
- package/src/components/app/index.js +47 -0
- package/src/components/block-editor/back-button.js +6 -14
- package/src/components/block-editor/index.js +1 -0
- package/src/components/block-editor/resizable-editor.js +1 -0
- package/src/components/block-editor/style.scss +10 -18
- package/src/components/create-template-part-modal/index.js +0 -2
- package/src/components/edit-template-part-menu-button/index.js +16 -5
- package/src/components/editor/index.js +105 -131
- package/src/components/global-styles/border-panel.js +106 -42
- package/src/components/global-styles/gradients-palette-panel.js +12 -12
- package/src/components/global-styles/screen-background-color.js +7 -10
- package/src/components/global-styles/screen-colors.js +1 -1
- package/src/components/global-styles/screen-link-color.js +6 -14
- package/src/components/global-styles/screen-root.js +17 -7
- package/src/components/global-styles/screen-text-color.js +6 -14
- package/src/components/global-styles/style.scss +6 -17
- package/src/components/global-styles/test/use-global-styles-output.js +7 -1
- package/src/components/global-styles/ui.js +50 -25
- package/src/components/global-styles/use-global-styles-output.js +0 -1
- package/src/components/header/document-actions/index.js +3 -9
- package/src/components/header/document-actions/style.scss +1 -9
- package/src/components/header/style.scss +2 -1
- package/src/components/list/actions/index.js +1 -0
- package/src/components/list/index.js +11 -12
- package/src/components/list/style.scss +6 -11
- package/src/components/list/table.js +5 -5
- package/src/components/navigation-sidebar/index.js +18 -17
- package/src/components/navigation-sidebar/navigation-panel/index.js +16 -22
- package/src/components/navigation-sidebar/navigation-toggle/index.js +2 -0
- package/src/components/routes/index.js +53 -0
- package/src/components/routes/link.js +44 -0
- package/src/components/routes/use-title.js +56 -0
- package/src/components/sidebar/default-sidebar.js +2 -0
- package/src/components/sidebar/global-styles-sidebar.js +9 -0
- package/src/components/sidebar/style.scss +21 -14
- package/src/components/sidebar/template-card/template-areas.js +16 -4
- package/src/components/template-details/index.js +8 -6
- package/src/components/template-details/template-areas.js +31 -8
- package/src/components/template-part-converter/convert-to-template-part.js +4 -2
- package/src/components/url-query-controller/index.js +34 -45
- package/src/components/welcome-guide/editor.js +10 -1
- package/src/components/welcome-guide/index.js +6 -25
- package/src/components/welcome-guide/styles.js +20 -2
- package/src/index.js +33 -36
- package/src/plugins/index.js +2 -32
- package/src/plugins/site-export.js +52 -0
- package/src/plugins/welcome-guide-menu-item.js +2 -16
- package/src/store/actions.js +0 -23
- package/src/store/constants.js +0 -12
- package/src/store/reducer.js +12 -26
- package/src/store/selectors.js +1 -27
- package/src/store/test/reducer.js +22 -39
- package/src/store/test/selectors.js +3 -34
- package/src/utils/get-is-list-page.js +11 -0
- package/src/utils/history.js +35 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { useDispatch } from '@wordpress/data';
|
|
4
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
5
5
|
import { Guide } from '@wordpress/components';
|
|
6
6
|
import { __ } from '@wordpress/i18n';
|
|
7
7
|
import { createInterpolateElement } from '@wordpress/element';
|
|
@@ -15,6 +15,15 @@ import { store as editSiteStore } from '../../store';
|
|
|
15
15
|
export default function WelcomeGuideEditor() {
|
|
16
16
|
const { toggleFeature } = useDispatch( editSiteStore );
|
|
17
17
|
|
|
18
|
+
const isActive = useSelect(
|
|
19
|
+
( select ) => select( editSiteStore ).isFeatureActive( 'welcomeGuide' ),
|
|
20
|
+
[]
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
if ( ! isActive ) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
|
|
18
27
|
return (
|
|
19
28
|
<Guide
|
|
20
29
|
className="edit-site-welcome-guide"
|
|
@@ -1,33 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { useSelect } from '@wordpress/data';
|
|
5
|
-
import { store as interfaceStore } from '@wordpress/interface';
|
|
6
|
-
|
|
7
1
|
/**
|
|
8
2
|
* Internal dependencies
|
|
9
3
|
*/
|
|
10
4
|
import WelcomeGuideEditor from './editor';
|
|
11
5
|
import WelcomeGuideStyles from './styles';
|
|
12
|
-
import { store as editSiteStore } from '../../store';
|
|
13
6
|
|
|
14
7
|
export default function WelcomeGuide() {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return {
|
|
23
|
-
isActive: select( editSiteStore ).isFeatureActive( feature ),
|
|
24
|
-
isStylesOpen: isStylesSidebar,
|
|
25
|
-
};
|
|
26
|
-
}, [] );
|
|
27
|
-
|
|
28
|
-
if ( ! isActive ) {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return isStylesOpen ? <WelcomeGuideStyles /> : <WelcomeGuideEditor />;
|
|
8
|
+
return (
|
|
9
|
+
<>
|
|
10
|
+
<WelcomeGuideEditor />
|
|
11
|
+
<WelcomeGuideStyles />
|
|
12
|
+
</>
|
|
13
|
+
);
|
|
33
14
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { useDispatch } from '@wordpress/data';
|
|
4
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
5
5
|
import { ExternalLink, Guide } from '@wordpress/components';
|
|
6
6
|
import { __ } from '@wordpress/i18n';
|
|
7
|
+
import { store as interfaceStore } from '@wordpress/interface';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Internal dependencies
|
|
@@ -14,6 +15,23 @@ import { store as editSiteStore } from '../../store';
|
|
|
14
15
|
export default function WelcomeGuideStyles() {
|
|
15
16
|
const { toggleFeature } = useDispatch( editSiteStore );
|
|
16
17
|
|
|
18
|
+
const { isActive, isStylesOpen } = useSelect( ( select ) => {
|
|
19
|
+
const sidebar = select( interfaceStore ).getActiveComplementaryArea(
|
|
20
|
+
editSiteStore.name
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
return {
|
|
24
|
+
isActive: select( editSiteStore ).isFeatureActive(
|
|
25
|
+
'welcomeGuideStyles'
|
|
26
|
+
),
|
|
27
|
+
isStylesOpen: sidebar === 'edit-site/global-styles',
|
|
28
|
+
};
|
|
29
|
+
}, [] );
|
|
30
|
+
|
|
31
|
+
if ( ! isActive || ! isStylesOpen ) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
17
35
|
return (
|
|
18
36
|
<Guide
|
|
19
37
|
className="edit-site-welcome-guide"
|
|
@@ -99,7 +117,7 @@ export default function WelcomeGuideStyles() {
|
|
|
99
117
|
) }
|
|
100
118
|
<ExternalLink
|
|
101
119
|
href={ __(
|
|
102
|
-
'https://wordpress.org/support/article/
|
|
120
|
+
'https://wordpress.org/support/article/styles-overview/'
|
|
103
121
|
) }
|
|
104
122
|
>
|
|
105
123
|
{ __(
|
package/src/index.js
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
} from '@wordpress/core-data';
|
|
15
15
|
import { store as editorStore } from '@wordpress/editor';
|
|
16
16
|
import { store as viewportStore } from '@wordpress/viewport';
|
|
17
|
+
import { getQueryArgs } from '@wordpress/url';
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Internal dependencies
|
|
@@ -21,8 +22,8 @@ import { store as viewportStore } from '@wordpress/viewport';
|
|
|
21
22
|
import './plugins';
|
|
22
23
|
import './hooks';
|
|
23
24
|
import { store as editSiteStore } from './store';
|
|
24
|
-
import
|
|
25
|
-
import
|
|
25
|
+
import EditSiteApp from './components/app';
|
|
26
|
+
import getIsListPage from './utils/get-is-list-page';
|
|
26
27
|
|
|
27
28
|
/**
|
|
28
29
|
* Reinitializes the editor after the user chooses to reboot the editor after
|
|
@@ -33,12 +34,37 @@ import List from './components/list';
|
|
|
33
34
|
* @param {?Object} settings Editor settings object.
|
|
34
35
|
*/
|
|
35
36
|
export function reinitializeEditor( target, settings ) {
|
|
37
|
+
// This will be a no-op if the target doesn't have any React nodes.
|
|
36
38
|
unmountComponentAtNode( target );
|
|
37
39
|
const reboot = reinitializeEditor.bind( null, target, settings );
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
|
|
41
|
+
// We dispatch actions and update the store synchronously before rendering
|
|
42
|
+
// so that we won't trigger unnecessary re-renders with useEffect.
|
|
43
|
+
{
|
|
44
|
+
dispatch( editSiteStore ).updateSettings( settings );
|
|
45
|
+
// Keep the defaultTemplateTypes in the core/editor settings too,
|
|
46
|
+
// so that they can be selected with core/editor selectors in any editor.
|
|
47
|
+
// This is needed because edit-site doesn't initialize with EditorProvider,
|
|
48
|
+
// which internally uses updateEditorSettings as well.
|
|
49
|
+
dispatch( editorStore ).updateEditorSettings( {
|
|
50
|
+
defaultTemplateTypes: settings.defaultTemplateTypes,
|
|
51
|
+
defaultTemplatePartAreas: settings.defaultTemplatePartAreas,
|
|
52
|
+
} );
|
|
53
|
+
|
|
54
|
+
const isLandingOnListPage = getIsListPage(
|
|
55
|
+
getQueryArgs( window.location.href )
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
if ( isLandingOnListPage ) {
|
|
59
|
+
// Default the navigation panel to be opened when we're in a bigger
|
|
60
|
+
// screen and land in the list screen.
|
|
61
|
+
dispatch( editSiteStore ).setIsNavigationPanelOpened(
|
|
62
|
+
select( viewportStore ).isViewportMatch( 'medium' )
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
render( <EditSiteApp reboot={ reboot } />, target );
|
|
42
68
|
}
|
|
43
69
|
|
|
44
70
|
/**
|
|
@@ -54,7 +80,6 @@ export function initializeEditor( id, settings ) {
|
|
|
54
80
|
settings.__experimentalSpotlightEntityBlocks = [ 'core/template-part' ];
|
|
55
81
|
|
|
56
82
|
const target = document.getElementById( id );
|
|
57
|
-
const reboot = reinitializeEditor.bind( null, target, settings );
|
|
58
83
|
|
|
59
84
|
dispatch( blocksStore ).__experimentalReapplyBlockTypeFilters();
|
|
60
85
|
registerCoreBlocks();
|
|
@@ -64,35 +89,7 @@ export function initializeEditor( id, settings ) {
|
|
|
64
89
|
} );
|
|
65
90
|
}
|
|
66
91
|
|
|
67
|
-
|
|
68
|
-
<Editor initialSettings={ settings } onError={ reboot } />,
|
|
69
|
-
target
|
|
70
|
-
);
|
|
71
|
-
}
|
|
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 );
|
|
92
|
+
reinitializeEditor( target, settings );
|
|
96
93
|
}
|
|
97
94
|
|
|
98
95
|
export { default as __experimentalMainDashboardButton } from './components/main-dashboard-button';
|
package/src/plugins/index.js
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import downloadjs from 'downloadjs';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
9
|
-
import { MenuItem } from '@wordpress/components';
|
|
10
|
-
import { __ } from '@wordpress/i18n';
|
|
11
4
|
import { registerPlugin } from '@wordpress/plugins';
|
|
12
|
-
import apiFetch from '@wordpress/api-fetch';
|
|
13
|
-
import { download } from '@wordpress/icons';
|
|
14
5
|
|
|
15
6
|
/**
|
|
16
7
|
* Internal dependencies
|
|
17
8
|
*/
|
|
18
9
|
import ToolsMoreMenuGroup from '../components/header/tools-more-menu-group';
|
|
10
|
+
import SiteExport from './site-export';
|
|
19
11
|
import WelcomeGuideMenuItem from './welcome-guide-menu-item';
|
|
20
12
|
|
|
21
13
|
registerPlugin( 'edit-site', {
|
|
@@ -23,29 +15,7 @@ registerPlugin( 'edit-site', {
|
|
|
23
15
|
return (
|
|
24
16
|
<>
|
|
25
17
|
<ToolsMoreMenuGroup>
|
|
26
|
-
<
|
|
27
|
-
role="menuitem"
|
|
28
|
-
icon={ download }
|
|
29
|
-
onClick={ () =>
|
|
30
|
-
apiFetch( {
|
|
31
|
-
path: '/wp-block-editor/v1/export',
|
|
32
|
-
parse: false,
|
|
33
|
-
} )
|
|
34
|
-
.then( ( res ) => res.blob() )
|
|
35
|
-
.then( ( blob ) =>
|
|
36
|
-
downloadjs(
|
|
37
|
-
blob,
|
|
38
|
-
'edit-site-export.zip',
|
|
39
|
-
'application/zip'
|
|
40
|
-
)
|
|
41
|
-
)
|
|
42
|
-
}
|
|
43
|
-
info={ __(
|
|
44
|
-
'Download your templates and template parts.'
|
|
45
|
-
) }
|
|
46
|
-
>
|
|
47
|
-
{ __( 'Export' ) }
|
|
48
|
-
</MenuItem>
|
|
18
|
+
<SiteExport />
|
|
49
19
|
<WelcomeGuideMenuItem />
|
|
50
20
|
</ToolsMoreMenuGroup>
|
|
51
21
|
</>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import downloadjs from 'downloadjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { __ } from '@wordpress/i18n';
|
|
10
|
+
import { MenuItem } from '@wordpress/components';
|
|
11
|
+
import apiFetch from '@wordpress/api-fetch';
|
|
12
|
+
import { download } from '@wordpress/icons';
|
|
13
|
+
import { useDispatch } from '@wordpress/data';
|
|
14
|
+
import { store as noticesStore } from '@wordpress/notices';
|
|
15
|
+
|
|
16
|
+
export default function SiteExport() {
|
|
17
|
+
const { createErrorNotice } = useDispatch( noticesStore );
|
|
18
|
+
|
|
19
|
+
async function handleExport() {
|
|
20
|
+
try {
|
|
21
|
+
const response = await apiFetch( {
|
|
22
|
+
path: '/wp-block-editor/v1/export',
|
|
23
|
+
parse: false,
|
|
24
|
+
} );
|
|
25
|
+
const blob = await response.blob();
|
|
26
|
+
|
|
27
|
+
downloadjs( blob, 'edit-site-export.zip', 'application/zip' );
|
|
28
|
+
} catch ( errorResponse ) {
|
|
29
|
+
let error = {};
|
|
30
|
+
try {
|
|
31
|
+
error = await errorResponse.json();
|
|
32
|
+
} catch ( e ) {}
|
|
33
|
+
const errorMessage =
|
|
34
|
+
error.message && error.code !== 'unknown_error'
|
|
35
|
+
? error.message
|
|
36
|
+
: __( 'An error occurred while creating the site export.' );
|
|
37
|
+
|
|
38
|
+
createErrorNotice( errorMessage, { type: 'snackbar' } );
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<MenuItem
|
|
44
|
+
role="menuitem"
|
|
45
|
+
icon={ download }
|
|
46
|
+
onClick={ handleExport }
|
|
47
|
+
info={ __( 'Download your templates and template parts.' ) }
|
|
48
|
+
>
|
|
49
|
+
{ __( 'Export' ) }
|
|
50
|
+
</MenuItem>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
|
-
import { useDispatch
|
|
5
|
+
import { useDispatch } from '@wordpress/data';
|
|
6
6
|
import { MenuItem } from '@wordpress/components';
|
|
7
|
-
import { store as interfaceStore } from '@wordpress/interface';
|
|
8
7
|
|
|
9
8
|
/**
|
|
10
9
|
* Internal dependencies
|
|
@@ -13,22 +12,9 @@ import { store as editSiteStore } from '../store';
|
|
|
13
12
|
|
|
14
13
|
export default function WelcomeGuideMenuItem() {
|
|
15
14
|
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
15
|
|
|
24
16
|
return (
|
|
25
|
-
<MenuItem
|
|
26
|
-
onClick={ () =>
|
|
27
|
-
toggleFeature(
|
|
28
|
-
isStylesOpen ? 'welcomeGuideStyles' : 'welcomeGuide'
|
|
29
|
-
)
|
|
30
|
-
}
|
|
31
|
-
>
|
|
17
|
+
<MenuItem onClick={ () => toggleFeature( 'welcomeGuide' ) }>
|
|
32
18
|
{ __( 'Welcome Guide' ) }
|
|
33
19
|
</MenuItem>
|
|
34
20
|
);
|
package/src/store/actions.js
CHANGED
|
@@ -172,20 +172,6 @@ export function setTemplatePart( templatePartId ) {
|
|
|
172
172
|
};
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
/**
|
|
176
|
-
* Returns an action object used to push a template part to navigation history.
|
|
177
|
-
*
|
|
178
|
-
* @param {string} templatePartId The template part ID.
|
|
179
|
-
*
|
|
180
|
-
* @return {Object} Action object.
|
|
181
|
-
*/
|
|
182
|
-
export function pushTemplatePart( templatePartId ) {
|
|
183
|
-
return {
|
|
184
|
-
type: 'PUSH_TEMPLATE_PART',
|
|
185
|
-
templatePartId,
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
|
|
189
175
|
/**
|
|
190
176
|
* Updates the homeTemplateId state with the templateId of the page resolved
|
|
191
177
|
* from the given path.
|
|
@@ -244,15 +230,6 @@ export function* setPage( page ) {
|
|
|
244
230
|
return templateId;
|
|
245
231
|
}
|
|
246
232
|
|
|
247
|
-
/**
|
|
248
|
-
* Go back to the current editing page.
|
|
249
|
-
*/
|
|
250
|
-
export function goBack() {
|
|
251
|
-
return {
|
|
252
|
-
type: 'GO_BACK',
|
|
253
|
-
};
|
|
254
|
-
}
|
|
255
|
-
|
|
256
233
|
/**
|
|
257
234
|
* Displays the site homepage for editing in the editor.
|
|
258
235
|
*/
|
package/src/store/constants.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { __ } from '@wordpress/i18n';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* The identifier for the data store.
|
|
8
3
|
*
|
|
@@ -14,10 +9,3 @@ export const TEMPLATE_PART_AREA_HEADER = 'header';
|
|
|
14
9
|
export const TEMPLATE_PART_AREA_FOOTER = 'footer';
|
|
15
10
|
export const TEMPLATE_PART_AREA_SIDEBAR = 'sidebar';
|
|
16
11
|
export const TEMPLATE_PART_AREA_GENERAL = 'uncategorized';
|
|
17
|
-
|
|
18
|
-
export const TEMPLATE_PART_AREA_TO_NAME = {
|
|
19
|
-
[ TEMPLATE_PART_AREA_HEADER ]: __( 'Header' ),
|
|
20
|
-
[ TEMPLATE_PART_AREA_FOOTER ]: __( 'Footer' ),
|
|
21
|
-
[ TEMPLATE_PART_AREA_SIDEBAR ]: __( 'Sidebar' ),
|
|
22
|
-
[ TEMPLATE_PART_AREA_GENERAL ]: __( 'General' ),
|
|
23
|
-
};
|
package/src/store/reducer.js
CHANGED
|
@@ -72,39 +72,25 @@ export function settings( state = {}, action ) {
|
|
|
72
72
|
* Reducer keeping track of the currently edited Post Type,
|
|
73
73
|
* Post Id and the context provided to fill the content of the block editor.
|
|
74
74
|
*
|
|
75
|
-
* @param {
|
|
75
|
+
* @param {Object} state Current edited post.
|
|
76
76
|
* @param {Object} action Dispatched action.
|
|
77
77
|
*
|
|
78
|
-
* @return {
|
|
78
|
+
* @return {Object} Updated state.
|
|
79
79
|
*/
|
|
80
|
-
export function editedPost( state =
|
|
80
|
+
export function editedPost( state = {}, action ) {
|
|
81
81
|
switch ( action.type ) {
|
|
82
82
|
case 'SET_TEMPLATE':
|
|
83
83
|
case 'SET_PAGE':
|
|
84
|
-
return
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
},
|
|
90
|
-
];
|
|
84
|
+
return {
|
|
85
|
+
type: 'wp_template',
|
|
86
|
+
id: action.templateId,
|
|
87
|
+
page: action.page,
|
|
88
|
+
};
|
|
91
89
|
case 'SET_TEMPLATE_PART':
|
|
92
|
-
return
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
},
|
|
97
|
-
];
|
|
98
|
-
case 'PUSH_TEMPLATE_PART':
|
|
99
|
-
return [
|
|
100
|
-
...state,
|
|
101
|
-
{
|
|
102
|
-
type: 'wp_template_part',
|
|
103
|
-
id: action.templatePartId,
|
|
104
|
-
},
|
|
105
|
-
];
|
|
106
|
-
case 'GO_BACK':
|
|
107
|
-
return state.slice( 0, -1 );
|
|
90
|
+
return {
|
|
91
|
+
type: 'wp_template_part',
|
|
92
|
+
id: action.templatePartId,
|
|
93
|
+
};
|
|
108
94
|
}
|
|
109
95
|
|
|
110
96
|
return state;
|
package/src/store/selectors.js
CHANGED
|
@@ -135,11 +135,7 @@ export function getHomeTemplateId( state ) {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
function getCurrentEditedPost( state ) {
|
|
138
|
-
return state.editedPost
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function getPreviousEditedPost( state ) {
|
|
142
|
-
return state.editedPost[ state.editedPost.length - 2 ] || {};
|
|
138
|
+
return state.editedPost;
|
|
143
139
|
}
|
|
144
140
|
|
|
145
141
|
/**
|
|
@@ -164,28 +160,6 @@ export function getEditedPostId( state ) {
|
|
|
164
160
|
return getCurrentEditedPost( state ).id;
|
|
165
161
|
}
|
|
166
162
|
|
|
167
|
-
/**
|
|
168
|
-
* Returns the previous edited post type (wp_template or wp_template_part).
|
|
169
|
-
*
|
|
170
|
-
* @param {Object} state Global application state.
|
|
171
|
-
*
|
|
172
|
-
* @return {TemplateType?} Template type.
|
|
173
|
-
*/
|
|
174
|
-
export function getPreviousEditedPostType( state ) {
|
|
175
|
-
return getPreviousEditedPost( state ).type;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Returns the ID of the previous edited template or template part.
|
|
180
|
-
*
|
|
181
|
-
* @param {Object} state Global application state.
|
|
182
|
-
*
|
|
183
|
-
* @return {string?} Post ID.
|
|
184
|
-
*/
|
|
185
|
-
export function getPreviousEditedPostId( state ) {
|
|
186
|
-
return getPreviousEditedPost( state ).id;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
163
|
/**
|
|
190
164
|
* Returns the current page object.
|
|
191
165
|
*
|
|
@@ -88,7 +88,7 @@ describe( 'state', () => {
|
|
|
88
88
|
|
|
89
89
|
describe( 'editedPost()', () => {
|
|
90
90
|
it( 'should apply default state', () => {
|
|
91
|
-
expect( editedPost( undefined, {} ) ).toEqual(
|
|
91
|
+
expect( editedPost( undefined, {} ) ).toEqual( {} );
|
|
92
92
|
} );
|
|
93
93
|
|
|
94
94
|
it( 'should default to returning the same state', () => {
|
|
@@ -98,56 +98,39 @@ describe( 'state', () => {
|
|
|
98
98
|
|
|
99
99
|
it( 'should update when a template is set', () => {
|
|
100
100
|
expect(
|
|
101
|
-
editedPost(
|
|
102
|
-
type: '
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
editedPost(
|
|
102
|
+
{ id: 1, type: 'wp_template' },
|
|
103
|
+
{
|
|
104
|
+
type: 'SET_TEMPLATE',
|
|
105
|
+
templateId: 2,
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
).toEqual( { id: 2, type: 'wp_template' } );
|
|
106
109
|
} );
|
|
107
110
|
|
|
108
111
|
it( 'should update when a page is set', () => {
|
|
109
112
|
expect(
|
|
110
|
-
editedPost(
|
|
111
|
-
type: '
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
editedPost(
|
|
114
|
+
{ id: 1, type: 'wp_template' },
|
|
115
|
+
{
|
|
116
|
+
type: 'SET_PAGE',
|
|
117
|
+
templateId: 2,
|
|
118
|
+
page: {},
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
).toEqual( { id: 2, type: 'wp_template', page: {} } );
|
|
116
122
|
} );
|
|
117
123
|
|
|
118
124
|
it( 'should update when a template part is set', () => {
|
|
119
|
-
expect(
|
|
120
|
-
editedPost( [ { id: 1, type: 'wp_template' } ], {
|
|
121
|
-
type: 'SET_TEMPLATE_PART',
|
|
122
|
-
templatePartId: 2,
|
|
123
|
-
} )
|
|
124
|
-
).toEqual( [ { id: 2, type: 'wp_template_part' } ] );
|
|
125
|
-
} );
|
|
126
|
-
|
|
127
|
-
it( 'should update when a template part is pushed', () => {
|
|
128
|
-
expect(
|
|
129
|
-
editedPost( [ { id: 1, type: 'wp_template' } ], {
|
|
130
|
-
type: 'PUSH_TEMPLATE_PART',
|
|
131
|
-
templatePartId: 2,
|
|
132
|
-
} )
|
|
133
|
-
).toEqual( [
|
|
134
|
-
{ id: 1, type: 'wp_template' },
|
|
135
|
-
{ id: 2, type: 'wp_template_part' },
|
|
136
|
-
] );
|
|
137
|
-
} );
|
|
138
|
-
|
|
139
|
-
it( 'should go back to the previous page', () => {
|
|
140
125
|
expect(
|
|
141
126
|
editedPost(
|
|
142
|
-
|
|
143
|
-
{ id: 1, type: 'wp_template' },
|
|
144
|
-
{ id: 2, type: 'wp_template_part' },
|
|
145
|
-
],
|
|
127
|
+
{ id: 1, type: 'wp_template' },
|
|
146
128
|
{
|
|
147
|
-
type: '
|
|
129
|
+
type: 'SET_TEMPLATE_PART',
|
|
130
|
+
templatePartId: 2,
|
|
148
131
|
}
|
|
149
132
|
)
|
|
150
|
-
).toEqual(
|
|
133
|
+
).toEqual( { id: 2, type: 'wp_template_part' } );
|
|
151
134
|
} );
|
|
152
135
|
} );
|
|
153
136
|
|
|
@@ -13,8 +13,6 @@ import {
|
|
|
13
13
|
getHomeTemplateId,
|
|
14
14
|
getEditedPostType,
|
|
15
15
|
getEditedPostId,
|
|
16
|
-
getPreviousEditedPostType,
|
|
17
|
-
getPreviousEditedPostId,
|
|
18
16
|
getPage,
|
|
19
17
|
getNavigationPanelActiveMenu,
|
|
20
18
|
getReusableBlocks,
|
|
@@ -152,51 +150,22 @@ describe( 'selectors', () => {
|
|
|
152
150
|
|
|
153
151
|
describe( 'getEditedPostId', () => {
|
|
154
152
|
it( 'returns the template ID', () => {
|
|
155
|
-
const state = { editedPost:
|
|
153
|
+
const state = { editedPost: { id: 10 } };
|
|
156
154
|
expect( getEditedPostId( state ) ).toBe( 10 );
|
|
157
155
|
} );
|
|
158
156
|
} );
|
|
159
157
|
|
|
160
158
|
describe( 'getEditedPostType', () => {
|
|
161
159
|
it( 'returns the template type', () => {
|
|
162
|
-
const state = { editedPost:
|
|
160
|
+
const state = { editedPost: { type: 'wp_template' } };
|
|
163
161
|
expect( getEditedPostType( state ) ).toBe( 'wp_template' );
|
|
164
162
|
} );
|
|
165
163
|
} );
|
|
166
164
|
|
|
167
|
-
describe( 'getPreviousEditedPostId', () => {
|
|
168
|
-
it( 'returns the previous template ID', () => {
|
|
169
|
-
const state = { editedPost: [ { id: 10 }, { id: 20 } ] };
|
|
170
|
-
expect( getPreviousEditedPostId( state ) ).toBe( 10 );
|
|
171
|
-
} );
|
|
172
|
-
|
|
173
|
-
it( 'returns undefined when there are no previous pages', () => {
|
|
174
|
-
const state = { editedPost: [ { id: 10 } ] };
|
|
175
|
-
expect( getPreviousEditedPostId( state ) ).toBeUndefined();
|
|
176
|
-
} );
|
|
177
|
-
} );
|
|
178
|
-
|
|
179
|
-
describe( 'getPreviousEditedPostType', () => {
|
|
180
|
-
it( 'returns the previous template type', () => {
|
|
181
|
-
const state = {
|
|
182
|
-
editedPost: [
|
|
183
|
-
{ type: 'wp_template' },
|
|
184
|
-
{ type: 'wp_template_part' },
|
|
185
|
-
],
|
|
186
|
-
};
|
|
187
|
-
expect( getPreviousEditedPostType( state ) ).toBe( 'wp_template' );
|
|
188
|
-
} );
|
|
189
|
-
|
|
190
|
-
it( 'returns undefined when there are no previous pages', () => {
|
|
191
|
-
const state = { editedPost: [ { type: 'wp_template' } ] };
|
|
192
|
-
expect( getPreviousEditedPostType( state ) ).toBeUndefined();
|
|
193
|
-
} );
|
|
194
|
-
} );
|
|
195
|
-
|
|
196
165
|
describe( 'getPage', () => {
|
|
197
166
|
it( 'returns the page object', () => {
|
|
198
167
|
const page = {};
|
|
199
|
-
const state = { editedPost:
|
|
168
|
+
const state = { editedPost: { page } };
|
|
200
169
|
expect( getPage( state ) ).toBe( page );
|
|
201
170
|
} );
|
|
202
171
|
} );
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns if the params match the list page route.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} params The search params.
|
|
5
|
+
* @param {string} params.postId The post ID.
|
|
6
|
+
* @param {string} params.postType The post type.
|
|
7
|
+
* @return {boolean} Is list page or not.
|
|
8
|
+
*/
|
|
9
|
+
export default function getIsListPage( { postId, postType } ) {
|
|
10
|
+
return !! ( ! postId && postType );
|
|
11
|
+
}
|