@wordpress/edit-site 6.3.0 → 6.4.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 (221) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-pattern/index.js +8 -2
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/add-new-template/index.js +3 -1
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +1 -82
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/global-styles/block-preview-panel.js +14 -5
  9. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  10. package/build/components/global-styles/font-families.js +42 -23
  11. package/build/components/global-styles/font-families.js.map +1 -1
  12. package/build/components/global-styles/font-library-modal/index.js +4 -4
  13. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/installed-fonts.js +58 -10
  15. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  16. package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +39 -0
  17. package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +1 -0
  18. package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +39 -0
  19. package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +1 -0
  20. package/build/components/global-styles/font-sizes/font-size-preview.js +44 -0
  21. package/build/components/global-styles/font-sizes/font-size-preview.js.map +1 -0
  22. package/build/components/global-styles/font-sizes/font-size.js +213 -0
  23. package/build/components/global-styles/font-sizes/font-size.js.map +1 -0
  24. package/build/components/global-styles/font-sizes/font-sizes-count.js +50 -0
  25. package/build/components/global-styles/font-sizes/font-sizes-count.js.map +1 -0
  26. package/build/components/global-styles/font-sizes/font-sizes.js +163 -0
  27. package/build/components/global-styles/font-sizes/font-sizes.js.map +1 -0
  28. package/build/components/global-styles/font-sizes/rename-font-size-dialog.js +67 -0
  29. package/build/components/global-styles/font-sizes/rename-font-size-dialog.js.map +1 -0
  30. package/build/components/global-styles/screen-block.js +10 -8
  31. package/build/components/global-styles/screen-block.js.map +1 -1
  32. package/build/components/global-styles/screen-style-variations.js +2 -2
  33. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  34. package/build/components/global-styles/screen-typography.js +3 -2
  35. package/build/components/global-styles/screen-typography.js.map +1 -1
  36. package/build/components/global-styles/size-control/index.js +85 -0
  37. package/build/components/global-styles/size-control/index.js.map +1 -0
  38. package/build/components/global-styles/style-variations-container.js +3 -0
  39. package/build/components/global-styles/style-variations-container.js.map +1 -1
  40. package/build/components/global-styles/ui.js +8 -0
  41. package/build/components/global-styles/ui.js.map +1 -1
  42. package/build/components/global-styles/variations/variations-color.js.map +1 -1
  43. package/build/components/global-styles/variations/variations-typography.js +1 -1
  44. package/build/components/global-styles/variations/variations-typography.js.map +1 -1
  45. package/build/components/layout/index.js +6 -0
  46. package/build/components/layout/index.js.map +1 -1
  47. package/build/components/layout/router.js +14 -6
  48. package/build/components/layout/router.js.map +1 -1
  49. package/build/components/page-patterns/header.js +1 -1
  50. package/build/components/page-patterns/header.js.map +1 -1
  51. package/build/components/page-patterns/index.js +23 -11
  52. package/build/components/page-patterns/index.js.map +1 -1
  53. package/build/components/page-templates/index.js +41 -34
  54. package/build/components/page-templates/index.js.map +1 -1
  55. package/build/components/post-edit/index.js +105 -0
  56. package/build/components/post-edit/index.js.map +1 -0
  57. package/build/components/post-fields/index.js +314 -0
  58. package/build/components/post-fields/index.js.map +1 -0
  59. package/build/components/post-list/index.js +281 -0
  60. package/build/components/post-list/index.js.map +1 -0
  61. package/build/components/posts-app/router.js +3 -3
  62. package/build/components/posts-app/router.js.map +1 -1
  63. package/build/components/sidebar-dataviews/default-views.js +22 -10
  64. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  65. package/build/components/sidebar-dataviews/index.js +40 -1
  66. package/build/components/sidebar-dataviews/index.js.map +1 -1
  67. package/build/components/sidebar-navigation-screen-global-styles/content.js +64 -0
  68. package/build/components/sidebar-navigation-screen-global-styles/content.js.map +1 -0
  69. package/build/components/sidebar-navigation-screen-global-styles/index.js +2 -47
  70. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  71. package/build/hooks/push-changes-to-global-styles/index.js +1 -1
  72. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  73. package/build/index.js +5 -1
  74. package/build/index.js.map +1 -1
  75. package/build/store/selectors.js +34 -6
  76. package/build/store/selectors.js.map +1 -1
  77. package/build/utils/get-filtered-template-parts.js +64 -0
  78. package/build/utils/get-filtered-template-parts.js.map +1 -0
  79. package/build-module/components/add-new-pattern/index.js +8 -2
  80. package/build-module/components/add-new-pattern/index.js.map +1 -1
  81. package/build-module/components/add-new-template/index.js +3 -1
  82. package/build-module/components/add-new-template/index.js.map +1 -1
  83. package/build-module/components/block-editor/use-site-editor-settings.js +1 -82
  84. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  85. package/build-module/components/global-styles/block-preview-panel.js +14 -5
  86. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  87. package/build-module/components/global-styles/font-families.js +44 -25
  88. package/build-module/components/global-styles/font-families.js.map +1 -1
  89. package/build-module/components/global-styles/font-library-modal/index.js +4 -4
  90. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  91. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +61 -13
  92. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  93. package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +32 -0
  94. package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +1 -0
  95. package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +32 -0
  96. package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +1 -0
  97. package/build-module/components/global-styles/font-sizes/font-size-preview.js +37 -0
  98. package/build-module/components/global-styles/font-sizes/font-size-preview.js.map +1 -0
  99. package/build-module/components/global-styles/font-sizes/font-size.js +207 -0
  100. package/build-module/components/global-styles/font-sizes/font-size.js.map +1 -0
  101. package/build-module/components/global-styles/font-sizes/font-sizes-count.js +43 -0
  102. package/build-module/components/global-styles/font-sizes/font-sizes-count.js.map +1 -0
  103. package/build-module/components/global-styles/font-sizes/font-sizes.js +157 -0
  104. package/build-module/components/global-styles/font-sizes/font-sizes.js.map +1 -0
  105. package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js +61 -0
  106. package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js.map +1 -0
  107. package/build-module/components/global-styles/screen-block.js +10 -8
  108. package/build-module/components/global-styles/screen-block.js.map +1 -1
  109. package/build-module/components/global-styles/screen-style-variations.js +2 -2
  110. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  111. package/build-module/components/global-styles/screen-typography.js +3 -2
  112. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  113. package/build-module/components/global-styles/size-control/index.js +79 -0
  114. package/build-module/components/global-styles/size-control/index.js.map +1 -0
  115. package/build-module/components/global-styles/style-variations-container.js +3 -0
  116. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  117. package/build-module/components/global-styles/ui.js +8 -0
  118. package/build-module/components/global-styles/ui.js.map +1 -1
  119. package/build-module/components/global-styles/variations/variations-color.js +1 -1
  120. package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
  121. package/build-module/components/global-styles/variations/variations-typography.js +1 -2
  122. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
  123. package/build-module/components/layout/index.js +6 -0
  124. package/build-module/components/layout/index.js.map +1 -1
  125. package/build-module/components/layout/router.js +14 -6
  126. package/build-module/components/layout/router.js.map +1 -1
  127. package/build-module/components/page-patterns/header.js +1 -1
  128. package/build-module/components/page-patterns/header.js.map +1 -1
  129. package/build-module/components/page-patterns/index.js +23 -11
  130. package/build-module/components/page-patterns/index.js.map +1 -1
  131. package/build-module/components/page-templates/index.js +43 -37
  132. package/build-module/components/page-templates/index.js.map +1 -1
  133. package/build-module/components/post-edit/index.js +98 -0
  134. package/build-module/components/post-edit/index.js.map +1 -0
  135. package/build-module/components/post-fields/index.js +306 -0
  136. package/build-module/components/post-fields/index.js.map +1 -0
  137. package/build-module/components/post-list/index.js +275 -0
  138. package/build-module/components/post-list/index.js.map +1 -0
  139. package/build-module/components/posts-app/router.js +3 -3
  140. package/build-module/components/posts-app/router.js.map +1 -1
  141. package/build-module/components/sidebar-dataviews/default-views.js +21 -9
  142. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  143. package/build-module/components/sidebar-dataviews/index.js +42 -3
  144. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  145. package/build-module/components/sidebar-navigation-screen-global-styles/content.js +57 -0
  146. package/build-module/components/sidebar-navigation-screen-global-styles/content.js.map +1 -0
  147. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +2 -47
  148. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  149. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -1
  150. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  151. package/build-module/index.js +5 -1
  152. package/build-module/index.js.map +1 -1
  153. package/build-module/store/selectors.js +35 -7
  154. package/build-module/store/selectors.js.map +1 -1
  155. package/build-module/utils/get-filtered-template-parts.js +57 -0
  156. package/build-module/utils/get-filtered-template-parts.js.map +1 -0
  157. package/build-style/posts-rtl.css +581 -503
  158. package/build-style/posts.css +581 -503
  159. package/build-style/style-rtl.css +621 -519
  160. package/build-style/style.css +621 -519
  161. package/package.json +41 -41
  162. package/src/components/add-new-pattern/index.js +8 -2
  163. package/src/components/add-new-template/index.js +4 -1
  164. package/src/components/add-new-template/style.scss +4 -6
  165. package/src/components/block-editor/use-site-editor-settings.js +15 -111
  166. package/src/components/global-styles/block-preview-panel.js +22 -9
  167. package/src/components/global-styles/font-families.js +66 -31
  168. package/src/components/global-styles/font-library-modal/index.js +4 -2
  169. package/src/components/global-styles/font-library-modal/installed-fonts.js +92 -11
  170. package/src/components/global-styles/font-library-modal/style.scss +9 -0
  171. package/src/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +43 -0
  172. package/src/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +37 -0
  173. package/src/components/global-styles/font-sizes/font-size-preview.js +43 -0
  174. package/src/components/global-styles/font-sizes/font-size.js +250 -0
  175. package/src/components/global-styles/font-sizes/font-sizes-count.js +40 -0
  176. package/src/components/global-styles/font-sizes/font-sizes.js +263 -0
  177. package/src/components/global-styles/font-sizes/rename-font-size-dialog.js +70 -0
  178. package/src/components/global-styles/screen-block.js +12 -14
  179. package/src/components/global-styles/screen-style-variations.js +2 -2
  180. package/src/components/global-styles/screen-typography.js +3 -2
  181. package/src/components/global-styles/size-control/index.js +86 -0
  182. package/src/components/global-styles/style-variations-container.js +4 -0
  183. package/src/components/global-styles/style.scss +13 -3
  184. package/src/components/global-styles/ui.js +10 -0
  185. package/src/components/global-styles/variations/variations-color.js +1 -1
  186. package/src/components/global-styles/variations/variations-typography.js +1 -2
  187. package/src/components/layout/index.js +11 -0
  188. package/src/components/layout/router.js +13 -5
  189. package/src/components/layout/style.scss +26 -8
  190. package/src/components/page-patterns/header.js +1 -1
  191. package/src/components/page-patterns/index.js +15 -8
  192. package/src/components/page-templates/index.js +51 -46
  193. package/src/components/page-templates/style.scss +5 -3
  194. package/src/components/post-edit/index.js +96 -0
  195. package/src/components/post-edit/style.scss +9 -0
  196. package/src/components/post-fields/index.js +345 -0
  197. package/src/components/post-list/index.js +326 -0
  198. package/src/components/{posts-app → post-list}/style.scss +12 -9
  199. package/src/components/posts-app/router.js +3 -3
  200. package/src/components/sidebar-dataviews/default-views.js +21 -9
  201. package/src/components/sidebar-dataviews/index.js +36 -1
  202. package/src/components/sidebar-navigation-screen-global-styles/content.js +55 -0
  203. package/src/components/sidebar-navigation-screen-global-styles/index.js +1 -55
  204. package/src/hooks/push-changes-to-global-styles/index.js +1 -1
  205. package/src/index.js +7 -1
  206. package/src/posts.scss +1 -1
  207. package/src/store/selectors.js +53 -14
  208. package/src/store/test/selectors.js +1 -26
  209. package/src/style.scss +2 -1
  210. package/src/utils/get-filtered-template-parts.js +61 -0
  211. package/src/utils/test/get-filtered-template-parts.js +127 -0
  212. package/build/components/global-styles/screen-background.js +0 -36
  213. package/build/components/global-styles/screen-background.js.map +0 -1
  214. package/build/components/posts-app/posts-list.js +0 -568
  215. package/build/components/posts-app/posts-list.js.map +0 -1
  216. package/build-module/components/global-styles/screen-background.js +0 -30
  217. package/build-module/components/global-styles/screen-background.js.map +0 -1
  218. package/build-module/components/posts-app/posts-list.js +0 -560
  219. package/build-module/components/posts-app/posts-list.js.map +0 -1
  220. package/src/components/global-styles/screen-background.js +0 -29
  221. package/src/components/posts-app/posts-list.js +0 -651
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _clsx = _interopRequireDefault(require("clsx"));
9
+ var _i18n = require("@wordpress/i18n");
10
+ var _htmlEntities = require("@wordpress/html-entities");
11
+ var _element = require("@wordpress/element");
12
+ var _date = require("@wordpress/date");
13
+ var _icons = require("@wordpress/icons");
14
+ var _components = require("@wordpress/components");
15
+ var _data = require("@wordpress/data");
16
+ var _coreData = require("@wordpress/core-data");
17
+ var _constants = require("../../utils/constants");
18
+ var _link = _interopRequireWildcard(require("../routes/link"));
19
+ var _media = _interopRequireDefault(require("../media"));
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
+ /**
24
+ * External dependencies
25
+ */
26
+
27
+ /**
28
+ * WordPress dependencies
29
+ */
30
+
31
+ /**
32
+ * Internal dependencies
33
+ */
34
+
35
+ // See https://github.com/WordPress/gutenberg/issues/55886
36
+ // We do not support custom statutes at the moment.
37
+ const STATUSES = [{
38
+ value: 'draft',
39
+ label: (0, _i18n.__)('Draft'),
40
+ icon: _icons.drafts
41
+ }, {
42
+ value: 'future',
43
+ label: (0, _i18n.__)('Scheduled'),
44
+ icon: _icons.scheduled
45
+ }, {
46
+ value: 'pending',
47
+ label: (0, _i18n.__)('Pending Review'),
48
+ icon: _icons.pending
49
+ }, {
50
+ value: 'private',
51
+ label: (0, _i18n.__)('Private'),
52
+ icon: _icons.notAllowed
53
+ }, {
54
+ value: 'publish',
55
+ label: (0, _i18n.__)('Published'),
56
+ icon: _icons.published
57
+ }, {
58
+ value: 'trash',
59
+ label: (0, _i18n.__)('Trash'),
60
+ icon: _icons.trash
61
+ }];
62
+ const getFormattedDate = dateToDisplay => (0, _date.dateI18n)((0, _date.getSettings)().formats.datetimeAbbreviated, (0, _date.getDate)(dateToDisplay));
63
+ function FeaturedImage({
64
+ item,
65
+ viewType
66
+ }) {
67
+ const isDisabled = item.status === 'trash';
68
+ const {
69
+ onClick
70
+ } = (0, _link.useLink)({
71
+ postId: item.id,
72
+ postType: item.type,
73
+ canvas: 'edit'
74
+ });
75
+ const hasMedia = !!item.featured_media;
76
+ const size = viewType === _constants.LAYOUT_GRID ? ['large', 'full', 'medium', 'thumbnail'] : ['thumbnail', 'medium', 'large', 'full'];
77
+ const media = hasMedia ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_media.default, {
78
+ className: "edit-site-post-list__featured-image",
79
+ id: item.featured_media,
80
+ size: size
81
+ }) : null;
82
+ const renderButton = viewType !== _constants.LAYOUT_LIST && !isDisabled;
83
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
84
+ className: `edit-site-post-list__featured-image-wrapper is-layout-${viewType}`,
85
+ children: renderButton ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
86
+ className: "edit-site-post-list__featured-image-button",
87
+ type: "button",
88
+ onClick: onClick,
89
+ "aria-label": item.title?.rendered || (0, _i18n.__)('(no title)'),
90
+ children: media
91
+ }) : media
92
+ });
93
+ }
94
+ function PostStatusField({
95
+ item
96
+ }) {
97
+ const status = STATUSES.find(({
98
+ value
99
+ }) => value === item.status);
100
+ const label = status?.label || item.status;
101
+ const icon = status?.icon;
102
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
103
+ alignment: "left",
104
+ spacing: 0,
105
+ children: [icon && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
106
+ className: "edit-site-post-list__status-icon",
107
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
108
+ icon: icon
109
+ })
110
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
111
+ children: label
112
+ })]
113
+ });
114
+ }
115
+ function PostAuthorField({
116
+ item
117
+ }) {
118
+ const {
119
+ text,
120
+ imageUrl
121
+ } = (0, _data.useSelect)(select => {
122
+ const {
123
+ getUser
124
+ } = select(_coreData.store);
125
+ const user = getUser(item.author);
126
+ return {
127
+ imageUrl: user?.avatar_urls?.[48],
128
+ text: user?.name
129
+ };
130
+ }, [item]);
131
+ const [isImageLoaded, setIsImageLoaded] = (0, _element.useState)(false);
132
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
133
+ alignment: "left",
134
+ spacing: 0,
135
+ children: [!!imageUrl && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
136
+ className: (0, _clsx.default)('page-templates-author-field__avatar', {
137
+ 'is-loaded': isImageLoaded
138
+ }),
139
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
140
+ onLoad: () => setIsImageLoaded(true),
141
+ alt: (0, _i18n.__)('Author avatar'),
142
+ src: imageUrl
143
+ })
144
+ }), !imageUrl && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
145
+ className: "page-templates-author-field__icon",
146
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
147
+ icon: _icons.commentAuthorAvatar
148
+ })
149
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
150
+ className: "page-templates-author-field__name",
151
+ children: text
152
+ })]
153
+ });
154
+ }
155
+ function usePostFields(viewType) {
156
+ const {
157
+ records: authors,
158
+ isResolving: isLoadingAuthors
159
+ } = (0, _coreData.useEntityRecords)('root', 'user', {
160
+ per_page: -1
161
+ });
162
+ const {
163
+ frontPageId,
164
+ postsPageId
165
+ } = (0, _data.useSelect)(select => {
166
+ const {
167
+ getEntityRecord
168
+ } = select(_coreData.store);
169
+ const siteSettings = getEntityRecord('root', 'site');
170
+ return {
171
+ frontPageId: siteSettings?.page_on_front,
172
+ postsPageId: siteSettings?.page_for_posts
173
+ };
174
+ }, []);
175
+ const fields = (0, _element.useMemo)(() => [{
176
+ id: 'featured-image',
177
+ label: (0, _i18n.__)('Featured Image'),
178
+ getValue: ({
179
+ item
180
+ }) => item.featured_media,
181
+ render: ({
182
+ item
183
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(FeaturedImage, {
184
+ item: item,
185
+ viewType: viewType
186
+ }),
187
+ enableSorting: false
188
+ }, {
189
+ label: (0, _i18n.__)('Title'),
190
+ id: 'title',
191
+ type: 'text',
192
+ getValue: ({
193
+ item
194
+ }) => typeof item.title === 'string' ? item.title : item.title?.raw,
195
+ render: ({
196
+ item
197
+ }) => {
198
+ const addLink = [_constants.LAYOUT_TABLE, _constants.LAYOUT_GRID].includes(viewType) && item.status !== 'trash';
199
+ const title = addLink ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_link.default, {
200
+ params: {
201
+ postId: item.id,
202
+ postType: item.type,
203
+ canvas: 'edit'
204
+ },
205
+ children: (0, _htmlEntities.decodeEntities)(item.title?.rendered) || (0, _i18n.__)('(no title)')
206
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
207
+ children: (0, _htmlEntities.decodeEntities)(item.title?.rendered) || (0, _i18n.__)('(no title)')
208
+ });
209
+ let suffix = '';
210
+ if (item.id === frontPageId) {
211
+ suffix = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
212
+ className: "edit-site-post-list__title-badge",
213
+ children: (0, _i18n.__)('Homepage')
214
+ });
215
+ } else if (item.id === postsPageId) {
216
+ suffix = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
217
+ className: "edit-site-post-list__title-badge",
218
+ children: (0, _i18n.__)('Posts Page')
219
+ });
220
+ }
221
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
222
+ className: "edit-site-post-list__title",
223
+ alignment: "center",
224
+ justify: "flex-start",
225
+ children: [title, suffix]
226
+ });
227
+ },
228
+ enableHiding: false
229
+ }, {
230
+ label: (0, _i18n.__)('Author'),
231
+ id: 'author',
232
+ getValue: ({
233
+ item
234
+ }) => item._embedded?.author[0]?.name,
235
+ elements: authors?.map(({
236
+ id,
237
+ name
238
+ }) => ({
239
+ value: id,
240
+ label: name
241
+ })) || [],
242
+ render: PostAuthorField
243
+ }, {
244
+ label: (0, _i18n.__)('Status'),
245
+ id: 'status',
246
+ getValue: ({
247
+ item
248
+ }) => {
249
+ var _STATUSES$find$label;
250
+ return (_STATUSES$find$label = STATUSES.find(({
251
+ value
252
+ }) => value === item.status)?.label) !== null && _STATUSES$find$label !== void 0 ? _STATUSES$find$label : item.status;
253
+ },
254
+ elements: STATUSES,
255
+ render: PostStatusField,
256
+ enableSorting: false,
257
+ filterBy: {
258
+ operators: [_constants.OPERATOR_IS_ANY]
259
+ }
260
+ }, {
261
+ label: (0, _i18n.__)('Date'),
262
+ id: 'date',
263
+ render: ({
264
+ item
265
+ }) => {
266
+ const isDraftOrPrivate = ['draft', 'private'].includes(item.status);
267
+ if (isDraftOrPrivate) {
268
+ return (0, _element.createInterpolateElement)((0, _i18n.sprintf)( /* translators: %s: page creation date */
269
+ (0, _i18n.__)('<span>Modified: <time>%s</time></span>'), getFormattedDate(item.date)), {
270
+ span: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {}),
271
+ time: /*#__PURE__*/(0, _jsxRuntime.jsx)("time", {})
272
+ });
273
+ }
274
+ const isScheduled = item.status === 'future';
275
+ if (isScheduled) {
276
+ return (0, _element.createInterpolateElement)((0, _i18n.sprintf)( /* translators: %s: page creation date */
277
+ (0, _i18n.__)('<span>Scheduled: <time>%s</time></span>'), getFormattedDate(item.date)), {
278
+ span: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {}),
279
+ time: /*#__PURE__*/(0, _jsxRuntime.jsx)("time", {})
280
+ });
281
+ }
282
+
283
+ // Pending & Published posts show the modified date if it's newer.
284
+ const dateToDisplay = (0, _date.getDate)(item.modified) > (0, _date.getDate)(item.date) ? item.modified : item.date;
285
+ const isPending = item.status === 'pending';
286
+ if (isPending) {
287
+ return (0, _element.createInterpolateElement)((0, _i18n.sprintf)( /* translators: %s: the newest of created or modified date for the page */
288
+ (0, _i18n.__)('<span>Modified: <time>%s</time></span>'), getFormattedDate(dateToDisplay)), {
289
+ span: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {}),
290
+ time: /*#__PURE__*/(0, _jsxRuntime.jsx)("time", {})
291
+ });
292
+ }
293
+ const isPublished = item.status === 'publish';
294
+ if (isPublished) {
295
+ return (0, _element.createInterpolateElement)((0, _i18n.sprintf)( /* translators: %s: the newest of created or modified date for the page */
296
+ (0, _i18n.__)('<span>Published: <time>%s</time></span>'), getFormattedDate(dateToDisplay)), {
297
+ span: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {}),
298
+ time: /*#__PURE__*/(0, _jsxRuntime.jsx)("time", {})
299
+ });
300
+ }
301
+
302
+ // Unknow status.
303
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("time", {
304
+ children: getFormattedDate(item.date)
305
+ });
306
+ }
307
+ }], [authors, viewType, frontPageId, postsPageId]);
308
+ return {
309
+ isLoading: isLoadingAuthors,
310
+ fields
311
+ };
312
+ }
313
+ var _default = exports.default = usePostFields;
314
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_htmlEntities","_element","_date","_icons","_components","_data","_coreData","_constants","_link","_interopRequireWildcard","_media","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","STATUSES","value","label","__","icon","drafts","scheduled","pending","notAllowed","published","trash","getFormattedDate","dateToDisplay","dateI18n","getSettings","formats","datetimeAbbreviated","getDate","FeaturedImage","item","viewType","isDisabled","status","onClick","useLink","postId","id","postType","type","canvas","hasMedia","featured_media","size","LAYOUT_GRID","media","jsx","className","renderButton","LAYOUT_LIST","children","title","rendered","PostStatusField","find","jsxs","__experimentalHStack","alignment","spacing","Icon","PostAuthorField","text","imageUrl","useSelect","select","getUser","coreStore","user","author","avatar_urls","name","isImageLoaded","setIsImageLoaded","useState","clsx","onLoad","alt","src","authorIcon","usePostFields","records","authors","isResolving","isLoadingAuthors","useEntityRecords","per_page","frontPageId","postsPageId","getEntityRecord","siteSettings","page_on_front","page_for_posts","fields","useMemo","getValue","render","enableSorting","raw","addLink","LAYOUT_TABLE","includes","params","decodeEntities","suffix","justify","enableHiding","_embedded","elements","map","_STATUSES$find$label","filterBy","operators","OPERATOR_IS_ANY","isDraftOrPrivate","createInterpolateElement","sprintf","date","span","time","isScheduled","modified","isPending","isPublished","isLoading","_default","exports"],"sources":["@wordpress/edit-site/src/components/post-fields/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport {\n\tcreateInterpolateElement,\n\tuseMemo,\n\tuseState,\n} from '@wordpress/element';\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\nimport {\n\ttrash,\n\tdrafts,\n\tpublished,\n\tscheduled,\n\tpending,\n\tnotAllowed,\n\tcommentAuthorAvatar as authorIcon,\n} from '@wordpress/icons';\nimport { __experimentalHStack as HStack, Icon } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useEntityRecords, store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tLAYOUT_LIST,\n\tOPERATOR_IS_ANY,\n} from '../../utils/constants';\nimport { default as Link, useLink } from '../routes/link';\nimport Media from '../media';\n\n// See https://github.com/WordPress/gutenberg/issues/55886\n// We do not support custom statutes at the moment.\nconst STATUSES = [\n\t{ value: 'draft', label: __( 'Draft' ), icon: drafts },\n\t{ value: 'future', label: __( 'Scheduled' ), icon: scheduled },\n\t{ value: 'pending', label: __( 'Pending Review' ), icon: pending },\n\t{ value: 'private', label: __( 'Private' ), icon: notAllowed },\n\t{ value: 'publish', label: __( 'Published' ), icon: published },\n\t{ value: 'trash', label: __( 'Trash' ), icon: trash },\n];\n\nconst getFormattedDate = ( dateToDisplay ) =>\n\tdateI18n(\n\t\tgetSettings().formats.datetimeAbbreviated,\n\t\tgetDate( dateToDisplay )\n\t);\n\nfunction FeaturedImage( { item, viewType } ) {\n\tconst isDisabled = item.status === 'trash';\n\tconst { onClick } = useLink( {\n\t\tpostId: item.id,\n\t\tpostType: item.type,\n\t\tcanvas: 'edit',\n\t} );\n\tconst hasMedia = !! item.featured_media;\n\tconst size =\n\t\tviewType === LAYOUT_GRID\n\t\t\t? [ 'large', 'full', 'medium', 'thumbnail' ]\n\t\t\t: [ 'thumbnail', 'medium', 'large', 'full' ];\n\tconst media = hasMedia ? (\n\t\t<Media\n\t\t\tclassName=\"edit-site-post-list__featured-image\"\n\t\t\tid={ item.featured_media }\n\t\t\tsize={ size }\n\t\t/>\n\t) : null;\n\tconst renderButton = viewType !== LAYOUT_LIST && ! isDisabled;\n\treturn (\n\t\t<div\n\t\t\tclassName={ `edit-site-post-list__featured-image-wrapper is-layout-${ viewType }` }\n\t\t>\n\t\t\t{ renderButton ? (\n\t\t\t\t<button\n\t\t\t\t\tclassName=\"edit-site-post-list__featured-image-button\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\taria-label={ item.title?.rendered || __( '(no title)' ) }\n\t\t\t\t>\n\t\t\t\t\t{ media }\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\tmedia\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction PostStatusField( { item } ) {\n\tconst status = STATUSES.find( ( { value } ) => value === item.status );\n\tconst label = status?.label || item.status;\n\tconst icon = status?.icon;\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 0 }>\n\t\t\t{ icon && (\n\t\t\t\t<div className=\"edit-site-post-list__status-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>{ label }</span>\n\t\t</HStack>\n\t);\n}\n\nfunction PostAuthorField( { item } ) {\n\tconst { text, imageUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getUser } = select( coreStore );\n\t\t\tconst user = getUser( item.author );\n\t\t\treturn {\n\t\t\t\timageUrl: user?.avatar_urls?.[ 48 ],\n\t\t\t\ttext: user?.name,\n\t\t\t};\n\t\t},\n\t\t[ item ]\n\t);\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 0 }>\n\t\t\t{ !! imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\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={ __( 'Author avatar' ) }\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{ ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ authorIcon } />\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 usePostFields( viewType ) {\n\tconst { records: authors, isResolving: isLoadingAuthors } =\n\t\tuseEntityRecords( 'root', 'user', { per_page: -1 } );\n\n\tconst { frontPageId, postsPageId } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord } = select( coreStore );\n\t\tconst siteSettings = getEntityRecord( 'root', 'site' );\n\t\treturn {\n\t\t\tfrontPageId: siteSettings?.page_on_front,\n\t\t\tpostsPageId: siteSettings?.page_for_posts,\n\t\t};\n\t}, [] );\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'featured-image',\n\t\t\t\tlabel: __( 'Featured Image' ),\n\t\t\t\tgetValue: ( { item } ) => item.featured_media,\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<FeaturedImage item={ item } viewType={ viewType } />\n\t\t\t\t),\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\ttype: 'text',\n\t\t\t\tgetValue: ( { item } ) =>\n\t\t\t\t\ttypeof item.title === 'string'\n\t\t\t\t\t\t? item.title\n\t\t\t\t\t\t: item.title?.raw,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\tconst addLink =\n\t\t\t\t\t\t[ LAYOUT_TABLE, LAYOUT_GRID ].includes( viewType ) &&\n\t\t\t\t\t\titem.status !== 'trash';\n\t\t\t\t\tconst title = addLink ? (\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tparams={ {\n\t\t\t\t\t\t\t\tpostId: item.id,\n\t\t\t\t\t\t\t\tpostType: item.type,\n\t\t\t\t\t\t\t\tcanvas: 'edit',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ decodeEntities( item.title?.rendered ) ||\n\t\t\t\t\t\t\t\t__( '(no title)' ) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{ decodeEntities( item.title?.rendered ) ||\n\t\t\t\t\t\t\t\t__( '(no title)' ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\n\n\t\t\t\t\tlet suffix = '';\n\t\t\t\t\tif ( item.id === frontPageId ) {\n\t\t\t\t\t\tsuffix = (\n\t\t\t\t\t\t\t<span className=\"edit-site-post-list__title-badge\">\n\t\t\t\t\t\t\t\t{ __( 'Homepage' ) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( item.id === postsPageId ) {\n\t\t\t\t\t\tsuffix = (\n\t\t\t\t\t\t\t<span className=\"edit-site-post-list__title-badge\">\n\t\t\t\t\t\t\t\t{ __( 'Posts Page' ) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\tclassName=\"edit-site-post-list__title\"\n\t\t\t\t\t\t\talignment=\"center\"\n\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t{ suffix }\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\tgetValue: ( { item } ) => item._embedded?.author[ 0 ]?.name,\n\t\t\t\telements:\n\t\t\t\t\tauthors?.map( ( { id, name } ) => ( {\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t} ) ) || [],\n\t\t\t\trender: PostAuthorField,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: __( 'Status' ),\n\t\t\t\tid: 'status',\n\t\t\t\tgetValue: ( { item } ) =>\n\t\t\t\t\tSTATUSES.find( ( { value } ) => value === item.status )\n\t\t\t\t\t\t?.label ?? item.status,\n\t\t\t\telements: STATUSES,\n\t\t\t\trender: PostStatusField,\n\t\t\t\tenableSorting: false,\n\t\t\t\tfilterBy: {\n\t\t\t\t\toperators: [ OPERATOR_IS_ANY ],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: __( 'Date' ),\n\t\t\t\tid: 'date',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\tconst isDraftOrPrivate = [ 'draft', 'private' ].includes(\n\t\t\t\t\t\titem.status\n\t\t\t\t\t);\n\t\t\t\t\tif ( isDraftOrPrivate ) {\n\t\t\t\t\t\treturn createInterpolateElement(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: page creation date */\n\t\t\t\t\t\t\t\t__( '<span>Modified: <time>%s</time></span>' ),\n\t\t\t\t\t\t\t\tgetFormattedDate( item.date )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tspan: <span />,\n\t\t\t\t\t\t\t\ttime: <time />,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst isScheduled = item.status === 'future';\n\t\t\t\t\tif ( isScheduled ) {\n\t\t\t\t\t\treturn createInterpolateElement(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: page creation date */\n\t\t\t\t\t\t\t\t__( '<span>Scheduled: <time>%s</time></span>' ),\n\t\t\t\t\t\t\t\tgetFormattedDate( item.date )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tspan: <span />,\n\t\t\t\t\t\t\t\ttime: <time />,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Pending & Published posts show the modified date if it's newer.\n\t\t\t\t\tconst dateToDisplay =\n\t\t\t\t\t\tgetDate( item.modified ) > getDate( item.date )\n\t\t\t\t\t\t\t? item.modified\n\t\t\t\t\t\t\t: item.date;\n\n\t\t\t\t\tconst isPending = item.status === 'pending';\n\t\t\t\t\tif ( isPending ) {\n\t\t\t\t\t\treturn createInterpolateElement(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: the newest of created or modified date for the page */\n\t\t\t\t\t\t\t\t__( '<span>Modified: <time>%s</time></span>' ),\n\t\t\t\t\t\t\t\tgetFormattedDate( dateToDisplay )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tspan: <span />,\n\t\t\t\t\t\t\t\ttime: <time />,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst isPublished = item.status === 'publish';\n\t\t\t\t\tif ( isPublished ) {\n\t\t\t\t\t\treturn createInterpolateElement(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: the newest of created or modified date for the page */\n\t\t\t\t\t\t\t\t__( '<span>Published: <time>%s</time></span>' ),\n\t\t\t\t\t\t\t\tgetFormattedDate( dateToDisplay )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tspan: <span />,\n\t\t\t\t\t\t\t\ttime: <time />,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Unknow status.\n\t\t\t\t\treturn <time>{ getFormattedDate( item.date ) }</time>;\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\t[ authors, viewType, frontPageId, postsPageId ]\n\t);\n\n\treturn {\n\t\tisLoading: isLoadingAuthors,\n\t\tfields,\n\t};\n}\n\nexport default usePostFields;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = PostList;
8
+ var _components = require("@wordpress/components");
9
+ var _coreData = require("@wordpress/core-data");
10
+ var _element = require("@wordpress/element");
11
+ var _router = require("@wordpress/router");
12
+ var _data = require("@wordpress/data");
13
+ var _dataviews = require("@wordpress/dataviews");
14
+ var _editor = require("@wordpress/editor");
15
+ var _i18n = require("@wordpress/i18n");
16
+ var _icons = require("@wordpress/icons");
17
+ var _page = _interopRequireDefault(require("../page"));
18
+ var _defaultViews = require("../sidebar-dataviews/default-views");
19
+ var _constants = require("../../utils/constants");
20
+ var _addNewPost = _interopRequireDefault(require("../add-new-post"));
21
+ var _lockUnlock = require("../../lock-unlock");
22
+ var _dataviewsActions = require("../dataviews-actions");
23
+ var _compose = require("@wordpress/compose");
24
+ var _postFields = _interopRequireDefault(require("../post-fields"));
25
+ var _jsxRuntime = require("react/jsx-runtime");
26
+ /**
27
+ * WordPress dependencies
28
+ */
29
+
30
+ /**
31
+ * Internal dependencies
32
+ */
33
+
34
+ const {
35
+ usePostActions
36
+ } = (0, _lockUnlock.unlock)(_editor.privateApis);
37
+ const {
38
+ useLocation,
39
+ useHistory
40
+ } = (0, _lockUnlock.unlock)(_router.privateApis);
41
+ const EMPTY_ARRAY = [];
42
+ function useView(postType) {
43
+ const {
44
+ params: {
45
+ activeView = 'all',
46
+ isCustom = 'false',
47
+ layout
48
+ }
49
+ } = useLocation();
50
+ const history = useHistory();
51
+ const DEFAULT_VIEWS = (0, _defaultViews.useDefaultViews)({
52
+ postType
53
+ });
54
+ const selectedDefaultView = (0, _element.useMemo)(() => {
55
+ const defaultView = isCustom === 'false' && DEFAULT_VIEWS[postType].find(({
56
+ slug
57
+ }) => slug === activeView)?.view;
58
+ if (isCustom === 'false' && layout) {
59
+ return {
60
+ ...defaultView,
61
+ type: layout,
62
+ layout: _defaultViews.defaultLayouts[layout]?.layout
63
+ };
64
+ }
65
+ return defaultView;
66
+ }, [isCustom, activeView, layout, postType, DEFAULT_VIEWS]);
67
+ const [view, setView] = (0, _element.useState)(selectedDefaultView);
68
+ (0, _element.useEffect)(() => {
69
+ if (selectedDefaultView) {
70
+ setView(selectedDefaultView);
71
+ }
72
+ }, [selectedDefaultView]);
73
+ const editedViewRecord = (0, _data.useSelect)(select => {
74
+ if (isCustom !== 'true') {
75
+ return;
76
+ }
77
+ const {
78
+ getEditedEntityRecord
79
+ } = select(_coreData.store);
80
+ const dataviewRecord = getEditedEntityRecord('postType', 'wp_dataviews', Number(activeView));
81
+ return dataviewRecord;
82
+ }, [activeView, isCustom]);
83
+ const {
84
+ editEntityRecord
85
+ } = (0, _data.useDispatch)(_coreData.store);
86
+ const customView = (0, _element.useMemo)(() => {
87
+ const storedView = editedViewRecord?.content && JSON.parse(editedViewRecord?.content);
88
+ if (!storedView) {
89
+ return storedView;
90
+ }
91
+ return {
92
+ ...storedView,
93
+ layout: _defaultViews.defaultLayouts[storedView?.type]?.layout
94
+ };
95
+ }, [editedViewRecord?.content]);
96
+ const setCustomView = (0, _element.useCallback)(viewToSet => {
97
+ editEntityRecord('postType', 'wp_dataviews', editedViewRecord?.id, {
98
+ content: JSON.stringify(viewToSet)
99
+ });
100
+ }, [editEntityRecord, editedViewRecord?.id]);
101
+ const setDefaultViewAndUpdateUrl = (0, _element.useCallback)(viewToSet => {
102
+ if (viewToSet.type !== view?.type) {
103
+ const {
104
+ params
105
+ } = history.getLocationWithParams();
106
+ history.push({
107
+ ...params,
108
+ layout: viewToSet.type
109
+ });
110
+ }
111
+ setView(viewToSet);
112
+ }, [history, view?.type]);
113
+ if (isCustom === 'false') {
114
+ return [view, setDefaultViewAndUpdateUrl];
115
+ } else if (isCustom === 'true' && customView) {
116
+ return [customView, setCustomView];
117
+ }
118
+ // Loading state where no the view was not found on custom views or default views.
119
+ return [DEFAULT_VIEWS[postType][0].view, setDefaultViewAndUpdateUrl];
120
+ }
121
+ const DEFAULT_STATUSES = 'draft,future,pending,private,publish'; // All but 'trash'.
122
+
123
+ function getItemId(item) {
124
+ return item.id.toString();
125
+ }
126
+ function PostList({
127
+ postType
128
+ }) {
129
+ var _postId$split, _records$map, _usePrevious;
130
+ const [view, setView] = useView(postType);
131
+ const history = useHistory();
132
+ const location = useLocation();
133
+ const {
134
+ postId,
135
+ quickEdit = false
136
+ } = location.params;
137
+ const [selection, setSelection] = (0, _element.useState)((_postId$split = postId?.split(',')) !== null && _postId$split !== void 0 ? _postId$split : []);
138
+ const onChangeSelection = (0, _element.useCallback)(items => {
139
+ var _params$isCustom;
140
+ setSelection(items);
141
+ const {
142
+ params
143
+ } = history.getLocationWithParams();
144
+ if (((_params$isCustom = params.isCustom) !== null && _params$isCustom !== void 0 ? _params$isCustom : 'false') === 'false') {
145
+ history.push({
146
+ ...params,
147
+ postId: items.join(',')
148
+ });
149
+ }
150
+ }, [history]);
151
+ const queryArgs = (0, _element.useMemo)(() => {
152
+ const filters = {};
153
+ view.filters.forEach(filter => {
154
+ if (filter.field === 'status' && filter.operator === _constants.OPERATOR_IS_ANY) {
155
+ filters.status = filter.value;
156
+ }
157
+ if (filter.field === 'author' && filter.operator === _constants.OPERATOR_IS_ANY) {
158
+ filters.author = filter.value;
159
+ } else if (filter.field === 'author' && filter.operator === _constants.OPERATOR_IS_NONE) {
160
+ filters.author_exclude = filter.value;
161
+ }
162
+ });
163
+ // We want to provide a different default item for the status filter
164
+ // than the REST API provides.
165
+ if (!filters.status || filters.status === '') {
166
+ filters.status = DEFAULT_STATUSES;
167
+ }
168
+ return {
169
+ per_page: view.perPage,
170
+ page: view.page,
171
+ _embed: 'author',
172
+ order: view.sort?.direction,
173
+ orderby: view.sort?.field,
174
+ search: view.search,
175
+ ...filters
176
+ };
177
+ }, [view]);
178
+ const {
179
+ records,
180
+ isResolving: isLoadingMainEntities,
181
+ totalItems,
182
+ totalPages
183
+ } = (0, _coreData.useEntityRecords)('postType', postType, queryArgs);
184
+ const ids = (_records$map = records?.map(record => getItemId(record))) !== null && _records$map !== void 0 ? _records$map : [];
185
+ const prevIds = (_usePrevious = (0, _compose.usePrevious)(ids)) !== null && _usePrevious !== void 0 ? _usePrevious : [];
186
+ const deletedIds = prevIds.filter(id => !ids.includes(id));
187
+ const postIdWasDeleted = deletedIds.includes(postId);
188
+ (0, _element.useEffect)(() => {
189
+ if (postIdWasDeleted) {
190
+ history.push({
191
+ ...history.getLocationWithParams().params,
192
+ postId: undefined
193
+ });
194
+ }
195
+ }, [postIdWasDeleted, history]);
196
+ const paginationInfo = (0, _element.useMemo)(() => ({
197
+ totalItems,
198
+ totalPages
199
+ }), [totalItems, totalPages]);
200
+ const {
201
+ labels,
202
+ canCreateRecord
203
+ } = (0, _data.useSelect)(select => {
204
+ const {
205
+ getPostType,
206
+ canUser
207
+ } = select(_coreData.store);
208
+ return {
209
+ labels: getPostType(postType)?.labels,
210
+ canCreateRecord: canUser('create', {
211
+ kind: 'postType',
212
+ name: postType
213
+ })
214
+ };
215
+ }, [postType]);
216
+ const postTypeActions = usePostActions({
217
+ postType,
218
+ context: 'list'
219
+ });
220
+ const editAction = (0, _dataviewsActions.useEditPostAction)();
221
+ const actions = (0, _element.useMemo)(() => [editAction, ...postTypeActions], [postTypeActions, editAction]);
222
+ const [showAddPostModal, setShowAddPostModal] = (0, _element.useState)(false);
223
+ const openModal = () => setShowAddPostModal(true);
224
+ const closeModal = () => setShowAddPostModal(false);
225
+ const handleNewPage = ({
226
+ type,
227
+ id
228
+ }) => {
229
+ history.push({
230
+ postId: id,
231
+ postType: type,
232
+ canvas: 'edit'
233
+ });
234
+ closeModal();
235
+ };
236
+ const {
237
+ isLoading: isLoadingFields,
238
+ fields
239
+ } = (0, _postFields.default)(view.type);
240
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_page.default, {
241
+ title: labels?.name,
242
+ actions: labels?.add_new_item && canCreateRecord && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
243
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
244
+ variant: "primary",
245
+ onClick: openModal,
246
+ __next40pxDefaultSize: true,
247
+ children: labels.add_new_item
248
+ }), showAddPostModal && /*#__PURE__*/(0, _jsxRuntime.jsx)(_addNewPost.default, {
249
+ postType: postType,
250
+ onSave: handleNewPage,
251
+ onClose: closeModal
252
+ })]
253
+ }),
254
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataviews.DataViews, {
255
+ paginationInfo: paginationInfo,
256
+ fields: fields,
257
+ actions: actions,
258
+ data: records || EMPTY_ARRAY,
259
+ isLoading: isLoadingMainEntities || isLoadingFields,
260
+ view: view,
261
+ onChangeView: setView,
262
+ selection: selection,
263
+ onChangeSelection: onChangeSelection,
264
+ getItemId: getItemId,
265
+ defaultLayouts: _defaultViews.defaultLayouts,
266
+ header: window.__experimentalQuickEditDataViews && view.type !== _constants.LAYOUT_LIST && postType === 'page' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
267
+ size: "compact",
268
+ isPressed: quickEdit,
269
+ icon: _icons.drawerRight,
270
+ label: !quickEdit ? (0, _i18n.__)('Show quick edit sidebar') : (0, _i18n.__)('Close quick edit sidebar'),
271
+ onClick: () => {
272
+ history.push({
273
+ ...location.params,
274
+ quickEdit: quickEdit ? undefined : true
275
+ });
276
+ }
277
+ })
278
+ })
279
+ });
280
+ }
281
+ //# sourceMappingURL=index.js.map