@wordpress/edit-site 5.12.1 → 5.12.2

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 (153) hide show
  1. package/build/components/add-new-pattern/index.js +9 -9
  2. package/build/components/add-new-pattern/index.js.map +1 -1
  3. package/build/components/add-new-template/new-template.js +69 -14
  4. package/build/components/add-new-template/new-template.js.map +1 -1
  5. package/build/components/create-pattern-modal/index.js +1 -1
  6. package/build/components/create-pattern-modal/index.js.map +1 -1
  7. package/build/components/create-template-part-modal/index.js +1 -1
  8. package/build/components/create-template-part-modal/index.js.map +1 -1
  9. package/build/components/editor/index.js +1 -0
  10. package/build/components/editor/index.js.map +1 -1
  11. package/build/components/global-styles/ui.js +7 -2
  12. package/build/components/global-styles/ui.js.map +1 -1
  13. package/build/components/header-edit-mode/index.js +36 -9
  14. package/build/components/header-edit-mode/index.js.map +1 -1
  15. package/build/components/header-edit-mode/more-menu/index.js +36 -2
  16. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  17. package/build/components/keyboard-shortcuts/edit-mode.js +32 -1
  18. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  19. package/build/components/keyboard-shortcuts/register.js +9 -0
  20. package/build/components/keyboard-shortcuts/register.js.map +1 -1
  21. package/build/components/layout/index.js +86 -12
  22. package/build/components/layout/index.js.map +1 -1
  23. package/build/components/page-content-focus-manager/back-to-page-notification.js +9 -3
  24. package/build/components/page-content-focus-manager/back-to-page-notification.js.map +1 -1
  25. package/build/components/page-library/grid-item.js +11 -7
  26. package/build/components/page-library/grid-item.js.map +1 -1
  27. package/build/components/preferences-modal/enable-feature.js +5 -1
  28. package/build/components/preferences-modal/enable-feature.js.map +1 -1
  29. package/build/components/preferences-modal/index.js +30 -0
  30. package/build/components/preferences-modal/index.js.map +1 -1
  31. package/build/components/sidebar-edit-mode/index.js +4 -2
  32. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  33. package/build/components/sidebar-navigation-screen/index.js +7 -3
  34. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  35. package/build/components/sidebar-navigation-screen-global-styles/index.js +15 -3
  36. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  37. package/build/components/sidebar-navigation-screen-library/category-item.js +1 -1
  38. package/build/components/sidebar-navigation-screen-library/category-item.js.map +1 -1
  39. package/build/components/sidebar-navigation-screen-navigation-menu/index.js +1 -1
  40. package/build/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  41. package/build/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +10 -1
  42. package/build/components/sidebar-navigation-screen-navigation-menu/rename-modal.js.map +1 -1
  43. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +5 -1
  44. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  45. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +14 -3
  46. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  47. package/build/hooks/commands/use-common-commands.js +22 -0
  48. package/build/hooks/commands/use-common-commands.js.map +1 -1
  49. package/build/hooks/commands/use-edit-mode-commands.js +170 -42
  50. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  51. package/build/index.js +1 -0
  52. package/build/index.js.map +1 -1
  53. package/build/store/selectors.js +2 -1
  54. package/build/store/selectors.js.map +1 -1
  55. package/build-module/components/add-new-pattern/index.js +8 -8
  56. package/build-module/components/add-new-pattern/index.js.map +1 -1
  57. package/build-module/components/add-new-template/new-template.js +72 -17
  58. package/build-module/components/add-new-template/new-template.js.map +1 -1
  59. package/build-module/components/create-pattern-modal/index.js +1 -1
  60. package/build-module/components/create-pattern-modal/index.js.map +1 -1
  61. package/build-module/components/create-template-part-modal/index.js +1 -1
  62. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  63. package/build-module/components/editor/index.js +1 -0
  64. package/build-module/components/editor/index.js.map +1 -1
  65. package/build-module/components/global-styles/ui.js +8 -3
  66. package/build-module/components/global-styles/ui.js.map +1 -1
  67. package/build-module/components/header-edit-mode/index.js +38 -11
  68. package/build-module/components/header-edit-mode/index.js.map +1 -1
  69. package/build-module/components/header-edit-mode/more-menu/index.js +35 -3
  70. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  71. package/build-module/components/keyboard-shortcuts/edit-mode.js +29 -1
  72. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  73. package/build-module/components/keyboard-shortcuts/register.js +9 -0
  74. package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
  75. package/build-module/components/layout/index.js +86 -12
  76. package/build-module/components/layout/index.js.map +1 -1
  77. package/build-module/components/page-content-focus-manager/back-to-page-notification.js +9 -3
  78. package/build-module/components/page-content-focus-manager/back-to-page-notification.js.map +1 -1
  79. package/build-module/components/page-library/grid-item.js +11 -7
  80. package/build-module/components/page-library/grid-item.js.map +1 -1
  81. package/build-module/components/preferences-modal/enable-feature.js +5 -1
  82. package/build-module/components/preferences-modal/enable-feature.js.map +1 -1
  83. package/build-module/components/preferences-modal/index.js +27 -0
  84. package/build-module/components/preferences-modal/index.js.map +1 -1
  85. package/build-module/components/sidebar-edit-mode/index.js +4 -2
  86. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  87. package/build-module/components/sidebar-navigation-screen/index.js +7 -3
  88. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  89. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +14 -3
  90. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  91. package/build-module/components/sidebar-navigation-screen-library/category-item.js +1 -1
  92. package/build-module/components/sidebar-navigation-screen-library/category-item.js.map +1 -1
  93. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js +1 -1
  94. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  95. package/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +11 -1
  96. package/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js.map +1 -1
  97. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +5 -1
  98. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  99. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +14 -4
  100. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  101. package/build-module/hooks/commands/use-common-commands.js +23 -1
  102. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  103. package/build-module/hooks/commands/use-edit-mode-commands.js +170 -44
  104. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  105. package/build-module/index.js +1 -0
  106. package/build-module/index.js.map +1 -1
  107. package/build-module/store/selectors.js +2 -1
  108. package/build-module/store/selectors.js.map +1 -1
  109. package/build-style/style-rtl.css +110 -18
  110. package/build-style/style.css +110 -18
  111. package/package.json +15 -15
  112. package/src/components/add-new-pattern/index.js +8 -10
  113. package/src/components/add-new-template/new-template.js +120 -24
  114. package/src/components/add-new-template/style.scss +30 -2
  115. package/src/components/create-pattern-modal/index.js +1 -1
  116. package/src/components/create-template-part-modal/index.js +1 -1
  117. package/src/components/editor/index.js +1 -0
  118. package/src/components/editor/style.scss +4 -0
  119. package/src/components/global-styles/ui.js +34 -24
  120. package/src/components/header-edit-mode/index.js +96 -54
  121. package/src/components/header-edit-mode/more-menu/index.js +52 -7
  122. package/src/components/keyboard-shortcuts/edit-mode.js +35 -2
  123. package/src/components/keyboard-shortcuts/register.js +10 -0
  124. package/src/components/layout/index.js +115 -46
  125. package/src/components/layout/style.scss +58 -1
  126. package/src/components/page-content-focus-manager/back-to-page-notification.js +7 -2
  127. package/src/components/page-library/grid-item.js +9 -9
  128. package/src/components/page-library/style.scss +2 -2
  129. package/src/components/preferences-modal/enable-feature.js +5 -2
  130. package/src/components/preferences-modal/index.js +25 -0
  131. package/src/components/sidebar-button/style.scss +1 -1
  132. package/src/components/sidebar-edit-mode/index.js +4 -2
  133. package/src/components/sidebar-navigation-item/style.scss +1 -1
  134. package/src/components/sidebar-navigation-screen/index.js +4 -2
  135. package/src/components/sidebar-navigation-screen/style.scss +2 -1
  136. package/src/components/sidebar-navigation-screen-details-panel/style.scss +1 -1
  137. package/src/components/sidebar-navigation-screen-global-styles/index.js +15 -3
  138. package/src/components/sidebar-navigation-screen-library/category-item.js +1 -1
  139. package/src/components/sidebar-navigation-screen-library/style.scss +0 -4
  140. package/src/components/sidebar-navigation-screen-navigation-menu/index.js +1 -1
  141. package/src/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +12 -1
  142. package/src/components/sidebar-navigation-screen-navigation-menu/style.scss +2 -2
  143. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +5 -1
  144. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +31 -8
  145. package/src/components/sidebar-navigation-screen-pattern/style.scss +25 -0
  146. package/src/components/sidebar-navigation-screen-template/style.scss +15 -15
  147. package/src/components/site-hub/style.scss +4 -3
  148. package/src/hooks/commands/use-common-commands.js +20 -1
  149. package/src/hooks/commands/use-edit-mode-commands.js +155 -36
  150. package/src/index.js +1 -0
  151. package/src/store/selectors.js +5 -0
  152. package/src/store/test/selectors.js +2 -0
  153. package/src/style.scss +1 -0
@@ -12,7 +12,6 @@
12
12
  }
13
13
 
14
14
  .edit-site-sidebar-navigation-screen__content {
15
- color: $gray-400;
16
15
  padding: 0 $grid-unit-20;
17
16
 
18
17
  .components-item-group {
@@ -65,6 +64,8 @@
65
64
  .edit-site-sidebar-navigation-screen__title {
66
65
  flex-grow: 1;
67
66
  padding: $grid-unit-15 * 0.5 0 0 0;
67
+ overflow: hidden;
68
+ overflow-wrap: break-word;
68
69
  }
69
70
 
70
71
  .edit-site-sidebar-navigation-screen__actions {
@@ -1,5 +1,5 @@
1
1
  .edit-site-sidebar-navigation-details-screen-panel {
2
- margin-bottom: $grid-unit-30;
2
+ margin: $grid-unit-30 0;
3
3
 
4
4
  &:last-of-type {
5
5
  margin-bottom: 0;
@@ -15,6 +15,7 @@ import { useViewportMatch } from '@wordpress/compose';
15
15
  import { BlockEditorProvider } from '@wordpress/block-editor';
16
16
  import { humanTimeDiff } from '@wordpress/date';
17
17
  import { useCallback } from '@wordpress/element';
18
+ import { store as noticesStore } from '@wordpress/notices';
18
19
 
19
20
  /**
20
21
  * Internal dependencies
@@ -31,8 +32,9 @@ import useGlobalStylesRevisions from '../global-styles/screen-revisions/use-glob
31
32
  const noop = () => {};
32
33
 
33
34
  export function SidebarNavigationItemGlobalStyles( props ) {
34
- const { openGeneralSidebar } = useDispatch( editSiteStore );
35
+ const { openGeneralSidebar, toggleFeature } = useDispatch( editSiteStore );
35
36
  const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
37
+ const { createNotice } = useDispatch( noticesStore );
36
38
  const hasGlobalStyleVariations = useSelect(
37
39
  ( select ) =>
38
40
  !! select(
@@ -53,9 +55,19 @@ export function SidebarNavigationItemGlobalStyles( props ) {
53
55
  <SidebarNavigationItem
54
56
  { ...props }
55
57
  onClick={ () => {
56
- // switch to edit mode.
58
+ // Disable distraction free mode.
59
+ toggleFeature( 'distractionFree', false );
60
+ createNotice(
61
+ 'info',
62
+ __( 'Distraction free mode turned off' ),
63
+ {
64
+ isDismissible: true,
65
+ type: 'snackbar',
66
+ }
67
+ );
68
+ // Switch to edit mode.
57
69
  setCanvasMode( 'edit' );
58
- // open global styles sidebar.
70
+ // Open global styles sidebar.
59
71
  openGeneralSidebar( 'edit-site/global-styles' );
60
72
  } }
61
73
  />
@@ -35,7 +35,7 @@ export default function CategoryItem( {
35
35
  { ...linkInfo }
36
36
  icon={ icon }
37
37
  suffix={ <span>{ count }</span> }
38
- className={ isActive ? 'is-active-category' : undefined }
38
+ aria-current={ isActive ? 'true' : undefined }
39
39
  >
40
40
  { label }
41
41
  </SidebarNavigationItem>
@@ -1,7 +1,3 @@
1
1
  .edit-site-sidebar-navigation-screen-library__group {
2
2
  margin-bottom: $grid-unit-30;
3
3
  }
4
-
5
- .edit-site-sidebar-navigation-item.is-active-category {
6
- background: $gray-800;
7
- }
@@ -60,7 +60,7 @@ export default function SidebarNavigationScreenNavigationMenu() {
60
60
  useNavigationMenuHandlers();
61
61
 
62
62
  const _handleDelete = () => handleDelete( navigationMenu );
63
- const _handleSave = () => handleSave( navigationMenu );
63
+ const _handleSave = ( edits ) => handleSave( navigationMenu, edits );
64
64
  const _handleDuplicate = () => handleDuplicate( navigationMenu );
65
65
 
66
66
  if ( isLoading ) {
@@ -11,9 +11,16 @@ import {
11
11
  import { __ } from '@wordpress/i18n';
12
12
  import { useState } from '@wordpress/element';
13
13
 
14
+ const notEmptyString = ( testString ) => testString?.trim()?.length > 0;
15
+
14
16
  export default function RenameModal( { menuTitle, onClose, onSave } ) {
15
17
  const [ editedMenuTitle, setEditedMenuTitle ] = useState( menuTitle );
16
18
 
19
+ const titleHasChanged = editedMenuTitle !== menuTitle;
20
+
21
+ const isEditedMenuTitleValid =
22
+ titleHasChanged && notEmptyString( editedMenuTitle );
23
+
17
24
  return (
18
25
  <Modal title={ __( 'Rename' ) } onRequestClose={ onClose }>
19
26
  <form className="sidebar-navigation__rename-modal-form">
@@ -30,11 +37,15 @@ export default function RenameModal( { menuTitle, onClose, onSave } ) {
30
37
  </Button>
31
38
 
32
39
  <Button
33
- disabled={ editedMenuTitle === menuTitle }
40
+ disabled={ ! isEditedMenuTitleValid }
34
41
  variant="primary"
35
42
  type="submit"
36
43
  onClick={ ( e ) => {
37
44
  e.preventDefault();
45
+
46
+ if ( ! isEditedMenuTitleValid ) {
47
+ return;
48
+ }
38
49
  onSave( { title: editedMenuTitle } );
39
50
 
40
51
  // Immediate close avoids ability to hit save multiple times.
@@ -1,10 +1,10 @@
1
1
  .sidebar-navigation__more-menu {
2
2
  .components-button {
3
- color: $gray-600;
3
+ color: $gray-200;
4
4
  &:hover,
5
5
  &:focus,
6
6
  &[aria-current] {
7
- color: $white;
7
+ color: $gray-100;
8
8
  }
9
9
  }
10
10
  }
@@ -71,7 +71,11 @@ function useSaveNavigationMenu() {
71
71
  const { createSuccessNotice, createErrorNotice } =
72
72
  useDispatch( noticesStore );
73
73
 
74
- const handleSave = async ( navigationMenu, edits = {} ) => {
74
+ const handleSave = async ( navigationMenu, edits ) => {
75
+ if ( ! edits ) {
76
+ return;
77
+ }
78
+
75
79
  const postId = navigationMenu?.id;
76
80
  // Prepare for revert in case of error.
77
81
  const originalRecord = getEditedEntityRecord(
@@ -2,7 +2,8 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __, sprintf } from '@wordpress/i18n';
5
- import { useEntityRecords } from '@wordpress/core-data';
5
+ import { useEntityRecords, store as coreStore } from '@wordpress/core-data';
6
+ import { useSelect } from '@wordpress/data';
6
7
 
7
8
  import { decodeEntities } from '@wordpress/html-entities';
8
9
  import {
@@ -41,15 +42,35 @@ function buildMenuLabel( title, id, status ) {
41
42
  }
42
43
 
43
44
  export default function SidebarNavigationScreenNavigationMenus() {
44
- const { records: navigationMenus, isResolving: isLoading } =
45
- useEntityRecords(
46
- 'postType',
47
- `wp_navigation`,
48
- PRELOADED_NAVIGATION_MENUS_QUERY
49
- );
45
+ const {
46
+ records: navigationMenus,
47
+ isResolving: isResolvingNavigationMenus,
48
+ hasResolved: hasResolvedNavigationMenus,
49
+ } = useEntityRecords(
50
+ 'postType',
51
+ `wp_navigation`,
52
+ PRELOADED_NAVIGATION_MENUS_QUERY
53
+ );
54
+
55
+ const isLoading =
56
+ isResolvingNavigationMenus && ! hasResolvedNavigationMenus;
57
+
58
+ const getNavigationFallbackId = useSelect(
59
+ ( select ) => select( coreStore ).getNavigationFallbackId
60
+ );
50
61
 
51
62
  const firstNavigationMenu = navigationMenus?.[ 0 ];
52
63
 
64
+ // If there is no navigation menu found
65
+ // then trigger fallback algorithm to create one.
66
+ if (
67
+ ! firstNavigationMenu &&
68
+ ! isResolvingNavigationMenus &&
69
+ hasResolvedNavigationMenus
70
+ ) {
71
+ getNavigationFallbackId();
72
+ }
73
+
53
74
  const { handleSave, handleDelete, handleDuplicate } =
54
75
  useNavigationMenuHandlers();
55
76
 
@@ -78,7 +99,9 @@ export default function SidebarNavigationScreenNavigationMenus() {
78
99
  navigationMenu={ firstNavigationMenu }
79
100
  handleDelete={ () => handleDelete( firstNavigationMenu ) }
80
101
  handleDuplicate={ () => handleDuplicate( firstNavigationMenu ) }
81
- handleSave={ () => handleSave( firstNavigationMenu ) }
102
+ handleSave={ ( edits ) =>
103
+ handleSave( firstNavigationMenu, edits )
104
+ }
82
105
  />
83
106
  );
84
107
  }
@@ -0,0 +1,25 @@
1
+ .edit-site-sidebar-navigation-screen-pattern__added-by-description {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: space-between;
5
+ margin-top: $grid-unit-30;
6
+ }
7
+
8
+ .edit-site-sidebar-navigation-screen-pattern__added-by-description-author {
9
+ display: inline-flex;
10
+ align-items: center;
11
+
12
+ img {
13
+ border-radius: $grid-unit-15;
14
+ }
15
+
16
+ svg {
17
+ fill: $gray-600;
18
+ }
19
+ }
20
+
21
+ .edit-site-sidebar-navigation-screen-pattern__added-by-description-author-icon {
22
+ width: 24px;
23
+ height: 24px;
24
+ margin-right: $grid-unit-10;
25
+ }
@@ -3,27 +3,27 @@
3
3
  align-items: center;
4
4
  justify-content: space-between;
5
5
  margin-top: $grid-unit-30;
6
+ }
6
7
 
7
- &-author {
8
- display: inline-flex;
9
- align-items: center;
10
-
11
- img {
12
- border-radius: $grid-unit-15;
13
- }
8
+ .edit-site-sidebar-navigation-screen-template__added-by-description-author {
9
+ display: inline-flex;
10
+ align-items: center;
14
11
 
15
- svg {
16
- fill: $gray-600;
17
- }
12
+ img {
13
+ border-radius: $grid-unit-15;
14
+ }
18
15
 
19
- &-icon {
20
- width: 24px;
21
- height: 24px;
22
- margin-right: $grid-unit-10;
23
- }
16
+ svg {
17
+ fill: $gray-600;
24
18
  }
25
19
  }
26
20
 
21
+ .edit-site-sidebar-navigation-screen-template__added-by-description-author-icon {
22
+ width: 24px;
23
+ height: 24px;
24
+ margin-right: $grid-unit-10;
25
+ }
26
+
27
27
  .edit-site-sidebar-navigation-screen-template__template-area-button {
28
28
  color: $white;
29
29
  display: flex;
@@ -20,7 +20,7 @@
20
20
  opacity: 1;
21
21
  }
22
22
  svg {
23
- fill: $white;
23
+ fill: $gray-200;
24
24
  }
25
25
  }
26
26
  &:hover {
@@ -55,12 +55,13 @@
55
55
  .edit-site-site-hub__site-title {
56
56
  margin-left: $grid-unit-05;
57
57
  flex-grow: 1;
58
+ color: $gray-200;
58
59
  }
59
60
 
60
61
  .edit-site-site-hub_toggle-command-center {
61
- color: $white;
62
+ color: $gray-200;
62
63
 
63
64
  &:hover {
64
- color: $white;
65
+ color: $gray-100;
65
66
  }
66
67
  }
@@ -4,7 +4,7 @@
4
4
  import { useMemo } from '@wordpress/element';
5
5
  import { useDispatch, useSelect } from '@wordpress/data';
6
6
  import { __ } from '@wordpress/i18n';
7
- import { trash, backup, help, styles } from '@wordpress/icons';
7
+ import { trash, backup, help, styles, external } from '@wordpress/icons';
8
8
  import { useCommandLoader, useCommand } from '@wordpress/commands';
9
9
  import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
10
10
  import { privateApis as routerPrivateApis } from '@wordpress/router';
@@ -105,6 +105,15 @@ export function useCommonCommands() {
105
105
  );
106
106
  const { set } = useDispatch( preferencesStore );
107
107
  const history = useHistory();
108
+ const { homeUrl } = useSelect( ( select ) => {
109
+ const {
110
+ getUnstableBase, // Site index.
111
+ } = select( coreStore );
112
+
113
+ return {
114
+ homeUrl: getUnstableBase()?.home,
115
+ };
116
+ }, [] );
108
117
 
109
118
  useCommand( {
110
119
  name: 'core/edit-site/open-global-styles-revisions',
@@ -155,6 +164,16 @@ export function useCommonCommands() {
155
164
  icon: help,
156
165
  } );
157
166
 
167
+ useCommand( {
168
+ name: 'core/edit-site/view-site',
169
+ label: __( 'View site' ),
170
+ callback: ( { close } ) => {
171
+ close();
172
+ window.open( homeUrl, '_blank' );
173
+ },
174
+ icon: external,
175
+ } );
176
+
158
177
  useCommandLoader( {
159
178
  name: 'core/edit-site/reset-global-styles',
160
179
  hook: useGlobalStylesResetCommands,
@@ -2,10 +2,22 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useSelect, useDispatch } from '@wordpress/data';
5
- import { __ } from '@wordpress/i18n';
6
- import { trash, backup, layout, page } from '@wordpress/icons';
5
+ import { __, isRTL } from '@wordpress/i18n';
6
+ import {
7
+ code,
8
+ cog,
9
+ trash,
10
+ backup,
11
+ layout,
12
+ page,
13
+ drawerLeft,
14
+ drawerRight,
15
+ blockDefault,
16
+ } from '@wordpress/icons';
7
17
  import { useCommandLoader } from '@wordpress/commands';
8
18
  import { privateApis as routerPrivateApis } from '@wordpress/router';
19
+ import { store as preferencesStore } from '@wordpress/preferences';
20
+ import { store as interfaceStore } from '@wordpress/interface';
9
21
 
10
22
  /**
11
23
  * Internal dependencies
@@ -18,51 +30,63 @@ import { unlock } from '../../lock-unlock';
18
30
 
19
31
  const { useHistory } = unlock( routerPrivateApis );
20
32
 
21
- function useEditModeCommandLoader() {
22
- const { isLoaded, record: template } = useEditedEntityRecord();
23
- const { removeTemplate, revertTemplate, setHasPageContentFocus } =
24
- useDispatch( editSiteStore );
25
- const history = useHistory();
26
- const { isPage, hasPageContentFocus } = useSelect(
33
+ function usePageContentFocusCommands() {
34
+ const { isPage, canvasMode, hasPageContentFocus } = useSelect(
27
35
  ( select ) => ( {
28
36
  isPage: select( editSiteStore ).isPage(),
37
+ canvasMode: unlock( select( editSiteStore ) ).getCanvasMode(),
29
38
  hasPageContentFocus: select( editSiteStore ).hasPageContentFocus(),
30
39
  } ),
31
40
  []
32
41
  );
42
+ const { setHasPageContentFocus } = useDispatch( editSiteStore );
33
43
 
34
- if ( ! isLoaded ) {
35
- return { isLoading: true, commands: [] };
44
+ if ( ! isPage || canvasMode !== 'edit' ) {
45
+ return { isLoading: false, commands: [] };
36
46
  }
37
47
 
38
48
  const commands = [];
39
49
 
40
- if ( isPage ) {
41
- if ( hasPageContentFocus ) {
42
- commands.push( {
43
- name: 'core/switch-to-template-focus',
44
- label: __( 'Edit template' ),
45
- icon: layout,
46
- context: 'site-editor-edit',
47
- callback: ( { close } ) => {
48
- setHasPageContentFocus( false );
49
- close();
50
- },
51
- } );
52
- } else {
53
- commands.push( {
54
- name: 'core/switch-to-page-focus',
55
- label: __( 'Back to page' ),
56
- icon: page,
57
- context: 'site-editor-edit',
58
- callback: ( { close } ) => {
59
- setHasPageContentFocus( true );
60
- close();
61
- },
62
- } );
63
- }
50
+ if ( hasPageContentFocus ) {
51
+ commands.push( {
52
+ name: 'core/switch-to-template-focus',
53
+ label: __( 'Edit template' ),
54
+ icon: layout,
55
+ callback: ( { close } ) => {
56
+ setHasPageContentFocus( false );
57
+ close();
58
+ },
59
+ } );
60
+ } else {
61
+ commands.push( {
62
+ name: 'core/switch-to-page-focus',
63
+ label: __( 'Back to page' ),
64
+ icon: page,
65
+ callback: ( { close } ) => {
66
+ setHasPageContentFocus( true );
67
+ close();
68
+ },
69
+ } );
70
+ }
71
+
72
+ return { isLoading: false, commands };
73
+ }
74
+
75
+ function useManipulateDocumentCommands() {
76
+ const { isLoaded, record: template } = useEditedEntityRecord();
77
+ const { removeTemplate, revertTemplate } = useDispatch( editSiteStore );
78
+ const history = useHistory();
79
+ const hasPageContentFocus = useSelect(
80
+ ( select ) => select( editSiteStore ).hasPageContentFocus(),
81
+ []
82
+ );
83
+
84
+ if ( ! isLoaded ) {
85
+ return { isLoading: true, commands: [] };
64
86
  }
65
87
 
88
+ const commands = [];
89
+
66
90
  if ( isTemplateRevertable( template ) && ! hasPageContentFocus ) {
67
91
  const label =
68
92
  template.type === 'wp_template'
@@ -88,7 +112,6 @@ function useEditModeCommandLoader() {
88
112
  name: 'core/remove-template',
89
113
  label,
90
114
  icon: trash,
91
- context: 'site-editor-edit',
92
115
  callback: ( { close } ) => {
93
116
  removeTemplate( template );
94
117
  // Navigate to the template list
@@ -106,10 +129,106 @@ function useEditModeCommandLoader() {
106
129
  };
107
130
  }
108
131
 
132
+ function useEditUICommands() {
133
+ const { openGeneralSidebar, closeGeneralSidebar, switchEditorMode } =
134
+ useDispatch( editSiteStore );
135
+ const { canvasMode, editorMode, activeSidebar } = useSelect(
136
+ ( select ) => ( {
137
+ canvasMode: unlock( select( editSiteStore ) ).getCanvasMode(),
138
+ editorMode: select( editSiteStore ).getEditorMode(),
139
+ activeSidebar: select( interfaceStore ).getActiveComplementaryArea(
140
+ editSiteStore.name
141
+ ),
142
+ } ),
143
+ []
144
+ );
145
+ const { toggle } = useDispatch( preferencesStore );
146
+
147
+ if ( canvasMode !== 'edit' ) {
148
+ return { isLoading: false, commands: [] };
149
+ }
150
+
151
+ const commands = [];
152
+
153
+ commands.push( {
154
+ name: 'core/open-settings-sidebar',
155
+ label: __( 'Toggle settings sidebar' ),
156
+ icon: isRTL() ? drawerLeft : drawerRight,
157
+ callback: ( { close } ) => {
158
+ close();
159
+ if ( activeSidebar === 'edit-site/template' ) {
160
+ closeGeneralSidebar();
161
+ } else {
162
+ openGeneralSidebar( 'edit-site/template' );
163
+ }
164
+ },
165
+ } );
166
+
167
+ commands.push( {
168
+ name: 'core/open-block-inspector',
169
+ label: __( 'Toggle block inspector' ),
170
+ icon: blockDefault,
171
+ callback: ( { close } ) => {
172
+ close();
173
+ if ( activeSidebar === 'edit-site/block-inspector' ) {
174
+ closeGeneralSidebar();
175
+ } else {
176
+ openGeneralSidebar( 'edit-site/block-inspector' );
177
+ }
178
+ },
179
+ } );
180
+
181
+ commands.push( {
182
+ name: 'core/toggle-spotlight-mode',
183
+ label: __( 'Toggle spotlight mode' ),
184
+ icon: cog,
185
+ callback: ( { close } ) => {
186
+ toggle( 'core/edit-site', 'focusMode' );
187
+ close();
188
+ },
189
+ } );
190
+
191
+ commands.push( {
192
+ name: 'core/toggle-top-toolbar',
193
+ label: __( 'Toggle top toolbar' ),
194
+ icon: cog,
195
+ callback: ( { close } ) => {
196
+ toggle( 'core/edit-site', 'fixedToolbar' );
197
+ close();
198
+ },
199
+ } );
200
+
201
+ commands.push( {
202
+ name: 'core/toggle-code-editor',
203
+ label: __( 'Toggle code editor' ),
204
+ icon: code,
205
+ callback: ( { close } ) => {
206
+ switchEditorMode( editorMode === 'visual' ? 'text' : 'visual' );
207
+ close();
208
+ },
209
+ } );
210
+
211
+ return {
212
+ isLoading: false,
213
+ commands,
214
+ };
215
+ }
216
+
109
217
  export function useEditModeCommands() {
218
+ useCommandLoader( {
219
+ name: 'core/edit-site/page-content-focus',
220
+ hook: usePageContentFocusCommands,
221
+ context: 'site-editor-edit',
222
+ } );
223
+
110
224
  useCommandLoader( {
111
225
  name: 'core/edit-site/manipulate-document',
112
- hook: useEditModeCommandLoader,
226
+ hook: useManipulateDocumentCommands,
113
227
  context: 'site-editor-edit',
114
228
  } );
229
+
230
+ useCommandLoader( {
231
+ name: 'core/edit-site/edit-ui',
232
+ hook: useEditUICommands,
233
+ } );
115
234
  }
package/src/index.js CHANGED
@@ -63,6 +63,7 @@ export function initializeEditor( id, settings ) {
63
63
  editorMode: 'visual',
64
64
  fixedToolbar: false,
65
65
  focusMode: false,
66
+ distractionFree: false,
66
67
  keepCaretInsideBlock: false,
67
68
  welcomeGuide: true,
68
69
  welcomeGuideStyles: true,
@@ -107,6 +107,10 @@ export const getSettings = createSelector(
107
107
  ...state.settings,
108
108
  outlineMode: true,
109
109
  focusMode: !! __unstableGetPreference( state, 'focusMode' ),
110
+ isDistractionFree: !! __unstableGetPreference(
111
+ state,
112
+ 'distractionFree'
113
+ ),
110
114
  hasFixedToolbar: !! __unstableGetPreference(
111
115
  state,
112
116
  'fixedToolbar'
@@ -143,6 +147,7 @@ export const getSettings = createSelector(
143
147
  getCanUserCreateMedia( state ),
144
148
  state.settings,
145
149
  __unstableGetPreference( state, 'focusMode' ),
150
+ __unstableGetPreference( state, 'distractionFree' ),
146
151
  __unstableGetPreference( state, 'fixedToolbar' ),
147
152
  __unstableGetPreference( state, 'keepCaretInsideBlock' ),
148
153
  __unstableGetPreference( state, 'showIconLabels' ),
@@ -77,6 +77,7 @@ describe( 'selectors', () => {
77
77
  outlineMode: true,
78
78
  focusMode: false,
79
79
  hasFixedToolbar: false,
80
+ isDistractionFree: false,
80
81
  keepCaretInsideBlock: false,
81
82
  showIconLabels: false,
82
83
  __experimentalSetIsInserterOpened: setInserterOpened,
@@ -102,6 +103,7 @@ describe( 'selectors', () => {
102
103
  key: 'value',
103
104
  focusMode: true,
104
105
  hasFixedToolbar: true,
106
+ isDistractionFree: false,
105
107
  keepCaretInsideBlock: false,
106
108
  showIconLabels: false,
107
109
  __experimentalSetIsInserterOpened: setInserterOpened,
package/src/style.scss CHANGED
@@ -37,6 +37,7 @@
37
37
  @import "./components/sidebar-navigation-screen-navigation-menu/style.scss";
38
38
  @import "./components/sidebar-navigation-screen-page/style.scss";
39
39
  @import "components/sidebar-navigation-screen-details-panel/style.scss";
40
+ @import "./components/sidebar-navigation-screen-pattern/style.scss";
40
41
  @import "./components/sidebar-navigation-screen-template/style.scss";
41
42
  @import "./components/site-hub/style.scss";
42
43
  @import "./components/sidebar-navigation-screen-navigation-menus/style.scss";