@wordpress/edit-site 5.10.0 → 5.11.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 (252) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-template/{add-custom-generic-template-modal.js → add-custom-generic-template-modal-content.js} +7 -22
  3. package/build/components/add-new-template/add-custom-generic-template-modal-content.js.map +1 -0
  4. package/build/components/add-new-template/{add-custom-template-modal.js → add-custom-template-modal-content.js} +11 -21
  5. package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -0
  6. package/build/components/add-new-template/new-template.js +98 -65
  7. package/build/components/add-new-template/new-template.js.map +1 -1
  8. package/build/components/block-editor/index.js +1 -3
  9. package/build/components/block-editor/index.js.map +1 -1
  10. package/build/components/create-template-part-modal/index.js +6 -7
  11. package/build/components/create-template-part-modal/index.js.map +1 -1
  12. package/build/components/editor/index.js +15 -40
  13. package/build/components/editor/index.js.map +1 -1
  14. package/build/components/editor-canvas-container/index.js +10 -3
  15. package/build/components/editor-canvas-container/index.js.map +1 -1
  16. package/build/components/global-styles/screen-block.js +80 -3
  17. package/build/components/global-styles/screen-block.js.map +1 -1
  18. package/build/components/global-styles/screen-revisions/index.js +3 -10
  19. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  20. package/build/components/global-styles/screen-revisions/revisions-buttons.js +16 -18
  21. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  22. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +15 -24
  23. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  24. package/build/components/global-styles/screen-root.js +4 -4
  25. package/build/components/global-styles/screen-root.js.map +1 -1
  26. package/build/components/global-styles/style-variations-container.js +6 -10
  27. package/build/components/global-styles/style-variations-container.js.map +1 -1
  28. package/build/components/global-styles/ui.js +9 -9
  29. package/build/components/global-styles/ui.js.map +1 -1
  30. package/build/components/header-edit-mode/document-actions/index.js +28 -103
  31. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  32. package/build/components/header-edit-mode/index.js +14 -1
  33. package/build/components/header-edit-mode/index.js.map +1 -1
  34. package/build/components/layout/hooks.js +54 -0
  35. package/build/components/layout/hooks.js.map +1 -0
  36. package/build/components/layout/index.js +45 -98
  37. package/build/components/layout/index.js.map +1 -1
  38. package/build/components/list/actions/index.js +5 -2
  39. package/build/components/list/actions/index.js.map +1 -1
  40. package/build/components/resizable-frame/index.js +242 -0
  41. package/build/components/resizable-frame/index.js.map +1 -0
  42. package/build/components/revisions/index.js +2 -1
  43. package/build/components/revisions/index.js.map +1 -1
  44. package/build/components/secondary-sidebar/list-view-sidebar.js +4 -3
  45. package/build/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  46. package/build/components/sidebar/index.js +4 -4
  47. package/build/components/sidebar/index.js.map +1 -1
  48. package/build/components/sidebar-edit-mode/template-revisions/index.js +1 -1
  49. package/build/components/sidebar-edit-mode/template-revisions/index.js.map +1 -1
  50. package/build/components/sidebar-navigation-screen-global-styles/index.js +75 -11
  51. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  52. package/build/components/sidebar-navigation-screen-main/index.js +24 -33
  53. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  54. package/build/components/sidebar-navigation-screen-navigation-menu/index.js +162 -0
  55. package/build/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -0
  56. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js +17 -0
  57. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -0
  58. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +53 -103
  59. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  60. package/build/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +87 -0
  61. package/build/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js.map +1 -0
  62. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +14 -71
  63. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -1
  64. package/build/components/sidebar-navigation-screen-navigation-menus/navigator-button.js +53 -0
  65. package/build/components/sidebar-navigation-screen-navigation-menus/navigator-button.js.map +1 -0
  66. package/build/components/sidebar-navigation-screen-templates/index.js +36 -11
  67. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  68. package/build/components/site-hub/index.js +1 -3
  69. package/build/components/site-hub/index.js.map +1 -1
  70. package/build/components/style-book/index.js +93 -19
  71. package/build/components/style-book/index.js.map +1 -1
  72. package/build/components/use-edited-entity-record/index.js +8 -4
  73. package/build/components/use-edited-entity-record/index.js.map +1 -1
  74. package/build/hooks/commands/use-edit-mode-commands.js +105 -0
  75. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -0
  76. package/build/store/actions.js +5 -3
  77. package/build/store/actions.js.map +1 -1
  78. package/build-module/components/add-new-template/{add-custom-generic-template-modal.js → add-custom-generic-template-modal-content.js} +8 -20
  79. package/build-module/components/add-new-template/add-custom-generic-template-modal-content.js.map +1 -0
  80. package/build-module/components/add-new-template/{add-custom-template-modal.js → add-custom-template-modal-content.js} +13 -22
  81. package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -0
  82. package/build-module/components/add-new-template/new-template.js +98 -67
  83. package/build-module/components/add-new-template/new-template.js.map +1 -1
  84. package/build-module/components/block-editor/index.js +1 -3
  85. package/build-module/components/block-editor/index.js.map +1 -1
  86. package/build-module/components/create-template-part-modal/index.js +7 -8
  87. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  88. package/build-module/components/editor/index.js +16 -43
  89. package/build-module/components/editor/index.js.map +1 -1
  90. package/build-module/components/editor-canvas-container/index.js +7 -3
  91. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  92. package/build-module/components/global-styles/screen-block.js +82 -4
  93. package/build-module/components/global-styles/screen-block.js.map +1 -1
  94. package/build-module/components/global-styles/screen-revisions/index.js +3 -10
  95. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  96. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +16 -19
  97. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  98. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +15 -24
  99. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  100. package/build-module/components/global-styles/screen-root.js +4 -4
  101. package/build-module/components/global-styles/screen-root.js.map +1 -1
  102. package/build-module/components/global-styles/style-variations-container.js +7 -11
  103. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  104. package/build-module/components/global-styles/ui.js +10 -10
  105. package/build-module/components/global-styles/ui.js.map +1 -1
  106. package/build-module/components/header-edit-mode/document-actions/index.js +31 -107
  107. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  108. package/build-module/components/header-edit-mode/index.js +14 -2
  109. package/build-module/components/header-edit-mode/index.js.map +1 -1
  110. package/build-module/components/layout/hooks.js +41 -0
  111. package/build-module/components/layout/hooks.js.map +1 -0
  112. package/build-module/components/layout/index.js +46 -101
  113. package/build-module/components/layout/index.js.map +1 -1
  114. package/build-module/components/list/actions/index.js +6 -3
  115. package/build-module/components/list/actions/index.js.map +1 -1
  116. package/build-module/components/resizable-frame/index.js +228 -0
  117. package/build-module/components/resizable-frame/index.js.map +1 -0
  118. package/build-module/components/revisions/index.js +2 -1
  119. package/build-module/components/revisions/index.js.map +1 -1
  120. package/build-module/components/secondary-sidebar/list-view-sidebar.js +3 -3
  121. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  122. package/build-module/components/sidebar/index.js +3 -3
  123. package/build-module/components/sidebar/index.js.map +1 -1
  124. package/build-module/components/sidebar-edit-mode/template-revisions/index.js +1 -1
  125. package/build-module/components/sidebar-edit-mode/template-revisions/index.js.map +1 -1
  126. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +70 -14
  127. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  128. package/build-module/components/sidebar-navigation-screen-main/index.js +21 -32
  129. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  130. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js +141 -0
  131. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -0
  132. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js +10 -0
  133. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -0
  134. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +52 -103
  135. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  136. package/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +71 -0
  137. package/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js.map +1 -0
  138. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +12 -71
  139. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -1
  140. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigator-button.js +40 -0
  141. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigator-button.js.map +1 -0
  142. package/build-module/components/sidebar-navigation-screen-templates/index.js +35 -11
  143. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  144. package/build-module/components/site-hub/index.js +1 -3
  145. package/build-module/components/site-hub/index.js.map +1 -1
  146. package/build-module/components/style-book/index.js +93 -20
  147. package/build-module/components/style-book/index.js.map +1 -1
  148. package/build-module/components/use-edited-entity-record/index.js +8 -4
  149. package/build-module/components/use-edited-entity-record/index.js.map +1 -1
  150. package/build-module/hooks/commands/use-edit-mode-commands.js +86 -0
  151. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -0
  152. package/build-module/store/actions.js +5 -3
  153. package/build-module/store/actions.js.map +1 -1
  154. package/build-style/style-rtl.css +233 -210
  155. package/build-style/style.css +234 -210
  156. package/package.json +37 -37
  157. package/src/components/add-new-template/add-custom-generic-template-modal-content.js +82 -0
  158. package/src/components/add-new-template/{add-custom-template-modal.js → add-custom-template-modal-content.js} +13 -26
  159. package/src/components/add-new-template/new-template.js +139 -153
  160. package/src/components/add-new-template/style.scss +79 -66
  161. package/src/components/block-editor/index.js +2 -3
  162. package/src/components/create-template-part-modal/index.js +19 -25
  163. package/src/components/editor/index.js +16 -45
  164. package/src/components/editor/style.scss +21 -6
  165. package/src/components/editor-canvas-container/index.js +28 -19
  166. package/src/components/global-styles/screen-block.js +74 -3
  167. package/src/components/global-styles/screen-revisions/index.js +3 -11
  168. package/src/components/global-styles/screen-revisions/revisions-buttons.js +33 -25
  169. package/src/components/global-styles/screen-revisions/style.scss +3 -2
  170. package/src/components/global-styles/screen-revisions/test/use-global-styles-revisions.js +16 -3
  171. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +15 -19
  172. package/src/components/global-styles/screen-root.js +5 -3
  173. package/src/components/global-styles/style-variations-container.js +13 -18
  174. package/src/components/global-styles/style.scss +3 -0
  175. package/src/components/global-styles/ui.js +11 -9
  176. package/src/components/header-edit-mode/document-actions/index.js +26 -129
  177. package/src/components/header-edit-mode/document-actions/style.scss +28 -59
  178. package/src/components/header-edit-mode/index.js +18 -0
  179. package/src/components/header-edit-mode/style.scss +1 -0
  180. package/src/components/layout/hooks.js +46 -0
  181. package/src/components/layout/index.js +56 -125
  182. package/src/components/layout/style.scss +8 -2
  183. package/src/components/list/actions/index.js +12 -5
  184. package/src/components/list/style.scss +1 -0
  185. package/src/components/resizable-frame/index.js +253 -0
  186. package/src/components/resizable-frame/style.scss +69 -0
  187. package/src/components/revisions/index.js +1 -0
  188. package/src/components/secondary-sidebar/list-view-sidebar.js +2 -1
  189. package/src/components/sidebar/index.js +4 -4
  190. package/src/components/sidebar-edit-mode/template-revisions/index.js +1 -2
  191. package/src/components/sidebar-navigation-item/style.scss +9 -0
  192. package/src/components/sidebar-navigation-screen/style.scss +1 -2
  193. package/src/components/sidebar-navigation-screen-global-styles/index.js +106 -21
  194. package/src/components/sidebar-navigation-screen-main/index.js +35 -52
  195. package/src/components/sidebar-navigation-screen-navigation-menu/index.js +157 -0
  196. package/src/components/sidebar-navigation-screen-navigation-menus/constants.js +9 -0
  197. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +63 -117
  198. package/src/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +83 -0
  199. package/src/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +6 -72
  200. package/src/components/sidebar-navigation-screen-navigation-menus/navigator-button.js +47 -0
  201. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +6 -20
  202. package/src/components/sidebar-navigation-screen-templates/index.js +53 -14
  203. package/src/components/site-hub/index.js +8 -9
  204. package/src/components/start-template-options/style.scss +20 -21
  205. package/src/components/style-book/index.js +132 -43
  206. package/src/components/style-book/style.scss +19 -0
  207. package/src/components/use-edited-entity-record/index.js +12 -3
  208. package/src/hooks/commands/use-edit-mode-commands.js +79 -0
  209. package/src/store/actions.js +4 -5
  210. package/src/store/test/utils.js +15 -5
  211. package/src/style.scss +1 -1
  212. package/build/components/add-new-template/add-custom-generic-template-modal.js.map +0 -1
  213. package/build/components/add-new-template/add-custom-template-modal.js.map +0 -1
  214. package/build/components/global-styles/border-panel.js +0 -135
  215. package/build/components/global-styles/border-panel.js.map +0 -1
  216. package/build/components/navigate-to-link/index.js +0 -51
  217. package/build/components/navigate-to-link/index.js.map +0 -1
  218. package/build/components/sidebar-navigation-screen-navigation-menus/loader.js +0 -19
  219. package/build/components/sidebar-navigation-screen-navigation-menus/loader.js.map +0 -1
  220. package/build/components/template-details/edit-template-title.js +0 -42
  221. package/build/components/template-details/edit-template-title.js.map +0 -1
  222. package/build/components/template-details/index.js +0 -103
  223. package/build/components/template-details/index.js.map +0 -1
  224. package/build/components/template-details/template-areas.js +0 -166
  225. package/build/components/template-details/template-areas.js.map +0 -1
  226. package/build/components/template-details/template-part-area-selector.js +0 -48
  227. package/build/components/template-details/template-part-area-selector.js.map +0 -1
  228. package/build-module/components/add-new-template/add-custom-generic-template-modal.js.map +0 -1
  229. package/build-module/components/add-new-template/add-custom-template-modal.js.map +0 -1
  230. package/build-module/components/global-styles/border-panel.js +0 -125
  231. package/build-module/components/global-styles/border-panel.js.map +0 -1
  232. package/build-module/components/navigate-to-link/index.js +0 -39
  233. package/build-module/components/navigate-to-link/index.js.map +0 -1
  234. package/build-module/components/sidebar-navigation-screen-navigation-menus/loader.js +0 -11
  235. package/build-module/components/sidebar-navigation-screen-navigation-menus/loader.js.map +0 -1
  236. package/build-module/components/template-details/edit-template-title.js +0 -33
  237. package/build-module/components/template-details/edit-template-title.js.map +0 -1
  238. package/build-module/components/template-details/index.js +0 -83
  239. package/build-module/components/template-details/index.js.map +0 -1
  240. package/build-module/components/template-details/template-areas.js +0 -145
  241. package/build-module/components/template-details/template-areas.js.map +0 -1
  242. package/build-module/components/template-details/template-part-area-selector.js +0 -36
  243. package/build-module/components/template-details/template-part-area-selector.js.map +0 -1
  244. package/src/components/add-new-template/add-custom-generic-template-modal.js +0 -101
  245. package/src/components/global-styles/border-panel.js +0 -114
  246. package/src/components/navigate-to-link/index.js +0 -46
  247. package/src/components/sidebar-navigation-screen-navigation-menus/loader.js +0 -9
  248. package/src/components/template-details/edit-template-title.js +0 -41
  249. package/src/components/template-details/index.js +0 -113
  250. package/src/components/template-details/style.scss +0 -72
  251. package/src/components/template-details/template-areas.js +0 -167
  252. package/src/components/template-details/template-part-area-selector.js +0 -39
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/edit-site",
3
- "version": "5.10.0",
3
+ "version": "5.11.0",
4
4
  "description": "Edit Site Page module for WordPress.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -27,46 +27,46 @@
27
27
  "react-native": "src/index",
28
28
  "dependencies": {
29
29
  "@babel/runtime": "^7.16.0",
30
- "@wordpress/a11y": "^3.33.0",
31
- "@wordpress/api-fetch": "^6.30.0",
32
- "@wordpress/block-editor": "^12.1.0",
33
- "@wordpress/block-library": "^8.10.0",
34
- "@wordpress/blocks": "^12.10.0",
35
- "@wordpress/commands": "^0.4.0",
36
- "@wordpress/components": "^24.0.0",
37
- "@wordpress/compose": "^6.10.0",
38
- "@wordpress/core-commands": "^0.2.0",
39
- "@wordpress/core-data": "^6.10.0",
40
- "@wordpress/data": "^9.3.0",
41
- "@wordpress/date": "^4.33.0",
42
- "@wordpress/deprecated": "^3.33.0",
43
- "@wordpress/dom": "^3.33.0",
44
- "@wordpress/editor": "^13.10.0",
45
- "@wordpress/element": "^5.10.0",
46
- "@wordpress/hooks": "^3.33.0",
47
- "@wordpress/html-entities": "^3.33.0",
48
- "@wordpress/i18n": "^4.33.0",
49
- "@wordpress/icons": "^9.24.0",
50
- "@wordpress/interface": "^5.10.0",
51
- "@wordpress/keyboard-shortcuts": "^4.10.0",
52
- "@wordpress/keycodes": "^3.33.0",
53
- "@wordpress/media-utils": "^4.24.0",
54
- "@wordpress/notices": "^4.1.0",
55
- "@wordpress/plugins": "^6.1.0",
56
- "@wordpress/preferences": "^3.10.0",
57
- "@wordpress/private-apis": "^0.15.0",
58
- "@wordpress/reusable-blocks": "^4.10.0",
59
- "@wordpress/router": "^0.2.0",
60
- "@wordpress/style-engine": "^1.16.0",
61
- "@wordpress/url": "^3.34.0",
62
- "@wordpress/viewport": "^5.10.0",
63
- "@wordpress/widgets": "^3.10.0",
30
+ "@wordpress/a11y": "^3.34.0",
31
+ "@wordpress/api-fetch": "^6.31.0",
32
+ "@wordpress/block-editor": "^12.2.0",
33
+ "@wordpress/block-library": "^8.11.0",
34
+ "@wordpress/blocks": "^12.11.0",
35
+ "@wordpress/commands": "^0.5.0",
36
+ "@wordpress/components": "^25.0.0",
37
+ "@wordpress/compose": "^6.11.0",
38
+ "@wordpress/core-commands": "^0.3.0",
39
+ "@wordpress/core-data": "^6.11.0",
40
+ "@wordpress/data": "^9.4.0",
41
+ "@wordpress/date": "^4.34.0",
42
+ "@wordpress/deprecated": "^3.34.0",
43
+ "@wordpress/dom": "^3.34.0",
44
+ "@wordpress/editor": "^13.11.0",
45
+ "@wordpress/element": "^5.11.0",
46
+ "@wordpress/hooks": "^3.34.0",
47
+ "@wordpress/html-entities": "^3.34.0",
48
+ "@wordpress/i18n": "^4.34.0",
49
+ "@wordpress/icons": "^9.25.0",
50
+ "@wordpress/interface": "^5.11.0",
51
+ "@wordpress/keyboard-shortcuts": "^4.11.0",
52
+ "@wordpress/keycodes": "^3.34.0",
53
+ "@wordpress/media-utils": "^4.25.0",
54
+ "@wordpress/notices": "^4.2.0",
55
+ "@wordpress/plugins": "^6.2.0",
56
+ "@wordpress/preferences": "^3.11.0",
57
+ "@wordpress/private-apis": "^0.16.0",
58
+ "@wordpress/reusable-blocks": "^4.11.0",
59
+ "@wordpress/router": "^0.3.0",
60
+ "@wordpress/style-engine": "^1.17.0",
61
+ "@wordpress/url": "^3.35.0",
62
+ "@wordpress/viewport": "^5.11.0",
63
+ "@wordpress/widgets": "^3.11.0",
64
64
  "classnames": "^2.3.1",
65
65
  "colord": "^2.9.2",
66
66
  "downloadjs": "^1.4.7",
67
67
  "fast-deep-equal": "^3.1.3",
68
68
  "lodash": "^4.17.21",
69
- "memize": "^1.1.0",
69
+ "memize": "^2.1.0",
70
70
  "react-autosize-textarea": "^7.1.0",
71
71
  "rememo": "^4.0.2"
72
72
  },
@@ -77,5 +77,5 @@
77
77
  "publishConfig": {
78
78
  "access": "public"
79
79
  },
80
- "gitHead": "e936127e1e13881f1a940b7bd1593a9e500147f3"
80
+ "gitHead": "c7c79cb11b677adcbf06cf5f8cfb6c5ec1699f19"
81
81
  }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { kebabCase } from 'lodash';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useState } from '@wordpress/element';
10
+ import { __ } from '@wordpress/i18n';
11
+ import {
12
+ Button,
13
+ TextControl,
14
+ __experimentalHStack as HStack,
15
+ __experimentalVStack as VStack,
16
+ } from '@wordpress/components';
17
+
18
+ function AddCustomGenericTemplateModalContent( { onClose, createTemplate } ) {
19
+ const [ title, setTitle ] = useState( '' );
20
+ const defaultTitle = __( 'Custom Template' );
21
+ const [ isBusy, setIsBusy ] = useState( false );
22
+ async function onCreateTemplate( event ) {
23
+ event.preventDefault();
24
+ if ( isBusy ) {
25
+ return;
26
+ }
27
+ setIsBusy( true );
28
+ try {
29
+ await createTemplate(
30
+ {
31
+ slug:
32
+ 'wp-custom-template-' +
33
+ kebabCase( title || defaultTitle ),
34
+ title: title || defaultTitle,
35
+ },
36
+ false
37
+ );
38
+ } finally {
39
+ setIsBusy( false );
40
+ }
41
+ }
42
+ return (
43
+ <form onSubmit={ onCreateTemplate }>
44
+ <VStack spacing={ 6 }>
45
+ <TextControl
46
+ __nextHasNoMarginBottom
47
+ label={ __( 'Name' ) }
48
+ value={ title }
49
+ onChange={ setTitle }
50
+ placeholder={ defaultTitle }
51
+ disabled={ isBusy }
52
+ help={ __(
53
+ 'Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.'
54
+ ) }
55
+ />
56
+ <HStack
57
+ className="edit-site-custom-generic-template__modal-actions"
58
+ justify="right"
59
+ >
60
+ <Button
61
+ variant="tertiary"
62
+ onClick={ () => {
63
+ onClose();
64
+ } }
65
+ >
66
+ { __( 'Cancel' ) }
67
+ </Button>
68
+ <Button
69
+ variant="primary"
70
+ type="submit"
71
+ isBusy={ isBusy }
72
+ aria-disabled={ isBusy }
73
+ >
74
+ { __( 'Create' ) }
75
+ </Button>
76
+ </HStack>
77
+ </VStack>
78
+ </form>
79
+ );
80
+ }
81
+
82
+ export default AddCustomGenericTemplateModalContent;
@@ -2,12 +2,11 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useState, useMemo, useEffect } from '@wordpress/element';
5
- import { __, sprintf } from '@wordpress/i18n';
5
+ import { __ } from '@wordpress/i18n';
6
6
  import {
7
7
  Button,
8
8
  Flex,
9
9
  FlexItem,
10
- Modal,
11
10
  SearchControl,
12
11
  TextHighlight,
13
12
  __experimentalText as Text,
@@ -23,7 +22,6 @@ import { decodeEntities } from '@wordpress/html-entities';
23
22
  /**
24
23
  * Internal dependencies
25
24
  */
26
- import TemplateActionsLoadingScreen from './template-actions-loading-screen';
27
25
  import { mapToIHasNameAndId } from './utils';
28
26
 
29
27
  const EMPTY_ARRAY = [];
@@ -179,36 +177,25 @@ function SuggestionList( { entityForSuggestions, onSelect } ) {
179
177
  );
180
178
  }
181
179
 
182
- function AddCustomTemplateModal( {
183
- onClose,
184
- onSelect,
185
- entityForSuggestions,
186
- isCreatingTemplate,
187
- } ) {
180
+ function AddCustomTemplateModalContent( { onSelect, entityForSuggestions } ) {
188
181
  const [ showSearchEntities, setShowSearchEntities ] = useState(
189
182
  entityForSuggestions.hasGeneralTemplate
190
183
  );
191
- const baseCssClass = 'edit-site-custom-template-modal';
192
184
  return (
193
- <Modal
194
- title={ sprintf(
195
- // translators: %s: Name of the post type e.g: "Post".
196
- __( 'Add template: %s' ),
197
- entityForSuggestions.labels.singular_name
198
- ) }
199
- className={ baseCssClass }
200
- onRequestClose={ onClose }
185
+ <VStack
186
+ spacing={ 4 }
187
+ className="edit-site-custom-template-modal__contents-wrapper"
188
+ alignment="left"
201
189
  >
202
- { isCreatingTemplate && <TemplateActionsLoadingScreen /> }
203
190
  { ! showSearchEntities && (
204
- <VStack spacing={ 4 }>
191
+ <>
205
192
  <Text as="p">
206
193
  { __(
207
194
  'Select whether to create a single template for all items or a specific one.'
208
195
  ) }
209
196
  </Text>
210
197
  <Flex
211
- className={ `${ baseCssClass }__contents` }
198
+ className="edit-site-custom-template-modal__contents"
212
199
  gap="4"
213
200
  align="initial"
214
201
  >
@@ -272,10 +259,10 @@ function AddCustomTemplateModal( {
272
259
  </Text>
273
260
  </FlexItem>
274
261
  </Flex>
275
- </VStack>
262
+ </>
276
263
  ) }
277
264
  { showSearchEntities && (
278
- <VStack spacing={ 4 }>
265
+ <>
279
266
  <Text as="p">
280
267
  { __(
281
268
  'This template will be used only for the specific item chosen.'
@@ -285,10 +272,10 @@ function AddCustomTemplateModal( {
285
272
  entityForSuggestions={ entityForSuggestions }
286
273
  onSelect={ onSelect }
287
274
  />
288
- </VStack>
275
+ </>
289
276
  ) }
290
- </Modal>
277
+ </VStack>
291
278
  );
292
279
  }
293
280
 
294
- export default AddCustomTemplateModal;
281
+ export default AddCustomTemplateModalContent;
@@ -1,34 +1,22 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
9
  import {
5
- DropdownMenu,
6
- MenuGroup,
7
- MenuItem,
8
- Tooltip,
9
- VisuallyHidden,
10
+ Button,
11
+ Modal,
12
+ __experimentalGrid as Grid,
13
+ __experimentalText as Text,
14
+ __experimentalVStack as VStack,
10
15
  } from '@wordpress/components';
11
16
  import { useState } from '@wordpress/element';
12
17
  import { useDispatch } from '@wordpress/data';
13
18
  import { store as coreStore } from '@wordpress/core-data';
14
- import {
15
- archive,
16
- blockMeta,
17
- category,
18
- home,
19
- list,
20
- media,
21
- notFound,
22
- page,
23
- plus,
24
- post,
25
- postAuthor,
26
- postDate,
27
- postList,
28
- search,
29
- tag,
30
- layout as customGenericTemplateIcon,
31
- } from '@wordpress/icons';
19
+ import { plus } from '@wordpress/icons';
32
20
  import { __, sprintf } from '@wordpress/i18n';
33
21
  import { store as noticesStore } from '@wordpress/notices';
34
22
  import { privateApis as routerPrivateApis } from '@wordpress/router';
@@ -36,7 +24,7 @@ import { privateApis as routerPrivateApis } from '@wordpress/router';
36
24
  /**
37
25
  * Internal dependencies
38
26
  */
39
- import AddCustomTemplateModal from './add-custom-template-modal';
27
+ import AddCustomTemplateModalContent from './add-custom-template-modal-content';
40
28
  import {
41
29
  useExistingTemplates,
42
30
  useDefaultTemplateTypes,
@@ -45,7 +33,7 @@ import {
45
33
  useAuthorMenuItem,
46
34
  usePostTypeArchiveMenuItems,
47
35
  } from './utils';
48
- import AddCustomGenericTemplateModal from './add-custom-generic-template-modal';
36
+ import AddCustomGenericTemplateModalContent from './add-custom-generic-template-modal-content';
49
37
  import TemplateActionsLoadingScreen from './template-actions-loading-screen';
50
38
  import { store as editSiteStore } from '../../store';
51
39
  import { unlock } from '../../private-apis';
@@ -68,21 +56,35 @@ const DEFAULT_TEMPLATE_SLUGS = [
68
56
  '404',
69
57
  ];
70
58
 
71
- const TEMPLATE_ICONS = {
72
- 'front-page': home,
73
- home: postList,
74
- single: post,
75
- page,
76
- archive,
77
- search,
78
- 404: notFound,
79
- index: list,
80
- category,
81
- author: postAuthor,
82
- taxonomy: blockMeta,
83
- date: postDate,
84
- tag,
85
- attachment: media,
59
+ function TemplateListItem( { title, description, onClick } ) {
60
+ return (
61
+ <Button onClick={ onClick }>
62
+ <VStack
63
+ as="span"
64
+ spacing={ 2 }
65
+ justify="flex-start"
66
+ style={ { width: '100%' } }
67
+ >
68
+ <Text
69
+ weight={ 500 }
70
+ lineHeight={ 1.53846153846 } // 20px
71
+ >
72
+ { title }
73
+ </Text>
74
+ <Text
75
+ lineHeight={ 1.53846153846 } // 20px
76
+ >
77
+ { description }
78
+ </Text>
79
+ </VStack>
80
+ </Button>
81
+ );
82
+ }
83
+
84
+ const modalContentMap = {
85
+ templatesList: 1,
86
+ customTemplate: 2,
87
+ customGenericTemplate: 3,
86
88
  };
87
89
 
88
90
  export default function NewTemplate( {
@@ -90,12 +92,10 @@ export default function NewTemplate( {
90
92
  toggleProps,
91
93
  showIcon = true,
92
94
  } ) {
93
- const [ showCustomTemplateModal, setShowCustomTemplateModal ] =
94
- useState( false );
95
- const [
96
- showCustomGenericTemplateModal,
97
- setShowCustomGenericTemplateModal,
98
- ] = useState( false );
95
+ const [ showModal, setShowModal ] = useState( false );
96
+ const [ modalContent, setModalContent ] = useState(
97
+ modalContentMap.templatesList
98
+ );
99
99
  const [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );
100
100
  const [ isCreatingTemplate, setIsCreatingTemplate ] = useState( false );
101
101
 
@@ -159,130 +159,116 @@ export default function NewTemplate( {
159
159
  setIsCreatingTemplate( false );
160
160
  }
161
161
  }
162
+ const onModalClose = () => {
163
+ setShowModal( false );
164
+ setModalContent( modalContentMap.templatesList );
165
+ };
162
166
 
163
- const missingTemplates = useMissingTemplates(
164
- setEntityForSuggestions,
165
- setShowCustomTemplateModal
167
+ const missingTemplates = useMissingTemplates( setEntityForSuggestions, () =>
168
+ setModalContent( modalContentMap.customTemplate )
166
169
  );
167
170
  if ( ! missingTemplates.length ) {
168
171
  return null;
169
172
  }
173
+ const { as: Toggle = Button, ...restToggleProps } = toggleProps ?? {};
170
174
 
171
- const customTemplateDescription = __(
172
- 'A custom template can be manually applied to any post or page.'
173
- );
174
-
175
+ let modalTitle = __( 'Add template' );
176
+ if ( modalContent === modalContentMap.customTemplate ) {
177
+ modalTitle = sprintf(
178
+ // translators: %s: Name of the post type e.g: "Post".
179
+ __( 'Add template: %s' ),
180
+ entityForSuggestions.labels.singular_name
181
+ );
182
+ } else if ( modalContent === modalContentMap.customGenericTemplate ) {
183
+ modalTitle = __( 'Create custom template' );
184
+ }
175
185
  return (
176
186
  <>
177
- <DropdownMenu
178
- className="edit-site-new-template-dropdown"
187
+ { isCreatingTemplate && <TemplateActionsLoadingScreen /> }
188
+ <Toggle
189
+ { ...restToggleProps }
190
+ onClick={ () => setShowModal( true ) }
179
191
  icon={ showIcon ? plus : null }
180
- text={ showIcon ? null : postType.labels.add_new }
181
192
  label={ postType.labels.add_new_item }
182
- popoverProps={ {
183
- noArrow: false,
184
- } }
185
- toggleProps={ toggleProps }
186
193
  >
187
- { () => (
188
- <>
189
- { isCreatingTemplate && (
190
- <TemplateActionsLoadingScreen />
191
- ) }
192
- <div className="edit-site-new-template-dropdown__menu-groups">
193
- <MenuGroup label={ postType.labels.add_new_item }>
194
- { missingTemplates.map( ( template ) => {
195
- const {
196
- title,
197
- description,
198
- slug,
199
- onClick,
200
- icon,
201
- } = template;
202
- return (
203
- <Tooltip
204
- key={ slug }
205
- position="top right"
206
- text={ description }
207
- className="edit-site-new-template-dropdown__menu-item-tooltip"
208
- >
209
- <MenuItem
210
- icon={
211
- icon ||
212
- TEMPLATE_ICONS[ slug ] ||
213
- post
214
- }
215
- iconPosition="left"
216
- onClick={ () =>
217
- onClick
218
- ? onClick( template )
219
- : createTemplate(
220
- template
221
- )
222
- }
223
- >
224
- { title }
225
- { /* TODO: This probably won't be needed if the <Tooltip> component is accessible.
226
- * @see https://github.com/WordPress/gutenberg/issues/48222 */ }
227
- <VisuallyHidden>
228
- { description }
229
- </VisuallyHidden>
230
- </MenuItem>
231
- </Tooltip>
232
- );
233
- } ) }
234
- </MenuGroup>
235
- <MenuGroup>
236
- <Tooltip
237
- position="top right"
238
- text={ customTemplateDescription }
239
- className="edit-site-new-template-dropdown__menu-item-tooltip"
240
- >
241
- <MenuItem
242
- icon={ customGenericTemplateIcon }
243
- iconPosition="left"
194
+ { showIcon ? null : postType.labels.add_new_item }
195
+ </Toggle>
196
+ { showModal && (
197
+ <Modal
198
+ title={ modalTitle }
199
+ className={ classnames(
200
+ 'edit-site-add-new-template__modal',
201
+ {
202
+ 'edit-site-add-new-template__modal_template_list':
203
+ modalContent === modalContentMap.templatesList,
204
+ 'edit-site-custom-template-modal':
205
+ modalContent === modalContentMap.customTemplate,
206
+ }
207
+ ) }
208
+ onRequestClose={ onModalClose }
209
+ overlayClassName={
210
+ modalContent === modalContentMap.customGenericTemplate
211
+ ? 'edit-site-custom-generic-template__modal'
212
+ : undefined
213
+ }
214
+ >
215
+ { modalContent === modalContentMap.templatesList && (
216
+ <Grid
217
+ columns={ 3 }
218
+ gap={ 4 }
219
+ align="flex-start"
220
+ justify="center"
221
+ className="edit-site-add-new-template__template-list__contents"
222
+ >
223
+ { missingTemplates.map( ( template ) => {
224
+ const { title, description, slug, onClick } =
225
+ template;
226
+ return (
227
+ <TemplateListItem
228
+ key={ slug }
229
+ title={ title }
230
+ description={ description }
244
231
  onClick={ () =>
245
- setShowCustomGenericTemplateModal(
246
- true
247
- )
232
+ onClick
233
+ ? onClick( template )
234
+ : createTemplate( template )
248
235
  }
249
- >
250
- { __( 'Custom template' ) }
251
- { /* TODO: This probably won't be needed if the <Tooltip> component is accessible.
252
- * @see https://github.com/WordPress/gutenberg/issues/48222 */ }
253
- <VisuallyHidden>
254
- { customTemplateDescription }
255
- </VisuallyHidden>
256
- </MenuItem>
257
- </Tooltip>
258
- </MenuGroup>
259
- </div>
260
- </>
261
- ) }
262
- </DropdownMenu>
263
- { showCustomTemplateModal && (
264
- <AddCustomTemplateModal
265
- onClose={ () => setShowCustomTemplateModal( false ) }
266
- onSelect={ createTemplate }
267
- entityForSuggestions={ entityForSuggestions }
268
- isCreatingTemplate={ isCreatingTemplate }
269
- />
270
- ) }
271
- { showCustomGenericTemplateModal && (
272
- <AddCustomGenericTemplateModal
273
- onClose={ () => setShowCustomGenericTemplateModal( false ) }
274
- createTemplate={ createTemplate }
275
- isCreatingTemplate={ isCreatingTemplate }
276
- />
236
+ />
237
+ );
238
+ } ) }
239
+ <TemplateListItem
240
+ title={ __( 'Custom template' ) }
241
+ description={ __(
242
+ 'A custom template can be manually applied to any post or page.'
243
+ ) }
244
+ onClick={ () =>
245
+ setModalContent(
246
+ modalContentMap.customGenericTemplate
247
+ )
248
+ }
249
+ />
250
+ </Grid>
251
+ ) }
252
+ { modalContent === modalContentMap.customTemplate && (
253
+ <AddCustomTemplateModalContent
254
+ onSelect={ createTemplate }
255
+ entityForSuggestions={ entityForSuggestions }
256
+ />
257
+ ) }
258
+ { modalContent ===
259
+ modalContentMap.customGenericTemplate && (
260
+ <AddCustomGenericTemplateModalContent
261
+ onClose={ onModalClose }
262
+ createTemplate={ createTemplate }
263
+ />
264
+ ) }
265
+ </Modal>
277
266
  ) }
278
267
  </>
279
268
  );
280
269
  }
281
270
 
282
- function useMissingTemplates(
283
- setEntityForSuggestions,
284
- setShowCustomTemplateModal
285
- ) {
271
+ function useMissingTemplates( setEntityForSuggestions, onClick ) {
286
272
  const existingTemplates = useExistingTemplates();
287
273
  const defaultTemplateTypes = useDefaultTemplateTypes();
288
274
  const existingTemplateSlugs = ( existingTemplates || [] ).map(
@@ -294,7 +280,7 @@ function useMissingTemplates(
294
280
  ! existingTemplateSlugs.includes( template.slug )
295
281
  );
296
282
  const onClickMenuItem = ( _entityForSuggestions ) => {
297
- setShowCustomTemplateModal( true );
283
+ onClick?.();
298
284
  setEntityForSuggestions( _entityForSuggestions );
299
285
  };
300
286
  // We need to replace existing default template types with