@strapi/content-manager 5.12.6 → 5.13.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/dist/admin/hooks/useDocumentActions.js +5 -1
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +5 -1
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js.map +1 -1
- package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +206 -21
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +208 -23
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +2 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +199 -137
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +199 -137
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +89 -50
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +91 -52
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/services/homepage.js +9 -5
- package/dist/admin/services/homepage.js.map +1 -1
- package/dist/admin/services/homepage.mjs +9 -5
- package/dist/admin/services/homepage.mjs.map +1 -1
- package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
- package/dist/admin/translations/en.json.js +2 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +2 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/server/controllers/index.js +3 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs +3 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/homepage/controllers/homepage.js +57 -0
- package/dist/server/homepage/controllers/homepage.js.map +1 -0
- package/dist/server/homepage/controllers/homepage.mjs +36 -0
- package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
- package/dist/server/homepage/controllers/index.js +10 -0
- package/dist/server/homepage/controllers/index.js.map +1 -0
- package/dist/server/homepage/controllers/index.mjs +8 -0
- package/dist/server/homepage/controllers/index.mjs.map +1 -0
- package/dist/server/homepage/index.js +14 -0
- package/dist/server/homepage/index.js.map +1 -0
- package/dist/server/homepage/index.mjs +12 -0
- package/dist/server/homepage/index.mjs.map +1 -0
- package/dist/server/homepage/routes/homepage.js +25 -0
- package/dist/server/homepage/routes/homepage.js.map +1 -0
- package/dist/server/homepage/routes/homepage.mjs +23 -0
- package/dist/server/homepage/routes/homepage.mjs.map +1 -0
- package/dist/server/homepage/routes/index.js +13 -0
- package/dist/server/homepage/routes/index.js.map +1 -0
- package/dist/server/homepage/routes/index.mjs +11 -0
- package/dist/server/homepage/routes/index.mjs.map +1 -0
- package/dist/server/homepage/services/homepage.js +157 -0
- package/dist/server/homepage/services/homepage.js.map +1 -0
- package/dist/server/homepage/services/homepage.mjs +155 -0
- package/dist/server/homepage/services/homepage.mjs.map +1 -0
- package/dist/server/homepage/services/index.js +10 -0
- package/dist/server/homepage/services/index.js.map +1 -0
- package/dist/server/homepage/services/index.mjs +8 -0
- package/dist/server/homepage/services/index.mjs.map +1 -0
- package/dist/server/preview/services/preview.js +0 -1
- package/dist/server/preview/services/preview.js.map +1 -1
- package/dist/server/preview/services/preview.mjs +0 -1
- package/dist/server/preview/services/preview.mjs.map +1 -1
- package/dist/server/routes/index.js +3 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs +3 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/controllers/index.d.ts +2 -0
- package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
- package/dist/server/src/homepage/index.d.ts +16 -0
- package/dist/server/src/homepage/index.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
- package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/index.d.ts +8 -0
- package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
- package/dist/server/src/{services → homepage/services}/homepage.d.ts +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/services/index.d.ts +9 -0
- package/dist/server/src/homepage/services/index.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +7 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +6 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/server/src/services/homepage.d.ts.map +0 -1
@@ -30,23 +30,37 @@ const StyledModalContent = styled(Modal.Content)`
|
|
30
30
|
height: 90%;
|
31
31
|
max-height: 100%;
|
32
32
|
`;
|
33
|
+
const getFullPageUrl = (currentDocumentMeta)=>{
|
34
|
+
const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;
|
35
|
+
const queryParams = currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : '';
|
36
|
+
return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;
|
37
|
+
};
|
33
38
|
function reducer(state, action) {
|
34
39
|
switch(action.type){
|
35
40
|
case 'GO_TO_RELATION':
|
36
41
|
if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {
|
37
42
|
return {
|
38
43
|
...state,
|
39
|
-
confirmDialogIntent: action.payload.document
|
44
|
+
confirmDialogIntent: action.payload.document,
|
45
|
+
fieldToConnect: action.payload.fieldToConnect,
|
46
|
+
fieldToConnectUID: action.payload.fieldToConnectUID
|
40
47
|
};
|
41
48
|
}
|
49
|
+
const lastItemDocumentHistory = state.documentHistory.at(-1);
|
50
|
+
const hasToResetDocumentHistory = lastItemDocumentHistory && !lastItemDocumentHistory.documentId;
|
42
51
|
return {
|
43
52
|
...state,
|
44
|
-
|
53
|
+
// Reset document history if the last item has documentId undefined
|
54
|
+
documentHistory: hasToResetDocumentHistory ? [
|
55
|
+
action.payload.document
|
56
|
+
] : [
|
45
57
|
...state.documentHistory,
|
46
58
|
action.payload.document
|
47
59
|
],
|
48
60
|
confirmDialogIntent: null,
|
49
|
-
isModalOpen: true
|
61
|
+
isModalOpen: true,
|
62
|
+
fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,
|
63
|
+
fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID
|
50
64
|
};
|
51
65
|
case 'GO_BACK':
|
52
66
|
if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {
|
@@ -74,6 +88,21 @@ function reducer(state, action) {
|
|
74
88
|
isModalOpen: false,
|
75
89
|
confirmDialogIntent: null
|
76
90
|
};
|
91
|
+
case 'GO_TO_CREATED_RELATION':
|
92
|
+
return {
|
93
|
+
...state,
|
94
|
+
// Reset document history if the last item has documentId undefined
|
95
|
+
documentHistory: state.documentHistory ? [
|
96
|
+
...state.documentHistory.slice(0, -1),
|
97
|
+
action.payload.document
|
98
|
+
] : [
|
99
|
+
action.payload.document
|
100
|
+
],
|
101
|
+
confirmDialogIntent: null,
|
102
|
+
isModalOpen: true,
|
103
|
+
fieldToConnect: undefined,
|
104
|
+
fieldToConnectUID: undefined
|
105
|
+
};
|
77
106
|
case 'CANCEL_CONFIRM_DIALOG':
|
78
107
|
return {
|
79
108
|
...state,
|
@@ -103,21 +132,17 @@ function reducer(state, action) {
|
|
103
132
|
}
|
104
133
|
}
|
105
134
|
const [RelationModalProvider, useRelationModal] = createContext('RelationModal');
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
};
|
111
|
-
/**
|
112
|
-
* Component responsible of rendering its children wrapped in a modal, form and context if needed
|
113
|
-
*/ const RelationModalRenderer = ({ children, trigger, relation })=>{
|
114
|
-
const { formatMessage } = useIntl();
|
115
|
-
const navigate = useNavigate();
|
135
|
+
function isRenderProp(children) {
|
136
|
+
return typeof children === 'function';
|
137
|
+
}
|
138
|
+
const RootRelationRenderer = (props)=>{
|
139
|
+
const { children } = props;
|
116
140
|
const [state, dispatch] = React.useReducer(reducer, {
|
117
141
|
documentHistory: [],
|
118
142
|
confirmDialogIntent: null,
|
119
143
|
isModalOpen: false,
|
120
|
-
hasUnsavedChanges: false
|
144
|
+
hasUnsavedChanges: false,
|
145
|
+
fieldToConnect: undefined
|
121
146
|
});
|
122
147
|
const rootDocument = useDoc();
|
123
148
|
const [{ query }] = useQueryParams();
|
@@ -132,11 +157,9 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
132
157
|
};
|
133
158
|
const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;
|
134
159
|
const currentDocument = useDocument(currentDocumentMeta);
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
return trigger;
|
139
|
-
}
|
160
|
+
// TODO: check if we can remove the single type check
|
161
|
+
const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;
|
162
|
+
const isCreating = !currentDocumentMeta.documentId && !isSingleType;
|
140
163
|
/**
|
141
164
|
* There is no parent relation, so the relation modal doesn't exist. Create it and set up all the
|
142
165
|
* pieces that will be used by potential child relations: the context, header, form, and footer.
|
@@ -146,113 +169,156 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
146
169
|
rootDocumentMeta: rootDocumentMeta,
|
147
170
|
currentDocumentMeta: currentDocumentMeta,
|
148
171
|
currentDocument: currentDocument,
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
172
|
+
isCreating: isCreating,
|
173
|
+
children: /*#__PURE__*/ jsx(RelationModal, {
|
174
|
+
children: isRenderProp(children) ? children({
|
175
|
+
dispatch
|
176
|
+
}) : props.relation && /*#__PURE__*/ jsx(RelationModalTrigger, {
|
177
|
+
relation: props.relation,
|
178
|
+
children: children
|
179
|
+
})
|
180
|
+
})
|
181
|
+
});
|
182
|
+
};
|
183
|
+
const NestedRelationRenderer = (props)=>{
|
184
|
+
const { children } = props;
|
185
|
+
const dispatch = useRelationModal('NestedRelation', (state)=>state.dispatch);
|
186
|
+
return isRenderProp(children) ? children({
|
187
|
+
dispatch
|
188
|
+
}) : props.relation && /*#__PURE__*/ jsx(RelationModalTrigger, {
|
189
|
+
relation: props.relation,
|
190
|
+
children: children
|
191
|
+
}); /* This is the trigger that will be rendered in the parent relation */
|
192
|
+
};
|
193
|
+
/**
|
194
|
+
* Component responsible for rendering its children wrapped in a modal, form and context if needed
|
195
|
+
*/ const RelationModalRenderer = (props)=>{
|
196
|
+
// We're in a nested relation if the relation modal context is not undefined
|
197
|
+
const isNested = useRelationModal('RelationContextWrapper', (state)=>state != undefined, false);
|
198
|
+
return isNested ? /*#__PURE__*/ jsx(NestedRelationRenderer, {
|
199
|
+
...props
|
200
|
+
}) : /*#__PURE__*/ jsx(RootRelationRenderer, {
|
201
|
+
...props
|
202
|
+
});
|
203
|
+
};
|
204
|
+
/* -------------------------------------------------------------------------------------------------
|
205
|
+
* RelationModal
|
206
|
+
* -----------------------------------------------------------------------------------------------*/ const generateCreateUrl = (currentDocumentMeta)=>{
|
207
|
+
return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : ''}`;
|
208
|
+
};
|
209
|
+
const RelationModal = ({ children })=>{
|
210
|
+
const { formatMessage } = useIntl();
|
211
|
+
const navigate = useNavigate();
|
212
|
+
const state = useRelationModal('RelationModalForm', (state)=>state.state);
|
213
|
+
const dispatch = useRelationModal('RelationModalForm', (state)=>state.dispatch);
|
214
|
+
const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
|
215
|
+
const currentDocument = useRelationModal('RelationModalForm', (state)=>state.currentDocument);
|
216
|
+
const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
|
217
|
+
return /*#__PURE__*/ jsxs(Modal.Root, {
|
218
|
+
open: state.isModalOpen,
|
219
|
+
onOpenChange: (open)=>{
|
220
|
+
if (!open) {
|
221
|
+
dispatch({
|
222
|
+
type: 'CLOSE_MODAL',
|
223
|
+
payload: {
|
224
|
+
shouldBypassConfirmation: false
|
225
|
+
}
|
226
|
+
});
|
227
|
+
}
|
228
|
+
},
|
229
|
+
children: [
|
230
|
+
children,
|
231
|
+
/*#__PURE__*/ jsxs(StyledModalContent, {
|
232
|
+
children: [
|
233
|
+
/*#__PURE__*/ jsx(Modal.Header, {
|
234
|
+
gap: 2,
|
235
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
236
|
+
justifyContent: "space-between",
|
237
|
+
alignItems: "center",
|
238
|
+
width: "100%",
|
239
|
+
children: [
|
240
|
+
/*#__PURE__*/ jsxs(Flex, {
|
241
|
+
gap: 2,
|
242
|
+
children: [
|
243
|
+
/*#__PURE__*/ jsx(IconButton, {
|
244
|
+
withTooltip: false,
|
245
|
+
label: formatMessage({
|
246
|
+
id: 'global.back',
|
247
|
+
defaultMessage: 'Back'
|
201
248
|
}),
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
249
|
+
variant: "ghost",
|
250
|
+
disabled: state.documentHistory.length < 2,
|
251
|
+
onClick: ()=>{
|
252
|
+
dispatch({
|
253
|
+
type: 'GO_BACK',
|
254
|
+
payload: {
|
255
|
+
shouldBypassConfirmation: false
|
256
|
+
}
|
257
|
+
});
|
258
|
+
},
|
259
|
+
marginRight: 1,
|
260
|
+
children: /*#__PURE__*/ jsx(ArrowLeft, {})
|
261
|
+
}),
|
262
|
+
/*#__PURE__*/ jsx(Typography, {
|
263
|
+
tag: "span",
|
264
|
+
fontWeight: 600,
|
265
|
+
children: isCreating ? formatMessage({
|
266
|
+
id: 'content-manager.relation.create',
|
267
|
+
defaultMessage: 'Create a relation'
|
268
|
+
}) : formatMessage({
|
269
|
+
id: 'content-manager.components.RelationInputModal.modal-title',
|
270
|
+
defaultMessage: 'Edit a relation'
|
209
271
|
})
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
272
|
+
})
|
273
|
+
]
|
274
|
+
}),
|
275
|
+
/*#__PURE__*/ jsx(IconButton, {
|
276
|
+
onClick: ()=>{
|
277
|
+
dispatch({
|
278
|
+
type: 'GO_FULL_PAGE'
|
279
|
+
});
|
280
|
+
if (!state.hasUnsavedChanges) {
|
281
|
+
if (isCreating) {
|
282
|
+
navigate(generateCreateUrl(currentDocumentMeta));
|
283
|
+
} else {
|
218
284
|
navigate(getFullPageUrl(currentDocumentMeta));
|
219
285
|
}
|
220
|
-
}
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
})
|
228
|
-
|
229
|
-
|
230
|
-
}),
|
231
|
-
/*#__PURE__*/ jsx(Modal.Body, {
|
232
|
-
children: /*#__PURE__*/ jsx(Form, {
|
233
|
-
method: "PUT",
|
234
|
-
initialValues: currentDocument.getInitialFormValues(),
|
235
|
-
validate: (values, options)=>{
|
236
|
-
const yupSchema = createYupSchema(currentDocument.schema?.attributes, currentDocument.components, {
|
237
|
-
status: currentDocument.document?.status,
|
238
|
-
...options
|
239
|
-
});
|
240
|
-
return yupSchema.validate(values, {
|
241
|
-
abortEarly: false
|
242
|
-
});
|
243
|
-
},
|
244
|
-
children: children
|
245
|
-
})
|
286
|
+
}
|
287
|
+
},
|
288
|
+
variant: "tertiary",
|
289
|
+
label: formatMessage({
|
290
|
+
id: 'content-manager.components.RelationInputModal.button-fullpage',
|
291
|
+
defaultMessage: 'Go to entry'
|
292
|
+
}),
|
293
|
+
children: /*#__PURE__*/ jsx(ArrowsOut, {})
|
294
|
+
})
|
295
|
+
]
|
246
296
|
})
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
297
|
+
}),
|
298
|
+
/*#__PURE__*/ jsx(Modal.Body, {
|
299
|
+
children: /*#__PURE__*/ jsx(Form, {
|
300
|
+
method: isCreating ? 'POST' : 'PUT',
|
301
|
+
initialValues: currentDocument.getInitialFormValues(isCreating),
|
302
|
+
validate: (values, options)=>{
|
303
|
+
const yupSchema = createYupSchema(currentDocument.schema?.attributes, currentDocument.components, {
|
304
|
+
status: currentDocument.document?.status,
|
305
|
+
...options
|
306
|
+
});
|
307
|
+
return yupSchema.validate(values, {
|
308
|
+
abortEarly: false
|
309
|
+
});
|
310
|
+
},
|
311
|
+
children: /*#__PURE__*/ jsx(RelationModalBody, {})
|
312
|
+
})
|
313
|
+
})
|
314
|
+
]
|
315
|
+
})
|
316
|
+
]
|
251
317
|
});
|
252
318
|
};
|
253
319
|
/**
|
254
320
|
* All the main content (not header and footer) of the relation modal, plus the confirmation dialog.
|
255
|
-
* Will be wrapped in a Modal.Body by the
|
321
|
+
* Will be wrapped in a Modal.Body by the RelationModal component.
|
256
322
|
* Cannot be moved directly inside RelationModal because it needs access to the context via hooks.
|
257
323
|
*/ const RelationModalBody = ()=>{
|
258
324
|
const navigate = useNavigate();
|
@@ -263,6 +329,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
263
329
|
const dispatch = useRelationModal('RelationModalForm', (state)=>state.dispatch);
|
264
330
|
const rootDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.rootDocumentMeta);
|
265
331
|
const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
|
332
|
+
const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
|
266
333
|
/**
|
267
334
|
* One-way sync the modified state from the form to the modal state.
|
268
335
|
* It is needed because we need to consume state from the form context in order to lift it up
|
@@ -304,7 +371,11 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
304
371
|
if (isRootDocumentUrl) {
|
305
372
|
handleCloseModal(true);
|
306
373
|
} else {
|
307
|
-
|
374
|
+
if (isCreating) {
|
375
|
+
navigate(generateCreateUrl(currentDocumentMeta));
|
376
|
+
} else {
|
377
|
+
navigate(fullPageUrl);
|
378
|
+
}
|
308
379
|
}
|
309
380
|
};
|
310
381
|
const handleConfirm = ()=>{
|
@@ -334,7 +405,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
334
405
|
};
|
335
406
|
return /*#__PURE__*/ jsxs(Fragment, {
|
336
407
|
children: [
|
337
|
-
/*#__PURE__*/ jsx(
|
408
|
+
/*#__PURE__*/ jsx(RelationModalForm, {}),
|
338
409
|
/*#__PURE__*/ jsx(Dialog.Root, {
|
339
410
|
open: state.confirmDialogIntent != null,
|
340
411
|
children: /*#__PURE__*/ jsx(ConfirmDialog, {
|
@@ -352,7 +423,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
352
423
|
]
|
353
424
|
});
|
354
425
|
};
|
355
|
-
const
|
426
|
+
const RelationModalTrigger = ({ children, relation })=>{
|
356
427
|
const dispatch = useRelationModal('ModalTrigger', (state)=>state.dispatch);
|
357
428
|
return /*#__PURE__*/ jsx(StyledTextButton, {
|
358
429
|
onClick: ()=>{
|
@@ -367,16 +438,6 @@ const ModalTrigger = ({ children, relation })=>{
|
|
367
438
|
children: children
|
368
439
|
});
|
369
440
|
};
|
370
|
-
const RelationModal = /*#__PURE__*/ React.memo(({ relation, children })=>{
|
371
|
-
return /*#__PURE__*/ jsx(RelationModalRenderer, {
|
372
|
-
relation: relation,
|
373
|
-
trigger: /*#__PURE__*/ jsx(ModalTrigger, {
|
374
|
-
relation: relation,
|
375
|
-
children: children
|
376
|
-
}),
|
377
|
-
children: /*#__PURE__*/ jsx(RelationModalBody, {})
|
378
|
-
});
|
379
|
-
});
|
380
441
|
const StyledTextButton = styled(TextButton)`
|
381
442
|
max-width: 100%;
|
382
443
|
& > span {
|
@@ -390,13 +451,14 @@ const StyledTextButton = styled(TextButton)`
|
|
390
451
|
/**
|
391
452
|
* The mini edit view for a relation that is displayed inside a modal.
|
392
453
|
* It's complete with its header, document actions and form layout.
|
393
|
-
*/ const
|
454
|
+
*/ const RelationModalForm = ()=>{
|
394
455
|
const { formatMessage } = useIntl();
|
395
|
-
const currentDocumentMeta = useRelationModal('
|
396
|
-
const
|
456
|
+
const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
|
457
|
+
const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
|
458
|
+
const currentDocument = useRelationModal('RelationModalForm', (state)=>state.currentDocument);
|
397
459
|
const documentLayoutResponse = useDocumentLayout(currentDocumentMeta.model);
|
398
|
-
const plugins = useStrapiApp('
|
399
|
-
const initialValues = currentDocument.getInitialFormValues();
|
460
|
+
const plugins = useStrapiApp('RelationModalForm', (state)=>state.plugins);
|
461
|
+
const initialValues = isCreating ? currentDocument.getInitialFormValues(isCreating) : currentDocument.getInitialFormValues();
|
400
462
|
const { permissions = [], isLoading: isLoadingPermissions, error } = useRBAC(PERMISSIONS.map((action)=>({
|
401
463
|
action,
|
402
464
|
subject: currentDocumentMeta.model
|
@@ -411,7 +473,7 @@ const StyledTextButton = styled(TextButton)`
|
|
411
473
|
})
|
412
474
|
});
|
413
475
|
}
|
414
|
-
if (error || !currentDocumentMeta.model || documentLayoutResponse.error || !currentDocument.document || !currentDocument.meta || !currentDocument.schema || !initialValues) {
|
476
|
+
if (error || !currentDocumentMeta.model || documentLayoutResponse.error || !isCreating && !currentDocument.document || !isCreating && !currentDocument.meta || !currentDocument.schema || !initialValues) {
|
415
477
|
return /*#__PURE__*/ jsx(Flex, {
|
416
478
|
alignItems: "center",
|
417
479
|
height: "100%",
|
@@ -520,5 +582,5 @@ const StyledTextButton = styled(TextButton)`
|
|
520
582
|
});
|
521
583
|
};
|
522
584
|
|
523
|
-
export {
|
585
|
+
export { RelationModalRenderer, getCollectionType, reducer, useRelationModal };
|
524
586
|
//# sourceMappingURL=RelationModal.mjs.map
|