@payloadcms/ui 3.25.0-canary.36940b2 → 3.25.0-canary.3d5c763
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/elements/BulkUpload/DiscardWithoutSaving/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +10 -30
- package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +3 -2
- package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/createFormData.js +19 -2
- package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +8 -2
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/Link/index.d.ts +9 -1
- package/dist/elements/Link/index.d.ts.map +1 -1
- package/dist/elements/Link/index.js +6 -0
- package/dist/elements/Link/index.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +1 -1
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +3 -4
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.d.ts +3 -3
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js +5 -6
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts +3 -3
- package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildPolymorphicColumnState.js +5 -6
- package/dist/elements/TableColumns/buildPolymorphicColumnState.js.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.d.ts +2 -2
- package/dist/elements/TableColumns/getInitialColumns.d.ts.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.js +1 -2
- package/dist/elements/TableColumns/getInitialColumns.js.map +1 -1
- package/dist/elements/TableColumns/index.d.ts.map +1 -1
- package/dist/elements/TableColumns/index.js +11 -21
- package/dist/elements/TableColumns/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-G3Y4UHC4.js → CodeEditor-L6GW2VQ6.js} +2 -2
- package/dist/exports/client/{chunk-4L367VSB.js → chunk-ZZDNSFEW.js} +2 -2
- package/dist/exports/client/{chunk-4L367VSB.js.map → chunk-ZZDNSFEW.js.map} +2 -2
- package/dist/exports/client/index.d.ts +2 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +23 -23
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +2 -2
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +16 -12
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +30 -14
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +28 -4
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +1 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +4 -1
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/UploadHandlers/index.d.ts +21 -0
- package/dist/providers/UploadHandlers/index.d.ts.map +1 -0
- package/dist/providers/UploadHandlers/index.js +72 -0
- package/dist/providers/UploadHandlers/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/utilities/renderTable.d.ts +3 -4
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +2 -2
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js.map +1 -1
- package/package.json +6 -6
- /package/dist/exports/client/{CodeEditor-G3Y4UHC4.js.map → CodeEditor-L6GW2VQ6.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/DiscardWithoutSaving/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/DiscardWithoutSaving/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,eAAO,MAAM,0BAA0B,wCAAwC,CAAA;AAE/E,wBAAgB,oBAAoB,sBAyBnC"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { c as _c } from "react/compiler-runtime";
|
|
4
|
-
import { jsx as _jsx
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
5
|
import { useModal } from '@faceless-ui/modal';
|
|
6
6
|
import React from 'react';
|
|
7
7
|
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
8
|
-
import {
|
|
9
|
-
import { FullscreenModal } from '../../FullscreenModal/index.js';
|
|
8
|
+
import { ConfirmationModal } from '../../ConfirmationModal/index.js';
|
|
10
9
|
import { useBulkUpload } from '../index.js';
|
|
11
10
|
export const discardBulkUploadModalSlug = 'bulk-upload--discard-without-saving';
|
|
12
|
-
const baseClass = 'leave-without-saving';
|
|
13
11
|
export function DiscardWithoutSaving() {
|
|
14
12
|
const $ = _c(9);
|
|
15
13
|
const {
|
|
@@ -47,32 +45,14 @@ export function DiscardWithoutSaving() {
|
|
|
47
45
|
const onConfirm = t1;
|
|
48
46
|
let t2;
|
|
49
47
|
if ($[5] !== onCancel || $[6] !== onConfirm || $[7] !== t) {
|
|
50
|
-
t2 = _jsx(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
children: t("general:leaveWithoutSaving")
|
|
59
|
-
}), _jsx("p", {
|
|
60
|
-
children: t("general:changesNotSaved")
|
|
61
|
-
})]
|
|
62
|
-
}), _jsxs("div", {
|
|
63
|
-
className: `${baseClass}__controls`,
|
|
64
|
-
children: [_jsx(Button, {
|
|
65
|
-
buttonStyle: "secondary",
|
|
66
|
-
onClick: onCancel,
|
|
67
|
-
size: "large",
|
|
68
|
-
children: t("general:stayOnThisPage")
|
|
69
|
-
}), _jsx(Button, {
|
|
70
|
-
onClick: onConfirm,
|
|
71
|
-
size: "large",
|
|
72
|
-
children: t("general:leaveAnyway")
|
|
73
|
-
})]
|
|
74
|
-
})]
|
|
75
|
-
})
|
|
48
|
+
t2 = _jsx(ConfirmationModal, {
|
|
49
|
+
body: t("general:changesNotSaved"),
|
|
50
|
+
cancelLabel: t("general:stayOnThisPage"),
|
|
51
|
+
confirmLabel: t("general:leaveAnyway"),
|
|
52
|
+
heading: t("general:leaveWithoutSaving"),
|
|
53
|
+
modalSlug: discardBulkUploadModalSlug,
|
|
54
|
+
onCancel,
|
|
55
|
+
onConfirm
|
|
76
56
|
});
|
|
77
57
|
$[5] = onCancel;
|
|
78
58
|
$[6] = onConfirm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","React","useTranslation","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","React","useTranslation","ConfirmationModal","useBulkUpload","discardBulkUploadModalSlug","DiscardWithoutSaving","$","t","closeModal","drawerSlug","t0","onCancel","t1","onConfirm","t2","_jsx","body","cancelLabel","confirmLabel","heading","modalSlug"],"sources":["../../../../src/elements/BulkUpload/DiscardWithoutSaving/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { useBulkUpload } from '../index.js'\nexport const discardBulkUploadModalSlug = 'bulk-upload--discard-without-saving'\n\nexport function DiscardWithoutSaving() {\n const { t } = useTranslation()\n const { closeModal } = useModal()\n const { drawerSlug } = useBulkUpload()\n\n const onCancel = React.useCallback(() => {\n closeModal(discardBulkUploadModalSlug)\n }, [closeModal])\n\n const onConfirm = React.useCallback(() => {\n closeModal(drawerSlug)\n closeModal(discardBulkUploadModalSlug)\n }, [closeModal, drawerSlug])\n\n return (\n <ConfirmationModal\n body={t('general:changesNotSaved')}\n cancelLabel={t('general:stayOnThisPage')}\n confirmLabel={t('general:leaveAnyway')}\n heading={t('general:leaveWithoutSaving')}\n modalSlug={discardBulkUploadModalSlug}\n onCancel={onCancel}\n onConfirm={onConfirm}\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,QAAQ,QAAQ;AACzB,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,aAAa,QAAQ;AAC9B,OAAO,MAAMC,0BAAA,GAA6B;AAE1C,OAAO,SAAAC,qBAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EACL;IAAAS;EAAA,IAAcN,cAAA;EACd;IAAAO;EAAA,IAAuBT,QAAA;EACvB;IAAAU;EAAA,IAAuBN,aAAA;EAAA,IAAAO,EAAA;EAAA,IAAAJ,CAAA,QAAAE,UAAA;IAEYE,EAAA,GAAAA,CAAA;MACjCF,UAAA,CAAAJ,0BAAW;IAAA;IACbE,CAAA,MAAAE,UAAA;IAAAF,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAFA,MAAAK,QAAA,GAAiBD,EAEF;EAAA,IAAAE,EAAA;EAAA,IAAAN,CAAA,QAAAE,UAAA,IAAAF,CAAA,QAAAG,UAAA;IAEqBG,EAAA,GAAAA,CAAA;MAClCJ,UAAA,CAAWC,UAAA;MACXD,UAAA,CAAAJ,0BAAW;IAAA;IACbE,CAAA,MAAAE,UAAA;IAAAF,CAAA,MAAAG,UAAA;IAAAH,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAHA,MAAAO,SAAA,GAAkBD,EAGS;EAAA,IAAAE,EAAA;EAAA,IAAAR,CAAA,QAAAK,QAAA,IAAAL,CAAA,QAAAO,SAAA,IAAAP,CAAA,QAAAC,CAAA;IAGzBO,EAAA,GAAAC,IAAA,CAAAb,iBAAA;MAAAc,IAAA,EACQT,CAAA,CAAE;MAAAU,WAAA,EACKV,CAAA,CAAE;MAAAW,YAAA,EACDX,CAAA,CAAE;MAAAY,OAAA,EACPZ,CAAA,CAAE;MAAAa,SAAA,EAAAhB,0BAAA;MAAAO,QAAA;MAAAE;IAAA,C;;;;;;;;SAJbC,E","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import type { FormState } from 'payload';
|
|
2
|
-
|
|
1
|
+
import type { CollectionSlug, FormState } from 'payload';
|
|
2
|
+
import type { UploadHandlersContext } from '../../../providers/UploadHandlers/index.js';
|
|
3
|
+
export declare function createFormData(formState: FormState, overrides: Record<string, any>, collectionSlug: CollectionSlug, uploadHandler: ReturnType<UploadHandlersContext['getUploadHandler']>): Promise<FormData>;
|
|
3
4
|
//# sourceMappingURL=createFormData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFormData.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/createFormData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"createFormData.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/createFormData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAA;AAEvF,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAc,EACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EACnC,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,UAAU,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,qBAwCrE"}
|
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
import { serialize } from 'object-to-formdata';
|
|
2
2
|
import { reduceFieldsToValues } from 'payload/shared';
|
|
3
|
-
export function createFormData(formState = {}, overrides = {}) {
|
|
3
|
+
export async function createFormData(formState = {}, overrides = {}, collectionSlug, uploadHandler) {
|
|
4
4
|
const data = reduceFieldsToValues(formState, true);
|
|
5
|
-
|
|
5
|
+
let file = data?.file;
|
|
6
6
|
if (file) {
|
|
7
7
|
delete data.file;
|
|
8
8
|
}
|
|
9
|
+
let clientUploadContext = null;
|
|
10
|
+
if (typeof uploadHandler === 'function') {
|
|
11
|
+
let filename = file.name;
|
|
12
|
+
clientUploadContext = await uploadHandler({
|
|
13
|
+
file,
|
|
14
|
+
updateFilename: value => {
|
|
15
|
+
filename = value;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
file = JSON.stringify({
|
|
19
|
+
clientUploadContext,
|
|
20
|
+
collectionSlug,
|
|
21
|
+
filename,
|
|
22
|
+
mimeType: file.type,
|
|
23
|
+
size: file.size
|
|
24
|
+
});
|
|
25
|
+
}
|
|
9
26
|
const dataWithOverrides = {
|
|
10
27
|
...data,
|
|
11
28
|
...overrides
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFormData.js","names":["serialize","reduceFieldsToValues","createFormData","formState","overrides","data","file","
|
|
1
|
+
{"version":3,"file":"createFormData.js","names":["serialize","reduceFieldsToValues","createFormData","formState","overrides","collectionSlug","uploadHandler","data","file","clientUploadContext","filename","name","updateFilename","value","JSON","stringify","mimeType","type","size","dataWithOverrides","dataToSerialize","_payload","indices","nullsAsUndefineds"],"sources":["../../../../src/elements/BulkUpload/FormsManager/createFormData.ts"],"sourcesContent":["import type { CollectionSlug, FormState } from 'payload'\n\nimport { serialize } from 'object-to-formdata'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nimport type { UploadHandlersContext } from '../../../providers/UploadHandlers/index.js'\n\nexport async function createFormData(\n formState: FormState = {},\n overrides: Record<string, any> = {},\n collectionSlug: CollectionSlug,\n uploadHandler: ReturnType<UploadHandlersContext['getUploadHandler']>,\n) {\n const data = reduceFieldsToValues(formState, true)\n let file = data?.file\n\n if (file) {\n delete data.file\n }\n\n let clientUploadContext = null\n\n if (typeof uploadHandler === 'function') {\n let filename = file.name\n clientUploadContext = await uploadHandler({\n file,\n updateFilename: (value) => {\n filename = value\n },\n })\n\n file = JSON.stringify({\n clientUploadContext,\n collectionSlug,\n filename,\n mimeType: file.type,\n size: file.size,\n })\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n return serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n}\n"],"mappings":"AAEA,SAASA,SAAS,QAAQ;AAC1B,SAASC,oBAAoB,QAAQ;AAIrC,OAAO,eAAeC,eACpBC,SAAA,GAAuB,CAAC,CAAC,EACzBC,SAAA,GAAiC,CAAC,CAAC,EACnCC,cAA8B,EAC9BC,aAAoE;EAEpE,MAAMC,IAAA,GAAON,oBAAA,CAAqBE,SAAA,EAAW;EAC7C,IAAIK,IAAA,GAAOD,IAAA,EAAMC,IAAA;EAEjB,IAAIA,IAAA,EAAM;IACR,OAAOD,IAAA,CAAKC,IAAI;EAClB;EAEA,IAAIC,mBAAA,GAAsB;EAE1B,IAAI,OAAOH,aAAA,KAAkB,YAAY;IACvC,IAAII,QAAA,GAAWF,IAAA,CAAKG,IAAI;IACxBF,mBAAA,GAAsB,MAAMH,aAAA,CAAc;MACxCE,IAAA;MACAI,cAAA,EAAiBC,KAAA;QACfH,QAAA,GAAWG,KAAA;MACb;IACF;IAEAL,IAAA,GAAOM,IAAA,CAAKC,SAAS,CAAC;MACpBN,mBAAA;MACAJ,cAAA;MACAK,QAAA;MACAM,QAAA,EAAUR,IAAA,CAAKS,IAAI;MACnBC,IAAA,EAAMV,IAAA,CAAKU;IACb;EACF;EAEA,MAAMC,iBAAA,GAAoB;IACxB,GAAGZ,IAAI;IACP,GAAGH;EACL;EAEA,MAAMgB,eAAA,GAAkB;IACtBC,QAAA,EAAUP,IAAA,CAAKC,SAAS,CAACI,iBAAA;IACzBX;EACF;EAEA,OAAOR,SAAA,CAAUoB,eAAA,EAAiB;IAAEE,OAAA,EAAS;IAAMC,iBAAA,EAAmB;EAAM;AAC9E","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAa,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAI3F,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAa,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAI3F,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAgBzC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,CACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAA;IACtD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AA6BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAsbnE;AAED,wBAAgB,eAAe,wBAE9B"}
|
|
@@ -10,6 +10,7 @@ import { useConfig } from '../../../providers/Config/index.js';
|
|
|
10
10
|
import { useLocale } from '../../../providers/Locale/index.js';
|
|
11
11
|
import { useServerFunctions } from '../../../providers/ServerFunctions/index.js';
|
|
12
12
|
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
13
|
+
import { useUploadHandlers } from '../../../providers/UploadHandlers/index.js';
|
|
13
14
|
import { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js';
|
|
14
15
|
import { LoadingOverlay } from '../../Loading/index.js';
|
|
15
16
|
import { useLoadingOverlay } from '../../LoadingOverlay/index.js';
|
|
@@ -67,6 +68,9 @@ export function FormsManagerProvider({
|
|
|
67
68
|
getDocumentSlots,
|
|
68
69
|
getFormState
|
|
69
70
|
} = useServerFunctions();
|
|
71
|
+
const {
|
|
72
|
+
getUploadHandler
|
|
73
|
+
} = useUploadHandlers();
|
|
70
74
|
const [documentSlots, setDocumentSlots] = React.useState({});
|
|
71
75
|
const [hasSubmitted, setHasSubmitted] = React.useState(false);
|
|
72
76
|
const [docPermissions, setDocPermissions] = React.useState();
|
|
@@ -263,7 +267,9 @@ export function FormsManagerProvider({
|
|
|
263
267
|
total: currentForms.length
|
|
264
268
|
}));
|
|
265
269
|
const req = await fetch(actionURL, {
|
|
266
|
-
body: createFormData(form_0.formState, overrides
|
|
270
|
+
body: await createFormData(form_0.formState, overrides, collectionSlug, getUploadHandler({
|
|
271
|
+
collectionSlug
|
|
272
|
+
})),
|
|
267
273
|
method: 'POST'
|
|
268
274
|
});
|
|
269
275
|
const json_0 = await req.json();
|
|
@@ -336,7 +342,7 @@ export function FormsManagerProvider({
|
|
|
336
342
|
}) => acc + errorCount_2, 0)
|
|
337
343
|
}
|
|
338
344
|
});
|
|
339
|
-
}, [actionURL, activeIndex, forms, onSuccess, t, closeModal, drawerSlug]);
|
|
345
|
+
}, [actionURL, activeIndex, forms, onSuccess, collectionSlug, getUploadHandler, t, closeModal, drawerSlug]);
|
|
340
346
|
const bulkUpdateForm = React.useCallback(async (updatedFields, afterStateUpdate) => {
|
|
341
347
|
for (let i_2 = 0; i_2 < forms.length; i_2++) {
|
|
342
348
|
Object.entries(updatedFields).forEach(([path, value]) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","qs","React","toast","fieldReducer","useConfig","useLocale","useServerFunctions","useTranslation","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","createThumbnail","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","thumbnailUrls","totalErrorCount","initialState","FormsManagerProvider","children","config","routes","api","serverURL","code","i18n","t","getDocumentSlots","getFormState","setDocumentSlots","useState","setHasSubmitted","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","formsCount","length","thumbnailUrlsRef","processedFiles","Set","renderedThumbnails","setRenderedThumbnails","useEffect","newThumbnails","i","file","formState","value","has","add","thumbnailUrl","setTimeout","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","isUploading","setIsUploading","loadingText","setLoadingText","hasInitializedWithFiles","initialStateRef","actionURL","initializeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","docPreferences","fields","operation","renderAllFields","schemaPath","skipValidation","_err","index","currentFormsData","type","map","form","errorCount","files","isLoading","key","count","overrides","currentForms","newDocs","total","req","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","path","error","_","remainingForms","filter","successCount","Math","max","success","acc","updatedFields","afterStateUpdate","Object","entries","newFormErrorCount","values","valid","_jsxs","Provider","_jsx","animationDuration","overlayType","show","useFormsManager","useContext"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Data, DocumentSlots, FormState, SanitizedDocumentPermissions } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { LoadingOverlay } from '../../Loading/index.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly bulkUpdateForm: (\n updatedFields: Record<string, unknown>,\n afterStateUpdate?: () => void,\n ) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: SanitizedDocumentPermissions\n readonly documentSlots: DocumentSlots\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly thumbnailUrls: string[]\n readonly totalErrorCount?: number\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n bulkUpdateForm: () => null,\n collectionSlug: '',\n docPermissions: undefined,\n documentSlots: {},\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n thumbnailUrls: [],\n totalErrorCount: 0,\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\n\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const { getDocumentSlots, getFormState } = useServerFunctions()\n\n const [documentSlots, setDocumentSlots] = React.useState<DocumentSlots>({})\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<SanitizedDocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n const formsCount = forms.length\n\n const thumbnailUrlsRef = React.useRef<string[]>([])\n const processedFiles = React.useRef(new Set()) // Track already-processed files\n const [renderedThumbnails, setRenderedThumbnails] = React.useState<string[]>([])\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n const newThumbnails = [...thumbnailUrlsRef.current]\n\n for (let i = 0; i < formsCount; i++) {\n const file = formsRef.current[i].formState.file.value as File\n\n // Skip if already processed\n if (processedFiles.current.has(file) || !file) {\n continue\n }\n processedFiles.current.add(file)\n\n // Generate thumbnail and update ref\n const thumbnailUrl = await createThumbnail(file)\n newThumbnails[i] = thumbnailUrl\n thumbnailUrlsRef.current = newThumbnails\n\n // Trigger re-render in batches\n setRenderedThumbnails([...newThumbnails])\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n })()\n }, [formsCount])\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess } = useBulkUpload()\n\n const [isUploading, setIsUploading] = React.useState(false)\n const [loadingText, setLoadingText] = React.useState('')\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const actionURL = `${api}/${collectionSlug}`\n\n const initializeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n const json: SanitizedDocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language, serverURL])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n // FETCH AND SET THE DOCUMENT SLOTS HERE!\n const documentSlots = await getDocumentSlots({ collectionSlug })\n setDocumentSlots(documentSlots)\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: { fields: {} },\n locale: code,\n operation: 'create',\n renderAllFields: true,\n schemaPath: collectionSlug,\n skipValidation: true,\n })\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (_err) {\n // swallow error\n }\n },\n [getDocumentSlots, collectionSlug, getFormState, docPermissions, code],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formState: currentFormsData,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({ type: 'ADD_FORMS', files, initialState: initialStateRef.current })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay],\n )\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n }, [])\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formState: currentFormsData,\n }\n const newDocs = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const req = await fetch(actionURL, {\n body: createFormData(form.formState, overrides),\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push(json.doc)\n }\n\n // should expose some sort of helper for this\n const [fieldErrors, nonFieldErrors] = (json?.errors || []).reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n currentForms[i] = {\n errorCount: fieldErrors.length,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n\n if (req.status === 413) {\n // file too large\n currentForms[i] = {\n ...currentForms[i],\n errorCount: currentForms[i].errorCount + 1,\n }\n\n toast.error(nonFieldErrors[0]?.message)\n }\n } catch (_) {\n // swallow\n }\n }\n\n setHasSubmitted(true)\n setLoadingText('')\n setIsUploading(false)\n\n const remainingForms = currentForms.filter(({ errorCount }) => errorCount > 0)\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: 0,\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n },\n [actionURL, activeIndex, forms, onSuccess, t, closeModal, drawerSlug],\n )\n\n const bulkUpdateForm = React.useCallback(\n async (updatedFields: Record<string, unknown>, afterStateUpdate?: () => void) => {\n for (let i = 0; i < forms.length; i++) {\n Object.entries(updatedFields).forEach(([path, value]) => {\n if (forms[i].formState[path]) {\n forms[i].formState[path].value = value\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[i].errorCount,\n formState: forms[i].formState,\n index: i,\n })\n }\n })\n\n if (typeof afterStateUpdate === 'function') {\n afterStateUpdate()\n }\n\n if (hasSubmitted) {\n const { state } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: forms[i].formState,\n operation: 'create',\n schemaPath: collectionSlug,\n })\n\n const newFormErrorCount = Object.values(state).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n )\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: newFormErrorCount,\n formState: state,\n index: i,\n })\n }\n }\n },\n [collectionSlug, docPermissions, forms, getFormState, hasSubmitted],\n )\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initializeSharedDocPermissions()\n }\n\n if (initialFiles) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {\n void addFiles(initialFiles)\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n addFiles,\n initialFiles,\n initializeSharedFormState,\n initializeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n ])\n\n return (\n <Context.Provider\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n bulkUpdateForm,\n collectionSlug,\n docPermissions,\n documentSlots,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n thumbnailUrls: renderedThumbnails,\n totalErrorCount,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context.Provider>\n )\n}\n\nexport function useFormsManager() {\n return React.useContext(Context)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","qs","React","toast","fieldReducer","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","createThumbnail","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","thumbnailUrls","totalErrorCount","initialState","FormsManagerProvider","children","config","routes","api","serverURL","code","i18n","t","getDocumentSlots","getFormState","getUploadHandler","setDocumentSlots","useState","setHasSubmitted","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","formsCount","length","thumbnailUrlsRef","processedFiles","Set","renderedThumbnails","setRenderedThumbnails","useEffect","newThumbnails","i","file","formState","value","has","add","thumbnailUrl","setTimeout","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","isUploading","setIsUploading","loadingText","setLoadingText","hasInitializedWithFiles","initialStateRef","actionURL","initializeSharedDocPermissions","useCallback","params","locale","docAccessURL","res","fetch","stringify","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","docPreferences","fields","operation","renderAllFields","schemaPath","skipValidation","_err","index","currentFormsData","type","map","form","errorCount","files","isLoading","key","count","overrides","currentForms","newDocs","total","req","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","path","error","_","remainingForms","filter","successCount","Math","max","success","acc","updatedFields","afterStateUpdate","Object","entries","newFormErrorCount","values","valid","_jsxs","Provider","_jsx","animationDuration","overlayType","show","useFormsManager","useContext"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Data, DocumentSlots, FormState, SanitizedDocumentPermissions } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../../providers/UploadHandlers/index.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { LoadingOverlay } from '../../Loading/index.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly bulkUpdateForm: (\n updatedFields: Record<string, unknown>,\n afterStateUpdate?: () => void,\n ) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: SanitizedDocumentPermissions\n readonly documentSlots: DocumentSlots\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly thumbnailUrls: string[]\n readonly totalErrorCount?: number\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n bulkUpdateForm: () => null,\n collectionSlug: '',\n docPermissions: undefined,\n documentSlots: {},\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n thumbnailUrls: [],\n totalErrorCount: 0,\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\n\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n serverURL,\n } = config\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const { getDocumentSlots, getFormState } = useServerFunctions()\n const { getUploadHandler } = useUploadHandlers()\n\n const [documentSlots, setDocumentSlots] = React.useState<DocumentSlots>({})\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<SanitizedDocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n const formsCount = forms.length\n\n const thumbnailUrlsRef = React.useRef<string[]>([])\n const processedFiles = React.useRef(new Set()) // Track already-processed files\n const [renderedThumbnails, setRenderedThumbnails] = React.useState<string[]>([])\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n const newThumbnails = [...thumbnailUrlsRef.current]\n\n for (let i = 0; i < formsCount; i++) {\n const file = formsRef.current[i].formState.file.value as File\n\n // Skip if already processed\n if (processedFiles.current.has(file) || !file) {\n continue\n }\n processedFiles.current.add(file)\n\n // Generate thumbnail and update ref\n const thumbnailUrl = await createThumbnail(file)\n newThumbnails[i] = thumbnailUrl\n thumbnailUrlsRef.current = newThumbnails\n\n // Trigger re-render in batches\n setRenderedThumbnails([...newThumbnails])\n await new Promise((resolve) => setTimeout(resolve, 100))\n }\n })()\n }, [formsCount])\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess } = useBulkUpload()\n\n const [isUploading, setIsUploading] = React.useState(false)\n const [loadingText, setLoadingText] = React.useState('')\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const actionURL = `${api}/${collectionSlug}`\n\n const initializeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n const json: SanitizedDocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${serverURL}${api}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language, serverURL])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n // FETCH AND SET THE DOCUMENT SLOTS HERE!\n const documentSlots = await getDocumentSlots({ collectionSlug })\n setDocumentSlots(documentSlots)\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: { fields: {} },\n locale: code,\n operation: 'create',\n renderAllFields: true,\n schemaPath: collectionSlug,\n skipValidation: true,\n })\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (_err) {\n // swallow error\n }\n },\n [getDocumentSlots, collectionSlug, getFormState, docPermissions, code],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formState: currentFormsData,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({ type: 'ADD_FORMS', files, initialState: initialStateRef.current })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay],\n )\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n }, [])\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formState: currentFormsData,\n }\n const newDocs = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const req = await fetch(actionURL, {\n body: await createFormData(\n form.formState,\n overrides,\n collectionSlug,\n getUploadHandler({ collectionSlug }),\n ),\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push(json.doc)\n }\n\n // should expose some sort of helper for this\n const [fieldErrors, nonFieldErrors] = (json?.errors || []).reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n currentForms[i] = {\n errorCount: fieldErrors.length,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n\n if (req.status === 413) {\n // file too large\n currentForms[i] = {\n ...currentForms[i],\n errorCount: currentForms[i].errorCount + 1,\n }\n\n toast.error(nonFieldErrors[0]?.message)\n }\n } catch (_) {\n // swallow\n }\n }\n\n setHasSubmitted(true)\n setLoadingText('')\n setIsUploading(false)\n\n const remainingForms = currentForms.filter(({ errorCount }) => errorCount > 0)\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: 0,\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n },\n [\n actionURL,\n activeIndex,\n forms,\n onSuccess,\n collectionSlug,\n getUploadHandler,\n t,\n closeModal,\n drawerSlug,\n ],\n )\n\n const bulkUpdateForm = React.useCallback(\n async (updatedFields: Record<string, unknown>, afterStateUpdate?: () => void) => {\n for (let i = 0; i < forms.length; i++) {\n Object.entries(updatedFields).forEach(([path, value]) => {\n if (forms[i].formState[path]) {\n forms[i].formState[path].value = value\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[i].errorCount,\n formState: forms[i].formState,\n index: i,\n })\n }\n })\n\n if (typeof afterStateUpdate === 'function') {\n afterStateUpdate()\n }\n\n if (hasSubmitted) {\n const { state } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: forms[i].formState,\n operation: 'create',\n schemaPath: collectionSlug,\n })\n\n const newFormErrorCount = Object.values(state).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n )\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: newFormErrorCount,\n formState: state,\n index: i,\n })\n }\n }\n },\n [collectionSlug, docPermissions, forms, getFormState, hasSubmitted],\n )\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initializeSharedDocPermissions()\n }\n\n if (initialFiles) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (hasInitializedState && initialFiles && !hasInitializedWithFiles.current) {\n void addFiles(initialFiles)\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n addFiles,\n initialFiles,\n initializeSharedFormState,\n initializeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n ])\n\n return (\n <Context.Provider\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n bulkUpdateForm,\n collectionSlug,\n docPermissions,\n documentSlots,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n thumbnailUrls: renderedThumbnails,\n totalErrorCount,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context.Provider>\n )\n}\n\nexport function useFormsManager() {\n return React.useContext(Context)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import NextLinkImport from 'next/link.js';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
declare const NextLink: typeof NextLinkImport.default;
|
|
4
|
-
|
|
4
|
+
type Props = {
|
|
5
|
+
/**
|
|
6
|
+
* Disable the e.preventDefault() call on click if you want to handle it yourself via onClick
|
|
7
|
+
*
|
|
8
|
+
* @default true
|
|
9
|
+
*/
|
|
10
|
+
preventDefault?: boolean;
|
|
11
|
+
} & Parameters<typeof NextLink>[0];
|
|
12
|
+
export declare const Link: React.FC<Props>;
|
|
5
13
|
export {};
|
|
6
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/index.tsx"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,QAAQ,EACkB,OAAO,cAAc,CAAC,OAAO,CAAA;AAgB7D,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/index.tsx"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,QAAQ,EACkB,OAAO,cAAc,CAAC,OAAO,CAAA;AAgB7D,KAAK,KAAK,GAAG;IACX;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAElC,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+ChC,CAAA"}
|
|
@@ -19,6 +19,7 @@ export const Link = ({
|
|
|
19
19
|
children,
|
|
20
20
|
href,
|
|
21
21
|
onClick,
|
|
22
|
+
preventDefault = true,
|
|
22
23
|
ref,
|
|
23
24
|
replace,
|
|
24
25
|
scroll,
|
|
@@ -37,6 +38,11 @@ export const Link = ({
|
|
|
37
38
|
if (onClick) {
|
|
38
39
|
onClick(e);
|
|
39
40
|
}
|
|
41
|
+
// We need a preventDefault here so that a clicked link doesn't trigger twice,
|
|
42
|
+
// once for default browser navigation and once for startRouteTransition
|
|
43
|
+
if (preventDefault) {
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
}
|
|
40
46
|
startRouteTransition(() => {
|
|
41
47
|
const url = typeof href === 'string' ? href : formatUrl(href);
|
|
42
48
|
if (replace) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["NextLinkImport","useRouter","React","useRouteTransition","formatUrl","NextLink","default","isModifiedEvent","event","eventTarget","currentTarget","target","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","Link","children","href","onClick","ref","replace","scroll","rest","router","startRouteTransition","_jsx","e","url","push"],"sources":["../../../src/elements/Link/index.tsx"],"sourcesContent":["'use client'\nimport NextLinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { formatUrl } from './formatUrl.js'\n\nconst NextLink = (NextLinkImport.default ||\n NextLinkImport) as unknown as typeof NextLinkImport.default\n\n// Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\
|
|
1
|
+
{"version":3,"file":"index.js","names":["NextLinkImport","useRouter","React","useRouteTransition","formatUrl","NextLink","default","isModifiedEvent","event","eventTarget","currentTarget","target","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","Link","children","href","onClick","preventDefault","ref","replace","scroll","rest","router","startRouteTransition","_jsx","e","url","push"],"sources":["../../../src/elements/Link/index.tsx"],"sourcesContent":["'use client'\nimport NextLinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { formatUrl } from './formatUrl.js'\n\nconst NextLink = (NextLinkImport.default ||\n NextLinkImport) as unknown as typeof NextLinkImport.default\n\n// Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\ntype Props = {\n /**\n * Disable the e.preventDefault() call on click if you want to handle it yourself via onClick\n *\n * @default true\n */\n preventDefault?: boolean\n} & Parameters<typeof NextLink>[0]\n\nexport const Link: React.FC<Props> = ({\n children,\n href,\n onClick,\n preventDefault = true,\n ref,\n replace,\n scroll,\n ...rest\n}) => {\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n return (\n <NextLink\n href={href}\n onClick={(e) => {\n if (isModifiedEvent(e)) {\n return\n }\n\n if (onClick) {\n onClick(e)\n }\n\n // We need a preventDefault here so that a clicked link doesn't trigger twice,\n // once for default browser navigation and once for startRouteTransition\n if (preventDefault) {\n e.preventDefault()\n }\n\n startRouteTransition(() => {\n const url = typeof href === 'string' ? href : formatUrl(href)\n\n if (replace) {\n void router.replace(url, { scroll })\n } else {\n void router.push(url, { scroll })\n }\n })\n }}\n ref={ref}\n {...rest}\n >\n {children}\n </NextLink>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,cAAA,MAAoB;AAC3B,SAASC,SAAS,QAAQ;AAC1B,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,SAAS,QAAQ;AAE1B,MAAMC,QAAA,GAAYL,cAAA,CAAeM,OAAO,IACtCN,cAAA;AAEF;AACA,SAASO,gBAAgBC,KAAuB;EAC9C,MAAMC,WAAA,GAAcD,KAAA,CAAME,aAAa;EACvC,MAAMC,MAAA,GAASF,WAAA,CAAYG,YAAY,CAAC;EACxC,OACED,MAAC,IAAUA,MAAA,KAAW,WACtBH,KAAA,CAAMK,OAAO,IACbL,KAAA,CAAMM,OAAO,IACbN,KAAA,CAAMO,QAAQ,IACdP,KAAA,CAAMQ,MAAM;EAAI;EACfR,KAAA,CAAMS,WAAW,IAAIT,KAAA,CAAMS,WAAW,CAACC,KAAK,KAAK;AAEtD;AAWA,OAAO,MAAMC,IAAA,GAAwBA,CAAC;EACpCC,QAAQ;EACRC,IAAI;EACJC,OAAO;EACPC,cAAA,GAAiB,IAAI;EACrBC,GAAG;EACHC,OAAO;EACPC,MAAM;EACN,GAAGC;AAAA,CACJ;EACC,MAAMC,MAAA,GAAS3B,SAAA;EACf,MAAM;IAAE4B;EAAoB,CAAE,GAAG1B,kBAAA;EAEjC,oBACE2B,IAAA,CAACzB,QAAA;IACCgB,IAAA,EAAMA,IAAA;IACNC,OAAA,EAAUS,CAAA;MACR,IAAIxB,eAAA,CAAgBwB,CAAA,GAAI;QACtB;MACF;MAEA,IAAIT,OAAA,EAAS;QACXA,OAAA,CAAQS,CAAA;MACV;MAEA;MACA;MACA,IAAIR,cAAA,EAAgB;QAClBQ,CAAA,CAAER,cAAc;MAClB;MAEAM,oBAAA,CAAqB;QACnB,MAAMG,GAAA,GAAM,OAAOX,IAAA,KAAS,WAAWA,IAAA,GAAOjB,SAAA,CAAUiB,IAAA;QAExD,IAAII,OAAA,EAAS;UACX,KAAKG,MAAA,CAAOH,OAAO,CAACO,GAAA,EAAK;YAAEN;UAAO;QACpC,OAAO;UACL,KAAKE,MAAA,CAAOK,IAAI,CAACD,GAAA,EAAK;YAAEN;UAAO;QACjC;MACF;IACF;IACAF,GAAA,EAAKA,GAAA;IACJ,GAAGG,IAAI;cAEPP;;AAGP","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAInF,OAAO,KAAsC,MAAM,OAAO,CAAA;AAgB1D,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAA;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACvD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;CACpE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAInF,OAAO,KAAsC,MAAM,OAAO,CAAA;AAgB1D,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAA;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACvD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;CACpE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4LpD,CAAA"}
|
|
@@ -50,7 +50,7 @@ export const ListControls = props => {
|
|
|
50
50
|
s: smallBreak
|
|
51
51
|
}
|
|
52
52
|
} = useWindowInfo();
|
|
53
|
-
const searchLabel = (titleField && getTranslation('label' in titleField && typeof titleField.label === 'string' ? titleField.label : 'name' in titleField ? titleField.name : null, i18n)) ?? 'ID';
|
|
53
|
+
const searchLabel = (titleField && getTranslation('label' in titleField && (typeof titleField.label === 'string' || typeof titleField.label === 'object') ? titleField.label : 'name' in titleField ? titleField.name : null, i18n)) ?? 'ID';
|
|
54
54
|
const listSearchableFields = getTextFieldsToBeSearched(collectionConfig.admin.listSearchableFields, collectionConfig.fields);
|
|
55
55
|
const searchLabelTranslated = useRef(t('general:searchBy', {
|
|
56
56
|
label: getTranslation(searchLabel, i18n)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useWindowInfo","getTranslation","React","useEffect","useRef","useState","Popup","PopupList","useUseTitleField","ChevronIcon","Dots","SearchIcon","useListQuery","useTranslation","AnimateHeight","ColumnSelector","Pill","SearchFilter","WhereBuilder","validateWhereQuery","getTextFieldsToBeSearched","baseClass","ListControls","props","beforeActions","collectionConfig","collectionSlug","enableColumns","enableSort","listMenuItems","renderedFilters","resolvedFilterOptions","handleSearchChange","query","titleField","i18n","t","breakpoints","s","smallBreak","searchLabel","label","name","listSearchableFields","admin","fields","searchLabelTranslated","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","undefined","current","length","reduce","placeholderText","field","i","_jsxs","className","_jsx","fieldName","handleChange","search","initialParams","Fragment","icon","direction","onClick","pillStyle","button","ariaLabel","horizontalAlign","size","verticalAlign","ButtonGroup","map","item","height","id","slug","collectionPluralLabel","labels","plural"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ResolvedFilterOptions, Where } from 'payload'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport { Popup, PopupList } from '../../elements/Popup/index.js'\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { SearchIcon } from '../../icons/Search/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { SearchFilter } from '../SearchFilter/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport validateWhereQuery from '../WhereBuilder/validateWhereQuery.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\nexport type ListControlsProps = {\n readonly beforeActions?: React.ReactNode[]\n readonly collectionConfig: ClientCollectionConfig\n readonly collectionSlug: string\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkDelete?: boolean\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkEdit?: boolean\n readonly enableColumns?: boolean\n readonly enableSort?: boolean\n readonly handleSearchChange?: (search: string) => void\n readonly handleSortChange?: (sort: string) => void\n readonly handleWhereChange?: (where: Where) => void\n readonly listMenuItems?: React.ReactNode[]\n readonly renderedFilters?: Map<string, React.ReactNode>\n readonly resolvedFilterOptions?: Map<string, ResolvedFilterOptions>\n}\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n enableColumns = true,\n enableSort = false,\n listMenuItems,\n renderedFilters,\n resolvedFilterOptions,\n } = props\n const { handleSearchChange, query } = useListQuery()\n const titleField = useUseTitleField(collectionConfig)\n const { i18n, t } = useTranslation()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const searchLabel =\n (titleField &&\n getTranslation(\n 'label' in titleField && typeof titleField.label === 'string'\n ? titleField.label\n : 'name' in titleField\n ? titleField.name\n : null,\n i18n,\n )) ??\n 'ID'\n\n const listSearchableFields = getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n collectionConfig.fields,\n )\n\n const searchLabelTranslated = useRef(\n t('general:searchBy', { label: getTranslation(searchLabel, i18n) }),\n )\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(query?.where)\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n useEffect(() => {\n if (listSearchableFields?.length > 0) {\n searchLabelTranslated.current = listSearchableFields.reduce(\n (placeholderText: string, field, i: number) => {\n const label =\n 'label' in field && field.label ? field.label : 'name' in field ? field.name : null\n\n if (i === 0) {\n return `${t('general:searchBy', {\n label: getTranslation(label, i18n),\n })}`\n }\n\n if (i === listSearchableFields.length - 1) {\n return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`\n }\n\n return `${placeholderText}, ${getTranslation(label, i18n)}`\n },\n '',\n )\n } else {\n searchLabelTranslated.current = t('general:searchBy', {\n label: getTranslation(searchLabel, i18n),\n })\n }\n }, [t, listSearchableFields, i18n, searchLabel])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <SearchIcon />\n <SearchFilter\n fieldName={titleField && 'name' in titleField ? titleField?.name : null}\n handleChange={(search) => {\n return void handleSearchChange(search)\n }}\n // @ts-expect-error @todo: fix types\n initialParams={query}\n key={collectionSlug}\n label={searchLabelTranslated.current}\n />\n <div className={`${baseClass}__buttons`}>\n <div className={`${baseClass}__buttons-wrap`}>\n {!smallBreak && <React.Fragment>{beforeActions && beforeActions}</React.Fragment>}\n {enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns`}\n icon={<ChevronIcon direction={visibleDrawer === 'columns' ? 'up' : 'down'} />}\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)\n }\n pillStyle=\"light\"\n >\n {t('general:columns')}\n </Pill>\n )}\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where`}\n icon={<ChevronIcon direction={visibleDrawer === 'where' ? 'up' : 'down'} />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:filters')}\n </Pill>\n {enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<ChevronIcon />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:sort')}\n </Pill>\n )}\n {listMenuItems && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>{listMenuItems.map((item) => item)}</PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n </div>\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </AnimateHeight>\n {enableSort && (\n <AnimateHeight\n className={`${baseClass}__sort`}\n height={visibleDrawer === 'sort' ? 'auto' : 0}\n id={`${baseClass}-sort`}\n >\n <p>Sort Complex</p>\n {/* <SortComplex\n collection={collection}\n handleChange={handleSortChange}\n modifySearchQuery={modifySearchQuery}\n /> */}\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useWindowInfo","getTranslation","React","useEffect","useRef","useState","Popup","PopupList","useUseTitleField","ChevronIcon","Dots","SearchIcon","useListQuery","useTranslation","AnimateHeight","ColumnSelector","Pill","SearchFilter","WhereBuilder","validateWhereQuery","getTextFieldsToBeSearched","baseClass","ListControls","props","beforeActions","collectionConfig","collectionSlug","enableColumns","enableSort","listMenuItems","renderedFilters","resolvedFilterOptions","handleSearchChange","query","titleField","i18n","t","breakpoints","s","smallBreak","searchLabel","label","name","listSearchableFields","admin","fields","searchLabelTranslated","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","undefined","current","length","reduce","placeholderText","field","i","_jsxs","className","_jsx","fieldName","handleChange","search","initialParams","Fragment","icon","direction","onClick","pillStyle","button","ariaLabel","horizontalAlign","size","verticalAlign","ButtonGroup","map","item","height","id","slug","collectionPluralLabel","labels","plural"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ResolvedFilterOptions, Where } from 'payload'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport { Popup, PopupList } from '../../elements/Popup/index.js'\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { SearchIcon } from '../../icons/Search/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { SearchFilter } from '../SearchFilter/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport validateWhereQuery from '../WhereBuilder/validateWhereQuery.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\nexport type ListControlsProps = {\n readonly beforeActions?: React.ReactNode[]\n readonly collectionConfig: ClientCollectionConfig\n readonly collectionSlug: string\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkDelete?: boolean\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkEdit?: boolean\n readonly enableColumns?: boolean\n readonly enableSort?: boolean\n readonly handleSearchChange?: (search: string) => void\n readonly handleSortChange?: (sort: string) => void\n readonly handleWhereChange?: (where: Where) => void\n readonly listMenuItems?: React.ReactNode[]\n readonly renderedFilters?: Map<string, React.ReactNode>\n readonly resolvedFilterOptions?: Map<string, ResolvedFilterOptions>\n}\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n enableColumns = true,\n enableSort = false,\n listMenuItems,\n renderedFilters,\n resolvedFilterOptions,\n } = props\n const { handleSearchChange, query } = useListQuery()\n const titleField = useUseTitleField(collectionConfig)\n const { i18n, t } = useTranslation()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const searchLabel =\n (titleField &&\n getTranslation(\n 'label' in titleField &&\n (typeof titleField.label === 'string' || typeof titleField.label === 'object')\n ? titleField.label\n : 'name' in titleField\n ? titleField.name\n : null,\n i18n,\n )) ??\n 'ID'\n\n const listSearchableFields = getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n collectionConfig.fields,\n )\n\n const searchLabelTranslated = useRef(\n t('general:searchBy', { label: getTranslation(searchLabel, i18n) }),\n )\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(query?.where)\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n useEffect(() => {\n if (listSearchableFields?.length > 0) {\n searchLabelTranslated.current = listSearchableFields.reduce(\n (placeholderText: string, field, i: number) => {\n const label =\n 'label' in field && field.label ? field.label : 'name' in field ? field.name : null\n\n if (i === 0) {\n return `${t('general:searchBy', {\n label: getTranslation(label, i18n),\n })}`\n }\n\n if (i === listSearchableFields.length - 1) {\n return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`\n }\n\n return `${placeholderText}, ${getTranslation(label, i18n)}`\n },\n '',\n )\n } else {\n searchLabelTranslated.current = t('general:searchBy', {\n label: getTranslation(searchLabel, i18n),\n })\n }\n }, [t, listSearchableFields, i18n, searchLabel])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <SearchIcon />\n <SearchFilter\n fieldName={titleField && 'name' in titleField ? titleField?.name : null}\n handleChange={(search) => {\n return void handleSearchChange(search)\n }}\n // @ts-expect-error @todo: fix types\n initialParams={query}\n key={collectionSlug}\n label={searchLabelTranslated.current}\n />\n <div className={`${baseClass}__buttons`}>\n <div className={`${baseClass}__buttons-wrap`}>\n {!smallBreak && <React.Fragment>{beforeActions && beforeActions}</React.Fragment>}\n {enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns`}\n icon={<ChevronIcon direction={visibleDrawer === 'columns' ? 'up' : 'down'} />}\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)\n }\n pillStyle=\"light\"\n >\n {t('general:columns')}\n </Pill>\n )}\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where`}\n icon={<ChevronIcon direction={visibleDrawer === 'where' ? 'up' : 'down'} />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:filters')}\n </Pill>\n {enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<ChevronIcon />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:sort')}\n </Pill>\n )}\n {listMenuItems && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>{listMenuItems.map((item) => item)}</PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n </div>\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </AnimateHeight>\n {enableSort && (\n <AnimateHeight\n className={`${baseClass}__sort`}\n height={visibleDrawer === 'sort' ? 'auto' : 0}\n id={`${baseClass}-sort`}\n >\n <p>Sort Complex</p>\n {/* <SortComplex\n collection={collection}\n handleChange={handleSortChange}\n modifySearchQuery={modifySearchQuery}\n /> */}\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAGd,eAAe,EAEf,aAAa,EACb,KAAK,EACN,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAqD,MAAM,OAAO,CAAA;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAqBrE,OAAO,cAAc,CAAA;AAIrB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,cAAc,EAAE,cAAc,CAAA;QAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CA4TvE,CAAA"}
|
|
@@ -15,7 +15,6 @@ import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
|
|
|
15
15
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
16
16
|
import { hoistQueryParamsToAnd } from '../../utilities/mergeListSearchAndWhere.js';
|
|
17
17
|
import { AnimateHeight } from '../AnimateHeight/index.js';
|
|
18
|
-
import './index.scss';
|
|
19
18
|
import { ColumnSelector } from '../ColumnSelector/index.js';
|
|
20
19
|
import { useDocumentDrawer } from '../DocumentDrawer/index.js';
|
|
21
20
|
import { Popup, PopupList } from '../Popup/index.js';
|
|
@@ -23,6 +22,7 @@ import { RelationshipProvider } from '../Table/RelationshipProvider/index.js';
|
|
|
23
22
|
import { TableColumnsProvider } from '../TableColumns/index.js';
|
|
24
23
|
import { DrawerLink } from './cells/DrawerLink/index.js';
|
|
25
24
|
import { RelationshipTablePagination } from './Pagination.js';
|
|
25
|
+
import './index.scss';
|
|
26
26
|
const baseClass = 'relationship-table';
|
|
27
27
|
export const RelationshipTable = props => {
|
|
28
28
|
const {
|
|
@@ -89,10 +89,9 @@ export const RelationshipTable = props => {
|
|
|
89
89
|
if (filterOptions) {
|
|
90
90
|
newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions);
|
|
91
91
|
}
|
|
92
|
-
// map columns from string[] to
|
|
92
|
+
// map columns from string[] to ColumnPreference[]
|
|
93
93
|
const defaultColumns = field.admin.defaultColumns ? field.admin.defaultColumns.map(accessor => ({
|
|
94
|
-
accessor
|
|
95
|
-
active: true
|
|
94
|
+
[accessor]: true
|
|
96
95
|
})) : undefined;
|
|
97
96
|
const {
|
|
98
97
|
data: newData,
|