@wordpress/edit-post 6.7.0 → 6.10.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 (228) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/build/components/block-manager/category.js.map +1 -1
  4. package/build/components/block-manager/index.js +12 -4
  5. package/build/components/block-manager/index.js.map +1 -1
  6. package/build/components/device-preview/index.js.map +1 -1
  7. package/build/components/editor-initialization/listener-hooks.js.map +1 -1
  8. package/build/components/header/fullscreen-mode-close/index.js.map +1 -1
  9. package/build/components/header/header-toolbar/index.js.map +1 -1
  10. package/build/components/header/index.js.map +1 -1
  11. package/build/components/header/mode-switcher/index.js.map +1 -1
  12. package/build/components/header/post-publish-button-or-toggle.js.map +1 -1
  13. package/build/components/header/template-title/delete-template.js.map +1 -1
  14. package/build/components/header/template-title/edit-template-title.js +11 -2
  15. package/build/components/header/template-title/edit-template-title.js.map +1 -1
  16. package/build/components/header/template-title/index.js.map +1 -1
  17. package/build/components/header/tools-more-menu-group/index.js.map +1 -1
  18. package/build/components/keyboard-shortcut-help-modal/config.js +12 -0
  19. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  20. package/build/components/keyboard-shortcut-help-modal/index.js +1 -3
  21. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  22. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  23. package/build/components/layout/actions-panel.js.map +1 -1
  24. package/build/components/layout/index.js.map +1 -1
  25. package/build/components/layout/index.native.js.map +1 -1
  26. package/build/components/preferences-modal/index.js +3 -26
  27. package/build/components/preferences-modal/index.js.map +1 -1
  28. package/build/components/preferences-modal/options/enable-custom-fields.js.map +1 -1
  29. package/build/components/preferences-modal/options/enable-panel.js.map +1 -1
  30. package/build/components/preferences-modal/options/enable-publish-sidebar.js.map +1 -1
  31. package/build/components/secondary-sidebar/inserter-sidebar.js.map +1 -1
  32. package/build/components/sidebar/discussion-panel/index.js.map +1 -1
  33. package/build/components/sidebar/featured-image/index.js.map +1 -1
  34. package/build/components/sidebar/page-attributes/index.js.map +1 -1
  35. package/build/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  36. package/build/components/sidebar/plugin-post-status-info/index.js +2 -2
  37. package/build/components/sidebar/plugin-post-status-info/index.js.map +1 -1
  38. package/build/components/sidebar/plugin-sidebar/index.js.map +1 -1
  39. package/build/components/sidebar/post-excerpt/index.js.map +1 -1
  40. package/build/components/sidebar/post-format/index.js +3 -1
  41. package/build/components/sidebar/post-format/index.js.map +1 -1
  42. package/build/components/sidebar/post-schedule/index.js +28 -12
  43. package/build/components/sidebar/post-schedule/index.js.map +1 -1
  44. package/build/components/sidebar/post-slug/index.js +3 -1
  45. package/build/components/sidebar/post-slug/index.js.map +1 -1
  46. package/build/components/sidebar/post-status/index.js +6 -2
  47. package/build/components/sidebar/post-status/index.js.map +1 -1
  48. package/build/components/sidebar/post-template/create-modal.js +116 -0
  49. package/build/components/sidebar/post-template/create-modal.js.map +1 -0
  50. package/build/components/sidebar/post-template/form.js +123 -0
  51. package/build/components/sidebar/post-template/form.js.map +1 -0
  52. package/build/components/sidebar/post-template/index.js +124 -0
  53. package/build/components/sidebar/post-template/index.js.map +1 -0
  54. package/build/components/sidebar/post-url/index.js +68 -0
  55. package/build/components/sidebar/post-url/index.js.map +1 -0
  56. package/build/components/sidebar/post-visibility/index.js +21 -6
  57. package/build/components/sidebar/post-visibility/index.js.map +1 -1
  58. package/build/components/sidebar/settings-sidebar/index.js +2 -6
  59. package/build/components/sidebar/settings-sidebar/index.js.map +1 -1
  60. package/build/components/start-page-options/index.js +31 -13
  61. package/build/components/start-page-options/index.js.map +1 -1
  62. package/build/components/visual-editor/block-inspector-button.js +3 -7
  63. package/build/components/visual-editor/block-inspector-button.js.map +1 -1
  64. package/build/components/visual-editor/index.js +4 -2
  65. package/build/components/visual-editor/index.js.map +1 -1
  66. package/build/editor.js +1 -1
  67. package/build/editor.js.map +1 -1
  68. package/build/editor.native.js +1 -1
  69. package/build/editor.native.js.map +1 -1
  70. package/build/plugins/copy-content-menu-item/index.js +1 -1
  71. package/build/plugins/copy-content-menu-item/index.js.map +1 -1
  72. package/build/store/actions.js.map +1 -1
  73. package/build/store/selectors.js +8 -8
  74. package/build/store/selectors.js.map +1 -1
  75. package/build-module/components/block-manager/category.js.map +1 -1
  76. package/build-module/components/block-manager/index.js +13 -5
  77. package/build-module/components/block-manager/index.js.map +1 -1
  78. package/build-module/components/device-preview/index.js.map +1 -1
  79. package/build-module/components/editor-initialization/listener-hooks.js.map +1 -1
  80. package/build-module/components/header/fullscreen-mode-close/index.js.map +1 -1
  81. package/build-module/components/header/header-toolbar/index.js.map +1 -1
  82. package/build-module/components/header/index.js.map +1 -1
  83. package/build-module/components/header/mode-switcher/index.js.map +1 -1
  84. package/build-module/components/header/post-publish-button-or-toggle.js.map +1 -1
  85. package/build-module/components/header/template-title/delete-template.js.map +1 -1
  86. package/build-module/components/header/template-title/edit-template-title.js +12 -2
  87. package/build-module/components/header/template-title/edit-template-title.js.map +1 -1
  88. package/build-module/components/header/template-title/index.js.map +1 -1
  89. package/build-module/components/header/tools-more-menu-group/index.js.map +1 -1
  90. package/build-module/components/keyboard-shortcut-help-modal/config.js +12 -0
  91. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  92. package/build-module/components/keyboard-shortcut-help-modal/index.js +1 -2
  93. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  94. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  95. package/build-module/components/layout/actions-panel.js.map +1 -1
  96. package/build-module/components/layout/index.js.map +1 -1
  97. package/build-module/components/layout/index.native.js.map +1 -1
  98. package/build-module/components/preferences-modal/index.js +3 -25
  99. package/build-module/components/preferences-modal/index.js.map +1 -1
  100. package/build-module/components/preferences-modal/options/enable-custom-fields.js.map +1 -1
  101. package/build-module/components/preferences-modal/options/enable-panel.js.map +1 -1
  102. package/build-module/components/preferences-modal/options/enable-publish-sidebar.js.map +1 -1
  103. package/build-module/components/secondary-sidebar/inserter-sidebar.js.map +1 -1
  104. package/build-module/components/sidebar/discussion-panel/index.js.map +1 -1
  105. package/build-module/components/sidebar/featured-image/index.js.map +1 -1
  106. package/build-module/components/sidebar/page-attributes/index.js.map +1 -1
  107. package/build-module/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  108. package/build-module/components/sidebar/plugin-post-status-info/index.js +2 -2
  109. package/build-module/components/sidebar/plugin-post-status-info/index.js.map +1 -1
  110. package/build-module/components/sidebar/plugin-sidebar/index.js.map +1 -1
  111. package/build-module/components/sidebar/post-excerpt/index.js.map +1 -1
  112. package/build-module/components/sidebar/post-format/index.js +3 -1
  113. package/build-module/components/sidebar/post-format/index.js.map +1 -1
  114. package/build-module/components/sidebar/post-schedule/index.js +32 -13
  115. package/build-module/components/sidebar/post-schedule/index.js.map +1 -1
  116. package/build-module/components/sidebar/post-slug/index.js +3 -1
  117. package/build-module/components/sidebar/post-slug/index.js.map +1 -1
  118. package/build-module/components/sidebar/post-status/index.js +4 -2
  119. package/build-module/components/sidebar/post-status/index.js.map +1 -1
  120. package/build-module/components/sidebar/post-template/create-modal.js +104 -0
  121. package/build-module/components/sidebar/post-template/create-modal.js.map +1 -0
  122. package/build-module/components/sidebar/post-template/form.js +106 -0
  123. package/build-module/components/sidebar/post-template/form.js.map +1 -0
  124. package/build-module/components/sidebar/post-template/index.js +110 -0
  125. package/build-module/components/sidebar/post-template/index.js.map +1 -0
  126. package/build-module/components/sidebar/post-url/index.js +59 -0
  127. package/build-module/components/sidebar/post-url/index.js.map +1 -0
  128. package/build-module/components/sidebar/post-visibility/index.js +24 -8
  129. package/build-module/components/sidebar/post-visibility/index.js.map +1 -1
  130. package/build-module/components/sidebar/settings-sidebar/index.js +2 -4
  131. package/build-module/components/sidebar/settings-sidebar/index.js.map +1 -1
  132. package/build-module/components/start-page-options/index.js +32 -14
  133. package/build-module/components/start-page-options/index.js.map +1 -1
  134. package/build-module/components/visual-editor/block-inspector-button.js +3 -5
  135. package/build-module/components/visual-editor/block-inspector-button.js.map +1 -1
  136. package/build-module/components/visual-editor/index.js +4 -2
  137. package/build-module/components/visual-editor/index.js.map +1 -1
  138. package/build-module/editor.js +2 -2
  139. package/build-module/editor.js.map +1 -1
  140. package/build-module/editor.native.js +2 -2
  141. package/build-module/editor.native.js.map +1 -1
  142. package/build-module/plugins/copy-content-menu-item/index.js +1 -1
  143. package/build-module/plugins/copy-content-menu-item/index.js.map +1 -1
  144. package/build-module/store/actions.js.map +1 -1
  145. package/build-module/store/selectors.js +8 -7
  146. package/build-module/store/selectors.js.map +1 -1
  147. package/build-style/style-rtl.css +85 -87
  148. package/build-style/style.css +84 -90
  149. package/package.json +27 -27
  150. package/src/components/block-manager/category.js +2 -2
  151. package/src/components/block-manager/index.js +15 -4
  152. package/src/components/device-preview/index.js +4 -6
  153. package/src/components/editor-initialization/listener-hooks.js +2 -3
  154. package/src/components/header/fullscreen-mode-close/index.js +2 -3
  155. package/src/components/header/header-toolbar/index.js +6 -11
  156. package/src/components/header/index.js +6 -9
  157. package/src/components/header/mode-switcher/index.js +4 -4
  158. package/src/components/header/post-publish-button-or-toggle.js +4 -6
  159. package/src/components/header/template-title/delete-template.js +2 -3
  160. package/src/components/header/template-title/edit-template-title.js +11 -1
  161. package/src/components/header/template-title/index.js +2 -3
  162. package/src/components/header/tools-more-menu-group/index.js +2 -3
  163. package/src/components/keyboard-shortcut-help-modal/config.js +8 -0
  164. package/src/components/keyboard-shortcut-help-modal/index.js +1 -2
  165. package/src/components/keyboard-shortcut-help-modal/style.scss +0 -5
  166. package/src/components/keyboard-shortcut-help-modal/test/__snapshots__/index.js.snap +14 -0
  167. package/src/components/keyboard-shortcut-help-modal/test/index.js +2 -1
  168. package/src/components/keyboard-shortcuts/index.js +4 -8
  169. package/src/components/layout/actions-panel.js +6 -9
  170. package/src/components/layout/index.js +12 -21
  171. package/src/components/layout/index.native.js +4 -5
  172. package/src/components/preferences-modal/index.js +5 -23
  173. package/src/components/preferences-modal/options/enable-custom-fields.js +2 -2
  174. package/src/components/preferences-modal/options/enable-panel.js +2 -3
  175. package/src/components/preferences-modal/options/enable-publish-sidebar.js +2 -3
  176. package/src/components/preferences-modal/test/index.js +3 -3
  177. package/src/components/secondary-sidebar/inserter-sidebar.js +2 -3
  178. package/src/components/sidebar/discussion-panel/index.js +2 -3
  179. package/src/components/sidebar/featured-image/index.js +2 -3
  180. package/src/components/sidebar/page-attributes/index.js +2 -3
  181. package/src/components/sidebar/plugin-document-setting-panel/index.js +2 -3
  182. package/src/components/sidebar/plugin-post-status-info/index.js +2 -2
  183. package/src/components/sidebar/plugin-sidebar/index.js +2 -3
  184. package/src/components/sidebar/post-author/style.scss +4 -10
  185. package/src/components/sidebar/post-excerpt/index.js +2 -3
  186. package/src/components/sidebar/post-format/index.js +1 -1
  187. package/src/components/sidebar/post-format/style.scss +5 -0
  188. package/src/components/sidebar/post-schedule/index.js +27 -16
  189. package/src/components/sidebar/post-schedule/style.scss +17 -4
  190. package/src/components/sidebar/post-slug/index.js +1 -1
  191. package/src/components/sidebar/post-slug/style.scss +4 -3
  192. package/src/components/sidebar/post-status/index.js +8 -5
  193. package/src/components/sidebar/post-template/create-modal.js +146 -0
  194. package/src/components/sidebar/post-template/form.js +143 -0
  195. package/src/components/sidebar/post-template/index.js +102 -0
  196. package/src/components/sidebar/post-template/style.scss +36 -0
  197. package/src/components/sidebar/post-url/index.js +51 -0
  198. package/src/components/sidebar/post-url/style.scss +23 -0
  199. package/src/components/sidebar/post-visibility/index.js +22 -8
  200. package/src/components/sidebar/post-visibility/style.scss +5 -4
  201. package/src/components/sidebar/settings-sidebar/index.js +1 -5
  202. package/src/components/sidebar/template/style.scss +0 -8
  203. package/src/components/start-page-options/index.js +48 -28
  204. package/src/components/start-page-options/style.scss +0 -9
  205. package/src/components/visual-editor/block-inspector-button.js +4 -8
  206. package/src/components/visual-editor/index.js +2 -1
  207. package/src/editor.js +8 -10
  208. package/src/editor.native.js +5 -6
  209. package/src/plugins/copy-content-menu-item/index.js +1 -1
  210. package/src/store/actions.js +322 -295
  211. package/src/store/selectors.js +21 -24
  212. package/src/style.scss +3 -2
  213. package/build/components/sidebar/post-link/index.js +0 -182
  214. package/build/components/sidebar/post-link/index.js.map +0 -1
  215. package/build/components/sidebar/template/actions.js +0 -167
  216. package/build/components/sidebar/template/actions.js.map +0 -1
  217. package/build/components/sidebar/template/index.js +0 -164
  218. package/build/components/sidebar/template/index.js.map +0 -1
  219. package/build-module/components/sidebar/post-link/index.js +0 -165
  220. package/build-module/components/sidebar/post-link/index.js.map +0 -1
  221. package/build-module/components/sidebar/template/actions.js +0 -153
  222. package/build-module/components/sidebar/template/actions.js.map +0 -1
  223. package/build-module/components/sidebar/template/index.js +0 -145
  224. package/build-module/components/sidebar/template/index.js.map +0 -1
  225. package/src/components/sidebar/post-link/index.js +0 -180
  226. package/src/components/sidebar/post-link/style.scss +0 -20
  227. package/src/components/sidebar/template/actions.js +0 -203
  228. package/src/components/sidebar/template/index.js +0 -164
@@ -1,164 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.TemplatePanel = TemplatePanel;
9
- exports.default = void 0;
10
-
11
- var _element = require("@wordpress/element");
12
-
13
- var _lodash = require("lodash");
14
-
15
- var _i18n = require("@wordpress/i18n");
16
-
17
- var _components = require("@wordpress/components");
18
-
19
- var _editor = require("@wordpress/editor");
20
-
21
- var _data = require("@wordpress/data");
22
-
23
- var _coreData = require("@wordpress/core-data");
24
-
25
- var _actions = _interopRequireDefault(require("./actions"));
26
-
27
- var _store = require("../../../store");
28
-
29
- /**
30
- * External dependencies
31
- */
32
-
33
- /**
34
- * WordPress dependencies
35
- */
36
-
37
- /**
38
- * Internal dependencies
39
- */
40
-
41
- /**
42
- * Module Constants
43
- */
44
- const PANEL_NAME = 'template';
45
-
46
- function TemplatePanel() {
47
- const {
48
- isEnabled,
49
- isOpened,
50
- isPostsPage,
51
- selectedTemplate,
52
- availableTemplates,
53
- fetchedTemplates,
54
- isViewable,
55
- template,
56
- supportsTemplateMode,
57
- canUserCreate
58
- } = (0, _data.useSelect)(select => {
59
- var _getPostType$viewable, _getPostType;
60
-
61
- const {
62
- isEditorPanelEnabled,
63
- isEditorPanelOpened,
64
- getEditedPostTemplate
65
- } = select(_store.store);
66
- const {
67
- getEditedPostAttribute,
68
- getEditorSettings,
69
- getCurrentPostId,
70
- getCurrentPostType
71
- } = select(_editor.store);
72
- const {
73
- getPostType,
74
- getEntityRecord,
75
- getEntityRecords,
76
- canUser
77
- } = select(_coreData.store);
78
- const currentPostId = getCurrentPostId();
79
- const currentPostType = getCurrentPostType();
80
- const settings = getEntityRecord('root', 'site');
81
-
82
- const _isViewable = (_getPostType$viewable = (_getPostType = getPostType(currentPostType)) === null || _getPostType === void 0 ? void 0 : _getPostType.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false;
83
-
84
- const _supportsTemplateMode = select(_editor.store).getEditorSettings().supportsTemplateMode && _isViewable;
85
-
86
- const templateRecords = getEntityRecords('postType', 'wp_template', {
87
- post_type: currentPostType,
88
- per_page: -1
89
- });
90
- return {
91
- isEnabled: isEditorPanelEnabled(PANEL_NAME),
92
- isOpened: isEditorPanelOpened(PANEL_NAME),
93
- isPostsPage: currentPostId === (settings === null || settings === void 0 ? void 0 : settings.page_for_posts),
94
- selectedTemplate: getEditedPostAttribute('template'),
95
- availableTemplates: getEditorSettings().availableTemplates,
96
- fetchedTemplates: templateRecords,
97
- template: _supportsTemplateMode && getEditedPostTemplate(),
98
- isViewable: _isViewable,
99
- supportsTemplateMode: _supportsTemplateMode,
100
- canUserCreate: canUser('create', 'templates')
101
- };
102
- }, []);
103
- const templates = (0, _element.useMemo)(() => {
104
- return { ...availableTemplates,
105
- ...(0, _lodash.fromPairs)((fetchedTemplates !== null && fetchedTemplates !== void 0 ? fetchedTemplates : []).map(_ref => {
106
- let {
107
- slug,
108
- title
109
- } = _ref;
110
- return [slug, title.rendered];
111
- }))
112
- };
113
- }, [availableTemplates, fetchedTemplates]);
114
- const {
115
- toggleEditorPanelOpened
116
- } = (0, _data.useDispatch)(_store.store);
117
- const {
118
- editPost
119
- } = (0, _data.useDispatch)(_editor.store);
120
-
121
- if (!isEnabled || !isViewable || (0, _lodash.isEmpty)(availableTemplates) && (!supportsTemplateMode || !canUserCreate)) {
122
- return null;
123
- }
124
-
125
- const onTogglePanel = (0, _lodash.partial)(toggleEditorPanelOpened, PANEL_NAME);
126
- let panelTitle = (0, _i18n.__)('Template');
127
-
128
- if (!!template) {
129
- var _template$title;
130
-
131
- panelTitle = (0, _i18n.sprintf)(
132
- /* translators: %s: template title */
133
- (0, _i18n.__)('Template: %s'), (_template$title = template === null || template === void 0 ? void 0 : template.title) !== null && _template$title !== void 0 ? _template$title : template.slug);
134
- }
135
-
136
- return (0, _element.createElement)(_components.PanelBody, {
137
- title: panelTitle,
138
- opened: isOpened,
139
- onToggle: onTogglePanel
140
- }, isPostsPage ? (0, _element.createElement)(_components.Notice, {
141
- className: "edit-post-template__notice",
142
- status: "warning",
143
- isDismissible: false
144
- }, (0, _i18n.__)('The posts page template cannot be changed.')) : (0, _element.createElement)(_components.SelectControl, {
145
- hideLabelFromVision: true,
146
- label: (0, _i18n.__)('Template:'),
147
- value: Object.keys(templates).includes(selectedTemplate) ? selectedTemplate : '',
148
- onChange: templateSlug => {
149
- editPost({
150
- template: templateSlug || ''
151
- });
152
- },
153
- options: (0, _lodash.map)(templates, (templateName, templateSlug) => ({
154
- value: templateSlug,
155
- label: templateName
156
- }))
157
- }), canUserCreate && (0, _element.createElement)(_actions.default, {
158
- isPostsPage: isPostsPage
159
- }));
160
- }
161
-
162
- var _default = TemplatePanel;
163
- exports.default = _default;
164
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-post/src/components/sidebar/template/index.js"],"names":["PANEL_NAME","TemplatePanel","isEnabled","isOpened","isPostsPage","selectedTemplate","availableTemplates","fetchedTemplates","isViewable","template","supportsTemplateMode","canUserCreate","select","isEditorPanelEnabled","isEditorPanelOpened","getEditedPostTemplate","editPostStore","getEditedPostAttribute","getEditorSettings","getCurrentPostId","getCurrentPostType","editorStore","getPostType","getEntityRecord","getEntityRecords","canUser","coreStore","currentPostId","currentPostType","settings","_isViewable","viewable","_supportsTemplateMode","templateRecords","post_type","per_page","page_for_posts","templates","map","slug","title","rendered","toggleEditorPanelOpened","editPost","onTogglePanel","panelTitle","Object","keys","includes","templateSlug","templateName","value","label"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { partial, isEmpty, map, fromPairs } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport { Notice, PanelBody, SelectControl } from '@wordpress/components';\nimport { store as editorStore } from '@wordpress/editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostTemplateActions from './actions';\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'template';\n\nexport function TemplatePanel() {\n\tconst {\n\t\tisEnabled,\n\t\tisOpened,\n\t\tisPostsPage,\n\t\tselectedTemplate,\n\t\tavailableTemplates,\n\t\tfetchedTemplates,\n\t\tisViewable,\n\t\ttemplate,\n\t\tsupportsTemplateMode,\n\t\tcanUserCreate,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisEditorPanelEnabled,\n\t\t\tisEditorPanelOpened,\n\t\t\tgetEditedPostTemplate,\n\t\t} = select( editPostStore );\n\t\tconst {\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetEditorSettings,\n\t\t\tgetCurrentPostId,\n\t\t\tgetCurrentPostType,\n\t\t} = select( editorStore );\n\t\tconst {\n\t\t\tgetPostType,\n\t\t\tgetEntityRecord,\n\t\t\tgetEntityRecords,\n\t\t\tcanUser,\n\t\t} = select( coreStore );\n\n\t\tconst currentPostId = getCurrentPostId();\n\t\tconst currentPostType = getCurrentPostType();\n\t\tconst settings = getEntityRecord( 'root', 'site' );\n\t\tconst _isViewable = getPostType( currentPostType )?.viewable ?? false;\n\t\tconst _supportsTemplateMode =\n\t\t\tselect( editorStore ).getEditorSettings().supportsTemplateMode &&\n\t\t\t_isViewable;\n\n\t\tconst templateRecords = getEntityRecords( 'postType', 'wp_template', {\n\t\t\tpost_type: currentPostType,\n\t\t\tper_page: -1,\n\t\t} );\n\n\t\treturn {\n\t\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t\tisPostsPage: currentPostId === settings?.page_for_posts,\n\t\t\tselectedTemplate: getEditedPostAttribute( 'template' ),\n\t\t\tavailableTemplates: getEditorSettings().availableTemplates,\n\t\t\tfetchedTemplates: templateRecords,\n\t\t\ttemplate: _supportsTemplateMode && getEditedPostTemplate(),\n\t\t\tisViewable: _isViewable,\n\t\t\tsupportsTemplateMode: _supportsTemplateMode,\n\t\t\tcanUserCreate: canUser( 'create', 'templates' ),\n\t\t};\n\t}, [] );\n\n\tconst templates = useMemo( () => {\n\t\treturn {\n\t\t\t...availableTemplates,\n\t\t\t...fromPairs(\n\t\t\t\t( fetchedTemplates ?? [] ).map( ( { slug, title } ) => [\n\t\t\t\t\tslug,\n\t\t\t\t\ttitle.rendered,\n\t\t\t\t] )\n\t\t\t),\n\t\t};\n\t}, [ availableTemplates, fetchedTemplates ] );\n\n\tconst { toggleEditorPanelOpened } = useDispatch( editPostStore );\n\tconst { editPost } = useDispatch( editorStore );\n\n\tif (\n\t\t! isEnabled ||\n\t\t! isViewable ||\n\t\t( isEmpty( availableTemplates ) &&\n\t\t\t( ! supportsTemplateMode || ! canUserCreate ) )\n\t) {\n\t\treturn null;\n\t}\n\n\tconst onTogglePanel = partial( toggleEditorPanelOpened, PANEL_NAME );\n\n\tlet panelTitle = __( 'Template' );\n\tif ( !! template ) {\n\t\tpanelTitle = sprintf(\n\t\t\t/* translators: %s: template title */\n\t\t\t__( 'Template: %s' ),\n\t\t\ttemplate?.title ?? template.slug\n\t\t);\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\ttitle={ panelTitle }\n\t\t\topened={ isOpened }\n\t\t\tonToggle={ onTogglePanel }\n\t\t>\n\t\t\t{ isPostsPage ? (\n\t\t\t\t<Notice\n\t\t\t\t\tclassName=\"edit-post-template__notice\"\n\t\t\t\t\tstatus=\"warning\"\n\t\t\t\t\tisDismissible={ false }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'The posts page template cannot be changed.' ) }\n\t\t\t\t</Notice>\n\t\t\t) : (\n\t\t\t\t<SelectControl\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\tlabel={ __( 'Template:' ) }\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tObject.keys( templates ).includes( selectedTemplate )\n\t\t\t\t\t\t\t? selectedTemplate\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\tonChange={ ( templateSlug ) => {\n\t\t\t\t\t\teditPost( {\n\t\t\t\t\t\t\ttemplate: templateSlug || '',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\toptions={ map(\n\t\t\t\t\t\ttemplates,\n\t\t\t\t\t\t( templateName, templateSlug ) => ( {\n\t\t\t\t\t\t\tvalue: templateSlug,\n\t\t\t\t\t\t\tlabel: templateName,\n\t\t\t\t\t\t} )\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canUserCreate && (\n\t\t\t\t<PostTemplateActions isPostsPage={ isPostsPage } />\n\t\t\t) }\n\t\t</PanelBody>\n\t);\n}\n\nexport default TemplatePanel;\n"]}
@@ -1,165 +0,0 @@
1
- import { createElement, Fragment } from "@wordpress/element";
2
-
3
- /**
4
- * External dependencies
5
- */
6
- import { get } from 'lodash';
7
- /**
8
- * WordPress dependencies
9
- */
10
-
11
- import { __ } from '@wordpress/i18n';
12
- import { PanelBody, TextControl, ExternalLink } from '@wordpress/components';
13
- import { withSelect, withDispatch } from '@wordpress/data';
14
- import { compose, ifCondition } from '@wordpress/compose';
15
- import { store as editorStore } from '@wordpress/editor';
16
- import { safeDecodeURIComponent, cleanForSlug } from '@wordpress/url';
17
- import { store as coreStore } from '@wordpress/core-data';
18
- import { useState } from '@wordpress/element';
19
- /**
20
- * Internal dependencies
21
- */
22
-
23
- import { store as editPostStore } from '../../../store';
24
- /**
25
- * Module Constants
26
- */
27
-
28
- const PANEL_NAME = 'post-link';
29
-
30
- function PostLink(_ref) {
31
- let {
32
- isOpened,
33
- onTogglePanel,
34
- isEditable,
35
- postLink,
36
- permalinkPrefix,
37
- permalinkSuffix,
38
- editPermalink,
39
- postSlug,
40
- postTypeLabel
41
- } = _ref;
42
- const [forceEmptyField, setForceEmptyField] = useState(false);
43
- let prefixElement, postNameElement, suffixElement;
44
-
45
- if (isEditable) {
46
- prefixElement = permalinkPrefix && createElement("span", {
47
- className: "edit-post-post-link__link-prefix"
48
- }, permalinkPrefix);
49
- postNameElement = postSlug && createElement("span", {
50
- className: "edit-post-post-link__link-post-name"
51
- }, postSlug);
52
- suffixElement = permalinkSuffix && createElement("span", {
53
- className: "edit-post-post-link__link-suffix"
54
- }, permalinkSuffix);
55
- }
56
-
57
- return createElement(PanelBody, {
58
- title: __('Permalink'),
59
- opened: isOpened,
60
- onToggle: onTogglePanel
61
- }, isEditable && createElement("div", {
62
- className: "editor-post-link"
63
- }, createElement(TextControl, {
64
- label: __('URL Slug'),
65
- value: forceEmptyField ? '' : postSlug,
66
- autoComplete: "off",
67
- spellCheck: "false",
68
- onChange: newValue => {
69
- editPermalink(newValue); // When we delete the field the permalink gets
70
- // reverted to the original value.
71
- // The forceEmptyField logic allows the user to have
72
- // the field temporarily empty while typing.
73
-
74
- if (!newValue) {
75
- if (!forceEmptyField) {
76
- setForceEmptyField(true);
77
- }
78
-
79
- return;
80
- }
81
-
82
- if (forceEmptyField) {
83
- setForceEmptyField(false);
84
- }
85
- },
86
- onBlur: event => {
87
- editPermalink(cleanForSlug(event.target.value));
88
-
89
- if (forceEmptyField) {
90
- setForceEmptyField(false);
91
- }
92
- }
93
- }), createElement("p", null, __('The last part of the URL.'), ' ', createElement(ExternalLink, {
94
- href: __('https://wordpress.org/support/article/settings-sidebar/#permalink')
95
- }, __('Read about permalinks')))), createElement("h3", {
96
- className: "edit-post-post-link__preview-label"
97
- }, postTypeLabel || __('View post')), createElement("div", {
98
- className: "edit-post-post-link__preview-link-container"
99
- }, createElement(ExternalLink, {
100
- className: "edit-post-post-link__link",
101
- href: postLink,
102
- target: "_blank"
103
- }, isEditable ? createElement(Fragment, null, prefixElement, postNameElement, suffixElement) : postLink)));
104
- }
105
-
106
- export default compose([withSelect(select => {
107
- const {
108
- isPermalinkEditable,
109
- getCurrentPost,
110
- isCurrentPostPublished,
111
- getPermalinkParts,
112
- getEditedPostAttribute,
113
- getEditedPostSlug
114
- } = select(editorStore);
115
- const {
116
- isEditorPanelEnabled,
117
- isEditorPanelOpened
118
- } = select(editPostStore);
119
- const {
120
- getPostType
121
- } = select(coreStore);
122
- const {
123
- link
124
- } = getCurrentPost();
125
- const postTypeName = getEditedPostAttribute('type');
126
- const postType = getPostType(postTypeName);
127
- const permalinkParts = getPermalinkParts();
128
- return {
129
- postLink: link,
130
- isEditable: isPermalinkEditable(),
131
- isPublished: isCurrentPostPublished(),
132
- isOpened: isEditorPanelOpened(PANEL_NAME),
133
- isEnabled: isEditorPanelEnabled(PANEL_NAME),
134
- isViewable: get(postType, ['viewable'], false),
135
- postSlug: safeDecodeURIComponent(getEditedPostSlug()),
136
- postTypeLabel: get(postType, ['labels', 'view_item']),
137
- hasPermalinkParts: !!permalinkParts,
138
- permalinkPrefix: permalinkParts === null || permalinkParts === void 0 ? void 0 : permalinkParts.prefix,
139
- permalinkSuffix: permalinkParts === null || permalinkParts === void 0 ? void 0 : permalinkParts.suffix
140
- };
141
- }), ifCondition(_ref2 => {
142
- let {
143
- isEnabled,
144
- postLink,
145
- isViewable,
146
- hasPermalinkParts
147
- } = _ref2;
148
- return isEnabled && postLink && isViewable && hasPermalinkParts;
149
- }), withDispatch(dispatch => {
150
- const {
151
- toggleEditorPanelOpened
152
- } = dispatch(editPostStore);
153
- const {
154
- editPost
155
- } = dispatch(editorStore);
156
- return {
157
- onTogglePanel: () => toggleEditorPanelOpened(PANEL_NAME),
158
- editPermalink: newSlug => {
159
- editPost({
160
- slug: newSlug
161
- });
162
- }
163
- };
164
- })])(PostLink);
165
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-post/src/components/sidebar/post-link/index.js"],"names":["get","__","PanelBody","TextControl","ExternalLink","withSelect","withDispatch","compose","ifCondition","store","editorStore","safeDecodeURIComponent","cleanForSlug","coreStore","useState","editPostStore","PANEL_NAME","PostLink","isOpened","onTogglePanel","isEditable","postLink","permalinkPrefix","permalinkSuffix","editPermalink","postSlug","postTypeLabel","forceEmptyField","setForceEmptyField","prefixElement","postNameElement","suffixElement","newValue","event","target","value","select","isPermalinkEditable","getCurrentPost","isCurrentPostPublished","getPermalinkParts","getEditedPostAttribute","getEditedPostSlug","isEditorPanelEnabled","isEditorPanelOpened","getPostType","link","postTypeName","postType","permalinkParts","isPublished","isEnabled","isViewable","hasPermalinkParts","prefix","suffix","dispatch","toggleEditorPanelOpened","editPost","newSlug","slug"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody, TextControl, ExternalLink } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose, ifCondition } from '@wordpress/compose';\nimport { store as editorStore } from '@wordpress/editor';\nimport { safeDecodeURIComponent, cleanForSlug } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'post-link';\n\nfunction PostLink( {\n\tisOpened,\n\tonTogglePanel,\n\tisEditable,\n\tpostLink,\n\tpermalinkPrefix,\n\tpermalinkSuffix,\n\teditPermalink,\n\tpostSlug,\n\tpostTypeLabel,\n} ) {\n\tconst [ forceEmptyField, setForceEmptyField ] = useState( false );\n\n\tlet prefixElement, postNameElement, suffixElement;\n\tif ( isEditable ) {\n\t\tprefixElement = permalinkPrefix && (\n\t\t\t<span className=\"edit-post-post-link__link-prefix\">\n\t\t\t\t{ permalinkPrefix }\n\t\t\t</span>\n\t\t);\n\t\tpostNameElement = postSlug && (\n\t\t\t<span className=\"edit-post-post-link__link-post-name\">\n\t\t\t\t{ postSlug }\n\t\t\t</span>\n\t\t);\n\t\tsuffixElement = permalinkSuffix && (\n\t\t\t<span className=\"edit-post-post-link__link-suffix\">\n\t\t\t\t{ permalinkSuffix }\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\ttitle={ __( 'Permalink' ) }\n\t\t\topened={ isOpened }\n\t\t\tonToggle={ onTogglePanel }\n\t\t>\n\t\t\t{ isEditable && (\n\t\t\t\t<div className=\"editor-post-link\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'URL Slug' ) }\n\t\t\t\t\t\tvalue={ forceEmptyField ? '' : postSlug }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\teditPermalink( newValue );\n\t\t\t\t\t\t\t// When we delete the field the permalink gets\n\t\t\t\t\t\t\t// reverted to the original value.\n\t\t\t\t\t\t\t// The forceEmptyField logic allows the user to have\n\t\t\t\t\t\t\t// the field temporarily empty while typing.\n\t\t\t\t\t\t\tif ( ! newValue ) {\n\t\t\t\t\t\t\t\tif ( ! forceEmptyField ) {\n\t\t\t\t\t\t\t\t\tsetForceEmptyField( true );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( forceEmptyField ) {\n\t\t\t\t\t\t\t\tsetForceEmptyField( false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonBlur={ ( event ) => {\n\t\t\t\t\t\t\teditPermalink( cleanForSlug( event.target.value ) );\n\t\t\t\t\t\t\tif ( forceEmptyField ) {\n\t\t\t\t\t\t\t\tsetForceEmptyField( false );\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<p>\n\t\t\t\t\t\t{ __( 'The last part of the URL.' ) }{ ' ' }\n\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t'https://wordpress.org/support/article/settings-sidebar/#permalink'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Read about permalinks' ) }\n\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<h3 className=\"edit-post-post-link__preview-label\">\n\t\t\t\t{ postTypeLabel || __( 'View post' ) }\n\t\t\t</h3>\n\t\t\t<div className=\"edit-post-post-link__preview-link-container\">\n\t\t\t\t<ExternalLink\n\t\t\t\t\tclassName=\"edit-post-post-link__link\"\n\t\t\t\t\thref={ postLink }\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t>\n\t\t\t\t\t{ isEditable ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ prefixElement }\n\t\t\t\t\t\t\t{ postNameElement }\n\t\t\t\t\t\t\t{ suffixElement }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tpostLink\n\t\t\t\t\t) }\n\t\t\t\t</ExternalLink>\n\t\t\t</div>\n\t\t</PanelBody>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tisPermalinkEditable,\n\t\t\tgetCurrentPost,\n\t\t\tisCurrentPostPublished,\n\t\t\tgetPermalinkParts,\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetEditedPostSlug,\n\t\t} = select( editorStore );\n\t\tconst { isEditorPanelEnabled, isEditorPanelOpened } = select(\n\t\t\teditPostStore\n\t\t);\n\t\tconst { getPostType } = select( coreStore );\n\n\t\tconst { link } = getCurrentPost();\n\n\t\tconst postTypeName = getEditedPostAttribute( 'type' );\n\t\tconst postType = getPostType( postTypeName );\n\t\tconst permalinkParts = getPermalinkParts();\n\n\t\treturn {\n\t\t\tpostLink: link,\n\t\t\tisEditable: isPermalinkEditable(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisViewable: get( postType, [ 'viewable' ], false ),\n\t\t\tpostSlug: safeDecodeURIComponent( getEditedPostSlug() ),\n\t\t\tpostTypeLabel: get( postType, [ 'labels', 'view_item' ] ),\n\t\t\thasPermalinkParts: !! permalinkParts,\n\t\t\tpermalinkPrefix: permalinkParts?.prefix,\n\t\t\tpermalinkSuffix: permalinkParts?.suffix,\n\t\t};\n\t} ),\n\tifCondition( ( { isEnabled, postLink, isViewable, hasPermalinkParts } ) => {\n\t\treturn isEnabled && postLink && isViewable && hasPermalinkParts;\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { toggleEditorPanelOpened } = dispatch( editPostStore );\n\t\tconst { editPost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonTogglePanel: () => toggleEditorPanelOpened( PANEL_NAME ),\n\t\t\teditPermalink: ( newSlug ) => {\n\t\t\t\teditPost( { slug: newSlug } );\n\t\t\t},\n\t\t};\n\t} ),\n] )( PostLink );\n"]}
@@ -1,153 +0,0 @@
1
- import { createElement, Fragment } from "@wordpress/element";
2
-
3
- /**
4
- * External dependencies
5
- */
6
- import { kebabCase } from 'lodash';
7
- /**
8
- * WordPress dependencies
9
- */
10
-
11
- import { __, _x } from '@wordpress/i18n';
12
- import { Button, Modal, TextControl, Flex, FlexItem } from '@wordpress/components';
13
- import { useSelect, useDispatch } from '@wordpress/data';
14
- import { useState } from '@wordpress/element';
15
- import { store as editorStore } from '@wordpress/editor';
16
- import { store as coreStore } from '@wordpress/core-data';
17
- /**
18
- * Internal dependencies
19
- */
20
-
21
- import { store as editPostStore } from '../../../store';
22
- import { createBlock, serialize } from '@wordpress/blocks';
23
-
24
- function PostTemplateActions(_ref) {
25
- let {
26
- isPostsPage
27
- } = _ref;
28
- const [isModalOpen, setIsModalOpen] = useState(false);
29
- const [isBusy, setIsBusy] = useState(false);
30
- const [title, setTitle] = useState('');
31
- const {
32
- template,
33
- supportsTemplateMode,
34
- defaultTemplate
35
- } = useSelect(select => {
36
- var _getPostType$viewable, _getPostType;
37
-
38
- const {
39
- getCurrentPostType,
40
- getEditorSettings
41
- } = select(editorStore);
42
- const {
43
- getPostType
44
- } = select(coreStore);
45
- const {
46
- getEditedPostTemplate
47
- } = select(editPostStore);
48
- const isViewable = (_getPostType$viewable = (_getPostType = getPostType(getCurrentPostType())) === null || _getPostType === void 0 ? void 0 : _getPostType.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false;
49
-
50
- const _supportsTemplateMode = getEditorSettings().supportsTemplateMode && isViewable;
51
-
52
- return {
53
- template: _supportsTemplateMode && getEditedPostTemplate(),
54
- supportsTemplateMode: _supportsTemplateMode,
55
- defaultTemplate: getEditorSettings().defaultBlockTemplate
56
- };
57
- }, []);
58
- const {
59
- __unstableCreateTemplate,
60
- __unstableSwitchToTemplateMode
61
- } = useDispatch(editPostStore);
62
-
63
- if (!supportsTemplateMode) {
64
- return null;
65
- }
66
-
67
- const defaultTitle = __('Custom Template');
68
-
69
- async function onCreateTemplate(event) {
70
- event.preventDefault();
71
-
72
- if (isBusy) {
73
- return;
74
- }
75
-
76
- setIsBusy(true);
77
- const newTemplateContent = defaultTemplate !== null && defaultTemplate !== void 0 ? defaultTemplate : serialize([createBlock('core/group', {
78
- tagName: 'header',
79
- layout: {
80
- inherit: true
81
- }
82
- }, [createBlock('core/site-title'), createBlock('core/site-tagline')]), createBlock('core/separator'), createBlock('core/group', {
83
- tagName: 'main'
84
- }, [createBlock('core/group', {
85
- layout: {
86
- inherit: true
87
- }
88
- }, [createBlock('core/post-title')]), createBlock('core/post-content', {
89
- layout: {
90
- inherit: true
91
- }
92
- })])]);
93
- await __unstableCreateTemplate({
94
- slug: 'wp-custom-template-' + kebabCase(title || defaultTitle),
95
- content: newTemplateContent,
96
- title: title || defaultTitle
97
- });
98
- setIsBusy(false);
99
- setIsModalOpen(false);
100
-
101
- __unstableSwitchToTemplateMode(true);
102
- }
103
-
104
- return createElement(Fragment, null, createElement("div", {
105
- className: "edit-post-template__actions"
106
- }, !!template && createElement(Button, {
107
- variant: "link",
108
- onClick: () => __unstableSwitchToTemplateMode()
109
- }, __('Edit')), !isPostsPage && createElement(Button, {
110
- variant: "link",
111
- onClick: () => setIsModalOpen(true)
112
- },
113
- /* translators: button to create a new template */
114
- _x('New', 'action'))), isModalOpen && createElement(Modal, {
115
- title: __('Create custom template'),
116
- closeLabel: __('Close'),
117
- onRequestClose: () => {
118
- setIsModalOpen(false);
119
- setTitle('');
120
- },
121
- overlayClassName: "edit-post-template__modal"
122
- }, createElement("form", {
123
- onSubmit: onCreateTemplate
124
- }, createElement(Flex, {
125
- align: "flex-start",
126
- gap: 8
127
- }, createElement(FlexItem, null, createElement(TextControl, {
128
- label: __('Name'),
129
- value: title,
130
- onChange: setTitle,
131
- placeholder: defaultTitle,
132
- disabled: isBusy,
133
- help: __('Describe the purpose of the template, e.g. "Full Width". Custom templates can be applied to any post or page.')
134
- }))), createElement(Flex, {
135
- className: "edit-post-template__modal-actions",
136
- justify: "flex-end",
137
- expanded: false
138
- }, createElement(FlexItem, null, createElement(Button, {
139
- variant: "tertiary",
140
- onClick: () => {
141
- setIsModalOpen(false);
142
- setTitle('');
143
- }
144
- }, __('Cancel'))), createElement(FlexItem, null, createElement(Button, {
145
- variant: "primary",
146
- type: "submit",
147
- isBusy: isBusy,
148
- "aria-disabled": isBusy
149
- }, __('Create')))))));
150
- }
151
-
152
- export default PostTemplateActions;
153
- //# sourceMappingURL=actions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-post/src/components/sidebar/template/actions.js"],"names":["kebabCase","__","_x","Button","Modal","TextControl","Flex","FlexItem","useSelect","useDispatch","useState","store","editorStore","coreStore","editPostStore","createBlock","serialize","PostTemplateActions","isPostsPage","isModalOpen","setIsModalOpen","isBusy","setIsBusy","title","setTitle","template","supportsTemplateMode","defaultTemplate","select","getCurrentPostType","getEditorSettings","getPostType","getEditedPostTemplate","isViewable","viewable","_supportsTemplateMode","defaultBlockTemplate","__unstableCreateTemplate","__unstableSwitchToTemplateMode","defaultTitle","onCreateTemplate","event","preventDefault","newTemplateContent","tagName","layout","inherit","slug","content"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,QAA1B;AAEA;AACA;AACA;;AACA,SAASC,EAAT,EAAaC,EAAb,QAAuB,iBAAvB;AACA,SACCC,MADD,EAECC,KAFD,EAGCC,WAHD,EAICC,IAJD,EAKCC,QALD,QAMO,uBANP;AAOA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,KAAK,IAAIC,WAAlB,QAAqC,mBAArC;AACA,SAASD,KAAK,IAAIE,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,SAASF,KAAK,IAAIG,aAAlB,QAAuC,gBAAvC;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,mBAAvC;;AAEA,SAASC,mBAAT,OAAgD;AAAA,MAAlB;AAAEC,IAAAA;AAAF,GAAkB;AAC/C,QAAM,CAAEC,WAAF,EAAeC,cAAf,IAAkCV,QAAQ,CAAE,KAAF,CAAhD;AACA,QAAM,CAAEW,MAAF,EAAUC,SAAV,IAAwBZ,QAAQ,CAAE,KAAF,CAAtC;AACA,QAAM,CAAEa,KAAF,EAASC,QAAT,IAAsBd,QAAQ,CAAE,EAAF,CAApC;AACA,QAAM;AAAEe,IAAAA,QAAF;AAAYC,IAAAA,oBAAZ;AAAkCC,IAAAA;AAAlC,MAAsDnB,SAAS,CAClEoB,MAAF,IAAc;AAAA;;AACb,UAAM;AAAEC,MAAAA,kBAAF;AAAsBC,MAAAA;AAAtB,QAA4CF,MAAM,CACvDhB,WADuD,CAAxD;AAGA,UAAM;AAAEmB,MAAAA;AAAF,QAAkBH,MAAM,CAAEf,SAAF,CAA9B;AACA,UAAM;AAAEmB,MAAAA;AAAF,QAA4BJ,MAAM,CAAEd,aAAF,CAAxC;AAEA,UAAMmB,UAAU,4CACfF,WAAW,CAAEF,kBAAkB,EAApB,CADI,iDACf,aAAqCK,QADtB,yEACkC,KADlD;;AAEA,UAAMC,qBAAqB,GAC1BL,iBAAiB,GAAGJ,oBAApB,IAA4CO,UAD7C;;AAGA,WAAO;AACNR,MAAAA,QAAQ,EAAEU,qBAAqB,IAAIH,qBAAqB,EADlD;AAENN,MAAAA,oBAAoB,EAAES,qBAFhB;AAGNR,MAAAA,eAAe,EAAEG,iBAAiB,GAAGM;AAH/B,KAAP;AAKA,GAlBmE,EAmBpE,EAnBoE,CAArE;AAqBA,QAAM;AACLC,IAAAA,wBADK;AAELC,IAAAA;AAFK,MAGF7B,WAAW,CAAEK,aAAF,CAHf;;AAKA,MAAK,CAAEY,oBAAP,EAA8B;AAC7B,WAAO,IAAP;AACA;;AAED,QAAMa,YAAY,GAAGtC,EAAE,CAAE,iBAAF,CAAvB;;AAEA,iBAAeuC,gBAAf,CAAiCC,KAAjC,EAAyC;AACxCA,IAAAA,KAAK,CAACC,cAAN;;AAEA,QAAKrB,MAAL,EAAc;AACb;AACA;;AAEDC,IAAAA,SAAS,CAAE,IAAF,CAAT;AAEA,UAAMqB,kBAAkB,GACvBhB,eADuB,aACvBA,eADuB,cACvBA,eADuB,GAEvBX,SAAS,CAAE,CACVD,WAAW,CACV,YADU,EAEV;AACC6B,MAAAA,OAAO,EAAE,QADV;AAECC,MAAAA,MAAM,EAAE;AAAEC,QAAAA,OAAO,EAAE;AAAX;AAFT,KAFU,EAMV,CACC/B,WAAW,CAAE,iBAAF,CADZ,EAECA,WAAW,CAAE,mBAAF,CAFZ,CANU,CADD,EAYVA,WAAW,CAAE,gBAAF,CAZD,EAaVA,WAAW,CACV,YADU,EAEV;AACC6B,MAAAA,OAAO,EAAE;AADV,KAFU,EAKV,CACC7B,WAAW,CACV,YADU,EAEV;AACC8B,MAAAA,MAAM,EAAE;AAAEC,QAAAA,OAAO,EAAE;AAAX;AADT,KAFU,EAKV,CAAE/B,WAAW,CAAE,iBAAF,CAAb,CALU,CADZ,EAQCA,WAAW,CAAE,mBAAF,EAAuB;AACjC8B,MAAAA,MAAM,EAAE;AAAEC,QAAAA,OAAO,EAAE;AAAX;AADyB,KAAvB,CARZ,CALU,CAbD,CAAF,CAFV;AAmCA,UAAMT,wBAAwB,CAAE;AAC/BU,MAAAA,IAAI,EAAE,wBAAwB/C,SAAS,CAAEuB,KAAK,IAAIgB,YAAX,CADR;AAE/BS,MAAAA,OAAO,EAAEL,kBAFsB;AAG/BpB,MAAAA,KAAK,EAAEA,KAAK,IAAIgB;AAHe,KAAF,CAA9B;AAMAjB,IAAAA,SAAS,CAAE,KAAF,CAAT;AACAF,IAAAA,cAAc,CAAE,KAAF,CAAd;;AAEAkB,IAAAA,8BAA8B,CAAE,IAAF,CAA9B;AACA;;AAED,SACC,8BACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACG,CAAC,CAAEb,QAAH,IACD,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,MADT;AAEC,IAAA,OAAO,EAAG,MAAMa,8BAA8B;AAF/C,KAIGrC,EAAE,CAAE,MAAF,CAJL,CAFF,EASG,CAAEiB,WAAF,IACD,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,MADT;AAEC,IAAA,OAAO,EAAG,MAAME,cAAc,CAAE,IAAF;AAF/B;AAKE;AACAlB,EAAAA,EAAE,CAAE,KAAF,EAAS,QAAT,CANJ,CAVF,CADD,EAsBGiB,WAAW,IACZ,cAAC,KAAD;AACC,IAAA,KAAK,EAAGlB,EAAE,CAAE,wBAAF,CADX;AAEC,IAAA,UAAU,EAAGA,EAAE,CAAE,OAAF,CAFhB;AAGC,IAAA,cAAc,EAAG,MAAM;AACtBmB,MAAAA,cAAc,CAAE,KAAF,CAAd;AACAI,MAAAA,QAAQ,CAAE,EAAF,CAAR;AACA,KANF;AAOC,IAAA,gBAAgB,EAAC;AAPlB,KASC;AAAM,IAAA,QAAQ,EAAGgB;AAAjB,KACC,cAAC,IAAD;AAAM,IAAA,KAAK,EAAC,YAAZ;AAAyB,IAAA,GAAG,EAAG;AAA/B,KACC,cAAC,QAAD,QACC,cAAC,WAAD;AACC,IAAA,KAAK,EAAGvC,EAAE,CAAE,MAAF,CADX;AAEC,IAAA,KAAK,EAAGsB,KAFT;AAGC,IAAA,QAAQ,EAAGC,QAHZ;AAIC,IAAA,WAAW,EAAGe,YAJf;AAKC,IAAA,QAAQ,EAAGlB,MALZ;AAMC,IAAA,IAAI,EAAGpB,EAAE,CACR,+GADQ;AANV,IADD,CADD,CADD,EAgBC,cAAC,IAAD;AACC,IAAA,SAAS,EAAC,mCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,QAAQ,EAAG;AAHZ,KAKC,cAAC,QAAD,QACC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,UADT;AAEC,IAAA,OAAO,EAAG,MAAM;AACfmB,MAAAA,cAAc,CAAE,KAAF,CAAd;AACAI,MAAAA,QAAQ,CAAE,EAAF,CAAR;AACA;AALF,KAOGvB,EAAE,CAAE,QAAF,CAPL,CADD,CALD,EAgBC,cAAC,QAAD,QACC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,SADT;AAEC,IAAA,IAAI,EAAC,QAFN;AAGC,IAAA,MAAM,EAAGoB,MAHV;AAIC,qBAAgBA;AAJjB,KAMGpB,EAAE,CAAE,QAAF,CANL,CADD,CAhBD,CAhBD,CATD,CAvBF,CADD;AAiFA;;AAED,eAAegB,mBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tButton,\n\tModal,\n\tTextControl,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\nimport { createBlock, serialize } from '@wordpress/blocks';\n\nfunction PostTemplateActions( { isPostsPage } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst { template, supportsTemplateMode, defaultTemplate } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPostType, getEditorSettings } = select(\n\t\t\t\teditorStore\n\t\t\t);\n\t\t\tconst { getPostType } = select( coreStore );\n\t\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\n\t\t\tconst isViewable =\n\t\t\t\tgetPostType( getCurrentPostType() )?.viewable ?? false;\n\t\t\tconst _supportsTemplateMode =\n\t\t\t\tgetEditorSettings().supportsTemplateMode && isViewable;\n\n\t\t\treturn {\n\t\t\t\ttemplate: _supportsTemplateMode && getEditedPostTemplate(),\n\t\t\t\tsupportsTemplateMode: _supportsTemplateMode,\n\t\t\t\tdefaultTemplate: getEditorSettings().defaultBlockTemplate,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst {\n\t\t__unstableCreateTemplate,\n\t\t__unstableSwitchToTemplateMode,\n\t} = useDispatch( editPostStore );\n\n\tif ( ! supportsTemplateMode ) {\n\t\treturn null;\n\t}\n\n\tconst defaultTitle = __( 'Custom Template' );\n\n\tasync function onCreateTemplate( event ) {\n\t\tevent.preventDefault();\n\n\t\tif ( isBusy ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsBusy( true );\n\n\t\tconst newTemplateContent =\n\t\t\tdefaultTemplate ??\n\t\t\tserialize( [\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'header',\n\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock( 'core/site-title' ),\n\t\t\t\t\t\tcreateBlock( 'core/site-tagline' ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t\tcreateBlock( 'core/separator' ),\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'main',\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[ createBlock( 'core/post-title' ) ]\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcreateBlock( 'core/post-content', {\n\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t} ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t] );\n\n\t\tawait __unstableCreateTemplate( {\n\t\t\tslug: 'wp-custom-template-' + kebabCase( title || defaultTitle ),\n\t\t\tcontent: newTemplateContent,\n\t\t\ttitle: title || defaultTitle,\n\t\t} );\n\n\t\tsetIsBusy( false );\n\t\tsetIsModalOpen( false );\n\n\t\t__unstableSwitchToTemplateMode( true );\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"edit-post-template__actions\">\n\t\t\t\t{ !! template && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ () => __unstableSwitchToTemplateMode() }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t{ ! isPostsPage && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* translators: button to create a new template */\n\t\t\t\t\t\t\t_x( 'New', 'action' )\n\t\t\t\t\t\t}\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Create custom template' ) }\n\t\t\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t} }\n\t\t\t\t\toverlayClassName=\"edit-post-template__modal\"\n\t\t\t\t>\n\t\t\t\t\t<form onSubmit={ onCreateTemplate }>\n\t\t\t\t\t\t<Flex align=\"flex-start\" gap={ 8 }>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t\tplaceholder={ defaultTitle }\n\t\t\t\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the template, e.g. \"Full Width\". Custom templates can be applied to any post or page.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t</Flex>\n\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tclassName=\"edit-post-template__modal-actions\"\n\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\t\t\t\taria-disabled={ isBusy }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PostTemplateActions;\n"]}