@wordpress/edit-site 5.28.2 → 5.29.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 (258) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-pattern/index.js +18 -8
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/block-editor/use-site-editor-settings.js +2 -1
  5. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  6. package/build/components/code-editor/index.js +3 -2
  7. package/build/components/code-editor/index.js.map +1 -1
  8. package/build/components/editor/index.js +4 -4
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/editor-canvas-container/index.js +1 -1
  11. package/build/components/editor-canvas-container/index.js.map +1 -1
  12. package/build/components/global-styles/block-preview-panel.js +2 -2
  13. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  15. package/build/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/font-collection.js +84 -7
  17. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  19. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/installed-fonts.js +10 -7
  21. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  22. package/build/components/header-edit-mode/document-tools/index.js +1 -2
  23. package/build/components/header-edit-mode/document-tools/index.js.map +1 -1
  24. package/build/components/header-edit-mode/index.js +3 -1
  25. package/build/components/header-edit-mode/index.js.map +1 -1
  26. package/build/components/header-edit-mode/more-menu/index.js +7 -4
  27. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  28. package/build/components/keyboard-shortcuts/edit-mode.js +0 -13
  29. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  30. package/build/components/keyboard-shortcuts/register.js +0 -18
  31. package/build/components/keyboard-shortcuts/register.js.map +1 -1
  32. package/build/components/layout/index.js +8 -4
  33. package/build/components/layout/index.js.map +1 -1
  34. package/build/components/layout/router.js +26 -5
  35. package/build/components/layout/router.js.map +1 -1
  36. package/build/components/page-patterns/dataviews-pattern-actions.js +25 -8
  37. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  38. package/build/components/page-patterns/header.js +2 -1
  39. package/build/components/page-patterns/header.js.map +1 -1
  40. package/build/components/page-patterns/index.js +0 -1
  41. package/build/components/page-patterns/index.js.map +1 -1
  42. package/build/components/page-patterns/use-patterns.js +10 -5
  43. package/build/components/page-patterns/use-patterns.js.map +1 -1
  44. package/build/components/page-templates-template-parts/index.js +1 -0
  45. package/build/components/page-templates-template-parts/index.js.map +1 -1
  46. package/build/components/save-button/index.js +2 -1
  47. package/build/components/save-button/index.js.map +1 -1
  48. package/build/components/sidebar/index.js +5 -2
  49. package/build/components/sidebar/index.js.map +1 -1
  50. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  51. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  52. package/build/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  53. package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  54. package/build/components/sidebar-edit-mode/template-panel/index.js +48 -5
  55. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  56. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  57. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  58. package/build/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  59. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  60. package/build/components/sidebar-navigation-screen-pages/index.js +3 -1
  61. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  62. package/build/components/style-book/index.js +2 -0
  63. package/build/components/style-book/index.js.map +1 -1
  64. package/build/hooks/commands/use-edit-mode-commands.js +3 -171
  65. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  66. package/build/hooks/index.js +0 -1
  67. package/build/hooks/index.js.map +1 -1
  68. package/build/hooks/push-changes-to-global-styles/index.js +4 -5
  69. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  70. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +91 -0
  71. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  72. package/build/store/actions.js +19 -50
  73. package/build/store/actions.js.map +1 -1
  74. package/build/store/private-actions.js +3 -1
  75. package/build/store/private-actions.js.map +1 -1
  76. package/build/utils/clone-deep.js +15 -0
  77. package/build/utils/clone-deep.js.map +1 -0
  78. package/build-module/components/add-new-pattern/index.js +18 -8
  79. package/build-module/components/add-new-pattern/index.js.map +1 -1
  80. package/build-module/components/block-editor/use-site-editor-settings.js +2 -1
  81. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  82. package/build-module/components/code-editor/index.js +3 -2
  83. package/build-module/components/code-editor/index.js.map +1 -1
  84. package/build-module/components/editor/index.js +4 -4
  85. package/build-module/components/editor/index.js.map +1 -1
  86. package/build-module/components/editor-canvas-container/index.js +2 -2
  87. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  88. package/build-module/components/global-styles/block-preview-panel.js +2 -2
  89. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  90. package/build-module/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  91. package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
  92. package/build-module/components/global-styles/font-library-modal/font-collection.js +87 -10
  93. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  94. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  95. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  96. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +11 -8
  97. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  98. package/build-module/components/header-edit-mode/document-tools/index.js +1 -2
  99. package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -1
  100. package/build-module/components/header-edit-mode/index.js +3 -1
  101. package/build-module/components/header-edit-mode/index.js.map +1 -1
  102. package/build-module/components/header-edit-mode/more-menu/index.js +6 -3
  103. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  104. package/build-module/components/keyboard-shortcuts/edit-mode.js +0 -13
  105. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  106. package/build-module/components/keyboard-shortcuts/register.js +0 -18
  107. package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
  108. package/build-module/components/layout/index.js +9 -5
  109. package/build-module/components/layout/index.js.map +1 -1
  110. package/build-module/components/layout/router.js +26 -5
  111. package/build-module/components/layout/router.js.map +1 -1
  112. package/build-module/components/page-patterns/dataviews-pattern-actions.js +25 -8
  113. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  114. package/build-module/components/page-patterns/header.js +2 -1
  115. package/build-module/components/page-patterns/header.js.map +1 -1
  116. package/build-module/components/page-patterns/index.js +0 -1
  117. package/build-module/components/page-patterns/index.js.map +1 -1
  118. package/build-module/components/page-patterns/use-patterns.js +10 -5
  119. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  120. package/build-module/components/page-templates-template-parts/index.js +1 -0
  121. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  122. package/build-module/components/save-button/index.js +2 -1
  123. package/build-module/components/save-button/index.js.map +1 -1
  124. package/build-module/components/sidebar/index.js +5 -2
  125. package/build-module/components/sidebar/index.js.map +1 -1
  126. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  127. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  128. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  129. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  130. package/build-module/components/sidebar-edit-mode/template-panel/index.js +50 -7
  131. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  132. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  133. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  134. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  135. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  136. package/build-module/components/sidebar-navigation-screen-pages/index.js +3 -1
  137. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  138. package/build-module/components/style-book/index.js +2 -0
  139. package/build-module/components/style-book/index.js.map +1 -1
  140. package/build-module/hooks/commands/use-edit-mode-commands.js +4 -172
  141. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  142. package/build-module/hooks/index.js +0 -1
  143. package/build-module/hooks/index.js.map +1 -1
  144. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -3
  145. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  146. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +82 -0
  147. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  148. package/build-module/store/actions.js +19 -50
  149. package/build-module/store/actions.js.map +1 -1
  150. package/build-module/store/private-actions.js +3 -1
  151. package/build-module/store/private-actions.js.map +1 -1
  152. package/build-module/utils/clone-deep.js +9 -0
  153. package/build-module/utils/clone-deep.js.map +1 -0
  154. package/build-style/style-rtl.css +46 -209
  155. package/build-style/style.css +46 -209
  156. package/package.json +43 -42
  157. package/src/components/add-new-pattern/index.js +27 -11
  158. package/src/components/block-editor/use-site-editor-settings.js +1 -0
  159. package/src/components/code-editor/index.js +3 -2
  160. package/src/components/editor/index.js +11 -7
  161. package/src/components/editor-canvas-container/index.js +2 -5
  162. package/src/components/{test → error-boundary/test}/error-boundary.js +7 -5
  163. package/src/components/global-styles/block-preview-panel.js +2 -2
  164. package/src/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  165. package/src/components/global-styles/font-library-modal/font-collection.js +118 -13
  166. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  167. package/src/components/global-styles/font-library-modal/installed-fonts.js +25 -23
  168. package/src/components/global-styles/font-library-modal/style.scss +2 -5
  169. package/src/components/global-styles/screen-revisions/style.scss +2 -2
  170. package/src/components/global-styles/style.scss +1 -1
  171. package/src/components/header-edit-mode/document-tools/index.js +1 -2
  172. package/src/components/header-edit-mode/index.js +1 -1
  173. package/src/components/header-edit-mode/more-menu/index.js +8 -3
  174. package/src/components/keyboard-shortcuts/edit-mode.js +0 -11
  175. package/src/components/keyboard-shortcuts/register.js +0 -19
  176. package/src/components/layout/index.js +47 -32
  177. package/src/components/layout/router.js +31 -2
  178. package/src/components/layout/style.scss +7 -0
  179. package/src/components/page-patterns/dataviews-pattern-actions.js +41 -10
  180. package/src/components/page-patterns/header.js +1 -0
  181. package/src/components/page-patterns/index.js +0 -1
  182. package/src/components/page-patterns/style.scss +8 -180
  183. package/src/components/page-patterns/use-patterns.js +13 -5
  184. package/src/components/page-templates-template-parts/index.js +1 -0
  185. package/src/components/page-templates-template-parts/style.scss +6 -0
  186. package/src/components/save-button/index.js +2 -1
  187. package/src/components/save-hub/style.scss +1 -1
  188. package/src/components/sidebar/index.js +8 -3
  189. package/src/components/sidebar-button/style.scss +1 -1
  190. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +5 -7
  191. package/src/components/sidebar-edit-mode/style.scss +4 -0
  192. package/src/components/sidebar-edit-mode/template-panel/hooks.js +37 -24
  193. package/src/components/sidebar-edit-mode/template-panel/index.js +76 -18
  194. package/src/components/sidebar-edit-mode/template-panel/style.scss +5 -14
  195. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +1 -12
  196. package/src/components/sidebar-navigation-screen-global-styles/index.js +4 -1
  197. package/src/components/sidebar-navigation-screen-pages/index.js +10 -6
  198. package/src/components/style-book/index.js +5 -1
  199. package/src/hooks/commands/use-edit-mode-commands.js +3 -184
  200. package/src/hooks/index.js +0 -1
  201. package/src/hooks/push-changes-to-global-styles/index.js +1 -4
  202. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +964 -0
  203. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +92 -0
  204. package/src/store/actions.js +21 -85
  205. package/src/store/private-actions.js +4 -0
  206. package/src/store/test/actions.js +0 -75
  207. package/src/style.scss +1 -6
  208. package/src/utils/clone-deep.js +8 -0
  209. package/build/components/global-styles/font-library-modal/fonts-grid.js +0 -57
  210. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +0 -1
  211. package/build/components/header-edit-mode/mode-switcher/index.js +0 -62
  212. package/build/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  213. package/build/components/page-patterns/duplicate-menu-item.js +0 -93
  214. package/build/components/page-patterns/duplicate-menu-item.js.map +0 -1
  215. package/build/components/page-patterns/grid-item.js +0 -223
  216. package/build/components/page-patterns/grid-item.js.map +0 -1
  217. package/build/components/page-patterns/grid.js +0 -31
  218. package/build/components/page-patterns/grid.js.map +0 -1
  219. package/build/components/page-patterns/no-patterns.js +0 -18
  220. package/build/components/page-patterns/no-patterns.js.map +0 -1
  221. package/build/components/page-patterns/patterns-list.js +0 -168
  222. package/build/components/page-patterns/patterns-list.js.map +0 -1
  223. package/build/components/page-patterns/rename-menu-item.js +0 -105
  224. package/build/components/page-patterns/rename-menu-item.js.map +0 -1
  225. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -83
  226. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  227. package/build/hooks/navigation-menu-edit.js +0 -82
  228. package/build/hooks/navigation-menu-edit.js.map +0 -1
  229. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +0 -50
  230. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +0 -1
  231. package/build-module/components/header-edit-mode/mode-switcher/index.js +0 -56
  232. package/build-module/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  233. package/build-module/components/page-patterns/duplicate-menu-item.js +0 -85
  234. package/build-module/components/page-patterns/duplicate-menu-item.js.map +0 -1
  235. package/build-module/components/page-patterns/grid-item.js +0 -215
  236. package/build-module/components/page-patterns/grid-item.js.map +0 -1
  237. package/build-module/components/page-patterns/grid.js +0 -23
  238. package/build-module/components/page-patterns/grid.js.map +0 -1
  239. package/build-module/components/page-patterns/no-patterns.js +0 -11
  240. package/build-module/components/page-patterns/no-patterns.js.map +0 -1
  241. package/build-module/components/page-patterns/patterns-list.js +0 -160
  242. package/build-module/components/page-patterns/patterns-list.js.map +0 -1
  243. package/build-module/components/page-patterns/rename-menu-item.js +0 -98
  244. package/build-module/components/page-patterns/rename-menu-item.js.map +0 -1
  245. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -76
  246. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  247. package/build-module/hooks/navigation-menu-edit.js +0 -75
  248. package/build-module/hooks/navigation-menu-edit.js.map +0 -1
  249. package/src/components/global-styles/font-library-modal/fonts-grid.js +0 -59
  250. package/src/components/header-edit-mode/mode-switcher/index.js +0 -60
  251. package/src/components/page-patterns/duplicate-menu-item.js +0 -105
  252. package/src/components/page-patterns/grid-item.js +0 -331
  253. package/src/components/page-patterns/grid.js +0 -22
  254. package/src/components/page-patterns/no-patterns.js +0 -12
  255. package/src/components/page-patterns/patterns-list.js +0 -229
  256. package/src/components/page-patterns/rename-menu-item.js +0 -132
  257. package/src/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -89
  258. package/src/hooks/navigation-menu-edit.js +0 -92
@@ -1,229 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useState, useDeferredValue, useId, useMemo } from '@wordpress/element';
5
- import {
6
- SearchControl,
7
- __experimentalVStack as VStack,
8
- Flex,
9
- FlexBlock,
10
- __experimentalToggleGroupControl as ToggleGroupControl,
11
- __experimentalToggleGroupControlOption as ToggleGroupControlOption,
12
- __experimentalHeading as Heading,
13
- __experimentalText as Text,
14
- } from '@wordpress/components';
15
- import { __, _x, isRTL } from '@wordpress/i18n';
16
- import { chevronLeft, chevronRight } from '@wordpress/icons';
17
- import { privateApis as routerPrivateApis } from '@wordpress/router';
18
- import {
19
- useAsyncList,
20
- useViewportMatch,
21
- useDebouncedInput,
22
- } from '@wordpress/compose';
23
-
24
- /**
25
- * Internal dependencies
26
- */
27
- import PatternsHeader from './header';
28
- import Grid from './grid';
29
- import NoPatterns from './no-patterns';
30
- import usePatterns from './use-patterns';
31
- import SidebarButton from '../sidebar-button';
32
- import { unlock } from '../../lock-unlock';
33
- import { PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../../utils/constants';
34
- import Pagination from '../pagination';
35
-
36
- const { useLocation, useHistory } = unlock( routerPrivateApis );
37
-
38
- const SYNC_FILTERS = {
39
- all: _x( 'All', 'Option that shows all patterns' ),
40
- [ PATTERN_SYNC_TYPES.full ]: _x(
41
- 'Synced',
42
- 'Option that shows all synchronized patterns'
43
- ),
44
- [ PATTERN_SYNC_TYPES.unsynced ]: _x(
45
- 'Not synced',
46
- 'Option that shows all patterns that are not synchronized'
47
- ),
48
- };
49
-
50
- const SYNC_DESCRIPTIONS = {
51
- all: '',
52
- [ PATTERN_SYNC_TYPES.full ]: __(
53
- 'Patterns that are kept in sync across the site.'
54
- ),
55
- [ PATTERN_SYNC_TYPES.unsynced ]: __(
56
- 'Patterns that can be changed freely without affecting the site.'
57
- ),
58
- };
59
-
60
- const PAGE_SIZE = 20;
61
-
62
- export default function PatternsList( { categoryId, type } ) {
63
- const location = useLocation();
64
- const history = useHistory();
65
- const isMobileViewport = useViewportMatch( 'medium', '<' );
66
- const [ filterValue, setFilterValue, delayedFilterValue ] =
67
- useDebouncedInput( '' );
68
- const deferredFilterValue = useDeferredValue( delayedFilterValue );
69
-
70
- const [ syncFilter, setSyncFilter ] = useState( 'all' );
71
- const [ currentPage, setCurrentPage ] = useState( 1 );
72
-
73
- const deferredSyncedFilter = useDeferredValue( syncFilter );
74
-
75
- const isUncategorizedThemePatterns =
76
- type === PATTERN_TYPES.theme && categoryId === 'uncategorized';
77
-
78
- const { patterns, isResolving } = usePatterns(
79
- type,
80
- isUncategorizedThemePatterns ? '' : categoryId,
81
- {
82
- search: deferredFilterValue,
83
- syncStatus:
84
- deferredSyncedFilter === 'all'
85
- ? undefined
86
- : deferredSyncedFilter,
87
- }
88
- );
89
-
90
- const updateSearchFilter = ( value ) => {
91
- setCurrentPage( 1 );
92
- setFilterValue( value );
93
- };
94
-
95
- const updateSyncFilter = ( value ) => {
96
- setCurrentPage( 1 );
97
- setSyncFilter( value );
98
- };
99
-
100
- const id = useId();
101
- const titleId = `${ id }-title`;
102
- const descriptionId = `${ id }-description`;
103
-
104
- const hasPatterns = patterns.length;
105
- const title = SYNC_FILTERS[ syncFilter ];
106
- const description = SYNC_DESCRIPTIONS[ syncFilter ];
107
-
108
- const totalItems = patterns.length;
109
- const pageIndex = currentPage - 1;
110
- const numPages = Math.ceil( patterns.length / PAGE_SIZE );
111
-
112
- const list = useMemo( () => {
113
- return patterns.slice(
114
- pageIndex * PAGE_SIZE,
115
- pageIndex * PAGE_SIZE + PAGE_SIZE
116
- );
117
- }, [ pageIndex, patterns ] );
118
-
119
- const asyncList = useAsyncList( list, { step: 10 } );
120
-
121
- const changePage = ( page ) => {
122
- const scrollContainer = document.querySelector( '.edit-site-patterns' );
123
- scrollContainer?.scrollTo( 0, 0 );
124
-
125
- setCurrentPage( page );
126
- };
127
-
128
- return (
129
- <>
130
- <VStack className="edit-site-patterns__header" spacing={ 6 }>
131
- <PatternsHeader
132
- categoryId={ categoryId }
133
- type={ type }
134
- titleId={ titleId }
135
- descriptionId={ descriptionId }
136
- />
137
- <Flex alignment="stretch" wrap>
138
- { isMobileViewport && (
139
- <SidebarButton
140
- icon={ isRTL() ? chevronRight : chevronLeft }
141
- label={ __( 'Back' ) }
142
- onClick={ () => {
143
- // Go back in history if we came from the Patterns page.
144
- // Otherwise push a stack onto the history.
145
- if (
146
- location.state?.backPath === '/patterns'
147
- ) {
148
- history.back();
149
- } else {
150
- history.push( { path: '/patterns' } );
151
- }
152
- } }
153
- />
154
- ) }
155
- <FlexBlock className="edit-site-patterns__search-block">
156
- <SearchControl
157
- className="edit-site-patterns__search"
158
- onChange={ ( value ) =>
159
- updateSearchFilter( value )
160
- }
161
- placeholder={ __( 'Search patterns' ) }
162
- label={ __( 'Search patterns' ) }
163
- value={ filterValue }
164
- __nextHasNoMarginBottom
165
- />
166
- </FlexBlock>
167
- { type === PATTERN_TYPES.theme && (
168
- <ToggleGroupControl
169
- className="edit-site-patterns__sync-status-filter"
170
- hideLabelFromVision
171
- label={ __( 'Filter by sync status' ) }
172
- value={ syncFilter }
173
- isBlock
174
- onChange={ ( value ) => updateSyncFilter( value ) }
175
- __nextHasNoMarginBottom
176
- >
177
- { Object.entries( SYNC_FILTERS ).map(
178
- ( [ key, label ] ) => (
179
- <ToggleGroupControlOption
180
- className="edit-site-patterns__sync-status-filter-option"
181
- key={ key }
182
- value={ key }
183
- label={ label }
184
- />
185
- )
186
- ) }
187
- </ToggleGroupControl>
188
- ) }
189
- </Flex>
190
- </VStack>
191
- <VStack
192
- className="edit-site-patterns__section"
193
- justify="flex-start"
194
- spacing={ 6 }
195
- >
196
- { syncFilter !== 'all' && (
197
- <VStack className="edit-site-patterns__section-header">
198
- <Heading as="h3" level={ 5 } id={ titleId }>
199
- { title }
200
- </Heading>
201
- { description ? (
202
- <Text variant="muted" as="p" id={ descriptionId }>
203
- { description }
204
- </Text>
205
- ) : null }
206
- </VStack>
207
- ) }
208
- { hasPatterns && (
209
- <Grid
210
- categoryId={ categoryId }
211
- items={ asyncList }
212
- aria-labelledby={ titleId }
213
- aria-describedby={ descriptionId }
214
- />
215
- ) }
216
- { ! isResolving && ! hasPatterns && <NoPatterns /> }
217
- </VStack>
218
- { numPages > 1 && (
219
- <Pagination
220
- className="edit-site-patterns__pagination"
221
- currentPage={ currentPage }
222
- numPages={ numPages }
223
- changePage={ changePage }
224
- totalItems={ totalItems }
225
- />
226
- ) }
227
- </>
228
- );
229
- }
@@ -1,132 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- Button,
6
- MenuItem,
7
- Modal,
8
- TextControl,
9
- __experimentalHStack as HStack,
10
- __experimentalVStack as VStack,
11
- } from '@wordpress/components';
12
- import { store as coreStore } from '@wordpress/core-data';
13
- import { useDispatch } from '@wordpress/data';
14
- import { useState } from '@wordpress/element';
15
- import { __ } from '@wordpress/i18n';
16
- import { store as noticesStore } from '@wordpress/notices';
17
-
18
- /**
19
- * Internal dependencies
20
- */
21
- import { TEMPLATE_PART_POST_TYPE } from '../../utils/constants';
22
-
23
- export default function RenameMenuItem( { item, onClose } ) {
24
- const [ title, setTitle ] = useState( () => item.title );
25
- const [ isModalOpen, setIsModalOpen ] = useState( false );
26
-
27
- const { editEntityRecord, saveEditedEntityRecord } =
28
- useDispatch( coreStore );
29
- const { createSuccessNotice, createErrorNotice } =
30
- useDispatch( noticesStore );
31
-
32
- if ( item.type === TEMPLATE_PART_POST_TYPE && ! item.isCustom ) {
33
- return null;
34
- }
35
-
36
- async function onRename( event ) {
37
- event.preventDefault();
38
-
39
- try {
40
- await editEntityRecord( 'postType', item.type, item.id, { title } );
41
-
42
- // Update state before saving rerenders the list.
43
- setTitle( '' );
44
- setIsModalOpen( false );
45
- onClose();
46
-
47
- // Persist edited entity.
48
- await saveEditedEntityRecord( 'postType', item.type, item.id, {
49
- throwOnError: true,
50
- } );
51
-
52
- createSuccessNotice(
53
- item.type === TEMPLATE_PART_POST_TYPE
54
- ? __( 'Template part renamed.' )
55
- : __( 'Pattern renamed.' ),
56
- {
57
- type: 'snackbar',
58
- }
59
- );
60
- } catch ( error ) {
61
- const fallbackErrorMessage =
62
- item.type === TEMPLATE_PART_POST_TYPE
63
- ? __(
64
- 'An error occurred while renaming the template part.'
65
- )
66
- : __( 'An error occurred while renaming the pattern.' );
67
- const errorMessage =
68
- error.message && error.code !== 'unknown_error'
69
- ? error.message
70
- : fallbackErrorMessage;
71
-
72
- createErrorNotice( errorMessage, { type: 'snackbar' } );
73
- }
74
- }
75
-
76
- return (
77
- <>
78
- <MenuItem
79
- onClick={ () => {
80
- setIsModalOpen( true );
81
- setTitle( item.title );
82
- } }
83
- >
84
- { __( 'Rename' ) }
85
- </MenuItem>
86
- { isModalOpen && (
87
- <Modal
88
- title={ __( 'Rename' ) }
89
- onRequestClose={ () => {
90
- setIsModalOpen( false );
91
- onClose();
92
- } }
93
- overlayClassName="edit-site-list__rename-modal"
94
- >
95
- <form onSubmit={ onRename }>
96
- <VStack spacing="5">
97
- <TextControl
98
- __nextHasNoMarginBottom
99
- __next40pxDefaultSize
100
- label={ __( 'Name' ) }
101
- value={ title }
102
- onChange={ setTitle }
103
- required
104
- />
105
-
106
- <HStack justify="right">
107
- <Button
108
- __next40pxDefaultSize
109
- variant="tertiary"
110
- onClick={ () => {
111
- setIsModalOpen( false );
112
- onClose();
113
- } }
114
- >
115
- { __( 'Cancel' ) }
116
- </Button>
117
-
118
- <Button
119
- __next40pxDefaultSize
120
- variant="primary"
121
- type="submit"
122
- >
123
- { __( 'Save' ) }
124
- </Button>
125
- </HStack>
126
- </VStack>
127
- </form>
128
- </Modal>
129
- ) }
130
- </>
131
- );
132
- }
@@ -1,89 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useSelect, useDispatch } from '@wordpress/data';
5
- import { useState } from '@wordpress/element';
6
- import { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
7
- import { MenuItem, Modal } from '@wordpress/components';
8
- import { __ } from '@wordpress/i18n';
9
- import { store as coreStore } from '@wordpress/core-data';
10
- import { useAsyncList } from '@wordpress/compose';
11
- import { serialize } from '@wordpress/blocks';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import { store as editSiteStore } from '../../../store';
17
-
18
- export default function ReplaceTemplateButton( {
19
- onClick,
20
- availableTemplates,
21
- } ) {
22
- const { editEntityRecord } = useDispatch( coreStore );
23
- const [ showModal, setShowModal ] = useState( false );
24
- const onClose = () => {
25
- setShowModal( false );
26
- };
27
-
28
- const { postId, postType } = useSelect( ( select ) => {
29
- return {
30
- postId: select( editSiteStore ).getEditedPostId(),
31
- postType: select( editSiteStore ).getEditedPostType(),
32
- };
33
- }, [] );
34
-
35
- const onTemplateSelect = async ( selectedTemplate ) => {
36
- onClose(); // Close the template suggestions modal first.
37
- onClick();
38
- await editEntityRecord( 'postType', postType, postId, {
39
- blocks: selectedTemplate.blocks,
40
- content: serialize( selectedTemplate.blocks ),
41
- } );
42
- };
43
-
44
- if ( ! availableTemplates.length || availableTemplates.length < 1 ) {
45
- return null;
46
- }
47
-
48
- return (
49
- <>
50
- <MenuItem
51
- info={ __(
52
- 'Replace the contents of this template with another.'
53
- ) }
54
- onClick={ () => setShowModal( true ) }
55
- >
56
- { __( 'Replace template' ) }
57
- </MenuItem>
58
-
59
- { showModal && (
60
- <Modal
61
- title={ __( 'Choose a template' ) }
62
- onRequestClose={ onClose }
63
- overlayClassName="edit-site-template-panel__replace-template-modal"
64
- isFullScreen
65
- >
66
- <div className="edit-site-template-panel__replace-template-modal__content">
67
- <TemplatesList
68
- availableTemplates={ availableTemplates }
69
- onSelect={ onTemplateSelect }
70
- />
71
- </div>
72
- </Modal>
73
- ) }
74
- </>
75
- );
76
- }
77
-
78
- function TemplatesList( { availableTemplates, onSelect } ) {
79
- const shownTemplates = useAsyncList( availableTemplates );
80
-
81
- return (
82
- <BlockPatternsList
83
- label={ __( 'Templates' ) }
84
- blockPatterns={ availableTemplates }
85
- shownPatterns={ shownTemplates }
86
- onClickPattern={ onSelect }
87
- />
88
- );
89
- }
@@ -1,92 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __ } from '@wordpress/i18n';
5
- import { useSelect } from '@wordpress/data';
6
- import { BlockControls, useBlockEditingMode } from '@wordpress/block-editor';
7
- import { store as coreStore } from '@wordpress/core-data';
8
- import { ToolbarButton } from '@wordpress/components';
9
- import { addFilter } from '@wordpress/hooks';
10
- import { createHigherOrderComponent } from '@wordpress/compose';
11
- import { privateApis as routerPrivateApis } from '@wordpress/router';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import { useLink } from '../components/routes/link';
17
- import { unlock } from '../lock-unlock';
18
- import { NAVIGATION_POST_TYPE } from '../utils/constants';
19
-
20
- const { useLocation } = unlock( routerPrivateApis );
21
-
22
- function NavigationMenuEdit( { attributes } ) {
23
- const { ref } = attributes;
24
- const { params } = useLocation();
25
- const blockEditingMode = useBlockEditingMode();
26
- const navigationMenu = useSelect(
27
- ( select ) => {
28
- return select( coreStore ).getEntityRecord(
29
- 'postType',
30
- NAVIGATION_POST_TYPE,
31
- // Ideally this should be an official public API.
32
- ref
33
- );
34
- },
35
- [ ref ]
36
- );
37
-
38
- const linkProps = useLink(
39
- {
40
- postId: navigationMenu?.id,
41
- postType: navigationMenu?.type,
42
- canvas: 'edit',
43
- },
44
- {
45
- // this applies to Navigation Menus as well.
46
- fromTemplateId: params.postId || navigationMenu?.id,
47
- }
48
- );
49
-
50
- // A non-default setting for block editing mode indicates that the
51
- // editor should restrict "editing" actions. Therefore the `Edit` button
52
- // should not be displayed.
53
- if ( ! navigationMenu || blockEditingMode !== 'default' ) {
54
- return null;
55
- }
56
-
57
- return (
58
- <BlockControls group="other">
59
- <ToolbarButton
60
- { ...linkProps }
61
- onClick={ ( event ) => {
62
- linkProps.onClick( event );
63
- } }
64
- >
65
- { __( 'Edit' ) }
66
- </ToolbarButton>
67
- </BlockControls>
68
- );
69
- }
70
-
71
- export const withEditBlockControls = createHigherOrderComponent(
72
- ( BlockEdit ) => ( props ) => {
73
- const { attributes, name } = props;
74
- const isDisplayed = name === 'core/navigation' && attributes.ref;
75
-
76
- return (
77
- <>
78
- <BlockEdit { ...props } />
79
- { isDisplayed && (
80
- <NavigationMenuEdit attributes={ attributes } />
81
- ) }
82
- </>
83
- );
84
- },
85
- 'withEditBlockControls'
86
- );
87
-
88
- addFilter(
89
- 'editor.BlockEdit',
90
- 'core/edit-site/navigation-edit-button',
91
- withEditBlockControls
92
- );