@wordpress/edit-site 5.31.0 → 5.32.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 (280) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-editor/editor-canvas.js +8 -1
  3. package/build/components/block-editor/editor-canvas.js.map +1 -1
  4. package/build/components/block-editor/site-editor-canvas.js +15 -4
  5. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  6. package/build/components/editor/index.js +12 -3
  7. package/build/components/editor/index.js.map +1 -1
  8. package/build/components/editor-canvas-container/index.js +1 -2
  9. package/build/components/editor-canvas-container/index.js.map +1 -1
  10. package/build/components/global-styles/background-panel.js +38 -0
  11. package/build/components/global-styles/background-panel.js.map +1 -0
  12. package/build/components/global-styles/font-families.js +1 -1
  13. package/build/components/global-styles/font-families.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/context.js +38 -9
  15. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/utils/index.js +20 -2
  17. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  18. package/build/components/global-styles/palette.js +3 -1
  19. package/build/components/global-styles/palette.js.map +1 -1
  20. package/build/components/global-styles/preview-colors.js +2 -2
  21. package/build/components/global-styles/preview-colors.js.map +1 -1
  22. package/build/components/global-styles/root-menu.js +8 -2
  23. package/build/components/global-styles/root-menu.js.map +1 -1
  24. package/build/components/global-styles/screen-background.js +34 -0
  25. package/build/components/global-styles/screen-background.js.map +1 -0
  26. package/build/components/global-styles/screen-color-palette.js +2 -2
  27. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  28. package/build/components/global-styles/screen-colors.js +6 -4
  29. package/build/components/global-styles/screen-colors.js.map +1 -1
  30. package/build/components/global-styles/screen-style-variations.js +3 -37
  31. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  32. package/build/components/global-styles/screen-typography.js +6 -6
  33. package/build/components/global-styles/screen-typography.js.map +1 -1
  34. package/build/components/global-styles/style-variations-container.js +5 -2
  35. package/build/components/global-styles/style-variations-container.js.map +1 -1
  36. package/build/components/global-styles/ui.js +4 -1
  37. package/build/components/global-styles/ui.js.map +1 -1
  38. package/build/components/global-styles/variations/variations-color.js +10 -3
  39. package/build/components/global-styles/variations/variations-color.js.map +1 -1
  40. package/build/components/global-styles/variations/variations-typography.js +9 -2
  41. package/build/components/global-styles/variations/variations-typography.js.map +1 -1
  42. package/build/components/keyboard-shortcut-help-modal/index.js +3 -0
  43. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  44. package/build/components/layout/animation.js +129 -0
  45. package/build/components/layout/animation.js.map +1 -0
  46. package/build/components/layout/index.js +9 -17
  47. package/build/components/layout/index.js.map +1 -1
  48. package/build/components/layout/router.js +21 -18
  49. package/build/components/layout/router.js.map +1 -1
  50. package/build/components/page-pages/index.js +19 -17
  51. package/build/components/page-pages/index.js.map +1 -1
  52. package/build/components/page-patterns/index.js +18 -28
  53. package/build/components/page-patterns/index.js.map +1 -1
  54. package/build/components/page-patterns/search-items.js +16 -58
  55. package/build/components/page-patterns/search-items.js.map +1 -1
  56. package/build/components/page-templates-template-parts/actions.js +54 -41
  57. package/build/components/page-templates-template-parts/actions.js.map +1 -1
  58. package/build/components/page-templates-template-parts/index.js +26 -59
  59. package/build/components/page-templates-template-parts/index.js.map +1 -1
  60. package/build/components/plugin-template-setting-panel/index.js +12 -1
  61. package/build/components/plugin-template-setting-panel/index.js.map +1 -1
  62. package/build/components/save-button/index.js +45 -16
  63. package/build/components/save-button/index.js.map +1 -1
  64. package/build/components/save-hub/index.js +8 -112
  65. package/build/components/save-hub/index.js.map +1 -1
  66. package/build/components/sidebar/index.js +1 -5
  67. package/build/components/sidebar/index.js.map +1 -1
  68. package/build/components/sidebar-dataviews/default-views.js +1 -1
  69. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  70. package/build/components/sidebar-dataviews/index.js +1 -1
  71. package/build/components/sidebar-dataviews/index.js.map +1 -1
  72. package/build/components/sidebar-edit-mode/index.js +1 -2
  73. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  74. package/build/components/sidebar-edit-mode/page-panels/index.js +5 -15
  75. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  76. package/build/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  77. package/build/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  78. package/build/components/sidebar-edit-mode/template-panel/index.js +10 -16
  79. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  80. package/build/components/sidebar-navigation-screen-details-footer/index.js +5 -1
  81. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  82. package/build/components/sidebar-navigation-screen-global-styles/index.js +10 -5
  83. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  84. package/build/components/sidebar-navigation-screen-patterns/index.js +1 -5
  85. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  86. package/build/components/style-book/index.js +1 -1
  87. package/build/components/style-book/index.js.map +1 -1
  88. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +2 -2
  89. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  90. package/build/components/sync-state-with-url/use-sync-path-with-url.js +1 -1
  91. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  92. package/build/hooks/index.js +0 -1
  93. package/build/hooks/index.js.map +1 -1
  94. package/build/store/selectors.js +1 -9
  95. package/build/store/selectors.js.map +1 -1
  96. package/build-module/components/block-editor/editor-canvas.js +8 -1
  97. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  98. package/build-module/components/block-editor/site-editor-canvas.js +15 -4
  99. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  100. package/build-module/components/editor/index.js +13 -4
  101. package/build-module/components/editor/index.js.map +1 -1
  102. package/build-module/components/editor-canvas-container/index.js +1 -2
  103. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  104. package/build-module/components/global-styles/background-panel.js +31 -0
  105. package/build-module/components/global-styles/background-panel.js.map +1 -0
  106. package/build-module/components/global-styles/font-families.js +1 -1
  107. package/build-module/components/global-styles/font-families.js.map +1 -1
  108. package/build-module/components/global-styles/font-library-modal/context.js +38 -9
  109. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  110. package/build-module/components/global-styles/font-library-modal/utils/index.js +20 -2
  111. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  112. package/build-module/components/global-styles/palette.js +3 -1
  113. package/build-module/components/global-styles/palette.js.map +1 -1
  114. package/build-module/components/global-styles/preview-colors.js +2 -2
  115. package/build-module/components/global-styles/preview-colors.js.map +1 -1
  116. package/build-module/components/global-styles/root-menu.js +9 -3
  117. package/build-module/components/global-styles/root-menu.js.map +1 -1
  118. package/build-module/components/global-styles/screen-background.js +26 -0
  119. package/build-module/components/global-styles/screen-background.js.map +1 -0
  120. package/build-module/components/global-styles/screen-color-palette.js +2 -2
  121. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  122. package/build-module/components/global-styles/screen-colors.js +6 -4
  123. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  124. package/build-module/components/global-styles/screen-style-variations.js +4 -38
  125. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  126. package/build-module/components/global-styles/screen-typography.js +6 -6
  127. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  128. package/build-module/components/global-styles/style-variations-container.js +5 -2
  129. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  130. package/build-module/components/global-styles/ui.js +4 -1
  131. package/build-module/components/global-styles/ui.js.map +1 -1
  132. package/build-module/components/global-styles/variations/variations-color.js +10 -3
  133. package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
  134. package/build-module/components/global-styles/variations/variations-typography.js +9 -2
  135. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
  136. package/build-module/components/keyboard-shortcut-help-modal/index.js +3 -0
  137. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  138. package/build-module/components/layout/animation.js +122 -0
  139. package/build-module/components/layout/animation.js.map +1 -0
  140. package/build-module/components/layout/index.js +9 -17
  141. package/build-module/components/layout/index.js.map +1 -1
  142. package/build-module/components/layout/router.js +21 -18
  143. package/build-module/components/layout/router.js.map +1 -1
  144. package/build-module/components/page-pages/index.js +19 -17
  145. package/build-module/components/page-pages/index.js.map +1 -1
  146. package/build-module/components/page-patterns/index.js +20 -30
  147. package/build-module/components/page-patterns/index.js.map +1 -1
  148. package/build-module/components/page-patterns/search-items.js +14 -55
  149. package/build-module/components/page-patterns/search-items.js.map +1 -1
  150. package/build-module/components/page-templates-template-parts/actions.js +54 -40
  151. package/build-module/components/page-templates-template-parts/actions.js.map +1 -1
  152. package/build-module/components/page-templates-template-parts/index.js +29 -62
  153. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  154. package/build-module/components/plugin-template-setting-panel/index.js +12 -1
  155. package/build-module/components/plugin-template-setting-panel/index.js.map +1 -1
  156. package/build-module/components/save-button/index.js +46 -17
  157. package/build-module/components/save-button/index.js.map +1 -1
  158. package/build-module/components/save-hub/index.js +10 -114
  159. package/build-module/components/save-hub/index.js.map +1 -1
  160. package/build-module/components/sidebar/index.js +1 -5
  161. package/build-module/components/sidebar/index.js.map +1 -1
  162. package/build-module/components/sidebar-dataviews/default-views.js +1 -1
  163. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  164. package/build-module/components/sidebar-dataviews/index.js +1 -1
  165. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  166. package/build-module/components/sidebar-edit-mode/index.js +1 -2
  167. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  168. package/build-module/components/sidebar-edit-mode/page-panels/index.js +8 -18
  169. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  170. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  171. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  172. package/build-module/components/sidebar-edit-mode/template-panel/index.js +11 -17
  173. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  174. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +5 -1
  175. package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  176. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +10 -5
  177. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  178. package/build-module/components/sidebar-navigation-screen-patterns/index.js +1 -5
  179. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  180. package/build-module/components/style-book/index.js +1 -1
  181. package/build-module/components/style-book/index.js.map +1 -1
  182. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +2 -2
  183. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  184. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +1 -1
  185. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  186. package/build-module/hooks/index.js +0 -1
  187. package/build-module/hooks/index.js.map +1 -1
  188. package/build-module/store/selectors.js +1 -9
  189. package/build-module/store/selectors.js.map +1 -1
  190. package/build-style/style-rtl.css +116 -104
  191. package/build-style/style.css +116 -104
  192. package/package.json +44 -44
  193. package/src/components/block-editor/editor-canvas.js +14 -2
  194. package/src/components/block-editor/site-editor-canvas.js +10 -7
  195. package/src/components/editor/index.js +11 -4
  196. package/src/components/editor-canvas-container/index.js +0 -1
  197. package/src/components/global-styles/background-panel.js +34 -0
  198. package/src/components/global-styles/font-families.js +1 -1
  199. package/src/components/global-styles/font-library-modal/context.js +43 -14
  200. package/src/components/global-styles/font-library-modal/style.scss +1 -1
  201. package/src/components/global-styles/font-library-modal/utils/index.js +17 -4
  202. package/src/components/global-styles/palette.js +3 -1
  203. package/src/components/global-styles/preview-colors.js +2 -2
  204. package/src/components/global-styles/root-menu.js +12 -1
  205. package/src/components/global-styles/screen-background.js +29 -0
  206. package/src/components/global-styles/screen-color-palette.js +2 -2
  207. package/src/components/global-styles/screen-colors.js +4 -4
  208. package/src/components/global-styles/screen-style-variations.js +4 -36
  209. package/src/components/global-styles/screen-typography.js +6 -9
  210. package/src/components/global-styles/style-variations-container.js +2 -1
  211. package/src/components/global-styles/style.scss +14 -12
  212. package/src/components/global-styles/ui.js +5 -0
  213. package/src/components/global-styles/variations/style.scss +32 -17
  214. package/src/components/global-styles/variations/variations-color.js +4 -2
  215. package/src/components/global-styles/variations/variations-typography.js +4 -1
  216. package/src/components/header-edit-mode/style.scss +28 -17
  217. package/src/components/keyboard-shortcut-help-modal/index.js +4 -0
  218. package/src/components/layout/animation.js +122 -0
  219. package/src/components/layout/index.js +12 -27
  220. package/src/components/layout/router.js +25 -19
  221. package/src/components/layout/style.scss +2 -0
  222. package/src/components/page-pages/index.js +27 -43
  223. package/src/components/page-patterns/index.js +20 -28
  224. package/src/components/page-patterns/search-items.js +13 -58
  225. package/src/components/page-templates-template-parts/actions.js +106 -91
  226. package/src/components/page-templates-template-parts/index.js +34 -78
  227. package/src/components/page-templates-template-parts/style.scss +5 -0
  228. package/src/components/plugin-template-setting-panel/index.js +14 -1
  229. package/src/components/save-button/index.js +55 -26
  230. package/src/components/save-hub/index.js +20 -164
  231. package/src/components/sidebar/index.js +0 -5
  232. package/src/components/sidebar-dataviews/default-views.js +1 -1
  233. package/src/components/sidebar-dataviews/index.js +1 -1
  234. package/src/components/sidebar-edit-mode/index.js +0 -2
  235. package/src/components/sidebar-edit-mode/page-panels/index.js +29 -60
  236. package/src/components/sidebar-edit-mode/page-panels/page-content.js +10 -10
  237. package/src/components/sidebar-edit-mode/template-panel/index.js +23 -33
  238. package/src/components/sidebar-edit-mode/template-panel/style.scss +1 -29
  239. package/src/components/sidebar-navigation-screen/style.scss +12 -9
  240. package/src/components/sidebar-navigation-screen-details-footer/index.js +6 -2
  241. package/src/components/sidebar-navigation-screen-global-styles/index.js +7 -13
  242. package/src/components/sidebar-navigation-screen-patterns/index.js +0 -7
  243. package/src/components/style-book/index.js +1 -3
  244. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +2 -2
  245. package/src/components/sync-state-with-url/use-sync-path-with-url.js +1 -1
  246. package/src/hooks/index.js +0 -1
  247. package/src/store/selectors.js +3 -15
  248. package/src/style.scss +0 -1
  249. package/build/components/actions/index.js +0 -319
  250. package/build/components/actions/index.js.map +0 -1
  251. package/build/components/sidebar-edit-mode/sidebar-card/index.js +0 -48
  252. package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +0 -1
  253. package/build/components/sidebar-edit-mode/template-panel/template-areas.js +0 -70
  254. package/build/components/sidebar-edit-mode/template-panel/template-areas.js.map +0 -1
  255. package/build/components/sidebar-navigation-screen-pages/index.js +0 -175
  256. package/build/components/sidebar-navigation-screen-pages/index.js.map +0 -1
  257. package/build/hooks/template-part-edit.js +0 -82
  258. package/build/hooks/template-part-edit.js.map +0 -1
  259. package/build/store/utils.js +0 -71
  260. package/build/store/utils.js.map +0 -1
  261. package/build-module/components/actions/index.js +0 -308
  262. package/build-module/components/actions/index.js.map +0 -1
  263. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +0 -40
  264. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js.map +0 -1
  265. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js +0 -63
  266. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js.map +0 -1
  267. package/build-module/components/sidebar-navigation-screen-pages/index.js +0 -167
  268. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +0 -1
  269. package/build-module/hooks/template-part-edit.js +0 -75
  270. package/build-module/hooks/template-part-edit.js.map +0 -1
  271. package/build-module/store/utils.js +0 -64
  272. package/build-module/store/utils.js.map +0 -1
  273. package/src/components/actions/index.js +0 -409
  274. package/src/components/sidebar-edit-mode/sidebar-card/index.js +0 -53
  275. package/src/components/sidebar-edit-mode/sidebar-card/style.scss +0 -36
  276. package/src/components/sidebar-edit-mode/template-panel/template-areas.js +0 -86
  277. package/src/components/sidebar-navigation-screen-pages/index.js +0 -238
  278. package/src/hooks/template-part-edit.js +0 -89
  279. package/src/store/test/utils.js +0 -191
  280. package/src/store/utils.js +0 -69
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = PageTemplatesTemplateParts;
8
8
  var _react = require("react");
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
- var _removeAccents = _interopRequireDefault(require("remove-accents"));
11
10
  var _components = require("@wordpress/components");
12
11
  var _i18n = require("@wordpress/i18n");
13
12
  var _element = require("@wordpress/element");
@@ -17,13 +16,13 @@ var _blocks = require("@wordpress/blocks");
17
16
  var _blockEditor = require("@wordpress/block-editor");
18
17
  var _dataviews = require("@wordpress/dataviews");
19
18
  var _router = require("@wordpress/router");
19
+ var _editor = require("@wordpress/editor");
20
20
  var _page = _interopRequireDefault(require("../page"));
21
21
  var _link = _interopRequireWildcard(require("../routes/link"));
22
22
  var _addNewTemplate = _interopRequireDefault(require("../add-new-template"));
23
23
  var _hooks = require("./hooks");
24
24
  var _constants = require("../../utils/constants");
25
25
  var _actions = require("./actions");
26
- var _actions2 = require("../actions");
27
26
  var _usePatternSettings = _interopRequireDefault(require("../page-patterns/use-pattern-settings"));
28
27
  var _lockUnlock = require("../../lock-unlock");
29
28
  var _addNewTemplatePart = _interopRequireDefault(require("./add-new-template-part"));
@@ -41,6 +40,9 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
41
40
  * Internal dependencies
42
41
  */
43
42
 
43
+ const {
44
+ usePostActions
45
+ } = (0, _lockUnlock.unlock)(_editor.privateApis);
44
46
  const {
45
47
  ExperimentalBlockEditorProvider,
46
48
  useGlobalStyle
@@ -56,7 +58,8 @@ const defaultConfigPerViewType = {
56
58
  },
57
59
  [_constants.LAYOUT_GRID]: {
58
60
  mediaField: 'preview',
59
- primaryField: 'title'
61
+ primaryField: 'title',
62
+ displayAsColumnFields: ['description']
60
63
  },
61
64
  [_constants.LAYOUT_LIST]: {
62
65
  primaryField: 'title',
@@ -78,9 +81,6 @@ const DEFAULT_VIEW = {
78
81
  layout: defaultConfigPerViewType[_constants.LAYOUT_TABLE],
79
82
  filters: []
80
83
  };
81
- function normalizeSearchInput(input = '') {
82
- return (0, _removeAccents.default)(input.trim().toLowerCase());
83
- }
84
84
  function Title({
85
85
  item,
86
86
  viewType
@@ -130,7 +130,9 @@ function AuthorField({
130
130
  className: "page-templates-author-field__icon"
131
131
  }, (0, _react.createElement)(_components.Icon, {
132
132
  icon: icon
133
- })), (0, _react.createElement)("span", null, text));
133
+ })), (0, _react.createElement)("span", {
134
+ className: "page-templates-author-field__name"
135
+ }, text));
134
136
  }
135
137
  function Preview({
136
138
  item,
@@ -264,7 +266,8 @@ function PageTemplatesTemplateParts({
264
266
  viewType: view.type
265
267
  }),
266
268
  maxWidth: 400,
267
- enableHiding: false
269
+ enableHiding: false,
270
+ enableGlobalSearch: true
268
271
  }];
269
272
  if (postType === _constants.TEMPLATE_POST_TYPE) {
270
273
  _fields.push({
@@ -282,7 +285,8 @@ function PageTemplatesTemplateParts({
282
285
  },
283
286
  maxWidth: 400,
284
287
  minWidth: 320,
285
- enableSorting: false
288
+ enableSorting: false,
289
+ enableGlobalSearch: true
286
290
  });
287
291
  }
288
292
  // TODO: The plan is to support fields reordering, which would require an API like `order` or something
@@ -311,57 +315,20 @@ function PageTemplatesTemplateParts({
311
315
  data,
312
316
  paginationInfo
313
317
  } = (0, _element.useMemo)(() => {
314
- if (!records) {
315
- return {
316
- data: EMPTY_ARRAY,
317
- paginationInfo: {
318
- totalItems: 0,
319
- totalPages: 0
320
- }
321
- };
322
- }
323
- let filteredData = [...records];
324
- // Handle global search.
325
- if (view.search) {
326
- const normalizedSearch = normalizeSearchInput(view.search);
327
- filteredData = filteredData.filter(item => {
328
- const title = item.title?.rendered || item.slug;
329
- return normalizeSearchInput(title).includes(normalizedSearch) || normalizeSearchInput(item.description).includes(normalizedSearch);
330
- });
331
- }
332
-
333
- // Handle filters.
334
- if (view.filters.length > 0) {
335
- view.filters.forEach(filter => {
336
- if (filter.field === 'author' && filter.operator === _constants.OPERATOR_IS_ANY && filter?.value?.length > 0) {
337
- filteredData = filteredData.filter(item => {
338
- return filter.value.includes(item.author_text);
339
- });
340
- } else if (filter.field === 'author' && filter.operator === _constants.OPERATOR_IS_NONE && filter?.value?.length > 0) {
341
- filteredData = filteredData.filter(item => {
342
- return !filter.value.includes(item.author_text);
343
- });
344
- }
345
- });
346
- }
347
-
348
- // Handle sorting.
349
- if (view.sort) {
350
- filteredData = (0, _dataviews.sortByTextFields)({
351
- data: filteredData,
352
- view,
353
- fields,
354
- textFields: ['title', 'author']
318
+ return (0, _dataviews.filterSortAndPaginate)(records, view, fields);
319
+ }, [records, view, fields]);
320
+ const onActionPerformed = (0, _element.useCallback)((actionId, items) => {
321
+ if (actionId === 'edit-post') {
322
+ const post = items[0];
323
+ history.push({
324
+ postId: post.id,
325
+ postType: post.type,
326
+ canvas: 'edit'
355
327
  });
356
328
  }
357
- // Handle pagination.
358
- return (0, _dataviews.getPaginationResults)({
359
- data: filteredData,
360
- view
361
- });
362
- }, [records, view, fields]);
363
- const resetTemplateAction = (0, _actions.useResetTemplateAction)();
364
- const actions = (0, _element.useMemo)(() => [resetTemplateAction, _actions.renameTemplateAction, _actions2.postRevisionsAction, _actions.deleteTemplateAction], [resetTemplateAction]);
329
+ }, [history]);
330
+ const [editAction, viewRevisionsAction] = usePostActions(onActionPerformed, ['edit-post', 'view-post-revisions']);
331
+ const actions = (0, _element.useMemo)(() => [editAction, _actions.resetTemplateAction, _actions.renameTemplateAction, viewRevisionsAction, _actions.deleteTemplateAction], [editAction, viewRevisionsAction]);
365
332
  const onChangeView = (0, _element.useCallback)(newView => {
366
333
  if (newView.type !== view.type) {
367
334
  newView = {
@@ -396,7 +363,7 @@ function PageTemplatesTemplateParts({
396
363
  view: view,
397
364
  onChangeView: onChangeView,
398
365
  onSelectionChange: onSelectionChange,
399
- deferredRendering: !view.hiddenFields?.includes('preview')
366
+ deferredRendering: view.type === _constants.LAYOUT_GRID || !view.hiddenFields?.includes('preview')
400
367
  }));
401
368
  }
402
369
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_removeAccents","_components","_i18n","_element","_coreData","_htmlEntities","_blocks","_blockEditor","_dataviews","_router","_page","_link","_interopRequireWildcard","_addNewTemplate","_hooks","_constants","_actions","_actions2","_usePatternSettings","_lockUnlock","_addNewTemplatePart","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ExperimentalBlockEditorProvider","useGlobalStyle","unlock","blockEditorPrivateApis","useHistory","useLocation","routerPrivateApis","EMPTY_ARRAY","defaultConfigPerViewType","LAYOUT_TABLE","primaryField","LAYOUT_GRID","mediaField","LAYOUT_LIST","DEFAULT_VIEW","type","search","page","perPage","sort","field","direction","hiddenFields","layout","filters","normalizeSearchInput","input","removeAccents","trim","toLowerCase","Title","item","viewType","decodeEntities","title","rendered","__","linkProps","params","postId","id","postType","canvas","TEMPLATE_PART_POST_TYPE","state","backPath","_react","createElement","AuthorField","isImageLoaded","setIsImageLoaded","useState","text","icon","imageUrl","useAddedBy","withIcon","__experimentalHStack","alignment","spacing","className","classnames","onLoad","alt","src","Icon","Preview","settings","usePatternSettings","backgroundColor","blocks","useMemo","parse","content","raw","onClick","useLink","isEmpty","length","style","BlockPreview","TEMPLATE_POST_TYPE","PageTemplatesTemplateParts","activeView","defaultView","usedType","operator","value","view","setView","useEffect","currentView","OPERATOR_IS_ANY","records","isResolving","isLoadingData","useEntityRecords","per_page","history","onSelectionChange","useCallback","items","push","undefined","authors","authorsSet","Set","forEach","template","add","author_text","Array","from","map","author","label","fields","_fields","header","render","minWidth","maxWidth","enableSorting","getValue","enableHiding","description","Fragment","__experimentalText","variant","VisuallyHidden","ENUMERATION_TYPE","elements","width","data","paginationInfo","totalItems","totalPages","filteredData","normalizedSearch","filter","slug","includes","OPERATOR_IS_NONE","sortByTextFields","textFields","getPaginationResults","resetTemplateAction","useResetTemplateAction","actions","renameTemplateAction","postRevisionsAction","deleteTemplateAction","onChangeView","newView","templateType","showIcon","toggleProps","DataViews","isLoading","deferredRendering"],"sources":["@wordpress/edit-site/src/components/page-templates-template-parts/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo, useCallback, useEffect } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport {\n\tDataViews,\n\tsortByTextFields,\n\tgetPaginationResults,\n} from '@wordpress/dataviews';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport { default as Link, useLink } from '../routes/link';\nimport AddNewTemplate from '../add-new-template';\nimport { useAddedBy } from './hooks';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tENUMERATION_TYPE,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tLAYOUT_LIST,\n} from '../../utils/constants';\nimport {\n\tuseResetTemplateAction,\n\tdeleteTemplateAction,\n\trenameTemplateAction,\n} from './actions';\nimport { postRevisionsAction } from '../actions';\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\nimport AddNewTemplatePart from './add-new-template-part';\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\n\nconst defaultConfigPerViewType = {\n\t[ LAYOUT_TABLE ]: {\n\t\tprimaryField: 'title',\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tmediaField: 'preview',\n\t\tprimaryField: 'title',\n\t},\n\t[ LAYOUT_LIST ]: {\n\t\tprimaryField: 'title',\n\t\tmediaField: 'preview',\n\t},\n};\n\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_TABLE,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\tsort: {\n\t\tfield: 'title',\n\t\tdirection: 'asc',\n\t},\n\t// All fields are visible by default, so it's\n\t// better to keep track of the hidden ones.\n\thiddenFields: [ 'preview' ],\n\tlayout: defaultConfigPerViewType[ LAYOUT_TABLE ],\n\tfilters: [],\n};\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nfunction Title( { item, viewType } ) {\n\tif ( viewType === LAYOUT_LIST ) {\n\t\treturn decodeEntities( item.title?.rendered ) || __( '(no title)' );\n\t}\n\tconst linkProps = {\n\t\tparams: {\n\t\t\tpostId: item.id,\n\t\t\tpostType: item.type,\n\t\t\tcanvas: 'edit',\n\t\t},\n\t};\n\tif ( item.type === TEMPLATE_PART_POST_TYPE ) {\n\t\tlinkProps.state = {\n\t\t\tbackPath: '/wp_template_part/all',\n\t\t};\n\t}\n\treturn (\n\t\t<Link { ...linkProps }>\n\t\t\t{ decodeEntities( item.title?.rendered ) || __( '(no title)' ) }\n\t\t</Link>\n\t);\n}\n\nfunction AuthorField( { item, viewType } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\tconst withIcon = viewType !== LAYOUT_LIST;\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 1 }>\n\t\t\t{ withIcon && imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'page-templates-author-field__avatar',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ withIcon && ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span>{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nfunction Preview( { item, viewType } ) {\n\tconst settings = usePatternSettings();\n\tconst [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );\n\tconst blocks = useMemo( () => {\n\t\treturn parse( item.content.raw );\n\t}, [ item.content.raw ] );\n\tconst { onClick } = useLink( {\n\t\tpostId: item.id,\n\t\tpostType: item.type,\n\t\tcanvas: 'edit',\n\t} );\n\n\tconst isEmpty = ! blocks?.length;\n\t// Wrap everything in a block editor provider to ensure 'styles' that are needed\n\t// for the previews are synced between the site editor store and the block editor store.\n\t// Additionally we need to have the `__experimentalBlockPatterns` setting in order to\n\t// render patterns inside the previews.\n\t// TODO: Same approach is used in the patterns list and it becomes obvious that some of\n\t// the block editor settings are needed in context where we don't have the block editor.\n\t// Explore how we can solve this in a better way.\n\treturn (\n\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t<div\n\t\t\t\tclassName={ `page-templates-preview-field is-viewtype-${ viewType }` }\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t{ viewType === LAYOUT_LIST && ! isEmpty && (\n\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t) }\n\t\t\t\t{ viewType !== LAYOUT_LIST && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"page-templates-preview-field__button\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\taria-label={ item.title?.rendered || item.title }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isEmpty &&\n\t\t\t\t\t\t\t( item.type === TEMPLATE_POST_TYPE\n\t\t\t\t\t\t\t\t? __( 'Empty template' )\n\t\t\t\t\t\t\t\t: __( 'Empty template part' ) ) }\n\t\t\t\t\t\t{ ! isEmpty && <BlockPreview blocks={ blocks } /> }\n\t\t\t\t\t</button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n\nexport default function PageTemplatesTemplateParts( { postType } ) {\n\tconst { params } = useLocation();\n\tconst { activeView = 'all', layout } = params;\n\tconst defaultView = useMemo( () => {\n\t\tconst usedType = layout ?? DEFAULT_VIEW.type;\n\t\treturn {\n\t\t\t...DEFAULT_VIEW,\n\t\t\ttype: usedType,\n\t\t\tlayout: defaultConfigPerViewType[ usedType ],\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: 'isAny',\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t};\n\t}, [ layout, activeView ] );\n\tconst [ view, setView ] = useState( defaultView );\n\tuseEffect( () => {\n\t\tsetView( ( currentView ) => ( {\n\t\t\t...currentView,\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t} ) );\n\t}, [ activeView ] );\n\n\tconst { records, isResolving: isLoadingData } = useEntityRecords(\n\t\t'postType',\n\t\tpostType,\n\t\t{\n\t\t\tper_page: -1,\n\t\t}\n\t);\n\tconst history = useHistory();\n\tconst onSelectionChange = useCallback(\n\t\t( items ) => {\n\t\t\tif ( view?.type === LAYOUT_LIST ) {\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tpostId: items.length === 1 ? items[ 0 ].id : undefined,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ history, params, view?.type ]\n\t);\n\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\n\tconst fields = useMemo( () => {\n\t\tconst _fields = [\n\t\t\t{\n\t\t\t\theader: __( 'Preview' ),\n\t\t\t\tid: 'preview',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <Preview item={ item } viewType={ view.type } />;\n\t\t\t\t},\n\t\t\t\tminWidth: 120,\n\t\t\t\tmaxWidth: 120,\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader:\n\t\t\t\t\tpostType === TEMPLATE_POST_TYPE\n\t\t\t\t\t\t? __( 'Template' )\n\t\t\t\t\t\t: __( 'Template Part' ),\n\t\t\t\tid: 'title',\n\t\t\t\tgetValue: ( { item } ) => item.title?.rendered,\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Title item={ item } viewType={ view.type } />\n\t\t\t\t),\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t];\n\t\tif ( postType === TEMPLATE_POST_TYPE ) {\n\t\t\t_fields.push( {\n\t\t\t\theader: __( 'Description' ),\n\t\t\t\tid: 'description',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn item.description ? (\n\t\t\t\t\t\t<span className=\"page-templates-description\">\n\t\t\t\t\t\t\t{ decodeEntities( item.description ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tview.type === LAYOUT_TABLE && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Text variant=\"muted\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t&#8212;\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t\t\t\t{ __( 'No description.' ) }\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tminWidth: 320,\n\t\t\t\tenableSorting: false,\n\t\t\t} );\n\t\t}\n\t\t// TODO: The plan is to support fields reordering, which would require an API like `order` or something\n\t\t// similar. With the aforementioned API we wouldn't need to construct the fields array like this.\n\t\t_fields.push( {\n\t\t\theader: __( 'Author' ),\n\t\t\tid: 'author',\n\t\t\tgetValue: ( { item } ) => item.author_text,\n\t\t\trender: ( { item } ) => {\n\t\t\t\treturn <AuthorField viewType={ view.type } item={ item } />;\n\t\t\t},\n\t\t\ttype: ENUMERATION_TYPE,\n\t\t\telements: authors,\n\t\t\twidth: '1%',\n\t\t} );\n\t\treturn _fields;\n\t}, [ postType, authors, view.type ] );\n\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn {\n\t\t\t\tdata: EMPTY_ARRAY,\n\t\t\t\tpaginationInfo: { totalItems: 0, totalPages: 0 },\n\t\t\t};\n\t\t}\n\t\tlet filteredData = [ ...records ];\n\t\t// Handle global search.\n\t\tif ( view.search ) {\n\t\t\tconst normalizedSearch = normalizeSearchInput( view.search );\n\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\tconst title = item.title?.rendered || item.slug;\n\t\t\t\treturn (\n\t\t\t\t\tnormalizeSearchInput( title ).includes(\n\t\t\t\t\t\tnormalizedSearch\n\t\t\t\t\t) ||\n\t\t\t\t\tnormalizeSearchInput( item.description ).includes(\n\t\t\t\t\t\tnormalizedSearch\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\t// Handle filters.\n\t\tif ( view.filters.length > 0 ) {\n\t\t\tview.filters.forEach( ( filter ) => {\n\t\t\t\tif (\n\t\t\t\t\tfilter.field === 'author' &&\n\t\t\t\t\tfilter.operator === OPERATOR_IS_ANY &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value.includes( item.author_text );\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.field === 'author' &&\n\t\t\t\t\tfilter.operator === OPERATOR_IS_NONE &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn ! filter.value.includes( item.author_text );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Handle sorting.\n\t\tif ( view.sort ) {\n\t\t\tfilteredData = sortByTextFields( {\n\t\t\t\tdata: filteredData,\n\t\t\t\tview,\n\t\t\t\tfields,\n\t\t\t\ttextFields: [ 'title', 'author' ],\n\t\t\t} );\n\t\t}\n\t\t// Handle pagination.\n\t\treturn getPaginationResults( {\n\t\t\tdata: filteredData,\n\t\t\tview,\n\t\t} );\n\t}, [ records, view, fields ] );\n\n\tconst resetTemplateAction = useResetTemplateAction();\n\tconst actions = useMemo(\n\t\t() => [\n\t\t\tresetTemplateAction,\n\t\t\trenameTemplateAction,\n\t\t\tpostRevisionsAction,\n\t\t\tdeleteTemplateAction,\n\t\t],\n\t\t[ resetTemplateAction ]\n\t);\n\n\tconst onChangeView = useCallback(\n\t\t( newView ) => {\n\t\t\tif ( newView.type !== view.type ) {\n\t\t\t\tnewView = {\n\t\t\t\t\t...newView,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...defaultConfigPerViewType[ newView.type ],\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tlayout: newView.type,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tsetView( newView );\n\t\t},\n\t\t[ view.type, setView, history, params ]\n\t);\n\n\treturn (\n\t\t<Page\n\t\t\tclassName=\"edit-site-page-template-template-parts-dataviews\"\n\t\t\ttitle={\n\t\t\t\tpostType === TEMPLATE_POST_TYPE\n\t\t\t\t\t? __( 'Templates' )\n\t\t\t\t\t: __( 'Template Parts' )\n\t\t\t}\n\t\t\tactions={\n\t\t\t\tpostType === TEMPLATE_POST_TYPE ? (\n\t\t\t\t\t<AddNewTemplate\n\t\t\t\t\t\ttemplateType={ postType }\n\t\t\t\t\t\tshowIcon={ false }\n\t\t\t\t\t\ttoggleProps={ { variant: 'primary' } }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<AddNewTemplatePart />\n\t\t\t\t)\n\t\t\t}\n\t\t>\n\t\t\t<DataViews\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tisLoading={ isLoadingData }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\tdeferredRendering={ ! view.hiddenFields?.includes( 'preview' ) }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_components","_i18n","_element","_coreData","_htmlEntities","_blocks","_blockEditor","_dataviews","_router","_editor","_page","_link","_interopRequireWildcard","_addNewTemplate","_hooks","_constants","_actions","_usePatternSettings","_lockUnlock","_addNewTemplatePart","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","usePostActions","unlock","editorPrivateApis","ExperimentalBlockEditorProvider","useGlobalStyle","blockEditorPrivateApis","useHistory","useLocation","routerPrivateApis","EMPTY_ARRAY","defaultConfigPerViewType","LAYOUT_TABLE","primaryField","LAYOUT_GRID","mediaField","displayAsColumnFields","LAYOUT_LIST","DEFAULT_VIEW","type","search","page","perPage","sort","field","direction","hiddenFields","layout","filters","Title","item","viewType","decodeEntities","title","rendered","__","linkProps","params","postId","id","postType","canvas","TEMPLATE_PART_POST_TYPE","state","backPath","_react","createElement","AuthorField","isImageLoaded","setIsImageLoaded","useState","text","icon","imageUrl","useAddedBy","withIcon","__experimentalHStack","alignment","spacing","className","classnames","onLoad","alt","src","Icon","Preview","settings","usePatternSettings","backgroundColor","blocks","useMemo","parse","content","raw","onClick","useLink","isEmpty","length","style","BlockPreview","TEMPLATE_POST_TYPE","PageTemplatesTemplateParts","activeView","defaultView","usedType","operator","value","view","setView","useEffect","currentView","OPERATOR_IS_ANY","records","isResolving","isLoadingData","useEntityRecords","per_page","history","onSelectionChange","useCallback","items","push","undefined","authors","authorsSet","Set","forEach","template","add","author_text","Array","from","map","author","label","fields","_fields","header","render","minWidth","maxWidth","enableSorting","getValue","enableHiding","enableGlobalSearch","description","Fragment","__experimentalText","variant","VisuallyHidden","ENUMERATION_TYPE","elements","width","data","paginationInfo","filterSortAndPaginate","onActionPerformed","actionId","post","editAction","viewRevisionsAction","actions","resetTemplateAction","renameTemplateAction","deleteTemplateAction","onChangeView","newView","templateType","showIcon","toggleProps","DataViews","isLoading","deferredRendering","includes"],"sources":["@wordpress/edit-site/src/components/page-templates-template-parts/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo, useCallback, useEffect } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport { default as Link, useLink } from '../routes/link';\nimport AddNewTemplate from '../add-new-template';\nimport { useAddedBy } from './hooks';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tENUMERATION_TYPE,\n\tOPERATOR_IS_ANY,\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tLAYOUT_LIST,\n} from '../../utils/constants';\nimport {\n\tresetTemplateAction,\n\tdeleteTemplateAction,\n\trenameTemplateAction,\n} from './actions';\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\nimport AddNewTemplatePart from './add-new-template-part';\n\nconst { usePostActions } = unlock( editorPrivateApis );\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\n\nconst defaultConfigPerViewType = {\n\t[ LAYOUT_TABLE ]: {\n\t\tprimaryField: 'title',\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tmediaField: 'preview',\n\t\tprimaryField: 'title',\n\t\tdisplayAsColumnFields: [ 'description' ],\n\t},\n\t[ LAYOUT_LIST ]: {\n\t\tprimaryField: 'title',\n\t\tmediaField: 'preview',\n\t},\n};\n\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_TABLE,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\tsort: {\n\t\tfield: 'title',\n\t\tdirection: 'asc',\n\t},\n\t// All fields are visible by default, so it's\n\t// better to keep track of the hidden ones.\n\thiddenFields: [ 'preview' ],\n\tlayout: defaultConfigPerViewType[ LAYOUT_TABLE ],\n\tfilters: [],\n};\n\nfunction Title( { item, viewType } ) {\n\tif ( viewType === LAYOUT_LIST ) {\n\t\treturn decodeEntities( item.title?.rendered ) || __( '(no title)' );\n\t}\n\tconst linkProps = {\n\t\tparams: {\n\t\t\tpostId: item.id,\n\t\t\tpostType: item.type,\n\t\t\tcanvas: 'edit',\n\t\t},\n\t};\n\tif ( item.type === TEMPLATE_PART_POST_TYPE ) {\n\t\tlinkProps.state = {\n\t\t\tbackPath: '/wp_template_part/all',\n\t\t};\n\t}\n\treturn (\n\t\t<Link { ...linkProps }>\n\t\t\t{ decodeEntities( item.title?.rendered ) || __( '(no title)' ) }\n\t\t</Link>\n\t);\n}\n\nfunction AuthorField( { item, viewType } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\tconst withIcon = viewType !== LAYOUT_LIST;\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 1 }>\n\t\t\t{ withIcon && imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'page-templates-author-field__avatar',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ withIcon && ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nfunction Preview( { item, viewType } ) {\n\tconst settings = usePatternSettings();\n\tconst [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );\n\tconst blocks = useMemo( () => {\n\t\treturn parse( item.content.raw );\n\t}, [ item.content.raw ] );\n\tconst { onClick } = useLink( {\n\t\tpostId: item.id,\n\t\tpostType: item.type,\n\t\tcanvas: 'edit',\n\t} );\n\n\tconst isEmpty = ! blocks?.length;\n\t// Wrap everything in a block editor provider to ensure 'styles' that are needed\n\t// for the previews are synced between the site editor store and the block editor store.\n\t// Additionally we need to have the `__experimentalBlockPatterns` setting in order to\n\t// render patterns inside the previews.\n\t// TODO: Same approach is used in the patterns list and it becomes obvious that some of\n\t// the block editor settings are needed in context where we don't have the block editor.\n\t// Explore how we can solve this in a better way.\n\treturn (\n\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t<div\n\t\t\t\tclassName={ `page-templates-preview-field is-viewtype-${ viewType }` }\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t{ viewType === LAYOUT_LIST && ! isEmpty && (\n\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t) }\n\t\t\t\t{ viewType !== LAYOUT_LIST && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"page-templates-preview-field__button\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\taria-label={ item.title?.rendered || item.title }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isEmpty &&\n\t\t\t\t\t\t\t( item.type === TEMPLATE_POST_TYPE\n\t\t\t\t\t\t\t\t? __( 'Empty template' )\n\t\t\t\t\t\t\t\t: __( 'Empty template part' ) ) }\n\t\t\t\t\t\t{ ! isEmpty && <BlockPreview blocks={ blocks } /> }\n\t\t\t\t\t</button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n\nexport default function PageTemplatesTemplateParts( { postType } ) {\n\tconst { params } = useLocation();\n\tconst { activeView = 'all', layout } = params;\n\tconst defaultView = useMemo( () => {\n\t\tconst usedType = layout ?? DEFAULT_VIEW.type;\n\t\treturn {\n\t\t\t...DEFAULT_VIEW,\n\t\t\ttype: usedType,\n\t\t\tlayout: defaultConfigPerViewType[ usedType ],\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: 'isAny',\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t};\n\t}, [ layout, activeView ] );\n\tconst [ view, setView ] = useState( defaultView );\n\tuseEffect( () => {\n\t\tsetView( ( currentView ) => ( {\n\t\t\t...currentView,\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t} ) );\n\t}, [ activeView ] );\n\n\tconst { records, isResolving: isLoadingData } = useEntityRecords(\n\t\t'postType',\n\t\tpostType,\n\t\t{\n\t\t\tper_page: -1,\n\t\t}\n\t);\n\tconst history = useHistory();\n\tconst onSelectionChange = useCallback(\n\t\t( items ) => {\n\t\t\tif ( view?.type === LAYOUT_LIST ) {\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tpostId: items.length === 1 ? items[ 0 ].id : undefined,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ history, params, view?.type ]\n\t);\n\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\n\tconst fields = useMemo( () => {\n\t\tconst _fields = [\n\t\t\t{\n\t\t\t\theader: __( 'Preview' ),\n\t\t\t\tid: 'preview',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <Preview item={ item } viewType={ view.type } />;\n\t\t\t\t},\n\t\t\t\tminWidth: 120,\n\t\t\t\tmaxWidth: 120,\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader:\n\t\t\t\t\tpostType === TEMPLATE_POST_TYPE\n\t\t\t\t\t\t? __( 'Template' )\n\t\t\t\t\t\t: __( 'Template Part' ),\n\t\t\t\tid: 'title',\n\t\t\t\tgetValue: ( { item } ) => item.title?.rendered,\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Title item={ item } viewType={ view.type } />\n\t\t\t\t),\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tenableHiding: false,\n\t\t\t\tenableGlobalSearch: true,\n\t\t\t},\n\t\t];\n\t\tif ( postType === TEMPLATE_POST_TYPE ) {\n\t\t\t_fields.push( {\n\t\t\t\theader: __( 'Description' ),\n\t\t\t\tid: 'description',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn item.description ? (\n\t\t\t\t\t\t<span className=\"page-templates-description\">\n\t\t\t\t\t\t\t{ decodeEntities( item.description ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tview.type === LAYOUT_TABLE && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Text variant=\"muted\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t&#8212;\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t\t\t\t{ __( 'No description.' ) }\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tmaxWidth: 400,\n\t\t\t\tminWidth: 320,\n\t\t\t\tenableSorting: false,\n\t\t\t\tenableGlobalSearch: true,\n\t\t\t} );\n\t\t}\n\t\t// TODO: The plan is to support fields reordering, which would require an API like `order` or something\n\t\t// similar. With the aforementioned API we wouldn't need to construct the fields array like this.\n\t\t_fields.push( {\n\t\t\theader: __( 'Author' ),\n\t\t\tid: 'author',\n\t\t\tgetValue: ( { item } ) => item.author_text,\n\t\t\trender: ( { item } ) => {\n\t\t\t\treturn <AuthorField viewType={ view.type } item={ item } />;\n\t\t\t},\n\t\t\ttype: ENUMERATION_TYPE,\n\t\t\telements: authors,\n\t\t\twidth: '1%',\n\t\t} );\n\t\treturn _fields;\n\t}, [ postType, authors, view.type ] );\n\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\treturn filterSortAndPaginate( records, view, fields );\n\t}, [ records, view, fields ] );\n\n\tconst onActionPerformed = useCallback(\n\t\t( actionId, items ) => {\n\t\t\tif ( actionId === 'edit-post' ) {\n\t\t\t\tconst post = items[ 0 ];\n\t\t\t\thistory.push( {\n\t\t\t\t\tpostId: post.id,\n\t\t\t\t\tpostType: post.type,\n\t\t\t\t\tcanvas: 'edit',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ history ]\n\t);\n\tconst [ editAction, viewRevisionsAction ] = usePostActions(\n\t\tonActionPerformed,\n\t\t[ 'edit-post', 'view-post-revisions' ]\n\t);\n\tconst actions = useMemo(\n\t\t() => [\n\t\t\teditAction,\n\t\t\tresetTemplateAction,\n\t\t\trenameTemplateAction,\n\t\t\tviewRevisionsAction,\n\t\t\tdeleteTemplateAction,\n\t\t],\n\t\t[ editAction, viewRevisionsAction ]\n\t);\n\n\tconst onChangeView = useCallback(\n\t\t( newView ) => {\n\t\t\tif ( newView.type !== view.type ) {\n\t\t\t\tnewView = {\n\t\t\t\t\t...newView,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...defaultConfigPerViewType[ newView.type ],\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tlayout: newView.type,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tsetView( newView );\n\t\t},\n\t\t[ view.type, setView, history, params ]\n\t);\n\n\treturn (\n\t\t<Page\n\t\t\tclassName=\"edit-site-page-template-template-parts-dataviews\"\n\t\t\ttitle={\n\t\t\t\tpostType === TEMPLATE_POST_TYPE\n\t\t\t\t\t? __( 'Templates' )\n\t\t\t\t\t: __( 'Template Parts' )\n\t\t\t}\n\t\t\tactions={\n\t\t\t\tpostType === TEMPLATE_POST_TYPE ? (\n\t\t\t\t\t<AddNewTemplate\n\t\t\t\t\t\ttemplateType={ postType }\n\t\t\t\t\t\tshowIcon={ false }\n\t\t\t\t\t\ttoggleProps={ { variant: 'primary' } }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<AddNewTemplatePart />\n\t\t\t\t)\n\t\t\t}\n\t\t>\n\t\t\t<DataViews\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tisLoading={ isLoadingData }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\t\tdeferredRendering={\n\t\t\t\t\tview.type === LAYOUT_GRID ||\n\t\t\t\t\t! view.hiddenFields?.includes( 'preview' )\n\t\t\t\t}\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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"}
@@ -4,6 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _react = require("react");
8
+ var _editor = require("@wordpress/editor");
9
+ var _data = require("@wordpress/data");
7
10
  var _components = require("@wordpress/components");
8
11
  /**
9
12
  * Defines an extensibility slot for the Template sidebar.
@@ -17,7 +20,15 @@ const {
17
20
  Fill,
18
21
  Slot
19
22
  } = (0, _components.createSlotFill)('PluginTemplateSettingPanel');
20
- const PluginTemplateSettingPanel = Fill;
23
+ const PluginTemplateSettingPanel = ({
24
+ children
25
+ }) => {
26
+ const isCurrentEntityTemplate = (0, _data.useSelect)(select => select(_editor.store).getCurrentPostType() === 'wp_template', []);
27
+ if (!isCurrentEntityTemplate) {
28
+ return null;
29
+ }
30
+ return (0, _react.createElement)(Fill, null, children);
31
+ };
21
32
  PluginTemplateSettingPanel.Slot = Slot;
22
33
 
23
34
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","Fill","Slot","createSlotFill","PluginTemplateSettingPanel","_default","exports","default"],"sources":["@wordpress/edit-site/src/components/plugin-template-setting-panel/index.js"],"sourcesContent":["/**\n * Defines an extensibility slot for the Template sidebar.\n */\n\n/**\n * WordPress dependencies\n */\nimport { createSlotFill } from '@wordpress/components';\n\nconst { Fill, Slot } = createSlotFill( 'PluginTemplateSettingPanel' );\n\nconst PluginTemplateSettingPanel = Fill;\nPluginTemplateSettingPanel.Slot = Slot;\n\n/**\n * Renders items in the Template Sidebar below the main information\n * like the Template Card.\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { PluginTemplateSettingPanel } from '@wordpress/edit-site';\n *\n * const MyTemplateSettingTest = () => (\n * \t\t<PluginTemplateSettingPanel>\n *\t\t\t<p>Hello, World!</p>\n *\t\t</PluginTemplateSettingPanel>\n *\t);\n * ```\n *\n * @return {Component} The component to be rendered.\n */\nexport default PluginTemplateSettingPanel;\n"],"mappings":";;;;;;AAOA,IAAAA,WAAA,GAAAC,OAAA;AAPA;AACA;AACA;;AAEA;AACA;AACA;;AAGA,MAAM;EAAEC,IAAI;EAAEC;AAAK,CAAC,GAAG,IAAAC,0BAAc,EAAE,4BAA6B,CAAC;AAErE,MAAMC,0BAA0B,GAAGH,IAAI;AACvCG,0BAA0B,CAACF,IAAI,GAAGA,IAAI;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjBA,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAkBeH,0BAA0B"}
1
+ {"version":3,"names":["_editor","require","_data","_components","Fill","Slot","createSlotFill","PluginTemplateSettingPanel","children","isCurrentEntityTemplate","useSelect","select","editorStore","getCurrentPostType","_react","createElement","_default","exports","default"],"sources":["@wordpress/edit-site/src/components/plugin-template-setting-panel/index.js"],"sourcesContent":["/**\n * Defines an extensibility slot for the Template sidebar.\n */\n\n/**\n * WordPress dependencies\n */\nimport { store as editorStore } from '@wordpress/editor';\nimport { useSelect } from '@wordpress/data';\nimport { createSlotFill } from '@wordpress/components';\n\nconst { Fill, Slot } = createSlotFill( 'PluginTemplateSettingPanel' );\n\nconst PluginTemplateSettingPanel = ( { children } ) => {\n\tconst isCurrentEntityTemplate = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).getCurrentPostType() === 'wp_template',\n\t\t[]\n\t);\n\tif ( ! isCurrentEntityTemplate ) {\n\t\treturn null;\n\t}\n\treturn <Fill>{ children }</Fill>;\n};\n\nPluginTemplateSettingPanel.Slot = Slot;\n\n/**\n * Renders items in the Template Sidebar below the main information\n * like the Template Card.\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { PluginTemplateSettingPanel } from '@wordpress/edit-site';\n *\n * const MyTemplateSettingTest = () => (\n * \t\t<PluginTemplateSettingPanel>\n *\t\t\t<p>Hello, World!</p>\n *\t\t</PluginTemplateSettingPanel>\n *\t);\n * ```\n *\n * @return {Component} The component to be rendered.\n */\nexport default PluginTemplateSettingPanel;\n"],"mappings":";;;;;;;AAOA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAEA;AACA;AACA;;AAKA,MAAM;EAAEG,IAAI;EAAEC;AAAK,CAAC,GAAG,IAAAC,0BAAc,EAAE,4BAA6B,CAAC;AAErE,MAAMC,0BAA0B,GAAGA,CAAE;EAAEC;AAAS,CAAC,KAAM;EACtD,MAAMC,uBAAuB,GAAG,IAAAC,eAAS,EACtCC,MAAM,IACPA,MAAM,CAAEC,aAAY,CAAC,CAACC,kBAAkB,CAAC,CAAC,KAAK,aAAa,EAC7D,EACD,CAAC;EACD,IAAK,CAAEJ,uBAAuB,EAAG;IAChC,OAAO,IAAI;EACZ;EACA,OAAO,IAAAK,MAAA,CAAAC,aAAA,EAACX,IAAI,QAAGI,QAAgB,CAAC;AACjC,CAAC;AAEDD,0BAA0B,CAACF,IAAI,GAAGA,IAAI;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjBA,IAAAW,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAkBeX,0BAA0B"}
@@ -10,8 +10,11 @@ var _components = require("@wordpress/components");
10
10
  var _i18n = require("@wordpress/i18n");
11
11
  var _coreData = require("@wordpress/core-data");
12
12
  var _keycodes = require("@wordpress/keycodes");
13
+ var _router = require("@wordpress/router");
14
+ var _editor = require("@wordpress/editor");
13
15
  var _store = require("../../store");
14
16
  var _isPreviewingTheme = require("../../utils/is-previewing-theme");
17
+ var _lockUnlock = require("../../lock-unlock");
15
18
  /**
16
19
  * WordPress dependencies
17
20
  */
@@ -20,46 +23,65 @@ var _isPreviewingTheme = require("../../utils/is-previewing-theme");
20
23
  * Internal dependencies
21
24
  */
22
25
 
26
+ const {
27
+ useLocation
28
+ } = (0, _lockUnlock.unlock)(_router.privateApis);
23
29
  function SaveButton({
24
30
  className = 'edit-site-save-button__button',
25
31
  variant = 'primary',
26
32
  showTooltip = true,
27
- defaultLabel,
33
+ showReviewMessage,
28
34
  icon,
29
35
  size,
30
36
  __next40pxDefaultSize = false
31
37
  }) {
32
38
  const {
33
- isDirty,
39
+ params
40
+ } = useLocation();
41
+ const {
42
+ setIsSaveViewOpened
43
+ } = (0, _data.useDispatch)(_store.store);
44
+ const {
45
+ saveDirtyEntities
46
+ } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_editor.store));
47
+ const {
48
+ dirtyEntityRecords
49
+ } = (0, _editor.useEntitiesSavedStatesIsDirty)();
50
+ const {
34
51
  isSaving,
35
52
  isSaveViewOpen,
36
53
  previewingThemeName
37
54
  } = (0, _data.useSelect)(select => {
38
55
  const {
39
- __experimentalGetDirtyEntityRecords,
40
56
  isSavingEntityRecord,
41
57
  isResolving
42
58
  } = select(_coreData.store);
43
- const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
44
59
  const {
45
60
  isSaveViewOpened
46
61
  } = select(_store.store);
47
62
  const isActivatingTheme = isResolving('activateTheme');
48
63
  const currentlyPreviewingThemeId = (0, _isPreviewingTheme.currentlyPreviewingTheme)();
49
64
  return {
50
- isDirty: dirtyEntityRecords.length > 0,
51
65
  isSaving: dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key)) || isActivatingTheme,
52
66
  isSaveViewOpen: isSaveViewOpened(),
53
67
  // Do not call `getTheme` with null, it will cause a request to
54
68
  // the server.
55
69
  previewingThemeName: currentlyPreviewingThemeId ? select(_coreData.store).getTheme(currentlyPreviewingThemeId)?.name?.rendered : undefined
56
70
  };
57
- }, []);
58
- const {
59
- setIsSaveViewOpened
60
- } = (0, _data.useDispatch)(_store.store);
61
- const activateSaveEnabled = (0, _isPreviewingTheme.isPreviewingTheme)() || isDirty;
62
- const disabled = isSaving || !activateSaveEnabled;
71
+ }, [dirtyEntityRecords]);
72
+ const hasDirtyEntities = !!dirtyEntityRecords.length;
73
+ let isOnlyCurrentEntityDirty;
74
+ // Check if the current entity is the only entity with changes.
75
+ // We have some extra logic for `wp_global_styles` for now, that
76
+ // is used in navigation sidebar.
77
+ if (dirtyEntityRecords.length === 1) {
78
+ if (params.postId) {
79
+ isOnlyCurrentEntityDirty = `${dirtyEntityRecords[0].key}` === params.postId && dirtyEntityRecords[0].name === params.postType;
80
+ } else if (params.path?.includes('wp_global_styles')) {
81
+ isOnlyCurrentEntityDirty = dirtyEntityRecords[0].name === 'globalStyles';
82
+ }
83
+ }
84
+ const disabled = isSaving || !hasDirtyEntities && !(0, _isPreviewingTheme.isPreviewingTheme)();
63
85
  const getLabel = () => {
64
86
  if ((0, _isPreviewingTheme.isPreviewingTheme)()) {
65
87
  if (isSaving) {
@@ -67,7 +89,7 @@ function SaveButton({
67
89
  (0, _i18n.__)('Activating %s'), previewingThemeName);
68
90
  } else if (disabled) {
69
91
  return (0, _i18n.__)('Saved');
70
- } else if (isDirty) {
92
+ } else if (hasDirtyEntities) {
71
93
  return (0, _i18n.sprintf)( /* translators: %s: The name of theme to be activated. */
72
94
  (0, _i18n.__)('Activate %s & Save'), previewingThemeName);
73
95
  }
@@ -76,21 +98,28 @@ function SaveButton({
76
98
  }
77
99
  if (isSaving) {
78
100
  return (0, _i18n.__)('Saving');
79
- } else if (disabled) {
101
+ }
102
+ if (disabled) {
80
103
  return (0, _i18n.__)('Saved');
81
- } else if (defaultLabel) {
82
- return defaultLabel;
104
+ }
105
+ if (!isOnlyCurrentEntityDirty && showReviewMessage) {
106
+ return (0, _i18n.sprintf)(
107
+ // translators: %d: number of unsaved changes (number).
108
+ (0, _i18n._n)('Review %d change…', 'Review %d changes…', dirtyEntityRecords.length), dirtyEntityRecords.length);
83
109
  }
84
110
  return (0, _i18n.__)('Save');
85
111
  };
86
112
  const label = getLabel();
113
+ const onClick = isOnlyCurrentEntityDirty ? () => saveDirtyEntities({
114
+ dirtyEntityRecords
115
+ }) : () => setIsSaveViewOpened(true);
87
116
  return (0, _react.createElement)(_components.Button, {
88
117
  variant: variant,
89
118
  className: className,
90
119
  "aria-disabled": disabled,
91
120
  "aria-expanded": isSaveViewOpen,
92
121
  isBusy: isSaving,
93
- onClick: disabled ? undefined : () => setIsSaveViewOpened(true),
122
+ onClick: disabled ? undefined : onClick,
94
123
  label: label
95
124
  /*
96
125
  * We want the tooltip to show the keyboard shortcut only when the
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_components","_i18n","_coreData","_keycodes","_store","_isPreviewingTheme","SaveButton","className","variant","showTooltip","defaultLabel","icon","size","__next40pxDefaultSize","isDirty","isSaving","isSaveViewOpen","previewingThemeName","useSelect","select","__experimentalGetDirtyEntityRecords","isSavingEntityRecord","isResolving","coreStore","dirtyEntityRecords","isSaveViewOpened","editSiteStore","isActivatingTheme","currentlyPreviewingThemeId","currentlyPreviewingTheme","length","some","record","kind","name","key","getTheme","rendered","undefined","setIsSaveViewOpened","useDispatch","activateSaveEnabled","isPreviewingTheme","disabled","getLabel","sprintf","__","label","_react","createElement","Button","isBusy","onClick","shortcut","displayShortcut","primary"],"sources":["@wordpress/edit-site/src/components/save-button/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport {\n\tcurrentlyPreviewingTheme,\n\tisPreviewingTheme,\n} from '../../utils/is-previewing-theme';\n\nexport default function SaveButton( {\n\tclassName = 'edit-site-save-button__button',\n\tvariant = 'primary',\n\tshowTooltip = true,\n\tdefaultLabel,\n\ticon,\n\tsize,\n\t__next40pxDefaultSize = false,\n} ) {\n\tconst { isDirty, isSaving, isSaveViewOpen, previewingThemeName } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\t__experimentalGetDirtyEntityRecords,\n\t\t\t\tisSavingEntityRecord,\n\t\t\t\tisResolving,\n\t\t\t} = select( coreStore );\n\t\t\tconst dirtyEntityRecords = __experimentalGetDirtyEntityRecords();\n\t\t\tconst { isSaveViewOpened } = select( editSiteStore );\n\t\t\tconst isActivatingTheme = isResolving( 'activateTheme' );\n\t\t\tconst currentlyPreviewingThemeId = currentlyPreviewingTheme();\n\n\t\t\treturn {\n\t\t\t\tisDirty: dirtyEntityRecords.length > 0,\n\t\t\t\tisSaving:\n\t\t\t\t\tdirtyEntityRecords.some( ( record ) =>\n\t\t\t\t\t\tisSavingEntityRecord(\n\t\t\t\t\t\t\trecord.kind,\n\t\t\t\t\t\t\trecord.name,\n\t\t\t\t\t\t\trecord.key\n\t\t\t\t\t\t)\n\t\t\t\t\t) || isActivatingTheme,\n\t\t\t\tisSaveViewOpen: isSaveViewOpened(),\n\t\t\t\t// Do not call `getTheme` with null, it will cause a request to\n\t\t\t\t// the server.\n\t\t\t\tpreviewingThemeName: currentlyPreviewingThemeId\n\t\t\t\t\t? select( coreStore ).getTheme( currentlyPreviewingThemeId )\n\t\t\t\t\t\t\t?.name?.rendered\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t}, [] );\n\tconst { setIsSaveViewOpened } = useDispatch( editSiteStore );\n\n\tconst activateSaveEnabled = isPreviewingTheme() || isDirty;\n\tconst disabled = isSaving || ! activateSaveEnabled;\n\n\tconst getLabel = () => {\n\t\tif ( isPreviewingTheme() ) {\n\t\t\tif ( isSaving ) {\n\t\t\t\treturn sprintf(\n\t\t\t\t\t/* translators: %s: The name of theme to be activated. */\n\t\t\t\t\t__( 'Activating %s' ),\n\t\t\t\t\tpreviewingThemeName\n\t\t\t\t);\n\t\t\t} else if ( disabled ) {\n\t\t\t\treturn __( 'Saved' );\n\t\t\t} else if ( isDirty ) {\n\t\t\t\treturn sprintf(\n\t\t\t\t\t/* translators: %s: The name of theme to be activated. */\n\t\t\t\t\t__( 'Activate %s & Save' ),\n\t\t\t\t\tpreviewingThemeName\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn sprintf(\n\t\t\t\t/* translators: %s: The name of theme to be activated. */\n\t\t\t\t__( 'Activate %s' ),\n\t\t\t\tpreviewingThemeName\n\t\t\t);\n\t\t}\n\n\t\tif ( isSaving ) {\n\t\t\treturn __( 'Saving' );\n\t\t} else if ( disabled ) {\n\t\t\treturn __( 'Saved' );\n\t\t} else if ( defaultLabel ) {\n\t\t\treturn defaultLabel;\n\t\t}\n\t\treturn __( 'Save' );\n\t};\n\tconst label = getLabel();\n\n\treturn (\n\t\t<Button\n\t\t\tvariant={ variant }\n\t\t\tclassName={ className }\n\t\t\taria-disabled={ disabled }\n\t\t\taria-expanded={ isSaveViewOpen }\n\t\t\tisBusy={ isSaving }\n\t\t\tonClick={ disabled ? undefined : () => setIsSaveViewOpened( true ) }\n\t\t\tlabel={ label }\n\t\t\t/*\n\t\t\t * We want the tooltip to show the keyboard shortcut only when the\n\t\t\t * button does something, i.e. when it's not disabled.\n\t\t\t */\n\t\t\tshortcut={ disabled ? undefined : displayShortcut.primary( 's' ) }\n\t\t\t/*\n\t\t\t * Displaying the keyboard shortcut conditionally makes the tooltip\n\t\t\t * itself show conditionally. This would trigger a full-rerendering\n\t\t\t * of the button that we want to avoid. By setting `showTooltip`,\n\t\t\t * the tooltip is always rendered even when there's no keyboard shortcut.\n\t\t\t */\n\t\t\tshowTooltip={ showTooltip }\n\t\t\ticon={ icon }\n\t\t\t__next40pxDefaultSize={ __next40pxDefaultSize }\n\t\t\tsize={ size }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_data","require","_components","_i18n","_coreData","_keycodes","_router","_editor","_store","_isPreviewingTheme","_lockUnlock","useLocation","unlock","routerPrivateApis","SaveButton","className","variant","showTooltip","showReviewMessage","icon","size","__next40pxDefaultSize","params","setIsSaveViewOpened","useDispatch","editSiteStore","saveDirtyEntities","editorStore","dirtyEntityRecords","useEntitiesSavedStatesIsDirty","isSaving","isSaveViewOpen","previewingThemeName","useSelect","select","isSavingEntityRecord","isResolving","coreStore","isSaveViewOpened","isActivatingTheme","currentlyPreviewingThemeId","currentlyPreviewingTheme","some","record","kind","name","key","getTheme","rendered","undefined","hasDirtyEntities","length","isOnlyCurrentEntityDirty","postId","postType","path","includes","disabled","isPreviewingTheme","getLabel","sprintf","__","_n","label","onClick","_react","createElement","Button","isBusy","shortcut","displayShortcut","primary"],"sources":["@wordpress/edit-site/src/components/save-button/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { Button } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport {\n\tuseEntitiesSavedStatesIsDirty,\n\tstore as editorStore,\n} from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport {\n\tcurrentlyPreviewingTheme,\n\tisPreviewingTheme,\n} from '../../utils/is-previewing-theme';\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nexport default function SaveButton( {\n\tclassName = 'edit-site-save-button__button',\n\tvariant = 'primary',\n\tshowTooltip = true,\n\tshowReviewMessage,\n\ticon,\n\tsize,\n\t__next40pxDefaultSize = false,\n} ) {\n\tconst { params } = useLocation();\n\tconst { setIsSaveViewOpened } = useDispatch( editSiteStore );\n\tconst { saveDirtyEntities } = unlock( useDispatch( editorStore ) );\n\tconst { dirtyEntityRecords } = useEntitiesSavedStatesIsDirty();\n\tconst { isSaving, isSaveViewOpen, previewingThemeName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isSavingEntityRecord, isResolving } = select( coreStore );\n\t\t\tconst { isSaveViewOpened } = select( editSiteStore );\n\t\t\tconst isActivatingTheme = isResolving( 'activateTheme' );\n\t\t\tconst currentlyPreviewingThemeId = currentlyPreviewingTheme();\n\t\t\treturn {\n\t\t\t\tisSaving:\n\t\t\t\t\tdirtyEntityRecords.some( ( record ) =>\n\t\t\t\t\t\tisSavingEntityRecord(\n\t\t\t\t\t\t\trecord.kind,\n\t\t\t\t\t\t\trecord.name,\n\t\t\t\t\t\t\trecord.key\n\t\t\t\t\t\t)\n\t\t\t\t\t) || isActivatingTheme,\n\t\t\t\tisSaveViewOpen: isSaveViewOpened(),\n\t\t\t\t// Do not call `getTheme` with null, it will cause a request to\n\t\t\t\t// the server.\n\t\t\t\tpreviewingThemeName: currentlyPreviewingThemeId\n\t\t\t\t\t? select( coreStore ).getTheme( currentlyPreviewingThemeId )\n\t\t\t\t\t\t\t?.name?.rendered\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[ dirtyEntityRecords ]\n\t);\n\tconst hasDirtyEntities = !! dirtyEntityRecords.length;\n\tlet isOnlyCurrentEntityDirty;\n\t// Check if the current entity is the only entity with changes.\n\t// We have some extra logic for `wp_global_styles` for now, that\n\t// is used in navigation sidebar.\n\tif ( dirtyEntityRecords.length === 1 ) {\n\t\tif ( params.postId ) {\n\t\t\tisOnlyCurrentEntityDirty =\n\t\t\t\t`${ dirtyEntityRecords[ 0 ].key }` === params.postId &&\n\t\t\t\tdirtyEntityRecords[ 0 ].name === params.postType;\n\t\t} else if ( params.path?.includes( 'wp_global_styles' ) ) {\n\t\t\tisOnlyCurrentEntityDirty =\n\t\t\t\tdirtyEntityRecords[ 0 ].name === 'globalStyles';\n\t\t}\n\t}\n\tconst disabled =\n\t\tisSaving || ( ! hasDirtyEntities && ! isPreviewingTheme() );\n\tconst getLabel = () => {\n\t\tif ( isPreviewingTheme() ) {\n\t\t\tif ( isSaving ) {\n\t\t\t\treturn sprintf(\n\t\t\t\t\t/* translators: %s: The name of theme to be activated. */\n\t\t\t\t\t__( 'Activating %s' ),\n\t\t\t\t\tpreviewingThemeName\n\t\t\t\t);\n\t\t\t} else if ( disabled ) {\n\t\t\t\treturn __( 'Saved' );\n\t\t\t} else if ( hasDirtyEntities ) {\n\t\t\t\treturn sprintf(\n\t\t\t\t\t/* translators: %s: The name of theme to be activated. */\n\t\t\t\t\t__( 'Activate %s & Save' ),\n\t\t\t\t\tpreviewingThemeName\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn sprintf(\n\t\t\t\t/* translators: %s: The name of theme to be activated. */\n\t\t\t\t__( 'Activate %s' ),\n\t\t\t\tpreviewingThemeName\n\t\t\t);\n\t\t}\n\t\tif ( isSaving ) {\n\t\t\treturn __( 'Saving' );\n\t\t}\n\t\tif ( disabled ) {\n\t\t\treturn __( 'Saved' );\n\t\t}\n\t\tif ( ! isOnlyCurrentEntityDirty && showReviewMessage ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %d: number of unsaved changes (number).\n\t\t\t\t_n(\n\t\t\t\t\t'Review %d change…',\n\t\t\t\t\t'Review %d changes…',\n\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t),\n\t\t\t\tdirtyEntityRecords.length\n\t\t\t);\n\t\t}\n\t\treturn __( 'Save' );\n\t};\n\tconst label = getLabel();\n\tconst onClick = isOnlyCurrentEntityDirty\n\t\t? () => saveDirtyEntities( { dirtyEntityRecords } )\n\t\t: () => setIsSaveViewOpened( true );\n\treturn (\n\t\t<Button\n\t\t\tvariant={ variant }\n\t\t\tclassName={ className }\n\t\t\taria-disabled={ disabled }\n\t\t\taria-expanded={ isSaveViewOpen }\n\t\t\tisBusy={ isSaving }\n\t\t\tonClick={ disabled ? undefined : onClick }\n\t\t\tlabel={ label }\n\t\t\t/*\n\t\t\t * We want the tooltip to show the keyboard shortcut only when the\n\t\t\t * button does something, i.e. when it's not disabled.\n\t\t\t */\n\t\t\tshortcut={ disabled ? undefined : displayShortcut.primary( 's' ) }\n\t\t\t/*\n\t\t\t * Displaying the keyboard shortcut conditionally makes the tooltip\n\t\t\t * itself show conditionally. This would trigger a full-rerendering\n\t\t\t * of the button that we want to avoid. By setting `showTooltip`,\n\t\t\t * the tooltip is always rendered even when there's no keyboard shortcut.\n\t\t\t */\n\t\t\tshowTooltip={ showTooltip }\n\t\t\ticon={ icon }\n\t\t\t__next40pxDefaultSize={ __next40pxDefaultSize }\n\t\t\tsize={ size }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n"],"mappings":"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"}