@wordpress/edit-site 5.12.6 → 5.12.8

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 (209) hide show
  1. package/build/components/block-editor/editor-canvas.js +1 -1
  2. package/build/components/block-editor/editor-canvas.js.map +1 -1
  3. package/build/components/block-editor/use-site-editor-settings.js +10 -5
  4. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  5. package/build/components/create-pattern-modal/index.js +8 -4
  6. package/build/components/create-pattern-modal/index.js.map +1 -1
  7. package/build/components/global-styles/palette.js +1 -1
  8. package/build/components/global-styles/palette.js.map +1 -1
  9. package/build/components/header-edit-mode/index.js +6 -2
  10. package/build/components/header-edit-mode/index.js.map +1 -1
  11. package/build/components/layout/index.js +1 -1
  12. package/build/components/layout/index.js.map +1 -1
  13. package/build/components/page/header.js +1 -1
  14. package/build/components/page/header.js.map +1 -1
  15. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +5 -5
  16. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  17. package/build/components/page-patterns/duplicate-menu-item.js +163 -0
  18. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -0
  19. package/build/components/page-patterns/grid-item.js +84 -60
  20. package/build/components/page-patterns/grid-item.js.map +1 -1
  21. package/build/components/page-patterns/grid.js +21 -13
  22. package/build/components/page-patterns/grid.js.map +1 -1
  23. package/build/components/page-patterns/header.js +69 -0
  24. package/build/components/page-patterns/header.js.map +1 -0
  25. package/build/components/page-patterns/index.js +3 -1
  26. package/build/components/page-patterns/index.js.map +1 -1
  27. package/build/components/page-patterns/patterns-list.js +67 -27
  28. package/build/components/page-patterns/patterns-list.js.map +1 -1
  29. package/build/components/page-patterns/rename-menu-item.js +109 -0
  30. package/build/components/page-patterns/rename-menu-item.js.map +1 -0
  31. package/build/components/page-patterns/use-patterns.js +99 -126
  32. package/build/components/page-patterns/use-patterns.js.map +1 -1
  33. package/build/components/page-template-parts/index.js +1 -0
  34. package/build/components/page-template-parts/index.js.map +1 -1
  35. package/build/components/page-templates/index.js +1 -0
  36. package/build/components/page-templates/index.js.map +1 -1
  37. package/build/components/sidebar-edit-mode/page-panels/page-content.js +4 -3
  38. package/build/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  39. package/build/components/sidebar-navigation-screen/index.js +1 -1
  40. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  41. package/build/components/sidebar-navigation-screen-global-styles/index.js +57 -17
  42. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  43. package/build/components/sidebar-navigation-screen-main/index.js +4 -2
  44. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  45. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +45 -0
  46. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -0
  47. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +10 -11
  48. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +1 -1
  49. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +6 -2
  50. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  51. package/build/components/sidebar-navigation-screen-page/status-label.js +2 -35
  52. package/build/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  53. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +3 -3
  54. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  55. package/build/components/sidebar-navigation-screen-patterns/index.js +68 -43
  56. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  57. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  58. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  59. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +20 -9
  60. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  61. package/build/components/site-hub/index.js +2 -2
  62. package/build/components/site-hub/index.js.map +1 -1
  63. package/build/components/template-actions/index.js +25 -7
  64. package/build/components/template-actions/index.js.map +1 -1
  65. package/build/components/template-actions/rename-menu-item.js +9 -6
  66. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  67. package/build/components/welcome-guide/page.js +2 -2
  68. package/build/components/welcome-guide/page.js.map +1 -1
  69. package/build/components/welcome-guide/template.js +2 -2
  70. package/build/components/welcome-guide/template.js.map +1 -1
  71. package/build/hooks/commands/use-edit-mode-commands.js +1 -2
  72. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  73. package/build/hooks/push-changes-to-global-styles/index.js +3 -1
  74. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  75. package/build/store/private-actions.js +7 -1
  76. package/build/store/private-actions.js.map +1 -1
  77. package/build/utils/use-activate-theme.js +1 -1
  78. package/build/utils/use-activate-theme.js.map +1 -1
  79. package/build-module/components/block-editor/editor-canvas.js +1 -1
  80. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  81. package/build-module/components/block-editor/use-site-editor-settings.js +10 -5
  82. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  83. package/build-module/components/create-pattern-modal/index.js +7 -4
  84. package/build-module/components/create-pattern-modal/index.js.map +1 -1
  85. package/build-module/components/global-styles/palette.js +1 -1
  86. package/build-module/components/global-styles/palette.js.map +1 -1
  87. package/build-module/components/header-edit-mode/index.js +6 -2
  88. package/build-module/components/header-edit-mode/index.js.map +1 -1
  89. package/build-module/components/layout/index.js +1 -1
  90. package/build-module/components/layout/index.js.map +1 -1
  91. package/build-module/components/page/header.js +1 -1
  92. package/build-module/components/page/header.js.map +1 -1
  93. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +5 -3
  94. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  95. package/build-module/components/page-patterns/duplicate-menu-item.js +147 -0
  96. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -0
  97. package/build-module/components/page-patterns/grid-item.js +85 -66
  98. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  99. package/build-module/components/page-patterns/grid.js +22 -15
  100. package/build-module/components/page-patterns/grid.js.map +1 -1
  101. package/build-module/components/page-patterns/header.js +54 -0
  102. package/build-module/components/page-patterns/header.js.map +1 -0
  103. package/build-module/components/page-patterns/index.js +3 -1
  104. package/build-module/components/page-patterns/index.js.map +1 -1
  105. package/build-module/components/page-patterns/patterns-list.js +70 -31
  106. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  107. package/build-module/components/page-patterns/rename-menu-item.js +97 -0
  108. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -0
  109. package/build-module/components/page-patterns/use-patterns.js +100 -127
  110. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  111. package/build-module/components/page-template-parts/index.js +1 -0
  112. package/build-module/components/page-template-parts/index.js.map +1 -1
  113. package/build-module/components/page-templates/index.js +1 -0
  114. package/build-module/components/page-templates/index.js.map +1 -1
  115. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js +5 -2
  116. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  117. package/build-module/components/sidebar-navigation-screen/index.js +1 -1
  118. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  119. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +57 -17
  120. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  121. package/build-module/components/sidebar-navigation-screen-main/index.js +4 -3
  122. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  123. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +33 -0
  124. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -0
  125. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +10 -9
  126. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +1 -1
  127. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +6 -3
  128. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  129. package/build-module/components/sidebar-navigation-screen-page/status-label.js +2 -33
  130. package/build-module/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  131. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +3 -3
  132. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  133. package/build-module/components/sidebar-navigation-screen-patterns/index.js +71 -44
  134. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  135. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  136. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  137. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +18 -9
  138. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  139. package/build-module/components/site-hub/index.js +2 -2
  140. package/build-module/components/site-hub/index.js.map +1 -1
  141. package/build-module/components/template-actions/index.js +26 -8
  142. package/build-module/components/template-actions/index.js.map +1 -1
  143. package/build-module/components/template-actions/rename-menu-item.js +8 -6
  144. package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
  145. package/build-module/components/welcome-guide/page.js +2 -2
  146. package/build-module/components/welcome-guide/page.js.map +1 -1
  147. package/build-module/components/welcome-guide/template.js +2 -2
  148. package/build-module/components/welcome-guide/template.js.map +1 -1
  149. package/build-module/hooks/commands/use-edit-mode-commands.js +1 -2
  150. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  151. package/build-module/hooks/push-changes-to-global-styles/index.js +4 -2
  152. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  153. package/build-module/store/private-actions.js +7 -1
  154. package/build-module/store/private-actions.js.map +1 -1
  155. package/build-module/utils/use-activate-theme.js +1 -1
  156. package/build-module/utils/use-activate-theme.js.map +1 -1
  157. package/build-style/style-rtl.css +149 -50
  158. package/build-style/style.css +149 -50
  159. package/package.json +19 -19
  160. package/src/components/block-editor/editor-canvas.js +1 -1
  161. package/src/components/block-editor/use-site-editor-settings.js +8 -4
  162. package/src/components/create-pattern-modal/index.js +6 -3
  163. package/src/components/global-styles/palette.js +10 -9
  164. package/src/components/header-edit-mode/document-actions/style.scss +12 -0
  165. package/src/components/header-edit-mode/index.js +17 -9
  166. package/src/components/layout/index.js +1 -1
  167. package/src/components/layout/style.scss +0 -11
  168. package/src/components/page/header.js +1 -1
  169. package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +12 -3
  170. package/src/components/page-patterns/duplicate-menu-item.js +196 -0
  171. package/src/components/page-patterns/grid-item.js +187 -132
  172. package/src/components/page-patterns/grid.js +35 -22
  173. package/src/components/page-patterns/header.js +69 -0
  174. package/src/components/page-patterns/index.js +6 -1
  175. package/src/components/page-patterns/patterns-list.js +89 -47
  176. package/src/components/page-patterns/rename-menu-item.js +115 -0
  177. package/src/components/page-patterns/style.scss +86 -26
  178. package/src/components/page-patterns/use-patterns.js +99 -176
  179. package/src/components/page-template-parts/index.js +1 -1
  180. package/src/components/page-templates/index.js +1 -1
  181. package/src/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  182. package/src/components/sidebar-navigation-screen/index.js +1 -1
  183. package/src/components/sidebar-navigation-screen/style.scss +19 -1
  184. package/src/components/sidebar-navigation-screen-global-styles/index.js +56 -39
  185. package/src/components/sidebar-navigation-screen-main/index.js +44 -40
  186. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +36 -0
  187. package/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js +8 -11
  188. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +10 -6
  189. package/src/components/sidebar-navigation-screen-page/status-label.js +2 -36
  190. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +3 -3
  191. package/src/components/sidebar-navigation-screen-patterns/index.js +79 -75
  192. package/src/components/sidebar-navigation-screen-patterns/style.scss +23 -1
  193. package/src/components/sidebar-navigation-screen-patterns/use-my-patterns.js +7 -6
  194. package/src/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +31 -9
  195. package/src/components/site-hub/index.js +2 -2
  196. package/src/components/template-actions/index.js +40 -9
  197. package/src/components/template-actions/rename-menu-item.js +8 -6
  198. package/src/components/welcome-guide/page.js +2 -2
  199. package/src/components/welcome-guide/template.js +2 -2
  200. package/src/hooks/commands/use-edit-mode-commands.js +0 -1
  201. package/src/hooks/push-changes-to-global-styles/index.js +8 -1
  202. package/src/store/private-actions.js +5 -1
  203. package/src/style.scss +10 -12
  204. package/src/utils/use-activate-theme.js +1 -1
  205. package/build/components/page-content-focus-manager/constants.js +0 -9
  206. package/build/components/page-content-focus-manager/constants.js.map +0 -1
  207. package/build-module/components/page-content-focus-manager/constants.js +0 -2
  208. package/build-module/components/page-content-focus-manager/constants.js.map +0 -1
  209. package/src/components/page-content-focus-manager/constants.js +0 -5
@@ -4,7 +4,7 @@
4
4
  import { parse } from '@wordpress/blocks';
5
5
  import { useSelect } from '@wordpress/data';
6
6
  import { store as coreStore } from '@wordpress/core-data';
7
- import { useMemo } from '@wordpress/element';
7
+ import { decodeEntities } from '@wordpress/html-entities';
8
8
 
9
9
  /**
10
10
  * Internal dependencies
@@ -15,7 +15,6 @@ import {
15
15
  SYNC_TYPES,
16
16
  TEMPLATE_PARTS,
17
17
  USER_PATTERNS,
18
- USER_PATTERN_CATEGORY,
19
18
  filterOutDuplicatesByName,
20
19
  } from './utils';
21
20
  import { unlock } from '../../lock-unlock';
@@ -31,122 +30,76 @@ const templatePartToPattern = ( templatePart ) => ( {
31
30
  blocks: parse( templatePart.content.raw ),
32
31
  categories: [ templatePart.area ],
33
32
  description: templatePart.description || '',
33
+ isCustom: templatePart.source === 'custom',
34
34
  keywords: templatePart.keywords || [],
35
+ id: createTemplatePartId( templatePart.theme, templatePart.slug ),
35
36
  name: createTemplatePartId( templatePart.theme, templatePart.slug ),
36
- title: templatePart.title.rendered,
37
+ title: decodeEntities( templatePart.title.rendered ),
37
38
  type: templatePart.type,
38
39
  templatePart,
39
40
  } );
40
41
 
41
- const templatePartCategories = [ 'header', 'footer', 'sidebar' ];
42
- const templatePartHasCategory = ( item, category ) => {
43
- if ( category === 'uncategorized' ) {
44
- return ! templatePartCategories.includes( item.templatePart.area );
45
- }
46
-
47
- return item.templatePart.area === category;
48
- };
42
+ const templatePartHasCategory = ( item, category ) =>
43
+ item.templatePart.area === category;
49
44
 
50
- const useTemplatePartsAsPatterns = (
51
- categoryId,
52
- postType = TEMPLATE_PARTS,
53
- filterValue = ''
45
+ const selectTemplatePartsAsPatterns = (
46
+ select,
47
+ { categoryId, search = '' } = {}
54
48
  ) => {
55
- const { templateParts, isResolving } = useSelect(
56
- ( select ) => {
57
- if ( postType !== TEMPLATE_PARTS ) {
58
- return {
59
- templateParts: EMPTY_PATTERN_LIST,
60
- isResolving: false,
61
- };
62
- }
63
-
64
- const { getEntityRecords, isResolving: _isResolving } =
65
- select( coreStore );
66
- const query = { per_page: -1 };
67
- const rawTemplateParts = getEntityRecords(
68
- 'postType',
69
- postType,
70
- query
71
- );
72
- const partsAsPatterns = rawTemplateParts?.map( ( templatePart ) =>
73
- templatePartToPattern( templatePart )
74
- );
75
-
76
- return {
77
- templateParts: partsAsPatterns,
78
- isResolving: _isResolving( 'getEntityRecords', [
79
- 'postType',
80
- 'wp_template_part',
81
- query,
82
- ] ),
83
- };
84
- },
85
- [ postType ]
49
+ const { getEntityRecords, getIsResolving } = select( coreStore );
50
+ const query = { per_page: -1 };
51
+ const rawTemplateParts =
52
+ getEntityRecords( 'postType', TEMPLATE_PARTS, query ) ??
53
+ EMPTY_PATTERN_LIST;
54
+ const templateParts = rawTemplateParts.map( ( templatePart ) =>
55
+ templatePartToPattern( templatePart )
86
56
  );
87
57
 
88
- const filteredTemplateParts = useMemo( () => {
89
- if ( ! templateParts ) {
90
- return EMPTY_PATTERN_LIST;
91
- }
58
+ const isResolving = getIsResolving( 'getEntityRecords', [
59
+ 'postType',
60
+ 'wp_template_part',
61
+ query,
62
+ ] );
92
63
 
93
- return searchItems( templateParts, filterValue, {
94
- categoryId,
95
- hasCategory: templatePartHasCategory,
96
- } );
97
- }, [ templateParts, filterValue, categoryId ] );
64
+ const patterns = searchItems( templateParts, search, {
65
+ categoryId,
66
+ hasCategory: templatePartHasCategory,
67
+ } );
98
68
 
99
- return { templateParts: filteredTemplateParts, isResolving };
69
+ return { patterns, isResolving };
100
70
  };
101
71
 
102
- const useThemePatterns = (
103
- categoryId,
104
- postType = PATTERNS,
105
- filterValue = ''
106
- ) => {
107
- const blockPatterns = useSelect( ( select ) => {
108
- const { getSettings } = unlock( select( editSiteStore ) );
109
- const settings = getSettings();
110
- return (
111
- settings.__experimentalAdditionalBlockPatterns ??
112
- settings.__experimentalBlockPatterns
113
- );
72
+ const selectThemePatterns = ( select, { categoryId, search = '' } = {} ) => {
73
+ const { getSettings } = unlock( select( editSiteStore ) );
74
+ const settings = getSettings();
75
+ const blockPatterns =
76
+ settings.__experimentalAdditionalBlockPatterns ??
77
+ settings.__experimentalBlockPatterns;
78
+
79
+ const restBlockPatterns = select( coreStore ).getBlockPatterns();
80
+
81
+ let patterns = [
82
+ ...( blockPatterns || [] ),
83
+ ...( restBlockPatterns || [] ),
84
+ ]
85
+ .filter(
86
+ ( pattern ) => ! CORE_PATTERN_SOURCES.includes( pattern.source )
87
+ )
88
+ .filter( filterOutDuplicatesByName )
89
+ .map( ( pattern ) => ( {
90
+ ...pattern,
91
+ keywords: pattern.keywords || [],
92
+ type: 'pattern',
93
+ blocks: parse( pattern.content ),
94
+ } ) );
95
+
96
+ patterns = searchItems( patterns, search, {
97
+ categoryId,
98
+ hasCategory: ( item, currentCategory ) =>
99
+ item.categories?.includes( currentCategory ),
114
100
  } );
115
101
 
116
- const restBlockPatterns = useSelect( ( select ) =>
117
- select( coreStore ).getBlockPatterns()
118
- );
119
-
120
- const patterns = useMemo(
121
- () =>
122
- [ ...( blockPatterns || [] ), ...( restBlockPatterns || [] ) ]
123
- .filter(
124
- ( pattern ) =>
125
- ! CORE_PATTERN_SOURCES.includes( pattern.source )
126
- )
127
- .filter( filterOutDuplicatesByName )
128
- .map( ( pattern ) => ( {
129
- ...pattern,
130
- keywords: pattern.keywords || [],
131
- type: 'pattern',
132
- blocks: parse( pattern.content ),
133
- } ) ),
134
- [ blockPatterns, restBlockPatterns ]
135
- );
136
-
137
- const filteredPatterns = useMemo( () => {
138
- if ( postType !== PATTERNS ) {
139
- return EMPTY_PATTERN_LIST;
140
- }
141
-
142
- return searchItems( patterns, filterValue, {
143
- categoryId,
144
- hasCategory: ( item, currentCategory ) =>
145
- item.categories?.includes( currentCategory ),
146
- } );
147
- }, [ patterns, filterValue, categoryId, postType ] );
148
-
149
- return filteredPatterns;
102
+ return { patterns, isResolving: false };
150
103
  };
151
104
 
152
105
  const reusableBlockToPattern = ( reusableBlock ) => ( {
@@ -154,94 +107,64 @@ const reusableBlockToPattern = ( reusableBlock ) => ( {
154
107
  categories: reusableBlock.wp_pattern,
155
108
  id: reusableBlock.id,
156
109
  name: reusableBlock.slug,
157
- syncStatus: reusableBlock.meta?.sync_status || SYNC_TYPES.full,
110
+ syncStatus: reusableBlock.wp_pattern_sync_status || SYNC_TYPES.full,
158
111
  title: reusableBlock.title.raw,
159
112
  type: reusableBlock.type,
160
113
  reusableBlock,
161
114
  } );
162
115
 
163
- const useUserPatterns = (
164
- categoryId,
165
- categoryType = PATTERNS,
166
- filterValue = ''
167
- ) => {
168
- const postType = categoryType === PATTERNS ? USER_PATTERNS : categoryType;
169
- const unfilteredPatterns = useSelect(
170
- ( select ) => {
171
- if (
172
- postType !== USER_PATTERNS ||
173
- categoryId !== USER_PATTERN_CATEGORY
174
- ) {
175
- return EMPTY_PATTERN_LIST;
176
- }
116
+ const selectUserPatterns = ( select, { search = '', syncStatus } = {} ) => {
117
+ const { getEntityRecords, getIsResolving } = select( coreStore );
177
118
 
178
- const { getEntityRecords } = select( coreStore );
179
- const records = getEntityRecords( 'postType', postType, {
180
- per_page: -1,
181
- } );
119
+ const query = { per_page: -1 };
120
+ const records = getEntityRecords( 'postType', USER_PATTERNS, query );
182
121
 
183
- if ( ! records ) {
184
- return EMPTY_PATTERN_LIST;
185
- }
122
+ let patterns = records
123
+ ? records.map( ( record ) => reusableBlockToPattern( record ) )
124
+ : EMPTY_PATTERN_LIST;
125
+ const isResolving = getIsResolving( 'getEntityRecords', [
126
+ 'postType',
127
+ USER_PATTERNS,
128
+ query,
129
+ ] );
186
130
 
187
- return records.map( ( record ) =>
188
- reusableBlockToPattern( record )
189
- );
190
- },
191
- [ postType, categoryId ]
192
- );
131
+ if ( syncStatus ) {
132
+ patterns = patterns.filter(
133
+ ( pattern ) => pattern.syncStatus === syncStatus
134
+ );
135
+ }
193
136
 
194
- const filteredPatterns = useMemo( () => {
195
- if ( ! unfilteredPatterns.length ) {
196
- return EMPTY_PATTERN_LIST;
197
- }
198
-
199
- return searchItems( unfilteredPatterns, filterValue, {
200
- // We exit user pattern retrieval early if we aren't in the
201
- // catch-all category for user created patterns, so it has
202
- // to be in the category.
203
- hasCategory: () => true,
204
- } );
205
- }, [ unfilteredPatterns, filterValue ] );
206
-
207
- const patterns = { syncedPatterns: [], unsyncedPatterns: [] };
208
-
209
- filteredPatterns.forEach( ( pattern ) => {
210
- if ( pattern.syncStatus === SYNC_TYPES.full ) {
211
- patterns.syncedPatterns.push( pattern );
212
- } else {
213
- patterns.unsyncedPatterns.push( pattern );
214
- }
137
+ patterns = searchItems( patterns, search, {
138
+ // We exit user pattern retrieval early if we aren't in the
139
+ // catch-all category for user created patterns, so it has
140
+ // to be in the category.
141
+ hasCategory: () => true,
215
142
  } );
216
143
 
217
- return patterns;
144
+ return { patterns, isResolving };
218
145
  };
219
146
 
220
- export const usePatterns = ( categoryType, categoryId, filterValue ) => {
221
- const blockPatterns = useThemePatterns(
222
- categoryId,
223
- categoryType,
224
- filterValue
225
- );
226
-
227
- const { syncedPatterns = [], unsyncedPatterns = [] } = useUserPatterns(
228
- categoryId,
229
- categoryType,
230
- filterValue
231
- );
232
-
233
- const { templateParts, isResolving } = useTemplatePartsAsPatterns(
234
- categoryId,
235
- categoryType,
236
- filterValue
147
+ export const usePatterns = (
148
+ categoryType,
149
+ categoryId,
150
+ { search = '', syncStatus }
151
+ ) => {
152
+ return useSelect(
153
+ ( select ) => {
154
+ if ( categoryType === TEMPLATE_PARTS ) {
155
+ return selectTemplatePartsAsPatterns( select, {
156
+ categoryId,
157
+ search,
158
+ } );
159
+ } else if ( categoryType === PATTERNS ) {
160
+ return selectThemePatterns( select, { categoryId, search } );
161
+ } else if ( categoryType === USER_PATTERNS ) {
162
+ return selectUserPatterns( select, { search, syncStatus } );
163
+ }
164
+ return { patterns: EMPTY_PATTERN_LIST, isResolving: false };
165
+ },
166
+ [ categoryId, categoryType, search, syncStatus ]
237
167
  );
238
-
239
- const patterns = {
240
- syncedPatterns: [ ...templateParts, ...syncedPatterns ],
241
- unsyncedPatterns: [ ...blockPatterns, ...unsyncedPatterns ],
242
- };
243
-
244
- return [ patterns, isResolving ];
245
168
  };
246
169
 
247
170
  export default usePatterns;
@@ -45,7 +45,7 @@ export default function PageTemplateParts() {
45
45
  header: __( 'Template Part' ),
46
46
  cell: ( templatePart ) => (
47
47
  <VStack>
48
- <Heading level={ 5 }>
48
+ <Heading as="h3" level={ 5 }>
49
49
  <Link
50
50
  params={ {
51
51
  postId: templatePart.id,
@@ -46,7 +46,7 @@ export default function PageTemplates() {
46
46
  header: __( 'Template' ),
47
47
  cell: ( template ) => (
48
48
  <VStack>
49
- <Heading level={ 5 }>
49
+ <Heading as="h3" level={ 5 }>
50
50
  <Link
51
51
  params={ {
52
52
  postId: template.id,
@@ -6,22 +6,24 @@ import {
6
6
  store as blockEditorStore,
7
7
  privateApis as blockEditorPrivateApis,
8
8
  } from '@wordpress/block-editor';
9
+ import { useMemo } from '@wordpress/element';
9
10
 
10
11
  /**
11
12
  * Internal dependencies
12
13
  */
13
- import { PAGE_CONTENT_BLOCK_TYPES } from '../../page-content-focus-manager/constants';
14
14
  import { unlock } from '../../../lock-unlock';
15
15
 
16
16
  const { BlockQuickNavigation } = unlock( blockEditorPrivateApis );
17
17
 
18
18
  export default function PageContent() {
19
- const clientIds = useSelect(
19
+ const clientIdsTree = useSelect(
20
20
  ( select ) =>
21
- select( blockEditorStore ).__experimentalGetGlobalBlocksByName(
22
- PAGE_CONTENT_BLOCK_TYPES
23
- ),
21
+ unlock( select( blockEditorStore ) ).getEnabledClientIdsTree(),
24
22
  []
25
23
  );
24
+ const clientIds = useMemo(
25
+ () => clientIdsTree.map( ( { clientId } ) => clientId ),
26
+ [ clientIdsTree ]
27
+ );
26
28
  return <BlockQuickNavigation clientIds={ clientIds } />;
27
29
  }
@@ -78,7 +78,7 @@ export default function SidebarNavigationScreen( {
78
78
  icon={ icon }
79
79
  label={
80
80
  ! isPreviewingTheme()
81
- ? __( 'Go back to the Dashboard' )
81
+ ? __( 'Go to the Dashboard' )
82
82
  : __( 'Go back to the theme showcase' )
83
83
  }
84
84
  href={
@@ -98,6 +98,20 @@
98
98
  border-top: 1px solid $gray-800;
99
99
  }
100
100
 
101
+ .edit-site-sidebar__notice {
102
+ background: $gray-800;
103
+ color: $gray-300;
104
+ margin: $grid-unit-30 0;
105
+ &.is-dismissible {
106
+ padding-right: $grid-unit-10;
107
+ }
108
+ .components-notice__dismiss:not(:disabled):not([aria-disabled="true"]):focus,
109
+ .components-notice__dismiss:not(:disabled):not([aria-disabled="true"]):not(.is-secondary):active,
110
+ .components-notice__dismiss:not(:disabled):not([aria-disabled="true"]):not(.is-secondary):hover {
111
+ color: $gray-100;
112
+ }
113
+ }
114
+
101
115
  /* In general style overrides are discouraged.
102
116
  * This is a temporary solution to override the InputControl component's styles.
103
117
  * The `Theme` component will potentially be the more appropriate approach
@@ -107,7 +121,11 @@
107
121
  .edit-site-sidebar-navigation-screen__input-control {
108
122
  width: 100%;
109
123
  .components-input-control__container {
110
- background: transparent;
124
+ background: $gray-800;
125
+
126
+ .components-button {
127
+ color: $gray-200 !important;
128
+ }
111
129
  }
112
130
  .components-input-control__input {
113
131
  color: $gray-200 !important;
@@ -37,17 +37,27 @@ export function SidebarNavigationItemGlobalStyles( props ) {
37
37
  const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
38
38
  const { createNotice } = useDispatch( noticesStore );
39
39
  const { set: setPreference } = useDispatch( preferencesStore );
40
- const { hasGlobalStyleVariations, isDistractionFree } = useSelect(
41
- ( select ) => ( {
42
- hasGlobalStyleVariations:
43
- !! select(
44
- coreStore
45
- ).__experimentalGetCurrentThemeGlobalStylesVariations()?.length,
46
- isDistractionFree: select( preferencesStore ).get(
47
- editSiteStore.name,
48
- 'distractionFree'
49
- ),
50
- } ),
40
+ const { get: getPrefference } = useSelect( preferencesStore );
41
+
42
+ const turnOffDistractionFreeMode = useCallback( () => {
43
+ const isDistractionFree = getPrefference(
44
+ editSiteStore.name,
45
+ 'distractionFree'
46
+ );
47
+ if ( ! isDistractionFree ) {
48
+ return;
49
+ }
50
+ setPreference( editSiteStore.name, 'distractionFree', false );
51
+ createNotice( 'info', __( 'Distraction free mode turned off' ), {
52
+ isDismissible: true,
53
+ type: 'snackbar',
54
+ } );
55
+ }, [ createNotice, setPreference, getPrefference ] );
56
+ const hasGlobalStyleVariations = useSelect(
57
+ ( select ) =>
58
+ !! select(
59
+ coreStore
60
+ ).__experimentalGetCurrentThemeGlobalStylesVariations()?.length,
51
61
  []
52
62
  );
53
63
  if ( hasGlobalStyleVariations ) {
@@ -63,19 +73,7 @@ export function SidebarNavigationItemGlobalStyles( props ) {
63
73
  <SidebarNavigationItem
64
74
  { ...props }
65
75
  onClick={ () => {
66
- // Disable distraction free mode.
67
- if ( isDistractionFree ) {
68
- setPreference(
69
- editSiteStore.name,
70
- 'distractionFree',
71
- false
72
- );
73
- createNotice(
74
- 'info',
75
- __( 'Distraction free mode turned off.' ),
76
- { type: 'snackbar' }
77
- );
78
- }
76
+ turnOffDistractionFreeMode();
79
77
  // Switch to edit mode.
80
78
  setCanvasMode( 'edit' );
81
79
  // Open global styles sidebar.
@@ -170,22 +168,41 @@ export default function SidebarNavigationScreenGlobalStyles() {
170
168
  const { setCanvasMode, setEditorCanvasContainerView } = unlock(
171
169
  useDispatch( editSiteStore )
172
170
  );
171
+ const { createNotice } = useDispatch( noticesStore );
172
+ const { set: setPreference } = useDispatch( preferencesStore );
173
+ const { get: getPrefference } = useSelect( preferencesStore );
174
+ const { isViewMode, isStyleBookOpened } = useSelect( ( select ) => {
175
+ const { getCanvasMode, getEditorCanvasContainerView } = unlock(
176
+ select( editSiteStore )
177
+ );
178
+ return {
179
+ isViewMode: 'view' === getCanvasMode(),
180
+ isStyleBookOpened: 'style-book' === getEditorCanvasContainerView(),
181
+ };
182
+ }, [] );
173
183
 
174
- const isStyleBookOpened = useSelect(
175
- ( select ) =>
176
- 'style-book' ===
177
- unlock( select( editSiteStore ) ).getEditorCanvasContainerView(),
178
- []
179
- );
184
+ const turnOffDistractionFreeMode = useCallback( () => {
185
+ const isDistractionFree = getPrefference(
186
+ editSiteStore.name,
187
+ 'distractionFree'
188
+ );
189
+ if ( ! isDistractionFree ) {
190
+ return;
191
+ }
192
+ setPreference( editSiteStore.name, 'distractionFree', false );
193
+ createNotice( 'info', __( 'Distraction free mode turned off' ), {
194
+ isDismissible: true,
195
+ type: 'snackbar',
196
+ } );
197
+ }, [ createNotice, setPreference, getPrefference ] );
180
198
 
181
- const openGlobalStyles = useCallback(
182
- async () =>
183
- Promise.all( [
184
- setCanvasMode( 'edit' ),
185
- openGeneralSidebar( 'edit-site/global-styles' ),
186
- ] ),
187
- [ setCanvasMode, openGeneralSidebar ]
188
- );
199
+ const openGlobalStyles = useCallback( async () => {
200
+ turnOffDistractionFreeMode();
201
+ return Promise.all( [
202
+ setCanvasMode( 'edit' ),
203
+ openGeneralSidebar( 'edit-site/global-styles' ),
204
+ ] );
205
+ }, [ setCanvasMode, openGeneralSidebar, turnOffDistractionFreeMode ] );
189
206
 
190
207
  const openStyleBook = useCallback( async () => {
191
208
  await openGlobalStyles();
@@ -246,7 +263,7 @@ export default function SidebarNavigationScreenGlobalStyles() {
246
263
  </>
247
264
  }
248
265
  />
249
- { isStyleBookOpened && ! isMobileViewport && (
266
+ { isStyleBookOpened && ! isMobileViewport && isViewMode && (
250
267
  <StyleBook
251
268
  enableResizing={ false }
252
269
  isSelected={ () => false }
@@ -20,6 +20,7 @@ import SidebarNavigationItem from '../sidebar-navigation-item';
20
20
  import { SidebarNavigationItemGlobalStyles } from '../sidebar-navigation-screen-global-styles';
21
21
  import { unlock } from '../../lock-unlock';
22
22
  import { store as editSiteStore } from '../../store';
23
+ import TemplatePartHint from './template-part-hint';
23
24
 
24
25
  export default function SidebarNavigationScreenMain() {
25
26
  const { location } = useNavigator();
@@ -42,46 +43,49 @@ export default function SidebarNavigationScreenMain() {
42
43
  'Customize the appearance of your website using the block editor.'
43
44
  ) }
44
45
  content={
45
- <ItemGroup>
46
- <NavigatorButton
47
- as={ SidebarNavigationItem }
48
- path="/navigation"
49
- withChevron
50
- icon={ navigation }
51
- >
52
- { __( 'Navigation' ) }
53
- </NavigatorButton>
54
- <SidebarNavigationItemGlobalStyles
55
- withChevron
56
- icon={ styles }
57
- >
58
- { __( 'Styles' ) }
59
- </SidebarNavigationItemGlobalStyles>
60
- <NavigatorButton
61
- as={ SidebarNavigationItem }
62
- path="/page"
63
- withChevron
64
- icon={ page }
65
- >
66
- { __( 'Pages' ) }
67
- </NavigatorButton>
68
- <NavigatorButton
69
- as={ SidebarNavigationItem }
70
- path="/wp_template"
71
- withChevron
72
- icon={ layout }
73
- >
74
- { __( 'Templates' ) }
75
- </NavigatorButton>
76
- <NavigatorButton
77
- as={ SidebarNavigationItem }
78
- path="/patterns"
79
- withChevron
80
- icon={ symbol }
81
- >
82
- { __( 'Patterns' ) }
83
- </NavigatorButton>
84
- </ItemGroup>
46
+ <>
47
+ <ItemGroup>
48
+ <NavigatorButton
49
+ as={ SidebarNavigationItem }
50
+ path="/navigation"
51
+ withChevron
52
+ icon={ navigation }
53
+ >
54
+ { __( 'Navigation' ) }
55
+ </NavigatorButton>
56
+ <SidebarNavigationItemGlobalStyles
57
+ withChevron
58
+ icon={ styles }
59
+ >
60
+ { __( 'Styles' ) }
61
+ </SidebarNavigationItemGlobalStyles>
62
+ <NavigatorButton
63
+ as={ SidebarNavigationItem }
64
+ path="/page"
65
+ withChevron
66
+ icon={ page }
67
+ >
68
+ { __( 'Pages' ) }
69
+ </NavigatorButton>
70
+ <NavigatorButton
71
+ as={ SidebarNavigationItem }
72
+ path="/wp_template"
73
+ withChevron
74
+ icon={ layout }
75
+ >
76
+ { __( 'Templates' ) }
77
+ </NavigatorButton>
78
+ <NavigatorButton
79
+ as={ SidebarNavigationItem }
80
+ path="/patterns"
81
+ withChevron
82
+ icon={ symbol }
83
+ >
84
+ { __( 'Patterns' ) }
85
+ </NavigatorButton>
86
+ </ItemGroup>
87
+ <TemplatePartHint />
88
+ </>
85
89
  }
86
90
  />
87
91
  );