@strapi/admin 4.4.3 → 4.5.0-beta.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/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +35 -1
  2. package/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js +11 -7
  3. package/admin/src/content-manager/components/DynamicTable/CellContent/index.js +6 -5
  4. package/admin/src/content-manager/components/DynamicTable/TableRows/index.js +5 -0
  5. package/admin/src/content-manager/components/DynamicTable/index.js +1 -1
  6. package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +73 -20
  7. package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +166 -26
  8. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js +17 -1
  9. package/admin/src/content-manager/components/Inputs/index.js +12 -4
  10. package/admin/src/content-manager/components/NonRepeatableComponent/index.js +2 -0
  11. package/admin/src/content-manager/components/RelationInput/RelationInput.js +427 -0
  12. package/admin/src/content-manager/components/{SelectWrapper → RelationInput/components}/Option.js +15 -25
  13. package/admin/src/content-manager/components/RelationInput/components/Relation.js +48 -0
  14. package/admin/src/content-manager/components/RelationInput/components/RelationItem.js +52 -0
  15. package/admin/src/content-manager/components/RelationInput/components/RelationList.js +52 -0
  16. package/admin/src/content-manager/components/RelationInput/constants.js +1 -0
  17. package/admin/src/content-manager/components/RelationInput/index.js +1 -0
  18. package/admin/src/content-manager/components/RelationInputDataManager/RelationInputDataManager.js +261 -0
  19. package/admin/src/content-manager/components/RelationInputDataManager/constants.js +8 -0
  20. package/admin/src/content-manager/components/RelationInputDataManager/index.js +1 -0
  21. package/admin/src/content-manager/components/{SelectWrapper → RelationInputDataManager}/utils/connect.js +0 -1
  22. package/admin/src/content-manager/components/RelationInputDataManager/utils/getRelationLink.js +5 -0
  23. package/admin/src/content-manager/components/RelationInputDataManager/utils/index.js +4 -0
  24. package/admin/src/content-manager/components/RelationInputDataManager/utils/normalizeRelations.js +65 -0
  25. package/admin/src/content-manager/components/RelationInputDataManager/utils/normalizeSearchResults.js +12 -0
  26. package/admin/src/content-manager/components/RelationInputDataManager/utils/select.js +98 -0
  27. package/admin/src/content-manager/components/RepeatableComponent/DraggedItem/index.js +5 -0
  28. package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +42 -2
  29. package/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js +7 -69
  30. package/admin/src/content-manager/hooks/useRelation/index.js +1 -0
  31. package/admin/src/content-manager/hooks/useRelation/useRelation.js +81 -0
  32. package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js +4 -4
  33. package/admin/src/content-manager/pages/EditSettingsView/index.js +21 -49
  34. package/admin/src/content-manager/pages/EditSettingsView/reducer.js +0 -25
  35. package/admin/src/content-manager/pages/EditView/Header/index.js +121 -140
  36. package/admin/src/content-manager/pages/EditView/Header/utils/index.js +0 -1
  37. package/admin/src/content-manager/pages/EditView/Header/utils/select.js +4 -2
  38. package/admin/src/content-manager/pages/EditView/index.js +12 -65
  39. package/admin/src/content-manager/pages/ListView/FieldPicker/index.js +0 -1
  40. package/admin/src/content-manager/pages/ListView/index.js +0 -1
  41. package/admin/src/content-manager/pages/ListViewLayoutManager/index.js +0 -1
  42. package/admin/src/content-manager/utils/formatLayoutToApi.js +1 -3
  43. package/admin/src/pages/HomePage/SocialLinks.js +1 -1
  44. package/admin/src/translations/ar.json +0 -1
  45. package/admin/src/translations/ca.json +1 -8
  46. package/admin/src/translations/cs.json +0 -2
  47. package/admin/src/translations/de.json +4 -12
  48. package/admin/src/translations/dk.json +3 -11
  49. package/admin/src/translations/en.json +4 -11
  50. package/admin/src/translations/es.json +156 -168
  51. package/admin/src/translations/fr.json +3 -11
  52. package/admin/src/translations/gu.json +608 -617
  53. package/admin/src/translations/hi.json +689 -698
  54. package/admin/src/translations/hu.json +2 -10
  55. package/admin/src/translations/id.json +2 -10
  56. package/admin/src/translations/it.json +2 -10
  57. package/admin/src/translations/ja.json +2 -11
  58. package/admin/src/translations/ko.json +2 -11
  59. package/admin/src/translations/ml.json +689 -698
  60. package/admin/src/translations/ms.json +0 -2
  61. package/admin/src/translations/nl.json +3 -11
  62. package/admin/src/translations/pl.json +2 -11
  63. package/admin/src/translations/pt-BR.json +3 -11
  64. package/admin/src/translations/pt.json +0 -1
  65. package/admin/src/translations/ru.json +489 -501
  66. package/admin/src/translations/sa.json +85 -93
  67. package/admin/src/translations/sk.json +3 -10
  68. package/admin/src/translations/sv.json +3 -9
  69. package/admin/src/translations/th.json +0 -2
  70. package/admin/src/translations/tr.json +0 -1
  71. package/admin/src/translations/uk.json +0 -2
  72. package/admin/src/translations/vi.json +0 -1
  73. package/admin/src/translations/zh-Hans.json +4 -13
  74. package/admin/src/translations/zh.json +3 -11
  75. package/build/{8773.51992277.chunk.js → 1939.e3c87653.chunk.js} +50 -50
  76. package/build/8738.a30a2160.chunk.js +461 -0
  77. package/build/962.8651ba3f.chunk.js +184 -0
  78. package/build/Admin-authenticatedApp.883449a5.chunk.js +80 -0
  79. package/build/{Admin_homePage.6d5e3236.chunk.js → Admin_homePage.4b2be829.chunk.js} +1 -1
  80. package/build/{ar-json.d4cb26d9.chunk.js → ar-json.3489463d.chunk.js} +1 -1
  81. package/build/{ca-json.d16c1d28.chunk.js → ca-json.82df6eab.chunk.js} +1 -1
  82. package/build/content-manager.933dc286.chunk.js +1201 -0
  83. package/build/{cs-json.c8f28ba8.chunk.js → cs-json.ce49da5c.chunk.js} +1 -1
  84. package/build/{de-json.a9b514dc.chunk.js → de-json.0ad554eb.chunk.js} +1 -1
  85. package/build/{dk-json.09e8d145.chunk.js → dk-json.e195ea1a.chunk.js} +1 -1
  86. package/build/{en-json.e936d40e.chunk.js → en-json.1889403c.chunk.js} +1 -1
  87. package/build/{es-json.3a9c7c09.chunk.js → es-json.09f80f6e.chunk.js} +1 -1
  88. package/build/{fr-json.4ed1fc2c.chunk.js → fr-json.606d056b.chunk.js} +1 -1
  89. package/build/{gu-json.d8311297.chunk.js → gu-json.9881264f.chunk.js} +1 -1
  90. package/build/{hi-json.0edb8d29.chunk.js → hi-json.83dcf48f.chunk.js} +1 -1
  91. package/build/{hu-json.7855529a.chunk.js → hu-json.6f328bce.chunk.js} +1 -1
  92. package/build/{id-json.df9618f2.chunk.js → id-json.1f3c4303.chunk.js} +1 -1
  93. package/build/index.html +1 -1
  94. package/build/{it-json.a21bf078.chunk.js → it-json.494ac432.chunk.js} +1 -1
  95. package/build/{ja-json.7b0d9067.chunk.js → ja-json.6f262117.chunk.js} +1 -1
  96. package/build/{ko-json.983c1f8f.chunk.js → ko-json.36dc3b9a.chunk.js} +1 -1
  97. package/build/main.63e7ea0a.js +9338 -0
  98. package/build/{ml-json.8dd021c8.chunk.js → ml-json.9566bf9a.chunk.js} +1 -1
  99. package/build/{ms-json.836ed013.chunk.js → ms-json.ed51e902.chunk.js} +1 -1
  100. package/build/{nl-json.29d2eb37.chunk.js → nl-json.94c3a289.chunk.js} +1 -1
  101. package/build/{pl-json.1f04f00c.chunk.js → pl-json.ccc6ef23.chunk.js} +1 -1
  102. package/build/{pt-BR-json.b4bc8efe.chunk.js → pt-BR-json.744f024d.chunk.js} +1 -1
  103. package/build/{pt-json.c23020ab.chunk.js → pt-json.3161ca22.chunk.js} +1 -1
  104. package/build/{ru-json.7ab40ccf.chunk.js → ru-json.d22ea13c.chunk.js} +1 -1
  105. package/build/{runtime~main.7faf633a.js → runtime~main.3a5e1b07.js} +1 -1
  106. package/build/{sa-json.c5a9f4ea.chunk.js → sa-json.8fb1c04d.chunk.js} +1 -1
  107. package/build/{sk-json.e4c24c4e.chunk.js → sk-json.6c7335d4.chunk.js} +1 -1
  108. package/build/{sv-json.c3f471ae.chunk.js → sv-json.2e589a7d.chunk.js} +1 -1
  109. package/build/{th-json.a59ffb32.chunk.js → th-json.72e8de3d.chunk.js} +1 -1
  110. package/build/{tr-json.276e59fe.chunk.js → tr-json.9c44ea0c.chunk.js} +1 -1
  111. package/build/{uk-json.5b5b9c27.chunk.js → uk-json.c4cd2e24.chunk.js} +1 -1
  112. package/build/{upload-translation-en-json.004a86c1.chunk.js → upload-translation-en-json.86da7b0a.chunk.js} +1 -1
  113. package/build/{vi-json.bf3424be.chunk.js → vi-json.f7890025.chunk.js} +1 -1
  114. package/build/{zh-Hans-json.9c99f8d4.chunk.js → zh-Hans-json.a4d7dc69.chunk.js} +1 -1
  115. package/build/{zh-json.451a0271.chunk.js → zh-json.66aa2ae1.chunk.js} +1 -1
  116. package/package.json +7 -7
  117. package/admin/src/content-manager/components/SelectMany/ListItem.js +0 -102
  118. package/admin/src/content-manager/components/SelectMany/index.js +0 -148
  119. package/admin/src/content-manager/components/SelectOne/SingleValue.js +0 -67
  120. package/admin/src/content-manager/components/SelectOne/index.js +0 -97
  121. package/admin/src/content-manager/components/SelectWrapper/Label.js +0 -60
  122. package/admin/src/content-manager/components/SelectWrapper/index.js +0 -356
  123. package/admin/src/content-manager/components/SelectWrapper/utils/index.js +0 -2
  124. package/admin/src/content-manager/components/SelectWrapper/utils/select.js +0 -45
  125. package/admin/src/content-manager/pages/EditSettingsView/components/RelationalFieldButton.js +0 -135
  126. package/admin/src/content-manager/pages/EditSettingsView/components/RelationalFields.js +0 -103
  127. package/admin/src/content-manager/pages/EditView/Header/utils/getDraftRelations.js +0 -62
  128. package/build/1669.d1b29c28.chunk.js +0 -1
  129. package/build/524.8a540ac1.chunk.js +0 -644
  130. package/build/Admin-authenticatedApp.88fa40ac.chunk.js +0 -80
  131. package/build/content-manager.8bddf2e6.chunk.js +0 -1178
  132. package/build/main.6650d2e7.js +0 -9338
@@ -1,4 +1,4 @@
1
- import React, { memo, useRef, useState } from 'react';
1
+ import React, { memo, useState } from 'react';
2
2
  import { useIntl } from 'react-intl';
3
3
  import { useHistory } from 'react-router-dom';
4
4
  import PropTypes from 'prop-types';
@@ -17,12 +17,17 @@ import { Typography } from '@strapi/design-system/Typography';
17
17
  import { Stack } from '@strapi/design-system/Stack';
18
18
  import ExclamationMarkCircle from '@strapi/icons/ExclamationMarkCircle';
19
19
  import Check from '@strapi/icons/Check';
20
+ import styled from 'styled-components';
20
21
  import { getTrad } from '../../../utils';
21
- import { connect, getDraftRelations, select } from './utils';
22
+ import { connect, select } from './utils';
23
+
24
+ // TODO: replace with textAlign Typography props when available
25
+ const FlexTextAlign = styled(Flex)`
26
+ text-align: center;
27
+ `;
22
28
 
23
29
  const Header = ({
24
30
  allowedActions: { canUpdate, canCreate, canPublish },
25
- componentLayouts,
26
31
  initialData,
27
32
  isCreatingEntry,
28
33
  isSingleType,
@@ -32,12 +37,12 @@ const Header = ({
32
37
  onPublish,
33
38
  onUnpublish,
34
39
  status,
40
+ publishConfirmation: { show: showPublishConfirmation, draftCount },
41
+ onPublishPromptDismissal,
35
42
  }) => {
36
43
  const { goBack } = useHistory();
37
44
  const [showWarningUnpublish, setWarningUnpublish] = useState(false);
38
- const [showWarningDraftRelation, setShowWarningDraftRelation] = useState(false);
39
45
  const { formatMessage } = useIntl();
40
- const draftRelationsCountRef = useRef(0);
41
46
 
42
47
  const currentContentTypeMainField = get(layout, ['settings', 'mainField'], 'id');
43
48
  const currentContentTypeName = get(layout, ['info', 'displayName'], 'NOT FOUND');
@@ -59,14 +64,6 @@ const Header = ({
59
64
  title = currentContentTypeName;
60
65
  }
61
66
 
62
- const checkIfHasDraftRelations = () => {
63
- const count = getDraftRelations(modifiedData, layout, componentLayouts);
64
-
65
- draftRelationsCountRef.current = count;
66
-
67
- return count;
68
- };
69
-
70
67
  let primaryAction = null;
71
68
 
72
69
  if (isCreatingEntry && canCreate) {
@@ -97,17 +94,7 @@ const Header = ({
97
94
  ? { id: 'app.utils.unpublish', defaultMessage: 'Unpublish' }
98
95
  : { id: 'app.utils.publish', defaultMessage: 'Publish' };
99
96
 
100
- /* eslint-disable indent */
101
- const onClick = isPublished
102
- ? () => setWarningUnpublish(true)
103
- : () => {
104
- if (checkIfHasDraftRelations() === 0) {
105
- onPublish();
106
- } else {
107
- setShowWarningDraftRelation(true);
108
- }
109
- };
110
- /* eslint-enable indent */
97
+ const onClick = isPublished ? () => setWarningUnpublish(true) : () => onPublish();
111
98
 
112
99
  primaryAction = (
113
100
  <Flex>
@@ -135,13 +122,6 @@ const Header = ({
135
122
  }
136
123
 
137
124
  const toggleWarningUnpublish = () => setWarningUnpublish((prevState) => !prevState);
138
- const toggleWarningDraftRelation = () => setShowWarningDraftRelation((prevState) => !prevState);
139
-
140
- const handlePublish = () => {
141
- toggleWarningDraftRelation();
142
- draftRelationsCountRef.current = 0;
143
- onPublish();
144
- };
145
125
 
146
126
  const handleUnpublish = () => {
147
127
  toggleWarningUnpublish();
@@ -178,118 +158,115 @@ const Header = ({
178
158
  </Link>
179
159
  }
180
160
  />
181
- {showWarningUnpublish && (
182
- <Dialog
183
- onClose={toggleWarningUnpublish}
184
- title="Confirmation"
185
- labelledBy="confirmation"
186
- describedBy="confirm-description"
187
- isOpen={showWarningUnpublish}
188
- >
189
- <DialogBody icon={<ExclamationMarkCircle />}>
190
- <Stack spacing={2}>
191
- <Flex justifyContent="center" style={{ textAlign: 'center' }}>
192
- <Typography id="confirm-description">
193
- {formatMessage(
194
- {
195
- id: getTrad('popUpWarning.warning.unpublish'),
196
- defaultMessage:
197
- 'Unpublish this content will automatically change it to a draft.',
198
- },
199
- {
200
- br: () => <br />,
201
- }
202
- )}
203
- </Typography>
204
- </Flex>
205
- <Flex justifyContent="center" style={{ textAlign: 'center' }}>
206
- <Typography id="confirm-description">
207
- {formatMessage({
208
- id: getTrad('popUpWarning.warning.unpublish-question'),
209
- defaultMessage: 'Are you sure you want to unpublish it?',
210
- })}
211
- </Typography>
212
- </Flex>
213
- </Stack>
214
- </DialogBody>
215
- <DialogFooter
216
- startAction={
217
- <Button onClick={toggleWarningUnpublish} variant="tertiary">
218
- {formatMessage({
219
- id: 'components.popUpWarning.button.cancel',
220
- defaultMessage: 'No, cancel',
221
- })}
222
- </Button>
223
- }
224
- endAction={
225
- <Button variant="danger-light" onClick={handleUnpublish}>
161
+ <Dialog
162
+ onClose={toggleWarningUnpublish}
163
+ title="Confirmation"
164
+ labelledBy="confirmation"
165
+ describedBy="confirm-description"
166
+ isOpen={showWarningUnpublish}
167
+ >
168
+ <DialogBody icon={<ExclamationMarkCircle />}>
169
+ <Stack spacing={2}>
170
+ <Flex justifyContent="center" style={{ textAlign: 'center' }}>
171
+ <Typography id="confirm-description">
172
+ {formatMessage(
173
+ {
174
+ id: getTrad('popUpWarning.warning.unpublish'),
175
+ defaultMessage:
176
+ 'Unpublish this content will automatically change it to a draft.',
177
+ },
178
+ {
179
+ br: () => <br />,
180
+ }
181
+ )}
182
+ </Typography>
183
+ </Flex>
184
+ <Flex justifyContent="center" style={{ textAlign: 'center' }}>
185
+ <Typography id="confirm-description">
226
186
  {formatMessage({
227
- id: 'components.popUpWarning.button.confirm',
228
- defaultMessage: 'Yes, confirm',
187
+ id: getTrad('popUpWarning.warning.unpublish-question'),
188
+ defaultMessage: 'Are you sure you want to unpublish it?',
229
189
  })}
230
- </Button>
231
- }
232
- />
233
- </Dialog>
234
- )}
235
-
236
- {showWarningDraftRelation && (
237
- <Dialog
238
- onClose={toggleWarningDraftRelation}
239
- title="Confirmation"
240
- labelledBy="confirmation"
241
- describedBy="confirm-description"
242
- isOpen={showWarningDraftRelation}
243
- >
244
- <DialogBody icon={<ExclamationMarkCircle />}>
245
- <Stack spacing={2}>
246
- <Flex justifyContent="center" style={{ textAlign: 'center' }}>
247
- <Typography id="confirm-description">
248
- {draftRelationsCountRef.current}
249
- {formatMessage(
250
- {
251
- id: getTrad(`popUpwarning.warning.has-draft-relations.message`),
252
- defaultMessage:
253
- '<b>{count, plural, =0 { of your content relations is} one { of your content relations is} other { of your content relations are}}</b> not published yet.<br></br>It might engender broken links and errors on your project.',
254
- },
255
- {
256
- br: () => <br />,
257
- b: (chunks) => <Typography fontWeight="bold">{chunks}</Typography>,
258
- count: draftRelationsCountRef.current,
259
- }
260
- )}
261
- </Typography>
262
- </Flex>
263
- <Flex justifyContent="center" style={{ textAlign: 'center' }}>
264
- <Typography id="confirm-description">
265
- {formatMessage({
266
- id: getTrad('popUpWarning.warning.publish-question'),
267
- defaultMessage: 'Do you still want to publish it?',
268
- })}
269
- </Typography>
270
- </Flex>
271
- </Stack>
272
- </DialogBody>
273
- <DialogFooter
274
- startAction={
275
- <Button onClick={toggleWarningDraftRelation} variant="tertiary">
276
- {formatMessage({
277
- id: 'components.popUpWarning.button.cancel',
278
- defaultMessage: 'No, cancel',
279
- })}
280
- </Button>
281
- }
282
- endAction={
283
- <Button variant="success" onClick={handlePublish}>
190
+ </Typography>
191
+ </Flex>
192
+ </Stack>
193
+ </DialogBody>
194
+ <DialogFooter
195
+ startAction={
196
+ <Button onClick={toggleWarningUnpublish} variant="tertiary">
197
+ {formatMessage({
198
+ id: 'components.popUpWarning.button.cancel',
199
+ defaultMessage: 'Cancel',
200
+ })}
201
+ </Button>
202
+ }
203
+ endAction={
204
+ <Button variant="danger-light" onClick={handleUnpublish}>
205
+ {formatMessage({
206
+ id: 'components.popUpWarning.button.confirm',
207
+ defaultMessage: 'Confirm',
208
+ })}
209
+ </Button>
210
+ }
211
+ />
212
+ </Dialog>
213
+ <Dialog
214
+ onClose={onPublishPromptDismissal}
215
+ title={formatMessage({
216
+ id: getTrad(`popUpWarning.warning.has-draft-relations.title`),
217
+ defaultMessage: 'Confirmation',
218
+ })}
219
+ labelledBy="confirmation"
220
+ describedBy="confirm-description"
221
+ isOpen={showPublishConfirmation}
222
+ >
223
+ <DialogBody icon={<ExclamationMarkCircle />}>
224
+ <Stack spacing={2}>
225
+ <FlexTextAlign justifyContent="center">
226
+ <Typography id="confirm-description">
227
+ {draftCount}
228
+ {formatMessage(
229
+ {
230
+ id: getTrad(`popUpwarning.warning.has-draft-relations.message`),
231
+ defaultMessage:
232
+ '<b>{count, plural, one { relation is} other { relations are}}</b> not published yet and might lead to unexpected behavior.',
233
+ },
234
+ {
235
+ b: (chunks) => <Typography fontWeight="bold">{chunks}</Typography>,
236
+ count: draftCount,
237
+ }
238
+ )}
239
+ </Typography>
240
+ </FlexTextAlign>
241
+ <FlexTextAlign justifyContent="center">
242
+ <Typography id="confirm-description">
284
243
  {formatMessage({
285
- id: getTrad('popUpwarning.warning.has-draft-relations.button-confirm'),
286
- defaultMessage: 'Yes, publish',
244
+ id: getTrad('popUpWarning.warning.publish-question'),
245
+ defaultMessage: 'Do you still want to publish?',
287
246
  })}
288
- </Button>
289
- }
290
- />
291
- </Dialog>
292
- )}
247
+ </Typography>
248
+ </FlexTextAlign>
249
+ </Stack>
250
+ </DialogBody>
251
+ <DialogFooter
252
+ startAction={
253
+ <Button onClick={onPublishPromptDismissal} variant="tertiary">
254
+ {formatMessage({
255
+ id: 'components.popUpWarning.button.cancel',
256
+ defaultMessage: 'Cancel',
257
+ })}
258
+ </Button>
259
+ }
260
+ endAction={
261
+ <Button variant="success" onClick={onPublish}>
262
+ {formatMessage({
263
+ id: getTrad('popUpwarning.warning.has-draft-relations.button-confirm'),
264
+ defaultMessage: 'Publish',
265
+ })}
266
+ </Button>
267
+ }
268
+ />
269
+ </Dialog>
293
270
  </>
294
271
  );
295
272
  };
@@ -300,7 +277,6 @@ Header.propTypes = {
300
277
  canCreate: PropTypes.bool.isRequired,
301
278
  canPublish: PropTypes.bool.isRequired,
302
279
  }).isRequired,
303
- componentLayouts: PropTypes.object.isRequired,
304
280
  initialData: PropTypes.object.isRequired,
305
281
  isCreatingEntry: PropTypes.bool.isRequired,
306
282
  isSingleType: PropTypes.bool.isRequired,
@@ -310,6 +286,11 @@ Header.propTypes = {
310
286
  modifiedData: PropTypes.object.isRequired,
311
287
  onPublish: PropTypes.func.isRequired,
312
288
  onUnpublish: PropTypes.func.isRequired,
289
+ publishConfirmation: PropTypes.shape({
290
+ show: PropTypes.bool.isRequired,
291
+ draftCount: PropTypes.number.isRequired,
292
+ }).isRequired,
293
+ onPublishPromptDismissal: PropTypes.func.isRequired,
313
294
  };
314
295
 
315
296
  const Memoized = memo(Header, isEqualFastCompare);
@@ -1,3 +1,2 @@
1
1
  export { default as connect } from './connect';
2
- export { default as getDraftRelations } from './getDraftRelations';
3
2
  export { default as select } from './select';
@@ -2,7 +2,6 @@ import { useCMEditViewDataManager } from '@strapi/helper-plugin';
2
2
 
3
3
  function useSelect() {
4
4
  const {
5
- allLayoutData,
6
5
  initialData,
7
6
  isCreatingEntry,
8
7
  isSingleType,
@@ -12,10 +11,11 @@ function useSelect() {
12
11
  modifiedData,
13
12
  onPublish,
14
13
  onUnpublish,
14
+ publishConfirmation,
15
+ onPublishPromptDismissal,
15
16
  } = useCMEditViewDataManager();
16
17
 
17
18
  return {
18
- componentLayouts: allLayoutData.components,
19
19
  initialData,
20
20
  isCreatingEntry,
21
21
  isSingleType,
@@ -25,6 +25,8 @@ function useSelect() {
25
25
  modifiedData,
26
26
  onPublish,
27
27
  onUnpublish,
28
+ publishConfirmation,
29
+ onPublishPromptDismissal,
28
30
  };
29
31
  }
30
32
 
@@ -10,11 +10,9 @@ import {
10
10
  import { useIntl } from 'react-intl';
11
11
  import { ContentLayout } from '@strapi/design-system/Layout';
12
12
  import { Box } from '@strapi/design-system/Box';
13
- import { Divider } from '@strapi/design-system/Divider';
14
13
  import { Grid, GridItem } from '@strapi/design-system/Grid';
15
14
  import { Main } from '@strapi/design-system/Main';
16
15
  import { Stack } from '@strapi/design-system/Stack';
17
- import { Typography } from '@strapi/design-system/Typography';
18
16
  import Layer from '@strapi/icons/Layer';
19
17
  import Pencil from '@strapi/icons/Pencil';
20
18
  import { InjectionZone } from '../../../shared/components';
@@ -22,7 +20,6 @@ import permissions from '../../../permissions';
22
20
  import DynamicZone from '../../components/DynamicZone';
23
21
  import FieldComponent from '../../components/FieldComponent';
24
22
  import Inputs from '../../components/Inputs';
25
- import SelectWrapper from '../../components/SelectWrapper';
26
23
  import CollectionTypeFormWrapper from '../../components/CollectionTypeFormWrapper';
27
24
  import EditViewDataManagerProvider from '../../components/EditViewDataManagerProvider';
28
25
  import SingleTypeFormWrapper from '../../components/SingleTypeFormWrapper';
@@ -89,9 +86,6 @@ const EditView = ({
89
86
  );
90
87
  }, [currentContentTypeLayoutData]);
91
88
 
92
- const relationsLayout = currentContentTypeLayoutData.layouts.editRelations;
93
- const displayedRelationsLength = relationsLayout.length;
94
-
95
89
  return (
96
90
  <DataManagementWrapper allLayoutData={layout} slug={slug} id={id} origin={origin}>
97
91
  {({
@@ -104,6 +98,7 @@ const EditView = ({
104
98
  onDeleteSucceeded,
105
99
  onPost,
106
100
  onPublish,
101
+ onDraftRelationCheck,
107
102
  onPut,
108
103
  onUnpublish,
109
104
  redirectionLink,
@@ -123,6 +118,7 @@ const EditView = ({
123
118
  isSingleType={isSingleType}
124
119
  onPost={onPost}
125
120
  onPublish={onPublish}
121
+ onDraftRelationCheck={onDraftRelationCheck}
126
122
  onPut={onPut}
127
123
  onUnpublish={onUnpublish}
128
124
  readActionAllowedFields={readActionAllowedFields}
@@ -179,7 +175,14 @@ const EditView = ({
179
175
  return (
180
176
  <Grid gap={4} key={gridIndex}>
181
177
  {grid.map(
182
- ({ fieldSchema, labelAction, metadatas, name, size }) => {
178
+ ({
179
+ fieldSchema,
180
+ labelAction,
181
+ metadatas,
182
+ name,
183
+ size,
184
+ queryInfos,
185
+ }) => {
183
186
  const isComponent = fieldSchema.type === 'component';
184
187
 
185
188
  if (isComponent) {
@@ -213,10 +216,12 @@ const EditView = ({
213
216
  return (
214
217
  <GridItem col={size} key={name} s={12} xs={12}>
215
218
  <Inputs
219
+ size={size}
216
220
  fieldSchema={fieldSchema}
217
221
  keys={name}
218
222
  labelAction={labelAction}
219
223
  metadatas={metadatas}
224
+ queryInfos={queryInfos}
220
225
  />
221
226
  </GridItem>
222
227
  );
@@ -250,64 +255,6 @@ const EditView = ({
250
255
  <Informations />
251
256
  <InjectionZone area="contentManager.editView.informations" />
252
257
  </Box>
253
- {displayedRelationsLength > 0 && (
254
- <Box
255
- as="aside"
256
- aria-labelledby="relations-title"
257
- background="neutral0"
258
- borderColor="neutral150"
259
- hasRadius
260
- paddingBottom={4}
261
- paddingLeft={4}
262
- paddingRight={4}
263
- paddingTop={6}
264
- shadow="tableShadow"
265
- >
266
- <Typography variant="sigma" textColor="neutral600" id="relations-title">
267
- {formatMessage(
268
- {
269
- id: getTrad('containers.Edit.relations'),
270
- defaultMessage:
271
- '{number, plural, =0 {relations} one {relation} other {relations}}',
272
- },
273
- { number: displayedRelationsLength }
274
- )}
275
- </Typography>
276
- <Box paddingTop={2} paddingBottom={6}>
277
- <Divider />
278
- </Box>
279
- <Stack spacing={4}>
280
- {relationsLayout.map(
281
- ({ name, fieldSchema, labelAction, metadatas, queryInfos }) => {
282
- return (
283
- <SelectWrapper
284
- {...fieldSchema}
285
- {...metadatas}
286
- key={name}
287
- description={metadatas.description}
288
- intlLabel={{
289
- id: metadatas.label,
290
- defaultMessage: metadatas.label,
291
- }}
292
- labelAction={labelAction}
293
- name={name}
294
- relationsType={fieldSchema.relationType}
295
- queryInfos={queryInfos}
296
- placeholder={
297
- metadatas.placeholder
298
- ? {
299
- id: metadatas.placeholder,
300
- defaultMessage: metadatas.placeholder,
301
- }
302
- : null
303
- }
304
- />
305
- );
306
- }
307
- )}
308
- </Stack>
309
- </Box>
310
- )}
311
258
  <Box as="aside" aria-labelledby="links">
312
259
  <Stack spacing={2}>
313
260
  <InjectionZone area="contentManager.editView.right-links" slug={slug} />
@@ -85,7 +85,6 @@ FieldPicker.propTypes = {
85
85
  metadatas: PropTypes.object.isRequired,
86
86
  layouts: PropTypes.shape({
87
87
  list: PropTypes.array.isRequired,
88
- editRelations: PropTypes.array,
89
88
  }).isRequired,
90
89
  options: PropTypes.object.isRequired,
91
90
  settings: PropTypes.object.isRequired,
@@ -370,7 +370,6 @@ ListView.propTypes = {
370
370
  info: PropTypes.shape({ displayName: PropTypes.string.isRequired }).isRequired,
371
371
  layouts: PropTypes.shape({
372
372
  list: PropTypes.array.isRequired,
373
- editRelations: PropTypes.array,
374
373
  }).isRequired,
375
374
  options: PropTypes.object.isRequired,
376
375
  settings: PropTypes.object.isRequired,
@@ -45,7 +45,6 @@ ListViewLayout.propTypes = {
45
45
  metadatas: PropTypes.object.isRequired,
46
46
  layouts: PropTypes.shape({
47
47
  list: PropTypes.array.isRequired,
48
- editRelations: PropTypes.array,
49
48
  }).isRequired,
50
49
  options: PropTypes.object.isRequired,
51
50
  settings: PropTypes.object.isRequired,
@@ -8,8 +8,6 @@ const formatLayoutToApi = ({ layouts, metadatas, ...rest }) => {
8
8
 
9
9
  return obj;
10
10
  });
11
- const editRelations = layouts.editRelations.map(({ name }) => name);
12
-
13
11
  const formattedMetadatas = Object.keys(metadatas).reduce((acc, current) => {
14
12
  const currentMetadatas = get(metadatas, [current], {});
15
13
  let editMetadatas = currentMetadatas.edit;
@@ -36,7 +34,7 @@ const formatLayoutToApi = ({ layouts, metadatas, ...rest }) => {
36
34
 
37
35
  return {
38
36
  ...rest,
39
- layouts: { edit, editRelations, list },
37
+ layouts: { edit, list },
40
38
  metadatas: formattedMetadatas,
41
39
  };
42
40
  };
@@ -79,7 +79,7 @@ const socialLinks = [
79
79
  },
80
80
  {
81
81
  name: 'Discord',
82
- link: 'https://slack.strapi.io/',
82
+ link: 'https://discord.strapi.io/',
83
83
  icon: <StyledDiscord />,
84
84
  alt: 'discord',
85
85
  },
@@ -154,7 +154,6 @@
154
154
  "content-manager.containers.SettingPage.editSettings.description": "اسحب الحقول وأفلتها لإنشاء التخطيط",
155
155
  "content-manager.containers.SettingPage.editSettings.title": "التعديل - الإعدادات",
156
156
  "content-manager.containers.SettingPage.listSettings.title": "قائمة( إعدادات)",
157
- "content-manager.containers.SettingPage.relations": "المجالات العلائقية",
158
157
  "content-manager.containers.SettingsPage.Block.contentType.description": "تكوين الإعدادات المحددة",
159
158
  "content-manager.containers.SettingsPage.Block.generalSettings.title": "عام",
160
159
  "content-manager.emptyAttributes.title": "لا توجد حقول بعد",
@@ -548,7 +548,6 @@
548
548
  "content-manager.containers.ListPage.table-headers.publishedAt": "Estat",
549
549
  "content-manager.containers.ListSettingsView.modal-form.edit-label": "Edita l'etiqueta",
550
550
  "content-manager.containers.SettingPage.add.field": "Inserir un altre camp",
551
- "content-manager.containers.SettingPage.add.relational-field": "Inserir un altre camp relacional",
552
551
  "content-manager.containers.SettingPage.attributes": "Camps d'atributs",
553
552
  "content-manager.containers.SettingPage.attributes.description": "Definiu l'ordre dels vostres atributs",
554
553
  "content-manager.containers.SettingPage.editSettings.description": "Arrossega i deixa anar els camps per construir el disseny",
@@ -560,7 +559,6 @@
560
559
  "content-manager.containers.SettingPage.listSettings.description": "Configureu les opcions per a aquest Tipus de Col·lecció",
561
560
  "content-manager.containers.SettingPage.listSettings.title": "Llista (configuracions)",
562
561
  "content-manager.containers.SettingPage.pluginHeaderDescription": "Configureu els paràmetres específics per a aquest Tipus de Col·lecció",
563
- "content-manager.containers.SettingPage.relations": "Camps relacionals",
564
562
  "content-manager.containers.SettingPage.settings": "Ajustaments",
565
563
  "content-manager.containers.SettingPage.view": "Veure",
566
564
  "content-manager.containers.SettingViewModel.pluginHeader.title": "Administrador de contingut - {name}",
@@ -635,13 +633,8 @@
635
633
  "content-manager.plugin.description.short": "Veure, editar i eliminar informació de la base de dades de manera ràpida.",
636
634
  "content-manager.popUpWarning.bodyMessage.contentType.delete": "Esteu segur de voler eliminar aquest registre?",
637
635
  "content-manager.popUpWarning.bodyMessage.contentType.delete.all": "Esteu segur de voler eliminar aquests registres?",
638
- "content-manager.popUpWarning.warning.cancelAllSettings": "Esteu segur de voler cancel·lar els vostres canvis?",
639
636
  "content-manager.popUpWarning.warning.publish-question": "Encara vols publicar-ho?",
640
- "content-manager.popUpWarning.warning.unpublish": "Si anul·leu la publicació d'aquest contingut, es convertirà automàticament en un esborrany.",
641
- "content-manager.popUpWarning.warning.unpublish-question": "Esteu segur que voleu anul·lar la publicació?",
642
- "content-manager.popUpWarning.warning.updateAllSettings": "Això modificarà totes les vostres configuracions",
643
637
  "content-manager.popUpwarning.warning.has-draft-relations.button-confirm": "Sí, publicar",
644
- "content-manager.popUpwarning.warning.has-draft-relations.message": "<b>{count, plural, =0 { content relations is} one { of content relations is} other { of content relations are}}<\/b> no published yet.<br><\/br>It might engender broken links and errors on your project.",
645
638
  "content-manager.popover.display-relations.label": "Mostrar relacions",
646
639
  "content-manager.success.record.delete": "Eliminat",
647
640
  "content-manager.success.record.publish": "Publicat",
@@ -696,4 +689,4 @@
696
689
  "request.error.model.unknown": "Aquest model no existeix",
697
690
  "skipToContent": "Saltar al contingut",
698
691
  "submit": "Enviar"
699
- }
692
+ }
@@ -194,7 +194,6 @@
194
194
  "content-manager.containers.ListPage.displayedFields": "Zobrazená pole",
195
195
  "content-manager.containers.ListSettingsView.modal-form.edit-label": "Upravit popisek",
196
196
  "content-manager.containers.SettingPage.add.field": "Vložit další pole",
197
- "content-manager.containers.SettingPage.add.relational-field": "Vložit další relační pole",
198
197
  "content-manager.containers.SettingPage.attributes": "Pole atributů",
199
198
  "content-manager.containers.SettingPage.attributes.description": "Nastavit pořadí atributů",
200
199
  "content-manager.containers.SettingPage.editSettings.description": "Přesuňte pole k vybudování rozložení",
@@ -203,7 +202,6 @@
203
202
  "content-manager.containers.SettingPage.editSettings.title": "Upravit pohled (nastavení)",
204
203
  "content-manager.containers.SettingPage.layout": "Rozložení",
205
204
  "content-manager.containers.SettingPage.listSettings.title": "Zobrazení seznamu (nastavení)",
206
- "content-manager.containers.SettingPage.relations": "Relační pole",
207
205
  "content-manager.containers.SettingPage.settings": "Nastavení",
208
206
  "content-manager.containers.SettingPage.view": "Zobrazení",
209
207
  "content-manager.containers.SettingViewModel.pluginHeader.title": "Správce obsahu - {name}",