@wordpress/edit-site 7.3.2-next.v.202608281122.0 → 7.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 (131) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/build/components/add-new-template/add-custom-template-modal-content.cjs +3 -1
  3. package/build/components/add-new-template/add-custom-template-modal-content.cjs.map +2 -2
  4. package/build/components/add-new-template/index.cjs +6 -4
  5. package/build/components/add-new-template/index.cjs.map +2 -2
  6. package/build/components/add-new-template/utils.cjs +84 -9
  7. package/build/components/add-new-template/utils.cjs.map +2 -2
  8. package/build/components/dataviews-actions/index.cjs +2 -55
  9. package/build/components/dataviews-actions/index.cjs.map +3 -3
  10. package/build/components/layout/index.cjs +2 -2
  11. package/build/components/layout/index.cjs.map +2 -2
  12. package/build/components/more-menu/welcome-guide-menu-item.cjs +10 -2
  13. package/build/components/more-menu/welcome-guide-menu-item.cjs.map +3 -3
  14. package/build/components/page-templates/fields.cjs +2 -126
  15. package/build/components/page-templates/fields.cjs.map +3 -3
  16. package/build/components/page-templates/index.cjs +46 -230
  17. package/build/components/page-templates/index.cjs.map +3 -3
  18. package/build/components/post-list/index.cjs +7 -17
  19. package/build/components/post-list/index.cjs.map +2 -2
  20. package/build/components/sidebar-global-styles/index.cjs +2 -2
  21. package/build/components/sidebar-global-styles/index.cjs.map +2 -2
  22. package/build/components/sidebar-identity/index.cjs +17 -22
  23. package/build/components/sidebar-identity/index.cjs.map +2 -2
  24. package/build/components/sidebar-navigation-item/index.cjs +1 -8
  25. package/build/components/sidebar-navigation-item/index.cjs.map +2 -2
  26. package/build/components/sidebar-navigation-screen-templates-browse/content.cjs +34 -72
  27. package/build/components/sidebar-navigation-screen-templates-browse/content.cjs.map +3 -3
  28. package/build/components/sidebar-navigation-screen-templates-browse/index.cjs +1 -2
  29. package/build/components/sidebar-navigation-screen-templates-browse/index.cjs.map +3 -3
  30. package/build/components/site-editor-routes/templates.cjs +2 -4
  31. package/build/components/site-editor-routes/templates.cjs.map +3 -3
  32. package/build/index.cjs +0 -1
  33. package/build/index.cjs.map +2 -2
  34. package/build-module/components/add-new-template/add-custom-template-modal-content.mjs +3 -1
  35. package/build-module/components/add-new-template/add-custom-template-modal-content.mjs.map +2 -2
  36. package/build-module/components/add-new-template/index.mjs +7 -4
  37. package/build-module/components/add-new-template/index.mjs.map +2 -2
  38. package/build-module/components/add-new-template/utils.mjs +84 -9
  39. package/build-module/components/add-new-template/utils.mjs.map +2 -2
  40. package/build-module/components/dataviews-actions/index.mjs +1 -53
  41. package/build-module/components/dataviews-actions/index.mjs.map +2 -2
  42. package/build-module/components/layout/index.mjs +2 -2
  43. package/build-module/components/layout/index.mjs.map +2 -2
  44. package/build-module/components/more-menu/welcome-guide-menu-item.mjs +10 -2
  45. package/build-module/components/more-menu/welcome-guide-menu-item.mjs.map +2 -2
  46. package/build-module/components/page-templates/fields.mjs +3 -129
  47. package/build-module/components/page-templates/fields.mjs.map +3 -3
  48. package/build-module/components/page-templates/index.mjs +52 -253
  49. package/build-module/components/page-templates/index.mjs.map +2 -2
  50. package/build-module/components/post-list/index.mjs +8 -18
  51. package/build-module/components/post-list/index.mjs.map +2 -2
  52. package/build-module/components/sidebar-global-styles/index.mjs +2 -2
  53. package/build-module/components/sidebar-global-styles/index.mjs.map +2 -2
  54. package/build-module/components/sidebar-identity/index.mjs +17 -22
  55. package/build-module/components/sidebar-identity/index.mjs.map +2 -2
  56. package/build-module/components/sidebar-navigation-item/index.mjs +1 -8
  57. package/build-module/components/sidebar-navigation-item/index.mjs.map +2 -2
  58. package/build-module/components/sidebar-navigation-screen-templates-browse/content.mjs +42 -75
  59. package/build-module/components/sidebar-navigation-screen-templates-browse/content.mjs.map +2 -2
  60. package/build-module/components/sidebar-navigation-screen-templates-browse/index.mjs +1 -2
  61. package/build-module/components/sidebar-navigation-screen-templates-browse/index.mjs.map +2 -2
  62. package/build-module/components/site-editor-routes/templates.mjs +2 -4
  63. package/build-module/components/site-editor-routes/templates.mjs.map +2 -2
  64. package/build-module/index.mjs +0 -1
  65. package/build-module/index.mjs.map +2 -2
  66. package/build-style/style-rtl.css +38 -81
  67. package/build-style/style.css +38 -81
  68. package/package.json +41 -38
  69. package/src/components/add-new-template/add-custom-template-modal-content.jsx +3 -1
  70. package/src/components/add-new-template/index.jsx +9 -4
  71. package/src/components/add-new-template/style.scss +8 -21
  72. package/src/components/add-new-template/utils.js +118 -9
  73. package/src/components/dataviews-actions/index.js +0 -61
  74. package/src/components/layout/index.jsx +5 -2
  75. package/src/components/more-menu/welcome-guide-menu-item.jsx +8 -3
  76. package/src/components/page-templates/fields.jsx +2 -146
  77. package/src/components/page-templates/index.jsx +30 -256
  78. package/src/components/post-list/index.jsx +7 -20
  79. package/src/components/sidebar-global-styles/index.jsx +7 -5
  80. package/src/components/sidebar-global-styles/style.scss +6 -0
  81. package/src/components/sidebar-identity/index.jsx +23 -19
  82. package/src/components/sidebar-identity/style.scss +7 -0
  83. package/src/components/sidebar-navigation-item/index.jsx +1 -7
  84. package/src/components/sidebar-navigation-screen-templates-browse/content.jsx +45 -80
  85. package/src/components/sidebar-navigation-screen-templates-browse/index.jsx +1 -8
  86. package/src/components/site-editor-routes/templates.jsx +2 -19
  87. package/src/components/welcome-guide/style.scss +1 -1
  88. package/src/index.jsx +0 -1
  89. package/src/style.scss +1 -1
  90. package/src/utils/test/get-filtered-template-parts.js +1 -0
  91. package/build/components/add-new-template-legacy/add-custom-generic-template-modal-content.cjs +0 -107
  92. package/build/components/add-new-template-legacy/add-custom-generic-template-modal-content.cjs.map +0 -7
  93. package/build/components/add-new-template-legacy/add-custom-template-modal-content.cjs +0 -327
  94. package/build/components/add-new-template-legacy/add-custom-template-modal-content.cjs.map +0 -7
  95. package/build/components/add-new-template-legacy/index.cjs +0 -390
  96. package/build/components/add-new-template-legacy/index.cjs.map +0 -7
  97. package/build/components/add-new-template-legacy/utils.cjs +0 -623
  98. package/build/components/add-new-template-legacy/utils.cjs.map +0 -7
  99. package/build/components/page-templates/hooks.cjs +0 -94
  100. package/build/components/page-templates/hooks.cjs.map +0 -7
  101. package/build/components/page-templates/index-legacy.cjs +0 -167
  102. package/build/components/page-templates/index-legacy.cjs.map +0 -7
  103. package/build/components/page-templates/view-utils.cjs +0 -79
  104. package/build/components/page-templates/view-utils.cjs.map +0 -7
  105. package/build/components/sidebar-navigation-screen-templates-browse/content-legacy.cjs +0 -78
  106. package/build/components/sidebar-navigation-screen-templates-browse/content-legacy.cjs.map +0 -7
  107. package/build-module/components/add-new-template-legacy/add-custom-generic-template-modal-content.mjs +0 -91
  108. package/build-module/components/add-new-template-legacy/add-custom-generic-template-modal-content.mjs.map +0 -7
  109. package/build-module/components/add-new-template-legacy/add-custom-template-modal-content.mjs +0 -315
  110. package/build-module/components/add-new-template-legacy/add-custom-template-modal-content.mjs.map +0 -7
  111. package/build-module/components/add-new-template-legacy/index.mjs +0 -391
  112. package/build-module/components/add-new-template-legacy/index.mjs.map +0 -7
  113. package/build-module/components/add-new-template-legacy/utils.mjs +0 -592
  114. package/build-module/components/add-new-template-legacy/utils.mjs.map +0 -7
  115. package/build-module/components/page-templates/hooks.mjs +0 -74
  116. package/build-module/components/page-templates/hooks.mjs.map +0 -7
  117. package/build-module/components/page-templates/index-legacy.mjs +0 -136
  118. package/build-module/components/page-templates/index-legacy.mjs.map +0 -7
  119. package/build-module/components/page-templates/view-utils.mjs +0 -52
  120. package/build-module/components/page-templates/view-utils.mjs.map +0 -7
  121. package/build-module/components/sidebar-navigation-screen-templates-browse/content-legacy.mjs +0 -52
  122. package/build-module/components/sidebar-navigation-screen-templates-browse/content-legacy.mjs.map +0 -7
  123. package/src/components/add-new-template-legacy/add-custom-generic-template-modal-content.jsx +0 -85
  124. package/src/components/add-new-template-legacy/add-custom-template-modal-content.jsx +0 -306
  125. package/src/components/add-new-template-legacy/index.jsx +0 -440
  126. package/src/components/add-new-template-legacy/utils.js +0 -757
  127. package/src/components/page-templates/hooks.js +0 -93
  128. package/src/components/page-templates/index-legacy.jsx +0 -143
  129. package/src/components/page-templates/view-utils.js +0 -50
  130. package/src/components/sidebar-navigation-screen-templates-browse/content-legacy.jsx +0 -52
  131. package/src/components/sidebar-navigation-screen-templates-browse/style.scss +0 -6
@@ -1,391 +0,0 @@
1
- // packages/edit-site/src/components/add-new-template-legacy/index.jsx
2
- import clsx from "clsx";
3
- import {
4
- Button,
5
- Modal,
6
- __experimentalGrid as Grid,
7
- __experimentalText as WCText,
8
- __experimentalVStack as VStack,
9
- Flex,
10
- Icon as WCIcon
11
- } from "@wordpress/components";
12
- import { decodeEntities } from "@wordpress/html-entities";
13
- import { useState, memo, useRef, useEffect } from "@wordpress/element";
14
- import { useSelect, useDispatch } from "@wordpress/data";
15
- import { store as coreStore } from "@wordpress/core-data";
16
- import { useViewportMatch } from "@wordpress/compose";
17
- import {
18
- archive,
19
- blockMeta,
20
- calendar,
21
- category,
22
- commentAuthorAvatar,
23
- pencil,
24
- home,
25
- layout,
26
- list,
27
- media,
28
- notFound,
29
- page,
30
- pin,
31
- verse,
32
- search,
33
- tag
34
- } from "@wordpress/icons";
35
- import { __, sprintf } from "@wordpress/i18n";
36
- import { store as noticesStore } from "@wordpress/notices";
37
- import { privateApis as routerPrivateApis } from "@wordpress/router";
38
- import { focus } from "@wordpress/dom";
39
- import { TEMPLATE_POST_TYPE } from "../../utils/constants.mjs";
40
- import AddCustomTemplateModalContent from "./add-custom-template-modal-content.mjs";
41
- import {
42
- useExistingTemplates,
43
- useDefaultTemplateTypes,
44
- useTaxonomiesMenuItems,
45
- usePostTypeMenuItems,
46
- useAuthorMenuItem,
47
- usePostTypeArchiveMenuItems
48
- } from "./utils.mjs";
49
- import AddCustomGenericTemplateModalContent from "./add-custom-generic-template-modal-content.mjs";
50
- import { unlock } from "../../lock-unlock.mjs";
51
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
52
- var { useHistory } = unlock(routerPrivateApis);
53
- var DEFAULT_TEMPLATE_SLUGS = [
54
- "front-page",
55
- "home",
56
- "single",
57
- "page",
58
- "index",
59
- "archive",
60
- "author",
61
- "category",
62
- "date",
63
- "tag",
64
- "search",
65
- "404"
66
- ];
67
- var TEMPLATE_ICONS = {
68
- "front-page": home,
69
- home: verse,
70
- single: pin,
71
- page,
72
- archive,
73
- search,
74
- 404: notFound,
75
- index: list,
76
- category,
77
- author: commentAuthorAvatar,
78
- taxonomy: blockMeta,
79
- date: calendar,
80
- tag,
81
- attachment: media
82
- };
83
- function TemplateListItem({
84
- title,
85
- direction,
86
- className,
87
- description,
88
- icon,
89
- onClick,
90
- children
91
- }) {
92
- return /* @__PURE__ */ jsx(
93
- Button,
94
- {
95
- __next40pxDefaultSize: true,
96
- className,
97
- onClick,
98
- label: description,
99
- showTooltip: !!description,
100
- children: /* @__PURE__ */ jsxs(
101
- Flex,
102
- {
103
- as: "span",
104
- spacing: 2,
105
- align: "center",
106
- justify: "center",
107
- style: { width: "100%" },
108
- direction,
109
- children: [
110
- /* @__PURE__ */ jsx("div", { className: "edit-site-add-new-template__template-icon", children: /* @__PURE__ */ jsx(WCIcon, { icon }) }),
111
- /* @__PURE__ */ jsxs(
112
- VStack,
113
- {
114
- className: "edit-site-add-new-template__template-name",
115
- alignment: "center",
116
- spacing: 0,
117
- children: [
118
- /* @__PURE__ */ jsx(
119
- WCText,
120
- {
121
- align: "center",
122
- weight: "var(--wpds-typography-font-weight-emphasis, 600)",
123
- lineHeight: 1.53846153846,
124
- children: title
125
- }
126
- ),
127
- children
128
- ]
129
- }
130
- )
131
- ]
132
- }
133
- )
134
- }
135
- );
136
- }
137
- var modalContentMap = {
138
- templatesList: 1,
139
- customTemplate: 2,
140
- customGenericTemplate: 3
141
- };
142
- function NewTemplateModal({ onClose }) {
143
- const [modalContent, setModalContent] = useState(
144
- modalContentMap.templatesList
145
- );
146
- const [entityForSuggestions, setEntityForSuggestions] = useState({});
147
- const [isSubmitting, setIsSubmitting] = useState(false);
148
- const missingTemplates = useMissingTemplates(
149
- setEntityForSuggestions,
150
- () => setModalContent(modalContentMap.customTemplate)
151
- );
152
- const history = useHistory();
153
- const { saveEntityRecord } = useDispatch(coreStore);
154
- const { createErrorNotice, createSuccessNotice } = useDispatch(noticesStore);
155
- const containerRef = useRef(null);
156
- const isMobile = useViewportMatch("medium", "<");
157
- const homeUrl = useSelect((select) => {
158
- return select(coreStore).getEntityRecord("root", "__unstableBase")?.home;
159
- }, []);
160
- const TEMPLATE_SHORT_DESCRIPTIONS = {
161
- "front-page": homeUrl,
162
- date: sprintf(
163
- // translators: %s: The homepage url.
164
- __("E.g. %s"),
165
- homeUrl + "/" + (/* @__PURE__ */ new Date()).getFullYear()
166
- )
167
- };
168
- useEffect(() => {
169
- if (containerRef.current && modalContent === modalContentMap.templatesList) {
170
- const [firstFocusable] = focus.focusable.find(
171
- containerRef.current
172
- );
173
- firstFocusable?.focus();
174
- }
175
- }, [modalContent]);
176
- async function createTemplate(template, isWPSuggestion = true) {
177
- if (isSubmitting) {
178
- return;
179
- }
180
- setIsSubmitting(true);
181
- try {
182
- const { title, description, slug } = template;
183
- const newTemplate = await saveEntityRecord(
184
- "postType",
185
- TEMPLATE_POST_TYPE,
186
- {
187
- description,
188
- // Slugs need to be strings, so this is for template `404`
189
- slug: slug.toString(),
190
- status: "publish",
191
- title,
192
- // This adds a post meta field in template that is part of `is_custom` value calculation.
193
- is_wp_suggestion: isWPSuggestion
194
- },
195
- { throwOnError: true }
196
- );
197
- history.navigate(
198
- `/${TEMPLATE_POST_TYPE}/${newTemplate.id}?canvas=edit`
199
- );
200
- createSuccessNotice(
201
- sprintf(
202
- // translators: %s: Title of the created post or template, e.g: "Hello world".
203
- __('"%s" successfully created.'),
204
- decodeEntities(newTemplate.title?.rendered || title) || __("(no title)")
205
- ),
206
- {
207
- type: "snackbar"
208
- }
209
- );
210
- } catch (error) {
211
- const errorMessage = error.message && error.code !== "unknown_error" ? error.message : __("An error occurred while creating the template.");
212
- createErrorNotice(errorMessage, {
213
- type: "snackbar"
214
- });
215
- } finally {
216
- setIsSubmitting(false);
217
- }
218
- }
219
- const onModalClose = () => {
220
- onClose();
221
- setModalContent(modalContentMap.templatesList);
222
- };
223
- let modalTitle = __("Add template");
224
- if (modalContent === modalContentMap.customTemplate) {
225
- modalTitle = sprintf(
226
- // translators: %s: Name of the post type e.g: "Post".
227
- __("Add template: %s"),
228
- entityForSuggestions.labels.singular_name
229
- );
230
- } else if (modalContent === modalContentMap.customGenericTemplate) {
231
- modalTitle = __("Create custom template");
232
- }
233
- return /* @__PURE__ */ jsxs(
234
- Modal,
235
- {
236
- title: modalTitle,
237
- className: clsx("edit-site-add-new-template__modal", {
238
- "edit-site-add-new-template__modal_template_list": modalContent === modalContentMap.templatesList,
239
- "edit-site-custom-template-modal": modalContent === modalContentMap.customTemplate
240
- }),
241
- onRequestClose: onModalClose,
242
- overlayClassName: modalContent === modalContentMap.customGenericTemplate ? "edit-site-custom-generic-template__modal" : void 0,
243
- ref: containerRef,
244
- children: [
245
- modalContent === modalContentMap.templatesList && /* @__PURE__ */ jsxs(
246
- Grid,
247
- {
248
- columns: isMobile ? 2 : 3,
249
- gap: 4,
250
- align: "flex-start",
251
- justify: "center",
252
- className: "edit-site-add-new-template__template-list__contents",
253
- children: [
254
- /* @__PURE__ */ jsx(Flex, { className: "edit-site-add-new-template__template-list__prompt", children: __(
255
- "Select what the new template should apply to:"
256
- ) }),
257
- missingTemplates.map((template) => {
258
- const { title, slug, onClick } = template;
259
- return /* @__PURE__ */ jsx(
260
- TemplateListItem,
261
- {
262
- title,
263
- direction: "column",
264
- className: "edit-site-add-new-template__template-button",
265
- description: TEMPLATE_SHORT_DESCRIPTIONS[slug],
266
- icon: TEMPLATE_ICONS[slug] || layout,
267
- onClick: () => onClick ? onClick(template) : createTemplate(template)
268
- },
269
- slug
270
- );
271
- }),
272
- /* @__PURE__ */ jsx(
273
- TemplateListItem,
274
- {
275
- title: __("Custom template"),
276
- direction: "row",
277
- className: "edit-site-add-new-template__custom-template-button",
278
- icon: pencil,
279
- onClick: () => setModalContent(
280
- modalContentMap.customGenericTemplate
281
- ),
282
- children: /* @__PURE__ */ jsx(
283
- WCText,
284
- {
285
- lineHeight: 1.53846153846,
286
- children: __(
287
- "A custom template can be manually applied to any post or page."
288
- )
289
- }
290
- )
291
- }
292
- )
293
- ]
294
- }
295
- ),
296
- modalContent === modalContentMap.customTemplate && /* @__PURE__ */ jsx(
297
- AddCustomTemplateModalContent,
298
- {
299
- onSelect: createTemplate,
300
- entityForSuggestions,
301
- onBack: () => setModalContent(modalContentMap.templatesList),
302
- containerRef
303
- }
304
- ),
305
- modalContent === modalContentMap.customGenericTemplate && /* @__PURE__ */ jsx(
306
- AddCustomGenericTemplateModalContent,
307
- {
308
- createTemplate,
309
- onBack: () => setModalContent(modalContentMap.templatesList)
310
- }
311
- )
312
- ]
313
- }
314
- );
315
- }
316
- function NewTemplate() {
317
- const [showModal, setShowModal] = useState(false);
318
- const { postType } = useSelect((select) => {
319
- const { getPostType } = select(coreStore);
320
- return {
321
- postType: getPostType(TEMPLATE_POST_TYPE)
322
- };
323
- }, []);
324
- if (!postType) {
325
- return null;
326
- }
327
- return /* @__PURE__ */ jsxs(Fragment, { children: [
328
- /* @__PURE__ */ jsx(
329
- Button,
330
- {
331
- variant: "primary",
332
- onClick: () => setShowModal(true),
333
- label: postType.labels.add_new_item,
334
- size: "compact",
335
- __next40pxDefaultSize: true,
336
- children: postType.labels.add_new_item
337
- }
338
- ),
339
- showModal && /* @__PURE__ */ jsx(NewTemplateModal, { onClose: () => setShowModal(false) })
340
- ] });
341
- }
342
- function useMissingTemplates(setEntityForSuggestions, onClick) {
343
- const existingTemplates = useExistingTemplates();
344
- const defaultTemplateTypes = useDefaultTemplateTypes();
345
- const existingTemplateSlugs = (existingTemplates || []).map(
346
- ({ slug }) => slug
347
- );
348
- const missingDefaultTemplates = (defaultTemplateTypes || []).filter(
349
- (template) => DEFAULT_TEMPLATE_SLUGS.includes(template.slug) && !existingTemplateSlugs.includes(template.slug)
350
- );
351
- const onClickMenuItem = (_entityForSuggestions) => {
352
- onClick?.();
353
- setEntityForSuggestions(_entityForSuggestions);
354
- };
355
- const enhancedMissingDefaultTemplateTypes = [...missingDefaultTemplates];
356
- const { defaultTaxonomiesMenuItems, taxonomiesMenuItems } = useTaxonomiesMenuItems(onClickMenuItem);
357
- const { defaultPostTypesMenuItems, postTypesMenuItems } = usePostTypeMenuItems(onClickMenuItem);
358
- const authorMenuItem = useAuthorMenuItem(onClickMenuItem);
359
- [
360
- ...defaultTaxonomiesMenuItems,
361
- ...defaultPostTypesMenuItems,
362
- authorMenuItem
363
- ].forEach((menuItem) => {
364
- if (!menuItem) {
365
- return;
366
- }
367
- const matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(
368
- (template) => template.slug === menuItem.slug
369
- );
370
- if (matchIndex > -1) {
371
- enhancedMissingDefaultTemplateTypes[matchIndex] = menuItem;
372
- } else {
373
- enhancedMissingDefaultTemplateTypes.push(menuItem);
374
- }
375
- });
376
- enhancedMissingDefaultTemplateTypes?.sort((template1, template2) => {
377
- return DEFAULT_TEMPLATE_SLUGS.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS.indexOf(template2.slug);
378
- });
379
- const missingTemplates = [
380
- ...enhancedMissingDefaultTemplateTypes,
381
- ...usePostTypeArchiveMenuItems(),
382
- ...postTypesMenuItems,
383
- ...taxonomiesMenuItems
384
- ];
385
- return missingTemplates;
386
- }
387
- var add_new_template_legacy_default = memo(NewTemplate);
388
- export {
389
- add_new_template_legacy_default as default
390
- };
391
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/add-new-template-legacy/index.jsx"],
4
- "sourcesContent": ["import clsx from 'clsx';\nimport {\n\tButton,\n\tModal,\n\t__experimentalGrid as Grid,\n\t__experimentalText as WCText,\n\t__experimentalVStack as VStack,\n\tFlex,\n\tIcon as WCIcon,\n} from '@wordpress/components';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, memo, useRef, useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tarchive,\n\tblockMeta,\n\tcalendar,\n\tcategory,\n\tcommentAuthorAvatar,\n\tpencil,\n\thome,\n\tlayout,\n\tlist,\n\tmedia,\n\tnotFound,\n\tpage,\n\tpin,\n\tverse,\n\tsearch,\n\ttag,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { focus } from '@wordpress/dom';\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\nimport AddCustomTemplateModalContent from './add-custom-template-modal-content';\nimport {\n\tuseExistingTemplates,\n\tuseDefaultTemplateTypes,\n\tuseTaxonomiesMenuItems,\n\tusePostTypeMenuItems,\n\tuseAuthorMenuItem,\n\tusePostTypeArchiveMenuItems,\n} from './utils';\nimport AddCustomGenericTemplateModalContent from './add-custom-generic-template-modal-content';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nconst DEFAULT_TEMPLATE_SLUGS = [\n\t'front-page',\n\t'home',\n\t'single',\n\t'page',\n\t'index',\n\t'archive',\n\t'author',\n\t'category',\n\t'date',\n\t'tag',\n\t'search',\n\t'404',\n];\n\nconst TEMPLATE_ICONS = {\n\t'front-page': home,\n\thome: verse,\n\tsingle: pin,\n\tpage,\n\tarchive,\n\tsearch,\n\t404: notFound,\n\tindex: list,\n\tcategory,\n\tauthor: commentAuthorAvatar,\n\ttaxonomy: blockMeta,\n\tdate: calendar,\n\ttag,\n\tattachment: media,\n};\n\nfunction TemplateListItem( {\n\ttitle,\n\tdirection,\n\tclassName,\n\tdescription,\n\ticon,\n\tonClick,\n\tchildren,\n} ) {\n\treturn (\n\t\t<Button\n\t\t\t__next40pxDefaultSize\n\t\t\tclassName={ className }\n\t\t\tonClick={ onClick }\n\t\t\tlabel={ description }\n\t\t\tshowTooltip={ !! description }\n\t\t>\n\t\t\t<Flex\n\t\t\t\tas=\"span\"\n\t\t\t\tspacing={ 2 }\n\t\t\t\talign=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\tdirection={ direction }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-add-new-template__template-icon\">\n\t\t\t\t\t<WCIcon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-name\"\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tspacing={ 0 }\n\t\t\t\t>\n\t\t\t\t\t<WCText\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tweight=\"var(--wpds-typography-font-weight-emphasis, 600)\"\n\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</WCText>\n\t\t\t\t\t{ children }\n\t\t\t\t</VStack>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n\nconst modalContentMap = {\n\ttemplatesList: 1,\n\tcustomTemplate: 2,\n\tcustomGenericTemplate: 3,\n};\n\nfunction NewTemplateModal( { onClose } ) {\n\tconst [ modalContent, setModalContent ] = useState(\n\t\tmodalContentMap.templatesList\n\t);\n\tconst [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );\n\tconst [ isSubmitting, setIsSubmitting ] = useState( false );\n\tconst missingTemplates = useMissingTemplates( setEntityForSuggestions, () =>\n\t\tsetModalContent( modalContentMap.customTemplate )\n\t);\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst containerRef = useRef( null );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst homeUrl = useSelect( ( select ) => {\n\t\t// Site index.\n\t\treturn select( coreStore ).getEntityRecord( 'root', '__unstableBase' )\n\t\t\t?.home;\n\t}, [] );\n\n\tconst TEMPLATE_SHORT_DESCRIPTIONS = {\n\t\t'front-page': homeUrl,\n\t\tdate: sprintf(\n\t\t\t// translators: %s: The homepage url.\n\t\t\t__( 'E.g. %s' ),\n\t\t\thomeUrl + '/' + new Date().getFullYear()\n\t\t),\n\t};\n\n\tuseEffect( () => {\n\t\t// Focus the first focusable element when component mounts or UI changes\n\t\t// We don't want to focus on the other modals because they have their own focus management.\n\t\tif (\n\t\t\tcontainerRef.current &&\n\t\t\tmodalContent === modalContentMap.templatesList\n\t\t) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ modalContent ] );\n\n\tasync function createTemplate( template, isWPSuggestion = true ) {\n\t\tif ( isSubmitting ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsSubmitting( true );\n\t\ttry {\n\t\t\tconst { title, description, slug } = template;\n\t\t\tconst newTemplate = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tdescription,\n\t\t\t\t\t// Slugs need to be strings, so this is for template `404`\n\t\t\t\t\tslug: slug.toString(),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\t// This adds a post meta field in template that is part of `is_custom` value calculation.\n\t\t\t\t\tis_wp_suggestion: isWPSuggestion,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Navigate to the created template editor.\n\t\t\thistory.navigate(\n\t\t\t\t`/${ TEMPLATE_POST_TYPE }/${ newTemplate.id }?canvas=edit`\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\tdecodeEntities( newTemplate.title?.rendered || title ) ||\n\t\t\t\t\t\t__( '(no title)' )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the template.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSubmitting( false );\n\t\t}\n\t}\n\tconst onModalClose = () => {\n\t\tonClose();\n\t\tsetModalContent( modalContentMap.templatesList );\n\t};\n\n\tlet modalTitle = __( 'Add template' );\n\tif ( modalContent === modalContentMap.customTemplate ) {\n\t\tmodalTitle = sprintf(\n\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t__( 'Add template: %s' ),\n\t\t\tentityForSuggestions.labels.singular_name\n\t\t);\n\t} else if ( modalContent === modalContentMap.customGenericTemplate ) {\n\t\tmodalTitle = __( 'Create custom template' );\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle }\n\t\t\tclassName={ clsx( 'edit-site-add-new-template__modal', {\n\t\t\t\t'edit-site-add-new-template__modal_template_list':\n\t\t\t\t\tmodalContent === modalContentMap.templatesList,\n\t\t\t\t'edit-site-custom-template-modal':\n\t\t\t\t\tmodalContent === modalContentMap.customTemplate,\n\t\t\t} ) }\n\t\t\tonRequestClose={ onModalClose }\n\t\t\toverlayClassName={\n\t\t\t\tmodalContent === modalContentMap.customGenericTemplate\n\t\t\t\t\t? 'edit-site-custom-generic-template__modal'\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tref={ containerRef }\n\t\t>\n\t\t\t{ modalContent === modalContentMap.templatesList && (\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns={ isMobile ? 2 : 3 }\n\t\t\t\t\tgap={ 4 }\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-list__contents\"\n\t\t\t\t>\n\t\t\t\t\t<Flex className=\"edit-site-add-new-template__template-list__prompt\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select what the new template should apply to:'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{ missingTemplates.map( ( template ) => {\n\t\t\t\t\t\tconst { title, slug, onClick } = template;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tclassName=\"edit-site-add-new-template__template-button\"\n\t\t\t\t\t\t\t\tdescription={\n\t\t\t\t\t\t\t\t\tTEMPLATE_SHORT_DESCRIPTIONS[ slug ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ticon={ TEMPLATE_ICONS[ slug ] || layout }\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tonClick\n\t\t\t\t\t\t\t\t\t\t? onClick( template )\n\t\t\t\t\t\t\t\t\t\t: createTemplate( template )\n\t\t\t\t\t\t\t\t}\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\t<TemplateListItem\n\t\t\t\t\t\ttitle={ __( 'Custom template' ) }\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"edit-site-add-new-template__custom-template-button\"\n\t\t\t\t\t\ticon={ pencil }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetModalContent(\n\t\t\t\t\t\t\t\tmodalContentMap.customGenericTemplate\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\t\t<WCText\n\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'A custom template can be manually applied to any post or page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</WCText>\n\t\t\t\t\t</TemplateListItem>\n\t\t\t\t</Grid>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customTemplate && (\n\t\t\t\t<AddCustomTemplateModalContent\n\t\t\t\t\tonSelect={ createTemplate }\n\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customGenericTemplate && (\n\t\t\t\t<AddCustomGenericTemplateModalContent\n\t\t\t\t\tcreateTemplate={ createTemplate }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Modal>\n\t);\n}\n\nfunction NewTemplate() {\n\tconst [ showModal, setShowModal ] = useState( false );\n\n\tconst { postType } = useSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpostType: getPostType( TEMPLATE_POST_TYPE ),\n\t\t};\n\t}, [] );\n\n\tif ( ! postType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ () => setShowModal( true ) }\n\t\t\t\tlabel={ postType.labels.add_new_item }\n\t\t\t\tsize=\"compact\"\n\t\t\t\t__next40pxDefaultSize\n\t\t\t>\n\t\t\t\t{ postType.labels.add_new_item }\n\t\t\t</Button>\n\t\t\t{ showModal && (\n\t\t\t\t<NewTemplateModal onClose={ () => setShowModal( false ) } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useMissingTemplates( setEntityForSuggestions, onClick ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst missingDefaultTemplates = ( defaultTemplateTypes || [] ).filter(\n\t\t( template ) =>\n\t\t\tDEFAULT_TEMPLATE_SLUGS.includes( template.slug ) &&\n\t\t\t! existingTemplateSlugs.includes( template.slug )\n\t);\n\tconst onClickMenuItem = ( _entityForSuggestions ) => {\n\t\tonClick?.();\n\t\tsetEntityForSuggestions( _entityForSuggestions );\n\t};\n\t// We need to replace existing default template types with\n\t// the create specific template functionality. The original\n\t// info (title, description, etc.) is preserved in the\n\t// used hooks.\n\tconst enhancedMissingDefaultTemplateTypes = [ ...missingDefaultTemplates ];\n\tconst { defaultTaxonomiesMenuItems, taxonomiesMenuItems } =\n\t\tuseTaxonomiesMenuItems( onClickMenuItem );\n\tconst { defaultPostTypesMenuItems, postTypesMenuItems } =\n\t\tusePostTypeMenuItems( onClickMenuItem );\n\n\tconst authorMenuItem = useAuthorMenuItem( onClickMenuItem );\n\t[\n\t\t...defaultTaxonomiesMenuItems,\n\t\t...defaultPostTypesMenuItems,\n\t\tauthorMenuItem,\n\t].forEach( ( menuItem ) => {\n\t\tif ( ! menuItem ) {\n\t\t\treturn;\n\t\t}\n\t\tconst matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(\n\t\t\t( template ) => template.slug === menuItem.slug\n\t\t);\n\t\t// Some default template types might have been filtered above from\n\t\t// `missingDefaultTemplates` because they only check for the general\n\t\t// template. So here we either replace or append the item, augmented\n\t\t// with the check if it has available specific item to create a\n\t\t// template for.\n\t\tif ( matchIndex > -1 ) {\n\t\t\tenhancedMissingDefaultTemplateTypes[ matchIndex ] = menuItem;\n\t\t} else {\n\t\t\tenhancedMissingDefaultTemplateTypes.push( menuItem );\n\t\t}\n\t} );\n\t// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.\n\tenhancedMissingDefaultTemplateTypes?.sort( ( template1, template2 ) => {\n\t\treturn (\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template1.slug ) -\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template2.slug )\n\t\t);\n\t} );\n\tconst missingTemplates = [\n\t\t...enhancedMissingDefaultTemplateTypes,\n\t\t...usePostTypeArchiveMenuItems(),\n\t\t...postTypesMenuItems,\n\t\t...taxonomiesMenuItems,\n\t];\n\treturn missingTemplates;\n}\n\nexport default memo( NewTemplate );\n"],
5
- "mappings": "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",
6
- "names": []
7
- }