@wordpress/edit-site 5.4.0 → 5.5.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.
Files changed (244) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +12 -3
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/new-template-part.js +8 -7
  5. package/build/components/add-new-template/new-template-part.js.map +1 -1
  6. package/build/components/add-new-template/new-template.js +3 -6
  7. package/build/components/add-new-template/new-template.js.map +1 -1
  8. package/build/components/editor/index.js +3 -3
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/border-panel.js +1 -1
  11. package/build/components/global-styles/border-panel.js.map +1 -1
  12. package/build/components/global-styles/context-menu.js +11 -8
  13. package/build/components/global-styles/context-menu.js.map +1 -1
  14. package/build/components/global-styles/dimensions-panel.js +41 -487
  15. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  16. package/build/components/global-styles/duotone-panel.js +78 -0
  17. package/build/components/global-styles/duotone-panel.js.map +1 -0
  18. package/build/components/global-styles/filter-utils.js +17 -0
  19. package/build/components/global-styles/filter-utils.js.map +1 -0
  20. package/build/components/global-styles/preview.js +9 -5
  21. package/build/components/global-styles/preview.js.map +1 -1
  22. package/build/components/global-styles/screen-block-list.js +4 -8
  23. package/build/components/global-styles/screen-block-list.js.map +1 -1
  24. package/build/components/global-styles/screen-border.js +1 -1
  25. package/build/components/global-styles/screen-border.js.map +1 -1
  26. package/build/components/global-styles/screen-filters.js +46 -0
  27. package/build/components/global-styles/screen-filters.js.map +1 -0
  28. package/build/components/global-styles/screen-layout.js +13 -5
  29. package/build/components/global-styles/screen-layout.js.map +1 -1
  30. package/build/components/global-styles/screen-variations.js +1 -1
  31. package/build/components/global-styles/screen-variations.js.map +1 -1
  32. package/build/components/global-styles/shadow-panel.js +6 -4
  33. package/build/components/global-styles/shadow-panel.js.map +1 -1
  34. package/build/components/global-styles/typography-panel.js +2 -5
  35. package/build/components/global-styles/typography-panel.js.map +1 -1
  36. package/build/components/global-styles/ui.js +7 -1
  37. package/build/components/global-styles/ui.js.map +1 -1
  38. package/build/components/keyboard-shortcut-help-modal/config.js +12 -0
  39. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  40. package/build/components/keyboard-shortcuts/edit-mode.js +124 -0
  41. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -0
  42. package/build/components/keyboard-shortcuts/global.js +48 -0
  43. package/build/components/keyboard-shortcuts/global.js.map +1 -0
  44. package/build/components/keyboard-shortcuts/index.js +67 -0
  45. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  46. package/build/components/keyboard-shortcuts/register.js +153 -0
  47. package/build/components/keyboard-shortcuts/register.js.map +1 -0
  48. package/build/components/layout/index.js +5 -1
  49. package/build/components/layout/index.js.map +1 -1
  50. package/build/components/list/added-by.js +41 -42
  51. package/build/components/list/added-by.js.map +1 -1
  52. package/build/components/list/table.js +3 -2
  53. package/build/components/list/table.js.map +1 -1
  54. package/build/components/navigation-inspector/navigation-menu.js +22 -5
  55. package/build/components/navigation-inspector/navigation-menu.js.map +1 -1
  56. package/build/components/save-button/index.js +5 -2
  57. package/build/components/save-button/index.js.map +1 -1
  58. package/build/components/save-panel/index.js +11 -1
  59. package/build/components/save-panel/index.js.map +1 -1
  60. package/build/components/sidebar/index.js +28 -16
  61. package/build/components/sidebar/index.js.map +1 -1
  62. package/build/components/sidebar-button/index.js +30 -0
  63. package/build/components/sidebar-button/index.js.map +1 -0
  64. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +8 -2
  65. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  66. package/build/components/sidebar-navigation-screen/index.js +10 -10
  67. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  68. package/build/components/sidebar-navigation-screen-main/index.js +3 -3
  69. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  70. package/build/components/sidebar-navigation-screen-navigation-item/index.js +17 -16
  71. package/build/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  72. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +10 -4
  73. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  74. package/build/components/sidebar-navigation-screen-template/index.js +9 -19
  75. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  76. package/build/components/sidebar-navigation-screen-templates/index.js +25 -15
  77. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  78. package/build/components/sidebar-navigation-screen-templates-browse/index.js +8 -7
  79. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  80. package/build/components/style-book/index.js +17 -2
  81. package/build/components/style-book/index.js.map +1 -1
  82. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +36 -34
  83. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  84. package/build/components/sync-state-with-url/use-sync-path-with-url.js +65 -18
  85. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  86. package/build/components/template-details/index.js +7 -9
  87. package/build/components/template-details/index.js.map +1 -1
  88. package/build/index.js +10 -22
  89. package/build/index.js.map +1 -1
  90. package/build/store/actions.js +2 -2
  91. package/build/store/actions.js.map +1 -1
  92. package/build/utils/get-is-list-page.js +1 -1
  93. package/build/utils/get-is-list-page.js.map +1 -1
  94. package/build-module/components/add-new-template/add-custom-template-modal.js +13 -4
  95. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  96. package/build-module/components/add-new-template/new-template-part.js +8 -7
  97. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  98. package/build-module/components/add-new-template/new-template.js +3 -6
  99. package/build-module/components/add-new-template/new-template.js.map +1 -1
  100. package/build-module/components/editor/index.js +3 -3
  101. package/build-module/components/editor/index.js.map +1 -1
  102. package/build-module/components/global-styles/border-panel.js +1 -1
  103. package/build-module/components/global-styles/border-panel.js.map +1 -1
  104. package/build-module/components/global-styles/context-menu.js +12 -9
  105. package/build-module/components/global-styles/context-menu.js.map +1 -1
  106. package/build-module/components/global-styles/dimensions-panel.js +43 -480
  107. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  108. package/build-module/components/global-styles/duotone-panel.js +67 -0
  109. package/build-module/components/global-styles/duotone-panel.js.map +1 -0
  110. package/build-module/components/global-styles/filter-utils.js +9 -0
  111. package/build-module/components/global-styles/filter-utils.js.map +1 -0
  112. package/build-module/components/global-styles/preview.js +10 -6
  113. package/build-module/components/global-styles/preview.js.map +1 -1
  114. package/build-module/components/global-styles/screen-block-list.js +4 -6
  115. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  116. package/build-module/components/global-styles/screen-border.js +1 -1
  117. package/build-module/components/global-styles/screen-border.js.map +1 -1
  118. package/build-module/components/global-styles/screen-filters.js +33 -0
  119. package/build-module/components/global-styles/screen-filters.js.map +1 -0
  120. package/build-module/components/global-styles/screen-layout.js +11 -2
  121. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  122. package/build-module/components/global-styles/screen-variations.js +1 -1
  123. package/build-module/components/global-styles/screen-variations.js.map +1 -1
  124. package/build-module/components/global-styles/shadow-panel.js +6 -4
  125. package/build-module/components/global-styles/shadow-panel.js.map +1 -1
  126. package/build-module/components/global-styles/typography-panel.js +2 -5
  127. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  128. package/build-module/components/global-styles/ui.js +6 -1
  129. package/build-module/components/global-styles/ui.js.map +1 -1
  130. package/build-module/components/keyboard-shortcut-help-modal/config.js +12 -0
  131. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  132. package/build-module/components/keyboard-shortcuts/edit-mode.js +108 -0
  133. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -0
  134. package/build-module/components/keyboard-shortcuts/global.js +37 -0
  135. package/build-module/components/keyboard-shortcuts/global.js.map +1 -0
  136. package/build-module/components/keyboard-shortcuts/index.js +65 -0
  137. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  138. package/build-module/components/keyboard-shortcuts/register.js +141 -0
  139. package/build-module/components/keyboard-shortcuts/register.js.map +1 -0
  140. package/build-module/components/layout/index.js +3 -1
  141. package/build-module/components/layout/index.js.map +1 -1
  142. package/build-module/components/list/added-by.js +43 -44
  143. package/build-module/components/list/added-by.js.map +1 -1
  144. package/build-module/components/list/table.js +3 -2
  145. package/build-module/components/list/table.js.map +1 -1
  146. package/build-module/components/navigation-inspector/navigation-menu.js +25 -8
  147. package/build-module/components/navigation-inspector/navigation-menu.js.map +1 -1
  148. package/build-module/components/save-button/index.js +5 -2
  149. package/build-module/components/save-button/index.js.map +1 -1
  150. package/build-module/components/save-panel/index.js +8 -1
  151. package/build-module/components/save-panel/index.js.map +1 -1
  152. package/build-module/components/sidebar/index.js +25 -18
  153. package/build-module/components/sidebar/index.js.map +1 -1
  154. package/build-module/components/sidebar-button/index.js +18 -0
  155. package/build-module/components/sidebar-button/index.js.map +1 -0
  156. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +8 -2
  157. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  158. package/build-module/components/sidebar-navigation-screen/index.js +8 -11
  159. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  160. package/build-module/components/sidebar-navigation-screen-main/index.js +3 -3
  161. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  162. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js +16 -17
  163. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  164. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +10 -4
  165. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  166. package/build-module/components/sidebar-navigation-screen-template/index.js +8 -18
  167. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  168. package/build-module/components/sidebar-navigation-screen-templates/index.js +23 -16
  169. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  170. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +7 -7
  171. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  172. package/build-module/components/style-book/index.js +17 -3
  173. package/build-module/components/style-book/index.js.map +1 -1
  174. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +36 -34
  175. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  176. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +63 -18
  177. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  178. package/build-module/components/template-details/index.js +7 -8
  179. package/build-module/components/template-details/index.js.map +1 -1
  180. package/build-module/index.js +12 -22
  181. package/build-module/index.js.map +1 -1
  182. package/build-module/store/actions.js +2 -2
  183. package/build-module/store/actions.js.map +1 -1
  184. package/build-module/utils/get-is-list-page.js +1 -1
  185. package/build-module/utils/get-is-list-page.js.map +1 -1
  186. package/build-style/style-rtl.css +41 -38
  187. package/build-style/style.css +41 -38
  188. package/package.json +31 -31
  189. package/src/components/add-new-template/add-custom-template-modal.js +14 -10
  190. package/src/components/add-new-template/new-template-part.js +7 -9
  191. package/src/components/add-new-template/new-template.js +3 -6
  192. package/src/components/add-new-template/style.scss +0 -5
  193. package/src/components/block-editor/style.scss +1 -1
  194. package/src/components/editor/index.js +4 -3
  195. package/src/components/editor/style.scss +0 -6
  196. package/src/components/global-styles/border-panel.js +1 -1
  197. package/src/components/global-styles/context-menu.js +16 -10
  198. package/src/components/global-styles/dimensions-panel.js +43 -577
  199. package/src/components/global-styles/duotone-panel.js +82 -0
  200. package/src/components/global-styles/filter-utils.js +9 -0
  201. package/src/components/global-styles/preview.js +155 -140
  202. package/src/components/global-styles/screen-block-list.js +4 -9
  203. package/src/components/global-styles/screen-border.js +1 -1
  204. package/src/components/global-styles/screen-filters.js +27 -0
  205. package/src/components/global-styles/screen-layout.js +9 -2
  206. package/src/components/global-styles/screen-variations.js +0 -1
  207. package/src/components/global-styles/shadow-panel.js +4 -3
  208. package/src/components/global-styles/typography-panel.js +5 -7
  209. package/src/components/global-styles/ui.js +6 -1
  210. package/src/components/keyboard-shortcut-help-modal/config.js +10 -0
  211. package/src/components/keyboard-shortcuts/edit-mode.js +116 -0
  212. package/src/components/keyboard-shortcuts/global.js +35 -0
  213. package/src/components/keyboard-shortcuts/index.js +70 -0
  214. package/src/components/keyboard-shortcuts/register.js +157 -0
  215. package/src/components/layout/index.js +4 -0
  216. package/src/components/layout/style.scss +8 -1
  217. package/src/components/list/added-by.js +48 -55
  218. package/src/components/list/style.scss +5 -13
  219. package/src/components/list/table.js +4 -5
  220. package/src/components/navigation-inspector/navigation-menu.js +24 -6
  221. package/src/components/save-button/index.js +2 -2
  222. package/src/components/save-panel/index.js +8 -1
  223. package/src/components/sidebar/index.js +32 -14
  224. package/src/components/sidebar-button/index.js +21 -0
  225. package/src/components/sidebar-button/style.scss +23 -0
  226. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +3 -7
  227. package/src/components/sidebar-edit-mode/style.scss +16 -0
  228. package/src/components/sidebar-navigation-screen/index.js +31 -38
  229. package/src/components/sidebar-navigation-screen/style.scss +1 -9
  230. package/src/components/sidebar-navigation-screen-main/index.js +3 -3
  231. package/src/components/sidebar-navigation-screen-navigation-item/index.js +24 -20
  232. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +7 -3
  233. package/src/components/sidebar-navigation-screen-template/index.js +7 -19
  234. package/src/components/sidebar-navigation-screen-templates/index.js +22 -14
  235. package/src/components/sidebar-navigation-screen-templates/style.scss +0 -5
  236. package/src/components/sidebar-navigation-screen-templates-browse/index.js +6 -11
  237. package/src/components/style-book/index.js +25 -1
  238. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +28 -23
  239. package/src/components/sync-state-with-url/use-sync-path-with-url.js +72 -17
  240. package/src/components/template-details/index.js +5 -6
  241. package/src/index.js +6 -21
  242. package/src/store/actions.js +2 -2
  243. package/src/style.scss +1 -0
  244. package/src/utils/get-is-list-page.js +1 -1
@@ -2,6 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
+ import { __experimentalUseNavigator as useNavigator } from '@wordpress/components';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -10,22 +11,16 @@ import SidebarNavigationScreen from '../sidebar-navigation-screen';
10
11
 
11
12
  const config = {
12
13
  wp_template: {
13
- path: '/templates/all',
14
14
  title: __( 'All templates' ),
15
15
  },
16
16
  wp_template_part: {
17
- path: '/template-parts/all',
18
17
  title: __( 'All template parts' ),
19
18
  },
20
19
  };
21
20
 
22
- export default function SidebarNavigationScreenTemplatesBrowse( {
23
- postType = 'wp_template',
24
- } ) {
25
- return (
26
- <SidebarNavigationScreen
27
- path={ config[ postType ].path }
28
- title={ config[ postType ].title }
29
- />
30
- );
21
+ export default function SidebarNavigationScreenTemplatesBrowse() {
22
+ const {
23
+ params: { postType },
24
+ } = useNavigator();
25
+ return <SidebarNavigationScreen title={ config[ postType ].title } />;
31
26
  }
@@ -24,8 +24,14 @@ import {
24
24
  privateApis as blockEditorPrivateApis,
25
25
  } from '@wordpress/block-editor';
26
26
  import { closeSmall } from '@wordpress/icons';
27
- import { useResizeObserver } from '@wordpress/compose';
27
+ import {
28
+ useResizeObserver,
29
+ useFocusOnMount,
30
+ useFocusReturn,
31
+ useMergeRefs,
32
+ } from '@wordpress/compose';
28
33
  import { useMemo, memo } from '@wordpress/element';
34
+ import { ESCAPE } from '@wordpress/keycodes';
29
35
 
30
36
  /**
31
37
  * Internal dependencies
@@ -90,6 +96,9 @@ function getExamples() {
90
96
 
91
97
  function StyleBook( { isSelected, onSelect, onClose } ) {
92
98
  const [ resizeObserver, sizes ] = useResizeObserver();
99
+ const focusOnMountRef = useFocusOnMount( 'firstElement' );
100
+ const sectionFocusReturnRef = useFocusReturn();
101
+
93
102
  const [ textColor ] = useGlobalStyle( 'color.text' );
94
103
  const [ backgroundColor ] = useGlobalStyle( 'color.background' );
95
104
  const examples = useMemo( getExamples, [] );
@@ -108,8 +117,17 @@ function StyleBook( { isSelected, onSelect, onClose } ) {
108
117
  } ) ),
109
118
  [ examples ]
110
119
  );
120
+
121
+ function closeOnEscape( event ) {
122
+ if ( event.keyCode === ESCAPE && ! event.defaultPrevented ) {
123
+ event.preventDefault();
124
+ onClose();
125
+ }
126
+ }
127
+
111
128
  return (
112
129
  <StyleBookFill>
130
+ { /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */ }
113
131
  <section
114
132
  className={ classnames( 'edit-site-style-book', {
115
133
  'is-wide': sizes.width > 600,
@@ -119,6 +137,11 @@ function StyleBook( { isSelected, onSelect, onClose } ) {
119
137
  background: backgroundColor,
120
138
  } }
121
139
  aria-label={ __( 'Style Book' ) }
140
+ onKeyDown={ closeOnEscape }
141
+ ref={ useMergeRefs( [
142
+ sectionFocusReturnRef,
143
+ focusOnMountRef,
144
+ ] ) }
122
145
  >
123
146
  { resizeObserver }
124
147
  <Button
@@ -126,6 +149,7 @@ function StyleBook( { isSelected, onSelect, onClose } ) {
126
149
  icon={ closeSmall }
127
150
  label={ __( 'Close Style Book' ) }
128
151
  onClick={ onClose }
152
+ showTooltip={ false }
129
153
  />
130
154
  <TabPanel
131
155
  className="edit-site-style-book__tab-panel"
@@ -12,8 +12,8 @@ import { useLocation } from '../routes';
12
12
  import { store as editSiteStore } from '../../store';
13
13
 
14
14
  export default function useInitEditedEntityFromURL() {
15
- const { params: { postId, postType, path = '/' } = {} } = useLocation();
16
- const { isRequestingSite, homepageId } = useSelect( ( select ) => {
15
+ const { params: { postId, postType } = {} } = useLocation();
16
+ const { isRequestingSite, homepageId, url } = useSelect( ( select ) => {
17
17
  const { getSite } = select( coreDataStore );
18
18
  const siteData = getSite();
19
19
 
@@ -23,6 +23,7 @@ export default function useInitEditedEntityFromURL() {
23
23
  siteData?.show_on_front === 'page'
24
24
  ? siteData.page_on_front
25
25
  : null,
26
+ url: siteData?.url,
26
27
  };
27
28
  }, [] );
28
29
 
@@ -30,33 +31,37 @@ export default function useInitEditedEntityFromURL() {
30
31
  useDispatch( editSiteStore );
31
32
 
32
33
  useEffect( () => {
33
- switch ( path ) {
34
- case '/templates/single':
35
- setTemplate( postId );
36
- break;
37
- case '/template-parts/single':
38
- setTemplatePart( postId );
39
- break;
40
- case '/navigation/single':
41
- setPage( {
42
- context: { postType, postId },
43
- } );
44
- break;
45
- default: {
46
- if ( homepageId ) {
34
+ if ( postType && postId ) {
35
+ switch ( postType ) {
36
+ case 'wp_template':
37
+ setTemplate( postId );
38
+ break;
39
+ case 'wp_template_part':
40
+ setTemplatePart( postId );
41
+ break;
42
+ default:
47
43
  setPage( {
48
- context: { postType: 'page', postId: homepageId },
44
+ context: { postType, postId },
49
45
  } );
50
- } else if ( ! isRequestingSite ) {
51
- setPage( {
52
- path: '/',
53
- } );
54
- }
55
46
  }
47
+
48
+ return;
49
+ }
50
+
51
+ // In all other cases, we need to set the home page in the site editor view.
52
+ if ( homepageId ) {
53
+ setPage( {
54
+ context: { postType: 'page', postId: homepageId },
55
+ } );
56
+ } else if ( ! isRequestingSite ) {
57
+ setPage( {
58
+ path: url,
59
+ } );
56
60
  }
57
61
  }, [
58
- path,
62
+ url,
59
63
  postId,
64
+ postType,
60
65
  homepageId,
61
66
  isRequestingSite,
62
67
  setPage,
@@ -9,28 +9,83 @@ import { useEffect, useRef } from '@wordpress/element';
9
9
  */
10
10
  import { useLocation, useHistory } from '../routes';
11
11
 
12
+ export function getPathFromURL( urlParams ) {
13
+ let path = urlParams?.path ?? '/';
14
+
15
+ // Compute the navigator path based on the URL params.
16
+ if ( urlParams?.postType && urlParams?.postId ) {
17
+ switch ( urlParams.postType ) {
18
+ case 'wp_template':
19
+ case 'wp_template_part':
20
+ path = `/${ encodeURIComponent(
21
+ urlParams.postType
22
+ ) }/${ encodeURIComponent( urlParams.postId ) }`;
23
+ break;
24
+ default:
25
+ path = `/navigation/${ encodeURIComponent(
26
+ urlParams.postType
27
+ ) }/${ encodeURIComponent( urlParams.postId ) }`;
28
+ }
29
+ }
30
+
31
+ return path;
32
+ }
33
+
12
34
  export default function useSyncPathWithURL() {
13
35
  const history = useHistory();
14
- const { params } = useLocation();
15
- const { path = '/' } = params;
16
- const { location, goTo } = useNavigator();
17
- const currentPath = useRef( path );
18
- const currentNavigatorLocation = useRef( location.path );
36
+ const { params: urlParams } = useLocation();
37
+ const {
38
+ location: navigatorLocation,
39
+ params: navigatorParams,
40
+ goTo,
41
+ } = useNavigator();
42
+ const currentUrlParams = useRef( urlParams );
43
+ const currentPath = useRef( navigatorLocation.path );
44
+
19
45
  useEffect( () => {
20
- currentPath.current = path;
21
- if ( path !== currentNavigatorLocation.current ) {
22
- goTo( path );
46
+ function updateUrlParams( newUrlParams ) {
47
+ if (
48
+ Object.entries( newUrlParams ).every( ( [ key, value ] ) => {
49
+ return currentUrlParams.current[ key ] === value;
50
+ } )
51
+ ) {
52
+ return;
53
+ }
54
+ const updatedParams = {
55
+ ...currentUrlParams.current,
56
+ ...newUrlParams,
57
+ };
58
+ currentUrlParams.current = updatedParams;
59
+ history.push( updatedParams );
23
60
  }
24
- }, [ path ] );
25
- useEffect( () => {
26
- currentNavigatorLocation.current = location.path;
27
- if ( location.path !== currentPath.current ) {
28
- history.push( {
29
- ...params,
30
- path: location.path,
61
+
62
+ if ( navigatorParams?.postType && navigatorParams?.postId ) {
63
+ updateUrlParams( {
64
+ postType: navigatorParams?.postType,
65
+ postId: navigatorParams?.postId,
66
+ path: undefined,
67
+ } );
68
+ } else if ( navigatorParams?.postType && ! navigatorParams?.postId ) {
69
+ updateUrlParams( {
70
+ postType: navigatorParams?.postType,
71
+ path: navigatorLocation.path,
72
+ postId: undefined,
73
+ } );
74
+ } else {
75
+ updateUrlParams( {
76
+ postType: undefined,
77
+ postId: undefined,
78
+ path: navigatorLocation.path,
31
79
  } );
32
80
  }
33
- }, [ location.path, history ] );
81
+ }, [ navigatorLocation?.path, navigatorParams, history ] );
34
82
 
35
- return path;
83
+ useEffect( () => {
84
+ currentUrlParams.current = urlParams;
85
+ const path = getPathFromURL( urlParams );
86
+ if ( currentPath.current !== path ) {
87
+ currentPath.current = path;
88
+ goTo( path );
89
+ }
90
+ }, [ urlParams, goTo ] );
36
91
  }
@@ -18,7 +18,6 @@ import { decodeEntities } from '@wordpress/html-entities';
18
18
  */
19
19
  import isTemplateRevertable from '../../utils/is-template-revertable';
20
20
  import { store as editSiteStore } from '../../store';
21
- import TemplateAreas from './template-areas';
22
21
  import EditTemplateTitle from './edit-template-title';
23
22
  import { useLink } from '../routes/link';
24
23
  import TemplatePartAreaSelector from './template-part-area-selector';
@@ -31,10 +30,12 @@ export default function TemplateDetails( { template, onClose } ) {
31
30
  );
32
31
  const { revertTemplate } = useDispatch( editSiteStore );
33
32
 
33
+ // TODO: We should update this to filter by template part's areas as well.
34
34
  const browseAllLinkProps = useLink( {
35
- // TODO: We should update this to filter by template part's areas as well.
35
+ canvas: 'view',
36
36
  postType: template.type,
37
37
  postId: undefined,
38
+ path: '/' + template.type + '/all',
38
39
  } );
39
40
 
40
41
  const isTemplatePart = template.type === 'wp_template_part';
@@ -87,8 +88,6 @@ export default function TemplateDetails( { template, onClose } ) {
87
88
  </div>
88
89
  ) }
89
90
 
90
- <TemplateAreas closeTemplateDetailsDropdown={ onClose } />
91
-
92
91
  { isTemplateRevertable( template ) && (
93
92
  <MenuGroup className="edit-site-template-details__group edit-site-template-details__revert">
94
93
  <MenuItem
@@ -108,8 +107,8 @@ export default function TemplateDetails( { template, onClose } ) {
108
107
  { ...browseAllLinkProps }
109
108
  >
110
109
  { template?.type === 'wp_template'
111
- ? __( 'Browse all templates' )
112
- : __( 'Browse all template parts' ) }
110
+ ? __( 'Manage all templates' )
111
+ : __( 'Manage all template parts' ) }
113
112
  </Button>
114
113
  </div>
115
114
  );
package/src/index.js CHANGED
@@ -4,6 +4,7 @@
4
4
  import { store as blocksStore } from '@wordpress/blocks';
5
5
  import {
6
6
  registerCoreBlocks,
7
+ __experimentalGetCoreBlocks,
7
8
  __experimentalRegisterExperimentalCoreBlocks,
8
9
  } from '@wordpress/block-library';
9
10
  import { dispatch } from '@wordpress/data';
@@ -16,7 +17,6 @@ import {
16
17
  import { store as editorStore } from '@wordpress/editor';
17
18
  import { store as interfaceStore } from '@wordpress/interface';
18
19
  import { store as preferencesStore } from '@wordpress/preferences';
19
- import { addFilter } from '@wordpress/hooks';
20
20
  import { registerLegacyWidgetBlock } from '@wordpress/widgets';
21
21
 
22
22
  /**
@@ -41,32 +41,17 @@ export function initializeEditor( id, settings ) {
41
41
  settings.__experimentalFetchRichUrlData = fetchUrlData;
42
42
 
43
43
  dispatch( blocksStore ).__experimentalReapplyBlockTypeFilters();
44
- registerCoreBlocks();
44
+ const coreBlocks = __experimentalGetCoreBlocks().filter(
45
+ ( { name } ) => name !== 'core/freeform'
46
+ );
47
+ registerCoreBlocks( coreBlocks );
48
+ dispatch( blocksStore ).setFreeformFallbackBlockName( 'core/html' );
45
49
  registerLegacyWidgetBlock( { inserter: false } );
46
50
  if ( process.env.IS_GUTENBERG_PLUGIN ) {
47
51
  __experimentalRegisterExperimentalCoreBlocks( {
48
52
  enableFSEBlocks: true,
49
53
  } );
50
54
  }
51
- /*
52
- * Prevent adding the Clasic block in the site editor.
53
- * Only add the filter when the site editor is initialized, not imported.
54
- * Also only add the filter(s) after registerCoreBlocks()
55
- * so that common filters in the block library are not overwritten.
56
- *
57
- * This usage here is inspired by previous usage of the filter in the post editor:
58
- * https://github.com/WordPress/gutenberg/pull/37157
59
- */
60
- addFilter(
61
- 'blockEditor.__unstableCanInsertBlockType',
62
- 'removeClassicBlockFromInserter',
63
- ( canInsert, blockType ) => {
64
- if ( blockType.name === 'core/freeform' ) {
65
- return false;
66
- }
67
- return canInsert;
68
- }
69
- );
70
55
 
71
56
  // We dispatch actions and update the store synchronously before rendering
72
57
  // so that we won't trigger unnecessary re-renders with useEffect.
@@ -526,7 +526,7 @@ export const switchEditorMode =
526
526
 
527
527
  if ( mode === 'visual' ) {
528
528
  speak( __( 'Visual editor selected' ), 'assertive' );
529
- } else if ( mode === 'mosaic' ) {
530
- speak( __( 'Mosaic view selected' ), 'assertive' );
529
+ } else if ( mode === 'text' ) {
530
+ speak( __( 'Code editor selected' ), 'assertive' );
531
531
  }
532
532
  };
package/src/style.scss CHANGED
@@ -22,6 +22,7 @@
22
22
  @import "./components/layout/style.scss";
23
23
  @import "./components/save-panel/style.scss";
24
24
  @import "./components/sidebar/style.scss";
25
+ @import "./components/sidebar-button/style.scss";
25
26
  @import "./components/sidebar-navigation-item/style.scss";
26
27
  @import "./components/sidebar-navigation-screen/style.scss";
27
28
  @import "./components/sidebar-navigation-screen-templates/style.scss";
@@ -7,5 +7,5 @@
7
7
  * @return {boolean} Is list page or not.
8
8
  */
9
9
  export default function getIsListPage( { path } ) {
10
- return path === '/templates/all' || path === '/template-parts/all';
10
+ return path === '/wp_template/all' || path === '/wp_template_part/all';
11
11
  }