@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,49 +1,16 @@
|
|
|
1
1
|
import { cloneDeep, get, set } from 'lodash';
|
|
2
|
-
import {
|
|
2
|
+
import { mergeMetasWithSchema } from '../../../utils';
|
|
3
3
|
|
|
4
4
|
const getRelationModel = (targetModel, models) => models.find((model) => model.uid === targetModel);
|
|
5
5
|
|
|
6
|
-
// editRelations is an array of strings...
|
|
7
|
-
const formatEditRelationsLayoutWithMetas = (contentTypeConfiguration, models) => {
|
|
8
|
-
const formatted = contentTypeConfiguration.layouts.editRelations.reduce((acc, current) => {
|
|
9
|
-
const fieldSchema = get(contentTypeConfiguration, ['attributes', current], {});
|
|
10
|
-
const targetModelUID = get(
|
|
11
|
-
contentTypeConfiguration,
|
|
12
|
-
['attributes', current, 'targetModel'],
|
|
13
|
-
null
|
|
14
|
-
);
|
|
15
|
-
const targetModelSchema = getRelationModel(targetModelUID, models);
|
|
16
|
-
const targetModelPluginOptions = targetModelSchema.pluginOptions || {};
|
|
17
|
-
const metadatas = get(contentTypeConfiguration, ['metadatas', current, 'edit'], {});
|
|
18
|
-
const size = 6;
|
|
19
|
-
|
|
20
|
-
const queryInfos = generateRelationQueryInfos(contentTypeConfiguration, current, models);
|
|
21
|
-
|
|
22
|
-
acc.push({
|
|
23
|
-
name: current,
|
|
24
|
-
size,
|
|
25
|
-
fieldSchema,
|
|
26
|
-
metadatas,
|
|
27
|
-
queryInfos,
|
|
28
|
-
targetModelPluginOptions,
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
return acc;
|
|
32
|
-
}, []);
|
|
33
|
-
|
|
34
|
-
return formatted;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
6
|
const formatLayouts = (initialData, models) => {
|
|
38
7
|
const data = createMetasSchema(initialData, models);
|
|
39
8
|
|
|
40
9
|
const formattedCTEditLayout = formatLayoutWithMetas(data.contentType, null, models);
|
|
41
10
|
const ctUid = data.contentType.uid;
|
|
42
|
-
const formattedEditRelationsLayout = formatEditRelationsLayoutWithMetas(data.contentType, models);
|
|
43
11
|
const formattedListLayout = formatListLayoutWithMetas(data.contentType, data.components);
|
|
44
12
|
|
|
45
13
|
set(data, ['contentType', 'layouts', 'edit'], formattedCTEditLayout);
|
|
46
|
-
set(data, ['contentType', 'layouts', 'editRelations'], formattedEditRelationsLayout);
|
|
47
14
|
set(data, ['contentType', 'layouts', 'list'], formattedListLayout);
|
|
48
15
|
|
|
49
16
|
Object.keys(data.components).forEach((compoUID) => {
|
|
@@ -126,7 +93,6 @@ const formatLayoutWithMetas = (contentTypeConfiguration, ctUid, models) => {
|
|
|
126
93
|
? generateRelationQueryInfosForComponents(
|
|
127
94
|
contentTypeConfiguration,
|
|
128
95
|
attribute.name,
|
|
129
|
-
ctUid,
|
|
130
96
|
models
|
|
131
97
|
)
|
|
132
98
|
: generateRelationQueryInfos(contentTypeConfiguration, attribute.name, models);
|
|
@@ -155,7 +121,6 @@ const formatListLayoutWithMetas = (contentTypeConfiguration, components) => {
|
|
|
155
121
|
|
|
156
122
|
if (type === 'relation') {
|
|
157
123
|
const queryInfos = {
|
|
158
|
-
endPoint: `collection-types/${contentTypeConfiguration.uid}`,
|
|
159
124
|
defaultParams: {},
|
|
160
125
|
};
|
|
161
126
|
|
|
@@ -194,51 +159,25 @@ const formatListLayoutWithMetas = (contentTypeConfiguration, components) => {
|
|
|
194
159
|
};
|
|
195
160
|
|
|
196
161
|
const generateRelationQueryInfos = (contentTypeConfiguration, fieldName, models) => {
|
|
197
|
-
const uid = contentTypeConfiguration.uid;
|
|
198
|
-
const endPoint = getRequestUrl(`relations/${uid}/${fieldName}`);
|
|
199
|
-
const mainField = get(
|
|
200
|
-
contentTypeConfiguration,
|
|
201
|
-
['metadatas', fieldName, 'edit', 'mainField', 'name'],
|
|
202
|
-
''
|
|
203
|
-
);
|
|
204
162
|
const targetModel = get(contentTypeConfiguration, ['attributes', fieldName, 'targetModel'], '');
|
|
205
|
-
const shouldDisplayRelationLink = getDisplayedModels(models).
|
|
163
|
+
const shouldDisplayRelationLink = getDisplayedModels(models).includes(targetModel);
|
|
206
164
|
|
|
207
|
-
|
|
208
|
-
endPoint,
|
|
209
|
-
containsKey: `${mainField}`,
|
|
165
|
+
return {
|
|
210
166
|
defaultParams: {},
|
|
211
167
|
shouldDisplayRelationLink,
|
|
212
168
|
};
|
|
213
|
-
|
|
214
|
-
return queryInfos;
|
|
215
169
|
};
|
|
216
170
|
|
|
217
|
-
const generateRelationQueryInfosForComponents = (
|
|
218
|
-
contentTypeConfiguration,
|
|
219
|
-
fieldName,
|
|
220
|
-
ctUid,
|
|
221
|
-
models
|
|
222
|
-
) => {
|
|
223
|
-
const endPoint = getRequestUrl(`relations/${ctUid}/${fieldName}`);
|
|
224
|
-
const mainField = get(
|
|
225
|
-
contentTypeConfiguration,
|
|
226
|
-
['metadatas', fieldName, 'edit', 'mainField', 'name'],
|
|
227
|
-
''
|
|
228
|
-
);
|
|
171
|
+
const generateRelationQueryInfosForComponents = (contentTypeConfiguration, fieldName, models) => {
|
|
229
172
|
const targetModel = get(contentTypeConfiguration, ['attributes', fieldName, 'targetModel'], '');
|
|
230
|
-
const shouldDisplayRelationLink = getDisplayedModels(models).
|
|
173
|
+
const shouldDisplayRelationLink = getDisplayedModels(models).includes(targetModel);
|
|
231
174
|
|
|
232
|
-
|
|
233
|
-
endPoint,
|
|
234
|
-
containsKey: `${mainField}`,
|
|
175
|
+
return {
|
|
235
176
|
defaultParams: {
|
|
236
|
-
|
|
177
|
+
component: contentTypeConfiguration.uid,
|
|
237
178
|
},
|
|
238
179
|
shouldDisplayRelationLink,
|
|
239
180
|
};
|
|
240
|
-
|
|
241
|
-
return queryInfos;
|
|
242
181
|
};
|
|
243
182
|
|
|
244
183
|
const getDisplayedModels = (models) =>
|
|
@@ -246,7 +185,6 @@ const getDisplayedModels = (models) =>
|
|
|
246
185
|
|
|
247
186
|
export default formatLayouts;
|
|
248
187
|
export {
|
|
249
|
-
formatEditRelationsLayoutWithMetas,
|
|
250
188
|
formatLayoutWithMetas,
|
|
251
189
|
formatListLayoutWithMetas,
|
|
252
190
|
generateRelationQueryInfos,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useRelation } from './useRelation';
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { useInfiniteQuery } from 'react-query';
|
|
3
|
+
|
|
4
|
+
import { axiosInstance } from '../../../core/utils';
|
|
5
|
+
|
|
6
|
+
export const useRelation = (cacheKey, { relation, search }) => {
|
|
7
|
+
const [searchParams, setSearchParams] = useState({});
|
|
8
|
+
|
|
9
|
+
const fetchRelations = async ({ pageParam = 1 }) => {
|
|
10
|
+
try {
|
|
11
|
+
const { data } = await axiosInstance.get(relation?.endpoint, {
|
|
12
|
+
params: {
|
|
13
|
+
...(relation.pageParams ?? {}),
|
|
14
|
+
page: pageParam,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
return data;
|
|
19
|
+
} catch (err) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const fetchSearch = async ({ pageParam = 1 }) => {
|
|
25
|
+
try {
|
|
26
|
+
const { data } = await axiosInstance.get(search.endpoint, {
|
|
27
|
+
params: {
|
|
28
|
+
...(search.pageParams ?? {}),
|
|
29
|
+
...searchParams,
|
|
30
|
+
page: pageParam,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
return data;
|
|
35
|
+
} catch (err) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const relationsRes = useInfiniteQuery(['relation', cacheKey], fetchRelations, {
|
|
41
|
+
cacheTime: 0,
|
|
42
|
+
enabled: relation.enabled,
|
|
43
|
+
getNextPageParam(lastPage) {
|
|
44
|
+
// the API may send an empty 204 response
|
|
45
|
+
if (!lastPage || lastPage.pagination.page >= lastPage.pagination.pageCount) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// eslint-disable-next-line consistent-return
|
|
50
|
+
return lastPage.pagination.page + 1;
|
|
51
|
+
},
|
|
52
|
+
select: (data) => ({
|
|
53
|
+
pages: data.pages.map((page) => ({ ...page, results: [...(page.results ?? [])].reverse() })),
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const searchRes = useInfiniteQuery(
|
|
58
|
+
['relation', cacheKey, 'search', JSON.stringify(searchParams)],
|
|
59
|
+
fetchSearch,
|
|
60
|
+
{
|
|
61
|
+
enabled: Object.keys(searchParams).length > 0,
|
|
62
|
+
getNextPageParam(lastPage) {
|
|
63
|
+
if (lastPage.pagination.page >= lastPage.pagination.pageCount) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// eslint-disable-next-line consistent-return
|
|
68
|
+
return lastPage.pagination.page + 1;
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const searchFor = (term, options = {}) => {
|
|
74
|
+
setSearchParams({
|
|
75
|
+
...options,
|
|
76
|
+
_q: term,
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
return { relations: relationsRes, search: searchRes, searchFor };
|
|
81
|
+
};
|
|
@@ -12,7 +12,7 @@ import { getTrad } from '../../../utils';
|
|
|
12
12
|
import RowsLayout from './RowsLayout';
|
|
13
13
|
import LinkToCTB from './LinkToCTB';
|
|
14
14
|
|
|
15
|
-
const DisplayedFields = ({ editLayout,
|
|
15
|
+
const DisplayedFields = ({ editLayout, fields, onRemoveField, onAddField }) => {
|
|
16
16
|
const { formatMessage } = useIntl();
|
|
17
17
|
|
|
18
18
|
return (
|
|
@@ -55,9 +55,9 @@ const DisplayedFields = ({ editLayout, editLayoutRemainingFields, onRemoveField,
|
|
|
55
55
|
startIcon={<Plus />}
|
|
56
56
|
endIcon={null}
|
|
57
57
|
variant="secondary"
|
|
58
|
-
disabled={
|
|
58
|
+
disabled={fields.length === 0}
|
|
59
59
|
>
|
|
60
|
-
{
|
|
60
|
+
{fields.map((field) => (
|
|
61
61
|
<MenuItem key={field} onClick={() => onAddField(field)}>
|
|
62
62
|
{field}
|
|
63
63
|
</MenuItem>
|
|
@@ -71,7 +71,7 @@ const DisplayedFields = ({ editLayout, editLayoutRemainingFields, onRemoveField,
|
|
|
71
71
|
|
|
72
72
|
DisplayedFields.propTypes = {
|
|
73
73
|
editLayout: PropTypes.array.isRequired,
|
|
74
|
-
|
|
74
|
+
fields: PropTypes.array.isRequired,
|
|
75
75
|
onAddField: PropTypes.func.isRequired,
|
|
76
76
|
onRemoveField: PropTypes.func.isRequired,
|
|
77
77
|
};
|
|
@@ -26,7 +26,6 @@ import { getTrad } from '../../utils';
|
|
|
26
26
|
import reducer, { initialState } from './reducer';
|
|
27
27
|
import init from './init';
|
|
28
28
|
import DisplayedFields from './components/DisplayedFields';
|
|
29
|
-
import RelationalFields from './components/RelationalFields';
|
|
30
29
|
import ModalForm from './components/FormModal';
|
|
31
30
|
import LayoutDndProvider from '../../components/LayoutDndProvider';
|
|
32
31
|
import { unformatLayout } from './utils/layout';
|
|
@@ -67,23 +66,10 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd
|
|
|
67
66
|
});
|
|
68
67
|
const editLayout = get(modifiedData, ['layouts', 'edit'], []);
|
|
69
68
|
const displayedFields = flatMap(editLayout, 'rowContent');
|
|
70
|
-
const
|
|
71
|
-
.filter((attr) => {
|
|
72
|
-
if (!isContentTypeView) {
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return get(modifiedData, ['attributes', attr, 'type'], '') !== 'relation';
|
|
77
|
-
})
|
|
69
|
+
const editLayoutFields = Object.keys(modifiedData.attributes)
|
|
78
70
|
.filter((attr) => get(modifiedData, ['metadatas', attr, 'edit', 'visible'], false) === true)
|
|
79
|
-
.filter((attr) =>
|
|
80
|
-
return displayedFields.findIndex((el) => el.name === attr) === -1;
|
|
81
|
-
})
|
|
71
|
+
.filter((attr) => displayedFields.findIndex((el) => el.name === attr) === -1)
|
|
82
72
|
.sort();
|
|
83
|
-
const relationsLayout = get(modifiedData, ['layouts', 'editRelations'], []);
|
|
84
|
-
const editRelationsLayoutRemainingFields = Object.keys(attributes)
|
|
85
|
-
.filter((attr) => attributes[attr].type === 'relation')
|
|
86
|
-
.filter((attr) => relationsLayout.indexOf(attr) === -1);
|
|
87
73
|
|
|
88
74
|
const handleChange = ({ target: { name, value } }) => {
|
|
89
75
|
dispatch({
|
|
@@ -319,38 +305,25 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd
|
|
|
319
305
|
defaultMessage: 'View',
|
|
320
306
|
})}
|
|
321
307
|
</Typography>
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
/>
|
|
342
|
-
</GridItem>
|
|
343
|
-
{isContentTypeView && (
|
|
344
|
-
<GridItem col={4} s={12}>
|
|
345
|
-
<RelationalFields
|
|
346
|
-
editRelationsLayoutRemainingFields={editRelationsLayoutRemainingFields}
|
|
347
|
-
relationsLayout={relationsLayout}
|
|
348
|
-
onAddField={(name) => dispatch({ type: 'ADD_RELATION', name })}
|
|
349
|
-
onRemoveField={(index) => dispatch({ type: 'REMOVE_RELATION', index })}
|
|
350
|
-
/>
|
|
351
|
-
</GridItem>
|
|
352
|
-
)}
|
|
353
|
-
</Grid>
|
|
308
|
+
|
|
309
|
+
<DisplayedFields
|
|
310
|
+
attributes={attributes}
|
|
311
|
+
editLayout={editLayout}
|
|
312
|
+
fields={editLayoutFields}
|
|
313
|
+
onAddField={(field) => {
|
|
314
|
+
dispatch({
|
|
315
|
+
type: 'ON_ADD_FIELD',
|
|
316
|
+
name: field,
|
|
317
|
+
});
|
|
318
|
+
}}
|
|
319
|
+
onRemoveField={(rowId, index) => {
|
|
320
|
+
dispatch({
|
|
321
|
+
type: 'REMOVE_FIELD',
|
|
322
|
+
rowIndex: rowId,
|
|
323
|
+
fieldIndex: index,
|
|
324
|
+
});
|
|
325
|
+
}}
|
|
326
|
+
/>
|
|
354
327
|
</Stack>
|
|
355
328
|
</Box>
|
|
356
329
|
</ContentLayout>
|
|
@@ -395,7 +368,6 @@ EditSettingsView.propTypes = {
|
|
|
395
368
|
info: PropTypes.object.isRequired,
|
|
396
369
|
layouts: PropTypes.shape({
|
|
397
370
|
list: PropTypes.array.isRequired,
|
|
398
|
-
editRelations: PropTypes.array.isRequired,
|
|
399
371
|
edit: PropTypes.array.isRequired,
|
|
400
372
|
}).isRequired,
|
|
401
373
|
metadatas: PropTypes.object.isRequired,
|
|
@@ -19,24 +19,8 @@ const reducer = (state = initialState, action) =>
|
|
|
19
19
|
// eslint-disable-next-line consistent-return
|
|
20
20
|
produce(state, (draftState) => {
|
|
21
21
|
const layoutPathEdit = ['modifiedData', 'layouts', 'edit'];
|
|
22
|
-
const layoutPathRelations = ['modifiedData', 'layouts', 'editRelations'];
|
|
23
22
|
|
|
24
23
|
switch (action.type) {
|
|
25
|
-
case 'ADD_RELATION': {
|
|
26
|
-
const editRelationLayoutValue = get(state, layoutPathRelations, []);
|
|
27
|
-
set(draftState, layoutPathRelations, [...editRelationLayoutValue, action.name]);
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
case 'MOVE_RELATION': {
|
|
31
|
-
const editRelationLayoutValue = get(state, layoutPathRelations, []);
|
|
32
|
-
const { fromIndex, toIndex } = action;
|
|
33
|
-
set(
|
|
34
|
-
draftState,
|
|
35
|
-
layoutPathRelations,
|
|
36
|
-
arrayMoveItem(editRelationLayoutValue, fromIndex, toIndex)
|
|
37
|
-
);
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
24
|
case 'MOVE_ROW': {
|
|
41
25
|
const editFieldLayoutValue = get(state, layoutPathEdit, []);
|
|
42
26
|
const { fromIndex, toIndex } = action;
|
|
@@ -109,15 +93,6 @@ const reducer = (state = initialState, action) =>
|
|
|
109
93
|
set(draftState, layoutPathEdit, updatedList);
|
|
110
94
|
break;
|
|
111
95
|
}
|
|
112
|
-
case 'REMOVE_RELATION': {
|
|
113
|
-
const relationList = get(state, layoutPathRelations, []);
|
|
114
|
-
set(
|
|
115
|
-
draftState,
|
|
116
|
-
layoutPathRelations,
|
|
117
|
-
relationList.filter((_, index) => action.index !== index)
|
|
118
|
-
);
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
96
|
case 'REORDER_DIFF_ROW': {
|
|
122
97
|
const actualRowContent = get(
|
|
123
98
|
state,
|