@wordpress/edit-post 7.24.1 → 7.26.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 (267) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE.md +1 -1
  3. package/build/components/browser-url/index.js +3 -2
  4. package/build/components/browser-url/index.js.map +1 -1
  5. package/build/components/header/index.js +35 -33
  6. package/build/components/header/index.js.map +1 -1
  7. package/build/components/header/mode-switcher/index.js +1 -1
  8. package/build/components/header/mode-switcher/index.js.map +1 -1
  9. package/build/components/header/more-menu/index.js +2 -1
  10. package/build/components/header/more-menu/index.js.map +1 -1
  11. package/build/components/header/writing-menu/index.js +22 -18
  12. package/build/components/header/writing-menu/index.js.map +1 -1
  13. package/build/components/keyboard-shortcuts/index.js +1 -20
  14. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  15. package/build/components/layout/index.js +45 -38
  16. package/build/components/layout/index.js.map +1 -1
  17. package/build/components/layout/index.native.js +3 -1
  18. package/build/components/layout/index.native.js.map +1 -1
  19. package/build/components/meta-boxes/meta-box-visibility.js +2 -6
  20. package/build/components/meta-boxes/meta-box-visibility.js.map +1 -1
  21. package/build/components/preferences-modal/index.js +87 -54
  22. package/build/components/preferences-modal/index.js.map +1 -1
  23. package/build/components/preferences-modal/options/enable-feature.js +23 -23
  24. package/build/components/preferences-modal/options/enable-feature.js.map +1 -1
  25. package/build/components/preferences-modal/options/enable-panel.js +3 -6
  26. package/build/components/preferences-modal/options/enable-panel.js.map +1 -1
  27. package/build/components/sidebar/plugin-document-setting-panel/index.js +3 -3
  28. package/build/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  29. package/build/components/sidebar/plugin-sidebar/index.js +2 -10
  30. package/build/components/sidebar/plugin-sidebar/index.js.map +1 -1
  31. package/build/components/sidebar/post-status/index.js +3 -5
  32. package/build/components/sidebar/post-status/index.js.map +1 -1
  33. package/build/components/sidebar/settings-header/index.js +17 -43
  34. package/build/components/sidebar/settings-header/index.js.map +1 -1
  35. package/build/components/sidebar/settings-sidebar/index.js +80 -26
  36. package/build/components/sidebar/settings-sidebar/index.js.map +1 -1
  37. package/build/components/start-page-options/index.js +3 -3
  38. package/build/components/start-page-options/index.js.map +1 -1
  39. package/build/components/visual-editor/index.js +20 -257
  40. package/build/components/visual-editor/index.js.map +1 -1
  41. package/build/components/welcome-guide/index.js +6 -3
  42. package/build/components/welcome-guide/index.js.map +1 -1
  43. package/build/editor.js +20 -30
  44. package/build/editor.js.map +1 -1
  45. package/build/editor.native.js +3 -11
  46. package/build/editor.native.js.map +1 -1
  47. package/build/hooks/commands/use-common-commands.js +16 -12
  48. package/build/hooks/commands/use-common-commands.js.map +1 -1
  49. package/build/hooks/use-post-history.js +79 -0
  50. package/build/hooks/use-post-history.js.map +1 -0
  51. package/build/index.js +24 -20
  52. package/build/index.js.map +1 -1
  53. package/build/index.native.js +7 -1
  54. package/build/index.native.js.map +1 -1
  55. package/build/plugins/welcome-guide-menu-item/index.js +2 -6
  56. package/build/plugins/welcome-guide-menu-item/index.js.map +1 -1
  57. package/build/store/actions.js +94 -112
  58. package/build/store/actions.js.map +1 -1
  59. package/build/store/reducer.js +1 -95
  60. package/build/store/reducer.js.map +1 -1
  61. package/build/store/selectors.js +86 -48
  62. package/build/store/selectors.js.map +1 -1
  63. package/build-module/components/browser-url/index.js +3 -2
  64. package/build-module/components/browser-url/index.js.map +1 -1
  65. package/build-module/components/header/index.js +37 -35
  66. package/build-module/components/header/index.js.map +1 -1
  67. package/build-module/components/header/mode-switcher/index.js +1 -1
  68. package/build-module/components/header/mode-switcher/index.js.map +1 -1
  69. package/build-module/components/header/more-menu/index.js +2 -1
  70. package/build-module/components/header/more-menu/index.js.map +1 -1
  71. package/build-module/components/header/writing-menu/index.js +23 -19
  72. package/build-module/components/header/writing-menu/index.js.map +1 -1
  73. package/build-module/components/keyboard-shortcuts/index.js +1 -20
  74. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  75. package/build-module/components/layout/index.js +46 -38
  76. package/build-module/components/layout/index.js.map +1 -1
  77. package/build-module/components/layout/index.native.js +4 -2
  78. package/build-module/components/layout/index.native.js.map +1 -1
  79. package/build-module/components/meta-boxes/meta-box-visibility.js +2 -6
  80. package/build-module/components/meta-boxes/meta-box-visibility.js.map +1 -1
  81. package/build-module/components/preferences-modal/index.js +87 -54
  82. package/build-module/components/preferences-modal/index.js.map +1 -1
  83. package/build-module/components/preferences-modal/options/enable-feature.js +22 -23
  84. package/build-module/components/preferences-modal/options/enable-feature.js.map +1 -1
  85. package/build-module/components/preferences-modal/options/enable-panel.js +3 -7
  86. package/build-module/components/preferences-modal/options/enable-panel.js.map +1 -1
  87. package/build-module/components/sidebar/plugin-document-setting-panel/index.js +3 -3
  88. package/build-module/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  89. package/build-module/components/sidebar/plugin-sidebar/index.js +2 -10
  90. package/build-module/components/sidebar/plugin-sidebar/index.js.map +1 -1
  91. package/build-module/components/sidebar/post-status/index.js +4 -6
  92. package/build-module/components/sidebar/post-status/index.js.map +1 -1
  93. package/build-module/components/sidebar/settings-header/index.js +20 -46
  94. package/build-module/components/sidebar/settings-header/index.js.map +1 -1
  95. package/build-module/components/sidebar/settings-sidebar/index.js +80 -27
  96. package/build-module/components/sidebar/settings-sidebar/index.js.map +1 -1
  97. package/build-module/components/start-page-options/index.js +3 -3
  98. package/build-module/components/start-page-options/index.js.map +1 -1
  99. package/build-module/components/visual-editor/index.js +24 -261
  100. package/build-module/components/visual-editor/index.js.map +1 -1
  101. package/build-module/components/welcome-guide/index.js +6 -3
  102. package/build-module/components/welcome-guide/index.js.map +1 -1
  103. package/build-module/editor.js +20 -30
  104. package/build-module/editor.js.map +1 -1
  105. package/build-module/editor.native.js +3 -11
  106. package/build-module/editor.native.js.map +1 -1
  107. package/build-module/hooks/commands/use-common-commands.js +16 -12
  108. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  109. package/build-module/hooks/use-post-history.js +73 -0
  110. package/build-module/hooks/use-post-history.js.map +1 -0
  111. package/build-module/index.js +19 -12
  112. package/build-module/index.js.map +1 -1
  113. package/build-module/index.native.js +7 -1
  114. package/build-module/index.native.js.map +1 -1
  115. package/build-module/plugins/welcome-guide-menu-item/index.js +2 -6
  116. package/build-module/plugins/welcome-guide-menu-item/index.js.map +1 -1
  117. package/build-module/store/actions.js +86 -105
  118. package/build-module/store/actions.js.map +1 -1
  119. package/build-module/store/reducer.js +1 -92
  120. package/build-module/store/reducer.js.map +1 -1
  121. package/build-module/store/selectors.js +76 -38
  122. package/build-module/store/selectors.js.map +1 -1
  123. package/build-style/style-rtl.css +65 -473
  124. package/build-style/style.css +65 -473
  125. package/package.json +32 -32
  126. package/src/components/browser-url/index.js +4 -2
  127. package/src/components/header/index.js +45 -46
  128. package/src/components/header/mode-switcher/index.js +2 -1
  129. package/src/components/header/more-menu/index.js +1 -0
  130. package/src/components/header/style.scss +63 -37
  131. package/src/components/header/writing-menu/index.js +24 -24
  132. package/src/components/keyboard-shortcut-help-modal/test/index.js +0 -15
  133. package/src/components/keyboard-shortcuts/index.js +1 -23
  134. package/src/components/layout/index.js +31 -39
  135. package/src/components/layout/index.native.js +9 -1
  136. package/src/components/meta-boxes/meta-box-visibility.js +2 -8
  137. package/src/components/preferences-modal/index.js +128 -97
  138. package/src/components/preferences-modal/options/enable-feature.js +26 -21
  139. package/src/components/preferences-modal/options/enable-panel.js +3 -7
  140. package/src/components/preferences-modal/test/__snapshots__/meta-boxes-section.js.snap +187 -175
  141. package/src/components/preferences-modal/test/index.js +1 -52
  142. package/src/components/sidebar/plugin-document-setting-panel/index.js +3 -3
  143. package/src/components/sidebar/plugin-sidebar/index.js +1 -9
  144. package/src/components/sidebar/post-status/index.js +5 -5
  145. package/src/components/sidebar/settings-header/index.js +19 -71
  146. package/src/components/sidebar/settings-sidebar/index.js +125 -60
  147. package/src/components/sidebar/style.scss +4 -12
  148. package/src/components/start-page-options/index.js +3 -3
  149. package/src/components/text-editor/style.scss +0 -6
  150. package/src/components/visual-editor/index.js +26 -359
  151. package/src/components/visual-editor/style.scss +0 -15
  152. package/src/components/welcome-guide/index.js +4 -2
  153. package/src/editor.js +36 -35
  154. package/src/editor.native.js +2 -23
  155. package/src/hooks/commands/use-common-commands.js +14 -16
  156. package/src/hooks/use-post-history.js +73 -0
  157. package/src/index.js +24 -13
  158. package/src/index.native.js +8 -1
  159. package/src/plugins/welcome-guide-menu-item/index.js +3 -6
  160. package/src/store/actions.js +80 -131
  161. package/src/store/reducer.js +0 -93
  162. package/src/store/selectors.js +97 -55
  163. package/src/store/test/actions.js +10 -131
  164. package/src/store/test/reducer.js +1 -108
  165. package/src/store/test/selectors.js +0 -50
  166. package/src/style.scss +1 -8
  167. package/src/test/__snapshots__/editor.native.js.snap +21 -0
  168. package/src/test/editor.native.js +107 -56
  169. package/build/components/device-preview/index.js +0 -72
  170. package/build/components/device-preview/index.js.map +0 -1
  171. package/build/components/header/document-actions/index.js +0 -82
  172. package/build/components/header/document-actions/index.js.map +0 -1
  173. package/build/components/header/header-toolbar/index.js +0 -156
  174. package/build/components/header/header-toolbar/index.js.map +0 -1
  175. package/build/components/secondary-sidebar/inserter-sidebar.js +0 -73
  176. package/build/components/secondary-sidebar/inserter-sidebar.js.map +0 -1
  177. package/build/components/secondary-sidebar/list-view-outline.js +0 -112
  178. package/build/components/secondary-sidebar/list-view-outline.js.map +0 -1
  179. package/build/components/secondary-sidebar/list-view-sidebar.js +0 -148
  180. package/build/components/secondary-sidebar/list-view-sidebar.js.map +0 -1
  181. package/build/components/sidebar/discussion-panel/index.js +0 -59
  182. package/build/components/sidebar/discussion-panel/index.js.map +0 -1
  183. package/build/components/sidebar/featured-image/index.js +0 -70
  184. package/build/components/sidebar/featured-image/index.js.map +0 -1
  185. package/build/components/sidebar/last-revision/index.js +0 -21
  186. package/build/components/sidebar/last-revision/index.js.map +0 -1
  187. package/build/components/sidebar/page-attributes/index.js +0 -65
  188. package/build/components/sidebar/page-attributes/index.js.map +0 -1
  189. package/build/components/sidebar/plugin-post-excerpt/index.js +0 -72
  190. package/build/components/sidebar/plugin-post-excerpt/index.js.map +0 -1
  191. package/build/components/sidebar/post-excerpt/index.js +0 -54
  192. package/build/components/sidebar/post-excerpt/index.js.map +0 -1
  193. package/build/components/sidebar/post-taxonomies/index.js +0 -30
  194. package/build/components/sidebar/post-taxonomies/index.js.map +0 -1
  195. package/build/components/sidebar/post-taxonomies/taxonomy-panel.js +0 -56
  196. package/build/components/sidebar/post-taxonomies/taxonomy-panel.js.map +0 -1
  197. package/build/components/sidebar/post-template/create-modal.js +0 -99
  198. package/build/components/sidebar/post-template/create-modal.js.map +0 -1
  199. package/build/components/sidebar/post-template/form.js +0 -110
  200. package/build/components/sidebar/post-template/form.js.map +0 -1
  201. package/build/components/sidebar/post-template/index.js +0 -106
  202. package/build/components/sidebar/post-template/index.js.map +0 -1
  203. package/build/components/view-link/index.js +0 -53
  204. package/build/components/view-link/index.js.map +0 -1
  205. package/build-module/components/device-preview/index.js +0 -65
  206. package/build-module/components/device-preview/index.js.map +0 -1
  207. package/build-module/components/header/document-actions/index.js +0 -74
  208. package/build-module/components/header/document-actions/index.js.map +0 -1
  209. package/build-module/components/header/header-toolbar/index.js +0 -148
  210. package/build-module/components/header/header-toolbar/index.js.map +0 -1
  211. package/build-module/components/secondary-sidebar/inserter-sidebar.js +0 -66
  212. package/build-module/components/secondary-sidebar/inserter-sidebar.js.map +0 -1
  213. package/build-module/components/secondary-sidebar/list-view-outline.js +0 -105
  214. package/build-module/components/secondary-sidebar/list-view-outline.js.map +0 -1
  215. package/build-module/components/secondary-sidebar/list-view-sidebar.js +0 -140
  216. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +0 -1
  217. package/build-module/components/sidebar/discussion-panel/index.js +0 -52
  218. package/build-module/components/sidebar/discussion-panel/index.js.map +0 -1
  219. package/build-module/components/sidebar/featured-image/index.js +0 -63
  220. package/build-module/components/sidebar/featured-image/index.js.map +0 -1
  221. package/build-module/components/sidebar/last-revision/index.js +0 -13
  222. package/build-module/components/sidebar/last-revision/index.js.map +0 -1
  223. package/build-module/components/sidebar/page-attributes/index.js +0 -57
  224. package/build-module/components/sidebar/page-attributes/index.js.map +0 -1
  225. package/build-module/components/sidebar/plugin-post-excerpt/index.js +0 -64
  226. package/build-module/components/sidebar/plugin-post-excerpt/index.js.map +0 -1
  227. package/build-module/components/sidebar/post-excerpt/index.js +0 -47
  228. package/build-module/components/sidebar/post-excerpt/index.js.map +0 -1
  229. package/build-module/components/sidebar/post-taxonomies/index.js +0 -21
  230. package/build-module/components/sidebar/post-taxonomies/index.js.map +0 -1
  231. package/build-module/components/sidebar/post-taxonomies/taxonomy-panel.js +0 -48
  232. package/build-module/components/sidebar/post-taxonomies/taxonomy-panel.js.map +0 -1
  233. package/build-module/components/sidebar/post-template/create-modal.js +0 -92
  234. package/build-module/components/sidebar/post-template/create-modal.js.map +0 -1
  235. package/build-module/components/sidebar/post-template/form.js +0 -102
  236. package/build-module/components/sidebar/post-template/form.js.map +0 -1
  237. package/build-module/components/sidebar/post-template/index.js +0 -98
  238. package/build-module/components/sidebar/post-template/index.js.map +0 -1
  239. package/build-module/components/view-link/index.js +0 -46
  240. package/build-module/components/view-link/index.js.map +0 -1
  241. package/src/components/device-preview/index.js +0 -73
  242. package/src/components/header/document-actions/index.js +0 -82
  243. package/src/components/header/document-actions/style.scss +0 -64
  244. package/src/components/header/header-toolbar/index.js +0 -182
  245. package/src/components/header/header-toolbar/style.scss +0 -114
  246. package/src/components/keyboard-shortcut-help-modal/test/__snapshots__/index.js.snap +0 -929
  247. package/src/components/secondary-sidebar/inserter-sidebar.js +0 -71
  248. package/src/components/secondary-sidebar/list-view-outline.js +0 -98
  249. package/src/components/secondary-sidebar/list-view-sidebar.js +0 -170
  250. package/src/components/secondary-sidebar/style.scss +0 -120
  251. package/src/components/sidebar/discussion-panel/index.js +0 -62
  252. package/src/components/sidebar/featured-image/index.js +0 -67
  253. package/src/components/sidebar/last-revision/index.js +0 -17
  254. package/src/components/sidebar/last-revision/style.scss +0 -10
  255. package/src/components/sidebar/page-attributes/index.js +0 -65
  256. package/src/components/sidebar/plugin-post-excerpt/index.js +0 -61
  257. package/src/components/sidebar/plugin-post-excerpt/test/index.js +0 -36
  258. package/src/components/sidebar/post-excerpt/index.js +0 -59
  259. package/src/components/sidebar/post-taxonomies/index.js +0 -30
  260. package/src/components/sidebar/post-taxonomies/taxonomy-panel.js +0 -48
  261. package/src/components/sidebar/post-template/create-modal.js +0 -140
  262. package/src/components/sidebar/post-template/form.js +0 -141
  263. package/src/components/sidebar/post-template/index.js +0 -120
  264. package/src/components/sidebar/post-template/style.scss +0 -22
  265. package/src/components/sidebar/settings-header/style.scss +0 -74
  266. package/src/components/sidebar/template/style.scss +0 -35
  267. package/src/components/view-link/index.js +0 -48
@@ -1,92 +1,40 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { Button } from '@wordpress/components';
5
- import { __, _x, sprintf } from '@wordpress/i18n';
6
- import { useDispatch, useSelect } from '@wordpress/data';
4
+ import { privateApis as componentsPrivateApis } from '@wordpress/components';
5
+ import { __, _x } from '@wordpress/i18n';
6
+ import { useSelect } from '@wordpress/data';
7
7
  import { store as editorStore } from '@wordpress/editor';
8
8
 
9
9
  /**
10
10
  * Internal dependencies
11
11
  */
12
- import { store as editPostStore } from '../../../store';
12
+ import { unlock } from '../../../lock-unlock';
13
+ import { sidebars } from '../settings-sidebar';
13
14
 
14
- const SettingsHeader = ( { sidebarName } ) => {
15
- const { openGeneralSidebar } = useDispatch( editPostStore );
16
- const openDocumentSettings = () =>
17
- openGeneralSidebar( 'edit-post/document' );
18
- const openBlockSettings = () => openGeneralSidebar( 'edit-post/block' );
15
+ const { Tabs } = unlock( componentsPrivateApis );
19
16
 
17
+ const SettingsHeader = () => {
20
18
  const { documentLabel, isTemplateMode } = useSelect( ( select ) => {
21
- const postTypeLabel = select( editorStore ).getPostTypeLabel();
19
+ const { getPostTypeLabel, getRenderingMode } = select( editorStore );
22
20
 
23
21
  return {
24
22
  // translators: Default label for the Document sidebar tab, not selected.
25
- documentLabel: postTypeLabel || _x( 'Document', 'noun' ),
26
- isTemplateMode: select( editPostStore ).isEditingTemplate(),
23
+ documentLabel: getPostTypeLabel() || _x( 'Document', 'noun' ),
24
+ isTemplateMode: getRenderingMode() === 'template-only',
27
25
  };
28
26
  }, [] );
29
27
 
30
- const [ documentAriaLabel, documentActiveClass ] =
31
- sidebarName === 'edit-post/document'
32
- ? // translators: ARIA label for the Document sidebar tab, selected. %s: Document label.
33
- [ sprintf( __( '%s (selected)' ), documentLabel ), 'is-active' ]
34
- : [ documentLabel, '' ];
35
-
36
- const [ blockAriaLabel, blockActiveClass ] =
37
- sidebarName === 'edit-post/block'
38
- ? // translators: ARIA label for the Block Settings Sidebar tab, selected.
39
- [ __( 'Block (selected)' ), 'is-active' ]
40
- : // translators: ARIA label for the Block Settings Sidebar tab, not selected.
41
- [ __( 'Block' ), '' ];
42
-
43
- const [ templateAriaLabel, templateActiveClass ] =
44
- sidebarName === 'edit-post/document'
45
- ? [ __( 'Template (selected)' ), 'is-active' ]
46
- : [ __( 'Template' ), '' ];
47
-
48
- /* Use a list so screen readers will announce how many tabs there are. */
49
28
  return (
50
- <ul>
51
- { ! isTemplateMode && (
52
- <li>
53
- <Button
54
- onClick={ openDocumentSettings }
55
- className={ `edit-post-sidebar__panel-tab ${ documentActiveClass }` }
56
- aria-label={ documentAriaLabel }
57
- data-label={ documentLabel }
58
- >
59
- { documentLabel }
60
- </Button>
61
- </li>
62
- ) }
63
- { isTemplateMode && (
64
- <li>
65
- <Button
66
- onClick={ openDocumentSettings }
67
- className={ `edit-post-sidebar__panel-tab ${ templateActiveClass }` }
68
- aria-label={ templateAriaLabel }
69
- data-label={ __( 'Template' ) }
70
- >
71
- { __( 'Template' ) }
72
- </Button>
73
- </li>
74
- ) }
75
- <li>
76
- <Button
77
- onClick={ openBlockSettings }
78
- className={ `edit-post-sidebar__panel-tab ${ blockActiveClass }` }
79
- aria-label={ blockAriaLabel }
80
- // translators: Data label for the Block Settings Sidebar tab.
81
- data-label={ __( 'Block' ) }
82
- >
83
- {
84
- // translators: Text label for the Block Settings Sidebar tab.
85
- __( 'Block' )
86
- }
87
- </Button>
88
- </li>
89
- </ul>
29
+ <Tabs.TabList>
30
+ <Tabs.Tab tabId={ sidebars.document }>
31
+ { isTemplateMode ? __( 'Template' ) : documentLabel }
32
+ </Tabs.Tab>
33
+ <Tabs.Tab tabId={ sidebars.block }>
34
+ { /* translators: Text label for the Block Settings Sidebar tab. */ }
35
+ { __( 'Block' ) }
36
+ </Tabs.Tab>
37
+ </Tabs.TabList>
90
38
  );
91
39
  };
92
40
 
@@ -5,75 +5,69 @@ import {
5
5
  BlockInspector,
6
6
  store as blockEditorStore,
7
7
  } from '@wordpress/block-editor';
8
- import { useSelect } from '@wordpress/data';
9
- import { Platform } from '@wordpress/element';
8
+ import { useSelect, useDispatch } from '@wordpress/data';
9
+ import { Platform, useCallback, useContext } from '@wordpress/element';
10
10
  import { isRTL, __ } from '@wordpress/i18n';
11
11
  import { drawerLeft, drawerRight } from '@wordpress/icons';
12
12
  import { store as interfaceStore } from '@wordpress/interface';
13
13
  import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
14
+ import {
15
+ store as editorStore,
16
+ PageAttributesPanel,
17
+ PostDiscussionPanel,
18
+ PostExcerptPanel,
19
+ PostFeaturedImagePanel,
20
+ PostLastRevisionPanel,
21
+ PostTaxonomiesPanel,
22
+ } from '@wordpress/editor';
14
23
 
15
24
  /**
16
25
  * Internal dependencies
17
26
  */
18
27
  import SettingsHeader from '../settings-header';
19
28
  import PostStatus from '../post-status';
20
- import LastRevision from '../last-revision';
21
- import PostTaxonomies from '../post-taxonomies';
22
- import FeaturedImage from '../featured-image';
23
- import PostExcerpt from '../post-excerpt';
24
- import DiscussionPanel from '../discussion-panel';
25
- import PageAttributes from '../page-attributes';
26
29
  import MetaBoxes from '../../meta-boxes';
27
30
  import PluginDocumentSettingPanel from '../plugin-document-setting-panel';
28
31
  import PluginSidebarEditPost from '../plugin-sidebar';
29
32
  import TemplateSummary from '../template-summary';
30
33
  import { store as editPostStore } from '../../../store';
34
+ import { privateApis as componentsPrivateApis } from '@wordpress/components';
35
+ import { unlock } from '../../../lock-unlock';
36
+
37
+ const { Tabs } = unlock( componentsPrivateApis );
31
38
 
32
39
  const SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {
33
40
  web: true,
34
41
  native: false,
35
42
  } );
43
+ export const sidebars = {
44
+ document: 'edit-post/document',
45
+ block: 'edit-post/block',
46
+ };
36
47
 
37
- const SettingsSidebar = () => {
38
- const { sidebarName, keyboardShortcut, isTemplateMode } = useSelect(
39
- ( select ) => {
40
- // The settings sidebar is used by the edit-post/document and edit-post/block sidebars.
41
- // sidebarName represents the sidebar that is active or that should be active when the SettingsSidebar toggle button is pressed.
42
- // If one of the two sidebars is active the component will contain the content of that sidebar.
43
- // When neither of the two sidebars is active we can not simply return null, because the PluginSidebarEditPost
44
- // component, besides being used to render the sidebar, also renders the toggle button. In that case sidebarName
45
- // should contain the sidebar that will be active when the toggle button is pressed. If a block
46
- // is selected, that should be edit-post/block otherwise it's edit-post/document.
47
- let sidebar = select( interfaceStore ).getActiveComplementaryArea(
48
- editPostStore.name
49
- );
50
- if (
51
- ! [ 'edit-post/document', 'edit-post/block' ].includes(
52
- sidebar
53
- )
54
- ) {
55
- if ( select( blockEditorStore ).getBlockSelectionStart() ) {
56
- sidebar = 'edit-post/block';
57
- }
58
- sidebar = 'edit-post/document';
59
- }
60
- const shortcut = select(
61
- keyboardShortcutsStore
62
- ).getShortcutRepresentation( 'core/edit-post/toggle-sidebar' );
63
- return {
64
- sidebarName: sidebar,
65
- keyboardShortcut: shortcut,
66
- isTemplateMode: select( editPostStore ).isEditingTemplate(),
67
- };
68
- },
69
- []
70
- );
48
+ const SidebarContent = ( {
49
+ sidebarName,
50
+ keyboardShortcut,
51
+ isTemplateMode,
52
+ } ) => {
53
+ // Because `PluginSidebarEditPost` renders a `ComplementaryArea`, we
54
+ // need to forward the `Tabs` context so it can be passed through the
55
+ // underlying slot/fill.
56
+ const tabsContextValue = useContext( Tabs.Context );
71
57
 
72
58
  return (
73
59
  <PluginSidebarEditPost
74
60
  identifier={ sidebarName }
75
- header={ <SettingsHeader sidebarName={ sidebarName } /> }
61
+ header={
62
+ <Tabs.Context.Provider value={ tabsContextValue }>
63
+ <SettingsHeader />
64
+ </Tabs.Context.Provider>
65
+ }
76
66
  closeLabel={ __( 'Close Settings' ) }
67
+ // This classname is added so we can apply a corrective negative
68
+ // margin to the panel.
69
+ // see https://github.com/WordPress/gutenberg/pull/55360#pullrequestreview-1737671049
70
+ className="edit-post-sidebar__panel"
77
71
  headerClassName="edit-post-sidebar__panel-tabs"
78
72
  /* translators: button label text should, if possible, be under 16 characters. */
79
73
  title={ __( 'Settings' ) }
@@ -81,25 +75,96 @@ const SettingsSidebar = () => {
81
75
  icon={ isRTL() ? drawerLeft : drawerRight }
82
76
  isActiveByDefault={ SIDEBAR_ACTIVE_BY_DEFAULT }
83
77
  >
84
- { ! isTemplateMode && sidebarName === 'edit-post/document' && (
85
- <>
86
- <PostStatus />
87
- <PluginDocumentSettingPanel.Slot />
88
- <LastRevision />
89
- <PostTaxonomies />
90
- <FeaturedImage />
91
- <PostExcerpt />
92
- <DiscussionPanel />
93
- <PageAttributes />
94
- <MetaBoxes location="side" />
95
- </>
96
- ) }
97
- { isTemplateMode && sidebarName === 'edit-post/document' && (
98
- <TemplateSummary />
99
- ) }
100
- { sidebarName === 'edit-post/block' && <BlockInspector /> }
78
+ <Tabs.Context.Provider value={ tabsContextValue }>
79
+ <Tabs.TabPanel tabId={ sidebars.document } focusable={ false }>
80
+ { ! isTemplateMode && (
81
+ <>
82
+ <PostStatus />
83
+ <PluginDocumentSettingPanel.Slot />
84
+ <PostLastRevisionPanel />
85
+ <PostTaxonomiesPanel />
86
+ <PostFeaturedImagePanel />
87
+ <PostExcerptPanel />
88
+ <PostDiscussionPanel />
89
+ <PageAttributesPanel />
90
+ <MetaBoxes location="side" />
91
+ </>
92
+ ) }
93
+ { isTemplateMode && <TemplateSummary /> }
94
+ </Tabs.TabPanel>
95
+ <Tabs.TabPanel tabId={ sidebars.block } focusable={ false }>
96
+ <BlockInspector />
97
+ </Tabs.TabPanel>
98
+ </Tabs.Context.Provider>
101
99
  </PluginSidebarEditPost>
102
100
  );
103
101
  };
104
102
 
103
+ const SettingsSidebar = () => {
104
+ const {
105
+ sidebarName,
106
+ isSettingsSidebarActive,
107
+ keyboardShortcut,
108
+ isTemplateMode,
109
+ } = useSelect( ( select ) => {
110
+ // The settings sidebar is used by the edit-post/document and edit-post/block sidebars.
111
+ // sidebarName represents the sidebar that is active or that should be active when the SettingsSidebar toggle button is pressed.
112
+ // If one of the two sidebars is active the component will contain the content of that sidebar.
113
+ // When neither of the two sidebars is active we can not simply return null, because the PluginSidebarEditPost
114
+ // component, besides being used to render the sidebar, also renders the toggle button. In that case sidebarName
115
+ // should contain the sidebar that will be active when the toggle button is pressed. If a block
116
+ // is selected, that should be edit-post/block otherwise it's edit-post/document.
117
+ let sidebar = select( interfaceStore ).getActiveComplementaryArea(
118
+ editPostStore.name
119
+ );
120
+ let isSettingsSidebar = true;
121
+ if ( ! [ sidebars.document, sidebars.block ].includes( sidebar ) ) {
122
+ isSettingsSidebar = false;
123
+ if ( select( blockEditorStore ).getBlockSelectionStart() ) {
124
+ sidebar = sidebars.block;
125
+ }
126
+ sidebar = sidebars.document;
127
+ }
128
+ const shortcut = select(
129
+ keyboardShortcutsStore
130
+ ).getShortcutRepresentation( 'core/edit-post/toggle-sidebar' );
131
+ return {
132
+ sidebarName: sidebar,
133
+ isSettingsSidebarActive: isSettingsSidebar,
134
+ keyboardShortcut: shortcut,
135
+ isTemplateMode:
136
+ select( editorStore ).getRenderingMode() === 'template-only',
137
+ };
138
+ }, [] );
139
+
140
+ const { openGeneralSidebar } = useDispatch( editPostStore );
141
+
142
+ const onTabSelect = useCallback(
143
+ ( newSelectedTabId ) => {
144
+ if ( !! newSelectedTabId ) {
145
+ openGeneralSidebar( newSelectedTabId );
146
+ }
147
+ },
148
+ [ openGeneralSidebar ]
149
+ );
150
+
151
+ return (
152
+ <Tabs
153
+ // Due to how this component is controlled (via a value from the
154
+ // `interfaceStore`), when the sidebar closes the currently selected
155
+ // tab can't be found. This causes the component to continuously reset
156
+ // the selection to `null` in an infinite loop.Proactively setting
157
+ // the selected tab to `null` avoids that.
158
+ selectedTabId={ isSettingsSidebarActive ? sidebarName : null }
159
+ onSelect={ onTabSelect }
160
+ >
161
+ <SidebarContent
162
+ sidebarName={ sidebarName }
163
+ keyboardShortcut={ keyboardShortcut }
164
+ isTemplateMode={ isTemplateMode }
165
+ />
166
+ </Tabs>
167
+ );
168
+ };
169
+
105
170
  export default SettingsSidebar;
@@ -1,20 +1,8 @@
1
1
  .components-panel__header.edit-post-sidebar__panel-tabs {
2
- justify-content: flex-start;
3
2
  padding-left: 0;
4
3
  padding-right: $grid-unit-20;
5
- border-top: 0;
6
- margin-top: 0;
7
-
8
- ul {
9
- display: flex;
10
- }
11
- li {
12
- margin: 0;
13
- }
14
4
 
15
5
  .components-button.has-icon {
16
- display: none;
17
- margin: 0 0 0 auto;
18
6
  padding: 0;
19
7
  min-width: $icon-size;
20
8
  height: $icon-size;
@@ -24,3 +12,7 @@
24
12
  }
25
13
  }
26
14
  }
15
+
16
+ .edit-post-sidebar__panel {
17
+ margin-top: -1px;
18
+ }
@@ -90,11 +90,11 @@ function StartPageOptionsModal( { onClose } ) {
90
90
  export default function StartPageOptions() {
91
91
  const [ isClosed, setIsClosed ] = useState( false );
92
92
  const shouldEnableModal = useSelect( ( select ) => {
93
- const { isCleanNewPost } = select( editorStore );
94
- const { isEditingTemplate, isFeatureActive } = select( editPostStore );
93
+ const { isCleanNewPost, getRenderingMode } = select( editorStore );
94
+ const { isFeatureActive } = select( editPostStore );
95
95
 
96
96
  return (
97
- ! isEditingTemplate() &&
97
+ getRenderingMode() === 'post-only' &&
98
98
  ! isFeatureActive( 'welcomeGuide' ) &&
99
99
  isCleanNewPost()
100
100
  );
@@ -39,10 +39,8 @@
39
39
  margin-right: auto;
40
40
 
41
41
  @include break-large() {
42
- padding: $grid-unit-20 $grid-unit-30 #{ $grid-unit-60 * 2 } $grid-unit-30;
43
42
  padding: 0 $grid-unit-30 $grid-unit-30 $grid-unit-30;
44
43
  }
45
-
46
44
  }
47
45
 
48
46
  // Exit code editor toolbar.
@@ -70,8 +68,4 @@
70
68
  font-size: $default-font-size;
71
69
  color: $gray-900;
72
70
  }
73
-
74
- .components-button svg {
75
- order: 1;
76
- }
77
71
  }