@strapi/content-manager 0.0.0-experimental.60f3ded53a22a24d208ebf6df9b84c118aa97abf → 0.0.0-experimental.626cf5324f21d318dee435c11cb3e08bb4c414b7
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/LICENSE +18 -3
- package/dist/_chunks/{ComponentConfigurationPage-DErJQEVW.mjs → ComponentConfigurationPage-CnL10QYC.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-DErJQEVW.mjs.map → ComponentConfigurationPage-CnL10QYC.mjs.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-Cl7eB3s4.js → ComponentConfigurationPage-G4EIirP8.js} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-Cl7eB3s4.js.map → ComponentConfigurationPage-G4EIirP8.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CyfFvH6-.js → EditConfigurationPage-B2AA1kVF.js} +3 -3
- package/dist/_chunks/{EditConfigurationPage-CyfFvH6-.js.map → EditConfigurationPage-B2AA1kVF.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CBosWqQ7.mjs → EditConfigurationPage-I2kKh9dx.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-CBosWqQ7.mjs.map → EditConfigurationPage-I2kKh9dx.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-DxyAOItK.js → EditViewPage-CHgoNwlc.js} +19 -8
- package/dist/_chunks/EditViewPage-CHgoNwlc.js.map +1 -0
- package/dist/_chunks/{EditViewPage-ClIueJnM.mjs → EditViewPage-zFjJK0s8.mjs} +19 -8
- package/dist/_chunks/EditViewPage-zFjJK0s8.mjs.map +1 -0
- package/dist/_chunks/{Field-C0Y_SR9e.js → Field-9DePZh-0.js} +465 -145
- package/dist/_chunks/Field-9DePZh-0.js.map +1 -0
- package/dist/_chunks/{Field-BZBYmvaf.mjs → Field-DPAzUS1M.mjs} +463 -143
- package/dist/_chunks/Field-DPAzUS1M.mjs.map +1 -0
- package/dist/_chunks/{Form-jwRSC2kV.mjs → Form-CEkENbkF.mjs} +35 -16
- package/dist/_chunks/Form-CEkENbkF.mjs.map +1 -0
- package/dist/_chunks/{Form-DwvGnISS.js → Form-DPm-KZ1A.js} +35 -16
- package/dist/_chunks/Form-DPm-KZ1A.js.map +1 -0
- package/dist/_chunks/{History-Cda0Yjzz.js → History-DXSbTWez.js} +44 -19
- package/dist/_chunks/History-DXSbTWez.js.map +1 -0
- package/dist/_chunks/{History-BgzAIj0G.mjs → History-utls71em.mjs} +44 -19
- package/dist/_chunks/History-utls71em.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-GH55qfoT.mjs → ListConfigurationPage-CuMXWWqb.mjs} +20 -8
- package/dist/_chunks/ListConfigurationPage-CuMXWWqb.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-C29EF97r.js → ListConfigurationPage-D5C7ACZ_.js} +20 -8
- package/dist/_chunks/ListConfigurationPage-D5C7ACZ_.js.map +1 -0
- package/dist/_chunks/{ListViewPage-QU03PFj1.mjs → ListViewPage-CdKd-PS_.mjs} +58 -40
- package/dist/_chunks/ListViewPage-CdKd-PS_.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-CnRt0UT7.js → ListViewPage-DfuwH1tt.js} +60 -42
- package/dist/_chunks/ListViewPage-DfuwH1tt.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-DFDjxByI.js → NoContentTypePage-BIxlkWWi.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-DFDjxByI.js.map → NoContentTypePage-BIxlkWWi.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-CPs2CnzH.mjs → NoContentTypePage-DkToTT7u.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-CPs2CnzH.mjs.map → NoContentTypePage-DkToTT7u.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-BVHI-jv5.js → NoPermissionsPage-Bu4GWYb-.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-BVHI-jv5.js.map → NoPermissionsPage-Bu4GWYb-.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-ct58lcY0.mjs → NoPermissionsPage-DlWi4BAH.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-ct58lcY0.mjs.map → NoPermissionsPage-DlWi4BAH.mjs.map} +1 -1
- package/dist/_chunks/{Relations-BjpPPCKp.js → Relations-CFjTESWQ.js} +4 -4
- package/dist/_chunks/Relations-CFjTESWQ.js.map +1 -0
- package/dist/_chunks/{Relations-KMf5qEN0.mjs → Relations-QP5yn9_z.mjs} +4 -4
- package/dist/_chunks/Relations-QP5yn9_z.mjs.map +1 -0
- package/dist/_chunks/{en-fbKQxLGn.js → en-BVzUkPxZ.js} +10 -8
- package/dist/_chunks/{en-fbKQxLGn.js.map → en-BVzUkPxZ.js.map} +1 -1
- package/dist/_chunks/{en-Ux26r5pl.mjs → en-CPTj6CjC.mjs} +10 -8
- package/dist/_chunks/{en-Ux26r5pl.mjs.map → en-CPTj6CjC.mjs.map} +1 -1
- package/dist/_chunks/{index-6kKXK7y8.mjs → index-BHfS6_D5.mjs} +448 -207
- package/dist/_chunks/index-BHfS6_D5.mjs.map +1 -0
- package/dist/_chunks/{index-D9ZwczCV.js → index-DXiHxy70.js} +441 -200
- package/dist/_chunks/index-DXiHxy70.js.map +1 -0
- package/dist/_chunks/{layout-B1Z-9koY.mjs → layout-DX_52HSH.mjs} +27 -14
- package/dist/_chunks/layout-DX_52HSH.mjs.map +1 -0
- package/dist/_chunks/{layout-BJfBoBiF.js → layout-bE-WUnQ0.js} +25 -12
- package/dist/_chunks/layout-bE-WUnQ0.js.map +1 -0
- package/dist/_chunks/{relations-CMvjzyU3.js → relations-D706vblp.js} +2 -2
- package/dist/_chunks/{relations-CMvjzyU3.js.map → relations-D706vblp.js.map} +1 -1
- package/dist/_chunks/{relations-CgZg7Pyx.mjs → relations-SCVAL_aJ.mjs} +2 -2
- package/dist/_chunks/{relations-CgZg7Pyx.mjs.map → relations-SCVAL_aJ.mjs.map} +1 -1
- package/dist/_chunks/{usePrev-B9w_-eYc.js → useDebounce-CtcjDB3L.js} +14 -1
- package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -0
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs +29 -0
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/history/index.d.ts +3 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +4 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +20 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +4 -48
- package/dist/admin/src/pages/EditView/components/Header.d.ts +10 -11
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +19 -17
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/src/utils/validation.d.ts +4 -1
- package/dist/server/index.js +178 -105
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +179 -106
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/uid.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/dimensions.d.ts +4 -2
- package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +2 -1
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +3 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/_chunks/EditViewPage-ClIueJnM.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-DxyAOItK.js.map +0 -1
- package/dist/_chunks/Field-BZBYmvaf.mjs.map +0 -1
- package/dist/_chunks/Field-C0Y_SR9e.js.map +0 -1
- package/dist/_chunks/Form-DwvGnISS.js.map +0 -1
- package/dist/_chunks/Form-jwRSC2kV.mjs.map +0 -1
- package/dist/_chunks/History-BgzAIj0G.mjs.map +0 -1
- package/dist/_chunks/History-Cda0Yjzz.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-C29EF97r.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-GH55qfoT.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-CnRt0UT7.js.map +0 -1
- package/dist/_chunks/ListViewPage-QU03PFj1.mjs.map +0 -1
- package/dist/_chunks/Relations-BjpPPCKp.js.map +0 -1
- package/dist/_chunks/Relations-KMf5qEN0.mjs.map +0 -1
- package/dist/_chunks/index-6kKXK7y8.mjs.map +0 -1
- package/dist/_chunks/index-D9ZwczCV.js.map +0 -1
- package/dist/_chunks/layout-B1Z-9koY.mjs.map +0 -1
- package/dist/_chunks/layout-BJfBoBiF.js.map +0 -1
- package/dist/_chunks/usePrev-B9w_-eYc.js.map +0 -1
- package/dist/_chunks/usePrev-DH6iah0A.mjs +0 -16
- package/dist/_chunks/usePrev-DH6iah0A.mjs.map +0 -1
@@ -1,17 +1,17 @@
|
|
1
|
-
import {
|
1
|
+
import { More, Cross, WarningCircle, ListPlus, Pencil, Trash, Check, CrossCircle, CheckCircle, ArrowsCounterClockwise, ChevronRight, Duplicate, ClockCounterClockwise, Feather } from "@strapi/icons";
|
2
2
|
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
|
3
|
-
import { useStrapiApp,
|
4
|
-
import { stringify } from "qs";
|
5
|
-
import { useIntl } from "react-intl";
|
6
|
-
import { useNavigate, useParams, Navigate, useMatch, useLocation, Link, NavLink } from "react-router-dom";
|
3
|
+
import { useStrapiApp, createContext, useAuth, useRBAC, Page, adminApi, translatedErrors, useNotification, useAPIErrorHandler, getYupValidationErrors, useQueryParams, useTracking, useForm, BackButton, DescriptionComponentRenderer, useTable, Table } from "@strapi/admin/strapi-admin";
|
7
4
|
import * as React from "react";
|
8
5
|
import { lazy } from "react";
|
9
|
-
import { Button, Menu, VisuallyHidden, Flex,
|
10
|
-
import {
|
6
|
+
import { Button, Menu, VisuallyHidden, Flex, Typography, Dialog, Modal, Radio, Status, Box, SingleSelect, SingleSelectOption, IconButton, Loader, Tooltip, LinkButton } from "@strapi/design-system";
|
7
|
+
import { useIntl } from "react-intl";
|
8
|
+
import { useParams, useNavigate, Navigate, useMatch, useLocation, Link, NavLink } from "react-router-dom";
|
11
9
|
import * as yup from "yup";
|
12
10
|
import { ValidationError } from "yup";
|
13
11
|
import pipe from "lodash/fp/pipe";
|
14
12
|
import { intervalToDuration, isPast } from "date-fns";
|
13
|
+
import { styled } from "styled-components";
|
14
|
+
import { stringify } from "qs";
|
15
15
|
import { createSlice, combineReducers } from "@reduxjs/toolkit";
|
16
16
|
const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
17
17
|
const v = glob[path];
|
@@ -49,42 +49,6 @@ const useInjectionZone = (area) => {
|
|
49
49
|
const [page, position] = area.split(".");
|
50
50
|
return contentManagerPlugin.getInjectedComponents(page, position);
|
51
51
|
};
|
52
|
-
const HistoryAction = ({ model, document }) => {
|
53
|
-
const { formatMessage } = useIntl();
|
54
|
-
const [{ query }] = useQueryParams();
|
55
|
-
const navigate = useNavigate();
|
56
|
-
const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });
|
57
|
-
if (!window.strapi.features.isEnabled("cms-content-history")) {
|
58
|
-
return null;
|
59
|
-
}
|
60
|
-
return {
|
61
|
-
icon: /* @__PURE__ */ jsx(ClockCounterClockwise, {}),
|
62
|
-
label: formatMessage({
|
63
|
-
id: "content-manager.history.document-action",
|
64
|
-
defaultMessage: "Content History"
|
65
|
-
}),
|
66
|
-
onClick: () => navigate({ pathname: "history", search: pluginsQueryParams }),
|
67
|
-
disabled: (
|
68
|
-
/**
|
69
|
-
* The user is creating a new document.
|
70
|
-
* It hasn't been saved yet, so there's no history to go to
|
71
|
-
*/
|
72
|
-
!document || /**
|
73
|
-
* The document has been created but the current dimension has never been saved.
|
74
|
-
* For example, the user is creating a new locale in an existing document,
|
75
|
-
* so there's no history for the document in that locale
|
76
|
-
*/
|
77
|
-
!document.id || /**
|
78
|
-
* History is only available for content types created by the user.
|
79
|
-
* These have the `api::` prefix, as opposed to the ones created by Strapi or plugins,
|
80
|
-
* which start with `admin::` or `plugin::`
|
81
|
-
*/
|
82
|
-
!model.startsWith("api::")
|
83
|
-
),
|
84
|
-
position: "header"
|
85
|
-
};
|
86
|
-
};
|
87
|
-
HistoryAction.type = "history";
|
88
52
|
const ID = "id";
|
89
53
|
const CREATED_BY_ATTRIBUTE_NAME = "createdBy";
|
90
54
|
const UPDATED_BY_ATTRIBUTE_NAME = "updatedBy";
|
@@ -195,8 +159,7 @@ const contentManagerApi = adminApi.enhanceEndpoints({
|
|
195
159
|
"InitialData",
|
196
160
|
"HistoryVersion",
|
197
161
|
"Relations",
|
198
|
-
"
|
199
|
-
"ReleaseAction"
|
162
|
+
"UidAvailability"
|
200
163
|
]
|
201
164
|
});
|
202
165
|
const documentApi = contentManagerApi.injectEndpoints({
|
@@ -210,7 +173,12 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
210
173
|
params: query
|
211
174
|
}
|
212
175
|
}),
|
213
|
-
invalidatesTags: (_result,
|
176
|
+
invalidatesTags: (_result, error, { model }) => {
|
177
|
+
if (error) {
|
178
|
+
return [];
|
179
|
+
}
|
180
|
+
return [{ type: "Document", id: `${model}_LIST` }];
|
181
|
+
}
|
214
182
|
}),
|
215
183
|
cloneDocument: builder.mutation({
|
216
184
|
query: ({ model, sourceId, data, params }) => ({
|
@@ -221,7 +189,10 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
221
189
|
params
|
222
190
|
}
|
223
191
|
}),
|
224
|
-
invalidatesTags: (_result, _error, { model }) => [
|
192
|
+
invalidatesTags: (_result, _error, { model }) => [
|
193
|
+
{ type: "Document", id: `${model}_LIST` },
|
194
|
+
{ type: "UidAvailability", id: model }
|
195
|
+
]
|
225
196
|
}),
|
226
197
|
/**
|
227
198
|
* Creates a new collection-type document. This should ONLY be used for collection-types.
|
@@ -238,7 +209,8 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
238
209
|
}),
|
239
210
|
invalidatesTags: (result, _error, { model }) => [
|
240
211
|
{ type: "Document", id: `${model}_LIST` },
|
241
|
-
"Relations"
|
212
|
+
"Relations",
|
213
|
+
{ type: "UidAvailability", id: model }
|
242
214
|
]
|
243
215
|
}),
|
244
216
|
deleteDocument: builder.mutation({
|
@@ -250,9 +222,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
250
222
|
}
|
251
223
|
}),
|
252
224
|
invalidatesTags: (_result, _error, { collectionType, model }) => [
|
253
|
-
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model }
|
254
|
-
{ type: "Release", id: "LIST" },
|
255
|
-
{ type: "ReleaseAction", id: "LIST" }
|
225
|
+
{ type: "Document", id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model }
|
256
226
|
]
|
257
227
|
}),
|
258
228
|
deleteManyDocuments: builder.mutation({
|
@@ -264,11 +234,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
264
234
|
params
|
265
235
|
}
|
266
236
|
}),
|
267
|
-
invalidatesTags: (_res, _error, { model }) => [
|
268
|
-
{ type: "Document", id: `${model}_LIST` },
|
269
|
-
{ type: "Release", id: "LIST" },
|
270
|
-
{ type: "ReleaseAction", id: "LIST" }
|
271
|
-
]
|
237
|
+
invalidatesTags: (_res, _error, { model }) => [{ type: "Document", id: `${model}_LIST` }]
|
272
238
|
}),
|
273
239
|
discardDocument: builder.mutation({
|
274
240
|
query: ({ collectionType, model, documentId, params }) => ({
|
@@ -286,8 +252,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
286
252
|
},
|
287
253
|
{ type: "Document", id: `${model}_LIST` },
|
288
254
|
"Relations",
|
289
|
-
{ type: "
|
290
|
-
{ type: "ReleaseAction", id: "LIST" }
|
255
|
+
{ type: "UidAvailability", id: model }
|
291
256
|
];
|
292
257
|
}
|
293
258
|
}),
|
@@ -305,6 +270,7 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
305
270
|
}),
|
306
271
|
providesTags: (result, _error, arg) => {
|
307
272
|
return [
|
273
|
+
{ type: "Document", id: `ALL_LIST` },
|
308
274
|
{ type: "Document", id: `${arg.model}_LIST` },
|
309
275
|
...result?.results.map(({ documentId }) => ({
|
310
276
|
type: "Document",
|
@@ -343,6 +309,11 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
343
309
|
{
|
344
310
|
type: "Document",
|
345
311
|
id: collectionType !== SINGLE_TYPES ? `${model}_${result && "documentId" in result ? result.documentId : documentId}` : model
|
312
|
+
},
|
313
|
+
// Make it easy to invalidate all individual documents queries for a model
|
314
|
+
{
|
315
|
+
type: "Document",
|
316
|
+
id: `${model}_ALL_ITEMS`
|
346
317
|
}
|
347
318
|
];
|
348
319
|
}
|
@@ -407,9 +378,20 @@ const documentApi = contentManagerApi.injectEndpoints({
|
|
407
378
|
id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model
|
408
379
|
},
|
409
380
|
"Relations",
|
410
|
-
{ type: "
|
411
|
-
{ type: "ReleaseAction", id: "LIST" }
|
381
|
+
{ type: "UidAvailability", id: model }
|
412
382
|
];
|
383
|
+
},
|
384
|
+
async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {
|
385
|
+
const patchResult = dispatch(
|
386
|
+
documentApi.util.updateQueryData("getDocument", patch, (draft) => {
|
387
|
+
Object.assign(draft.data, data);
|
388
|
+
})
|
389
|
+
);
|
390
|
+
try {
|
391
|
+
await queryFulfilled;
|
392
|
+
} catch {
|
393
|
+
patchResult.undo();
|
394
|
+
}
|
413
395
|
}
|
414
396
|
}),
|
415
397
|
unpublishDocument: builder.mutation({
|
@@ -479,7 +461,7 @@ const buildValidParams = (query) => {
|
|
479
461
|
const isBaseQueryError = (error) => {
|
480
462
|
return error.name !== void 0;
|
481
463
|
};
|
482
|
-
const createYupSchema = (attributes = {}, components = {}) => {
|
464
|
+
const createYupSchema = (attributes = {}, components = {}, options = { status: null }) => {
|
483
465
|
const createModelSchema = (attributes2) => yup.object().shape(
|
484
466
|
Object.entries(attributes2).reduce((acc, [name, attribute]) => {
|
485
467
|
if (DOCUMENT_META_FIELDS.includes(name)) {
|
@@ -492,7 +474,7 @@ const createYupSchema = (attributes = {}, components = {}) => {
|
|
492
474
|
addMinValidation,
|
493
475
|
addMaxValidation,
|
494
476
|
addRegexValidation
|
495
|
-
].map((fn) => fn(attribute));
|
477
|
+
].map((fn) => fn(attribute, options));
|
496
478
|
const transformSchema = pipe(...validations);
|
497
479
|
switch (attribute.type) {
|
498
480
|
case "component": {
|
@@ -593,6 +575,14 @@ const createAttributeSchema = (attribute) => {
|
|
593
575
|
if (!value || typeof value === "string" && value.length === 0) {
|
594
576
|
return true;
|
595
577
|
}
|
578
|
+
if (typeof value === "object") {
|
579
|
+
try {
|
580
|
+
JSON.stringify(value);
|
581
|
+
return true;
|
582
|
+
} catch (err) {
|
583
|
+
return false;
|
584
|
+
}
|
585
|
+
}
|
596
586
|
try {
|
597
587
|
JSON.parse(value);
|
598
588
|
return true;
|
@@ -611,13 +601,7 @@ const createAttributeSchema = (attribute) => {
|
|
611
601
|
return yup.mixed();
|
612
602
|
}
|
613
603
|
};
|
614
|
-
const
|
615
|
-
if (attribute.required) {
|
616
|
-
return schema.required({
|
617
|
-
id: translatedErrors.required.id,
|
618
|
-
defaultMessage: "This field is required."
|
619
|
-
});
|
620
|
-
}
|
604
|
+
const nullableSchema = (schema) => {
|
621
605
|
return schema?.nullable ? schema.nullable() : (
|
622
606
|
// In some cases '.nullable' will not be available on the schema.
|
623
607
|
// e.g. when the schema has been built using yup.lazy (e.g. for relations).
|
@@ -625,7 +609,22 @@ const addRequiredValidation = (attribute) => (schema) => {
|
|
625
609
|
schema
|
626
610
|
);
|
627
611
|
};
|
628
|
-
const
|
612
|
+
const addRequiredValidation = (attribute, options) => (schema) => {
|
613
|
+
if (options.status === "draft") {
|
614
|
+
return nullableSchema(schema);
|
615
|
+
}
|
616
|
+
if ((attribute.type === "component" && attribute.repeatable || attribute.type === "dynamiczone") && attribute.required && "min" in schema) {
|
617
|
+
return schema.min(1, translatedErrors.required);
|
618
|
+
}
|
619
|
+
if (attribute.required && attribute.type !== "relation") {
|
620
|
+
return schema.required(translatedErrors.required);
|
621
|
+
}
|
622
|
+
return nullableSchema(schema);
|
623
|
+
};
|
624
|
+
const addMinLengthValidation = (attribute, options) => (schema) => {
|
625
|
+
if (options.status === "draft") {
|
626
|
+
return schema;
|
627
|
+
}
|
629
628
|
if ("minLength" in attribute && attribute.minLength && Number.isInteger(attribute.minLength) && "min" in schema) {
|
630
629
|
return schema.min(attribute.minLength, {
|
631
630
|
...translatedErrors.minLength,
|
@@ -647,9 +646,31 @@ const addMaxLengthValidation = (attribute) => (schema) => {
|
|
647
646
|
}
|
648
647
|
return schema;
|
649
648
|
};
|
650
|
-
const addMinValidation = (attribute) => (schema) => {
|
649
|
+
const addMinValidation = (attribute, options) => (schema) => {
|
651
650
|
if ("min" in attribute) {
|
652
651
|
const min = toInteger(attribute.min);
|
652
|
+
if (attribute.type === "component" && attribute.repeatable || attribute.type === "dynamiczone") {
|
653
|
+
if (options.status !== "draft" && !attribute.required && "test" in schema && min) {
|
654
|
+
return schema.test(
|
655
|
+
"custom-min",
|
656
|
+
{
|
657
|
+
...translatedErrors.min,
|
658
|
+
values: {
|
659
|
+
min: attribute.min
|
660
|
+
}
|
661
|
+
},
|
662
|
+
(value) => {
|
663
|
+
if (!value) {
|
664
|
+
return true;
|
665
|
+
}
|
666
|
+
if (Array.isArray(value) && value.length === 0) {
|
667
|
+
return true;
|
668
|
+
}
|
669
|
+
return value.length >= min;
|
670
|
+
}
|
671
|
+
);
|
672
|
+
}
|
673
|
+
}
|
653
674
|
if ("min" in schema && min) {
|
654
675
|
return schema.min(min, {
|
655
676
|
...translatedErrors.min,
|
@@ -776,7 +797,10 @@ const useDocument = (args, opts) => {
|
|
776
797
|
isLoading: isLoadingDocument,
|
777
798
|
isFetching: isFetchingDocument,
|
778
799
|
error
|
779
|
-
} = useGetDocumentQuery(args,
|
800
|
+
} = useGetDocumentQuery(args, {
|
801
|
+
...opts,
|
802
|
+
skip: !args.documentId && args.collectionType !== SINGLE_TYPES || opts?.skip
|
803
|
+
});
|
780
804
|
const { components, schema, isLoading: isLoadingSchema } = useContentTypeSchema(args.model);
|
781
805
|
React.useEffect(() => {
|
782
806
|
if (error) {
|
@@ -862,6 +886,7 @@ const useDocumentActions = () => {
|
|
862
886
|
const { formatMessage } = useIntl();
|
863
887
|
const { trackUsage } = useTracking();
|
864
888
|
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
|
889
|
+
const navigate = useNavigate();
|
865
890
|
const [deleteDocument] = useDeleteDocumentMutation();
|
866
891
|
const _delete = React.useCallback(
|
867
892
|
async ({ collectionType, model, documentId, params }, trackerProperty) => {
|
@@ -1197,7 +1222,6 @@ const useDocumentActions = () => {
|
|
1197
1222
|
sourceId
|
1198
1223
|
});
|
1199
1224
|
if ("error" in res) {
|
1200
|
-
toggleNotification({ type: "danger", message: formatAPIError(res.error) });
|
1201
1225
|
return { error: res.error };
|
1202
1226
|
}
|
1203
1227
|
toggleNotification({
|
@@ -1216,7 +1240,7 @@ const useDocumentActions = () => {
|
|
1216
1240
|
throw err;
|
1217
1241
|
}
|
1218
1242
|
},
|
1219
|
-
[autoCloneDocument,
|
1243
|
+
[autoCloneDocument, formatMessage, toggleNotification]
|
1220
1244
|
);
|
1221
1245
|
const [cloneDocument] = useCloneDocumentMutation();
|
1222
1246
|
const clone = React.useCallback(
|
@@ -1242,6 +1266,7 @@ const useDocumentActions = () => {
|
|
1242
1266
|
defaultMessage: "Cloned document"
|
1243
1267
|
})
|
1244
1268
|
});
|
1269
|
+
navigate(`../../${res.data.data.documentId}`, { relative: "path" });
|
1245
1270
|
return res.data;
|
1246
1271
|
} catch (err) {
|
1247
1272
|
toggleNotification({
|
@@ -1252,7 +1277,7 @@ const useDocumentActions = () => {
|
|
1252
1277
|
throw err;
|
1253
1278
|
}
|
1254
1279
|
},
|
1255
|
-
[cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError]
|
1280
|
+
[cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError, navigate]
|
1256
1281
|
);
|
1257
1282
|
const [getDoc] = useLazyGetDocumentQuery();
|
1258
1283
|
const getDocument = React.useCallback(
|
@@ -1278,7 +1303,7 @@ const useDocumentActions = () => {
|
|
1278
1303
|
};
|
1279
1304
|
};
|
1280
1305
|
const ProtectedHistoryPage = lazy(
|
1281
|
-
() => import("./History-
|
1306
|
+
() => import("./History-utls71em.mjs").then((mod) => ({ default: mod.ProtectedHistoryPage }))
|
1282
1307
|
);
|
1283
1308
|
const routes$1 = [
|
1284
1309
|
{
|
@@ -1291,31 +1316,31 @@ const routes$1 = [
|
|
1291
1316
|
}
|
1292
1317
|
];
|
1293
1318
|
const ProtectedEditViewPage = lazy(
|
1294
|
-
() => import("./EditViewPage-
|
1319
|
+
() => import("./EditViewPage-zFjJK0s8.mjs").then((mod) => ({ default: mod.ProtectedEditViewPage }))
|
1295
1320
|
);
|
1296
1321
|
const ProtectedListViewPage = lazy(
|
1297
|
-
() => import("./ListViewPage-
|
1322
|
+
() => import("./ListViewPage-CdKd-PS_.mjs").then((mod) => ({ default: mod.ProtectedListViewPage }))
|
1298
1323
|
);
|
1299
1324
|
const ProtectedListConfiguration = lazy(
|
1300
|
-
() => import("./ListConfigurationPage-
|
1325
|
+
() => import("./ListConfigurationPage-CuMXWWqb.mjs").then((mod) => ({
|
1301
1326
|
default: mod.ProtectedListConfiguration
|
1302
1327
|
}))
|
1303
1328
|
);
|
1304
1329
|
const ProtectedEditConfigurationPage = lazy(
|
1305
|
-
() => import("./EditConfigurationPage-
|
1330
|
+
() => import("./EditConfigurationPage-I2kKh9dx.mjs").then((mod) => ({
|
1306
1331
|
default: mod.ProtectedEditConfigurationPage
|
1307
1332
|
}))
|
1308
1333
|
);
|
1309
1334
|
const ProtectedComponentConfigurationPage = lazy(
|
1310
|
-
() => import("./ComponentConfigurationPage-
|
1335
|
+
() => import("./ComponentConfigurationPage-CnL10QYC.mjs").then((mod) => ({
|
1311
1336
|
default: mod.ProtectedComponentConfigurationPage
|
1312
1337
|
}))
|
1313
1338
|
);
|
1314
1339
|
const NoPermissions = lazy(
|
1315
|
-
() => import("./NoPermissionsPage-
|
1340
|
+
() => import("./NoPermissionsPage-DlWi4BAH.mjs").then((mod) => ({ default: mod.NoPermissions }))
|
1316
1341
|
);
|
1317
1342
|
const NoContentType = lazy(
|
1318
|
-
() => import("./NoContentTypePage-
|
1343
|
+
() => import("./NoContentTypePage-DkToTT7u.mjs").then((mod) => ({ default: mod.NoContentType }))
|
1319
1344
|
);
|
1320
1345
|
const CollectionTypePages = () => {
|
1321
1346
|
const { collectionType } = useParams();
|
@@ -1429,12 +1454,14 @@ const DocumentActionButton = (action) => {
|
|
1429
1454
|
/* @__PURE__ */ jsx(
|
1430
1455
|
Button,
|
1431
1456
|
{
|
1432
|
-
flex:
|
1457
|
+
flex: "auto",
|
1433
1458
|
startIcon: action.icon,
|
1434
1459
|
disabled: action.disabled,
|
1435
1460
|
onClick: handleClick(action),
|
1436
1461
|
justifyContent: "center",
|
1437
1462
|
variant: action.variant || "default",
|
1463
|
+
paddingTop: "7px",
|
1464
|
+
paddingBottom: "7px",
|
1438
1465
|
children: action.label
|
1439
1466
|
}
|
1440
1467
|
),
|
@@ -1442,7 +1469,7 @@ const DocumentActionButton = (action) => {
|
|
1442
1469
|
DocumentActionConfirmDialog,
|
1443
1470
|
{
|
1444
1471
|
...action.dialog,
|
1445
|
-
variant: action.variant,
|
1472
|
+
variant: action.dialog?.variant ?? action.variant,
|
1446
1473
|
isOpen: dialogId === action.id,
|
1447
1474
|
onClose: handleClose
|
1448
1475
|
}
|
@@ -1499,9 +1526,9 @@ const DocumentActionsMenu = ({
|
|
1499
1526
|
disabled: isDisabled,
|
1500
1527
|
size: "S",
|
1501
1528
|
endIcon: null,
|
1502
|
-
paddingTop: "
|
1503
|
-
paddingLeft: "
|
1504
|
-
paddingRight: "
|
1529
|
+
paddingTop: "4px",
|
1530
|
+
paddingLeft: "7px",
|
1531
|
+
paddingRight: "7px",
|
1505
1532
|
variant,
|
1506
1533
|
children: [
|
1507
1534
|
/* @__PURE__ */ jsx(More, { "aria-hidden": true, focusable: false }),
|
@@ -1512,7 +1539,7 @@ const DocumentActionsMenu = ({
|
|
1512
1539
|
]
|
1513
1540
|
}
|
1514
1541
|
),
|
1515
|
-
/* @__PURE__ */ jsxs(Menu.Content, {
|
1542
|
+
/* @__PURE__ */ jsxs(Menu.Content, { maxHeight: void 0, popoverPlacement: "bottom-end", children: [
|
1516
1543
|
actions2.map((action) => {
|
1517
1544
|
return /* @__PURE__ */ jsx(
|
1518
1545
|
Menu.Item,
|
@@ -1521,10 +1548,25 @@ const DocumentActionsMenu = ({
|
|
1521
1548
|
onSelect: handleClick(action),
|
1522
1549
|
display: "block",
|
1523
1550
|
children: /* @__PURE__ */ jsxs(Flex, { justifyContent: "space-between", gap: 4, children: [
|
1524
|
-
/* @__PURE__ */ jsxs(
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1551
|
+
/* @__PURE__ */ jsxs(
|
1552
|
+
Flex,
|
1553
|
+
{
|
1554
|
+
color: !action.disabled ? convertActionVariantToColor(action.variant) : "inherit",
|
1555
|
+
gap: 2,
|
1556
|
+
tag: "span",
|
1557
|
+
children: [
|
1558
|
+
/* @__PURE__ */ jsx(
|
1559
|
+
Flex,
|
1560
|
+
{
|
1561
|
+
tag: "span",
|
1562
|
+
color: !action.disabled ? convertActionVariantToIconColor(action.variant) : "inherit",
|
1563
|
+
children: action.icon
|
1564
|
+
}
|
1565
|
+
),
|
1566
|
+
action.label
|
1567
|
+
]
|
1568
|
+
}
|
1569
|
+
),
|
1528
1570
|
action.id.startsWith("HistoryAction") && /* @__PURE__ */ jsx(
|
1529
1571
|
Flex,
|
1530
1572
|
{
|
@@ -1621,11 +1663,11 @@ const DocumentActionConfirmDialog = ({
|
|
1621
1663
|
/* @__PURE__ */ jsx(Dialog.Header, { children: title }),
|
1622
1664
|
/* @__PURE__ */ jsx(Dialog.Body, { children: content }),
|
1623
1665
|
/* @__PURE__ */ jsxs(Dialog.Footer, { children: [
|
1624
|
-
/* @__PURE__ */ jsx(Dialog.Cancel, { children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", children: formatMessage({
|
1666
|
+
/* @__PURE__ */ jsx(Dialog.Cancel, { children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", fullWidth: true, children: formatMessage({
|
1625
1667
|
id: "app.components.Button.cancel",
|
1626
1668
|
defaultMessage: "Cancel"
|
1627
1669
|
}) }) }),
|
1628
|
-
/* @__PURE__ */ jsx(Button, { onClick: handleConfirm, variant, children: formatMessage({
|
1670
|
+
/* @__PURE__ */ jsx(Button, { onClick: handleConfirm, variant, fullWidth: true, children: formatMessage({
|
1629
1671
|
id: "app.components.Button.confirm",
|
1630
1672
|
defaultMessage: "Confirm"
|
1631
1673
|
}) })
|
@@ -1664,13 +1706,17 @@ const PublishAction$1 = ({
|
|
1664
1706
|
const navigate = useNavigate();
|
1665
1707
|
const { toggleNotification } = useNotification();
|
1666
1708
|
const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
|
1709
|
+
const isListView = useMatch(LIST_PATH) !== null;
|
1667
1710
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
1668
1711
|
const { formatMessage } = useIntl();
|
1669
|
-
const { canPublish
|
1670
|
-
"PublishAction",
|
1671
|
-
({ canPublish: canPublish2, canCreate: canCreate2, canUpdate: canUpdate2 }) => ({ canPublish: canPublish2, canCreate: canCreate2, canUpdate: canUpdate2 })
|
1672
|
-
);
|
1712
|
+
const canPublish = useDocumentRBAC("PublishAction", ({ canPublish: canPublish2 }) => canPublish2);
|
1673
1713
|
const { publish } = useDocumentActions();
|
1714
|
+
const [
|
1715
|
+
countDraftRelations,
|
1716
|
+
{ isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }
|
1717
|
+
] = useLazyGetDraftRelationCountQuery();
|
1718
|
+
const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);
|
1719
|
+
const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);
|
1674
1720
|
const [{ query, rawQuery }] = useQueryParams();
|
1675
1721
|
const params = React.useMemo(() => buildValidParams(query), [query]);
|
1676
1722
|
const modified = useForm("PublishAction", ({ modified: modified2 }) => modified2);
|
@@ -1679,10 +1725,103 @@ const PublishAction$1 = ({
|
|
1679
1725
|
const validate = useForm("PublishAction", (state) => state.validate);
|
1680
1726
|
const setErrors = useForm("PublishAction", (state) => state.setErrors);
|
1681
1727
|
const formValues = useForm("PublishAction", ({ values }) => values);
|
1728
|
+
React.useEffect(() => {
|
1729
|
+
if (isErrorDraftRelations) {
|
1730
|
+
toggleNotification({
|
1731
|
+
type: "danger",
|
1732
|
+
message: formatMessage({
|
1733
|
+
id: getTranslation("error.records.fetch-draft-relatons"),
|
1734
|
+
defaultMessage: "An error occurred while fetching draft relations on this document."
|
1735
|
+
})
|
1736
|
+
});
|
1737
|
+
}
|
1738
|
+
}, [isErrorDraftRelations, toggleNotification, formatMessage]);
|
1739
|
+
React.useEffect(() => {
|
1740
|
+
const localDraftRelations = /* @__PURE__ */ new Set();
|
1741
|
+
const extractDraftRelations = (data) => {
|
1742
|
+
const relations = data.connect || [];
|
1743
|
+
relations.forEach((relation) => {
|
1744
|
+
if (relation.status === "draft") {
|
1745
|
+
localDraftRelations.add(relation.id);
|
1746
|
+
}
|
1747
|
+
});
|
1748
|
+
};
|
1749
|
+
const traverseAndExtract = (data) => {
|
1750
|
+
Object.entries(data).forEach(([key, value]) => {
|
1751
|
+
if (key === "connect" && Array.isArray(value)) {
|
1752
|
+
extractDraftRelations({ connect: value });
|
1753
|
+
} else if (typeof value === "object" && value !== null) {
|
1754
|
+
traverseAndExtract(value);
|
1755
|
+
}
|
1756
|
+
});
|
1757
|
+
};
|
1758
|
+
if (!documentId || modified) {
|
1759
|
+
traverseAndExtract(formValues);
|
1760
|
+
setLocalCountOfDraftRelations(localDraftRelations.size);
|
1761
|
+
}
|
1762
|
+
}, [documentId, modified, formValues, setLocalCountOfDraftRelations]);
|
1763
|
+
React.useEffect(() => {
|
1764
|
+
if (!document || !document.documentId || isListView) {
|
1765
|
+
return;
|
1766
|
+
}
|
1767
|
+
const fetchDraftRelationsCount = async () => {
|
1768
|
+
const { data, error } = await countDraftRelations({
|
1769
|
+
collectionType,
|
1770
|
+
model,
|
1771
|
+
documentId,
|
1772
|
+
params
|
1773
|
+
});
|
1774
|
+
if (error) {
|
1775
|
+
throw error;
|
1776
|
+
}
|
1777
|
+
if (data) {
|
1778
|
+
setServerCountOfDraftRelations(data.data);
|
1779
|
+
}
|
1780
|
+
};
|
1781
|
+
fetchDraftRelationsCount();
|
1782
|
+
}, [isListView, document, documentId, countDraftRelations, collectionType, model, params]);
|
1682
1783
|
const isDocumentPublished = (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== "modified";
|
1683
1784
|
if (!schema?.options?.draftAndPublish) {
|
1684
1785
|
return null;
|
1685
1786
|
}
|
1787
|
+
const performPublish = async () => {
|
1788
|
+
setSubmitting(true);
|
1789
|
+
try {
|
1790
|
+
const { errors } = await validate();
|
1791
|
+
if (errors) {
|
1792
|
+
toggleNotification({
|
1793
|
+
type: "danger",
|
1794
|
+
message: formatMessage({
|
1795
|
+
id: "content-manager.validation.error",
|
1796
|
+
defaultMessage: "There are validation errors in your document. Please fix them before saving."
|
1797
|
+
})
|
1798
|
+
});
|
1799
|
+
return;
|
1800
|
+
}
|
1801
|
+
const res = await publish(
|
1802
|
+
{
|
1803
|
+
collectionType,
|
1804
|
+
model,
|
1805
|
+
documentId,
|
1806
|
+
params
|
1807
|
+
},
|
1808
|
+
formValues
|
1809
|
+
);
|
1810
|
+
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
1811
|
+
navigate({
|
1812
|
+
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
1813
|
+
search: rawQuery
|
1814
|
+
});
|
1815
|
+
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
1816
|
+
setErrors(formatValidationErrors(res.error));
|
1817
|
+
}
|
1818
|
+
} finally {
|
1819
|
+
setSubmitting(false);
|
1820
|
+
}
|
1821
|
+
};
|
1822
|
+
const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;
|
1823
|
+
const enableDraftRelationsCount = false;
|
1824
|
+
const hasDraftRelations = enableDraftRelationsCount;
|
1686
1825
|
return {
|
1687
1826
|
/**
|
1688
1827
|
* Disabled when:
|
@@ -1692,49 +1831,36 @@ const PublishAction$1 = ({
|
|
1692
1831
|
* - the document is already published & not modified
|
1693
1832
|
* - the document is being created & not modified
|
1694
1833
|
* - the user doesn't have the permission to publish
|
1695
|
-
* - the user doesn't have the permission to create a new document
|
1696
|
-
* - the user doesn't have the permission to update the document
|
1697
1834
|
*/
|
1698
|
-
disabled: isCloning || isSubmitting || activeTab === "published" || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish
|
1835
|
+
disabled: isCloning || isSubmitting || isLoadingDraftRelations || activeTab === "published" || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish,
|
1699
1836
|
label: formatMessage({
|
1700
1837
|
id: "app.utils.publish",
|
1701
1838
|
defaultMessage: "Publish"
|
1702
1839
|
}),
|
1703
1840
|
onClick: async () => {
|
1704
|
-
|
1705
|
-
|
1706
|
-
|
1707
|
-
|
1708
|
-
|
1709
|
-
|
1710
|
-
|
1711
|
-
|
1712
|
-
|
1713
|
-
|
1714
|
-
|
1715
|
-
|
1716
|
-
|
1717
|
-
|
1718
|
-
|
1719
|
-
|
1720
|
-
|
1721
|
-
documentId,
|
1722
|
-
params
|
1723
|
-
},
|
1724
|
-
formValues
|
1725
|
-
);
|
1726
|
-
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
1727
|
-
navigate({
|
1728
|
-
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
1729
|
-
search: rawQuery
|
1730
|
-
});
|
1731
|
-
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
1732
|
-
setErrors(formatValidationErrors(res.error));
|
1841
|
+
await performPublish();
|
1842
|
+
},
|
1843
|
+
dialog: hasDraftRelations ? {
|
1844
|
+
type: "dialog",
|
1845
|
+
variant: "danger",
|
1846
|
+
footer: null,
|
1847
|
+
title: formatMessage({
|
1848
|
+
id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),
|
1849
|
+
defaultMessage: "Confirmation"
|
1850
|
+
}),
|
1851
|
+
content: formatMessage(
|
1852
|
+
{
|
1853
|
+
id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),
|
1854
|
+
defaultMessage: "This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app."
|
1855
|
+
},
|
1856
|
+
{
|
1857
|
+
count: totalDraftRelations
|
1733
1858
|
}
|
1734
|
-
|
1735
|
-
|
1859
|
+
),
|
1860
|
+
onConfirm: async () => {
|
1861
|
+
await performPublish();
|
1736
1862
|
}
|
1737
|
-
}
|
1863
|
+
} : void 0
|
1738
1864
|
};
|
1739
1865
|
};
|
1740
1866
|
PublishAction$1.type = "publish";
|
@@ -1750,10 +1876,6 @@ const UpdateAction = ({
|
|
1750
1876
|
const cloneMatch = useMatch(CLONE_PATH);
|
1751
1877
|
const isCloning = cloneMatch !== null;
|
1752
1878
|
const { formatMessage } = useIntl();
|
1753
|
-
const { canCreate, canUpdate } = useDocumentRBAC("UpdateAction", ({ canCreate: canCreate2, canUpdate: canUpdate2 }) => ({
|
1754
|
-
canCreate: canCreate2,
|
1755
|
-
canUpdate: canUpdate2
|
1756
|
-
}));
|
1757
1879
|
const { create, update, clone } = useDocumentActions();
|
1758
1880
|
const [{ query, rawQuery }] = useQueryParams();
|
1759
1881
|
const params = React.useMemo(() => buildValidParams(query), [query]);
|
@@ -1770,10 +1892,8 @@ const UpdateAction = ({
|
|
1770
1892
|
* - the form is submitting
|
1771
1893
|
* - the document is not modified & we're not cloning (you can save a clone entity straight away)
|
1772
1894
|
* - the active tab is the published tab
|
1773
|
-
* - the user doesn't have the permission to create a new document
|
1774
|
-
* - the user doesn't have the permission to update the document
|
1775
1895
|
*/
|
1776
|
-
disabled: isSubmitting || !modified && !isCloning || activeTab === "published"
|
1896
|
+
disabled: isSubmitting || !modified && !isCloning || activeTab === "published",
|
1777
1897
|
label: formatMessage({
|
1778
1898
|
id: "content-manager.containers.Edit.save",
|
1779
1899
|
defaultMessage: "Save"
|
@@ -1781,16 +1901,18 @@ const UpdateAction = ({
|
|
1781
1901
|
onClick: async () => {
|
1782
1902
|
setSubmitting(true);
|
1783
1903
|
try {
|
1784
|
-
|
1785
|
-
|
1786
|
-
|
1787
|
-
|
1788
|
-
|
1789
|
-
|
1790
|
-
|
1791
|
-
|
1792
|
-
|
1793
|
-
|
1904
|
+
if (activeTab !== "draft") {
|
1905
|
+
const { errors } = await validate();
|
1906
|
+
if (errors) {
|
1907
|
+
toggleNotification({
|
1908
|
+
type: "danger",
|
1909
|
+
message: formatMessage({
|
1910
|
+
id: "content-manager.validation.error",
|
1911
|
+
defaultMessage: "There are validation errors in your document. Please fix them before saving."
|
1912
|
+
})
|
1913
|
+
});
|
1914
|
+
return;
|
1915
|
+
}
|
1794
1916
|
}
|
1795
1917
|
if (isCloning) {
|
1796
1918
|
const res = await clone(
|
@@ -1802,10 +1924,13 @@ const UpdateAction = ({
|
|
1802
1924
|
document
|
1803
1925
|
);
|
1804
1926
|
if ("data" in res) {
|
1805
|
-
navigate(
|
1806
|
-
|
1807
|
-
|
1808
|
-
|
1927
|
+
navigate(
|
1928
|
+
{
|
1929
|
+
pathname: `../${res.data.documentId}`,
|
1930
|
+
search: rawQuery
|
1931
|
+
},
|
1932
|
+
{ relative: "path" }
|
1933
|
+
);
|
1809
1934
|
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
1810
1935
|
setErrors(formatValidationErrors(res.error));
|
1811
1936
|
}
|
@@ -1833,10 +1958,13 @@ const UpdateAction = ({
|
|
1833
1958
|
document
|
1834
1959
|
);
|
1835
1960
|
if ("data" in res && collectionType !== SINGLE_TYPES) {
|
1836
|
-
navigate(
|
1837
|
-
|
1838
|
-
|
1839
|
-
|
1961
|
+
navigate(
|
1962
|
+
{
|
1963
|
+
pathname: `../${res.data.documentId}`,
|
1964
|
+
search: rawQuery
|
1965
|
+
},
|
1966
|
+
{ replace: true, relative: "path" }
|
1967
|
+
);
|
1840
1968
|
} else if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
1841
1969
|
setErrors(formatValidationErrors(res.error));
|
1842
1970
|
}
|
@@ -1880,7 +2008,7 @@ const UnpublishAction$1 = ({
|
|
1880
2008
|
id: "app.utils.unpublish",
|
1881
2009
|
defaultMessage: "Unpublish"
|
1882
2010
|
}),
|
1883
|
-
icon: /* @__PURE__ */ jsx(
|
2011
|
+
icon: /* @__PURE__ */ jsx(Cross, {}),
|
1884
2012
|
onClick: async () => {
|
1885
2013
|
if (!documentId && collectionType !== SINGLE_TYPES || isDocumentModified) {
|
1886
2014
|
if (!documentId) {
|
@@ -1992,7 +2120,7 @@ const DiscardAction = ({
|
|
1992
2120
|
id: "content-manager.actions.discard.label",
|
1993
2121
|
defaultMessage: "Discard changes"
|
1994
2122
|
}),
|
1995
|
-
icon: /* @__PURE__ */ jsx(
|
2123
|
+
icon: /* @__PURE__ */ jsx(Cross, {}),
|
1996
2124
|
position: ["panel", "table-row"],
|
1997
2125
|
variant: "danger",
|
1998
2126
|
dialog: {
|
@@ -2020,11 +2148,6 @@ const DiscardAction = ({
|
|
2020
2148
|
};
|
2021
2149
|
};
|
2022
2150
|
DiscardAction.type = "discard";
|
2023
|
-
const StyledCrossCircle = styled(CrossCircle)`
|
2024
|
-
path {
|
2025
|
-
fill: currentColor;
|
2026
|
-
}
|
2027
|
-
`;
|
2028
2151
|
const DEFAULT_ACTIONS = [PublishAction$1, UpdateAction, UnpublishAction$1, DiscardAction];
|
2029
2152
|
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
2030
2153
|
const RelativeTime = React.forwardRef(
|
@@ -2072,7 +2195,7 @@ const getDisplayName = ({
|
|
2072
2195
|
};
|
2073
2196
|
const capitalise = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
2074
2197
|
const DocumentStatus = ({ status = "draft", ...restProps }) => {
|
2075
|
-
const statusVariant = status === "draft" ? "
|
2198
|
+
const statusVariant = status === "draft" ? "secondary" : status === "published" ? "success" : "alternative";
|
2076
2199
|
return /* @__PURE__ */ jsx(Status, { ...restProps, showBullet: false, size: "S", variant: statusVariant, children: /* @__PURE__ */ jsx(Typography, { tag: "span", variant: "omega", fontWeight: "bold", children: capitalise(status) }) });
|
2077
2200
|
};
|
2078
2201
|
const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
|
@@ -2082,23 +2205,13 @@ const Header = ({ isCreating, status, title: documentTitle = "Untitled" }) => {
|
|
2082
2205
|
id: "content-manager.containers.edit.title.new",
|
2083
2206
|
defaultMessage: "Create an entry"
|
2084
2207
|
}) : documentTitle;
|
2085
|
-
return /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", paddingTop:
|
2208
|
+
return /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", paddingTop: 6, paddingBottom: 4, gap: 2, children: [
|
2086
2209
|
/* @__PURE__ */ jsx(BackButton, {}),
|
2087
|
-
/* @__PURE__ */ jsxs(
|
2088
|
-
|
2089
|
-
{
|
2090
|
-
|
2091
|
-
|
2092
|
-
paddingTop: 1,
|
2093
|
-
gap: "80px",
|
2094
|
-
alignItems: "flex-start",
|
2095
|
-
children: [
|
2096
|
-
/* @__PURE__ */ jsx(Typography, { variant: "alpha", tag: "h1", children: title }),
|
2097
|
-
/* @__PURE__ */ jsx(HeaderToolbar, {})
|
2098
|
-
]
|
2099
|
-
}
|
2100
|
-
),
|
2101
|
-
status ? /* @__PURE__ */ jsx(DocumentStatus, { status: isCloning ? "draft" : status }) : null
|
2210
|
+
/* @__PURE__ */ jsxs(Flex, { width: "100%", justifyContent: "space-between", gap: "80px", alignItems: "flex-start", children: [
|
2211
|
+
/* @__PURE__ */ jsx(Typography, { variant: "alpha", tag: "h1", children: title }),
|
2212
|
+
/* @__PURE__ */ jsx(HeaderToolbar, {})
|
2213
|
+
] }),
|
2214
|
+
status ? /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(DocumentStatus, { status: isCloning ? "draft" : status }) }) : null
|
2102
2215
|
] });
|
2103
2216
|
};
|
2104
2217
|
const HeaderToolbar = () => {
|
@@ -2265,8 +2378,22 @@ const Information = ({ activeTab }) => {
|
|
2265
2378
|
);
|
2266
2379
|
};
|
2267
2380
|
const HeaderActions = ({ actions: actions2 }) => {
|
2268
|
-
|
2269
|
-
|
2381
|
+
const [dialogId, setDialogId] = React.useState(null);
|
2382
|
+
const handleClick = (action) => async (e) => {
|
2383
|
+
if (!("options" in action)) {
|
2384
|
+
const { onClick = () => false, dialog, id } = action;
|
2385
|
+
const muteDialog = await onClick(e);
|
2386
|
+
if (dialog && !muteDialog) {
|
2387
|
+
e.preventDefault();
|
2388
|
+
setDialogId(id);
|
2389
|
+
}
|
2390
|
+
}
|
2391
|
+
};
|
2392
|
+
const handleClose = () => {
|
2393
|
+
setDialogId(null);
|
2394
|
+
};
|
2395
|
+
return /* @__PURE__ */ jsx(Flex, { gap: 1, children: actions2.map((action) => {
|
2396
|
+
if (action.options) {
|
2270
2397
|
return /* @__PURE__ */ jsx(
|
2271
2398
|
SingleSelect,
|
2272
2399
|
{
|
@@ -2280,10 +2407,49 @@ const HeaderActions = ({ actions: actions2 }) => {
|
|
2280
2407
|
action.id
|
2281
2408
|
);
|
2282
2409
|
} else {
|
2283
|
-
|
2410
|
+
if (action.type === "icon") {
|
2411
|
+
return /* @__PURE__ */ jsxs(React.Fragment, { children: [
|
2412
|
+
/* @__PURE__ */ jsx(
|
2413
|
+
IconButton,
|
2414
|
+
{
|
2415
|
+
disabled: action.disabled,
|
2416
|
+
label: action.label,
|
2417
|
+
size: "S",
|
2418
|
+
onClick: handleClick(action),
|
2419
|
+
children: action.icon
|
2420
|
+
}
|
2421
|
+
),
|
2422
|
+
action.dialog ? /* @__PURE__ */ jsx(
|
2423
|
+
HeaderActionDialog,
|
2424
|
+
{
|
2425
|
+
...action.dialog,
|
2426
|
+
isOpen: dialogId === action.id,
|
2427
|
+
onClose: handleClose
|
2428
|
+
}
|
2429
|
+
) : null
|
2430
|
+
] }, action.id);
|
2431
|
+
}
|
2284
2432
|
}
|
2285
2433
|
}) });
|
2286
2434
|
};
|
2435
|
+
const HeaderActionDialog = ({
|
2436
|
+
onClose,
|
2437
|
+
onCancel,
|
2438
|
+
title,
|
2439
|
+
content: Content,
|
2440
|
+
isOpen
|
2441
|
+
}) => {
|
2442
|
+
const handleClose = async () => {
|
2443
|
+
if (onCancel) {
|
2444
|
+
await onCancel();
|
2445
|
+
}
|
2446
|
+
onClose();
|
2447
|
+
};
|
2448
|
+
return /* @__PURE__ */ jsx(Dialog.Root, { open: isOpen, onOpenChange: handleClose, children: /* @__PURE__ */ jsxs(Dialog.Content, { children: [
|
2449
|
+
/* @__PURE__ */ jsx(Dialog.Header, { children: title }),
|
2450
|
+
typeof Content === "function" ? /* @__PURE__ */ jsx(Content, { onClose: handleClose }) : Content
|
2451
|
+
] }) });
|
2452
|
+
};
|
2287
2453
|
const ConfigureTheViewAction = ({ collectionType, model }) => {
|
2288
2454
|
const navigate = useNavigate();
|
2289
2455
|
const { formatMessage } = useIntl();
|
@@ -2419,7 +2585,7 @@ const ActionsPanel = () => {
|
|
2419
2585
|
return {
|
2420
2586
|
title: formatMessage({
|
2421
2587
|
id: "content-manager.containers.edit.panels.default.title",
|
2422
|
-
defaultMessage: "
|
2588
|
+
defaultMessage: "Entry"
|
2423
2589
|
}),
|
2424
2590
|
content: /* @__PURE__ */ jsx(ActionsPanelContent, {})
|
2425
2591
|
};
|
@@ -2663,7 +2829,8 @@ const formatEditLayout = (data, {
|
|
2663
2829
|
layout: convertEditLayoutToFieldLayouts(
|
2664
2830
|
configuration.layouts.edit,
|
2665
2831
|
components[uid].attributes,
|
2666
|
-
configuration.metadatas
|
2832
|
+
configuration.metadatas,
|
2833
|
+
{ configurations: data.components, schemas: components }
|
2667
2834
|
),
|
2668
2835
|
settings: {
|
2669
2836
|
...configuration.settings,
|
@@ -2789,7 +2956,7 @@ const ConfirmBulkActionDialog = ({
|
|
2789
2956
|
endAction
|
2790
2957
|
}) => {
|
2791
2958
|
const { formatMessage } = useIntl();
|
2792
|
-
return /* @__PURE__ */ jsx(Dialog.Root, {
|
2959
|
+
return /* @__PURE__ */ jsx(Dialog.Root, { open: isOpen, children: /* @__PURE__ */ jsxs(Dialog.Content, { children: [
|
2793
2960
|
/* @__PURE__ */ jsx(Dialog.Header, { children: formatMessage({
|
2794
2961
|
id: "app.components.ConfirmDialog.title",
|
2795
2962
|
defaultMessage: "Confirmation"
|
@@ -2820,6 +2987,7 @@ const ConfirmDialogPublishAll = ({
|
|
2820
2987
|
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);
|
2821
2988
|
const { model, schema } = useDoc();
|
2822
2989
|
const [{ query }] = useQueryParams();
|
2990
|
+
const enableDraftRelationsCount = false;
|
2823
2991
|
const {
|
2824
2992
|
data: countDraftRelations = 0,
|
2825
2993
|
isLoading,
|
@@ -2831,7 +2999,7 @@ const ConfirmDialogPublishAll = ({
|
|
2831
2999
|
locale: query?.plugins?.i18n?.locale
|
2832
3000
|
},
|
2833
3001
|
{
|
2834
|
-
skip:
|
3002
|
+
skip: !enableDraftRelationsCount
|
2835
3003
|
}
|
2836
3004
|
);
|
2837
3005
|
React.useEffect(() => {
|
@@ -2910,7 +3078,14 @@ const formatErrorMessages = (errors, parentKey, formatMessage) => {
|
|
2910
3078
|
)
|
2911
3079
|
);
|
2912
3080
|
} else {
|
2913
|
-
messages.push(
|
3081
|
+
messages.push(
|
3082
|
+
...formatErrorMessages(
|
3083
|
+
// @ts-expect-error TODO: check why value is not compatible with FormErrors
|
3084
|
+
value,
|
3085
|
+
currentKey,
|
3086
|
+
formatMessage
|
3087
|
+
)
|
3088
|
+
);
|
2914
3089
|
}
|
2915
3090
|
} else {
|
2916
3091
|
messages.push(
|
@@ -3009,7 +3184,7 @@ const SelectedEntriesTableContent = ({
|
|
3009
3184
|
status: row.status
|
3010
3185
|
}
|
3011
3186
|
) }),
|
3012
|
-
/* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(
|
3187
|
+
/* @__PURE__ */ jsx(Table.Cell, { children: /* @__PURE__ */ jsx(Flex, { children: /* @__PURE__ */ jsx(
|
3013
3188
|
IconButton,
|
3014
3189
|
{
|
3015
3190
|
tag: Link,
|
@@ -3032,9 +3207,10 @@ const SelectedEntriesTableContent = ({
|
|
3032
3207
|
),
|
3033
3208
|
target: "_blank",
|
3034
3209
|
marginLeft: "auto",
|
3035
|
-
|
3210
|
+
variant: "ghost",
|
3211
|
+
children: /* @__PURE__ */ jsx(Pencil, { width: "1.6rem", height: "1.6rem" })
|
3036
3212
|
}
|
3037
|
-
) })
|
3213
|
+
) }) })
|
3038
3214
|
] }, row.id)) })
|
3039
3215
|
] });
|
3040
3216
|
};
|
@@ -3071,7 +3247,13 @@ const SelectedEntriesModalContent = ({
|
|
3071
3247
|
);
|
3072
3248
|
const { rows, validationErrors } = React.useMemo(() => {
|
3073
3249
|
if (data.length > 0 && schema) {
|
3074
|
-
const validate = createYupSchema(
|
3250
|
+
const validate = createYupSchema(
|
3251
|
+
schema.attributes,
|
3252
|
+
components,
|
3253
|
+
// Since this is the "Publish" action, the validation
|
3254
|
+
// schema must enforce the rules for published entities
|
3255
|
+
{ status: "published" }
|
3256
|
+
);
|
3075
3257
|
const validationErrors2 = {};
|
3076
3258
|
const rows2 = data.map((entry) => {
|
3077
3259
|
try {
|
@@ -3421,7 +3603,7 @@ const TableActions = ({ document }) => {
|
|
3421
3603
|
DescriptionComponentRenderer,
|
3422
3604
|
{
|
3423
3605
|
props,
|
3424
|
-
descriptions: plugins["content-manager"].apis.getDocumentActions(),
|
3606
|
+
descriptions: plugins["content-manager"].apis.getDocumentActions().filter((action) => action.name !== "PublishAction"),
|
3425
3607
|
children: (actions2) => {
|
3426
3608
|
const tableRowActions = actions2.filter((action) => {
|
3427
3609
|
const positions = Array.isArray(action.position) ? action.position : [action.position];
|
@@ -3532,7 +3714,7 @@ const CloneAction = ({ model, documentId }) => {
|
|
3532
3714
|
}),
|
3533
3715
|
content: /* @__PURE__ */ jsx(AutoCloneFailureModalBody, { prohibitedFields }),
|
3534
3716
|
footer: ({ onClose }) => {
|
3535
|
-
return /* @__PURE__ */ jsxs(
|
3717
|
+
return /* @__PURE__ */ jsxs(Modal.Footer, { children: [
|
3536
3718
|
/* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "tertiary", children: formatMessage({
|
3537
3719
|
id: "cancel",
|
3538
3720
|
defaultMessage: "Cancel"
|
@@ -3573,8 +3755,7 @@ class ContentManagerPlugin {
|
|
3573
3755
|
documentActions = [
|
3574
3756
|
...DEFAULT_ACTIONS,
|
3575
3757
|
...DEFAULT_TABLE_ROW_ACTIONS,
|
3576
|
-
...DEFAULT_HEADER_ACTIONS
|
3577
|
-
HistoryAction
|
3758
|
+
...DEFAULT_HEADER_ACTIONS
|
3578
3759
|
];
|
3579
3760
|
editViewSidePanels = [ActionsPanel];
|
3580
3761
|
headerActions = [];
|
@@ -3663,6 +3844,52 @@ const getPrintableType = (value) => {
|
|
3663
3844
|
}
|
3664
3845
|
return nativeType;
|
3665
3846
|
};
|
3847
|
+
const HistoryAction = ({ model, document }) => {
|
3848
|
+
const { formatMessage } = useIntl();
|
3849
|
+
const [{ query }] = useQueryParams();
|
3850
|
+
const navigate = useNavigate();
|
3851
|
+
const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });
|
3852
|
+
if (!window.strapi.features.isEnabled("cms-content-history")) {
|
3853
|
+
return null;
|
3854
|
+
}
|
3855
|
+
return {
|
3856
|
+
icon: /* @__PURE__ */ jsx(ClockCounterClockwise, {}),
|
3857
|
+
label: formatMessage({
|
3858
|
+
id: "content-manager.history.document-action",
|
3859
|
+
defaultMessage: "Content History"
|
3860
|
+
}),
|
3861
|
+
onClick: () => navigate({ pathname: "history", search: pluginsQueryParams }),
|
3862
|
+
disabled: (
|
3863
|
+
/**
|
3864
|
+
* The user is creating a new document.
|
3865
|
+
* It hasn't been saved yet, so there's no history to go to
|
3866
|
+
*/
|
3867
|
+
!document || /**
|
3868
|
+
* The document has been created but the current dimension has never been saved.
|
3869
|
+
* For example, the user is creating a new locale in an existing document,
|
3870
|
+
* so there's no history for the document in that locale
|
3871
|
+
*/
|
3872
|
+
!document.id || /**
|
3873
|
+
* History is only available for content types created by the user.
|
3874
|
+
* These have the `api::` prefix, as opposed to the ones created by Strapi or plugins,
|
3875
|
+
* which start with `admin::` or `plugin::`
|
3876
|
+
*/
|
3877
|
+
!model.startsWith("api::")
|
3878
|
+
),
|
3879
|
+
position: "header"
|
3880
|
+
};
|
3881
|
+
};
|
3882
|
+
HistoryAction.type = "history";
|
3883
|
+
const historyAdmin = {
|
3884
|
+
bootstrap(app) {
|
3885
|
+
const { addDocumentAction } = app.getPlugin("content-manager").apis;
|
3886
|
+
addDocumentAction((actions2) => {
|
3887
|
+
const indexOfDeleteAction = actions2.findIndex((action) => action.type === "delete");
|
3888
|
+
actions2.splice(indexOfDeleteAction, 0, HistoryAction);
|
3889
|
+
return actions2;
|
3890
|
+
});
|
3891
|
+
}
|
3892
|
+
};
|
3666
3893
|
const initialState = {
|
3667
3894
|
collectionTypeLinks: [],
|
3668
3895
|
components: [],
|
@@ -3713,15 +3940,29 @@ const index = {
|
|
3713
3940
|
defaultMessage: "Content Manager"
|
3714
3941
|
},
|
3715
3942
|
permissions: [],
|
3716
|
-
Component: () => import("./layout-B1Z-9koY.mjs").then((mod) => ({ default: mod.Layout })),
|
3717
3943
|
position: 1
|
3718
3944
|
});
|
3945
|
+
app.router.addRoute({
|
3946
|
+
path: "content-manager/*",
|
3947
|
+
lazy: async () => {
|
3948
|
+
const { Layout } = await import("./layout-DX_52HSH.mjs");
|
3949
|
+
return {
|
3950
|
+
Component: Layout
|
3951
|
+
};
|
3952
|
+
},
|
3953
|
+
children: routes
|
3954
|
+
});
|
3719
3955
|
app.registerPlugin(cm.config);
|
3720
3956
|
},
|
3957
|
+
bootstrap(app) {
|
3958
|
+
if (typeof historyAdmin.bootstrap === "function") {
|
3959
|
+
historyAdmin.bootstrap(app);
|
3960
|
+
}
|
3961
|
+
},
|
3721
3962
|
async registerTrads({ locales }) {
|
3722
3963
|
const importedTrads = await Promise.all(
|
3723
3964
|
locales.map((locale) => {
|
3724
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-CCEVvqGG.mjs"), "./translations/ca.json": () => import("./ca-5U32ON2v.mjs"), "./translations/cs.json": () => import("./cs-CM2aBUar.mjs"), "./translations/de.json": () => import("./de-C72KDNOl.mjs"), "./translations/en.json": () => import("./en-
|
3965
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-CCEVvqGG.mjs"), "./translations/ca.json": () => import("./ca-5U32ON2v.mjs"), "./translations/cs.json": () => import("./cs-CM2aBUar.mjs"), "./translations/de.json": () => import("./de-C72KDNOl.mjs"), "./translations/en.json": () => import("./en-CPTj6CjC.mjs"), "./translations/es.json": () => import("./es-CeXiYflN.mjs"), "./translations/eu.json": () => import("./eu-CdALomew.mjs"), "./translations/fr.json": () => import("./fr-CD9VFbPM.mjs"), "./translations/gu.json": () => import("./gu-CNpaMDpH.mjs"), "./translations/hi.json": () => import("./hi-Dwvd04m3.mjs"), "./translations/hu.json": () => import("./hu-CeYvaaO0.mjs"), "./translations/id.json": () => import("./id-BtwA9WJT.mjs"), "./translations/it.json": () => import("./it-BrVPqaf1.mjs"), "./translations/ja.json": () => import("./ja-CtsUxOvk.mjs"), "./translations/ko.json": () => import("./ko-HVQRlfUI.mjs"), "./translations/ml.json": () => import("./ml-BihZwQit.mjs"), "./translations/ms.json": () => import("./ms-m_WjyWx7.mjs"), "./translations/nl.json": () => import("./nl-D4R9gHx5.mjs"), "./translations/pl.json": () => import("./pl-sbx9mSt_.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-C71iDxnh.mjs"), "./translations/pt.json": () => import("./pt-BsaFvS8-.mjs"), "./translations/ru.json": () => import("./ru-BE6A4Exp.mjs"), "./translations/sa.json": () => import("./sa-Dag0k-Z8.mjs"), "./translations/sk.json": () => import("./sk-BFg-R8qJ.mjs"), "./translations/sv.json": () => import("./sv-CUnfWGsh.mjs"), "./translations/th.json": () => import("./th-BqbI8lIT.mjs"), "./translations/tr.json": () => import("./tr-CgeK3wJM.mjs"), "./translations/uk.json": () => import("./uk-CR-zDhAY.mjs"), "./translations/vi.json": () => import("./vi-DUXIk_fw.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-BPQcRIyH.mjs"), "./translations/zh.json": () => import("./zh-BWZspA60.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
|
3725
3966
|
return {
|
3726
3967
|
data: prefixPluginTranslations(data, PLUGIN_ID),
|
3727
3968
|
locale
|
@@ -3767,11 +4008,11 @@ export {
|
|
3767
4008
|
PERMISSIONS as k,
|
3768
4009
|
DocumentRBAC as l,
|
3769
4010
|
DOCUMENT_META_FIELDS as m,
|
3770
|
-
|
3771
|
-
|
3772
|
-
|
3773
|
-
|
3774
|
-
|
4011
|
+
CLONE_PATH as n,
|
4012
|
+
useDocLayout as o,
|
4013
|
+
useGetContentTypeConfigurationQuery as p,
|
4014
|
+
CREATOR_FIELDS as q,
|
4015
|
+
getMainField as r,
|
3775
4016
|
setInitialData as s,
|
3776
4017
|
getDisplayName as t,
|
3777
4018
|
useContentTypeSchema as u,
|
@@ -3781,4 +4022,4 @@ export {
|
|
3781
4022
|
capitalise as y,
|
3782
4023
|
useUpdateContentTypeConfigurationMutation as z
|
3783
4024
|
};
|
3784
|
-
//# sourceMappingURL=index-
|
4025
|
+
//# sourceMappingURL=index-BHfS6_D5.mjs.map
|