@payloadcms/ui 3.43.0-canary.3 → 3.43.0-canary.5
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/EditForm/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
- package/dist/elements/BulkUpload/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/index.js +4 -1
- package/dist/elements/BulkUpload/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +2 -1
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/Upload/index.d.ts +1 -0
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +53 -15
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/Upload/index.scss +1 -0
- package/dist/exports/client/index.d.ts +1 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +10 -10
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +1 -0
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/providers/UploadControls/index.d.ts +14 -0
- package/dist/providers/UploadControls/index.d.ts.map +1 -0
- package/dist/providers/UploadControls/index.js +45 -0
- package/dist/providers/UploadControls/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/views/Edit/index.d.ts +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +11 -6
- package/dist/views/Edit/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/EditForm/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAiC,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/EditForm/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAiC,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAkB/C,OAAO,cAAc,CAAA;AASrB,wBAAgB,QAAQ,CAAC,EACvB,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,EAAE,aAAa,qBAoKf"}
|
|
@@ -19,8 +19,8 @@ import { DocumentFields } from '../../DocumentFields/index.js';
|
|
|
19
19
|
import { MoveDocToFolder } from '../../FolderView/MoveDocToFolder/index.js';
|
|
20
20
|
import { Upload_v4 } from '../../Upload/index.js';
|
|
21
21
|
import { useFormsManager } from '../FormsManager/index.js';
|
|
22
|
-
import { BulkUploadProvider } from '../index.js';
|
|
23
22
|
import './index.scss';
|
|
23
|
+
import { BulkUploadProvider } from '../index.js';
|
|
24
24
|
const baseClass = 'collection-edit';
|
|
25
25
|
// This component receives props only on _pages_
|
|
26
26
|
// When rendered within a drawer, props are empty
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","React","useCallback","useEffect","Form","useForm","WatchChildErrors","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","OperationProvider","useRouteTransition","useServerFunctions","abortAndIgnore","handleAbortRef","useDocumentDrawerContext","DocumentFields","MoveDocToFolder","Upload_v4","useFormsManager","BulkUploadProvider","baseClass","EditForm","resetUploadEdits","submitted","updateUploadEdits","uploadEdits","action","collectionSlug","docSlug","docPermissions","getDocPreferences","hasSavePermission","initialState","isEditing","isInitializing","Upload","CustomUpload","onSave","onSaveFromContext","getFormState","config","folders","routes","admin","adminRoute","getEntityConfig","abortOnChangeRef","useRef","collectionConfig","router","depth","params","reportUpdate","startRouteTransition","locale","get","slug","schemaPath","useState","json","entitySlug","updatedAt","result","Date","toISOString","operation","redirectRoute","path","doc","id","push","onChange","formState","prevFormState","controller","docPreferences","state","newFormState","signal","skipValidation","current","abortOnChange","_jsx","_jsxs","className","disabled","undefined","method","onSuccess","BeforeFields","Fragment","customActions","buttonProps","buttonStyle","size","folderCollectionSlug","folderFieldName","fieldName","filter","Boolean","uploadConfig","upload","fields","schemaPathSegments","ReportAllErrors","GetFieldProxy","getFields","getFormDataRef","docConfig","activeIndex","setFormTotalErrorCount","errorCountRef","reportFormErrorCount","errorCount","index","setErrorCount"],"sources":["../../../../src/elements/BulkUpload/EditForm/index.tsx"],"sourcesContent":["'use client'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect } from 'react'\n\nimport type { EditFormProps } from './types.js'\n\nimport { Form, useForm } from '../../../forms/Form/index.js'\nimport { type FormProps } from '../../../forms/Form/types.js'\nimport { WatchChildErrors } from '../../../forms/WatchChildErrors/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../../providers/EditDepth/index.js'\nimport { OperationProvider } from '../../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js'\nimport { useDocumentDrawerContext } from '../../DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../DocumentFields/index.js'\nimport { MoveDocToFolder } from '../../FolderView/MoveDocToFolder/index.js'\nimport { Upload_v4 } from '../../Upload/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { BulkUploadProvider } from '../index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\n\nexport function EditForm({\n resetUploadEdits,\n submitted,\n updateUploadEdits,\n uploadEdits,\n}: EditFormProps) {\n const {\n action,\n collectionSlug: docSlug,\n docPermissions,\n getDocPreferences,\n hasSavePermission,\n initialState,\n isEditing,\n isInitializing,\n Upload: CustomUpload,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromContext } = useDocumentDrawerContext()\n\n const { getFormState } = useServerFunctions()\n\n const {\n config: {\n folders,\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const abortOnChangeRef = React.useRef<AbortController>(null)\n\n const collectionConfig = getEntityConfig({ collectionSlug: docSlug })\n const router = useRouter()\n const depth = useEditDepth()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { startRouteTransition } = useRouteTransition()\n\n const locale = params.get('locale')\n\n const collectionSlug = collectionConfig.slug\n\n const [schemaPath] = React.useState(collectionSlug)\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n isEditing,\n locale,\n onSaveFromContext,\n reportUpdate,\n resetUploadEdits,\n router,\n startRouteTransition,\n ],\n )\n\n const onChange: NonNullable<FormProps['onChange']>[0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newFormState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n operation: 'create',\n schemaPath,\n signal: controller.signal,\n skipValidation: !submitted,\n })\n\n abortOnChangeRef.current = null\n\n return newFormState\n },\n [collectionSlug, schemaPath, getDocPreferences, getFormState, docPermissions],\n )\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n return (\n <OperationProvider operation=\"create\">\n <BulkUploadProvider>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isInitializing || !hasSavePermission}\n initialState={isInitializing ? undefined : initialState}\n isInitializing={isInitializing}\n method=\"POST\"\n onChange={[onChange]}\n onSuccess={onSave}\n submitted={submitted}\n >\n <DocumentFields\n BeforeFields={\n <React.Fragment>\n {CustomUpload || (\n <Upload_v4\n collectionSlug={collectionConfig.slug}\n customActions={[\n folders && collectionConfig.folders && (\n <MoveDocToFolder\n buttonProps={{\n buttonStyle: 'pill',\n size: 'small',\n }}\n folderCollectionSlug={folders.slug}\n folderFieldName={folders.fieldName}\n key=\"move-doc-to-folder\"\n />\n ),\n ].filter(Boolean)}\n initialState={initialState}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadConfig={collectionConfig.upload}\n uploadEdits={uploadEdits}\n />\n )}\n </React.Fragment>\n }\n docPermissions={docPermissions}\n fields={collectionConfig.fields}\n schemaPathSegments={[collectionConfig.slug]}\n />\n <ReportAllErrors />\n <GetFieldProxy />\n </Form>\n </BulkUploadProvider>\n </OperationProvider>\n )\n}\n\nfunction GetFieldProxy() {\n const { getFields } = useForm()\n const { getFormDataRef } = useFormsManager()\n\n useEffect(() => {\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n getFormDataRef.current = getFields\n }, [getFields, getFormDataRef])\n\n return null\n}\n\nfunction ReportAllErrors() {\n const { docConfig } = useDocumentInfo()\n const { activeIndex, setFormTotalErrorCount } = useFormsManager()\n const errorCountRef = React.useRef(0)\n\n const reportFormErrorCount = React.useCallback(\n (errorCount) => {\n if (errorCount === errorCountRef.current) {\n return\n }\n setFormTotalErrorCount({ errorCount, index: activeIndex })\n errorCountRef.current = errorCount\n },\n [activeIndex, setFormTotalErrorCount],\n )\n\n if (!docConfig) {\n return null\n }\n\n return (\n <WatchChildErrors fields={docConfig.fields} path={[]} setErrorCount={reportFormErrorCount} />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","React","useCallback","useEffect","Form","useForm","WatchChildErrors","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","OperationProvider","useRouteTransition","useServerFunctions","abortAndIgnore","handleAbortRef","useDocumentDrawerContext","DocumentFields","MoveDocToFolder","Upload_v4","useFormsManager","BulkUploadProvider","baseClass","EditForm","resetUploadEdits","submitted","updateUploadEdits","uploadEdits","action","collectionSlug","docSlug","docPermissions","getDocPreferences","hasSavePermission","initialState","isEditing","isInitializing","Upload","CustomUpload","onSave","onSaveFromContext","getFormState","config","folders","routes","admin","adminRoute","getEntityConfig","abortOnChangeRef","useRef","collectionConfig","router","depth","params","reportUpdate","startRouteTransition","locale","get","slug","schemaPath","useState","json","entitySlug","updatedAt","result","Date","toISOString","operation","redirectRoute","path","doc","id","push","onChange","formState","prevFormState","controller","docPreferences","state","newFormState","signal","skipValidation","current","abortOnChange","_jsx","_jsxs","className","disabled","undefined","method","onSuccess","BeforeFields","Fragment","customActions","buttonProps","buttonStyle","size","folderCollectionSlug","folderFieldName","fieldName","filter","Boolean","uploadConfig","upload","fields","schemaPathSegments","ReportAllErrors","GetFieldProxy","getFields","getFormDataRef","docConfig","activeIndex","setFormTotalErrorCount","errorCountRef","reportFormErrorCount","errorCount","index","setErrorCount"],"sources":["../../../../src/elements/BulkUpload/EditForm/index.tsx"],"sourcesContent":["'use client'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect } from 'react'\n\nimport type { EditFormProps } from './types.js'\n\nimport { Form, useForm } from '../../../forms/Form/index.js'\nimport { type FormProps } from '../../../forms/Form/types.js'\nimport { WatchChildErrors } from '../../../forms/WatchChildErrors/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../../providers/EditDepth/index.js'\nimport { OperationProvider } from '../../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js'\nimport { useDocumentDrawerContext } from '../../DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../DocumentFields/index.js'\nimport { MoveDocToFolder } from '../../FolderView/MoveDocToFolder/index.js'\nimport { Upload_v4 } from '../../Upload/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport './index.scss'\nimport { BulkUploadProvider } from '../index.js'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\n\nexport function EditForm({\n resetUploadEdits,\n submitted,\n updateUploadEdits,\n uploadEdits,\n}: EditFormProps) {\n const {\n action,\n collectionSlug: docSlug,\n docPermissions,\n getDocPreferences,\n hasSavePermission,\n initialState,\n isEditing,\n isInitializing,\n Upload: CustomUpload,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromContext } = useDocumentDrawerContext()\n\n const { getFormState } = useServerFunctions()\n\n const {\n config: {\n folders,\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const abortOnChangeRef = React.useRef<AbortController>(null)\n\n const collectionConfig = getEntityConfig({ collectionSlug: docSlug })\n const router = useRouter()\n const depth = useEditDepth()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { startRouteTransition } = useRouteTransition()\n\n const locale = params.get('locale')\n\n const collectionSlug = collectionConfig.slug\n\n const [schemaPath] = React.useState(collectionSlug)\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n isEditing,\n locale,\n onSaveFromContext,\n reportUpdate,\n resetUploadEdits,\n router,\n startRouteTransition,\n ],\n )\n\n const onChange: NonNullable<FormProps['onChange']>[0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newFormState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n operation: 'create',\n schemaPath,\n signal: controller.signal,\n skipValidation: !submitted,\n })\n\n abortOnChangeRef.current = null\n\n return newFormState\n },\n [collectionSlug, schemaPath, getDocPreferences, getFormState, docPermissions],\n )\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n return (\n <OperationProvider operation=\"create\">\n <BulkUploadProvider>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isInitializing || !hasSavePermission}\n initialState={isInitializing ? undefined : initialState}\n isInitializing={isInitializing}\n method=\"POST\"\n onChange={[onChange]}\n onSuccess={onSave}\n submitted={submitted}\n >\n <DocumentFields\n BeforeFields={\n <React.Fragment>\n {CustomUpload || (\n <Upload_v4\n collectionSlug={collectionConfig.slug}\n customActions={[\n folders && collectionConfig.folders && (\n <MoveDocToFolder\n buttonProps={{\n buttonStyle: 'pill',\n size: 'small',\n }}\n folderCollectionSlug={folders.slug}\n folderFieldName={folders.fieldName}\n key=\"move-doc-to-folder\"\n />\n ),\n ].filter(Boolean)}\n initialState={initialState}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadConfig={collectionConfig.upload}\n uploadEdits={uploadEdits}\n />\n )}\n </React.Fragment>\n }\n docPermissions={docPermissions}\n fields={collectionConfig.fields}\n schemaPathSegments={[collectionConfig.slug]}\n />\n <ReportAllErrors />\n <GetFieldProxy />\n </Form>\n </BulkUploadProvider>\n </OperationProvider>\n )\n}\n\nfunction GetFieldProxy() {\n const { getFields } = useForm()\n const { getFormDataRef } = useFormsManager()\n\n useEffect(() => {\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n getFormDataRef.current = getFields\n }, [getFields, getFormDataRef])\n\n return null\n}\n\nfunction ReportAllErrors() {\n const { docConfig } = useDocumentInfo()\n const { activeIndex, setFormTotalErrorCount } = useFormsManager()\n const errorCountRef = React.useRef(0)\n\n const reportFormErrorCount = React.useCallback(\n (errorCount) => {\n if (errorCount === errorCountRef.current) {\n return\n }\n setFormTotalErrorCount({ errorCount, index: activeIndex })\n errorCountRef.current = errorCount\n },\n [activeIndex, setFormTotalErrorCount],\n )\n\n if (!docConfig) {\n return null\n }\n\n return (\n <WatchChildErrors fields={docConfig.fields} path={[]} setErrorCount={reportFormErrorCount} />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/BulkUpload/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIzC,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/BulkUpload/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIzC,OAAO,KAAK,MAAM,OAAO,CAAA;AA8DzB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,gBAAgB,sBAY/B;AAED,KAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,QAAQ,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC1C,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,WAAW,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IAC9D,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;CAChF,CAAA;AAiBD,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAsDtF;AAED,eAAO,MAAM,aAAa,yBAA2B,CAAA;AAErD,wBAAgB,uBAAuB,WAItC"}
|
|
@@ -8,6 +8,7 @@ import React from 'react';
|
|
|
8
8
|
import { toast } from 'sonner';
|
|
9
9
|
import { useConfig } from '../../providers/Config/index.js';
|
|
10
10
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
11
|
+
import { UploadControlsProvider } from '../../providers/UploadControls/index.js';
|
|
11
12
|
import { Drawer, useDrawerDepth } from '../Drawer/index.js';
|
|
12
13
|
import { AddFilesView } from './AddFilesView/index.js';
|
|
13
14
|
import { AddingFilesView } from './AddingFilesView/index.js';
|
|
@@ -75,7 +76,9 @@ export function BulkUploadDrawer() {
|
|
|
75
76
|
Header: null,
|
|
76
77
|
slug: drawerSlug,
|
|
77
78
|
children: _jsx(FormsManagerProvider, {
|
|
78
|
-
children: _jsx(
|
|
79
|
+
children: _jsx(UploadControlsProvider, {
|
|
80
|
+
children: _jsx(DrawerContent, {})
|
|
81
|
+
})
|
|
79
82
|
})
|
|
80
83
|
});
|
|
81
84
|
$[0] = drawerSlug;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","validateMimeType","React","toast","useConfig","useTranslation","Drawer","useDrawerDepth","AddFilesView","AddingFilesView","FormsManagerProvider","useFormsManager","drawerSlug","DrawerContent","addFiles","forms","isInitializing","closeModal","collectionSlug","useBulkUpload","getEntityConfig","t","uploadCollection","uploadConfig","upload","uploadMimeTypes","mimeTypes","onDrop","useCallback","acceptedFiles","fileTransfer","DataTransfer","candidateFile","undefined","length","type","items","add","files","error","_jsx","acceptMimeTypes","join","onCancel","BulkUploadDrawer","$","t0","gutter","Header","slug","children","Context","createContext","currentActivePath","initialFiles","maxFiles","onSuccess","setCollectionSlug","setCurrentActivePath","setInitialFiles","setMaxFiles","setOnCancel","setOnSuccess","BulkUploadProvider","collection","setCollection","useState","onSuccessFunctionMap","setOnSuccessFunctionMap","onCancelFunction","setOnCancelFunction","useBulkUploadDrawerSlug","t1","Symbol","for","t2","path","prev","t3","t4","docIDs","errorCount","Object","hasOwn","onSuccessFunction","t5","value","_jsxs","Fragment","use","depth"],"sources":["../../../src/elements/BulkUpload/index.tsx"],"sourcesContent":["'use client'\n\nimport type { JsonObject } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { validateMimeType } from 'payload/shared'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer, useDrawerDepth } from '../Drawer/index.js'\nimport { AddFilesView } from './AddFilesView/index.js'\nimport { AddingFilesView } from './AddingFilesView/index.js'\nimport { FormsManagerProvider, useFormsManager } from './FormsManager/index.js'\n\nconst drawerSlug = 'bulk-upload-drawer-slug'\n\nfunction DrawerContent() {\n const { addFiles, forms, isInitializing } = useFormsManager()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug } = useBulkUpload()\n const { getEntityConfig } = useConfig()\n const { t } = useTranslation()\n\n const uploadCollection = getEntityConfig({ collectionSlug })\n const uploadConfig = uploadCollection?.upload\n const uploadMimeTypes = uploadConfig?.mimeTypes\n\n const onDrop = React.useCallback(\n (acceptedFiles: FileList) => {\n const fileTransfer = new DataTransfer()\n for (const candidateFile of acceptedFiles) {\n if (\n uploadMimeTypes === undefined ||\n uploadMimeTypes.length === 0 ||\n validateMimeType(candidateFile.type, uploadMimeTypes)\n ) {\n fileTransfer.items.add(candidateFile)\n }\n }\n if (fileTransfer.files.length === 0) {\n toast.error(t('error:invalidFileType'))\n } else {\n void addFiles(fileTransfer.files)\n }\n },\n [addFiles, t, uploadMimeTypes],\n )\n\n if (!collectionSlug) {\n return null\n }\n\n if (!forms.length && !isInitializing) {\n return (\n <AddFilesView\n acceptMimeTypes={uploadMimeTypes?.join(', ')}\n onCancel={() => closeModal(drawerSlug)}\n onDrop={onDrop}\n />\n )\n } else {\n return <AddingFilesView />\n }\n}\n\nexport type BulkUploadProps = {\n readonly children: React.ReactNode\n}\n\nexport function BulkUploadDrawer() {\n const { drawerSlug } = useBulkUpload()\n\n return (\n <Drawer gutter={false} Header={null} slug={drawerSlug}>\n <FormsManagerProvider>\n <DrawerContent />\n </FormsManagerProvider>\n </Drawer>\n )\n}\n\ntype BulkUploadContext = {\n collectionSlug: string\n currentActivePath: string\n drawerSlug: string\n initialFiles: FileList\n maxFiles: number\n onCancel: () => void\n onSuccess: (newDocs: JsonObject[], errorCount: number) => void\n setCollectionSlug: (slug: string) => void\n setCurrentActivePath: (path: string) => void\n setInitialFiles: (files: FileList) => void\n setMaxFiles: (maxFiles: number) => void\n setOnCancel: (onCancel: BulkUploadContext['onCancel']) => void\n setOnSuccess: (path: string, onSuccess: BulkUploadContext['onSuccess']) => void\n}\n\nconst Context = React.createContext<BulkUploadContext>({\n collectionSlug: '',\n currentActivePath: undefined,\n drawerSlug: '',\n initialFiles: undefined,\n maxFiles: undefined,\n onCancel: () => null,\n onSuccess: () => null,\n setCollectionSlug: () => null,\n setCurrentActivePath: () => null,\n setInitialFiles: () => null,\n setMaxFiles: () => null,\n setOnCancel: () => null,\n setOnSuccess: () => null,\n})\nexport function BulkUploadProvider({ children }: { readonly children: React.ReactNode }) {\n const [collection, setCollection] = React.useState<string>()\n const [onSuccessFunctionMap, setOnSuccessFunctionMap] =\n React.useState<Record<string, BulkUploadContext['onSuccess']>>()\n const [onCancelFunction, setOnCancelFunction] = React.useState<BulkUploadContext['onCancel']>()\n const [initialFiles, setInitialFiles] = React.useState<FileList>(undefined)\n const [maxFiles, setMaxFiles] = React.useState<number>(undefined)\n const [currentActivePath, setCurrentActivePath] = React.useState<string>(undefined)\n const drawerSlug = useBulkUploadDrawerSlug()\n\n const setCollectionSlug: BulkUploadContext['setCollectionSlug'] = (slug) => {\n setCollection(slug)\n }\n\n const setOnSuccess: BulkUploadContext['setOnSuccess'] = React.useCallback((path, onSuccess) => {\n setOnSuccessFunctionMap((prev) => ({\n ...prev,\n [path]: onSuccess,\n }))\n }, [])\n\n return (\n <Context\n value={{\n collectionSlug: collection,\n currentActivePath,\n drawerSlug,\n initialFiles,\n maxFiles,\n onCancel: () => {\n if (typeof onCancelFunction === 'function') {\n onCancelFunction()\n }\n },\n onSuccess: (docIDs, errorCount) => {\n if (onSuccessFunctionMap && Object.hasOwn(onSuccessFunctionMap, currentActivePath)) {\n const onSuccessFunction = onSuccessFunctionMap[currentActivePath]\n onSuccessFunction(docIDs, errorCount)\n }\n },\n setCollectionSlug,\n setCurrentActivePath,\n setInitialFiles,\n setMaxFiles,\n setOnCancel: setOnCancelFunction,\n setOnSuccess,\n }}\n >\n <React.Fragment>\n {children}\n <BulkUploadDrawer />\n </React.Fragment>\n </Context>\n )\n}\n\nexport const useBulkUpload = () => React.use(Context)\n\nexport function useBulkUploadDrawerSlug() {\n const depth = useDrawerDepth()\n\n return `${drawerSlug}-${depth || 1}`\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","validateMimeType","React","toast","useConfig","useTranslation","UploadControlsProvider","Drawer","useDrawerDepth","AddFilesView","AddingFilesView","FormsManagerProvider","useFormsManager","drawerSlug","DrawerContent","addFiles","forms","isInitializing","closeModal","collectionSlug","useBulkUpload","getEntityConfig","t","uploadCollection","uploadConfig","upload","uploadMimeTypes","mimeTypes","onDrop","useCallback","acceptedFiles","fileTransfer","DataTransfer","candidateFile","undefined","length","type","items","add","files","error","_jsx","acceptMimeTypes","join","onCancel","BulkUploadDrawer","$","t0","gutter","Header","slug","children","Context","createContext","currentActivePath","initialFiles","maxFiles","onSuccess","setCollectionSlug","setCurrentActivePath","setInitialFiles","setMaxFiles","setOnCancel","setOnSuccess","BulkUploadProvider","collection","setCollection","useState","onSuccessFunctionMap","setOnSuccessFunctionMap","onCancelFunction","setOnCancelFunction","useBulkUploadDrawerSlug","t1","Symbol","for","t2","path","prev","t3","t4","docIDs","errorCount","Object","hasOwn","onSuccessFunction","t5","value","_jsxs","Fragment","use","depth"],"sources":["../../../src/elements/BulkUpload/index.tsx"],"sourcesContent":["'use client'\n\nimport type { JsonObject } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { validateMimeType } from 'payload/shared'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { Drawer, useDrawerDepth } from '../Drawer/index.js'\nimport { AddFilesView } from './AddFilesView/index.js'\nimport { AddingFilesView } from './AddingFilesView/index.js'\nimport { FormsManagerProvider, useFormsManager } from './FormsManager/index.js'\n\nconst drawerSlug = 'bulk-upload-drawer-slug'\n\nfunction DrawerContent() {\n const { addFiles, forms, isInitializing } = useFormsManager()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug } = useBulkUpload()\n const { getEntityConfig } = useConfig()\n const { t } = useTranslation()\n\n const uploadCollection = getEntityConfig({ collectionSlug })\n const uploadConfig = uploadCollection?.upload\n const uploadMimeTypes = uploadConfig?.mimeTypes\n\n const onDrop = React.useCallback(\n (acceptedFiles: FileList) => {\n const fileTransfer = new DataTransfer()\n for (const candidateFile of acceptedFiles) {\n if (\n uploadMimeTypes === undefined ||\n uploadMimeTypes.length === 0 ||\n validateMimeType(candidateFile.type, uploadMimeTypes)\n ) {\n fileTransfer.items.add(candidateFile)\n }\n }\n if (fileTransfer.files.length === 0) {\n toast.error(t('error:invalidFileType'))\n } else {\n void addFiles(fileTransfer.files)\n }\n },\n [addFiles, t, uploadMimeTypes],\n )\n\n if (!collectionSlug) {\n return null\n }\n\n if (!forms.length && !isInitializing) {\n return (\n <AddFilesView\n acceptMimeTypes={uploadMimeTypes?.join(', ')}\n onCancel={() => closeModal(drawerSlug)}\n onDrop={onDrop}\n />\n )\n } else {\n return <AddingFilesView />\n }\n}\n\nexport type BulkUploadProps = {\n readonly children: React.ReactNode\n}\n\nexport function BulkUploadDrawer() {\n const { drawerSlug } = useBulkUpload()\n\n return (\n <Drawer gutter={false} Header={null} slug={drawerSlug}>\n <FormsManagerProvider>\n <UploadControlsProvider>\n <DrawerContent />\n </UploadControlsProvider>\n </FormsManagerProvider>\n </Drawer>\n )\n}\n\ntype BulkUploadContext = {\n collectionSlug: string\n currentActivePath: string\n drawerSlug: string\n initialFiles: FileList\n maxFiles: number\n onCancel: () => void\n onSuccess: (newDocs: JsonObject[], errorCount: number) => void\n setCollectionSlug: (slug: string) => void\n setCurrentActivePath: (path: string) => void\n setInitialFiles: (files: FileList) => void\n setMaxFiles: (maxFiles: number) => void\n setOnCancel: (onCancel: BulkUploadContext['onCancel']) => void\n setOnSuccess: (path: string, onSuccess: BulkUploadContext['onSuccess']) => void\n}\n\nconst Context = React.createContext<BulkUploadContext>({\n collectionSlug: '',\n currentActivePath: undefined,\n drawerSlug: '',\n initialFiles: undefined,\n maxFiles: undefined,\n onCancel: () => null,\n onSuccess: () => null,\n setCollectionSlug: () => null,\n setCurrentActivePath: () => null,\n setInitialFiles: () => null,\n setMaxFiles: () => null,\n setOnCancel: () => null,\n setOnSuccess: () => null,\n})\nexport function BulkUploadProvider({ children }: { readonly children: React.ReactNode }) {\n const [collection, setCollection] = React.useState<string>()\n const [onSuccessFunctionMap, setOnSuccessFunctionMap] =\n React.useState<Record<string, BulkUploadContext['onSuccess']>>()\n const [onCancelFunction, setOnCancelFunction] = React.useState<BulkUploadContext['onCancel']>()\n const [initialFiles, setInitialFiles] = React.useState<FileList>(undefined)\n const [maxFiles, setMaxFiles] = React.useState<number>(undefined)\n const [currentActivePath, setCurrentActivePath] = React.useState<string>(undefined)\n const drawerSlug = useBulkUploadDrawerSlug()\n\n const setCollectionSlug: BulkUploadContext['setCollectionSlug'] = (slug) => {\n setCollection(slug)\n }\n\n const setOnSuccess: BulkUploadContext['setOnSuccess'] = React.useCallback((path, onSuccess) => {\n setOnSuccessFunctionMap((prev) => ({\n ...prev,\n [path]: onSuccess,\n }))\n }, [])\n\n return (\n <Context\n value={{\n collectionSlug: collection,\n currentActivePath,\n drawerSlug,\n initialFiles,\n maxFiles,\n onCancel: () => {\n if (typeof onCancelFunction === 'function') {\n onCancelFunction()\n }\n },\n onSuccess: (docIDs, errorCount) => {\n if (onSuccessFunctionMap && Object.hasOwn(onSuccessFunctionMap, currentActivePath)) {\n const onSuccessFunction = onSuccessFunctionMap[currentActivePath]\n onSuccessFunction(docIDs, errorCount)\n }\n },\n setCollectionSlug,\n setCurrentActivePath,\n setInitialFiles,\n setMaxFiles,\n setOnCancel: setOnCancelFunction,\n setOnSuccess,\n }}\n >\n <React.Fragment>\n {children}\n <BulkUploadDrawer />\n </React.Fragment>\n </Context>\n )\n}\n\nexport const useBulkUpload = () => React.use(Context)\n\nexport function useBulkUploadDrawerSlug() {\n const depth = useDrawerDepth()\n\n return `${drawerSlug}-${depth || 1}`\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,6 +8,7 @@ type RelationshipTableComponentProps = {
|
|
|
8
8
|
readonly BeforeInput?: React.ReactNode;
|
|
9
9
|
readonly disableTable?: boolean;
|
|
10
10
|
readonly field: JoinFieldClient;
|
|
11
|
+
readonly fieldPath?: string;
|
|
11
12
|
readonly filterOptions?: Where;
|
|
12
13
|
readonly initialData?: PaginatedDocs;
|
|
13
14
|
readonly initialDrawerData?: DocumentDrawerProps['initialData'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAqD,MAAM,OAAO,CAAA;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAoBrE,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/RelationshipTable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAqD,MAAM,OAAO,CAAA;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAoBrE,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,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,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,CAoUvE,CAAA"}
|
|
@@ -31,6 +31,7 @@ export const RelationshipTable = props => {
|
|
|
31
31
|
BeforeInput,
|
|
32
32
|
disableTable = false,
|
|
33
33
|
field,
|
|
34
|
+
fieldPath,
|
|
34
35
|
filterOptions,
|
|
35
36
|
initialData: initialDataFromProps,
|
|
36
37
|
initialDrawerData,
|
|
@@ -235,7 +236,7 @@ export const RelationshipTable = props => {
|
|
|
235
236
|
defaultSort: field.defaultSort ?? collectionConfig?.defaultSort,
|
|
236
237
|
modifySearchParams: false,
|
|
237
238
|
onQueryChange: setQuery,
|
|
238
|
-
orderableFieldName: !field.orderable || Array.isArray(field.collection) ? undefined : `_${field.collection}_${
|
|
239
|
+
orderableFieldName: !field.orderable || Array.isArray(field.collection) ? undefined : `_${field.collection}_${fieldPath.replaceAll('.', '_')}_order`,
|
|
239
240
|
children: /*#__PURE__*/_jsxs(TableColumnsProvider, {
|
|
240
241
|
collectionSlug: Array.isArray(relationTo) ? relationTo[0] : relationTo,
|
|
241
242
|
columnState: columnState,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","hoistQueryParamsToAnd","transformColumnsToPreferences","React","Fragment","useCallback","useEffect","useState","Button","Pill","useEffectEvent","ChevronIcon","PlusIcon","useAuth","useConfig","ListQueryProvider","useServerFunctions","TableColumnsProvider","useTranslation","AnimateHeight","ColumnSelector","useDocumentDrawer","Popup","PopupList","RelationshipProvider","DrawerLink","RelationshipTablePagination","baseClass","RelationshipTable","props","AfterInput","allowCreate","BeforeInput","disableTable","field","filterOptions","initialData","initialDataFromProps","initialDrawerData","Label","parent","relationTo","Table","setTable","config","getEntityConfig","permissions","docs","Array","isArray","reduce","acc","doc","id","i18n","t","query","setQuery","openColumnSelector","setOpenColumnSelector","collectionConfig","collectionSlug","selectedCollection","setSelectedCollection","undefined","isLoadingTable","setIsLoadingTable","data","setData","columnState","setColumnState","getTableState","renderTable","newQuery","limit","String","defaultLimit","admin","pagination","sort","defaultSort","where","defaultColumns","map","accessor","active","newData","state","newColumnState","NewTable","columns","enableRowSelections","orderableFieldName","orderable","collection","name","renderRowTypes","tableAppearance","handleTableRender","DocumentDrawer","DocumentDrawerToggler","closeDrawer","isDrawerOpen","openDrawer","onDrawerSave","args","foundDocIndex","findIndex","withNewOrUpdatedDoc","newDocs","onDrawerCreate","onDrawerDelete","filter","canCreate","collections","create","_jsxs","className","_jsx","button","buttonStyle","buttonType","horizontalAlign","render","close","closePopup","ButtonGroup","relatedCollection","onClick","find","each","slug","labels","singular","size","icon","direction","pillStyle","length","label","plural","modifySearchParams","onQueryChange","LinkedCellOverride","height","onSave"],"sources":["../../../src/elements/RelationshipTable/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n type CollectionSlug,\n type Column,\n type JoinFieldClient,\n type ListQuery,\n type PaginatedDocs,\n type Where,\n} from 'payload'\nimport { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { Pill } from '../../elements/Pill/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RelationshipProvider } from '../Table/RelationshipProvider/index.js'\nimport { DrawerLink } from './cells/DrawerLink/index.js'\nimport { RelationshipTablePagination } from './Pagination.js'\nimport './index.scss'\n\nconst baseClass = 'relationship-table'\n\ntype RelationshipTableComponentProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly BeforeInput?: React.ReactNode\n readonly disableTable?: boolean\n readonly field: JoinFieldClient\n readonly filterOptions?: Where\n readonly initialData?: PaginatedDocs\n readonly initialDrawerData?: DocumentDrawerProps['initialData']\n readonly Label?: React.ReactNode\n readonly parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n readonly relationTo: string | string[]\n}\n\nexport const RelationshipTable: React.FC<RelationshipTableComponentProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n BeforeInput,\n disableTable = false,\n field,\n filterOptions,\n initialData: initialDataFromProps,\n initialDrawerData,\n Label,\n parent,\n relationTo,\n } = props\n const [Table, setTable] = useState<React.ReactNode>(null)\n const { config, getEntityConfig } = useConfig()\n\n const { permissions } = useAuth()\n\n const [initialData] = useState<PaginatedDocs>(() => {\n if (initialDataFromProps) {\n return {\n ...initialDataFromProps,\n docs: Array.isArray(initialDataFromProps.docs)\n ? initialDataFromProps.docs.reduce((acc, doc) => {\n if (typeof doc === 'string') {\n return [\n ...acc,\n {\n id: doc,\n },\n ]\n }\n return [...acc, doc]\n }, [])\n : [],\n }\n }\n })\n\n const { i18n, t } = useTranslation()\n\n const [query, setQuery] = useState<ListQuery>()\n const [openColumnSelector, setOpenColumnSelector] = useState(false)\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\n\n const [selectedCollection, setSelectedCollection] = useState(\n Array.isArray(relationTo) ? undefined : relationTo,\n )\n const [isLoadingTable, setIsLoadingTable] = useState(!disableTable)\n const [data, setData] = useState<PaginatedDocs>(initialData)\n const [columnState, setColumnState] = useState<Column[]>()\n\n const { getTableState } = useServerFunctions()\n\n const renderTable = useCallback(\n async (docs?: PaginatedDocs['docs']) => {\n const newQuery: ListQuery = {\n limit: String(field?.defaultLimit || collectionConfig?.admin?.pagination?.defaultLimit),\n sort: field.defaultSort || collectionConfig?.defaultSort,\n ...(query || {}),\n where: { ...(query?.where || {}) },\n }\n\n if (filterOptions) {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions)\n }\n\n // map columns from string[] to ListPreferences['columns']\n const defaultColumns = field.admin.defaultColumns\n ? field.admin.defaultColumns.map((accessor) => ({\n accessor,\n active: true,\n }))\n : undefined\n\n const {\n data: newData,\n state: newColumnState,\n Table: NewTable,\n } = await getTableState({\n collectionSlug: relationTo,\n columns: transformColumnsToPreferences(query?.columns) || defaultColumns,\n docs,\n enableRowSelections: false,\n orderableFieldName:\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`,\n parent,\n query: newQuery,\n renderRowTypes: true,\n tableAppearance: 'condensed',\n })\n\n setData(newData)\n setTable(NewTable)\n setColumnState(newColumnState)\n setIsLoadingTable(false)\n },\n [\n field.defaultLimit,\n field.defaultSort,\n field.admin.defaultColumns,\n field.collection,\n field.name,\n field.orderable,\n collectionConfig?.admin?.pagination?.defaultLimit,\n collectionConfig?.defaultSort,\n query,\n filterOptions,\n getTableState,\n relationTo,\n parent,\n ],\n )\n\n const handleTableRender = useEffectEvent((query: ListQuery, disableTable: boolean) => {\n if (!disableTable && (!Table || query)) {\n void renderTable()\n }\n })\n\n useEffect(() => {\n handleTableRender(query, disableTable)\n }, [query, disableTable])\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer, isDrawerOpen, openDrawer }] =\n useDocumentDrawer({\n collectionSlug: selectedCollection,\n })\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n const foundDocIndex = data?.docs?.findIndex((doc) => doc.id === args.doc.id)\n let withNewOrUpdatedDoc: PaginatedDocs['docs'] = undefined\n\n if (foundDocIndex !== -1) {\n const newDocs = [...data.docs]\n newDocs[foundDocIndex] = args.doc\n withNewOrUpdatedDoc = newDocs\n } else {\n withNewOrUpdatedDoc = [args.doc, ...data.docs]\n }\n\n void renderTable(withNewOrUpdatedDoc)\n },\n [data?.docs, renderTable],\n )\n\n const onDrawerCreate = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n closeDrawer()\n\n void onDrawerSave(args)\n },\n [closeDrawer, onDrawerSave],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n const newDocs = data.docs.filter((doc) => doc.id !== args.id)\n void renderTable(newDocs)\n },\n [data?.docs, renderTable],\n )\n\n const canCreate =\n allowCreate !== false &&\n permissions?.collections?.[Array.isArray(relationTo) ? relationTo[0] : relationTo]?.create\n\n useEffect(() => {\n if (Array.isArray(relationTo) && selectedCollection) {\n openDrawer()\n }\n }, [selectedCollection, openDrawer, relationTo])\n\n useEffect(() => {\n if (Array.isArray(relationTo) && !isDrawerOpen && selectedCollection) {\n setSelectedCollection(undefined)\n }\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>\n {!Array.isArray(relationTo) && canCreate && (\n <DocumentDrawerToggler className={`${baseClass}__add-new`}>\n {i18n.t('fields:addNew')}\n </DocumentDrawerToggler>\n )}\n\n {Array.isArray(relationTo) && (\n <Fragment>\n <Popup\n button={\n <Button buttonStyle=\"none\" className={`${baseClass}__add-new-polymorphic`}>\n {i18n.t('fields:addNew')}\n <PlusIcon />\n </Button>\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relationTo.map((relatedCollection) => {\n if (permissions.collections[relatedCollection].create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection}`}\n key={relatedCollection}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection)\n }}\n >\n {getTranslation(\n config.collections.find((each) => each.slug === relatedCollection)\n .labels.singular,\n i18n,\n )}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n </Fragment>\n )}\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={openColumnSelector}\n className={`${baseClass}__toggle-columns ${\n openColumnSelector ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon direction={openColumnSelector ? 'up' : 'down'} />}\n onClick={() => setOpenColumnSelector(!openColumnSelector)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n </div>\n </div>\n {BeforeInput}\n {isLoadingTable ? (\n <p>{t('general:loading')}</p>\n ) : (\n <Fragment>\n {data?.docs && data.docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t('general:noResults', {\n label: Array.isArray(relationTo)\n ? i18n.t('general:documents')\n : getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n </p>\n {canCreate && (\n <Button onClick={openDrawer}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n </Button>\n )}\n </div>\n )}\n {data?.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <ListQueryProvider\n columns={transformColumnsToPreferences(columnState)}\n data={data}\n defaultLimit={\n field.defaultLimit ?? collectionConfig?.admin?.pagination?.defaultLimit\n }\n defaultSort={field.defaultSort ?? collectionConfig?.defaultSort}\n modifySearchParams={false}\n onQueryChange={setQuery}\n orderableFieldName={\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`\n }\n >\n <TableColumnsProvider\n collectionSlug={Array.isArray(relationTo) ? relationTo[0] : relationTo}\n columnState={columnState}\n LinkedCellOverride={\n <DrawerLink onDrawerDelete={onDrawerDelete} onDrawerSave={onDrawerSave} />\n }\n >\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={openColumnSelector ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <div className={`${baseClass}__columns-inner`}>\n {collectionConfig && (\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n )}\n </div>\n </AnimateHeight>\n {Table}\n <RelationshipTablePagination />\n </TableColumnsProvider>\n </ListQueryProvider>\n </RelationshipProvider>\n )}\n </Fragment>\n )}\n {AfterInput}\n <DocumentDrawer initialData={initialDrawerData} onSave={onDrawerCreate} />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","hoistQueryParamsToAnd","transformColumnsToPreferences","React","Fragment","useCallback","useEffect","useState","Button","Pill","useEffectEvent","ChevronIcon","PlusIcon","useAuth","useConfig","ListQueryProvider","useServerFunctions","TableColumnsProvider","useTranslation","AnimateHeight","ColumnSelector","useDocumentDrawer","Popup","PopupList","RelationshipProvider","DrawerLink","RelationshipTablePagination","baseClass","RelationshipTable","props","AfterInput","allowCreate","BeforeInput","disableTable","field","fieldPath","filterOptions","initialData","initialDataFromProps","initialDrawerData","Label","parent","relationTo","Table","setTable","config","getEntityConfig","permissions","docs","Array","isArray","reduce","acc","doc","id","i18n","t","query","setQuery","openColumnSelector","setOpenColumnSelector","collectionConfig","collectionSlug","selectedCollection","setSelectedCollection","undefined","isLoadingTable","setIsLoadingTable","data","setData","columnState","setColumnState","getTableState","renderTable","newQuery","limit","String","defaultLimit","admin","pagination","sort","defaultSort","where","defaultColumns","map","accessor","active","newData","state","newColumnState","NewTable","columns","enableRowSelections","orderableFieldName","orderable","collection","name","renderRowTypes","tableAppearance","handleTableRender","DocumentDrawer","DocumentDrawerToggler","closeDrawer","isDrawerOpen","openDrawer","onDrawerSave","args","foundDocIndex","findIndex","withNewOrUpdatedDoc","newDocs","onDrawerCreate","onDrawerDelete","filter","canCreate","collections","create","_jsxs","className","_jsx","button","buttonStyle","buttonType","horizontalAlign","render","close","closePopup","ButtonGroup","relatedCollection","onClick","find","each","slug","labels","singular","size","icon","direction","pillStyle","length","label","plural","modifySearchParams","onQueryChange","replaceAll","LinkedCellOverride","height","onSave"],"sources":["../../../src/elements/RelationshipTable/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n type CollectionSlug,\n type Column,\n type JoinFieldClient,\n type ListQuery,\n type PaginatedDocs,\n type Where,\n} from 'payload'\nimport { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { Pill } from '../../elements/Pill/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RelationshipProvider } from '../Table/RelationshipProvider/index.js'\nimport { DrawerLink } from './cells/DrawerLink/index.js'\nimport { RelationshipTablePagination } from './Pagination.js'\nimport './index.scss'\n\nconst baseClass = 'relationship-table'\n\ntype RelationshipTableComponentProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly BeforeInput?: React.ReactNode\n readonly disableTable?: boolean\n readonly field: JoinFieldClient\n readonly fieldPath?: string\n readonly filterOptions?: Where\n readonly initialData?: PaginatedDocs\n readonly initialDrawerData?: DocumentDrawerProps['initialData']\n readonly Label?: React.ReactNode\n readonly parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n readonly relationTo: string | string[]\n}\n\nexport const RelationshipTable: React.FC<RelationshipTableComponentProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n BeforeInput,\n disableTable = false,\n field,\n fieldPath,\n filterOptions,\n initialData: initialDataFromProps,\n initialDrawerData,\n Label,\n parent,\n relationTo,\n } = props\n const [Table, setTable] = useState<React.ReactNode>(null)\n const { config, getEntityConfig } = useConfig()\n\n const { permissions } = useAuth()\n\n const [initialData] = useState<PaginatedDocs>(() => {\n if (initialDataFromProps) {\n return {\n ...initialDataFromProps,\n docs: Array.isArray(initialDataFromProps.docs)\n ? initialDataFromProps.docs.reduce((acc, doc) => {\n if (typeof doc === 'string') {\n return [\n ...acc,\n {\n id: doc,\n },\n ]\n }\n return [...acc, doc]\n }, [])\n : [],\n }\n }\n })\n\n const { i18n, t } = useTranslation()\n\n const [query, setQuery] = useState<ListQuery>()\n const [openColumnSelector, setOpenColumnSelector] = useState(false)\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\n\n const [selectedCollection, setSelectedCollection] = useState(\n Array.isArray(relationTo) ? undefined : relationTo,\n )\n const [isLoadingTable, setIsLoadingTable] = useState(!disableTable)\n const [data, setData] = useState<PaginatedDocs>(initialData)\n const [columnState, setColumnState] = useState<Column[]>()\n\n const { getTableState } = useServerFunctions()\n\n const renderTable = useCallback(\n async (docs?: PaginatedDocs['docs']) => {\n const newQuery: ListQuery = {\n limit: String(field?.defaultLimit || collectionConfig?.admin?.pagination?.defaultLimit),\n sort: field.defaultSort || collectionConfig?.defaultSort,\n ...(query || {}),\n where: { ...(query?.where || {}) },\n }\n\n if (filterOptions) {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions)\n }\n\n // map columns from string[] to ListPreferences['columns']\n const defaultColumns = field.admin.defaultColumns\n ? field.admin.defaultColumns.map((accessor) => ({\n accessor,\n active: true,\n }))\n : undefined\n\n const {\n data: newData,\n state: newColumnState,\n Table: NewTable,\n } = await getTableState({\n collectionSlug: relationTo,\n columns: transformColumnsToPreferences(query?.columns) || defaultColumns,\n docs,\n enableRowSelections: false,\n orderableFieldName:\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`,\n parent,\n query: newQuery,\n renderRowTypes: true,\n tableAppearance: 'condensed',\n })\n\n setData(newData)\n setTable(NewTable)\n setColumnState(newColumnState)\n setIsLoadingTable(false)\n },\n [\n field.defaultLimit,\n field.defaultSort,\n field.admin.defaultColumns,\n field.collection,\n field.name,\n field.orderable,\n collectionConfig?.admin?.pagination?.defaultLimit,\n collectionConfig?.defaultSort,\n query,\n filterOptions,\n getTableState,\n relationTo,\n parent,\n ],\n )\n\n const handleTableRender = useEffectEvent((query: ListQuery, disableTable: boolean) => {\n if (!disableTable && (!Table || query)) {\n void renderTable()\n }\n })\n\n useEffect(() => {\n handleTableRender(query, disableTable)\n }, [query, disableTable])\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer, isDrawerOpen, openDrawer }] =\n useDocumentDrawer({\n collectionSlug: selectedCollection,\n })\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n const foundDocIndex = data?.docs?.findIndex((doc) => doc.id === args.doc.id)\n let withNewOrUpdatedDoc: PaginatedDocs['docs'] = undefined\n\n if (foundDocIndex !== -1) {\n const newDocs = [...data.docs]\n newDocs[foundDocIndex] = args.doc\n withNewOrUpdatedDoc = newDocs\n } else {\n withNewOrUpdatedDoc = [args.doc, ...data.docs]\n }\n\n void renderTable(withNewOrUpdatedDoc)\n },\n [data?.docs, renderTable],\n )\n\n const onDrawerCreate = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n closeDrawer()\n\n void onDrawerSave(args)\n },\n [closeDrawer, onDrawerSave],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n const newDocs = data.docs.filter((doc) => doc.id !== args.id)\n void renderTable(newDocs)\n },\n [data?.docs, renderTable],\n )\n\n const canCreate =\n allowCreate !== false &&\n permissions?.collections?.[Array.isArray(relationTo) ? relationTo[0] : relationTo]?.create\n\n useEffect(() => {\n if (Array.isArray(relationTo) && selectedCollection) {\n openDrawer()\n }\n }, [selectedCollection, openDrawer, relationTo])\n\n useEffect(() => {\n if (Array.isArray(relationTo) && !isDrawerOpen && selectedCollection) {\n setSelectedCollection(undefined)\n }\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>\n {!Array.isArray(relationTo) && canCreate && (\n <DocumentDrawerToggler className={`${baseClass}__add-new`}>\n {i18n.t('fields:addNew')}\n </DocumentDrawerToggler>\n )}\n\n {Array.isArray(relationTo) && (\n <Fragment>\n <Popup\n button={\n <Button buttonStyle=\"none\" className={`${baseClass}__add-new-polymorphic`}>\n {i18n.t('fields:addNew')}\n <PlusIcon />\n </Button>\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relationTo.map((relatedCollection) => {\n if (permissions.collections[relatedCollection].create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection}`}\n key={relatedCollection}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection)\n }}\n >\n {getTranslation(\n config.collections.find((each) => each.slug === relatedCollection)\n .labels.singular,\n i18n,\n )}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n </Fragment>\n )}\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={openColumnSelector}\n className={`${baseClass}__toggle-columns ${\n openColumnSelector ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon direction={openColumnSelector ? 'up' : 'down'} />}\n onClick={() => setOpenColumnSelector(!openColumnSelector)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n </div>\n </div>\n {BeforeInput}\n {isLoadingTable ? (\n <p>{t('general:loading')}</p>\n ) : (\n <Fragment>\n {data?.docs && data.docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t('general:noResults', {\n label: Array.isArray(relationTo)\n ? i18n.t('general:documents')\n : getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n </p>\n {canCreate && (\n <Button onClick={openDrawer}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n </Button>\n )}\n </div>\n )}\n {data?.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <ListQueryProvider\n columns={transformColumnsToPreferences(columnState)}\n data={data}\n defaultLimit={\n field.defaultLimit ?? collectionConfig?.admin?.pagination?.defaultLimit\n }\n defaultSort={field.defaultSort ?? collectionConfig?.defaultSort}\n modifySearchParams={false}\n onQueryChange={setQuery}\n orderableFieldName={\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${fieldPath.replaceAll('.', '_')}_order`\n }\n >\n <TableColumnsProvider\n collectionSlug={Array.isArray(relationTo) ? relationTo[0] : relationTo}\n columnState={columnState}\n LinkedCellOverride={\n <DrawerLink onDrawerDelete={onDrawerDelete} onDrawerSave={onDrawerSave} />\n }\n >\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={openColumnSelector ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <div className={`${baseClass}__columns-inner`}>\n {collectionConfig && (\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n )}\n </div>\n </AnimateHeight>\n {Table}\n <RelationshipTablePagination />\n </TableColumnsProvider>\n </ListQueryProvider>\n </RelationshipProvider>\n )}\n </Fragment>\n )}\n {AfterInput}\n <DocumentDrawer initialData={initialDrawerData} onSave={onDrawerCreate} />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,6 +16,7 @@ export type UploadProps = {
|
|
|
16
16
|
readonly initialState?: FormState;
|
|
17
17
|
readonly onChange?: (file?: File) => void;
|
|
18
18
|
readonly uploadConfig: SanitizedCollectionConfig['upload'];
|
|
19
|
+
readonly UploadControls?: React.ReactNode;
|
|
19
20
|
};
|
|
20
21
|
export declare const Upload: React.FC<UploadProps>;
|
|
21
22
|
export type UploadProps_v4 = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAA6D,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAA6D,MAAM,OAAO,CAAA;AAiBjF,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAkDnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAYxC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC,GAAG,WAAW,CAAA;AAEf,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2a9C,CAAA"}
|
|
@@ -14,15 +14,16 @@ import { useConfig } from '../../providers/Config/index.js';
|
|
|
14
14
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
15
15
|
import { EditDepthProvider } from '../../providers/EditDepth/index.js';
|
|
16
16
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
17
|
+
import { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js';
|
|
17
18
|
import { useUploadEdits } from '../../providers/UploadEdits/index.js';
|
|
18
19
|
import { Button } from '../Button/index.js';
|
|
19
20
|
import { Drawer } from '../Drawer/index.js';
|
|
20
21
|
import { Dropzone } from '../Dropzone/index.js';
|
|
21
22
|
import { EditUpload } from '../EditUpload/index.js';
|
|
23
|
+
import './index.scss';
|
|
22
24
|
import { FileDetails } from '../FileDetails/index.js';
|
|
23
25
|
import { PreviewSizes } from '../PreviewSizes/index.js';
|
|
24
26
|
import { Thumbnail } from '../Thumbnail/index.js';
|
|
25
|
-
import './index.scss';
|
|
26
27
|
const baseClass = 'file-field';
|
|
27
28
|
export const editDrawerSlug = 'edit-upload';
|
|
28
29
|
export const sizePreviewSlug = 'preview-sizes';
|
|
@@ -115,11 +116,13 @@ export const Upload = props => {
|
|
|
115
116
|
} = useUploadEdits();
|
|
116
117
|
let t0;
|
|
117
118
|
if ($[0] !== props || $[1] !== resetUploadEdits || $[2] !== updateUploadEdits || $[3] !== uploadEdits) {
|
|
118
|
-
t0 = _jsx(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
t0 = _jsx(UploadControlsProvider, {
|
|
120
|
+
children: _jsx(Upload_v4, {
|
|
121
|
+
...props,
|
|
122
|
+
resetUploadEdits,
|
|
123
|
+
updateUploadEdits,
|
|
124
|
+
uploadEdits
|
|
125
|
+
})
|
|
123
126
|
});
|
|
124
127
|
$[0] = props;
|
|
125
128
|
$[1] = resetUploadEdits;
|
|
@@ -140,8 +143,17 @@ export const Upload_v4 = props => {
|
|
|
140
143
|
resetUploadEdits,
|
|
141
144
|
updateUploadEdits,
|
|
142
145
|
uploadConfig,
|
|
146
|
+
UploadControls,
|
|
143
147
|
uploadEdits
|
|
144
148
|
} = props;
|
|
149
|
+
const {
|
|
150
|
+
setUploadControlFile,
|
|
151
|
+
setUploadControlFileName,
|
|
152
|
+
setUploadControlFileUrl,
|
|
153
|
+
uploadControlFile,
|
|
154
|
+
uploadControlFileName,
|
|
155
|
+
uploadControlFileUrl
|
|
156
|
+
} = useUploadControls();
|
|
145
157
|
const {
|
|
146
158
|
config: {
|
|
147
159
|
routes: {
|
|
@@ -186,10 +198,13 @@ export const Upload_v4 = props => {
|
|
|
186
198
|
}
|
|
187
199
|
setValue(newFile);
|
|
188
200
|
setShowUrlInput(false);
|
|
201
|
+
setUploadControlFileUrl('');
|
|
202
|
+
setUploadControlFileName(null);
|
|
203
|
+
setUploadControlFile(null);
|
|
189
204
|
if (typeof onChange === 'function') {
|
|
190
205
|
onChange(newFile);
|
|
191
206
|
}
|
|
192
|
-
}, [onChange, setValue]);
|
|
207
|
+
}, [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl]);
|
|
193
208
|
const renameFile = (fileToChange, newName) => {
|
|
194
209
|
// Creating a new File object with updated properties
|
|
195
210
|
const newFile_0 = new File([fileToChange], newName, {
|
|
@@ -216,12 +231,15 @@ export const Upload_v4 = props => {
|
|
|
216
231
|
setFileUrl('');
|
|
217
232
|
resetUploadEdits();
|
|
218
233
|
setShowUrlInput(false);
|
|
219
|
-
|
|
234
|
+
setUploadControlFileUrl('');
|
|
235
|
+
setUploadControlFileName(null);
|
|
236
|
+
setUploadControlFile(null);
|
|
237
|
+
}, [handleFileChange, resetUploadEdits, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl]);
|
|
220
238
|
const onEditsSave = useCallback(args => {
|
|
221
239
|
setModified(true);
|
|
222
240
|
updateUploadEdits(args);
|
|
223
241
|
}, [setModified, updateUploadEdits]);
|
|
224
|
-
const handleUrlSubmit = async () => {
|
|
242
|
+
const handleUrlSubmit = useCallback(async () => {
|
|
225
243
|
if (!fileUrl || uploadConfig?.pasteURL === false) {
|
|
226
244
|
return;
|
|
227
245
|
}
|
|
@@ -233,7 +251,7 @@ export const Upload_v4 = props => {
|
|
|
233
251
|
throw new Error(`Fetch failed with status: ${clientResponse.status}`);
|
|
234
252
|
}
|
|
235
253
|
const blob = await clientResponse.blob();
|
|
236
|
-
const fileName = decodeURIComponent(fileUrl.split('/').pop() || '');
|
|
254
|
+
const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '');
|
|
237
255
|
const file = new File([blob], fileName, {
|
|
238
256
|
type: blob.type
|
|
239
257
|
});
|
|
@@ -266,7 +284,7 @@ export const Upload_v4 = props => {
|
|
|
266
284
|
toast.error('The provided URL is not allowed.');
|
|
267
285
|
setUploadStatus('failed');
|
|
268
286
|
}
|
|
269
|
-
};
|
|
287
|
+
}, [fileUrl, uploadConfig, setUploadStatus, handleFileChange, useServerSideFetch, collectionSlug, id, serverURL, api]);
|
|
270
288
|
useEffect(() => {
|
|
271
289
|
if (initialState?.file?.value instanceof File) {
|
|
272
290
|
setFileSrc(URL.createObjectURL(initialState.file.value));
|
|
@@ -295,9 +313,23 @@ export const Upload_v4 = props => {
|
|
|
295
313
|
const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled);
|
|
296
314
|
const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ');
|
|
297
315
|
const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt;
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
316
|
+
useEffect(() => {
|
|
317
|
+
const handleControlFileUrl = async () => {
|
|
318
|
+
if (uploadControlFileUrl) {
|
|
319
|
+
setFileUrl(uploadControlFileUrl);
|
|
320
|
+
await handleUrlSubmit();
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
void handleControlFileUrl();
|
|
324
|
+
}, [uploadControlFileUrl, handleUrlSubmit]);
|
|
325
|
+
useEffect(() => {
|
|
326
|
+
const handleControlFile = () => {
|
|
327
|
+
if (uploadControlFile) {
|
|
328
|
+
handleFileChange(uploadControlFile);
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
void handleControlFile();
|
|
332
|
+
}, [uploadControlFile, handleFileChange]);
|
|
301
333
|
return /*#__PURE__*/_jsxs("div", {
|
|
302
334
|
className: [fieldBaseClass, baseClass].filter(Boolean).join(' '),
|
|
303
335
|
children: [/*#__PURE__*/_jsx(FieldError, {
|
|
@@ -350,11 +382,14 @@ export const Upload_v4 = props => {
|
|
|
350
382
|
buttonStyle: "pill",
|
|
351
383
|
onClick: () => {
|
|
352
384
|
setShowUrlInput(true);
|
|
385
|
+
setUploadControlFileUrl('');
|
|
386
|
+
setUploadControlFile(null);
|
|
387
|
+
setUploadControlFileName(null);
|
|
353
388
|
},
|
|
354
389
|
size: "small",
|
|
355
390
|
children: t('upload:pasteURL')
|
|
356
391
|
})]
|
|
357
|
-
})]
|
|
392
|
+
}), UploadControls ? UploadControls : null]
|
|
358
393
|
}), /*#__PURE__*/_jsxs("p", {
|
|
359
394
|
className: `${baseClass}__dragAndDropText`,
|
|
360
395
|
children: [t('general:or'), " ", t('upload:dragAndDrop')]
|
|
@@ -390,6 +425,9 @@ export const Upload_v4 = props => {
|
|
|
390
425
|
iconStyle: "with-border",
|
|
391
426
|
onClick: () => {
|
|
392
427
|
setShowUrlInput(false);
|
|
428
|
+
setUploadControlFileUrl('');
|
|
429
|
+
setUploadControlFile(null);
|
|
430
|
+
setUploadControlFileName(null);
|
|
393
431
|
},
|
|
394
432
|
round: true,
|
|
395
433
|
tooltip: t('general:cancel')
|