@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.
- package/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +35 -1
- package/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js +11 -7
- package/admin/src/content-manager/components/DynamicTable/CellContent/index.js +6 -5
- package/admin/src/content-manager/components/DynamicTable/TableRows/index.js +5 -0
- package/admin/src/content-manager/components/DynamicTable/index.js +1 -1
- package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +73 -20
- package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +166 -26
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js +17 -1
- package/admin/src/content-manager/components/Inputs/index.js +12 -4
- package/admin/src/content-manager/components/NonRepeatableComponent/index.js +2 -0
- package/admin/src/content-manager/components/RelationInput/RelationInput.js +427 -0
- package/admin/src/content-manager/components/{SelectWrapper → RelationInput/components}/Option.js +15 -25
- package/admin/src/content-manager/components/RelationInput/components/Relation.js +48 -0
- package/admin/src/content-manager/components/RelationInput/components/RelationItem.js +52 -0
- package/admin/src/content-manager/components/RelationInput/components/RelationList.js +52 -0
- package/admin/src/content-manager/components/RelationInput/constants.js +1 -0
- package/admin/src/content-manager/components/RelationInput/index.js +1 -0
- package/admin/src/content-manager/components/RelationInputDataManager/RelationInputDataManager.js +261 -0
- package/admin/src/content-manager/components/RelationInputDataManager/constants.js +8 -0
- package/admin/src/content-manager/components/RelationInputDataManager/index.js +1 -0
- package/admin/src/content-manager/components/{SelectWrapper → RelationInputDataManager}/utils/connect.js +0 -1
- package/admin/src/content-manager/components/RelationInputDataManager/utils/getRelationLink.js +5 -0
- package/admin/src/content-manager/components/RelationInputDataManager/utils/index.js +4 -0
- package/admin/src/content-manager/components/RelationInputDataManager/utils/normalizeRelations.js +65 -0
- package/admin/src/content-manager/components/RelationInputDataManager/utils/normalizeSearchResults.js +12 -0
- package/admin/src/content-manager/components/RelationInputDataManager/utils/select.js +98 -0
- package/admin/src/content-manager/components/RepeatableComponent/DraggedItem/index.js +5 -0
- package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +42 -2
- package/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js +7 -69
- package/admin/src/content-manager/hooks/useRelation/index.js +1 -0
- package/admin/src/content-manager/hooks/useRelation/useRelation.js +81 -0
- package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js +4 -4
- package/admin/src/content-manager/pages/EditSettingsView/index.js +21 -49
- package/admin/src/content-manager/pages/EditSettingsView/reducer.js +0 -25
- package/admin/src/content-manager/pages/EditView/Header/index.js +121 -140
- package/admin/src/content-manager/pages/EditView/Header/utils/index.js +0 -1
- package/admin/src/content-manager/pages/EditView/Header/utils/select.js +4 -2
- package/admin/src/content-manager/pages/EditView/index.js +12 -65
- package/admin/src/content-manager/pages/ListView/FieldPicker/index.js +0 -1
- package/admin/src/content-manager/pages/ListView/index.js +0 -1
- package/admin/src/content-manager/pages/ListViewLayoutManager/index.js +0 -1
- package/admin/src/content-manager/utils/formatLayoutToApi.js +1 -3
- package/admin/src/pages/HomePage/SocialLinks.js +1 -1
- package/admin/src/translations/ar.json +0 -1
- package/admin/src/translations/ca.json +1 -8
- package/admin/src/translations/cs.json +0 -2
- package/admin/src/translations/de.json +4 -12
- package/admin/src/translations/dk.json +3 -11
- package/admin/src/translations/en.json +4 -11
- package/admin/src/translations/es.json +156 -168
- package/admin/src/translations/fr.json +3 -11
- package/admin/src/translations/gu.json +608 -617
- package/admin/src/translations/hi.json +689 -698
- package/admin/src/translations/hu.json +2 -10
- package/admin/src/translations/id.json +2 -10
- package/admin/src/translations/it.json +2 -10
- package/admin/src/translations/ja.json +2 -11
- package/admin/src/translations/ko.json +2 -11
- package/admin/src/translations/ml.json +689 -698
- package/admin/src/translations/ms.json +0 -2
- package/admin/src/translations/nl.json +3 -11
- package/admin/src/translations/pl.json +2 -11
- package/admin/src/translations/pt-BR.json +3 -11
- package/admin/src/translations/pt.json +0 -1
- package/admin/src/translations/ru.json +489 -501
- package/admin/src/translations/sa.json +85 -93
- package/admin/src/translations/sk.json +3 -10
- package/admin/src/translations/sv.json +3 -9
- package/admin/src/translations/th.json +0 -2
- package/admin/src/translations/tr.json +0 -1
- package/admin/src/translations/uk.json +0 -2
- package/admin/src/translations/vi.json +0 -1
- package/admin/src/translations/zh-Hans.json +4 -13
- package/admin/src/translations/zh.json +3 -11
- package/build/{8773.51992277.chunk.js → 1939.e3c87653.chunk.js} +50 -50
- package/build/8738.a30a2160.chunk.js +461 -0
- package/build/962.8651ba3f.chunk.js +184 -0
- package/build/Admin-authenticatedApp.883449a5.chunk.js +80 -0
- package/build/{Admin_homePage.6d5e3236.chunk.js → Admin_homePage.4b2be829.chunk.js} +1 -1
- package/build/{ar-json.d4cb26d9.chunk.js → ar-json.3489463d.chunk.js} +1 -1
- package/build/{ca-json.d16c1d28.chunk.js → ca-json.82df6eab.chunk.js} +1 -1
- package/build/content-manager.933dc286.chunk.js +1201 -0
- package/build/{cs-json.c8f28ba8.chunk.js → cs-json.ce49da5c.chunk.js} +1 -1
- package/build/{de-json.a9b514dc.chunk.js → de-json.0ad554eb.chunk.js} +1 -1
- package/build/{dk-json.09e8d145.chunk.js → dk-json.e195ea1a.chunk.js} +1 -1
- package/build/{en-json.e936d40e.chunk.js → en-json.1889403c.chunk.js} +1 -1
- package/build/{es-json.3a9c7c09.chunk.js → es-json.09f80f6e.chunk.js} +1 -1
- package/build/{fr-json.4ed1fc2c.chunk.js → fr-json.606d056b.chunk.js} +1 -1
- package/build/{gu-json.d8311297.chunk.js → gu-json.9881264f.chunk.js} +1 -1
- package/build/{hi-json.0edb8d29.chunk.js → hi-json.83dcf48f.chunk.js} +1 -1
- package/build/{hu-json.7855529a.chunk.js → hu-json.6f328bce.chunk.js} +1 -1
- package/build/{id-json.df9618f2.chunk.js → id-json.1f3c4303.chunk.js} +1 -1
- package/build/index.html +1 -1
- package/build/{it-json.a21bf078.chunk.js → it-json.494ac432.chunk.js} +1 -1
- package/build/{ja-json.7b0d9067.chunk.js → ja-json.6f262117.chunk.js} +1 -1
- package/build/{ko-json.983c1f8f.chunk.js → ko-json.36dc3b9a.chunk.js} +1 -1
- package/build/main.63e7ea0a.js +9338 -0
- package/build/{ml-json.8dd021c8.chunk.js → ml-json.9566bf9a.chunk.js} +1 -1
- package/build/{ms-json.836ed013.chunk.js → ms-json.ed51e902.chunk.js} +1 -1
- package/build/{nl-json.29d2eb37.chunk.js → nl-json.94c3a289.chunk.js} +1 -1
- package/build/{pl-json.1f04f00c.chunk.js → pl-json.ccc6ef23.chunk.js} +1 -1
- package/build/{pt-BR-json.b4bc8efe.chunk.js → pt-BR-json.744f024d.chunk.js} +1 -1
- package/build/{pt-json.c23020ab.chunk.js → pt-json.3161ca22.chunk.js} +1 -1
- package/build/{ru-json.7ab40ccf.chunk.js → ru-json.d22ea13c.chunk.js} +1 -1
- package/build/{runtime~main.7faf633a.js → runtime~main.3a5e1b07.js} +1 -1
- package/build/{sa-json.c5a9f4ea.chunk.js → sa-json.8fb1c04d.chunk.js} +1 -1
- package/build/{sk-json.e4c24c4e.chunk.js → sk-json.6c7335d4.chunk.js} +1 -1
- package/build/{sv-json.c3f471ae.chunk.js → sv-json.2e589a7d.chunk.js} +1 -1
- package/build/{th-json.a59ffb32.chunk.js → th-json.72e8de3d.chunk.js} +1 -1
- package/build/{tr-json.276e59fe.chunk.js → tr-json.9c44ea0c.chunk.js} +1 -1
- package/build/{uk-json.5b5b9c27.chunk.js → uk-json.c4cd2e24.chunk.js} +1 -1
- package/build/{upload-translation-en-json.004a86c1.chunk.js → upload-translation-en-json.86da7b0a.chunk.js} +1 -1
- package/build/{vi-json.bf3424be.chunk.js → vi-json.f7890025.chunk.js} +1 -1
- package/build/{zh-Hans-json.9c99f8d4.chunk.js → zh-Hans-json.a4d7dc69.chunk.js} +1 -1
- package/build/{zh-json.451a0271.chunk.js → zh-json.66aa2ae1.chunk.js} +1 -1
- package/package.json +7 -7
- package/admin/src/content-manager/components/SelectMany/ListItem.js +0 -102
- package/admin/src/content-manager/components/SelectMany/index.js +0 -148
- package/admin/src/content-manager/components/SelectOne/SingleValue.js +0 -67
- package/admin/src/content-manager/components/SelectOne/index.js +0 -97
- package/admin/src/content-manager/components/SelectWrapper/Label.js +0 -60
- package/admin/src/content-manager/components/SelectWrapper/index.js +0 -356
- package/admin/src/content-manager/components/SelectWrapper/utils/index.js +0 -2
- package/admin/src/content-manager/components/SelectWrapper/utils/select.js +0 -45
- package/admin/src/content-manager/pages/EditSettingsView/components/RelationalFieldButton.js +0 -135
- package/admin/src/content-manager/pages/EditSettingsView/components/RelationalFields.js +0 -103
- package/admin/src/content-manager/pages/EditView/Header/utils/getDraftRelations.js +0 -62
- package/build/1669.d1b29c28.chunk.js +0 -1
- package/build/524.8a540ac1.chunk.js +0 -644
- package/build/Admin-authenticatedApp.88fa40ac.chunk.js +0 -80
- package/build/content-manager.8bddf2e6.chunk.js +0 -1178
- package/build/main.6650d2e7.js +0 -9338
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { memo,
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
>
|
|
189
|
-
<
|
|
190
|
-
<
|
|
191
|
-
<
|
|
192
|
-
|
|
193
|
-
{
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
<
|
|
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: '
|
|
228
|
-
defaultMessage: '
|
|
187
|
+
id: getTrad('popUpWarning.warning.unpublish-question'),
|
|
188
|
+
defaultMessage: 'Are you sure you want to unpublish it?',
|
|
229
189
|
})}
|
|
230
|
-
</
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
</
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
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('
|
|
286
|
-
defaultMessage: '
|
|
244
|
+
id: getTrad('popUpWarning.warning.publish-question'),
|
|
245
|
+
defaultMessage: 'Do you still want to publish?',
|
|
287
246
|
})}
|
|
288
|
-
</
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
</
|
|
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);
|
|
@@ -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
|
-
({
|
|
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,
|
|
37
|
+
layouts: { edit, list },
|
|
40
38
|
metadatas: formattedMetadatas,
|
|
41
39
|
};
|
|
42
40
|
};
|
|
@@ -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}",
|