decap-cms-core 3.6.3 → 3.7.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 (132) hide show
  1. package/dist/decap-cms-core.js +26 -26
  2. package/dist/decap-cms-core.js.LICENSE.txt +22 -4
  3. package/dist/decap-cms-core.js.map +1 -1
  4. package/dist/esm/actions/config.js +57 -49
  5. package/dist/esm/actions/editorialWorkflow.js +4 -4
  6. package/dist/esm/actions/entries.js +8 -14
  7. package/dist/esm/actions/mediaLibrary.js +6 -11
  8. package/dist/esm/actions/search.js +2 -2
  9. package/dist/esm/actions/status.js +2 -8
  10. package/dist/esm/backend.js +70 -79
  11. package/dist/esm/bootstrap.js +2 -2
  12. package/dist/esm/components/App/App.js +28 -34
  13. package/dist/esm/components/App/Header.js +32 -39
  14. package/dist/esm/components/Collection/Collection.js +45 -48
  15. package/dist/esm/components/Collection/CollectionSearch.js +76 -81
  16. package/dist/esm/components/Collection/CollectionTop.js +1 -2
  17. package/dist/esm/components/Collection/Entries/Entries.js +2 -4
  18. package/dist/esm/components/Collection/Entries/EntriesCollection.js +25 -29
  19. package/dist/esm/components/Collection/Entries/EntriesSearch.js +34 -38
  20. package/dist/esm/components/Collection/Entries/EntryCard.js +8 -13
  21. package/dist/esm/components/Collection/Entries/EntryListing.js +72 -76
  22. package/dist/esm/components/Collection/FilterControl.js +1 -1
  23. package/dist/esm/components/Collection/GroupControl.js +1 -1
  24. package/dist/esm/components/Collection/NestedCollection.js +50 -53
  25. package/dist/esm/components/Collection/Sidebar.js +35 -38
  26. package/dist/esm/components/Collection/SortControl.js +3 -3
  27. package/dist/esm/components/Collection/ViewStyleControl.js +1 -2
  28. package/dist/esm/components/Editor/Editor.js +197 -201
  29. package/dist/esm/components/Editor/EditorControlPane/EditorControl.js +79 -87
  30. package/dist/esm/components/Editor/EditorControlPane/EditorControlPane.js +75 -86
  31. package/dist/esm/components/Editor/EditorControlPane/Widget.js +226 -228
  32. package/dist/esm/components/Editor/EditorInterface.js +69 -80
  33. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreview.js +1 -2
  34. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewContent.js +20 -28
  35. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewPane.js +163 -161
  36. package/dist/esm/components/Editor/EditorPreviewPane/PreviewHOC.js +4 -8
  37. package/dist/esm/components/Editor/EditorToolbar.js +335 -347
  38. package/dist/esm/components/Editor/withWorkflow.js +5 -6
  39. package/dist/esm/components/MediaLibrary/MediaLibrary.js +304 -294
  40. package/dist/esm/components/MediaLibrary/MediaLibraryButtons.js +40 -46
  41. package/dist/esm/components/MediaLibrary/MediaLibraryCard.js +1 -2
  42. package/dist/esm/components/MediaLibrary/MediaLibraryCardGrid.js +8 -13
  43. package/dist/esm/components/MediaLibrary/MediaLibraryModal.js +3 -3
  44. package/dist/esm/components/MediaLibrary/MediaLibrarySearch.js +1 -2
  45. package/dist/esm/components/MediaLibrary/MediaLibraryTop.js +3 -6
  46. package/dist/esm/components/UI/DragDrop.js +15 -23
  47. package/dist/esm/components/UI/ErrorBoundary.js +23 -25
  48. package/dist/esm/components/UI/Modal.js +10 -12
  49. package/dist/esm/components/UI/Notifications.js +4 -8
  50. package/dist/esm/components/UI/SettingsDropdown.js +4 -8
  51. package/dist/esm/components/Workflow/Workflow.js +19 -20
  52. package/dist/esm/components/Workflow/WorkflowCard.js +2 -4
  53. package/dist/esm/components/Workflow/WorkflowList.js +105 -113
  54. package/dist/esm/constants/configSchema.js +18 -16
  55. package/dist/esm/formats/formats.js +11 -12
  56. package/dist/esm/formats/frontmatter.js +17 -21
  57. package/dist/esm/formats/yaml.js +2 -6
  58. package/dist/esm/index.js +3 -7
  59. package/dist/esm/integrations/providers/algolia/implementation.js +12 -14
  60. package/dist/esm/integrations/providers/assetStore/implementation.js +10 -12
  61. package/dist/esm/lib/formatters.js +13 -17
  62. package/dist/esm/lib/i18n.js +35 -33
  63. package/dist/esm/lib/phrases.js +2 -2
  64. package/dist/esm/lib/registry.js +35 -35
  65. package/dist/esm/lib/serializeEntryValues.js +3 -3
  66. package/dist/esm/lib/stega.js +142 -0
  67. package/dist/esm/lib/urlHelper.js +16 -18
  68. package/dist/esm/mediaLibrary.js +3 -4
  69. package/dist/esm/reducers/collections.js +26 -42
  70. package/dist/esm/reducers/combinedReducer.js +3 -6
  71. package/dist/esm/reducers/config.js +3 -7
  72. package/dist/esm/reducers/editorialWorkflow.js +5 -9
  73. package/dist/esm/reducers/entries.js +33 -35
  74. package/dist/esm/reducers/entryDraft.js +2 -2
  75. package/dist/esm/reducers/integrations.js +8 -14
  76. package/dist/esm/reducers/mediaLibrary.js +18 -20
  77. package/dist/esm/reducers/notifications.js +4 -8
  78. package/dist/esm/types/immutable.js +7 -1
  79. package/dist/esm/valueObjects/AssetProxy.js +1 -9
  80. package/dist/esm/valueObjects/EditorComponent.js +18 -25
  81. package/dist/esm/valueObjects/Entry.js +2 -2
  82. package/index.d.ts +2 -0
  83. package/package.json +8 -11
  84. package/src/actions/__tests__/config.spec.js +3 -3
  85. package/src/actions/config.ts +3 -1
  86. package/src/actions/editorialWorkflow.ts +1 -1
  87. package/src/actions/entries.ts +1 -1
  88. package/src/actions/search.ts +1 -1
  89. package/src/backend.ts +8 -1
  90. package/src/components/App/App.js +5 -0
  91. package/src/components/App/Header.js +3 -0
  92. package/src/components/Collection/Collection.js +5 -0
  93. package/src/components/Collection/CollectionSearch.js +5 -0
  94. package/src/components/Collection/Entries/EntriesCollection.js +4 -1
  95. package/src/components/Collection/Entries/EntriesSearch.js +4 -1
  96. package/src/components/Collection/Entries/EntryListing.js +5 -0
  97. package/src/components/Collection/Entries/__tests__/__snapshots__/EntriesCollection.spec.js.snap +0 -4
  98. package/src/components/Collection/NestedCollection.js +6 -1
  99. package/src/components/Collection/Sidebar.js +5 -0
  100. package/src/components/Editor/Editor.js +4 -1
  101. package/src/components/Editor/EditorControlPane/EditorControl.js +7 -1
  102. package/src/components/Editor/EditorControlPane/Widget.js +5 -0
  103. package/src/components/Editor/EditorPreviewPane/EditorPreviewPane.js +1 -1
  104. package/src/components/Editor/EditorToolbar.js +3 -0
  105. package/src/components/Editor/__tests__/Editor.spec.js +3 -4
  106. package/src/components/Editor/__tests__/__snapshots__/Editor.spec.js.snap +5 -5
  107. package/src/components/Editor/__tests__/__snapshots__/EditorToolbar.spec.js.snap +708 -393
  108. package/src/components/MediaLibrary/MediaLibrary.js +5 -1
  109. package/src/components/MediaLibrary/MediaLibraryModal.js +1 -1
  110. package/src/components/UI/ErrorBoundary.js +6 -1
  111. package/src/components/UI/Modal.js +3 -0
  112. package/src/components/Workflow/Workflow.js +3 -0
  113. package/src/components/Workflow/WorkflowList.js +5 -0
  114. package/src/constants/__tests__/configSchema.spec.js +1 -1
  115. package/src/formats/formats.ts +1 -1
  116. package/src/integrations/providers/algolia/implementation.js +2 -2
  117. package/src/integrations/providers/assetStore/implementation.js +2 -1
  118. package/src/lib/formatters.ts +4 -1
  119. package/src/lib/i18n.ts +3 -1
  120. package/src/lib/phrases.js +1 -1
  121. package/src/lib/serializeEntryValues.js +1 -1
  122. package/src/lib/stega.ts +145 -0
  123. package/src/lib/urlHelper.ts +4 -1
  124. package/src/mediaLibrary.ts +1 -1
  125. package/src/reducers/collections.ts +2 -1
  126. package/src/reducers/editorialWorkflow.ts +1 -1
  127. package/src/reducers/entries.ts +6 -1
  128. package/src/reducers/entryDraft.js +1 -1
  129. package/src/types/immutable.ts +10 -0
  130. package/src/types/redux.ts +2 -0
  131. package/src/valueObjects/EditorComponent.js +1 -1
  132. package/src/valueObjects/Entry.ts +1 -1
@@ -1,13 +1,10 @@
1
- import _debounce from "lodash/debounce";
2
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
4
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
5
1
  import PropTypes from 'prop-types';
6
2
  import React from 'react';
7
3
  import ImmutablePropTypes from 'react-immutable-proptypes';
8
4
  import { connect } from 'react-redux';
9
5
  import { Loader } from 'decap-cms-ui-default';
10
6
  import { translate } from 'react-polyglot';
7
+ import debounce from 'lodash/debounce';
11
8
  import { history, navigateToCollection, navigateToNewEntry } from '../../routing/history';
12
9
  import { logoutUser } from '../../actions/auth';
13
10
  import { loadEntry, loadEntries, createDraftDuplicateFromEntry, createEmptyDraft, discardDraft, changeDraftField, changeDraftFieldValidation, persistEntry, deleteEntry, persistLocalBackup, loadLocalBackup, retrieveLocalBackup, deleteLocalBackup } from '../../actions/entries';
@@ -20,161 +17,52 @@ import EditorInterface from './EditorInterface';
20
17
  import withWorkflow from './withWorkflow';
21
18
  import { jsx as ___EmotionJSX } from "@emotion/react";
22
19
  export class Editor extends React.Component {
23
- constructor(...args) {
24
- super(...args);
25
- _defineProperty(this, "createBackup", _debounce(function (entry, collection) {
26
- this.props.persistLocalBackup(entry, collection);
27
- }, 2000));
28
- _defineProperty(this, "handleChangeDraftField", (field, value, metadata, i18n) => {
29
- const entries = [this.props.unPublishedEntry, this.props.publishedEntry].filter(Boolean);
30
- this.props.changeDraftField({
31
- field,
32
- value,
33
- metadata,
34
- entries,
35
- i18n
36
- });
37
- });
38
- _defineProperty(this, "handleChangeStatus", newStatusName => {
39
- const {
40
- entryDraft,
41
- updateUnpublishedEntryStatus,
42
- collection,
43
- slug,
44
- currentStatus,
45
- t
46
- } = this.props;
47
- if (entryDraft.get('hasChanged')) {
48
- window.alert(t('editor.editor.onUpdatingWithUnsavedChanges'));
49
- return;
50
- }
51
- const newStatus = status.get(newStatusName);
52
- updateUnpublishedEntryStatus(collection.get('name'), slug, currentStatus, newStatus);
53
- });
54
- _defineProperty(this, "handlePersistEntry", async (opts = {}) => {
55
- const {
56
- createNew = false,
57
- duplicate = false
58
- } = opts;
59
- const {
60
- persistEntry,
61
- collection,
62
- currentStatus,
63
- hasWorkflow,
64
- loadEntry,
65
- slug,
66
- createDraftDuplicateFromEntry,
67
- entryDraft
68
- } = this.props;
69
- await persistEntry(collection);
70
- this.deleteBackup();
71
- if (createNew) {
72
- navigateToNewEntry(collection.get('name'));
73
- duplicate && createDraftDuplicateFromEntry(entryDraft.get('entry'));
74
- } else if (slug && hasWorkflow && !currentStatus) {
75
- loadEntry(collection, slug);
76
- }
77
- });
78
- _defineProperty(this, "handlePublishEntry", async (opts = {}) => {
79
- const {
80
- createNew = false,
81
- duplicate = false
82
- } = opts;
83
- const {
84
- publishUnpublishedEntry,
85
- createDraftDuplicateFromEntry,
86
- entryDraft,
87
- collection,
88
- slug,
89
- currentStatus,
90
- t
91
- } = this.props;
92
- if (currentStatus !== status.last()) {
93
- window.alert(t('editor.editor.onPublishingNotReady'));
94
- return;
95
- } else if (entryDraft.get('hasChanged')) {
96
- window.alert(t('editor.editor.onPublishingWithUnsavedChanges'));
97
- return;
98
- } else if (!window.confirm(t('editor.editor.onPublishing'))) {
99
- return;
100
- }
101
- await publishUnpublishedEntry(collection.get('name'), slug);
102
- this.deleteBackup();
103
- if (createNew) {
104
- navigateToNewEntry(collection.get('name'));
105
- }
106
- duplicate && createDraftDuplicateFromEntry(entryDraft.get('entry'));
107
- });
108
- _defineProperty(this, "handleUnpublishEntry", async () => {
109
- const {
110
- unpublishPublishedEntry,
111
- collection,
112
- slug,
113
- t
114
- } = this.props;
115
- if (!window.confirm(t('editor.editor.onUnpublishing'))) return;
116
- await unpublishPublishedEntry(collection, slug);
117
- return navigateToCollection(collection.get('name'));
118
- });
119
- _defineProperty(this, "handleDuplicateEntry", () => {
120
- const {
121
- createDraftDuplicateFromEntry,
122
- collection,
123
- entryDraft
124
- } = this.props;
125
- navigateToNewEntry(collection.get('name'));
126
- createDraftDuplicateFromEntry(entryDraft.get('entry'));
127
- });
128
- _defineProperty(this, "handleDeleteEntry", () => {
129
- const {
130
- entryDraft,
131
- newEntry,
132
- collection,
133
- deleteEntry,
134
- slug,
135
- t
136
- } = this.props;
137
- if (entryDraft.get('hasChanged')) {
138
- if (!window.confirm(t('editor.editor.onDeleteWithUnsavedChanges'))) {
139
- return;
140
- }
141
- } else if (!window.confirm(t('editor.editor.onDeletePublishedEntry'))) {
142
- return;
143
- }
144
- if (newEntry) {
145
- return navigateToCollection(collection.get('name'));
146
- }
147
- setTimeout(async () => {
148
- await deleteEntry(collection, slug);
149
- this.deleteBackup();
150
- return navigateToCollection(collection.get('name'));
151
- }, 0);
152
- });
153
- _defineProperty(this, "handleDeleteUnpublishedChanges", async () => {
154
- const {
155
- entryDraft,
156
- collection,
157
- slug,
158
- deleteUnpublishedEntry,
159
- loadEntry,
160
- isModification,
161
- t
162
- } = this.props;
163
- if (entryDraft.get('hasChanged') && !window.confirm(t('editor.editor.onDeleteUnpublishedChangesWithUnsavedChanges'))) {
164
- return;
165
- } else if (!window.confirm(t('editor.editor.onDeleteUnpublishedChanges'))) {
166
- return;
167
- }
168
- await deleteUnpublishedEntry(collection.get('name'), slug);
169
- this.deleteBackup();
170
- if (isModification) {
171
- loadEntry(collection, slug);
172
- } else {
173
- navigateToCollection(collection.get('name'));
174
- }
175
- });
176
- }
20
+ static propTypes = {
21
+ changeDraftField: PropTypes.func.isRequired,
22
+ changeDraftFieldValidation: PropTypes.func.isRequired,
23
+ collection: ImmutablePropTypes.map.isRequired,
24
+ createDraftDuplicateFromEntry: PropTypes.func.isRequired,
25
+ createEmptyDraft: PropTypes.func.isRequired,
26
+ discardDraft: PropTypes.func.isRequired,
27
+ entry: ImmutablePropTypes.map,
28
+ entryDraft: ImmutablePropTypes.map.isRequired,
29
+ loadEntry: PropTypes.func.isRequired,
30
+ persistEntry: PropTypes.func.isRequired,
31
+ deleteEntry: PropTypes.func.isRequired,
32
+ showDelete: PropTypes.bool.isRequired,
33
+ fields: ImmutablePropTypes.list.isRequired,
34
+ slug: PropTypes.string,
35
+ newEntry: PropTypes.bool.isRequired,
36
+ displayUrl: PropTypes.string,
37
+ hasWorkflow: PropTypes.bool,
38
+ useOpenAuthoring: PropTypes.bool,
39
+ unpublishedEntry: PropTypes.bool,
40
+ isModification: PropTypes.bool,
41
+ collectionEntriesLoaded: PropTypes.bool,
42
+ updateUnpublishedEntryStatus: PropTypes.func.isRequired,
43
+ publishUnpublishedEntry: PropTypes.func.isRequired,
44
+ deleteUnpublishedEntry: PropTypes.func.isRequired,
45
+ logoutUser: PropTypes.func.isRequired,
46
+ loadEntries: PropTypes.func.isRequired,
47
+ deployPreview: PropTypes.object,
48
+ loadDeployPreview: PropTypes.func.isRequired,
49
+ currentStatus: PropTypes.string,
50
+ user: PropTypes.object,
51
+ location: PropTypes.shape({
52
+ pathname: PropTypes.string,
53
+ search: PropTypes.string
54
+ }),
55
+ hasChanged: PropTypes.bool,
56
+ t: PropTypes.func.isRequired,
57
+ retrieveLocalBackup: PropTypes.func.isRequired,
58
+ localBackup: ImmutablePropTypes.map,
59
+ loadLocalBackup: PropTypes.func,
60
+ persistLocalBackup: PropTypes.func.isRequired,
61
+ deleteLocalBackup: PropTypes.func
62
+ };
177
63
  componentDidMount() {
64
+ // Manually validate PropTypes - React 19 breaking change
65
+ PropTypes.checkPropTypes(Editor.propTypes, this.props, 'prop', 'Editor');
178
66
  const {
179
67
  newEntry,
180
68
  collection,
@@ -265,6 +153,35 @@ export class Editor extends React.Component {
265
153
  this.props.discardDraft();
266
154
  window.removeEventListener('beforeunload', this.exitBlocker);
267
155
  }
156
+ createBackup = debounce(function (entry, collection) {
157
+ this.props.persistLocalBackup(entry, collection);
158
+ }, 2000);
159
+ handleChangeDraftField = (field, value, metadata, i18n) => {
160
+ const entries = [this.props.unPublishedEntry, this.props.publishedEntry].filter(Boolean);
161
+ this.props.changeDraftField({
162
+ field,
163
+ value,
164
+ metadata,
165
+ entries,
166
+ i18n
167
+ });
168
+ };
169
+ handleChangeStatus = newStatusName => {
170
+ const {
171
+ entryDraft,
172
+ updateUnpublishedEntryStatus,
173
+ collection,
174
+ slug,
175
+ currentStatus,
176
+ t
177
+ } = this.props;
178
+ if (entryDraft.get('hasChanged')) {
179
+ window.alert(t('editor.editor.onUpdatingWithUnsavedChanges'));
180
+ return;
181
+ }
182
+ const newStatus = status.get(newStatusName);
183
+ updateUnpublishedEntryStatus(collection.get('name'), slug, currentStatus, newStatus);
184
+ };
268
185
  deleteBackup() {
269
186
  const {
270
187
  deleteLocalBackup,
@@ -275,6 +192,128 @@ export class Editor extends React.Component {
275
192
  this.createBackup.cancel();
276
193
  deleteLocalBackup(collection, !newEntry && slug);
277
194
  }
195
+ handlePersistEntry = async (opts = {}) => {
196
+ const {
197
+ createNew = false,
198
+ duplicate = false
199
+ } = opts;
200
+ const {
201
+ persistEntry,
202
+ collection,
203
+ currentStatus,
204
+ hasWorkflow,
205
+ loadEntry,
206
+ slug,
207
+ createDraftDuplicateFromEntry,
208
+ entryDraft
209
+ } = this.props;
210
+ await persistEntry(collection);
211
+ this.deleteBackup();
212
+ if (createNew) {
213
+ navigateToNewEntry(collection.get('name'));
214
+ duplicate && createDraftDuplicateFromEntry(entryDraft.get('entry'));
215
+ } else if (slug && hasWorkflow && !currentStatus) {
216
+ loadEntry(collection, slug);
217
+ }
218
+ };
219
+ handlePublishEntry = async (opts = {}) => {
220
+ const {
221
+ createNew = false,
222
+ duplicate = false
223
+ } = opts;
224
+ const {
225
+ publishUnpublishedEntry,
226
+ createDraftDuplicateFromEntry,
227
+ entryDraft,
228
+ collection,
229
+ slug,
230
+ currentStatus,
231
+ t
232
+ } = this.props;
233
+ if (currentStatus !== status.last()) {
234
+ window.alert(t('editor.editor.onPublishingNotReady'));
235
+ return;
236
+ } else if (entryDraft.get('hasChanged')) {
237
+ window.alert(t('editor.editor.onPublishingWithUnsavedChanges'));
238
+ return;
239
+ } else if (!window.confirm(t('editor.editor.onPublishing'))) {
240
+ return;
241
+ }
242
+ await publishUnpublishedEntry(collection.get('name'), slug);
243
+ this.deleteBackup();
244
+ if (createNew) {
245
+ navigateToNewEntry(collection.get('name'));
246
+ }
247
+ duplicate && createDraftDuplicateFromEntry(entryDraft.get('entry'));
248
+ };
249
+ handleUnpublishEntry = async () => {
250
+ const {
251
+ unpublishPublishedEntry,
252
+ collection,
253
+ slug,
254
+ t
255
+ } = this.props;
256
+ if (!window.confirm(t('editor.editor.onUnpublishing'))) return;
257
+ await unpublishPublishedEntry(collection, slug);
258
+ return navigateToCollection(collection.get('name'));
259
+ };
260
+ handleDuplicateEntry = () => {
261
+ const {
262
+ createDraftDuplicateFromEntry,
263
+ collection,
264
+ entryDraft
265
+ } = this.props;
266
+ navigateToNewEntry(collection.get('name'));
267
+ createDraftDuplicateFromEntry(entryDraft.get('entry'));
268
+ };
269
+ handleDeleteEntry = () => {
270
+ const {
271
+ entryDraft,
272
+ newEntry,
273
+ collection,
274
+ deleteEntry,
275
+ slug,
276
+ t
277
+ } = this.props;
278
+ if (entryDraft.get('hasChanged')) {
279
+ if (!window.confirm(t('editor.editor.onDeleteWithUnsavedChanges'))) {
280
+ return;
281
+ }
282
+ } else if (!window.confirm(t('editor.editor.onDeletePublishedEntry'))) {
283
+ return;
284
+ }
285
+ if (newEntry) {
286
+ return navigateToCollection(collection.get('name'));
287
+ }
288
+ setTimeout(async () => {
289
+ await deleteEntry(collection, slug);
290
+ this.deleteBackup();
291
+ return navigateToCollection(collection.get('name'));
292
+ }, 0);
293
+ };
294
+ handleDeleteUnpublishedChanges = async () => {
295
+ const {
296
+ entryDraft,
297
+ collection,
298
+ slug,
299
+ deleteUnpublishedEntry,
300
+ loadEntry,
301
+ isModification,
302
+ t
303
+ } = this.props;
304
+ if (entryDraft.get('hasChanged') && !window.confirm(t('editor.editor.onDeleteUnpublishedChangesWithUnsavedChanges'))) {
305
+ return;
306
+ } else if (!window.confirm(t('editor.editor.onDeleteUnpublishedChanges'))) {
307
+ return;
308
+ }
309
+ await deleteUnpublishedEntry(collection.get('name'), slug);
310
+ this.deleteBackup();
311
+ if (isModification) {
312
+ loadEntry(collection, slug);
313
+ } else {
314
+ navigateToCollection(collection.get('name'));
315
+ }
316
+ };
278
317
  render() {
279
318
  const {
280
319
  entry,
@@ -341,49 +380,6 @@ export class Editor extends React.Component {
341
380
  });
342
381
  }
343
382
  }
344
- _defineProperty(Editor, "propTypes", {
345
- changeDraftField: PropTypes.func.isRequired,
346
- changeDraftFieldValidation: PropTypes.func.isRequired,
347
- collection: ImmutablePropTypes.map.isRequired,
348
- createDraftDuplicateFromEntry: PropTypes.func.isRequired,
349
- createEmptyDraft: PropTypes.func.isRequired,
350
- discardDraft: PropTypes.func.isRequired,
351
- entry: ImmutablePropTypes.map,
352
- entryDraft: ImmutablePropTypes.map.isRequired,
353
- loadEntry: PropTypes.func.isRequired,
354
- persistEntry: PropTypes.func.isRequired,
355
- deleteEntry: PropTypes.func.isRequired,
356
- showDelete: PropTypes.bool.isRequired,
357
- fields: ImmutablePropTypes.list.isRequired,
358
- slug: PropTypes.string,
359
- newEntry: PropTypes.bool.isRequired,
360
- displayUrl: PropTypes.string,
361
- hasWorkflow: PropTypes.bool,
362
- useOpenAuthoring: PropTypes.bool,
363
- unpublishedEntry: PropTypes.bool,
364
- isModification: PropTypes.bool,
365
- collectionEntriesLoaded: PropTypes.bool,
366
- updateUnpublishedEntryStatus: PropTypes.func.isRequired,
367
- publishUnpublishedEntry: PropTypes.func.isRequired,
368
- deleteUnpublishedEntry: PropTypes.func.isRequired,
369
- logoutUser: PropTypes.func.isRequired,
370
- loadEntries: PropTypes.func.isRequired,
371
- deployPreview: PropTypes.object,
372
- loadDeployPreview: PropTypes.func.isRequired,
373
- currentStatus: PropTypes.string,
374
- user: PropTypes.object,
375
- location: PropTypes.shape({
376
- pathname: PropTypes.string,
377
- search: PropTypes.string
378
- }),
379
- hasChanged: PropTypes.bool,
380
- t: PropTypes.func.isRequired,
381
- retrieveLocalBackup: PropTypes.func.isRequired,
382
- localBackup: ImmutablePropTypes.map,
383
- loadLocalBackup: PropTypes.func,
384
- persistLocalBackup: PropTypes.func.isRequired,
385
- deleteLocalBackup: PropTypes.func
386
- });
387
383
  function mapStateToProps(state, ownProps) {
388
384
  const {
389
385
  collections,