@wordpress/edit-post 7.11.0 → 7.12.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 (283) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-manager/category.js +14 -22
  3. package/build/components/block-manager/category.js.map +1 -1
  4. package/build/components/block-manager/checklist.js +6 -13
  5. package/build/components/block-manager/checklist.js.map +1 -1
  6. package/build/components/block-manager/index.js +10 -14
  7. package/build/components/block-manager/index.js.map +1 -1
  8. package/build/components/block-settings-menu/plugin-block-settings-menu-item.js +21 -26
  9. package/build/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -1
  10. package/build/components/device-preview/index.js +1 -1
  11. package/build/components/device-preview/index.js.map +1 -1
  12. package/build/components/editor-initialization/index.js +3 -4
  13. package/build/components/editor-initialization/index.js.map +1 -1
  14. package/build/components/header/document-title/index.js +103 -0
  15. package/build/components/header/document-title/index.js.map +1 -0
  16. package/build/components/header/fullscreen-mode-close/index.js +8 -9
  17. package/build/components/header/fullscreen-mode-close/index.js.map +1 -1
  18. package/build/components/header/header-toolbar/index.native.js +12 -13
  19. package/build/components/header/header-toolbar/index.native.js.map +1 -1
  20. package/build/components/header/index.js +7 -6
  21. package/build/components/header/index.js.map +1 -1
  22. package/build/components/header/main-dashboard-button/index.js +3 -4
  23. package/build/components/header/main-dashboard-button/index.js.map +1 -1
  24. package/build/components/header/more-menu/index.js +19 -23
  25. package/build/components/header/more-menu/index.js.map +1 -1
  26. package/build/components/header/post-publish-button-or-toggle.js +15 -16
  27. package/build/components/header/post-publish-button-or-toggle.js.map +1 -1
  28. package/build/components/header/tools-more-menu-group/index.js +7 -10
  29. package/build/components/header/tools-more-menu-group/index.js.map +1 -1
  30. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +3 -4
  31. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  32. package/build/components/keyboard-shortcut-help-modal/index.js +44 -54
  33. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  34. package/build/components/keyboard-shortcut-help-modal/shortcut.js +10 -12
  35. package/build/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  36. package/build/components/layout/actions-panel.js +5 -6
  37. package/build/components/layout/actions-panel.js.map +1 -1
  38. package/build/components/layout/index.js +3 -4
  39. package/build/components/layout/index.js.map +1 -1
  40. package/build/components/layout/index.native.js +3 -7
  41. package/build/components/layout/index.native.js.map +1 -1
  42. package/build/components/meta-boxes/index.js +9 -13
  43. package/build/components/meta-boxes/index.js.map +1 -1
  44. package/build/components/meta-boxes/meta-box-visibility.js +5 -8
  45. package/build/components/meta-boxes/meta-box-visibility.js.map +1 -1
  46. package/build/components/meta-boxes/meta-boxes-area/index.js +3 -4
  47. package/build/components/meta-boxes/meta-boxes-area/index.js.map +1 -1
  48. package/build/components/preferences-modal/meta-boxes-section.js +16 -23
  49. package/build/components/preferences-modal/meta-boxes-section.js.map +1 -1
  50. package/build/components/preferences-modal/options/enable-custom-fields.js +7 -9
  51. package/build/components/preferences-modal/options/enable-custom-fields.js.map +1 -1
  52. package/build/components/preferences-modal/options/enable-feature.js +12 -16
  53. package/build/components/preferences-modal/options/enable-feature.js.map +1 -1
  54. package/build/components/preferences-modal/options/enable-panel.js +10 -17
  55. package/build/components/preferences-modal/options/enable-panel.js.map +1 -1
  56. package/build/components/preferences-modal/options/enable-plugin-document-setting-panel.js +7 -10
  57. package/build/components/preferences-modal/options/enable-plugin-document-setting-panel.js.map +1 -1
  58. package/build/components/secondary-sidebar/list-view-sidebar.js +58 -44
  59. package/build/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  60. package/build/components/sidebar/discussion-panel/index.js +5 -7
  61. package/build/components/sidebar/discussion-panel/index.js.map +1 -1
  62. package/build/components/sidebar/featured-image/index.js +9 -17
  63. package/build/components/sidebar/featured-image/index.js.map +1 -1
  64. package/build/components/sidebar/page-attributes/index.js +3 -9
  65. package/build/components/sidebar/page-attributes/index.js.map +1 -1
  66. package/build/components/sidebar/plugin-document-setting-panel/index.js +20 -25
  67. package/build/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  68. package/build/components/sidebar/plugin-post-publish-panel/index.js +12 -15
  69. package/build/components/sidebar/plugin-post-publish-panel/index.js.map +1 -1
  70. package/build/components/sidebar/plugin-post-status-info/index.js +6 -9
  71. package/build/components/sidebar/plugin-post-status-info/index.js.map +1 -1
  72. package/build/components/sidebar/plugin-pre-publish-panel/index.js +12 -15
  73. package/build/components/sidebar/plugin-pre-publish-panel/index.js.map +1 -1
  74. package/build/components/sidebar/plugin-sidebar/index.js +4 -5
  75. package/build/components/sidebar/plugin-sidebar/index.js.map +1 -1
  76. package/build/components/sidebar/post-excerpt/index.js +5 -7
  77. package/build/components/sidebar/post-excerpt/index.js.map +1 -1
  78. package/build/components/sidebar/post-schedule/index.js +16 -23
  79. package/build/components/sidebar/post-schedule/index.js.map +1 -1
  80. package/build/components/sidebar/post-status/index.js +7 -11
  81. package/build/components/sidebar/post-status/index.js.map +1 -1
  82. package/build/components/sidebar/post-taxonomies/taxonomy-panel.js +9 -15
  83. package/build/components/sidebar/post-taxonomies/taxonomy-panel.js.map +1 -1
  84. package/build/components/sidebar/post-template/create-modal.js +3 -4
  85. package/build/components/sidebar/post-template/create-modal.js.map +1 -1
  86. package/build/components/sidebar/post-template/form.js +13 -20
  87. package/build/components/sidebar/post-template/form.js.map +1 -1
  88. package/build/components/sidebar/post-template/index.js +18 -25
  89. package/build/components/sidebar/post-template/index.js.map +1 -1
  90. package/build/components/sidebar/post-url/index.js +16 -23
  91. package/build/components/sidebar/post-url/index.js.map +1 -1
  92. package/build/components/sidebar/post-visibility/index.js +26 -36
  93. package/build/components/sidebar/post-visibility/index.js.map +1 -1
  94. package/build/components/sidebar/settings-header/index.js +3 -4
  95. package/build/components/sidebar/settings-header/index.js.map +1 -1
  96. package/build/components/sidebar/template-summary/index.js +1 -1
  97. package/build/components/sidebar/template-summary/index.js.map +1 -1
  98. package/build/components/start-page-options/index.js +3 -4
  99. package/build/components/start-page-options/index.js.map +1 -1
  100. package/build/components/view-link/index.js +1 -1
  101. package/build/components/view-link/index.js.map +1 -1
  102. package/build/components/visual-editor/block-inspector-button.js +4 -5
  103. package/build/components/visual-editor/block-inspector-button.js.map +1 -1
  104. package/build/components/visual-editor/header.native.js +6 -7
  105. package/build/components/visual-editor/header.native.js.map +1 -1
  106. package/build/components/visual-editor/index.js +32 -48
  107. package/build/components/visual-editor/index.js.map +1 -1
  108. package/build/components/welcome-guide/image.js +4 -5
  109. package/build/components/welcome-guide/image.js.map +1 -1
  110. package/build/editor.js +14 -20
  111. package/build/editor.js.map +1 -1
  112. package/build/editor.native.js +3 -6
  113. package/build/editor.native.js.map +1 -1
  114. package/build/hooks/validate-multiple-use/index.js +18 -29
  115. package/build/hooks/validate-multiple-use/index.js.map +1 -1
  116. package/build/plugins/index.js +20 -23
  117. package/build/plugins/index.js.map +1 -1
  118. package/build/plugins/keyboard-shortcuts-help-menu-item/index.js +3 -4
  119. package/build/plugins/keyboard-shortcuts-help-menu-item/index.js.map +1 -1
  120. package/build/store/actions.js +60 -88
  121. package/build/store/actions.js.map +1 -1
  122. package/build/store/reducer.js +11 -43
  123. package/build/store/reducer.js.map +1 -1
  124. package/build/store/selectors.js +11 -16
  125. package/build/store/selectors.js.map +1 -1
  126. package/build-module/components/block-manager/category.js +14 -22
  127. package/build-module/components/block-manager/category.js.map +1 -1
  128. package/build-module/components/block-manager/checklist.js +6 -13
  129. package/build-module/components/block-manager/checklist.js.map +1 -1
  130. package/build-module/components/block-manager/index.js +10 -14
  131. package/build-module/components/block-manager/index.js.map +1 -1
  132. package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js +21 -26
  133. package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -1
  134. package/build-module/components/device-preview/index.js +1 -1
  135. package/build-module/components/device-preview/index.js.map +1 -1
  136. package/build-module/components/editor-initialization/index.js +3 -4
  137. package/build-module/components/editor-initialization/index.js.map +1 -1
  138. package/build-module/components/header/document-title/index.js +88 -0
  139. package/build-module/components/header/document-title/index.js.map +1 -0
  140. package/build-module/components/header/fullscreen-mode-close/index.js +7 -8
  141. package/build-module/components/header/fullscreen-mode-close/index.js.map +1 -1
  142. package/build-module/components/header/header-toolbar/index.native.js +12 -13
  143. package/build-module/components/header/header-toolbar/index.native.js.map +1 -1
  144. package/build-module/components/header/index.js +7 -6
  145. package/build-module/components/header/index.js.map +1 -1
  146. package/build-module/components/header/main-dashboard-button/index.js +3 -4
  147. package/build-module/components/header/main-dashboard-button/index.js.map +1 -1
  148. package/build-module/components/header/more-menu/index.js +19 -23
  149. package/build-module/components/header/more-menu/index.js.map +1 -1
  150. package/build-module/components/header/post-publish-button-or-toggle.js +15 -16
  151. package/build-module/components/header/post-publish-button-or-toggle.js.map +1 -1
  152. package/build-module/components/header/tools-more-menu-group/index.js +7 -10
  153. package/build-module/components/header/tools-more-menu-group/index.js.map +1 -1
  154. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +3 -4
  155. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  156. package/build-module/components/keyboard-shortcut-help-modal/index.js +42 -52
  157. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  158. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js +10 -12
  159. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  160. package/build-module/components/layout/actions-panel.js +5 -6
  161. package/build-module/components/layout/actions-panel.js.map +1 -1
  162. package/build-module/components/layout/index.js +3 -4
  163. package/build-module/components/layout/index.js.map +1 -1
  164. package/build-module/components/layout/index.native.js +3 -7
  165. package/build-module/components/layout/index.native.js.map +1 -1
  166. package/build-module/components/meta-boxes/index.js +9 -13
  167. package/build-module/components/meta-boxes/index.js.map +1 -1
  168. package/build-module/components/meta-boxes/meta-box-visibility.js +5 -8
  169. package/build-module/components/meta-boxes/meta-box-visibility.js.map +1 -1
  170. package/build-module/components/meta-boxes/meta-boxes-area/index.js +3 -4
  171. package/build-module/components/meta-boxes/meta-boxes-area/index.js.map +1 -1
  172. package/build-module/components/preferences-modal/meta-boxes-section.js +16 -23
  173. package/build-module/components/preferences-modal/meta-boxes-section.js.map +1 -1
  174. package/build-module/components/preferences-modal/options/enable-custom-fields.js +7 -9
  175. package/build-module/components/preferences-modal/options/enable-custom-fields.js.map +1 -1
  176. package/build-module/components/preferences-modal/options/enable-feature.js +12 -16
  177. package/build-module/components/preferences-modal/options/enable-feature.js.map +1 -1
  178. package/build-module/components/preferences-modal/options/enable-panel.js +10 -17
  179. package/build-module/components/preferences-modal/options/enable-panel.js.map +1 -1
  180. package/build-module/components/preferences-modal/options/enable-plugin-document-setting-panel.js +7 -10
  181. package/build-module/components/preferences-modal/options/enable-plugin-document-setting-panel.js.map +1 -1
  182. package/build-module/components/secondary-sidebar/list-view-sidebar.js +58 -44
  183. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  184. package/build-module/components/sidebar/discussion-panel/index.js +5 -7
  185. package/build-module/components/sidebar/discussion-panel/index.js.map +1 -1
  186. package/build-module/components/sidebar/featured-image/index.js +9 -17
  187. package/build-module/components/sidebar/featured-image/index.js.map +1 -1
  188. package/build-module/components/sidebar/page-attributes/index.js +3 -9
  189. package/build-module/components/sidebar/page-attributes/index.js.map +1 -1
  190. package/build-module/components/sidebar/plugin-document-setting-panel/index.js +20 -25
  191. package/build-module/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  192. package/build-module/components/sidebar/plugin-post-publish-panel/index.js +12 -15
  193. package/build-module/components/sidebar/plugin-post-publish-panel/index.js.map +1 -1
  194. package/build-module/components/sidebar/plugin-post-status-info/index.js +6 -9
  195. package/build-module/components/sidebar/plugin-post-status-info/index.js.map +1 -1
  196. package/build-module/components/sidebar/plugin-pre-publish-panel/index.js +12 -15
  197. package/build-module/components/sidebar/plugin-pre-publish-panel/index.js.map +1 -1
  198. package/build-module/components/sidebar/plugin-sidebar/index.js +4 -5
  199. package/build-module/components/sidebar/plugin-sidebar/index.js.map +1 -1
  200. package/build-module/components/sidebar/post-excerpt/index.js +5 -7
  201. package/build-module/components/sidebar/post-excerpt/index.js.map +1 -1
  202. package/build-module/components/sidebar/post-schedule/index.js +16 -23
  203. package/build-module/components/sidebar/post-schedule/index.js.map +1 -1
  204. package/build-module/components/sidebar/post-status/index.js +7 -11
  205. package/build-module/components/sidebar/post-status/index.js.map +1 -1
  206. package/build-module/components/sidebar/post-taxonomies/taxonomy-panel.js +9 -15
  207. package/build-module/components/sidebar/post-taxonomies/taxonomy-panel.js.map +1 -1
  208. package/build-module/components/sidebar/post-template/create-modal.js +3 -4
  209. package/build-module/components/sidebar/post-template/create-modal.js.map +1 -1
  210. package/build-module/components/sidebar/post-template/form.js +13 -20
  211. package/build-module/components/sidebar/post-template/form.js.map +1 -1
  212. package/build-module/components/sidebar/post-template/index.js +18 -25
  213. package/build-module/components/sidebar/post-template/index.js.map +1 -1
  214. package/build-module/components/sidebar/post-url/index.js +16 -23
  215. package/build-module/components/sidebar/post-url/index.js.map +1 -1
  216. package/build-module/components/sidebar/post-visibility/index.js +26 -36
  217. package/build-module/components/sidebar/post-visibility/index.js.map +1 -1
  218. package/build-module/components/sidebar/settings-header/index.js +3 -4
  219. package/build-module/components/sidebar/settings-header/index.js.map +1 -1
  220. package/build-module/components/sidebar/template-summary/index.js +1 -1
  221. package/build-module/components/sidebar/template-summary/index.js.map +1 -1
  222. package/build-module/components/start-page-options/index.js +3 -4
  223. package/build-module/components/start-page-options/index.js.map +1 -1
  224. package/build-module/components/view-link/index.js +1 -1
  225. package/build-module/components/view-link/index.js.map +1 -1
  226. package/build-module/components/visual-editor/block-inspector-button.js +4 -5
  227. package/build-module/components/visual-editor/block-inspector-button.js.map +1 -1
  228. package/build-module/components/visual-editor/header.native.js +6 -7
  229. package/build-module/components/visual-editor/header.native.js.map +1 -1
  230. package/build-module/components/visual-editor/index.js +35 -49
  231. package/build-module/components/visual-editor/index.js.map +1 -1
  232. package/build-module/components/welcome-guide/image.js +4 -5
  233. package/build-module/components/welcome-guide/image.js.map +1 -1
  234. package/build-module/editor.js +14 -20
  235. package/build-module/editor.js.map +1 -1
  236. package/build-module/editor.native.js +3 -6
  237. package/build-module/editor.native.js.map +1 -1
  238. package/build-module/hooks/validate-multiple-use/index.js +18 -29
  239. package/build-module/hooks/validate-multiple-use/index.js.map +1 -1
  240. package/build-module/plugins/index.js +20 -23
  241. package/build-module/plugins/index.js.map +1 -1
  242. package/build-module/plugins/keyboard-shortcuts-help-menu-item/index.js +3 -4
  243. package/build-module/plugins/keyboard-shortcuts-help-menu-item/index.js.map +1 -1
  244. package/build-module/store/actions.js +60 -88
  245. package/build-module/store/actions.js.map +1 -1
  246. package/build-module/store/reducer.js +11 -43
  247. package/build-module/store/reducer.js.map +1 -1
  248. package/build-module/store/selectors.js +11 -16
  249. package/build-module/store/selectors.js.map +1 -1
  250. package/build-style/style-rtl.css +63 -101
  251. package/build-style/style.css +63 -101
  252. package/package.json +32 -32
  253. package/src/components/header/document-title/index.js +86 -0
  254. package/src/components/header/document-title/style.scss +61 -0
  255. package/src/components/header/header-toolbar/style.scss +0 -1
  256. package/src/components/header/index.js +4 -2
  257. package/src/components/header/style.scss +6 -0
  258. package/src/components/secondary-sidebar/list-view-sidebar.js +68 -66
  259. package/src/components/secondary-sidebar/style.scss +28 -31
  260. package/src/components/visual-editor/index.js +10 -21
  261. package/src/components/visual-editor/style.scss +0 -13
  262. package/src/style.scss +1 -1
  263. package/build/components/header/template-title/delete-template.js +0 -117
  264. package/build/components/header/template-title/delete-template.js.map +0 -1
  265. package/build/components/header/template-title/edit-template-title.js +0 -95
  266. package/build/components/header/template-title/edit-template-title.js.map +0 -1
  267. package/build/components/header/template-title/index.js +0 -124
  268. package/build/components/header/template-title/index.js.map +0 -1
  269. package/build/components/header/template-title/template-description.js +0 -55
  270. package/build/components/header/template-title/template-description.js.map +0 -1
  271. package/build-module/components/header/template-title/delete-template.js +0 -104
  272. package/build-module/components/header/template-title/delete-template.js.map +0 -1
  273. package/build-module/components/header/template-title/edit-template-title.js +0 -83
  274. package/build-module/components/header/template-title/edit-template-title.js.map +0 -1
  275. package/build-module/components/header/template-title/index.js +0 -105
  276. package/build-module/components/header/template-title/index.js.map +0 -1
  277. package/build-module/components/header/template-title/template-description.js +0 -45
  278. package/build-module/components/header/template-title/template-description.js.map +0 -1
  279. package/src/components/header/template-title/delete-template.js +0 -106
  280. package/src/components/header/template-title/edit-template-title.js +0 -78
  281. package/src/components/header/template-title/index.js +0 -115
  282. package/src/components/header/template-title/style.scss +0 -94
  283. package/src/components/header/template-title/template-description.js +0 -42
@@ -18,7 +18,7 @@ import { default as DevicePreview } from '../device-preview';
18
18
  import ViewLink from '../view-link';
19
19
  import MainDashboardButton from './main-dashboard-button';
20
20
  import { store as editPostStore } from '../../store';
21
- import TemplateTitle from './template-title';
21
+ import DocumentTitle from './document-title';
22
22
 
23
23
  function Header( { setEntitiesSavedStatesCallback } ) {
24
24
  const isLargeViewport = useViewportMatch( 'large' );
@@ -70,7 +70,9 @@ function Header( { setEntitiesSavedStatesCallback } ) {
70
70
  className="edit-post-header__toolbar"
71
71
  >
72
72
  <HeaderToolbar />
73
- <TemplateTitle />
73
+ <div className="edit-post-header__document-title">
74
+ <DocumentTitle />
75
+ </div>
74
76
  </motion.div>
75
77
  <motion.div
76
78
  variants={ slideY }
@@ -44,6 +44,12 @@
44
44
  }
45
45
  }
46
46
 
47
+ .edit-post-header__document-title {
48
+ flex-grow: 1;
49
+ display: flex;
50
+ justify-content: center;
51
+ }
52
+
47
53
  /**
48
54
  * Buttons on the right side
49
55
  */
@@ -1,13 +1,8 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
9
4
  import { __experimentalListView as ListView } from '@wordpress/block-editor';
10
- import { Button } from '@wordpress/components';
5
+ import { Button, TabPanel } from '@wordpress/components';
11
6
  import {
12
7
  useFocusOnMount,
13
8
  useFocusReturn,
@@ -30,7 +25,9 @@ import ListViewOutline from './list-view-outline';
30
25
  export default function ListViewSidebar() {
31
26
  const { setIsListViewOpened } = useDispatch( editPostStore );
32
27
 
28
+ // This hook handles focus when the sidebar first renders.
33
29
  const focusOnMountRef = useFocusOnMount( 'firstElement' );
30
+ // The next 2 hooks handle focus for when the sidebar closes and returning focus to the element that had focus before sidebar opened.
34
31
  const headerFocusReturnRef = useFocusReturn();
35
32
  const contentFocusReturnRef = useFocusReturn();
36
33
 
@@ -41,17 +38,27 @@ export default function ListViewSidebar() {
41
38
  }
42
39
  }
43
40
 
41
+ // Use internal state instead of a ref to make sure that the component
42
+ // re-renders when the dropZoneElement updates.
43
+ const [ dropZoneElement, setDropZoneElement ] = useState( null );
44
+ // Tracks our current tab.
44
45
  const [ tab, setTab ] = useState( 'list-view' );
45
46
 
46
47
  // This ref refers to the sidebar as a whole.
47
48
  const sidebarRef = useRef();
48
- // This ref refers to the list view tab button.
49
- const listViewTabRef = useRef();
50
- // This ref refers to the outline tab button.
51
- const outlineTabRef = useRef();
49
+ // This ref refers to the tab panel.
50
+ const tabPanelRef = useRef();
52
51
  // This ref refers to the list view application area.
53
52
  const listViewRef = useRef();
54
53
 
54
+ // Must merge the refs together so focus can be handled properly in the next function.
55
+ const listViewContainerRef = useMergeRefs( [
56
+ contentFocusReturnRef,
57
+ focusOnMountRef,
58
+ listViewRef,
59
+ setDropZoneElement,
60
+ ] );
61
+
55
62
  /*
56
63
  * Callback function to handle list view or outline focus.
57
64
  *
@@ -60,9 +67,11 @@ export default function ListViewSidebar() {
60
67
  * @return void
61
68
  */
62
69
  function handleSidebarFocus( currentTab ) {
70
+ // Tab panel focus.
71
+ const tabPanelFocus = focus.tabbable.find( tabPanelRef.current )[ 0 ];
63
72
  // List view tab is selected.
64
73
  if ( currentTab === 'list-view' ) {
65
- // Either focus the list view or the list view tab button. Must have a fallback because the list view does not render when there are no blocks.
74
+ // Either focus the list view or the tab panel. Must have a fallback because the list view does not render when there are no blocks.
66
75
  const listViewApplicationFocus = focus.tabbable.find(
67
76
  listViewRef.current
68
77
  )[ 0 ];
@@ -70,11 +79,11 @@ export default function ListViewSidebar() {
70
79
  listViewApplicationFocus
71
80
  )
72
81
  ? listViewApplicationFocus
73
- : listViewTabRef.current;
82
+ : tabPanelFocus;
74
83
  listViewFocusArea.focus();
75
84
  // Outline tab is selected.
76
85
  } else {
77
- outlineTabRef.current.focus();
86
+ tabPanelFocus.focus();
78
87
  }
79
88
  }
80
89
 
@@ -93,6 +102,22 @@ export default function ListViewSidebar() {
93
102
  }
94
103
  } );
95
104
 
105
+ /**
106
+ * Render tab content for a given tab name.
107
+ *
108
+ * @param {string} tabName The name of the tab to render.
109
+ */
110
+ function renderTabContent( tabName ) {
111
+ if ( tabName === 'list-view' ) {
112
+ return (
113
+ <div className="edit-post-editor__list-view-panel-content">
114
+ <ListView dropZoneElement={ dropZoneElement } />
115
+ </div>
116
+ );
117
+ }
118
+ return <ListViewOutline />;
119
+ }
120
+
96
121
  return (
97
122
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
98
123
  <div
@@ -100,63 +125,40 @@ export default function ListViewSidebar() {
100
125
  onKeyDown={ closeOnEscape }
101
126
  ref={ sidebarRef }
102
127
  >
103
- <div
104
- className="edit-post-editor__document-overview-panel-header components-panel__header edit-post-sidebar__panel-tabs"
128
+ <Button
129
+ className="edit-post-editor__document-overview-panel__close-button"
105
130
  ref={ headerFocusReturnRef }
131
+ icon={ closeSmall }
132
+ label={ __( 'Close' ) }
133
+ onClick={ () => setIsListViewOpened( false ) }
134
+ />
135
+ <TabPanel
136
+ className="edit-post-editor__document-overview-panel__tab-panel"
137
+ ref={ tabPanelRef }
138
+ onSelect={ ( tabName ) => setTab( tabName ) }
139
+ selectOnMove={ false }
140
+ tabs={ [
141
+ {
142
+ name: 'list-view',
143
+ title: 'List View',
144
+ className: 'edit-post-sidebar__panel-tab',
145
+ },
146
+ {
147
+ name: 'outline',
148
+ title: 'Outline',
149
+ className: 'edit-post-sidebar__panel-tab',
150
+ },
151
+ ] }
106
152
  >
107
- <Button
108
- icon={ closeSmall }
109
- label={ __( 'Close' ) }
110
- onClick={ () => setIsListViewOpened( false ) }
111
- />
112
- <ul>
113
- <li>
114
- <Button
115
- ref={ listViewTabRef }
116
- onClick={ () => {
117
- setTab( 'list-view' );
118
- } }
119
- className={ classnames(
120
- 'edit-post-sidebar__panel-tab',
121
- { 'is-active': tab === 'list-view' }
122
- ) }
123
- aria-current={ tab === 'list-view' }
124
- >
125
- { __( 'List View' ) }
126
- </Button>
127
- </li>
128
- <li>
129
- <Button
130
- ref={ outlineTabRef }
131
- onClick={ () => {
132
- setTab( 'outline' );
133
- } }
134
- className={ classnames(
135
- 'edit-post-sidebar__panel-tab',
136
- { 'is-active': tab === 'outline' }
137
- ) }
138
- aria-current={ tab === 'outline' }
139
- >
140
- { __( 'Outline' ) }
141
- </Button>
142
- </li>
143
- </ul>
144
- </div>
145
- <div
146
- ref={ useMergeRefs( [
147
- contentFocusReturnRef,
148
- focusOnMountRef,
149
- listViewRef,
150
- ] ) }
151
- className="edit-post-editor__list-view-container"
152
- >
153
- { tab === 'list-view' && (
154
- <div className="edit-post-editor__list-view-panel-content">
155
- <ListView />
153
+ { ( currentTab ) => (
154
+ <div
155
+ className="edit-post-editor__list-view-container"
156
+ ref={ listViewContainerRef }
157
+ >
158
+ { renderTabContent( currentTab.name ) }
156
159
  </div>
157
160
  ) }
158
- { tab === 'outline' && <ListViewOutline /> }
159
- </div>
161
+ </TabPanel>
160
162
  </div>
161
163
  );
162
164
  }
@@ -17,8 +17,29 @@
17
17
  width: 350px;
18
18
  }
19
19
 
20
- .edit-post-sidebar__panel-tabs {
21
- flex-direction: row-reverse;
20
+ .edit-post-editor__document-overview-panel__close-button {
21
+ position: absolute;
22
+ right: $grid-unit-10;
23
+ top: math.div($grid-unit-60 - $button-size, 2); // ( tab height - button size ) / 2
24
+ z-index: 1;
25
+ background: $white;
26
+ }
27
+
28
+ // The TabPanel style overrides in the following blocks should be removed when the new TabPanel is available.
29
+ .components-tab-panel__tabs {
30
+ border-bottom: $border-width solid $gray-300;
31
+ box-sizing: border-box;
32
+ display: flex;
33
+ width: 100%;
34
+ padding-right: $grid-unit-70;
35
+
36
+ .edit-post-sidebar__panel-tab {
37
+ width: 50%;
38
+ }
39
+ }
40
+
41
+ .components-tab-panel__tab-content {
42
+ height: calc(100% - #{$grid-unit-60});
22
43
  }
23
44
  }
24
45
 
@@ -37,34 +58,6 @@
37
58
  }
38
59
  }
39
60
 
40
- .edit-post-editor__document-overview-panel-header {
41
- border-bottom: $border-width solid $gray-300;
42
- display: flex;
43
- justify-content: space-between;
44
- height: $grid-unit-60;
45
- padding-left: $grid-unit-20;
46
- padding-right: $grid-unit-05;
47
- ul {
48
- width: calc(100% - #{ $grid-unit-50 });
49
- }
50
- li {
51
- width: 50%;
52
- button {
53
- width: 100%;
54
- text-align: initial;
55
- }
56
- }
57
- li:only-child {
58
- width: 100%;
59
- }
60
-
61
- &.components-panel__header.edit-post-sidebar__panel-tabs {
62
- .components-button.has-icon {
63
- display: flex;
64
- }
65
- }
66
- }
67
-
68
61
  .edit-post-editor__list-view-panel-content,
69
62
  .edit-post-editor__list-view-container > .document-outline,
70
63
  .edit-post-editor__list-view-empty-headings {
@@ -118,5 +111,9 @@
118
111
  .edit-post-editor__list-view-container {
119
112
  display: flex;
120
113
  flex-direction: column;
121
- height: calc(100% - #{$grid-unit-60});
114
+ height: 100%;
115
+ }
116
+
117
+ .edit-post-editor__document-overview-panel__tab-panel {
118
+ height: 100%;
122
119
  }
@@ -31,12 +31,10 @@ import {
31
31
  __experimentaluseLayoutStyles as useLayoutStyles,
32
32
  } from '@wordpress/block-editor';
33
33
  import { useEffect, useRef, useMemo } from '@wordpress/element';
34
- import { Button, __unstableMotion as motion } from '@wordpress/components';
35
- import { useSelect, useDispatch } from '@wordpress/data';
34
+ import { __unstableMotion as motion } from '@wordpress/components';
35
+ import { useSelect } from '@wordpress/data';
36
36
  import { useMergeRefs } from '@wordpress/compose';
37
- import { arrowLeft } from '@wordpress/icons';
38
- import { __ } from '@wordpress/i18n';
39
- import { parse } from '@wordpress/blocks';
37
+ import { parse, store as blocksStore } from '@wordpress/blocks';
40
38
  import { store as coreStore } from '@wordpress/core-data';
41
39
 
42
40
  /**
@@ -114,6 +112,7 @@ export default function VisualEditor( { styles } ) {
114
112
  wrapperBlockName,
115
113
  wrapperUniqueId,
116
114
  isBlockBasedTheme,
115
+ hasV3BlocksOnly,
117
116
  } = useSelect( ( select ) => {
118
117
  const {
119
118
  isFeatureActive,
@@ -123,6 +122,7 @@ export default function VisualEditor( { styles } ) {
123
122
  } = select( editPostStore );
124
123
  const { getCurrentPostId, getCurrentPostType, getEditorSettings } =
125
124
  select( editorStore );
125
+ const { getBlockTypes } = select( blocksStore );
126
126
  const _isTemplateMode = isEditingTemplate();
127
127
  let _wrapperBlockName;
128
128
 
@@ -153,6 +153,9 @@ export default function VisualEditor( { styles } ) {
153
153
  wrapperBlockName: _wrapperBlockName,
154
154
  wrapperUniqueId: getCurrentPostId(),
155
155
  isBlockBasedTheme: editorSettings.__unstableIsBlockBasedTheme,
156
+ hasV3BlocksOnly: getBlockTypes().every( ( type ) => {
157
+ return type.apiVersion >= 3;
158
+ } ),
156
159
  };
157
160
  }, [] );
158
161
  const { isCleanNewPost } = useSelect( editorStore );
@@ -175,8 +178,6 @@ export default function VisualEditor( { styles } ) {
175
178
  _settings.__experimentalFeatures?.useRootPaddingAwareAlignments,
176
179
  };
177
180
  }, [] );
178
- const { clearSelectedBlock } = useDispatch( blockEditorStore );
179
- const { setIsEditingTemplate } = useDispatch( editPostStore );
180
181
  const desktopCanvasStyles = {
181
182
  height: '100%',
182
183
  width: '100%',
@@ -349,18 +350,6 @@ export default function VisualEditor( { styles } ) {
349
350
  } }
350
351
  ref={ blockSelectionClearerRef }
351
352
  >
352
- { isTemplateMode && (
353
- <Button
354
- className="edit-post-visual-editor__exit-template-mode"
355
- icon={ arrowLeft }
356
- onClick={ () => {
357
- clearSelectedBlock();
358
- setIsEditingTemplate( false );
359
- } }
360
- >
361
- { __( 'Back' ) }
362
- </Button>
363
- ) }
364
353
  <motion.div
365
354
  animate={ animatedStyles }
366
355
  initial={ desktopCanvasStyles }
@@ -368,8 +357,8 @@ export default function VisualEditor( { styles } ) {
368
357
  >
369
358
  <MaybeIframe
370
359
  shouldIframe={
371
- ( isGutenbergPlugin &&
372
- isBlockBasedTheme &&
360
+ ( ( hasV3BlocksOnly ||
361
+ ( isGutenbergPlugin && isBlockBasedTheme ) ) &&
373
362
  ! hasMetaBoxes ) ||
374
363
  isTemplateMode ||
375
364
  deviceType === 'Tablet' ||
@@ -50,19 +50,6 @@
50
50
  margin-bottom: var(--wp--style--block-gap);
51
51
  }
52
52
 
53
- .edit-post-visual-editor__exit-template-mode {
54
- position: absolute;
55
- top: $grid-unit-10;
56
- left: $grid-unit-10;
57
- color: $white;
58
-
59
- &:active:not([aria-disabled="true"]),
60
- &:focus:not([aria-disabled="true"]),
61
- &:hover {
62
- color: $gray-100;
63
- }
64
- }
65
-
66
53
  .edit-post-visual-editor__content-area {
67
54
  width: 100%;
68
55
  height: 100%;
package/src/style.scss CHANGED
@@ -2,7 +2,7 @@
2
2
  @import "./components/header/style.scss";
3
3
  @import "./components/header/fullscreen-mode-close/style.scss";
4
4
  @import "./components/header/header-toolbar/style.scss";
5
- @import "./components/header/template-title/style.scss";
5
+ @import "./components/header/document-title/style.scss";
6
6
  @import "./components/keyboard-shortcut-help-modal/style.scss";
7
7
  @import "./components/layout/style.scss";
8
8
  @import "./components/block-manager/style.scss";
@@ -1,117 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = DeleteTemplate;
7
-
8
- var _element = require("@wordpress/element");
9
-
10
- var _i18n = require("@wordpress/i18n");
11
-
12
- var _components = require("@wordpress/components");
13
-
14
- var _blockEditor = require("@wordpress/block-editor");
15
-
16
- var _data = require("@wordpress/data");
17
-
18
- var _editor = require("@wordpress/editor");
19
-
20
- var _coreData = require("@wordpress/core-data");
21
-
22
- var _store = require("../../../store");
23
-
24
- /**
25
- * WordPress dependencies
26
- */
27
-
28
- /**
29
- * Internal dependencies
30
- */
31
- function DeleteTemplate() {
32
- const {
33
- clearSelectedBlock
34
- } = (0, _data.useDispatch)(_blockEditor.store);
35
- const {
36
- setIsEditingTemplate
37
- } = (0, _data.useDispatch)(_store.store);
38
- const {
39
- getEditorSettings
40
- } = (0, _data.useSelect)(_editor.store);
41
- const {
42
- updateEditorSettings,
43
- editPost
44
- } = (0, _data.useDispatch)(_editor.store);
45
- const {
46
- deleteEntityRecord
47
- } = (0, _data.useDispatch)(_coreData.store);
48
- const {
49
- template
50
- } = (0, _data.useSelect)(select => {
51
- const {
52
- isEditingTemplate,
53
- getEditedPostTemplate
54
- } = select(_store.store);
55
-
56
- const _isEditing = isEditingTemplate();
57
-
58
- return {
59
- template: _isEditing ? getEditedPostTemplate() : null
60
- };
61
- }, []);
62
- const [showConfirmDialog, setShowConfirmDialog] = (0, _element.useState)(false);
63
-
64
- if (!template || !template.wp_id) {
65
- return null;
66
- }
67
-
68
- let templateTitle = template.slug;
69
-
70
- if (template !== null && template !== void 0 && template.title) {
71
- templateTitle = template.title;
72
- }
73
-
74
- const isRevertable = template === null || template === void 0 ? void 0 : template.has_theme_file;
75
-
76
- const onDelete = () => {
77
- var _settings$availableTe;
78
-
79
- clearSelectedBlock();
80
- setIsEditingTemplate(false);
81
- setShowConfirmDialog(false);
82
- editPost({
83
- template: ''
84
- });
85
- const settings = getEditorSettings();
86
- const newAvailableTemplates = Object.fromEntries(Object.entries((_settings$availableTe = settings.availableTemplates) !== null && _settings$availableTe !== void 0 ? _settings$availableTe : {}).filter(_ref => {
87
- let [id] = _ref;
88
- return id !== template.slug;
89
- }));
90
- updateEditorSettings({
91
- availableTemplates: newAvailableTemplates
92
- });
93
- deleteEntityRecord('postType', 'wp_template', template.id, {
94
- throwOnError: true
95
- });
96
- };
97
-
98
- return (0, _element.createElement)(_components.MenuGroup, {
99
- className: "edit-post-template-top-area__second-menu-group"
100
- }, (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuItem, {
101
- className: "edit-post-template-top-area__delete-template-button",
102
- isDestructive: !isRevertable,
103
- onClick: () => {
104
- setShowConfirmDialog(true);
105
- },
106
- info: isRevertable ? (0, _i18n.__)('Use the template as supplied by the theme.') : undefined
107
- }, isRevertable ? (0, _i18n.__)('Clear customizations') : (0, _i18n.__)('Delete template')), (0, _element.createElement)(_components.__experimentalConfirmDialog, {
108
- isOpen: showConfirmDialog,
109
- onConfirm: onDelete,
110
- onCancel: () => {
111
- setShowConfirmDialog(false);
112
- }
113
- }, (0, _i18n.sprintf)(
114
- /* translators: %s: template name */
115
- (0, _i18n.__)('Are you sure you want to delete the %s template? It may be used by other pages or posts.'), templateTitle))));
116
- }
117
- //# sourceMappingURL=delete-template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-post/src/components/header/template-title/delete-template.js"],"names":["DeleteTemplate","clearSelectedBlock","blockEditorStore","setIsEditingTemplate","editPostStore","getEditorSettings","editorStore","updateEditorSettings","editPost","deleteEntityRecord","coreStore","template","select","isEditingTemplate","getEditedPostTemplate","_isEditing","showConfirmDialog","setShowConfirmDialog","wp_id","templateTitle","slug","title","isRevertable","has_theme_file","onDelete","settings","newAvailableTemplates","Object","fromEntries","entries","availableTemplates","filter","id","throwOnError","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function DeleteTemplate() {\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst { getEditorSettings } = useSelect( editorStore );\n\tconst { updateEditorSettings, editPost } = useDispatch( editorStore );\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\tconst { template } = useSelect( ( select ) => {\n\t\tconst { isEditingTemplate, getEditedPostTemplate } =\n\t\t\tselect( editPostStore );\n\t\tconst _isEditing = isEditingTemplate();\n\t\treturn {\n\t\t\ttemplate: _isEditing ? getEditedPostTemplate() : null,\n\t\t};\n\t}, [] );\n\tconst [ showConfirmDialog, setShowConfirmDialog ] = useState( false );\n\n\tif ( ! template || ! template.wp_id ) {\n\t\treturn null;\n\t}\n\tlet templateTitle = template.slug;\n\tif ( template?.title ) {\n\t\ttemplateTitle = template.title;\n\t}\n\n\tconst isRevertable = template?.has_theme_file;\n\n\tconst onDelete = () => {\n\t\tclearSelectedBlock();\n\t\tsetIsEditingTemplate( false );\n\t\tsetShowConfirmDialog( false );\n\n\t\teditPost( {\n\t\t\ttemplate: '',\n\t\t} );\n\t\tconst settings = getEditorSettings();\n\t\tconst newAvailableTemplates = Object.fromEntries(\n\t\t\tObject.entries( settings.availableTemplates ?? {} ).filter(\n\t\t\t\t( [ id ] ) => id !== template.slug\n\t\t\t)\n\t\t);\n\t\tupdateEditorSettings( {\n\t\t\tavailableTemplates: newAvailableTemplates,\n\t\t} );\n\t\tdeleteEntityRecord( 'postType', 'wp_template', template.id, {\n\t\t\tthrowOnError: true,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<MenuGroup className=\"edit-post-template-top-area__second-menu-group\">\n\t\t\t<>\n\t\t\t\t<MenuItem\n\t\t\t\t\tclassName=\"edit-post-template-top-area__delete-template-button\"\n\t\t\t\t\tisDestructive={ ! isRevertable }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetShowConfirmDialog( true );\n\t\t\t\t\t} }\n\t\t\t\t\tinfo={\n\t\t\t\t\t\tisRevertable\n\t\t\t\t\t\t\t? __( 'Use the template as supplied by the theme.' )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isRevertable\n\t\t\t\t\t\t? __( 'Clear customizations' )\n\t\t\t\t\t\t: __( 'Delete template' ) }\n\t\t\t\t</MenuItem>\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen={ showConfirmDialog }\n\t\t\t\t\tonConfirm={ onDelete }\n\t\t\t\t\tonCancel={ () => {\n\t\t\t\t\t\tsetShowConfirmDialog( false );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: template name */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Are you sure you want to delete the %s template? It may be used by other pages or posts.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttemplateTitle\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t</>\n\t\t</MenuGroup>\n\t);\n}\n"]}
@@ -1,95 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = EditTemplateTitle;
7
-
8
- var _element = require("@wordpress/element");
9
-
10
- var _i18n = require("@wordpress/i18n");
11
-
12
- var _components = require("@wordpress/components");
13
-
14
- var _data = require("@wordpress/data");
15
-
16
- var _editor = require("@wordpress/editor");
17
-
18
- var _coreData = require("@wordpress/core-data");
19
-
20
- var _store = require("../../../store");
21
-
22
- /**
23
- * WordPress dependencies
24
- */
25
-
26
- /**
27
- * Internal dependencies
28
- */
29
- function EditTemplateTitle() {
30
- const [forceEmpty, setForceEmpty] = (0, _element.useState)(false);
31
- const {
32
- template
33
- } = (0, _data.useSelect)(select => {
34
- const {
35
- getEditedPostTemplate
36
- } = select(_store.store);
37
- return {
38
- template: getEditedPostTemplate()
39
- };
40
- }, []);
41
- const {
42
- editEntityRecord
43
- } = (0, _data.useDispatch)(_coreData.store);
44
- const {
45
- getEditorSettings
46
- } = (0, _data.useSelect)(_editor.store);
47
- const {
48
- updateEditorSettings
49
- } = (0, _data.useDispatch)(_editor.store); // Only user-created and non-default templates can change the name.
50
-
51
- if (!template.is_custom || template.has_theme_file) {
52
- return null;
53
- }
54
-
55
- let templateTitle = (0, _i18n.__)('Default');
56
-
57
- if (template !== null && template !== void 0 && template.title) {
58
- templateTitle = template.title;
59
- } else if (!!template) {
60
- templateTitle = template.slug;
61
- }
62
-
63
- return (0, _element.createElement)("div", {
64
- className: "edit-site-template-details__group"
65
- }, (0, _element.createElement)(_components.TextControl, {
66
- __nextHasNoMarginBottom: true,
67
- label: (0, _i18n.__)('Title'),
68
- value: forceEmpty ? '' : templateTitle,
69
- help: (0, _i18n.__)('Give the template a title that indicates its purpose, e.g. "Full Width".'),
70
- onChange: newTitle => {
71
- var _settings$availableTe;
72
-
73
- // Allow having the field temporarily empty while typing.
74
- if (!newTitle && !forceEmpty) {
75
- setForceEmpty(true);
76
- return;
77
- }
78
-
79
- setForceEmpty(false);
80
- const settings = getEditorSettings();
81
- const newAvailableTemplates = Object.fromEntries(Object.entries((_settings$availableTe = settings.availableTemplates) !== null && _settings$availableTe !== void 0 ? _settings$availableTe : {}).map(_ref => {
82
- let [id, existingTitle] = _ref;
83
- return [id, id !== template.slug ? existingTitle : newTitle];
84
- }));
85
- updateEditorSettings({
86
- availableTemplates: newAvailableTemplates
87
- });
88
- editEntityRecord('postType', 'wp_template', template.id, {
89
- title: newTitle
90
- });
91
- },
92
- onBlur: () => setForceEmpty(false)
93
- }));
94
- }
95
- //# sourceMappingURL=edit-template-title.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-post/src/components/header/template-title/edit-template-title.js"],"names":["EditTemplateTitle","forceEmpty","setForceEmpty","template","select","getEditedPostTemplate","editPostStore","editEntityRecord","coreStore","getEditorSettings","editorStore","updateEditorSettings","is_custom","has_theme_file","templateTitle","title","slug","newTitle","settings","newAvailableTemplates","Object","fromEntries","entries","availableTemplates","map","id","existingTitle"],"mappings":";;;;;;;AAMA;;AAHA;;AACA;;AACA;;AAEA;;AACA;;AAKA;;AAbA;AACA;AACA;;AAQA;AACA;AACA;AAGe,SAASA,iBAAT,GAA6B;AAC3C,QAAM,CAAEC,UAAF,EAAcC,aAAd,IAAgC,uBAAU,KAAV,CAAtC;AACA,QAAM;AAAEC,IAAAA;AAAF,MAAe,qBAAaC,MAAF,IAAc;AAC7C,UAAM;AAAEC,MAAAA;AAAF,QAA4BD,MAAM,CAAEE,YAAF,CAAxC;AACA,WAAO;AACNH,MAAAA,QAAQ,EAAEE,qBAAqB;AADzB,KAAP;AAGA,GALoB,EAKlB,EALkB,CAArB;AAOA,QAAM;AAAEE,IAAAA;AAAF,MAAuB,uBAAaC,eAAb,CAA7B;AACA,QAAM;AAAEC,IAAAA;AAAF,MAAwB,qBAAWC,aAAX,CAA9B;AACA,QAAM;AAAEC,IAAAA;AAAF,MAA2B,uBAAaD,aAAb,CAAjC,CAX2C,CAa3C;;AACA,MAAK,CAAEP,QAAQ,CAACS,SAAX,IAAwBT,QAAQ,CAACU,cAAtC,EAAuD;AACtD,WAAO,IAAP;AACA;;AAED,MAAIC,aAAa,GAAG,cAAI,SAAJ,CAApB;;AACA,MAAKX,QAAL,aAAKA,QAAL,eAAKA,QAAQ,CAAEY,KAAf,EAAuB;AACtBD,IAAAA,aAAa,GAAGX,QAAQ,CAACY,KAAzB;AACA,GAFD,MAEO,IAAK,CAAC,CAAEZ,QAAR,EAAmB;AACzBW,IAAAA,aAAa,GAAGX,QAAQ,CAACa,IAAzB;AACA;;AAED,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,uBAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAG,cAAI,OAAJ,CAFT;AAGC,IAAA,KAAK,EAAGf,UAAU,GAAG,EAAH,GAAQa,aAH3B;AAIC,IAAA,IAAI,EAAG,cACN,0EADM,CAJR;AAOC,IAAA,QAAQ,EAAKG,QAAF,IAAgB;AAAA;;AAC1B;AACA,UAAK,CAAEA,QAAF,IAAc,CAAEhB,UAArB,EAAkC;AACjCC,QAAAA,aAAa,CAAE,IAAF,CAAb;AACA;AACA;;AACDA,MAAAA,aAAa,CAAE,KAAF,CAAb;AAEA,YAAMgB,QAAQ,GAAGT,iBAAiB,EAAlC;AACA,YAAMU,qBAAqB,GAAGC,MAAM,CAACC,WAAP,CAC7BD,MAAM,CAACE,OAAP,0BAAgBJ,QAAQ,CAACK,kBAAzB,yEAA+C,EAA/C,EAAoDC,GAApD,CACC;AAAA,YAAE,CAAEC,EAAF,EAAMC,aAAN,CAAF;AAAA,eAA6B,CAC5BD,EAD4B,EAE5BA,EAAE,KAAKtB,QAAQ,CAACa,IAAhB,GAAuBU,aAAvB,GAAuCT,QAFX,CAA7B;AAAA,OADD,CAD6B,CAA9B;AAQAN,MAAAA,oBAAoB,CAAE;AACrBY,QAAAA,kBAAkB,EAAEJ;AADC,OAAF,CAApB;AAGAZ,MAAAA,gBAAgB,CAAE,UAAF,EAAc,aAAd,EAA6BJ,QAAQ,CAACsB,EAAtC,EAA0C;AACzDV,QAAAA,KAAK,EAAEE;AADkD,OAA1C,CAAhB;AAGA,KA9BF;AA+BC,IAAA,MAAM,EAAG,MAAMf,aAAa,CAAE,KAAF;AA/B7B,IADD,CADD;AAqCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { TextControl } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nexport default function EditTemplateTitle() {\n\tconst [ forceEmpty, setForceEmpty ] = useState( false );\n\tconst { template } = useSelect( ( select ) => {\n\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\t\treturn {\n\t\t\ttemplate: getEditedPostTemplate(),\n\t\t};\n\t}, [] );\n\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst { getEditorSettings } = useSelect( editorStore );\n\tconst { updateEditorSettings } = useDispatch( editorStore );\n\n\t// Only user-created and non-default templates can change the name.\n\tif ( ! template.is_custom || template.has_theme_file ) {\n\t\treturn null;\n\t}\n\n\tlet templateTitle = __( 'Default' );\n\tif ( template?.title ) {\n\t\ttemplateTitle = template.title;\n\t} else if ( !! template ) {\n\t\ttemplateTitle = template.slug;\n\t}\n\n\treturn (\n\t\t<div className=\"edit-site-template-details__group\">\n\t\t\t<TextControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\tvalue={ forceEmpty ? '' : templateTitle }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Give the template a title that indicates its purpose, e.g. \"Full Width\".'\n\t\t\t\t) }\n\t\t\t\tonChange={ ( newTitle ) => {\n\t\t\t\t\t// Allow having the field temporarily empty while typing.\n\t\t\t\t\tif ( ! newTitle && ! forceEmpty ) {\n\t\t\t\t\t\tsetForceEmpty( true );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetForceEmpty( false );\n\n\t\t\t\t\tconst settings = getEditorSettings();\n\t\t\t\t\tconst newAvailableTemplates = Object.fromEntries(\n\t\t\t\t\t\tObject.entries( settings.availableTemplates ?? {} ).map(\n\t\t\t\t\t\t\t( [ id, existingTitle ] ) => [\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\tid !== template.slug ? existingTitle : newTitle,\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t\tupdateEditorSettings( {\n\t\t\t\t\t\tavailableTemplates: newAvailableTemplates,\n\t\t\t\t\t} );\n\t\t\t\t\teditEntityRecord( 'postType', 'wp_template', template.id, {\n\t\t\t\t\t\ttitle: newTitle,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tonBlur={ () => setForceEmpty( false ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"]}