@wordpress/edit-site 3.0.9 → 3.0.10

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.
Files changed (163) hide show
  1. package/build/components/add-new-template/index.js +49 -0
  2. package/build/components/add-new-template/index.js.map +1 -0
  3. package/build/components/add-new-template/new-template-part.js +79 -0
  4. package/build/components/add-new-template/new-template-part.js.map +1 -0
  5. package/build/components/add-new-template/new-template.js +115 -0
  6. package/build/components/add-new-template/new-template.js.map +1 -0
  7. package/build/components/create-template-part-modal/index.js +115 -0
  8. package/build/components/create-template-part-modal/index.js.map +1 -0
  9. package/build/components/editor/index.js +11 -13
  10. package/build/components/editor/index.js.map +1 -1
  11. package/build/components/global-styles/global-styles-provider.js +4 -4
  12. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  13. package/build/components/global-styles/hooks.js +27 -25
  14. package/build/components/global-styles/hooks.js.map +1 -1
  15. package/build/components/global-styles/screen-block-list.js +9 -1
  16. package/build/components/global-styles/screen-block-list.js.map +1 -1
  17. package/build/components/global-styles/use-global-styles-output.js +2 -2
  18. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  19. package/build/components/global-styles/utils.js +1 -1
  20. package/build/components/global-styles/utils.js.map +1 -1
  21. package/build/components/header/index.js +1 -5
  22. package/build/components/header/index.js.map +1 -1
  23. package/build/components/list/header.js +50 -0
  24. package/build/components/list/header.js.map +1 -0
  25. package/build/components/list/index.js +55 -0
  26. package/build/components/list/index.js.map +1 -0
  27. package/build/components/list/table.js +128 -0
  28. package/build/components/list/table.js.map +1 -0
  29. package/build/components/navigation-sidebar/index.js +11 -10
  30. package/build/components/navigation-sidebar/index.js.map +1 -1
  31. package/build/components/navigation-sidebar/navigation-panel/index.js +33 -53
  32. package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  33. package/build/components/navigation-sidebar/navigation-toggle/index.js +3 -24
  34. package/build/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
  35. package/build/components/template-details/index.js +3 -2
  36. package/build/components/template-details/index.js.map +1 -1
  37. package/build/components/template-part-converter/convert-to-template-part.js +20 -84
  38. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  39. package/build/components/welcome-guide/editor.js +58 -0
  40. package/build/components/welcome-guide/editor.js.map +1 -0
  41. package/build/components/welcome-guide/image.js +27 -0
  42. package/build/components/welcome-guide/image.js.map +1 -0
  43. package/build/components/welcome-guide/index.js +49 -0
  44. package/build/components/welcome-guide/index.js.map +1 -0
  45. package/build/components/welcome-guide/styles.js +83 -0
  46. package/build/components/welcome-guide/styles.js.map +1 -0
  47. package/build/index.js +29 -5
  48. package/build/index.js.map +1 -1
  49. package/build/plugins/index.js +4 -2
  50. package/build/plugins/index.js.map +1 -1
  51. package/build/plugins/welcome-guide-menu-item.js +39 -0
  52. package/build/plugins/welcome-guide-menu-item.js.map +1 -0
  53. package/build/store/actions.js +5 -8
  54. package/build/store/actions.js.map +1 -1
  55. package/build/store/defaults.js +4 -1
  56. package/build/store/defaults.js.map +1 -1
  57. package/build/utils/is-template-removable.js +21 -0
  58. package/build/utils/is-template-removable.js.map +1 -0
  59. package/build-module/components/add-new-template/index.js +36 -0
  60. package/build-module/components/add-new-template/index.js.map +1 -0
  61. package/build-module/components/add-new-template/new-template-part.js +66 -0
  62. package/build-module/components/add-new-template/new-template-part.js.map +1 -0
  63. package/build-module/components/add-new-template/new-template.js +98 -0
  64. package/build-module/components/add-new-template/new-template.js.map +1 -0
  65. package/build-module/components/create-template-part-modal/index.js +102 -0
  66. package/build-module/components/create-template-part-modal/index.js.map +1 -0
  67. package/build-module/components/editor/index.js +9 -13
  68. package/build-module/components/editor/index.js.map +1 -1
  69. package/build-module/components/global-styles/global-styles-provider.js +4 -4
  70. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  71. package/build-module/components/global-styles/hooks.js +28 -26
  72. package/build-module/components/global-styles/hooks.js.map +1 -1
  73. package/build-module/components/global-styles/screen-block-list.js +7 -1
  74. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  75. package/build-module/components/global-styles/use-global-styles-output.js +2 -2
  76. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  77. package/build-module/components/global-styles/utils.js +1 -1
  78. package/build-module/components/global-styles/utils.js.map +1 -1
  79. package/build-module/components/header/index.js +1 -3
  80. package/build-module/components/header/index.js.map +1 -1
  81. package/build-module/components/list/header.js +37 -0
  82. package/build-module/components/list/header.js.map +1 -0
  83. package/build-module/components/list/index.js +40 -0
  84. package/build-module/components/list/index.js.map +1 -0
  85. package/build-module/components/list/table.js +112 -0
  86. package/build-module/components/list/table.js.map +1 -0
  87. package/build-module/components/navigation-sidebar/index.js +12 -8
  88. package/build-module/components/navigation-sidebar/index.js.map +1 -1
  89. package/build-module/components/navigation-sidebar/navigation-panel/index.js +35 -53
  90. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  91. package/build-module/components/navigation-sidebar/navigation-toggle/index.js +4 -24
  92. package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
  93. package/build-module/components/template-details/index.js +3 -2
  94. package/build-module/components/template-details/index.js.map +1 -1
  95. package/build-module/components/template-part-converter/convert-to-template-part.js +20 -84
  96. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  97. package/build-module/components/welcome-guide/editor.js +45 -0
  98. package/build-module/components/welcome-guide/editor.js.map +1 -0
  99. package/build-module/components/welcome-guide/image.js +19 -0
  100. package/build-module/components/welcome-guide/image.js.map +1 -0
  101. package/build-module/components/welcome-guide/index.js +35 -0
  102. package/build-module/components/welcome-guide/index.js.map +1 -0
  103. package/build-module/components/welcome-guide/styles.js +69 -0
  104. package/build-module/components/welcome-guide/styles.js.map +1 -0
  105. package/build-module/index.js +21 -1
  106. package/build-module/index.js.map +1 -1
  107. package/build-module/plugins/index.js +3 -2
  108. package/build-module/plugins/index.js.map +1 -1
  109. package/build-module/plugins/welcome-guide-menu-item.js +27 -0
  110. package/build-module/plugins/welcome-guide-menu-item.js.map +1 -0
  111. package/build-module/store/actions.js +5 -8
  112. package/build-module/store/actions.js.map +1 -1
  113. package/build-module/store/defaults.js +4 -1
  114. package/build-module/store/defaults.js.map +1 -1
  115. package/build-module/utils/is-template-removable.js +14 -0
  116. package/build-module/utils/is-template-removable.js.map +1 -0
  117. package/build-style/style-rtl.css +348 -32
  118. package/build-style/style.css +348 -32
  119. package/package.json +7 -7
  120. package/src/components/add-new-template/index.js +30 -0
  121. package/src/components/add-new-template/new-template-part.js +67 -0
  122. package/src/components/add-new-template/new-template.js +117 -0
  123. package/src/components/add-new-template/style.scss +11 -0
  124. package/src/components/create-template-part-modal/index.js +132 -0
  125. package/src/components/{template-part-converter → create-template-part-modal}/style.scss +9 -9
  126. package/src/components/editor/index.js +10 -14
  127. package/src/components/editor/style.scss +8 -0
  128. package/src/components/global-styles/global-styles-provider.js +4 -3
  129. package/src/components/global-styles/hooks.js +58 -26
  130. package/src/components/global-styles/screen-block-list.js +11 -1
  131. package/src/components/global-styles/test/use-global-styles-output.js +2 -2
  132. package/src/components/global-styles/use-global-styles-output.js +2 -2
  133. package/src/components/global-styles/utils.js +1 -1
  134. package/src/components/header/index.js +0 -6
  135. package/src/components/list/header.js +34 -0
  136. package/src/components/list/index.js +38 -0
  137. package/src/components/list/style.scss +113 -0
  138. package/src/components/list/table.js +133 -0
  139. package/src/components/navigation-sidebar/index.js +15 -8
  140. package/src/components/navigation-sidebar/navigation-panel/index.js +44 -55
  141. package/src/components/navigation-sidebar/navigation-panel/style.scss +4 -2
  142. package/src/components/navigation-sidebar/navigation-toggle/index.js +4 -28
  143. package/src/components/template-details/index.js +3 -2
  144. package/src/components/template-part-converter/convert-to-template-part.js +20 -140
  145. package/src/components/welcome-guide/editor.js +63 -0
  146. package/src/components/welcome-guide/image.js +11 -0
  147. package/src/components/welcome-guide/index.js +33 -0
  148. package/src/components/welcome-guide/style.scss +37 -0
  149. package/src/components/welcome-guide/styles.js +116 -0
  150. package/src/index.js +21 -1
  151. package/src/plugins/index.js +3 -1
  152. package/src/plugins/welcome-guide-menu-item.js +35 -0
  153. package/src/store/actions.js +11 -9
  154. package/src/store/defaults.js +4 -1
  155. package/src/store/test/actions.js +14 -20
  156. package/src/style.scss +9 -6
  157. package/src/utils/is-template-removable.js +13 -0
  158. package/build/components/header/navigation-link/index.js +0 -87
  159. package/build/components/header/navigation-link/index.js.map +0 -1
  160. package/build-module/components/header/navigation-link/index.js +0 -74
  161. package/build-module/components/header/navigation-link/index.js.map +0 -1
  162. package/src/components/header/navigation-link/index.js +0 -71
  163. package/src/components/header/navigation-link/style.scss +0 -69
@@ -0,0 +1,34 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect } from '@wordpress/data';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+ import { __experimentalHeading as Heading } from '@wordpress/components';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import AddNewTemplate from '../add-new-template';
12
+
13
+ export default function Header( { templateType } ) {
14
+ const postType = useSelect(
15
+ ( select ) => select( coreStore ).getPostType( templateType ),
16
+ [ templateType ]
17
+ );
18
+
19
+ if ( ! postType ) {
20
+ return null;
21
+ }
22
+
23
+ return (
24
+ <header className="edit-site-list-header">
25
+ <Heading level={ 1 } className="edit-site-list-header__title">
26
+ { postType.labels?.name }
27
+ </Heading>
28
+
29
+ <div className="edit-site-list-header__right">
30
+ <AddNewTemplate templateType={ templateType } />
31
+ </div>
32
+ </header>
33
+ );
34
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { InterfaceSkeleton } from '@wordpress/interface';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { useViewportMatch } from '@wordpress/compose';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import Header from './header';
12
+ import NavigationSidebar from '../navigation-sidebar';
13
+ import Table from './table';
14
+
15
+ export default function List( { templateType } ) {
16
+ const isDesktopViewport = useViewportMatch( 'medium' );
17
+
18
+ return (
19
+ <InterfaceSkeleton
20
+ className="edit-site-list"
21
+ labels={ {
22
+ drawer: __( 'Navigation Sidebar' ),
23
+ } }
24
+ header={ <Header templateType={ templateType } /> }
25
+ drawer={
26
+ <NavigationSidebar
27
+ defaultIsOpen={ isDesktopViewport }
28
+ activeTemplateType={ templateType }
29
+ />
30
+ }
31
+ content={
32
+ <main className="edit-site-list-main">
33
+ <Table templateType={ templateType } />
34
+ </main>
35
+ }
36
+ />
37
+ );
38
+ }
@@ -0,0 +1,113 @@
1
+ .edit-site-list-header {
2
+ position: relative;
3
+ align-items: center;
4
+ background-color: $white;
5
+ display: flex;
6
+ height: $header-height;
7
+ box-sizing: border-box;
8
+ width: 100%;
9
+ justify-content: flex-end;
10
+ padding-right: $grid-unit-20;
11
+
12
+ body.is-fullscreen-mode & {
13
+ padding-left: 60px;
14
+ transition: padding-left 20ms linear;
15
+ transition-delay: 80ms;
16
+ @include reduce-motion("transition");
17
+ }
18
+
19
+ .edit-site-list-header__title {
20
+ position: absolute;
21
+ left: 0;
22
+ width: 100%;
23
+ text-align: center;
24
+ font-size: 20px;
25
+ padding: 0;
26
+ margin: 0;
27
+ }
28
+ }
29
+
30
+ .edit-site-list-header__right {
31
+ // Creating a stacking context so that it won't be covered by title.
32
+ position: relative;
33
+ }
34
+
35
+ .edit-site {
36
+ .edit-site-list {
37
+ .interface-interface-skeleton__editor {
38
+ min-width: 100%;
39
+
40
+ @include break-medium() {
41
+ min-width: 0;
42
+ }
43
+ }
44
+
45
+ .interface-interface-skeleton__content {
46
+ background: $white;
47
+ }
48
+ }
49
+ }
50
+
51
+ .edit-site-list-main {
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ padding: $grid-unit-20;
56
+
57
+ @include break-medium() {
58
+ padding: $grid-unit * 9;
59
+ }
60
+ }
61
+
62
+ .edit-site-list-table {
63
+ width: 100%;
64
+ border: $border-width solid $gray-200;
65
+ border-radius: 2px;
66
+ margin: 0;
67
+ overflow: hidden;
68
+
69
+ li {
70
+ display: flex;
71
+ align-items: center;
72
+ padding: $grid-unit-20;
73
+ box-sizing: border-box;
74
+ border-top: $border-width solid $gray-100;
75
+ margin: 0;
76
+
77
+ @include break-medium() {
78
+ padding: $grid-unit-30 $grid-unit-40;
79
+ }
80
+
81
+ .edit-site-list-table-column:nth-child(1) {
82
+ width: calc(60% - 36px);
83
+
84
+ a {
85
+ display: block;
86
+ text-decoration: none;
87
+ font-weight: 500;
88
+ margin-bottom: $grid-unit-05;
89
+ }
90
+ }
91
+
92
+ .edit-site-list-table-column:nth-child(2) {
93
+ width: calc(40% - 36px);
94
+ }
95
+
96
+ .edit-site-list-table-column:nth-child(3) {
97
+ min-width: $button-size;
98
+ }
99
+ }
100
+
101
+ li.edit-site-list-table-head {
102
+ border-bottom: $border-width solid $gray-200;
103
+ font-size: 16px;
104
+ font-weight: 500;
105
+ text-align: left;
106
+ color: $black;
107
+ border-top: none;
108
+
109
+ & + li {
110
+ border-top: 0;
111
+ }
112
+ }
113
+ }
@@ -0,0 +1,133 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect, useDispatch } from '@wordpress/data';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+ import { __, sprintf } from '@wordpress/i18n';
7
+ import {
8
+ VisuallyHidden,
9
+ FlexItem,
10
+ __experimentalHStack as HStack,
11
+ __experimentalHeading as Heading,
12
+ DropdownMenu,
13
+ MenuGroup,
14
+ MenuItem,
15
+ } from '@wordpress/components';
16
+ import { moreVertical } from '@wordpress/icons';
17
+ import { addQueryArgs } from '@wordpress/url';
18
+
19
+ /**
20
+ * Internal dependencies
21
+ */
22
+ import { store as editSiteStore } from '../../store';
23
+ import isTemplateRemovable from '../../utils/is-template-removable';
24
+
25
+ function Actions( { template, onClose } ) {
26
+ const { removeTemplate } = useDispatch( editSiteStore );
27
+
28
+ return (
29
+ <MenuGroup>
30
+ <MenuItem
31
+ onClick={ () => {
32
+ removeTemplate( template );
33
+ onClose();
34
+ } }
35
+ >
36
+ { __( 'Remove template' ) }
37
+ </MenuItem>
38
+ </MenuGroup>
39
+ );
40
+ }
41
+
42
+ export default function Table( { templateType } ) {
43
+ const { templates, isLoading, postType } = useSelect(
44
+ ( select ) => {
45
+ const {
46
+ getEntityRecords,
47
+ hasFinishedResolution,
48
+ getPostType,
49
+ } = select( coreStore );
50
+
51
+ return {
52
+ templates: getEntityRecords( 'postType', templateType ),
53
+ isLoading: ! hasFinishedResolution( 'getEntityRecords', [
54
+ 'postType',
55
+ templateType,
56
+ ] ),
57
+ postType: getPostType( templateType ),
58
+ };
59
+ },
60
+ [ templateType ]
61
+ );
62
+
63
+ if ( ! templates || isLoading ) {
64
+ return null;
65
+ }
66
+
67
+ if ( ! templates.length ) {
68
+ return (
69
+ <div>
70
+ { sprintf(
71
+ // translators: The template type name, should be either "templates" or "template parts".
72
+ __( 'No %s found.' ),
73
+ postType?.labels?.name?.toLowerCase()
74
+ ) }
75
+ </div>
76
+ );
77
+ }
78
+
79
+ return (
80
+ <ul className="edit-site-list-table">
81
+ <HStack className="edit-site-list-table-head" as="li">
82
+ <FlexItem className="edit-site-list-table-column">
83
+ <Heading level={ 4 }>{ __( 'Template' ) }</Heading>
84
+ </FlexItem>
85
+ <FlexItem className="edit-site-list-table-column">
86
+ <Heading level={ 4 }>{ __( 'Added by' ) }</Heading>
87
+ </FlexItem>
88
+ <FlexItem className="edit-site-list-table-column">
89
+ <VisuallyHidden>{ __( 'Actions' ) }</VisuallyHidden>
90
+ </FlexItem>
91
+ </HStack>
92
+
93
+ { templates.map( ( template ) => (
94
+ <li key={ template.id }>
95
+ <HStack className="edit-site-list-table-row">
96
+ <FlexItem className="edit-site-list-table-column">
97
+ <a
98
+ href={ addQueryArgs( '', {
99
+ page: 'gutenberg-edit-site',
100
+ postId: template.id,
101
+ postType: template.type,
102
+ } ) }
103
+ >
104
+ { template.title.rendered }
105
+ </a>
106
+ { template.description }
107
+ </FlexItem>
108
+
109
+ <FlexItem className="edit-site-list-table-column">
110
+ { template.theme }
111
+ </FlexItem>
112
+ <FlexItem className="edit-site-list-table-column">
113
+ { isTemplateRemovable( template ) && (
114
+ <DropdownMenu
115
+ icon={ moreVertical }
116
+ label={ __( 'Actions' ) }
117
+ className="edit-site-list-table__actions"
118
+ >
119
+ { ( { onClose } ) => (
120
+ <Actions
121
+ template={ template }
122
+ onClose={ onClose }
123
+ />
124
+ ) }
125
+ </DropdownMenu>
126
+ ) }
127
+ </FlexItem>
128
+ </HStack>
129
+ </li>
130
+ ) ) }
131
+ </ul>
132
+ );
133
+ }
@@ -1,30 +1,37 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
+ import { useState } from '@wordpress/element';
4
5
  import { createSlotFill } from '@wordpress/components';
5
- import { useSelect } from '@wordpress/data';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
10
  import NavigationPanel from './navigation-panel';
11
11
  import NavigationToggle from './navigation-toggle';
12
- import { store as editSiteStore } from '../../store';
13
12
 
14
13
  export const {
15
14
  Fill: NavigationPanelPreviewFill,
16
15
  Slot: NavigationPanelPreviewSlot,
17
16
  } = createSlotFill( 'EditSiteNavigationPanelPreview' );
18
17
 
19
- export default function NavigationSidebar() {
20
- const isNavigationOpen = useSelect( ( select ) => {
21
- return select( editSiteStore ).isNavigationOpened();
22
- }, [] );
18
+ export default function NavigationSidebar( {
19
+ defaultIsOpen = false,
20
+ activeTemplateType,
21
+ } ) {
22
+ const [ isNavigationOpen, setIsNavigationOpen ] = useState( defaultIsOpen );
23
23
 
24
24
  return (
25
25
  <>
26
- <NavigationToggle isOpen={ isNavigationOpen } />
27
- <NavigationPanel isOpen={ isNavigationOpen } />
26
+ <NavigationToggle
27
+ isOpen={ isNavigationOpen }
28
+ setIsOpen={ setIsNavigationOpen }
29
+ />
30
+ <NavigationPanel
31
+ isOpen={ isNavigationOpen }
32
+ setIsOpen={ setIsNavigationOpen }
33
+ activeTemplateType={ activeTemplateType }
34
+ />
28
35
  <NavigationPanelPreviewSlot />
29
36
  </>
30
37
  );
@@ -9,64 +9,33 @@ import classnames from 'classnames';
9
9
  import {
10
10
  __experimentalNavigation as Navigation,
11
11
  __experimentalNavigationBackButton as NavigationBackButton,
12
+ __experimentalNavigationGroup as NavigationGroup,
13
+ __experimentalNavigationItem as NavigationItem,
14
+ __experimentalNavigationMenu as NavigationMenu,
12
15
  } from '@wordpress/components';
13
16
  import { store as coreDataStore } from '@wordpress/core-data';
14
- import { useSelect, useDispatch } from '@wordpress/data';
17
+ import { useSelect } from '@wordpress/data';
15
18
  import { useEffect, useRef } from '@wordpress/element';
16
19
  import { __ } from '@wordpress/i18n';
17
20
  import { ESCAPE } from '@wordpress/keycodes';
18
21
  import { decodeEntities } from '@wordpress/html-entities';
22
+ import { addQueryArgs } from '@wordpress/url';
19
23
 
20
24
  /**
21
25
  * Internal dependencies
22
26
  */
23
- import SiteMenu from './menus';
24
27
  import MainDashboardButton from '../../main-dashboard-button';
25
- import { store as editSiteStore } from '../../../store';
26
- import { MENU_ROOT } from './constants';
27
28
 
28
- const NavigationPanel = ( { isOpen } ) => {
29
- const {
30
- page: { context: { postType, postId } = {} } = {},
31
- editedPostId,
32
- editedPostType,
33
- activeMenu,
34
- siteTitle,
35
- } = useSelect( ( select ) => {
36
- const {
37
- getEditedPostType,
38
- getEditedPostId,
39
- getNavigationPanelActiveMenu,
40
- getPage,
41
- } = select( editSiteStore );
29
+ const NavigationPanel = ( { isOpen, setIsOpen, activeTemplateType } ) => {
30
+ const siteTitle = useSelect( ( select ) => {
42
31
  const { getEntityRecord } = select( coreDataStore );
43
32
 
44
33
  const siteData =
45
34
  getEntityRecord( 'root', '__unstableBase', undefined ) || {};
46
35
 
47
- return {
48
- page: getPage(),
49
- editedPostId: getEditedPostId(),
50
- editedPostType: getEditedPostType(),
51
- activeMenu: getNavigationPanelActiveMenu(),
52
- siteTitle: siteData.name,
53
- };
36
+ return siteData.name;
54
37
  }, [] );
55
38
 
56
- const {
57
- setNavigationPanelActiveMenu: setActive,
58
- setIsNavigationPanelOpened,
59
- } = useDispatch( editSiteStore );
60
-
61
- let activeItem;
62
- if ( activeMenu !== MENU_ROOT ) {
63
- if ( activeMenu.startsWith( 'content' ) ) {
64
- activeItem = `${ postType }-${ postId }`;
65
- } else {
66
- activeItem = `${ editedPostType }-${ editedPostId }`;
67
- }
68
- }
69
-
70
39
  // Ensures focus is moved to the panel area when it is activated
71
40
  // from a separate component (such as document actions in the header).
72
41
  const panelRef = useRef();
@@ -74,12 +43,12 @@ const NavigationPanel = ( { isOpen } ) => {
74
43
  if ( isOpen ) {
75
44
  panelRef.current.focus();
76
45
  }
77
- }, [ activeMenu, isOpen ] );
46
+ }, [ activeTemplateType, isOpen ] );
78
47
 
79
48
  const closeOnEscape = ( event ) => {
80
49
  if ( event.keyCode === ESCAPE && ! event.defaultPrevented ) {
81
50
  event.preventDefault();
82
- setIsNavigationPanelOpened( false );
51
+ setIsOpen( false );
83
52
  }
84
53
  };
85
54
 
@@ -100,21 +69,41 @@ const NavigationPanel = ( { isOpen } ) => {
100
69
  </div>
101
70
  </div>
102
71
  <div className="edit-site-navigation-panel__scroll-container">
103
- <Navigation
104
- activeItem={ activeItem }
105
- activeMenu={ activeMenu }
106
- onActivateMenu={ setActive }
107
- >
108
- { activeMenu === MENU_ROOT && (
109
- <MainDashboardButton.Slot>
110
- <NavigationBackButton
111
- backButtonLabel={ __( 'Dashboard' ) }
112
- className="edit-site-navigation-panel__back-to-dashboard"
113
- href="index.php"
72
+ <Navigation activeItem={ activeTemplateType }>
73
+ <MainDashboardButton.Slot>
74
+ <NavigationBackButton
75
+ backButtonLabel={ __( 'Dashboard' ) }
76
+ className="edit-site-navigation-panel__back-to-dashboard"
77
+ href="index.php"
78
+ />
79
+ </MainDashboardButton.Slot>
80
+
81
+ <NavigationMenu>
82
+ <NavigationGroup title={ __( 'Editor' ) }>
83
+ <NavigationItem
84
+ title={ __( 'Site' ) }
85
+ href={ addQueryArgs( '', {
86
+ page: 'gutenberg-edit-site',
87
+ } ) }
88
+ />
89
+ <NavigationItem
90
+ title={ __( 'Templates' ) }
91
+ item="wp_template"
92
+ href={ addQueryArgs( '', {
93
+ page: 'gutenberg-edit-site',
94
+ postType: 'wp_template',
95
+ } ) }
96
+ />
97
+ <NavigationItem
98
+ title={ __( 'Template Parts' ) }
99
+ item="wp_template_part"
100
+ href={ addQueryArgs( '', {
101
+ page: 'gutenberg-edit-site',
102
+ postType: 'wp_template_part',
103
+ } ) }
114
104
  />
115
- </MainDashboardButton.Slot>
116
- ) }
117
- <SiteMenu />
105
+ </NavigationGroup>
106
+ </NavigationMenu>
118
107
  </Navigation>
119
108
  </div>
120
109
  </div>
@@ -9,8 +9,10 @@
9
9
  @include reduce-motion("transition");
10
10
 
11
11
  // Footer is visible from medium so we subtract footer's height
12
- @include break-medium() {
13
- height: calc(100% - #{$button-size-small + $border-width});
12
+ .interface-interface-skeleton.has-footer & {
13
+ @include break-medium() {
14
+ height: calc(100% - #{$button-size-small + $border-width});
15
+ }
14
16
  }
15
17
  }
16
18
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useDispatch, useSelect } from '@wordpress/data';
4
+ import { useSelect } from '@wordpress/data';
5
5
  import {
6
6
  Button,
7
7
  Icon,
@@ -12,20 +12,8 @@ import { wordpress } from '@wordpress/icons';
12
12
  import { store as coreDataStore } from '@wordpress/core-data';
13
13
  import { useReducedMotion } from '@wordpress/compose';
14
14
 
15
- /**
16
- * Internal dependencies
17
- */
18
- import { store as editSiteStore } from '../../../store';
19
-
20
- function NavigationToggle( { icon, isOpen } ) {
21
- const {
22
- isRequestingSiteIcon,
23
- navigationPanelMenu,
24
- siteIconUrl,
25
- } = useSelect( ( select ) => {
26
- const { getCurrentTemplateNavigationPanelSubMenu } = select(
27
- editSiteStore
28
- );
15
+ function NavigationToggle( { icon, isOpen, setIsOpen } ) {
16
+ const { isRequestingSiteIcon, siteIconUrl } = useSelect( ( select ) => {
29
17
  const { getEntityRecord, isResolving } = select( coreDataStore );
30
18
  const siteData =
31
19
  getEntityRecord( 'root', '__unstableBase', undefined ) || {};
@@ -36,25 +24,13 @@ function NavigationToggle( { icon, isOpen } ) {
36
24
  '__unstableBase',
37
25
  undefined,
38
26
  ] ),
39
- navigationPanelMenu: getCurrentTemplateNavigationPanelSubMenu(),
40
27
  siteIconUrl: siteData.site_icon_url,
41
28
  };
42
29
  }, [] );
43
30
 
44
- const {
45
- openNavigationPanelToMenu,
46
- setIsNavigationPanelOpened,
47
- } = useDispatch( editSiteStore );
48
-
49
31
  const disableMotion = useReducedMotion();
50
32
 
51
- const toggleNavigationPanel = () => {
52
- if ( isOpen ) {
53
- setIsNavigationPanelOpened( false );
54
- return;
55
- }
56
- openNavigationPanelToMenu( navigationPanelMenu );
57
- };
33
+ const toggleNavigationPanel = () => setIsOpen( ( open ) => ! open );
58
34
 
59
35
  let buttonIcon = <Icon size="36px" icon={ wordpress } />;
60
36
 
@@ -90,9 +90,10 @@ export default function TemplateDetails( { template, onClose } ) {
90
90
 
91
91
  <Button
92
92
  className="edit-site-template-details__show-all-button"
93
- href={ addQueryArgs( 'edit.php', {
93
+ href={ addQueryArgs( '', {
94
+ page: 'gutenberg-edit-site',
94
95
  // TODO: We should update this to filter by template part's areas as well.
95
- post_type: template.type,
96
+ postType: template.type,
96
97
  } ) }
97
98
  >
98
99
  { sprintf(