@strapi/content-manager 0.0.0-experimental.e60ec1829240dae21c1e1d29076681c322288813 → 0.0.0-experimental.f75e3c6d67cc47c64ab37479efdbb7b43be50b78
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/_chunks/{CardDragPreview-DSVYodBX.js → CardDragPreview-C0QyJgRA.js} +10 -14
- package/dist/_chunks/CardDragPreview-C0QyJgRA.js.map +1 -0
- package/dist/_chunks/{CardDragPreview-ikSG4M46.mjs → CardDragPreview-DOxamsuj.mjs} +7 -9
- package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +1 -0
- package/dist/_chunks/{ComponentConfigurationPage-BPvzFjM7.mjs → ComponentConfigurationPage-CuWgXugY.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-BPvzFjM7.mjs.map → ComponentConfigurationPage-CuWgXugY.mjs.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-DjWJdz6Y.js → ComponentConfigurationPage-by0e_kNd.js} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-DjWJdz6Y.js.map → ComponentConfigurationPage-by0e_kNd.js.map} +1 -1
- package/dist/_chunks/{ComponentIcon-BBQsYCVn.js → ComponentIcon-BXdiCGQp.js} +8 -2
- package/dist/_chunks/ComponentIcon-BXdiCGQp.js.map +1 -0
- package/dist/_chunks/{ComponentIcon-BOFnK76n.mjs → ComponentIcon-u4bIXTFY.mjs} +9 -3
- package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +1 -0
- package/dist/_chunks/{EditConfigurationPage-Dmv83RlS.js → EditConfigurationPage-CqBeCPGH.js} +3 -3
- package/dist/_chunks/{EditConfigurationPage-Dmv83RlS.js.map → EditConfigurationPage-CqBeCPGH.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-DacbqQ_f.mjs → EditConfigurationPage-DbI4KMyz.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-DacbqQ_f.mjs.map → EditConfigurationPage-DbI4KMyz.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-DvNpQkam.js → EditViewPage-ChgloMyO.js} +7 -9
- package/dist/_chunks/EditViewPage-ChgloMyO.js.map +1 -0
- package/dist/_chunks/{EditViewPage-DDS6H9HO.mjs → EditViewPage-dFPBya9U.mjs} +6 -6
- package/dist/_chunks/EditViewPage-dFPBya9U.mjs.map +1 -0
- package/dist/_chunks/{Field-6gvGdPBV.mjs → Field-C1nUKcdS.mjs} +500 -608
- package/dist/_chunks/Field-C1nUKcdS.mjs.map +1 -0
- package/dist/_chunks/{Field-DmVKIAOo.js → Field-dLk-vgLL.js} +552 -661
- package/dist/_chunks/Field-dLk-vgLL.js.map +1 -0
- package/dist/_chunks/{Form-CPZC9vWa.js → Form-CbXtmHC_.js} +18 -16
- package/dist/_chunks/Form-CbXtmHC_.js.map +1 -0
- package/dist/_chunks/{Form-DW6K1IH-.mjs → Form-DOlpi7Js.mjs} +16 -13
- package/dist/_chunks/Form-DOlpi7Js.mjs.map +1 -0
- package/dist/_chunks/{History-Dmr9fmUA.mjs → History-BFNUAiGc.mjs} +29 -40
- package/dist/_chunks/History-BFNUAiGc.mjs.map +1 -0
- package/dist/_chunks/{History-DeAPlvtv.js → History-BjDfohBr.js} +30 -42
- package/dist/_chunks/History-BjDfohBr.js.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-DhwvYcNv.mjs → ListConfigurationPage-DDi0KqFm.mjs} +9 -9
- package/dist/_chunks/ListConfigurationPage-DDi0KqFm.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-DPCwW5Vr.js → ListConfigurationPage-IQBgWTaa.js} +14 -16
- package/dist/_chunks/ListConfigurationPage-IQBgWTaa.js.map +1 -0
- package/dist/_chunks/{ListViewPage-BtAwuYLE.mjs → ListViewPage-BPjljUsH.mjs} +21 -41
- package/dist/_chunks/ListViewPage-BPjljUsH.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-5ySZ-VUs.js → ListViewPage-CZYGqlvF.js} +28 -48
- package/dist/_chunks/ListViewPage-CZYGqlvF.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-DOC_yWOf.js → NoContentTypePage-BOAI6VZ1.js} +3 -3
- package/dist/_chunks/NoContentTypePage-BOAI6VZ1.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-DSPxnxxp.mjs → NoContentTypePage-DaWw67K-.mjs} +3 -3
- package/dist/_chunks/NoContentTypePage-DaWw67K-.mjs.map +1 -0
- package/dist/_chunks/{NoPermissionsPage-UWDC-1Tw.mjs → NoPermissionsPage-CZrJH00p.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-UWDC-1Tw.mjs.map → NoPermissionsPage-CZrJH00p.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-Dwu8rRJu.js → NoPermissionsPage-cYEtLc_e.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-Dwu8rRJu.js.map → NoPermissionsPage-cYEtLc_e.js.map} +1 -1
- package/dist/_chunks/{Relations-J8cscLlR.mjs → Relations-DTowyge2.mjs} +66 -56
- package/dist/_chunks/Relations-DTowyge2.mjs.map +1 -0
- package/dist/_chunks/{Relations-CgWtgnPe.js → Relations-DU6B7irU.js} +70 -61
- package/dist/_chunks/Relations-DU6B7irU.js.map +1 -0
- package/dist/_chunks/{en-C-V1_90f.js → en-DTULi5-d.js} +3 -1
- package/dist/_chunks/{en-C-V1_90f.js.map → en-DTULi5-d.js.map} +1 -1
- package/dist/_chunks/{en-MBPul9Su.mjs → en-GCOTL6jR.mjs} +3 -1
- package/dist/_chunks/{en-MBPul9Su.mjs.map → en-GCOTL6jR.mjs.map} +1 -1
- package/dist/_chunks/{index-CwRRo1V9.mjs → index-BaGHmIir.mjs} +507 -202
- package/dist/_chunks/index-BaGHmIir.mjs.map +1 -0
- package/dist/_chunks/{index-C6AH2hEl.js → index-CCJeB7Rw.js} +502 -198
- package/dist/_chunks/index-CCJeB7Rw.js.map +1 -0
- package/dist/_chunks/{layout-jIDzX0Fp.mjs → layout-BinjszSQ.mjs} +10 -10
- package/dist/_chunks/layout-BinjszSQ.mjs.map +1 -0
- package/dist/_chunks/{layout-B_SXLhqf.js → layout-ni_L9kT1.js} +12 -14
- package/dist/_chunks/layout-ni_L9kT1.js.map +1 -0
- package/dist/_chunks/{relations-iBMa_OFG.js → relations-CeJAJc5I.js} +2 -2
- package/dist/_chunks/{relations-iBMa_OFG.js.map → relations-CeJAJc5I.js.map} +1 -1
- package/dist/_chunks/{relations-CuvIgCqI.mjs → relations-c91ji5eR.mjs} +2 -2
- package/dist/_chunks/{relations-CuvIgCqI.mjs.map → relations-c91ji5eR.mjs.map} +1 -1
- package/dist/_chunks/useDragAndDrop-DdHgKsqq.mjs.map +1 -1
- package/dist/_chunks/useDragAndDrop-J0TUUbR6.js.map +1 -1
- package/dist/_chunks/usePrev-B9w_-eYc.js +15 -0
- package/dist/_chunks/usePrev-B9w_-eYc.js.map +1 -0
- package/dist/_chunks/usePrev-DH6iah0A.mjs +16 -0
- package/dist/_chunks/usePrev-DH6iah0A.mjs.map +1 -0
- package/dist/admin/index.js +2 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +5 -4
- package/dist/admin/src/components/ComponentIcon.d.ts +6 -3
- package/dist/admin/src/content-manager.d.ts +3 -3
- package/dist/admin/src/exports.d.ts +1 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +5 -8
- package/dist/admin/src/hooks/useDocumentActions.d.ts +24 -3
- package/dist/admin/src/hooks/useDocumentLayout.d.ts +2 -2
- package/dist/admin/src/hooks/useDragAndDrop.d.ts +4 -4
- package/dist/admin/src/hooks/useKeyboardDragAndDrop.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +3 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.d.ts +3 -3
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/Input.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.d.ts +3 -5
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +10 -18
- package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +3 -49
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/Field.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +67 -52
- package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +2 -10
- package/dist/admin/src/services/api.d.ts +2 -3
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +5 -5
- package/dist/admin/src/services/documents.d.ts +29 -17
- package/dist/admin/src/services/init.d.ts +2 -2
- package/dist/admin/src/services/relations.d.ts +3 -3
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/src/utils/api.d.ts +4 -18
- package/dist/admin/src/utils/validation.d.ts +1 -6
- package/dist/server/index.js +273 -196
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +281 -204
- 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/single-types.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +8 -0
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/dimensions.d.ts +9 -0
- package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/index.d.ts +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/index.d.ts +18 -39
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts +13 -12
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +8 -29
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +18 -39
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts +8 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +14 -6
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/relations.d.ts +2 -2
- package/dist/shared/contracts/relations.d.ts.map +1 -1
- package/package.json +13 -14
- package/dist/_chunks/CardDragPreview-DSVYodBX.js.map +0 -1
- package/dist/_chunks/CardDragPreview-ikSG4M46.mjs.map +0 -1
- package/dist/_chunks/ComponentIcon-BBQsYCVn.js.map +0 -1
- package/dist/_chunks/ComponentIcon-BOFnK76n.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-DDS6H9HO.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-DvNpQkam.js.map +0 -1
- package/dist/_chunks/Field-6gvGdPBV.mjs.map +0 -1
- package/dist/_chunks/Field-DmVKIAOo.js.map +0 -1
- package/dist/_chunks/Form-CPZC9vWa.js.map +0 -1
- package/dist/_chunks/Form-DW6K1IH-.mjs.map +0 -1
- package/dist/_chunks/History-DeAPlvtv.js.map +0 -1
- package/dist/_chunks/History-Dmr9fmUA.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-DPCwW5Vr.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-DhwvYcNv.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-5ySZ-VUs.js.map +0 -1
- package/dist/_chunks/ListViewPage-BtAwuYLE.mjs.map +0 -1
- package/dist/_chunks/NoContentTypePage-DOC_yWOf.js.map +0 -1
- package/dist/_chunks/NoContentTypePage-DSPxnxxp.mjs.map +0 -1
- package/dist/_chunks/Relations-CgWtgnPe.js.map +0 -1
- package/dist/_chunks/Relations-J8cscLlR.mjs.map +0 -1
- package/dist/_chunks/index-C6AH2hEl.js.map +0 -1
- package/dist/_chunks/index-CwRRo1V9.mjs.map +0 -1
- package/dist/_chunks/layout-B_SXLhqf.js.map +0 -1
- package/dist/_chunks/layout-jIDzX0Fp.mjs.map +0 -1
- package/dist/_chunks/urls-CbOsUOoW.mjs +0 -7
- package/dist/_chunks/urls-CbOsUOoW.mjs.map +0 -1
- package/dist/_chunks/urls-DzZya_gm.js +0 -6
- package/dist/_chunks/urls-DzZya_gm.js.map +0 -1
- package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +0 -31
- package/dist/server/src/controllers/utils/dimensions.d.ts +0 -5
- package/dist/server/src/controllers/utils/dimensions.d.ts.map +0 -1
@@ -1,28 +1,20 @@
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
2
2
|
import * as React from "react";
|
3
|
-
import { useRef, useEffect } from "react";
|
4
3
|
import { useTracking, useAuth, useQueryParams, useAdminUsers, Filters, useField, useRBAC, useNotification, useAPIErrorHandler, useStrapiApp, Page, Layouts, BackButton, SearchInput, Table, Pagination } from "@strapi/admin/strapi-admin";
|
5
|
-
import { useCollator, Combobox, ComboboxOption,
|
4
|
+
import { useCollator, Combobox, ComboboxOption, Menu, Tooltip, Typography, Badge, Avatar, Flex, AvatarGroup, useNotifyAT, Loader, IconButton, Popover, LinkButton, TextButton, BaseCheckbox, Button } from "@strapi/design-system";
|
6
5
|
import { Cog, ListPlus, Plus } from "@strapi/icons";
|
7
6
|
import isEqual from "lodash/isEqual";
|
8
7
|
import { stringify } from "qs";
|
9
8
|
import { useIntl } from "react-intl";
|
10
9
|
import { NavLink, useNavigate, Link, useParams } from "react-router-dom";
|
11
|
-
import styled from "styled-components";
|
12
|
-
import { n as useContentTypeSchema, o as useGetContentTypeConfigurationQuery, p as CREATOR_FIELDS, q as getMainField, t as getDisplayName, b as useDoc, g as getTranslation, f as useDocumentLayout, v as checkIfAttributeIsDisplayable, c as buildValidParams, w as useGetAllDocumentsQuery, e as useDocumentRBAC, I as InjectionZone, D as DocumentStatus, T as TableActions, j as PERMISSIONS, k as DocumentRBAC, H as HOOKS, x as convertListLayoutToFieldLayouts } from "./index-
|
10
|
+
import { styled } from "styled-components";
|
11
|
+
import { n as useContentTypeSchema, o as useGetContentTypeConfigurationQuery, p as CREATOR_FIELDS, q as getMainField, t as getDisplayName, b as useDoc, g as getTranslation, f as useDocumentLayout, v as checkIfAttributeIsDisplayable, c as buildValidParams, w as useGetAllDocumentsQuery, e as useDocumentRBAC, I as InjectionZone, B as BulkActionsRenderer, D as DocumentStatus, T as TableActions, j as PERMISSIONS, k as DocumentRBAC, H as HOOKS, x as convertListLayoutToFieldLayouts } from "./index-BaGHmIir.mjs";
|
12
|
+
import { p as prefixFileUrlWithBackendUrl, u as usePrev } from "./usePrev-DH6iah0A.mjs";
|
13
13
|
import isEmpty from "lodash/isEmpty";
|
14
14
|
import parseISO from "date-fns/parseISO";
|
15
15
|
import toString from "lodash/toString";
|
16
|
-
import {
|
17
|
-
import { g as getRelationLabel, u as useGetRelationsQuery } from "./relations-CuvIgCqI.mjs";
|
16
|
+
import { g as getRelationLabel, u as useGetRelationsQuery } from "./relations-c91ji5eR.mjs";
|
18
17
|
import { u as useTypedSelector } from "./hooks-E5u1mcgM.mjs";
|
19
|
-
const usePrev = (value) => {
|
20
|
-
const ref = useRef();
|
21
|
-
useEffect(() => {
|
22
|
-
ref.current = value;
|
23
|
-
}, [value]);
|
24
|
-
return ref.current;
|
25
|
-
};
|
26
18
|
const NOT_ALLOWED_FILTERS = [
|
27
19
|
"json",
|
28
20
|
"component",
|
@@ -236,11 +228,8 @@ const SingleComponent = ({ content, mainField }) => {
|
|
236
228
|
if (!mainField) {
|
237
229
|
return null;
|
238
230
|
}
|
239
|
-
return /* @__PURE__ */ jsx(Tooltip, { label: content[mainField.name], children: /* @__PURE__ */ jsx(
|
231
|
+
return /* @__PURE__ */ jsx(Tooltip, { label: content[mainField.name], children: /* @__PURE__ */ jsx(Typography, { maxWidth: "25rem", textColor: "neutral800", ellipsis: true, children: /* @__PURE__ */ jsx(CellValue, { type: mainField.type, value: content[mainField.name] }) }) });
|
240
232
|
};
|
241
|
-
const SingleComponentTypography = styled(Typography)`
|
242
|
-
max-width: 250px;
|
243
|
-
`;
|
244
233
|
const RepeatableComponent = ({ content, mainField }) => {
|
245
234
|
const { formatMessage } = useIntl();
|
246
235
|
if (!mainField) {
|
@@ -258,12 +247,9 @@ const RepeatableComponent = ({ content, mainField }) => {
|
|
258
247
|
{ number: content.length }
|
259
248
|
)
|
260
249
|
] }),
|
261
|
-
/* @__PURE__ */ jsx(Menu.Content, { children: content.map((item) => /* @__PURE__ */ jsx(Menu.Item, { disabled: true, children: /* @__PURE__ */ jsx(
|
250
|
+
/* @__PURE__ */ jsx(Menu.Content, { children: content.map((item) => /* @__PURE__ */ jsx(Menu.Item, { disabled: true, children: /* @__PURE__ */ jsx(Typography, { maxWidth: "50rem", ellipsis: true, children: /* @__PURE__ */ jsx(CellValue, { type: mainField.type, value: item[mainField.name] }) }) }, item.id)) })
|
262
251
|
] });
|
263
252
|
};
|
264
|
-
const RepeatableComponentTypography = styled(Typography)`
|
265
|
-
max-width: 500px;
|
266
|
-
`;
|
267
253
|
const MenuTrigger$1 = styled(Menu.Trigger)`
|
268
254
|
svg {
|
269
255
|
width: 0.6rem;
|
@@ -286,7 +272,7 @@ const FileWrapper = ({ children }) => {
|
|
286
272
|
return /* @__PURE__ */ jsx(
|
287
273
|
Flex,
|
288
274
|
{
|
289
|
-
|
275
|
+
tag: "span",
|
290
276
|
position: "relative",
|
291
277
|
borderRadius: "50%",
|
292
278
|
width: "26px",
|
@@ -318,11 +304,8 @@ const MediaMultiple = ({ content }) => {
|
|
318
304
|
}) });
|
319
305
|
};
|
320
306
|
const RelationSingle = ({ mainField, content }) => {
|
321
|
-
return /* @__PURE__ */ jsx(
|
307
|
+
return /* @__PURE__ */ jsx(Typography, { maxWidth: "50rem", textColor: "neutral800", ellipsis: true, children: getRelationLabel(content, mainField) });
|
322
308
|
};
|
323
|
-
const TypographyMaxWidth$1 = styled(Typography)`
|
324
|
-
max-width: 500px;
|
325
|
-
`;
|
326
309
|
const RelationMultiple = ({ mainField, content, rowId, name }) => {
|
327
310
|
const { model } = useDoc();
|
328
311
|
const { formatMessage } = useIntl();
|
@@ -367,7 +350,7 @@ const RelationMultiple = ({ mainField, content, rowId, name }) => {
|
|
367
350
|
defaultMessage: "Relations are loading"
|
368
351
|
}) }) }),
|
369
352
|
data?.results && /* @__PURE__ */ jsxs(Fragment, { children: [
|
370
|
-
data.results.map((entry) => /* @__PURE__ */ jsx(Menu.Item, { disabled: true, children: /* @__PURE__ */ jsx(
|
353
|
+
data.results.map((entry) => /* @__PURE__ */ jsx(Menu.Item, { disabled: true, children: /* @__PURE__ */ jsx(Typography, { maxWidth: "50rem", ellipsis: true, children: getRelationLabel(entry, mainField) }) }, entry.documentId)),
|
371
354
|
data?.pagination && data?.pagination.total > 10 && /* @__PURE__ */ jsx(
|
372
355
|
Menu.Item,
|
373
356
|
{
|
@@ -411,14 +394,11 @@ const CellContent = ({ content, mainField, attribute, rowId, name }) => {
|
|
411
394
|
}
|
412
395
|
return /* @__PURE__ */ jsx(SingleComponent, { mainField, content });
|
413
396
|
case "string":
|
414
|
-
return /* @__PURE__ */ jsx(Tooltip, { description: content, children: /* @__PURE__ */ jsx(
|
397
|
+
return /* @__PURE__ */ jsx(Tooltip, { description: content, children: /* @__PURE__ */ jsx(Typography, { maxWidth: "30rem", ellipsis: true, textColor: "neutral800", children: /* @__PURE__ */ jsx(CellValue, { type: attribute.type, value: content }) }) });
|
415
398
|
default:
|
416
|
-
return /* @__PURE__ */ jsx(
|
399
|
+
return /* @__PURE__ */ jsx(Typography, { maxWidth: "30rem", ellipsis: true, textColor: "neutral800", children: /* @__PURE__ */ jsx(CellValue, { type: attribute.type, value: content }) });
|
417
400
|
}
|
418
401
|
};
|
419
|
-
const TypographyMaxWidth = styled(Typography)`
|
420
|
-
max-width: 300px;
|
421
|
-
`;
|
422
402
|
const hasContent = (content, mainField, attribute) => {
|
423
403
|
if (attribute.type === "component") {
|
424
404
|
if (attribute.repeatable || !mainField) {
|
@@ -463,13 +443,13 @@ const ViewSettingsMenu = (props) => {
|
|
463
443
|
/* @__PURE__ */ jsx(
|
464
444
|
IconButton,
|
465
445
|
{
|
466
|
-
icon: /* @__PURE__ */ jsx(Cog, {}),
|
467
446
|
label: formatMessage({
|
468
447
|
id: "components.ViewSettings.tooltip",
|
469
448
|
defaultMessage: "View Settings"
|
470
449
|
}),
|
471
450
|
ref: cogButtonRef,
|
472
|
-
onClick: handleToggle
|
451
|
+
onClick: handleToggle,
|
452
|
+
children: /* @__PURE__ */ jsx(Cog, {})
|
473
453
|
}
|
474
454
|
),
|
475
455
|
isVisible && /* @__PURE__ */ jsx(
|
@@ -487,7 +467,7 @@ const ViewSettingsMenu = (props) => {
|
|
487
467
|
size: "S",
|
488
468
|
startIcon: /* @__PURE__ */ jsx(ListPlus, {}),
|
489
469
|
variant: "secondary",
|
490
|
-
|
470
|
+
tag: NavLink,
|
491
471
|
to: {
|
492
472
|
pathname: "configurations/list",
|
493
473
|
search: query.plugins ? stringify({ plugins: query.plugins }, { encode: false }) : ""
|
@@ -525,9 +505,9 @@ const FieldPicker = ({ headers = [], resetHeaders, setHeaders }) => {
|
|
525
505
|
const handleReset = () => {
|
526
506
|
resetHeaders();
|
527
507
|
};
|
528
|
-
return /* @__PURE__ */ jsxs(Flex, {
|
508
|
+
return /* @__PURE__ */ jsxs(Flex, { tag: "fieldset", direction: "column", alignItems: "stretch", gap: 3, borderWidth: 0, children: [
|
529
509
|
/* @__PURE__ */ jsxs(Flex, { justifyContent: "space-between", children: [
|
530
|
-
/* @__PURE__ */ jsx(Typography, {
|
510
|
+
/* @__PURE__ */ jsx(Typography, { tag: "legend", variant: "pi", fontWeight: "bold", children: formatMessage({
|
531
511
|
id: "containers.list.displayedFields",
|
532
512
|
defaultMessage: "Displayed fields"
|
533
513
|
}) }),
|
@@ -543,7 +523,7 @@ const FieldPicker = ({ headers = [], resetHeaders, setHeaders }) => {
|
|
543
523
|
{
|
544
524
|
wrap: "wrap",
|
545
525
|
gap: 2,
|
546
|
-
|
526
|
+
tag: "label",
|
547
527
|
background: isActive ? "primary100" : "transparent",
|
548
528
|
hasRadius: true,
|
549
529
|
padding: 2,
|
@@ -721,7 +701,7 @@ const ListViewPage = () => {
|
|
721
701
|
),
|
722
702
|
/* @__PURE__ */ jsx(Layouts.Content, { children: /* @__PURE__ */ jsxs(Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
|
723
703
|
/* @__PURE__ */ jsxs(Table.Root, { rows: results, headers: tableHeaders, isLoading, children: [
|
724
|
-
/* @__PURE__ */ jsx(Table.ActionBar, {}),
|
704
|
+
/* @__PURE__ */ jsx(Table.ActionBar, { children: /* @__PURE__ */ jsx(BulkActionsRenderer, {}) }),
|
725
705
|
/* @__PURE__ */ jsxs(Table.Content, { children: [
|
726
706
|
/* @__PURE__ */ jsxs(Table.Head, { children: [
|
727
707
|
/* @__PURE__ */ jsx(Table.HeaderCheckboxCell, {}),
|
@@ -791,7 +771,7 @@ const CreateButton = ({ variant }) => {
|
|
791
771
|
Button,
|
792
772
|
{
|
793
773
|
variant,
|
794
|
-
|
774
|
+
tag: Link,
|
795
775
|
onClick: () => {
|
796
776
|
trackUsage("willCreateEntry", { status: "draft" });
|
797
777
|
},
|
@@ -832,4 +812,4 @@ export {
|
|
832
812
|
ListViewPage,
|
833
813
|
ProtectedListViewPage
|
834
814
|
};
|
835
|
-
//# sourceMappingURL=ListViewPage-
|
815
|
+
//# sourceMappingURL=ListViewPage-BPjljUsH.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ListViewPage-BPjljUsH.mjs","sources":["../../admin/src/pages/ListView/components/Filters.tsx","../../admin/src/pages/ListView/components/TableCells/CellValue.tsx","../../admin/src/pages/ListView/components/TableCells/Components.tsx","../../admin/src/pages/ListView/components/TableCells/Media.tsx","../../admin/src/pages/ListView/components/TableCells/Relations.tsx","../../admin/src/pages/ListView/components/TableCells/CellContent.tsx","../../admin/src/pages/ListView/components/ViewSettingsMenu.tsx","../../admin/src/pages/ListView/ListViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Filters,\n useField,\n useAuth,\n useTracking,\n useQueryParams,\n useAdminUsers,\n} from '@strapi/admin/strapi-admin';\nimport { Combobox, ComboboxOption, useCollator } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { CREATOR_FIELDS } from '../../../constants/attributes';\nimport { useContentTypeSchema } from '../../../hooks/useContentTypeSchema';\nimport { Schema } from '../../../hooks/useDocument';\nimport { useGetContentTypeConfigurationQuery } from '../../../services/contentTypes';\nimport { getMainField } from '../../../utils/attributes';\nimport { getDisplayName } from '../../../utils/users';\n\n/**\n * If new attributes are added, this list needs to be updated.\n */\nconst NOT_ALLOWED_FILTERS = [\n 'json',\n 'component',\n 'media',\n 'richtext',\n 'dynamiczone',\n 'password',\n 'blocks',\n];\nconst DEFAULT_ALLOWED_FILTERS = ['createdAt', 'updatedAt'];\nconst USER_FILTER_ATTRIBUTES = [...CREATOR_FIELDS, 'strapi_assignee'];\n\n/* -------------------------------------------------------------------------------------------------\n * Filters\n * -----------------------------------------------------------------------------------------------*/\ninterface FiltersProps {\n disabled?: boolean;\n schema: Schema;\n}\n\nconst FiltersImpl = ({ disabled, schema }: FiltersProps) => {\n const { attributes, uid: model, options } = schema;\n const { formatMessage, locale } = useIntl();\n const { trackUsage } = useTracking();\n const allPermissions = useAuth('FiltersImpl', (state) => state.permissions);\n const [{ query }] = useQueryParams<Filters.Query>();\n const { schemas } = useContentTypeSchema();\n\n const canReadAdminUsers = React.useMemo(\n () =>\n allPermissions.filter(\n (permission) => permission.action === 'admin::users.read' && permission.subject === null\n ).length > 0,\n [allPermissions]\n );\n\n const selectedUserIds = (query?.filters?.$and ?? []).reduce<string[]>((acc, filter) => {\n const [key, value] = Object.entries(filter)[0];\n if (typeof value.id !== 'object') {\n return acc;\n }\n\n const id = value.id.$eq || value.id.$ne;\n\n if (id && USER_FILTER_ATTRIBUTES.includes(key) && !acc.includes(id)) {\n acc.push(id);\n }\n\n return acc;\n }, []);\n\n const { data: userData, isLoading: isLoadingAdminUsers } = useAdminUsers(\n { filters: { id: { $in: selectedUserIds } } },\n {\n // fetch the list of admin users only if the filter contains users and the\n // current user has permissions to display users\n skip: selectedUserIds.length === 0 || !canReadAdminUsers,\n }\n );\n\n const { users = [] } = userData ?? {};\n\n const { metadata } = useGetContentTypeConfigurationQuery(model, {\n selectFromResult: ({ data }) => ({ metadata: data?.contentType.metadatas ?? {} }),\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const displayedFilters = React.useMemo(() => {\n const [{ properties: { fields = [] } = { fields: [] } }] = allPermissions.filter(\n (permission) =>\n permission.action === 'plugin::content-manager.explorer.read' &&\n permission.subject === model\n );\n\n const allowedFields = fields.filter((field) => {\n const attribute = attributes[field] ?? {};\n\n return attribute.type && !NOT_ALLOWED_FILTERS.includes(attribute.type);\n });\n\n return (\n [\n 'id',\n ...allowedFields,\n ...DEFAULT_ALLOWED_FILTERS,\n ...(canReadAdminUsers ? CREATOR_FIELDS : []),\n ]\n .map((name) => {\n const attribute = attributes[name];\n\n if (NOT_ALLOWED_FILTERS.includes(attribute.type)) {\n return null;\n }\n\n const { mainField: mainFieldName = '', label } = metadata[name].list;\n\n let filter: Filters.Filter = {\n name,\n label: label ?? '',\n mainField: getMainField(attribute, mainFieldName, { schemas, components: {} }),\n // @ts-expect-error – TODO: this is filtered out above in the `allowedFields` call but TS complains, is there a better way to solve this?\n type: attribute.type,\n };\n\n if (\n attribute.type === 'relation' &&\n 'target' in attribute &&\n attribute.target === 'admin::user'\n ) {\n filter = {\n ...filter,\n input: AdminUsersFilter,\n options: users.map((user) => ({\n label: getDisplayName(user),\n value: user.id.toString(),\n })),\n operators: [\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$eq',\n defaultMessage: 'is',\n }),\n value: '$eq',\n },\n {\n label: formatMessage({\n id: 'components.FilterOptions.FILTER_TYPES.$ne',\n defaultMessage: 'is not',\n }),\n value: '$ne',\n },\n ],\n mainField: {\n name: 'id',\n type: 'integer',\n },\n };\n }\n\n return filter;\n })\n .filter(Boolean) as Filters.Filter[]\n ).toSorted((a, b) => formatter.compare(a.label, b.label));\n }, [\n allPermissions,\n canReadAdminUsers,\n model,\n attributes,\n metadata,\n schemas,\n users,\n formatMessage,\n formatter,\n ]);\n\n const onOpenChange = (isOpen: boolean) => {\n if (isOpen) {\n trackUsage('willFilterEntries');\n }\n };\n\n const handleFilterChange: Filters.Props['onChange'] = (data) => {\n const attribute = attributes[data.name];\n\n if (attribute) {\n trackUsage('didFilterEntries', {\n useRelation: attribute.type === 'relation',\n });\n }\n };\n\n return (\n <Filters.Root\n disabled={disabled}\n options={displayedFilters}\n onOpenChange={onOpenChange}\n onChange={handleFilterChange}\n >\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AdminUsersFilter\n * -----------------------------------------------------------------------------------------------*/\n\nconst AdminUsersFilter = ({ name }: Filters.ValueInputProps) => {\n const [page, setPage] = React.useState(1);\n const { formatMessage } = useIntl();\n const { data, isLoading } = useAdminUsers({\n page,\n });\n const field = useField(name);\n\n const handleOpenChange = (isOpen?: boolean) => {\n if (!isOpen) {\n setPage(1);\n }\n };\n\n const users = data?.users || [];\n\n return (\n <Combobox\n value={field.value}\n aria-label={formatMessage({\n id: 'content-manager.components.Filters.usersSelect.label',\n defaultMessage: 'Search and select a user to filter',\n })}\n onOpenChange={handleOpenChange}\n onChange={(value) => field.onChange(name, value)}\n loading={isLoading}\n onLoadMore={() => setPage((prev) => prev + 1)}\n >\n {users.map((user) => {\n return (\n <ComboboxOption key={user.id} value={user.id.toString()}>\n {getDisplayName(user)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n\nexport { FiltersImpl as Filters };\nexport type { FiltersProps };\n","import parseISO from 'date-fns/parseISO';\nimport toString from 'lodash/toString';\nimport { useIntl } from 'react-intl';\n\nimport type { Schema } from '@strapi/types';\n\ninterface CellValueProps {\n type: Schema.Attribute.Kind | 'custom';\n value: any;\n}\n\nconst CellValue = ({ type, value }: CellValueProps) => {\n const { formatDate, formatTime, formatNumber } = useIntl();\n let formattedValue = value;\n\n if (type === 'date') {\n formattedValue = formatDate(parseISO(value), { dateStyle: 'full' });\n }\n\n if (type === 'datetime') {\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n }\n\n if (type === 'time') {\n const [hour, minute, second] = value.split(':');\n const date = new Date();\n date.setHours(hour);\n date.setMinutes(minute);\n date.setSeconds(second);\n\n formattedValue = formatTime(date, {\n timeStyle: 'short',\n });\n }\n\n if (['float', 'decimal'].includes(type)) {\n formattedValue = formatNumber(value, {\n // Should be kept in sync with the corresponding value\n // in the design-system/NumberInput: https://github.com/strapi/design-system/blob/main/packages/strapi-design-system/src/NumberInput/NumberInput.js#L53\n maximumFractionDigits: 20,\n });\n }\n\n if (['integer', 'biginteger'].includes(type)) {\n formattedValue = formatNumber(value, { maximumFractionDigits: 0 });\n }\n\n return toString(formattedValue);\n};\n\nexport { CellValue };\nexport type { CellValueProps };\n","import { Badge, Tooltip, Typography, Menu } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { CellContentProps } from './CellContent';\nimport { CellValue } from './CellValue';\n\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * SingleComponent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SingleComponentProps extends Pick<CellContentProps, 'mainField'> {\n content: Schema.Attribute.Value<Schema.Attribute.Component<`${string}.${string}`, false>>;\n}\n\nconst SingleComponent = ({ content, mainField }: SingleComponentProps) => {\n if (!mainField) {\n return null;\n }\n\n return (\n <Tooltip label={content[mainField.name]}>\n <Typography maxWidth=\"25rem\" textColor=\"neutral800\" ellipsis>\n <CellValue type={mainField.type} value={content[mainField.name]} />\n </Typography>\n </Tooltip>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RepeatableComponent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RepeatableComponentProps extends Pick<CellContentProps, 'mainField'> {\n content: Schema.Attribute.Value<Schema.Attribute.Component<`${string}.${string}`, true>>;\n}\n\nconst RepeatableComponent = ({ content, mainField }: RepeatableComponentProps) => {\n const { formatMessage } = useIntl();\n\n if (!mainField) {\n return null;\n }\n\n return (\n <Menu.Root>\n <MenuTrigger onClick={(e) => e.stopPropagation()}>\n <Badge>{content.length}</Badge>{' '}\n {formatMessage(\n {\n id: 'content-manager.containers.list.items',\n defaultMessage: '{number, plural, =0 {items} one {item} other {items}}',\n },\n { number: content.length }\n )}\n </MenuTrigger>\n <Menu.Content>\n {content.map((item) => (\n <Menu.Item key={item.id} disabled>\n <Typography maxWidth=\"50rem\" ellipsis>\n <CellValue type={mainField.type} value={item[mainField.name]} />\n </Typography>\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Root>\n );\n};\n\n/**\n * TODO: this needs to be solved in the Design-System\n */\nconst MenuTrigger = styled(Menu.Trigger)`\n svg {\n width: 0.6rem;\n height: 0.4rem;\n }\n`;\n\nexport { SingleComponent, RepeatableComponent };\nexport type { SingleComponentProps, RepeatableComponentProps };\n","import * as React from 'react';\n\nimport {\n Avatar,\n AvatarGroup,\n Flex,\n Tooltip,\n Typography,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { prefixFileUrlWithBackendUrl } from '../../../../utils/urls';\n\nimport type { Data } from '@strapi/types';\n\ninterface MediaFile {\n id?: Data.ID;\n alternativeText?: string;\n ext: string;\n formats: {\n thumbnail?: {\n url?: string;\n };\n };\n mime: string;\n name: string;\n url: string;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Media\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MediaSingleProps extends MediaFile {}\n\nconst getFileExtension = (ext: string) => (ext && ext[0] === '.' ? ext.substring(1) : ext);\n\nconst MediaSingle = ({ url, mime, alternativeText, name, ext, formats }: MediaSingleProps) => {\n const fileURL = prefixFileUrlWithBackendUrl(url)!;\n\n if (mime.includes('image')) {\n const thumbnail = formats?.thumbnail?.url;\n const mediaURL = prefixFileUrlWithBackendUrl(thumbnail) || fileURL;\n\n return <Avatar src={mediaURL} alt={alternativeText || name} preview />;\n }\n\n const fileExtension = getFileExtension(ext);\n const fileName = name.length > 100 ? `${name.substring(0, 100)}...` : name;\n\n return (\n <Tooltip description={fileName}>\n <FileWrapper>{fileExtension}</FileWrapper>\n </Tooltip>\n );\n};\n\nconst FileWrapper = ({ children }: { children: React.ReactNode }) => {\n return (\n <Flex\n tag=\"span\"\n position=\"relative\"\n borderRadius=\"50%\"\n width=\"26px\"\n height=\"26px\"\n borderColor=\"neutral200\"\n background=\"neutral150\"\n paddingLeft=\"1px\"\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <FileTypography variant=\"sigma\" textColor=\"neutral600\">\n {children}\n </FileTypography>\n </Flex>\n );\n};\n\nconst FileTypography = styled<TypographyComponent>(Typography)`\n font-size: 0.9rem;\n line-height: 0.9rem;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * MediaMultiple\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MediaMultipleProps {\n content: MediaFile[];\n}\n\nconst MediaMultiple = ({ content }: MediaMultipleProps) => {\n return (\n <AvatarGroup>\n {content.map((file, index) => {\n const key = `${file.id}${index}`;\n\n if (index === 3) {\n const remainingFiles = `+${content.length - 3}`;\n\n return <FileWrapper key={key}>{remainingFiles}</FileWrapper>;\n }\n\n if (index > 3) {\n return null;\n }\n\n return <MediaSingle key={key} {...file} />;\n })}\n </AvatarGroup>\n );\n};\n\nexport { MediaMultiple, MediaSingle };\nexport type { MediaMultipleProps, MediaSingleProps };\n","import * as React from 'react';\n\nimport { Typography, Badge, Flex, Loader, useNotifyAT, Menu } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetRelationsQuery } from '../../../../services/relations';\nimport { getRelationLabel } from '../../../../utils/relations';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport type { CellContentProps } from './CellContent';\n\n/* -------------------------------------------------------------------------------------------------\n * RelationSingle\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RelationSingleProps extends Pick<CellContentProps, 'mainField' | 'content'> {}\n\nconst RelationSingle = ({ mainField, content }: RelationSingleProps) => {\n return (\n <Typography maxWidth=\"50rem\" textColor=\"neutral800\" ellipsis>\n {getRelationLabel(content, mainField)}\n </Typography>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationMultiple\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RelationMultipleProps\n extends Pick<CellContentProps, 'mainField' | 'content' | 'name' | 'rowId'> {}\n\n/**\n * TODO: fix this component – tracking issue https://strapi-inc.atlassian.net/browse/CONTENT-2184\n */\nconst RelationMultiple = ({ mainField, content, rowId, name }: RelationMultipleProps) => {\n const { model } = useDoc();\n const { formatMessage } = useIntl();\n const { notifyStatus } = useNotifyAT();\n const [isOpen, setIsOpen] = React.useState(false);\n\n const [targetField] = name.split('.');\n\n const { data, isLoading } = useGetRelationsQuery(\n {\n model,\n id: rowId,\n targetField,\n },\n {\n skip: !isOpen,\n refetchOnMountOrArgChange: true,\n }\n );\n\n React.useEffect(() => {\n if (data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('DynamicTable.relation-loaded'),\n defaultMessage: 'Relations have been loaded',\n })\n );\n }\n }, [data, formatMessage, notifyStatus]);\n\n return (\n <Menu.Root onOpenChange={(isOpen) => setIsOpen(isOpen)}>\n <MenuTrigger onClick={(e) => e.stopPropagation()}>\n <Flex gap={1} wrap=\"nowrap\">\n <Badge>{content.count}</Badge>\n {formatMessage(\n {\n id: 'content-manager.containers.list.items',\n defaultMessage: '{number, plural, =0 {items} one {item} other {items}}',\n },\n { number: content.count }\n )}\n </Flex>\n </MenuTrigger>\n <Menu.Content>\n {isLoading && (\n <Menu.Item disabled>\n <Loader small>\n {formatMessage({\n id: getTranslation('ListViewTable.relation-loading'),\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n </Menu.Item>\n )}\n {data?.results && (\n <>\n {data.results.map((entry) => (\n <Menu.Item key={entry.documentId} disabled>\n <Typography maxWidth=\"50rem\" ellipsis>\n {getRelationLabel(entry, mainField)}\n </Typography>\n </Menu.Item>\n ))}\n\n {data?.pagination && data?.pagination.total > 10 && (\n <Menu.Item\n aria-disabled\n aria-label={formatMessage({\n id: getTranslation('ListViewTable.relation-more'),\n defaultMessage: 'This relation contains more entities than displayed',\n })}\n >\n <Typography>…</Typography>\n </Menu.Item>\n )}\n </>\n )}\n </Menu.Content>\n </Menu.Root>\n );\n};\n\n/**\n * TODO: this needs to be solved in the Design-System\n */\nconst MenuTrigger = styled(Menu.Trigger)`\n svg {\n width: 0.6rem;\n height: 0.4rem;\n }\n`;\n\nexport { RelationSingle, RelationMultiple };\nexport type { RelationSingleProps, RelationMultipleProps };\n","import { Tooltip, Typography } from '@strapi/design-system';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { CellValue } from './CellValue';\nimport { SingleComponent, RepeatableComponent } from './Components';\nimport { MediaSingle, MediaMultiple } from './Media';\nimport { RelationMultiple, RelationSingle } from './Relations';\n\nimport type { ListFieldLayout } from '../../../../hooks/useDocumentLayout';\nimport type { Schema, Data } from '@strapi/types';\n\ninterface CellContentProps extends Omit<ListFieldLayout, 'cellFormatter'> {\n content: Schema.Attribute.Value<Schema.Attribute.AnyAttribute>;\n rowId: Data.ID;\n}\n\nconst CellContent = ({ content, mainField, attribute, rowId, name }: CellContentProps) => {\n if (!hasContent(content, mainField, attribute)) {\n return <Typography textColor=\"neutral800\">-</Typography>;\n }\n\n switch (attribute.type) {\n case 'media':\n if (!attribute.multiple) {\n return <MediaSingle {...content} />;\n }\n\n return <MediaMultiple content={content} />;\n\n case 'relation': {\n if (isSingleRelation(attribute.relation)) {\n return <RelationSingle mainField={mainField} content={content} />;\n }\n\n return <RelationMultiple rowId={rowId} mainField={mainField} content={content} name={name} />;\n }\n\n case 'component':\n if (attribute.repeatable) {\n return <RepeatableComponent mainField={mainField} content={content} />;\n }\n\n return <SingleComponent mainField={mainField} content={content} />;\n\n case 'string':\n return (\n <Tooltip description={content}>\n <Typography maxWidth=\"30rem\" ellipsis textColor=\"neutral800\">\n <CellValue type={attribute.type} value={content} />\n </Typography>\n </Tooltip>\n );\n\n default:\n return (\n <Typography maxWidth=\"30rem\" ellipsis textColor=\"neutral800\">\n <CellValue type={attribute.type} value={content} />\n </Typography>\n );\n }\n};\n\nconst hasContent = (\n content: CellContentProps['content'],\n mainField: CellContentProps['mainField'],\n attribute: CellContentProps['attribute']\n) => {\n if (attribute.type === 'component') {\n // Repeatable fields show the ID as fallback, in case the mainField\n // doesn't have any content\n if (attribute.repeatable || !mainField) {\n return content?.length > 0;\n }\n\n const value = content?.[mainField.name];\n\n // relations, media ... show the id as fallback\n if (mainField.name === 'id' && ![undefined, null].includes(value)) {\n return true;\n }\n\n return !isEmpty(value);\n }\n\n if (attribute.type === 'relation') {\n if (isSingleRelation(attribute.relation)) {\n return !isEmpty(content);\n }\n\n return content?.count > 0;\n }\n\n /*\n Biginteger fields need to be treated as strings, as `isNumber`\n doesn't deal with them.\n */\n if (['integer', 'decimal', 'float', 'number'].includes(attribute.type)) {\n return typeof content === 'number';\n }\n\n if (attribute.type === 'boolean') {\n return content !== null;\n }\n\n return !isEmpty(content);\n};\n\nconst isSingleRelation = (\n type: Extract<CellContentProps['attribute'], { type: 'relation' }>['relation']\n) => ['oneToOne', 'manyToOne', 'oneToOneMorph'].includes(type);\n\nexport { CellContent };\nexport type { CellContentProps };\n","import * as React from 'react';\n\nimport { useTracking, useRBAC, useQueryParams } from '@strapi/admin/strapi-admin';\nimport {\n Flex,\n IconButton,\n Popover,\n BaseCheckbox,\n TextButton,\n Typography,\n useCollator,\n LinkButton,\n FlexComponent,\n} from '@strapi/design-system';\nimport { Cog, ListPlus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentLayout } from '../../../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../../../modules/hooks';\nimport { checkIfAttributeIsDisplayable } from '../../../utils/attributes';\n\ninterface ViewSettingsMenuProps extends FieldPickerProps {}\n\nconst ViewSettingsMenu = (props: ViewSettingsMenuProps) => {\n const [isVisible, setIsVisible] = React.useState(false);\n const cogButtonRef = React.useRef<HTMLButtonElement>(null!);\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.collectionTypesConfigurations ?? []\n );\n const [{ query }] = useQueryParams<{ plugins?: Record<string, unknown> }>();\n const { formatMessage } = useIntl();\n const {\n allowedActions: { canConfigureView },\n } = useRBAC(permissions);\n\n const handleToggle = () => {\n setIsVisible((prev) => !prev);\n };\n\n return (\n <>\n <IconButton\n label={formatMessage({\n id: 'components.ViewSettings.tooltip',\n defaultMessage: 'View Settings',\n })}\n ref={cogButtonRef}\n onClick={handleToggle}\n >\n <Cog />\n </IconButton>\n {isVisible && (\n <Popover\n placement=\"bottom-end\"\n source={cogButtonRef}\n onDismiss={handleToggle}\n spacing={4}\n padding={3}\n >\n <Flex alignItems=\"stretch\" direction=\"column\" gap={3}>\n {canConfigureView ? (\n <LinkButton\n size=\"S\"\n startIcon={<ListPlus />}\n variant=\"secondary\"\n tag={NavLink}\n to={{\n pathname: 'configurations/list',\n search: query.plugins\n ? stringify({ plugins: query.plugins }, { encode: false })\n : '',\n }}\n >\n {formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n })}\n </LinkButton>\n ) : null}\n <FieldPicker {...props} />\n </Flex>\n </Popover>\n )}\n </>\n );\n};\n\ninterface FieldPickerProps {\n headers?: string[];\n setHeaders: (headers: string[]) => void;\n resetHeaders: () => void;\n}\n\nconst FieldPicker = ({ headers = [], resetHeaders, setHeaders }: FieldPickerProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n\n const { schema, model } = useDoc();\n const { list } = useDocumentLayout(model);\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const attributes = schema?.attributes ?? {};\n\n const columns = Object.keys(attributes)\n .filter((name) => checkIfAttributeIsDisplayable(attributes[name]))\n .map((name) => ({\n name,\n label: list.metadatas[name]?.label ?? '',\n }))\n .sort((a, b) => formatter.compare(a.label, b.label));\n\n const handleChange = (name: string) => {\n trackUsage('didChangeDisplayedFields');\n\n /**\n * create an array of the new headers, if the new name exists it should be removed,\n * otherwise it should be added\n */\n const newHeaders = headers.includes(name)\n ? headers.filter((header) => header !== name)\n : [...headers, name];\n\n setHeaders(newHeaders);\n };\n\n const handleReset = () => {\n resetHeaders();\n };\n\n return (\n <Flex tag=\"fieldset\" direction=\"column\" alignItems=\"stretch\" gap={3} borderWidth={0}>\n <Flex justifyContent=\"space-between\">\n <Typography tag=\"legend\" variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'containers.list.displayedFields',\n defaultMessage: 'Displayed fields',\n })}\n </Typography>\n\n <TextButton onClick={handleReset}>\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </TextButton>\n </Flex>\n\n <Flex direction=\"column\" alignItems=\"stretch\">\n {columns.map((header) => {\n const isActive = headers.includes(header.name);\n\n return (\n <ChackboxWrapper\n wrap=\"wrap\"\n gap={2}\n tag=\"label\"\n background={isActive ? 'primary100' : 'transparent'}\n hasRadius\n padding={2}\n key={header.name}\n >\n <BaseCheckbox\n onChange={() => handleChange(header.name)}\n value={isActive}\n name={header.name}\n />\n <Typography fontSize={1}>{header.label}</Typography>\n </ChackboxWrapper>\n );\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst ChackboxWrapper = styled<FlexComponent<'label'>>(Flex)`\n :hover {\n background-color: ${(props) => props.theme.colors.primary100};\n }\n`;\n\nexport { ViewSettingsMenu };\nexport type { ViewSettingsMenuProps, FieldPickerProps };\n","import * as React from 'react';\n\nimport {\n Page,\n Pagination,\n SearchInput,\n Table,\n BackButton,\n useNotification,\n useStrapiApp,\n useTracking,\n useAPIErrorHandler,\n useQueryParams,\n useRBAC,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Typography, ButtonProps } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, Link as ReactRouterLink, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { HOOKS } from '../../constants/hooks';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport {\n ListFieldLayout,\n convertListLayoutToFieldLayouts,\n useDocumentLayout,\n} from '../../hooks/useDocumentLayout';\nimport { usePrev } from '../../hooks/usePrev';\nimport { useGetAllDocumentsQuery } from '../../services/documents';\nimport { buildValidParams } from '../../utils/api';\nimport { getTranslation } from '../../utils/translations';\nimport { getDisplayName } from '../../utils/users';\nimport { DocumentStatus } from '../EditView/components/DocumentStatus';\n\nimport { BulkActionsRenderer } from './components/BulkActions/Actions';\nimport { Filters } from './components/Filters';\nimport { TableActions } from './components/TableActions';\nimport { CellContent } from './components/TableCells/CellContent';\nimport { ViewSettingsMenu } from './components/ViewSettingsMenu';\n\nimport type { Modules } from '@strapi/types';\n\nconst { INJECT_COLUMN_IN_TABLE } = HOOKS;\n\n/* -------------------------------------------------------------------------------------------------\n * ListViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListViewPage = () => {\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n\n const { collectionType, model, schema } = useDoc();\n const { list } = useDocumentLayout(model);\n\n const [displayedHeaders, setDisplayedHeaders] = React.useState<ListFieldLayout[]>([]);\n\n const listLayout = usePrev(list.layout);\n React.useEffect(() => {\n /**\n * ONLY update the displayedHeaders if the document\n * layout has actually changed in value.\n */\n if (!isEqual(listLayout, list.layout)) {\n setDisplayedHeaders(list.layout);\n }\n }, [list.layout, listLayout]);\n\n const handleSetHeaders = (headers: string[]) => {\n setDisplayedHeaders(\n convertListLayoutToFieldLayouts(headers, schema!.attributes, list.metadatas)\n );\n };\n\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n page?: string;\n pageSize?: string;\n sort?: string;\n }>({\n page: '1',\n pageSize: list.settings.pageSize.toString(),\n sort: list.settings.defaultSortBy\n ? `${list.settings.defaultSortBy}:${list.settings.defaultSortOrder}`\n : '',\n });\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { data, error, isLoading } = useGetAllDocumentsQuery({\n model,\n params,\n });\n\n /**\n * If the API returns an error, display a notification\n */\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const { results = [], pagination } = data ?? {};\n\n React.useEffect(() => {\n if (pagination && pagination.pageCount > 0 && pagination.page > pagination.pageCount) {\n navigate(\n {\n search: stringify({\n ...query,\n page: pagination.pageCount,\n }),\n },\n { replace: true }\n );\n }\n }, [pagination, formatMessage, query, navigate]);\n\n const { canCreate } = useDocumentRBAC('ListViewPage', ({ canCreate }) => ({\n canCreate,\n }));\n\n const runHookWaterfall = useStrapiApp('ListViewPage', ({ runHookWaterfall }) => runHookWaterfall);\n /**\n * Run the waterfall and then inject our additional table headers.\n */\n const tableHeaders = React.useMemo(() => {\n const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {\n displayedHeaders,\n layout: list,\n });\n\n const formattedHeaders = headers.displayedHeaders.map<ListFieldLayout>((header) => {\n return {\n ...header,\n label: typeof header.label === 'string' ? header.label : formatMessage(header.label),\n name: `${header.name}${header.mainField ? `.${header.mainField}` : ''}`,\n };\n });\n\n if (schema?.options?.draftAndPublish) {\n formattedHeaders.push({\n attribute: {\n type: 'custom',\n },\n name: 'status',\n label: formatMessage({\n id: getTranslation(`containers.list.table-headers.status`),\n defaultMessage: 'status',\n }),\n searchable: false,\n sortable: false,\n } satisfies ListFieldLayout);\n }\n\n return formattedHeaders;\n }, [displayedHeaders, formatMessage, list, runHookWaterfall, schema?.options?.draftAndPublish]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n const contentTypeTitle = schema?.info.displayName ?? 'Untitled';\n\n const handleRowClick = (id: Modules.Documents.ID) => () => {\n trackUsage('willEditEntryFromList');\n navigate({\n pathname: id.toString(),\n search: stringify({ plugins: query.plugins }),\n });\n };\n\n return (\n <Page.Main>\n <Page.Title>{`${contentTypeTitle}`}</Page.Title>\n <Layouts.Header\n primaryAction={canCreate ? <CreateButton /> : null}\n subtitle={formatMessage(\n {\n id: getTranslation('pages.ListView.header-subtitle'),\n defaultMessage:\n '{number, plural, =0 {# entries} one {# entry} other {# entries}} found',\n },\n { number: pagination?.total }\n )}\n title={contentTypeTitle}\n navigationAction={<BackButton />}\n />\n <Layouts.Action\n endActions={\n <>\n <InjectionZone area=\"listView.actions\" />\n <ViewSettingsMenu\n setHeaders={handleSetHeaders}\n resetHeaders={() => setDisplayedHeaders(list.layout)}\n headers={displayedHeaders.map((header) => header.name)}\n />\n </>\n }\n startActions={\n <>\n {list.settings.searchable && (\n <SearchInput\n disabled={results.length === 0}\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: contentTypeTitle }\n )}\n placeholder={formatMessage({\n id: 'global.search',\n defaultMessage: 'Search',\n })}\n trackedEvent=\"didSearch\"\n />\n )}\n {list.settings.filterable && schema ? (\n <Filters disabled={results.length === 0} schema={schema} />\n ) : null}\n </>\n }\n />\n <Layouts.Content>\n <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n <Table.Root rows={results} headers={tableHeaders} isLoading={isLoading}>\n <Table.ActionBar>\n <BulkActionsRenderer />\n </Table.ActionBar>\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {tableHeaders.map((header: ListFieldLayout) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Loading />\n <Table.Empty action={canCreate ? <CreateButton variant=\"secondary\" /> : null} />\n <Table.Body>\n {results.map((row) => {\n return (\n <Table.Row\n cursor=\"pointer\"\n key={row.id}\n onClick={handleRowClick(row.documentId)}\n >\n <Table.CheckboxCell id={row.id} />\n {tableHeaders.map(({ cellFormatter, ...header }) => {\n if (header.name === 'status') {\n const { status } = row;\n\n return (\n <Table.Cell key={header.name}>\n <DocumentStatus status={status} maxWidth={'min-content'} />\n </Table.Cell>\n );\n }\n if (['createdBy', 'updatedBy'].includes(header.name.split('.')[0])) {\n // Display the users full name\n // Some entries doesn't have a user assigned as creator/updater (ex: entries created through content API)\n // In this case, we display a dash\n return (\n <Table.Cell key={header.name}>\n <Typography textColor=\"neutral800\">\n {row[header.name.split('.')[0]]\n ? getDisplayName(row[header.name.split('.')[0]])\n : '-'}\n </Typography>\n </Table.Cell>\n );\n }\n if (typeof cellFormatter === 'function') {\n return (\n <Table.Cell key={header.name}>\n {/* @ts-expect-error – TODO: fix this TS error */}\n {cellFormatter(row, header, { collectionType, model })}\n </Table.Cell>\n );\n }\n return (\n <Table.Cell key={header.name}>\n <CellContent\n content={row[header.name.split('.')[0]]}\n rowId={row.documentId}\n {...header}\n />\n </Table.Cell>\n );\n })}\n {/* we stop propogation here to allow the menu to trigger it's events without triggering the row redirect */}\n <ActionsCell onClick={(e) => e.stopPropagation()}>\n <TableActions document={row} />\n </ActionsCell>\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root\n {...pagination}\n onPageSizeChange={() => trackUsage('willChangeNumberOfEntriesPerPage')}\n >\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Flex>\n </Layouts.Content>\n </Page.Main>\n );\n};\n\nconst ActionsCell = styled(Table.Cell)`\n display: flex;\n justify-content: flex-end;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * CreateButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateButtonProps extends Pick<ButtonProps, 'variant'> {}\n\nconst CreateButton = ({ variant }: CreateButtonProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }] = useQueryParams<{ plugins: object }>();\n\n return (\n <Button\n variant={variant}\n tag={ReactRouterLink}\n onClick={() => {\n trackUsage('willCreateEntry', { status: 'draft' });\n }}\n startIcon={<Plus />}\n style={{ textDecoration: 'none' }}\n to={{\n pathname: 'create',\n search: stringify({ plugins: query.plugins }),\n }}\n >\n {formatMessage({\n id: getTranslation('HeaderLayout.button.label-add-entry'),\n defaultMessage: 'Create new entry',\n })}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <ListViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { ListViewPage, ProtectedListViewPage };\n"],"names":["MenuTrigger","isOpen","canCreate","runHookWaterfall","Filters","ReactRouterLink","permissions"],"mappings":"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"}
|
@@ -9,13 +9,13 @@ const isEqual = require("lodash/isEqual");
|
|
9
9
|
const qs = require("qs");
|
10
10
|
const reactIntl = require("react-intl");
|
11
11
|
const reactRouterDom = require("react-router-dom");
|
12
|
-
const
|
13
|
-
const index = require("./index-
|
12
|
+
const styledComponents = require("styled-components");
|
13
|
+
const index = require("./index-CCJeB7Rw.js");
|
14
|
+
const usePrev = require("./usePrev-B9w_-eYc.js");
|
14
15
|
const isEmpty = require("lodash/isEmpty");
|
15
16
|
const parseISO = require("date-fns/parseISO");
|
16
17
|
const toString = require("lodash/toString");
|
17
|
-
const
|
18
|
-
const relations = require("./relations-iBMa_OFG.js");
|
18
|
+
const relations = require("./relations-CeJAJc5I.js");
|
19
19
|
const hooks = require("./hooks-BAaaKPS_.js");
|
20
20
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
21
21
|
function _interopNamespace(e) {
|
@@ -38,17 +38,9 @@ function _interopNamespace(e) {
|
|
38
38
|
}
|
39
39
|
const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
40
40
|
const isEqual__default = /* @__PURE__ */ _interopDefault(isEqual);
|
41
|
-
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
42
41
|
const isEmpty__default = /* @__PURE__ */ _interopDefault(isEmpty);
|
43
42
|
const parseISO__default = /* @__PURE__ */ _interopDefault(parseISO);
|
44
43
|
const toString__default = /* @__PURE__ */ _interopDefault(toString);
|
45
|
-
const usePrev = (value) => {
|
46
|
-
const ref = React.useRef();
|
47
|
-
React.useEffect(() => {
|
48
|
-
ref.current = value;
|
49
|
-
}, [value]);
|
50
|
-
return ref.current;
|
51
|
-
};
|
52
44
|
const NOT_ALLOWED_FILTERS = [
|
53
45
|
"json",
|
54
46
|
"component",
|
@@ -262,11 +254,8 @@ const SingleComponent = ({ content, mainField }) => {
|
|
262
254
|
if (!mainField) {
|
263
255
|
return null;
|
264
256
|
}
|
265
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { label: content[mainField.name], children: /* @__PURE__ */ jsxRuntime.jsx(
|
257
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { label: content[mainField.name], children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { maxWidth: "25rem", textColor: "neutral800", ellipsis: true, children: /* @__PURE__ */ jsxRuntime.jsx(CellValue, { type: mainField.type, value: content[mainField.name] }) }) });
|
266
258
|
};
|
267
|
-
const SingleComponentTypography = styled__default.default(designSystem.Typography)`
|
268
|
-
max-width: 250px;
|
269
|
-
`;
|
270
259
|
const RepeatableComponent = ({ content, mainField }) => {
|
271
260
|
const { formatMessage } = reactIntl.useIntl();
|
272
261
|
if (!mainField) {
|
@@ -284,13 +273,10 @@ const RepeatableComponent = ({ content, mainField }) => {
|
|
284
273
|
{ number: content.length }
|
285
274
|
)
|
286
275
|
] }),
|
287
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Content, { children: content.map((item) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Item, { disabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
276
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Content, { children: content.map((item) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Item, { disabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { maxWidth: "50rem", ellipsis: true, children: /* @__PURE__ */ jsxRuntime.jsx(CellValue, { type: mainField.type, value: item[mainField.name] }) }) }, item.id)) })
|
288
277
|
] });
|
289
278
|
};
|
290
|
-
const
|
291
|
-
max-width: 500px;
|
292
|
-
`;
|
293
|
-
const MenuTrigger$1 = styled__default.default(designSystem.Menu.Trigger)`
|
279
|
+
const MenuTrigger$1 = styledComponents.styled(designSystem.Menu.Trigger)`
|
294
280
|
svg {
|
295
281
|
width: 0.6rem;
|
296
282
|
height: 0.4rem;
|
@@ -298,10 +284,10 @@ const MenuTrigger$1 = styled__default.default(designSystem.Menu.Trigger)`
|
|
298
284
|
`;
|
299
285
|
const getFileExtension = (ext) => ext && ext[0] === "." ? ext.substring(1) : ext;
|
300
286
|
const MediaSingle = ({ url, mime, alternativeText, name, ext, formats }) => {
|
301
|
-
const fileURL =
|
287
|
+
const fileURL = usePrev.prefixFileUrlWithBackendUrl(url);
|
302
288
|
if (mime.includes("image")) {
|
303
289
|
const thumbnail = formats?.thumbnail?.url;
|
304
|
-
const mediaURL =
|
290
|
+
const mediaURL = usePrev.prefixFileUrlWithBackendUrl(thumbnail) || fileURL;
|
305
291
|
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Avatar, { src: mediaURL, alt: alternativeText || name, preview: true });
|
306
292
|
}
|
307
293
|
const fileExtension = getFileExtension(ext);
|
@@ -312,7 +298,7 @@ const FileWrapper = ({ children }) => {
|
|
312
298
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
313
299
|
designSystem.Flex,
|
314
300
|
{
|
315
|
-
|
301
|
+
tag: "span",
|
316
302
|
position: "relative",
|
317
303
|
borderRadius: "50%",
|
318
304
|
width: "26px",
|
@@ -326,7 +312,7 @@ const FileWrapper = ({ children }) => {
|
|
326
312
|
}
|
327
313
|
);
|
328
314
|
};
|
329
|
-
const FileTypography =
|
315
|
+
const FileTypography = styledComponents.styled(designSystem.Typography)`
|
330
316
|
font-size: 0.9rem;
|
331
317
|
line-height: 0.9rem;
|
332
318
|
`;
|
@@ -344,11 +330,8 @@ const MediaMultiple = ({ content }) => {
|
|
344
330
|
}) });
|
345
331
|
};
|
346
332
|
const RelationSingle = ({ mainField, content }) => {
|
347
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
333
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { maxWidth: "50rem", textColor: "neutral800", ellipsis: true, children: relations.getRelationLabel(content, mainField) });
|
348
334
|
};
|
349
|
-
const TypographyMaxWidth$1 = styled__default.default(designSystem.Typography)`
|
350
|
-
max-width: 500px;
|
351
|
-
`;
|
352
335
|
const RelationMultiple = ({ mainField, content, rowId, name }) => {
|
353
336
|
const { model } = index.useDoc();
|
354
337
|
const { formatMessage } = reactIntl.useIntl();
|
@@ -393,7 +376,7 @@ const RelationMultiple = ({ mainField, content, rowId, name }) => {
|
|
393
376
|
defaultMessage: "Relations are loading"
|
394
377
|
}) }) }),
|
395
378
|
data?.results && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
396
|
-
data.results.map((entry) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Item, { disabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
379
|
+
data.results.map((entry) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Menu.Item, { disabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { maxWidth: "50rem", ellipsis: true, children: relations.getRelationLabel(entry, mainField) }) }, entry.documentId)),
|
397
380
|
data?.pagination && data?.pagination.total > 10 && /* @__PURE__ */ jsxRuntime.jsx(
|
398
381
|
designSystem.Menu.Item,
|
399
382
|
{
|
@@ -409,7 +392,7 @@ const RelationMultiple = ({ mainField, content, rowId, name }) => {
|
|
409
392
|
] })
|
410
393
|
] });
|
411
394
|
};
|
412
|
-
const MenuTrigger =
|
395
|
+
const MenuTrigger = styledComponents.styled(designSystem.Menu.Trigger)`
|
413
396
|
svg {
|
414
397
|
width: 0.6rem;
|
415
398
|
height: 0.4rem;
|
@@ -437,14 +420,11 @@ const CellContent = ({ content, mainField, attribute, rowId, name }) => {
|
|
437
420
|
}
|
438
421
|
return /* @__PURE__ */ jsxRuntime.jsx(SingleComponent, { mainField, content });
|
439
422
|
case "string":
|
440
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { description: content, children: /* @__PURE__ */ jsxRuntime.jsx(
|
423
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tooltip, { description: content, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { maxWidth: "30rem", ellipsis: true, textColor: "neutral800", children: /* @__PURE__ */ jsxRuntime.jsx(CellValue, { type: attribute.type, value: content }) }) });
|
441
424
|
default:
|
442
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
425
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { maxWidth: "30rem", ellipsis: true, textColor: "neutral800", children: /* @__PURE__ */ jsxRuntime.jsx(CellValue, { type: attribute.type, value: content }) });
|
443
426
|
}
|
444
427
|
};
|
445
|
-
const TypographyMaxWidth = styled__default.default(designSystem.Typography)`
|
446
|
-
max-width: 300px;
|
447
|
-
`;
|
448
428
|
const hasContent = (content, mainField, attribute) => {
|
449
429
|
if (attribute.type === "component") {
|
450
430
|
if (attribute.repeatable || !mainField) {
|
@@ -489,13 +469,13 @@ const ViewSettingsMenu = (props) => {
|
|
489
469
|
/* @__PURE__ */ jsxRuntime.jsx(
|
490
470
|
designSystem.IconButton,
|
491
471
|
{
|
492
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Cog, {}),
|
493
472
|
label: formatMessage({
|
494
473
|
id: "components.ViewSettings.tooltip",
|
495
474
|
defaultMessage: "View Settings"
|
496
475
|
}),
|
497
476
|
ref: cogButtonRef,
|
498
|
-
onClick: handleToggle
|
477
|
+
onClick: handleToggle,
|
478
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Cog, {})
|
499
479
|
}
|
500
480
|
),
|
501
481
|
isVisible && /* @__PURE__ */ jsxRuntime.jsx(
|
@@ -513,7 +493,7 @@ const ViewSettingsMenu = (props) => {
|
|
513
493
|
size: "S",
|
514
494
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.ListPlus, {}),
|
515
495
|
variant: "secondary",
|
516
|
-
|
496
|
+
tag: reactRouterDom.NavLink,
|
517
497
|
to: {
|
518
498
|
pathname: "configurations/list",
|
519
499
|
search: query.plugins ? qs.stringify({ plugins: query.plugins }, { encode: false }) : ""
|
@@ -551,9 +531,9 @@ const FieldPicker = ({ headers = [], resetHeaders, setHeaders }) => {
|
|
551
531
|
const handleReset = () => {
|
552
532
|
resetHeaders();
|
553
533
|
};
|
554
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, {
|
534
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { tag: "fieldset", direction: "column", alignItems: "stretch", gap: 3, borderWidth: 0, children: [
|
555
535
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", children: [
|
556
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, {
|
536
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "legend", variant: "pi", fontWeight: "bold", children: formatMessage({
|
557
537
|
id: "containers.list.displayedFields",
|
558
538
|
defaultMessage: "Displayed fields"
|
559
539
|
}) }),
|
@@ -569,7 +549,7 @@ const FieldPicker = ({ headers = [], resetHeaders, setHeaders }) => {
|
|
569
549
|
{
|
570
550
|
wrap: "wrap",
|
571
551
|
gap: 2,
|
572
|
-
|
552
|
+
tag: "label",
|
573
553
|
background: isActive ? "primary100" : "transparent",
|
574
554
|
hasRadius: true,
|
575
555
|
padding: 2,
|
@@ -590,7 +570,7 @@ const FieldPicker = ({ headers = [], resetHeaders, setHeaders }) => {
|
|
590
570
|
}) })
|
591
571
|
] });
|
592
572
|
};
|
593
|
-
const ChackboxWrapper =
|
573
|
+
const ChackboxWrapper = styledComponents.styled(designSystem.Flex)`
|
594
574
|
:hover {
|
595
575
|
background-color: ${(props) => props.theme.colors.primary100};
|
596
576
|
}
|
@@ -605,7 +585,7 @@ const ListViewPage = () => {
|
|
605
585
|
const { collectionType, model, schema } = index.useDoc();
|
606
586
|
const { list } = index.useDocumentLayout(model);
|
607
587
|
const [displayedHeaders, setDisplayedHeaders] = React__namespace.useState([]);
|
608
|
-
const listLayout = usePrev(list.layout);
|
588
|
+
const listLayout = usePrev.usePrev(list.layout);
|
609
589
|
React__namespace.useEffect(() => {
|
610
590
|
if (!isEqual__default.default(listLayout, list.layout)) {
|
611
591
|
setDisplayedHeaders(list.layout);
|
@@ -747,7 +727,7 @@ const ListViewPage = () => {
|
|
747
727
|
),
|
748
728
|
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
|
749
729
|
/* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Root, { rows: results, headers: tableHeaders, isLoading, children: [
|
750
|
-
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.ActionBar, {}),
|
730
|
+
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.ActionBar, { children: /* @__PURE__ */ jsxRuntime.jsx(index.BulkActionsRenderer, {}) }),
|
751
731
|
/* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Content, { children: [
|
752
732
|
/* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Table.Head, { children: [
|
753
733
|
/* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Table.HeaderCheckboxCell, {}),
|
@@ -805,7 +785,7 @@ const ListViewPage = () => {
|
|
805
785
|
] }) })
|
806
786
|
] });
|
807
787
|
};
|
808
|
-
const ActionsCell =
|
788
|
+
const ActionsCell = styledComponents.styled(strapiAdmin.Table.Cell)`
|
809
789
|
display: flex;
|
810
790
|
justify-content: flex-end;
|
811
791
|
`;
|
@@ -817,7 +797,7 @@ const CreateButton = ({ variant }) => {
|
|
817
797
|
designSystem.Button,
|
818
798
|
{
|
819
799
|
variant,
|
820
|
-
|
800
|
+
tag: reactRouterDom.Link,
|
821
801
|
onClick: () => {
|
822
802
|
trackUsage("willCreateEntry", { status: "draft" });
|
823
803
|
},
|
@@ -856,4 +836,4 @@ const ProtectedListViewPage = () => {
|
|
856
836
|
};
|
857
837
|
exports.ListViewPage = ListViewPage;
|
858
838
|
exports.ProtectedListViewPage = ProtectedListViewPage;
|
859
|
-
//# sourceMappingURL=ListViewPage-
|
839
|
+
//# sourceMappingURL=ListViewPage-CZYGqlvF.js.map
|