@payloadcms/ui 3.51.0-canary.6 → 3.51.0-internal.886ed9f

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.
Files changed (75) hide show
  1. package/dist/elements/Autosave/index.d.ts.map +1 -1
  2. package/dist/elements/Autosave/index.js +102 -31
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  5. package/dist/elements/BulkUpload/FormsManager/index.js +1 -2
  6. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  7. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
  8. package/dist/elements/BulkUpload/FormsManager/reducer.js +1 -2
  9. package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
  10. package/dist/elements/DocumentDrawer/Provider.d.ts +0 -5
  11. package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
  12. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  13. package/dist/elements/DocumentFields/index.scss +0 -1
  14. package/dist/elements/{QueryPresets/QueryPresetToggler → ListControls/ActiveQueryPreset}/index.d.ts +1 -1
  15. package/dist/elements/ListControls/ActiveQueryPreset/index.d.ts.map +1 -0
  16. package/dist/elements/ListControls/ActiveQueryPreset/index.js +180 -0
  17. package/dist/elements/ListControls/ActiveQueryPreset/index.js.map +1 -0
  18. package/dist/elements/ListControls/ActiveQueryPreset/index.scss +33 -0
  19. package/dist/elements/ListControls/index.d.ts.map +1 -1
  20. package/dist/elements/ListControls/index.js +127 -103
  21. package/dist/elements/ListControls/index.js.map +1 -1
  22. package/dist/elements/ListControls/index.scss +32 -44
  23. package/dist/elements/ListControls/useQueryPresets.d.ts +17 -0
  24. package/dist/elements/ListControls/useQueryPresets.d.ts.map +1 -0
  25. package/dist/elements/{QueryPresets/QueryPresetBar/index.js → ListControls/useQueryPresets.js} +60 -80
  26. package/dist/elements/ListControls/useQueryPresets.js.map +1 -0
  27. package/dist/elements/Pill/index.scss +1 -1
  28. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  29. package/dist/elements/Table/OrderableTable.js +1 -2
  30. package/dist/elements/Table/OrderableTable.js.map +1 -1
  31. package/dist/elements/Upload/index.d.ts.map +1 -1
  32. package/dist/elements/Upload/index.js +14 -14
  33. package/dist/elements/Upload/index.js.map +1 -1
  34. package/dist/exports/client/index.js +24 -24
  35. package/dist/exports/client/index.js.map +4 -4
  36. package/dist/fields/Select/index.js +1 -2
  37. package/dist/fields/Select/index.js.map +1 -1
  38. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  39. package/dist/forms/Form/fieldReducer.js +0 -2
  40. package/dist/forms/Form/fieldReducer.js.map +1 -1
  41. package/dist/forms/Form/index.d.ts.map +1 -1
  42. package/dist/forms/Form/index.js +14 -32
  43. package/dist/forms/Form/index.js.map +1 -1
  44. package/dist/forms/Form/mergeServerFormState.d.ts +2 -15
  45. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  46. package/dist/forms/Form/mergeServerFormState.js +1 -9
  47. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  48. package/dist/forms/Form/types.d.ts +3 -38
  49. package/dist/forms/Form/types.d.ts.map +1 -1
  50. package/dist/forms/Form/types.js.map +1 -1
  51. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  52. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +0 -1
  53. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  54. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  55. package/dist/providers/DocumentInfo/index.js +8 -7
  56. package/dist/providers/DocumentInfo/index.js.map +1 -1
  57. package/dist/providers/DocumentInfo/types.d.ts +5 -16
  58. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  59. package/dist/providers/DocumentInfo/types.js.map +1 -1
  60. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  61. package/dist/providers/DocumentTitle/index.js +4 -4
  62. package/dist/providers/DocumentTitle/index.js.map +1 -1
  63. package/dist/styles.css +1 -1
  64. package/dist/views/Edit/index.d.ts.map +1 -1
  65. package/dist/views/Edit/index.js +14 -21
  66. package/dist/views/Edit/index.js.map +1 -1
  67. package/package.json +4 -4
  68. package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts +0 -9
  69. package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts.map +0 -1
  70. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +0 -1
  71. package/dist/elements/QueryPresets/QueryPresetBar/index.scss +0 -41
  72. package/dist/elements/QueryPresets/QueryPresetToggler/index.d.ts.map +0 -1
  73. package/dist/elements/QueryPresets/QueryPresetToggler/index.js +0 -198
  74. package/dist/elements/QueryPresets/QueryPresetToggler/index.js.map +0 -1
  75. package/dist/elements/QueryPresets/QueryPresetToggler/index.scss +0 -61
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAIzE,OAAO,KAAwD,MAAM,OAAO,CAAA;AAkB5E,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAwNpC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAIzE,OAAO,KAAwD,MAAM,OAAO,CAAA;AAqB5E,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0SpC,CAAA"}
@@ -4,16 +4,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { dequal } from 'dequal/lite';
5
5
  import { reduceFieldsToValues, versionDefaults } from 'payload/shared';
6
6
  import React, { useDeferredValue, useEffect, useRef, useState } from 'react';
7
+ import { toast } from 'sonner';
7
8
  import { useAllFormFields, useForm, useFormModified, useFormSubmitted } from '../../forms/Form/context.js';
8
9
  import { useDebounce } from '../../hooks/useDebounce.js';
9
10
  import { useEffectEvent } from '../../hooks/useEffectEvent.js';
10
11
  import { useQueues } from '../../hooks/useQueues.js';
11
12
  import { useConfig } from '../../providers/Config/index.js';
13
+ import { useDocumentEvents } from '../../providers/DocumentEvents/index.js';
12
14
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
13
15
  import { useLocale } from '../../providers/Locale/index.js';
14
16
  import { useTranslation } from '../../providers/Translation/index.js';
15
17
  import { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js';
16
18
  import { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js';
19
+ import { useDocumentDrawerContext } from '../DocumentDrawer/Provider.js';
17
20
  import { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js';
18
21
  import './index.scss';
19
22
  const baseClass = 'autosave';
@@ -37,13 +40,22 @@ export const Autosave = ({
37
40
  incrementVersionCount,
38
41
  lastUpdateTime,
39
42
  mostRecentVersionIsAutosaved,
43
+ setLastUpdateTime,
40
44
  setMostRecentVersionIsAutosaved,
41
- setUnpublishedVersionCount
45
+ setUnpublishedVersionCount,
46
+ updateSavedDocumentData
42
47
  } = useDocumentInfo();
43
48
  const {
49
+ onSave: onSaveFromDocumentDrawer
50
+ } = useDocumentDrawerContext();
51
+ const {
52
+ reportUpdate
53
+ } = useDocumentEvents();
54
+ const {
55
+ dispatchFields,
44
56
  isValid,
45
57
  setBackgroundProcessing,
46
- submit
58
+ setIsValid
47
59
  } = useForm();
48
60
  const [formState] = useAllFormFields();
49
61
  const modified = useFormModified();
@@ -114,36 +126,95 @@ export const Autosave = ({
114
126
  url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`;
115
127
  method = 'POST';
116
128
  }
117
- const {
118
- valid
119
- } = reduceFieldsToValuesWithValidation(formStateRef.current, true);
120
- const skipSubmission = submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate;
121
- if (!skipSubmission && modifiedRef.current && url) {
122
- const result = await submit({
123
- acceptValues: {
124
- overrideLocalChanges: false
125
- },
126
- action: url,
127
- context: {
128
- incrementVersionCount: false
129
- },
130
- disableFormWhileProcessing: false,
131
- disableSuccessStatus: true,
132
- method,
133
- overrides: {
134
- _status: 'draft'
135
- },
136
- skipValidation: versionsConfig?.drafts && !versionsConfig?.drafts?.validate
137
- });
138
- if (result && result?.res?.ok && !mostRecentVersionIsAutosaved) {
139
- incrementVersionCount();
140
- setMostRecentVersionIsAutosaved(true);
141
- setUnpublishedVersionCount(prev => prev + 1);
129
+ if (url) {
130
+ if (modifiedRef.current) {
131
+ const {
132
+ data,
133
+ valid
134
+ } = reduceFieldsToValuesWithValidation(formStateRef.current, true);
135
+ data._status = 'draft';
136
+ const skipSubmission = submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate;
137
+ if (!skipSubmission) {
138
+ let res;
139
+ try {
140
+ res = await fetch(url, {
141
+ body: JSON.stringify(data),
142
+ credentials: 'include',
143
+ headers: {
144
+ 'Accept-Language': i18n.language,
145
+ 'Content-Type': 'application/json'
146
+ },
147
+ method
148
+ });
149
+ } catch (_err) {
150
+ // Swallow Error
151
+ }
152
+ const newDate = new Date();
153
+ // We need to log the time in order to figure out if we need to trigger the state off later
154
+ endTimestamp = newDate.getTime();
155
+ const json = await res.json();
156
+ if (res.status === 200) {
157
+ setLastUpdateTime(newDate.getTime());
158
+ reportUpdate({
159
+ id,
160
+ entitySlug,
161
+ updatedAt: newDate.toISOString()
162
+ });
163
+ // if onSaveFromDocumentDrawer is defined, call it
164
+ if (typeof onSaveFromDocumentDrawer === 'function') {
165
+ void onSaveFromDocumentDrawer({
166
+ ...json,
167
+ operation: 'update'
168
+ });
169
+ }
170
+ if (!mostRecentVersionIsAutosaved) {
171
+ incrementVersionCount();
172
+ setMostRecentVersionIsAutosaved(true);
173
+ setUnpublishedVersionCount(prev => prev + 1);
174
+ }
175
+ }
176
+ if (versionsConfig?.drafts && versionsConfig?.drafts?.validate && json?.errors) {
177
+ if (Array.isArray(json.errors)) {
178
+ const [fieldErrors, nonFieldErrors] = json.errors.reduce(([fieldErrs, nonFieldErrs], err) => {
179
+ const newFieldErrs = [];
180
+ const newNonFieldErrs = [];
181
+ if (err?.message) {
182
+ newNonFieldErrs.push(err);
183
+ }
184
+ if (Array.isArray(err?.data)) {
185
+ err.data.forEach(dataError => {
186
+ if (dataError?.field) {
187
+ newFieldErrs.push(dataError);
188
+ } else {
189
+ newNonFieldErrs.push(dataError);
190
+ }
191
+ });
192
+ }
193
+ return [[...fieldErrs, ...newFieldErrs], [...nonFieldErrs, ...newNonFieldErrs]];
194
+ }, [[], []]);
195
+ dispatchFields({
196
+ type: 'ADD_SERVER_ERRORS',
197
+ errors: fieldErrors
198
+ });
199
+ nonFieldErrors.forEach(err_0 => {
200
+ toast.error(err_0.message || i18n.t('error:unknown'));
201
+ });
202
+ setIsValid(false);
203
+ hideIndicator();
204
+ return;
205
+ }
206
+ } else {
207
+ // If it's not an error then we can update the document data inside the context
208
+ const document = json?.doc || json?.result;
209
+ // Manually update the data since this function doesn't fire the `submit` function from useForm
210
+ if (document) {
211
+ setIsValid(true);
212
+ updateSavedDocumentData(document);
213
+ }
214
+ }
215
+ hideIndicator();
216
+ }
142
217
  }
143
- const newDate = new Date();
144
- // We need to log the time in order to figure out if we need to trigger the state off later
145
- endTimestamp = newDate.getTime();
146
- hideIndicator();
147
218
  }
148
219
  }
149
220
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","reduceFieldsToValues","versionDefaults","React","useDeferredValue","useEffect","useRef","useState","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useEffectEvent","useQueues","useConfig","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","serverURL","docConfig","incrementVersionCount","lastUpdateTime","mostRecentVersionIsAutosaved","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","isValid","setBackgroundProcessing","submit","formState","modified","submitted","code","locale","i18n","t","versionsConfig","versions","interval","autosaveInterval","drafts","autosave","validateOnDraft","Boolean","validate","_saving","setSaving","saving","debouncedFormState","formStateRef","modifiedRef","localeRef","current","queueTask","autosaveTimeoutRef","handleAutosave","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","slug","valid","skipSubmission","result","acceptValues","overrideLocalChanges","action","context","disableFormWhileProcessing","disableSuccessStatus","overrides","_status","skipValidation","res","ok","prev","newDate","afterProcess","beforeProcess","didMount","previousDebouncedData","updatedAt","_","formData","__","prevFormData","clearTimeout","_jsxs","className","_jsx","Fragment","distance","date"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { reduceFieldsToValues, versionDefaults } from 'payload/shared'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueues } from '../../hooks/useQueues.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\nimport './index.scss'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const {\n docConfig,\n incrementVersionCount,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n } = useDocumentInfo()\n\n const { isValid, setBackgroundProcessing, submit } = useForm()\n\n const [formState] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const versionsConfig = docConfig?.versions\n let interval = versionDefaults.autosaveInterval\n\n if (versionsConfig.drafts && versionsConfig.drafts.autosave) {\n interval = versionsConfig.drafts.autosave.interval\n }\n\n const validateOnDraft = Boolean(\n docConfig?.versions?.drafts && docConfig?.versions?.drafts.validate,\n )\n\n const [_saving, setSaving] = useState(false)\n\n const saving = useDeferredValue(_saving)\n\n const debouncedFormState = useDebounce(formState, interval)\n\n const formStateRef = useRef(formState)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n formStateRef.current = formState\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n localeRef.current = locale\n\n const { queueTask } = useQueues()\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n queueTask(\n async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n const { valid } = reduceFieldsToValuesWithValidation(formStateRef.current, true)\n\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission && modifiedRef.current && url) {\n const result = await submit({\n acceptValues: {\n overrideLocalChanges: false,\n },\n action: url,\n context: {\n incrementVersionCount: false,\n },\n disableFormWhileProcessing: false,\n disableSuccessStatus: true,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: versionsConfig?.drafts && !versionsConfig?.drafts?.validate,\n })\n\n if (result && result?.res?.ok && !mostRecentVersionIsAutosaved) {\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n\n const newDate = new Date()\n\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n hideIndicator()\n }\n }\n },\n {\n afterProcess: () => {\n setBackgroundProcessing(false)\n },\n beforeProcess: () => {\n setBackgroundProcessing(true)\n },\n },\n )\n })\n\n const didMount = useRef(false)\n const previousDebouncedData = useRef(reduceFieldsToValues(debouncedFormState))\n\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n * Remove `updatedAt` from comparison as it changes on every autosave interval.\n */\n const { updatedAt: _, ...formData } = reduceFieldsToValues(debouncedFormState)\n const { updatedAt: __, ...prevFormData } = previousDebouncedData.current\n\n if (dequal(formData, prevFormData)) {\n return\n }\n\n previousDebouncedData.current = formData\n\n handleAutosave()\n }, [debouncedFormState])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <div className={baseClass}>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && t('general:saving')}\n {!saving && Boolean(lastUpdateTime) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastUpdateTime, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","reduceFieldsToValues","versionDefaults","React","useDeferredValue","useEffect","useRef","useState","toast","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useEffectEvent","useQueues","useConfig","useDocumentEvents","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","useDocumentDrawerContext","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","serverURL","docConfig","incrementVersionCount","lastUpdateTime","mostRecentVersionIsAutosaved","setLastUpdateTime","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","updateSavedDocumentData","onSave","onSaveFromDocumentDrawer","reportUpdate","dispatchFields","isValid","setBackgroundProcessing","setIsValid","formState","modified","submitted","code","locale","i18n","t","versionsConfig","versions","interval","autosaveInterval","drafts","autosave","validateOnDraft","Boolean","validate","_saving","setSaving","saving","debouncedFormState","formStateRef","modifiedRef","localeRef","current","queueTask","autosaveTimeoutRef","handleAutosave","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","slug","data","valid","_status","skipSubmission","res","fetch","body","JSON","stringify","credentials","headers","language","_err","newDate","json","status","updatedAt","toISOString","operation","prev","errors","Array","isArray","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","push","forEach","dataError","field","type","error","document","doc","result","afterProcess","beforeProcess","didMount","previousDebouncedData","_","formData","__","prevFormData","clearTimeout","_jsxs","className","_jsx","Fragment","distance","date"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { reduceFieldsToValues, versionDefaults } from 'payload/shared'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueues } from '../../hooks/useQueues.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { useDocumentDrawerContext } from '../DocumentDrawer/Provider.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\nimport './index.scss'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const {\n docConfig,\n incrementVersionCount,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromDocumentDrawer } = useDocumentDrawerContext()\n\n const { reportUpdate } = useDocumentEvents()\n const { dispatchFields, isValid, setBackgroundProcessing, setIsValid } = useForm()\n\n const [formState] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const versionsConfig = docConfig?.versions\n let interval = versionDefaults.autosaveInterval\n\n if (versionsConfig.drafts && versionsConfig.drafts.autosave) {\n interval = versionsConfig.drafts.autosave.interval\n }\n\n const validateOnDraft = Boolean(\n docConfig?.versions?.drafts && docConfig?.versions?.drafts.validate,\n )\n\n const [_saving, setSaving] = useState(false)\n\n const saving = useDeferredValue(_saving)\n\n const debouncedFormState = useDebounce(formState, interval)\n\n const formStateRef = useRef(formState)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n formStateRef.current = formState\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n localeRef.current = locale\n\n const { queueTask } = useQueues()\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n queueTask(\n async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n if (url) {\n if (modifiedRef.current) {\n const { data, valid } = reduceFieldsToValuesWithValidation(formStateRef.current, true)\n\n data._status = 'draft'\n\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission) {\n let res\n\n try {\n res = await fetch(url, {\n body: JSON.stringify(data),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method,\n })\n } catch (_err) {\n // Swallow Error\n }\n\n const newDate = new Date()\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n const json = await res.json()\n\n if (res.status === 200) {\n setLastUpdateTime(newDate.getTime())\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: newDate.toISOString(),\n })\n\n // if onSaveFromDocumentDrawer is defined, call it\n if (typeof onSaveFromDocumentDrawer === 'function') {\n void onSaveFromDocumentDrawer({\n ...json,\n operation: 'update',\n })\n }\n\n if (!mostRecentVersionIsAutosaved) {\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n }\n\n if (versionsConfig?.drafts && versionsConfig?.drafts?.validate && json?.errors) {\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\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 dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || i18n.t('error:unknown'))\n })\n\n setIsValid(false)\n hideIndicator()\n return\n }\n } else {\n // If it's not an error then we can update the document data inside the context\n const document = json?.doc || json?.result\n\n // Manually update the data since this function doesn't fire the `submit` function from useForm\n if (document) {\n setIsValid(true)\n updateSavedDocumentData(document)\n }\n }\n\n hideIndicator()\n }\n }\n }\n }\n },\n {\n afterProcess: () => {\n setBackgroundProcessing(false)\n },\n beforeProcess: () => {\n setBackgroundProcessing(true)\n },\n },\n )\n })\n\n const didMount = useRef(false)\n const previousDebouncedData = useRef(reduceFieldsToValues(debouncedFormState))\n\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n * Remove `updatedAt` from comparison as it changes on every autosave interval.\n */\n const { updatedAt: _, ...formData } = reduceFieldsToValues(debouncedFormState)\n const { updatedAt: __, ...prevFormData } = previousDebouncedData.current\n\n if (dequal(formData, prevFormData)) {\n return\n }\n\n previousDebouncedData.current = formData\n\n handleAutosave()\n }, [debouncedFormState])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <div className={baseClass}>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && t('general:saving')}\n {!saving && Boolean(lastUpdateTime) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastUpdateTime, i18n }),\n })}\n </React.Fragment>\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/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAezC,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,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,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,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,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,qBAsdnE;AAED,wBAAgB,eAAe,wBAE9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAezC,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,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,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,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,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,qBAqdnE;AAED,wBAAgB,eAAe,wBAE9B"}
@@ -104,7 +104,7 @@ export function FormsManagerProvider({
104
104
  const hasInitializedWithFiles = React.useRef(false);
105
105
  const initialStateRef = React.useRef(null);
106
106
  const getFormDataRef = React.useRef(() => ({}));
107
- const actionURL = `${serverURL}${api}/${collectionSlug}`;
107
+ const actionURL = `${api}/${collectionSlug}`;
108
108
  const initializeSharedDocPermissions = React.useCallback(async () => {
109
109
  const params = {
110
110
  locale: code || undefined
@@ -261,7 +261,6 @@ export function FormsManagerProvider({
261
261
  body: await createFormData(form_0.formState, overrides, collectionSlug, getUploadHandler({
262
262
  collectionSlug
263
263
  })),
264
- credentials: 'include',
265
264
  method: 'POST'
266
265
  });
267
266
  const json_0 = await req.json();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","qs","React","toast","fieldReducer","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","totalErrorCount","updateUploadEdits","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","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","setInitialFiles","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","i","errorCount","formID","formState","uploadEdits","files","length","isLoading","key","count","overrides","currentForms","newDocs","total","actionURLWithParams","addQueryPrefix","req","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","path","error","_","remainingForms","successCount","Math","max","success","acc","updatedFields","afterStateUpdate","Object","entries","value","newFormErrorCount","values","valid","resetUploadEdits","useEffect","_jsxs","_jsx","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n Data,\n DocumentSlots,\n FormState,\n SanitizedDocumentPermissions,\n UploadEdits,\n} 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 { 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 resetUploadEdits?: () => 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 totalErrorCount?: number\n readonly updateUploadEdits: (args: UploadEdits) => void\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 totalErrorCount: 0,\n updateUploadEdits: () => {},\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\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess, setInitialFiles } = 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 = `${serverURL}${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 formID: form.formID,\n formState: currentFormsData,\n uploadEdits: form.uploadEdits,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n if (forms.length) {\n // save the state of the current form before adding new files\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: getFormDataRef.current(),\n index: activeIndex,\n })\n }\n\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, activeIndex, forms],\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 formID: currentForms[activeIndex].formID,\n formState: currentFormsData,\n uploadEdits: currentForms[activeIndex].uploadEdits,\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 actionURLWithParams = `${actionURL}${qs.stringify(\n {\n uploadEdits: form?.uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n\n const req = await fetch(actionURLWithParams, {\n body: await createFormData(\n form.formState,\n overrides,\n collectionSlug,\n getUploadHandler({ collectionSlug }),\n ),\n credentials: 'include',\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 formID: currentForms[i].formID,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n\n if (req.status === 413 || req.status === 400) {\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 = []\n\n currentForms.forEach(({ errorCount }, i) => {\n if (errorCount) {\n remainingForms.push(currentForms[i])\n }\n })\n\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 if (remainingForms.length === 0) {\n setInitialFiles(undefined)\n }\n },\n [\n setInitialFiles,\n actionURL,\n collectionSlug,\n getUploadHandler,\n t,\n forms,\n activeIndex,\n closeModal,\n drawerSlug,\n onSuccess,\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 const updateUploadEdits = React.useCallback<FormsManagerContext['updateUploadEdits']>(\n (uploadEdits) => {\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: forms[activeIndex].formState,\n index: activeIndex,\n uploadEdits,\n })\n },\n [activeIndex, forms],\n )\n\n const resetUploadEdits = React.useCallback<FormsManagerContext['resetUploadEdits']>(() => {\n dispatch({\n type: 'REPLACE',\n state: {\n forms: forms.map((form) => ({\n ...form,\n uploadEdits: {},\n })),\n },\n })\n }, [forms])\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\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 resetUploadEdits,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n totalErrorCount,\n updateUploadEdits,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport function useFormsManager() {\n return React.use(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","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","totalErrorCount","updateUploadEdits","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","toggleLoadingOverlay","closeModal","drawerSlug","initialFiles","onSuccess","setInitialFiles","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","i","errorCount","formID","formState","uploadEdits","files","length","isLoading","key","count","overrides","currentForms","newDocs","total","actionURLWithParams","addQueryPrefix","req","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","Array","isArray","data","forEach","dataError","path","error","_","remainingForms","successCount","Math","max","success","acc","updatedFields","afterStateUpdate","Object","entries","value","newFormErrorCount","values","valid","resetUploadEdits","useEffect","_jsxs","_jsx","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n Data,\n DocumentSlots,\n FormState,\n SanitizedDocumentPermissions,\n UploadEdits,\n} 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 { 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 resetUploadEdits?: () => 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 totalErrorCount?: number\n readonly updateUploadEdits: (args: UploadEdits) => void\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 totalErrorCount: 0,\n updateUploadEdits: () => {},\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\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug, initialFiles, onSuccess, setInitialFiles } = 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 formID: form.formID,\n formState: currentFormsData,\n uploadEdits: form.uploadEdits,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n if (forms.length) {\n // save the state of the current form before adding new files\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: getFormDataRef.current(),\n index: activeIndex,\n })\n }\n\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, activeIndex, forms],\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 formID: currentForms[activeIndex].formID,\n formState: currentFormsData,\n uploadEdits: currentForms[activeIndex].uploadEdits,\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 actionURLWithParams = `${actionURL}${qs.stringify(\n {\n uploadEdits: form?.uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n\n const req = await fetch(actionURLWithParams, {\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 formID: currentForms[i].formID,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n\n if (req.status === 413 || req.status === 400) {\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 = []\n\n currentForms.forEach(({ errorCount }, i) => {\n if (errorCount) {\n remainingForms.push(currentForms[i])\n }\n })\n\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 if (remainingForms.length === 0) {\n setInitialFiles(undefined)\n }\n },\n [\n setInitialFiles,\n actionURL,\n collectionSlug,\n getUploadHandler,\n t,\n forms,\n activeIndex,\n closeModal,\n drawerSlug,\n onSuccess,\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 const updateUploadEdits = React.useCallback<FormsManagerContext['updateUploadEdits']>(\n (uploadEdits) => {\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: forms[activeIndex].formState,\n index: activeIndex,\n uploadEdits,\n })\n },\n [activeIndex, forms],\n )\n\n const resetUploadEdits = React.useCallback<FormsManagerContext['resetUploadEdits']>(() => {\n dispatch({\n type: 'REPLACE',\n state: {\n forms: forms.map((form) => ({\n ...form,\n uploadEdits: {},\n })),\n },\n })\n }, [forms])\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\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 resetUploadEdits,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n totalErrorCount,\n updateUploadEdits,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport function useFormsManager() {\n return React.use(Context)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIrD,MAAM,MAAM,KAAK,GAAG;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,SAAS,CAAA;QACpB,WAAW,CAAC,EAAE,WAAW,CAAA;KAC1B,EAAE,CAAA;IACH,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,KAAK,MAAM,GACP;IACE,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,oBAAoB,CAAA;CAC3B,GACD;IACE,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,aAAa,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,GACD;IACE,KAAK,EAAE,QAAQ,CAAA;IACf,YAAY,EAAE,SAAS,GAAG,IAAI,CAAA;IAC9B,IAAI,EAAE,WAAW,CAAA;CAClB,GACD;IACE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,aAAa,CAAA;CACpB,GACD;IACE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,kBAAkB,CAAA;CACzB,GACD;IACE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACrB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAEL,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CA+F1E"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErD,MAAM,MAAM,KAAK,GAAG;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,SAAS,CAAA;QACpB,WAAW,CAAC,EAAE,WAAW,CAAA;KAC1B,EAAE,CAAA;IACH,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,KAAK,MAAM,GACP;IACE,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,oBAAoB,CAAA;CAC3B,GACD;IACE,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,aAAa,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,GACD;IACE,KAAK,EAAE,QAAQ,CAAA;IACf,YAAY,EAAE,SAAS,GAAG,IAAI,CAAA;IAC9B,IAAI,EAAE,WAAW,CAAA;CAClB,GACD;IACE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,aAAa,CAAA;CACpB,GACD;IACE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,kBAAkB,CAAA;CACzB,GACD;IACE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACrB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAEL,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CA+F1E"}
@@ -1,4 +1,3 @@
1
- import { v4 as uuidv4 } from 'uuid';
2
1
  export function formsManagementReducer(state, action) {
3
2
  switch (action.type) {
4
3
  case 'ADD_FORMS':
@@ -7,7 +6,7 @@ export function formsManagementReducer(state, action) {
7
6
  for (let i = 0; i < action.files.length; i++) {
8
7
  newForms[i] = {
9
8
  errorCount: 0,
10
- formID: crypto.randomUUID ? crypto.randomUUID() : uuidv4(),
9
+ formID: crypto.randomUUID(),
11
10
  formState: {
12
11
  ...(action.initialState || {}),
13
12
  file: {
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.js","names":["v4","uuidv4","formsManagementReducer","state","action","type","newForms","i","files","length","errorCount","formID","crypto","randomUUID","formState","initialState","file","initialValue","valid","value","uploadEdits","activeIndex","forms","remainingFormStates","removedForm","splice","index","affectedByShift","nextIndex","boundedActiveIndex","Math","min","totalErrorCount","count","reduce","acc","form","updatedForms"],"sources":["../../../../src/elements/BulkUpload/FormsManager/reducer.ts"],"sourcesContent":["import type { FormState, UploadEdits } from 'payload'\n\nimport { v4 as uuidv4 } from 'uuid'\n\nexport type State = {\n activeIndex: number\n forms: {\n errorCount: number\n formID: string\n formState: FormState\n uploadEdits?: UploadEdits\n }[]\n totalErrorCount: number\n}\n\ntype Action =\n | {\n count: number\n index: number\n type: 'UPDATE_ERROR_COUNT'\n }\n | {\n errorCount: number\n formState: FormState\n index: number\n type: 'UPDATE_FORM'\n updatedFields?: Record<string, unknown>\n uploadEdits?: UploadEdits\n }\n | {\n files: FileList\n initialState: FormState | null\n type: 'ADD_FORMS'\n }\n | {\n index: number\n type: 'REMOVE_FORM'\n }\n | {\n index: number\n type: 'SET_ACTIVE_INDEX'\n }\n | {\n state: Partial<State>\n type: 'REPLACE'\n }\n\nexport function formsManagementReducer(state: State, action: Action): State {\n switch (action.type) {\n case 'ADD_FORMS': {\n const newForms: State['forms'] = []\n for (let i = 0; i < action.files.length; i++) {\n newForms[i] = {\n errorCount: 0,\n formID: crypto.randomUUID ? crypto.randomUUID() : uuidv4(),\n formState: {\n ...(action.initialState || {}),\n file: {\n initialValue: action.files[i],\n valid: true,\n value: action.files[i],\n },\n },\n uploadEdits: {},\n }\n }\n\n return {\n ...state,\n activeIndex: 0,\n forms: [...newForms, ...state.forms],\n }\n }\n case 'REMOVE_FORM': {\n const remainingFormStates = [...state.forms]\n const [removedForm] = remainingFormStates.splice(action.index, 1)\n\n const affectedByShift = state.activeIndex >= action.index\n const nextIndex =\n state.activeIndex === action.index\n ? action.index\n : affectedByShift\n ? state.activeIndex - 1\n : state.activeIndex\n const boundedActiveIndex = Math.min(remainingFormStates.length - 1, nextIndex)\n\n return {\n ...state,\n activeIndex: affectedByShift ? boundedActiveIndex : state.activeIndex,\n forms: remainingFormStates,\n totalErrorCount: state.totalErrorCount - removedForm.errorCount,\n }\n }\n case 'REPLACE': {\n return {\n ...state,\n ...action.state,\n }\n }\n case 'SET_ACTIVE_INDEX': {\n return {\n ...state,\n activeIndex: action.index,\n }\n }\n case 'UPDATE_ERROR_COUNT': {\n const forms = [...state.forms]\n forms[action.index].errorCount = action.count\n\n return {\n ...state,\n forms,\n totalErrorCount: state.forms.reduce((acc, form) => acc + form.errorCount, 0),\n }\n }\n case 'UPDATE_FORM': {\n const updatedForms = [...state.forms]\n updatedForms[action.index].errorCount = action.errorCount\n\n // Merge the existing formState with the new formState\n updatedForms[action.index] = {\n ...updatedForms[action.index],\n formState: {\n ...updatedForms[action.index].formState,\n ...action.formState,\n },\n uploadEdits: {\n ...updatedForms[action.index].uploadEdits,\n ...action.uploadEdits,\n },\n }\n\n return {\n ...state,\n forms: updatedForms,\n totalErrorCount: state.forms.reduce((acc, form) => acc + form.errorCount, 0),\n }\n }\n default: {\n return state\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"reducer.js","names":["formsManagementReducer","state","action","type","newForms","i","files","length","errorCount","formID","crypto","randomUUID","formState","initialState","file","initialValue","valid","value","uploadEdits","activeIndex","forms","remainingFormStates","removedForm","splice","index","affectedByShift","nextIndex","boundedActiveIndex","Math","min","totalErrorCount","count","reduce","acc","form","updatedForms"],"sources":["../../../../src/elements/BulkUpload/FormsManager/reducer.ts"],"sourcesContent":["import type { FormState, UploadEdits } from 'payload'\n\nexport type State = {\n activeIndex: number\n forms: {\n errorCount: number\n formID: string\n formState: FormState\n uploadEdits?: UploadEdits\n }[]\n totalErrorCount: number\n}\n\ntype Action =\n | {\n count: number\n index: number\n type: 'UPDATE_ERROR_COUNT'\n }\n | {\n errorCount: number\n formState: FormState\n index: number\n type: 'UPDATE_FORM'\n updatedFields?: Record<string, unknown>\n uploadEdits?: UploadEdits\n }\n | {\n files: FileList\n initialState: FormState | null\n type: 'ADD_FORMS'\n }\n | {\n index: number\n type: 'REMOVE_FORM'\n }\n | {\n index: number\n type: 'SET_ACTIVE_INDEX'\n }\n | {\n state: Partial<State>\n type: 'REPLACE'\n }\n\nexport function formsManagementReducer(state: State, action: Action): State {\n switch (action.type) {\n case 'ADD_FORMS': {\n const newForms: State['forms'] = []\n for (let i = 0; i < action.files.length; i++) {\n newForms[i] = {\n errorCount: 0,\n formID: crypto.randomUUID(),\n formState: {\n ...(action.initialState || {}),\n file: {\n initialValue: action.files[i],\n valid: true,\n value: action.files[i],\n },\n },\n uploadEdits: {},\n }\n }\n\n return {\n ...state,\n activeIndex: 0,\n forms: [...newForms, ...state.forms],\n }\n }\n case 'REMOVE_FORM': {\n const remainingFormStates = [...state.forms]\n const [removedForm] = remainingFormStates.splice(action.index, 1)\n\n const affectedByShift = state.activeIndex >= action.index\n const nextIndex =\n state.activeIndex === action.index\n ? action.index\n : affectedByShift\n ? state.activeIndex - 1\n : state.activeIndex\n const boundedActiveIndex = Math.min(remainingFormStates.length - 1, nextIndex)\n\n return {\n ...state,\n activeIndex: affectedByShift ? boundedActiveIndex : state.activeIndex,\n forms: remainingFormStates,\n totalErrorCount: state.totalErrorCount - removedForm.errorCount,\n }\n }\n case 'REPLACE': {\n return {\n ...state,\n ...action.state,\n }\n }\n case 'SET_ACTIVE_INDEX': {\n return {\n ...state,\n activeIndex: action.index,\n }\n }\n case 'UPDATE_ERROR_COUNT': {\n const forms = [...state.forms]\n forms[action.index].errorCount = action.count\n\n return {\n ...state,\n forms,\n totalErrorCount: state.forms.reduce((acc, form) => acc + form.errorCount, 0),\n }\n }\n case 'UPDATE_FORM': {\n const updatedForms = [...state.forms]\n updatedForms[action.index].errorCount = action.errorCount\n\n // Merge the existing formState with the new formState\n updatedForms[action.index] = {\n ...updatedForms[action.index],\n formState: {\n ...updatedForms[action.index].formState,\n ...action.formState,\n },\n uploadEdits: {\n ...updatedForms[action.index].uploadEdits,\n ...action.uploadEdits,\n },\n }\n\n return {\n ...state,\n forms: updatedForms,\n totalErrorCount: state.forms.reduce((acc, form) => acc + form.errorCount, 0),\n }\n }\n default: {\n return state\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,11 +16,6 @@ export type DocumentDrawerContextProps = {
16
16
  }) => Promise<void> | void;
17
17
  readonly onSave?: (args: {
18
18
  collectionConfig?: ClientCollectionConfig;
19
- /**
20
- * @experimental - Note: this property is experimental and may change in the future. Use as your own discretion.
21
- * If you want to pass additional data to the onSuccess callback, you can use this context object.
22
- */
23
- context?: Record<string, unknown>;
24
19
  doc: TypeWithID;
25
20
  operation: 'create' | 'update';
26
21
  result: Data;
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIlF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QACzB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,GAAG,EAAE,UAAU,CAAA;KAChB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjC,GAAG,EAAE,UAAU,CAAA;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;QAC9B,MAAM,EAAE,IAAI,CAAA;KACb,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,EAAE,GAAG,0BAA0B,CAAA;AAEvE,eAAO,MAAM,8BAA8B,qDAAiD,CAAA;AAE5F,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAClD;IACE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,GAAG,0BAA0B,CAG/B,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,yBAQ3C,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIlF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QACzB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,GAAG,EAAE,UAAU,CAAA;KAChB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,GAAG,EAAE,UAAU,CAAA;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;QAC9B,MAAM,EAAE,IAAI,CAAA;KACb,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,EAAE,GAAG,0BAA0B,CAAA;AAEvE,eAAO,MAAM,8BAA8B,qDAAiD,CAAA;AAE5F,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAClD;IACE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,GAAG,0BAA0B,CAG/B,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,yBAQ3C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","names":["createContext","use","DocumentDrawerCallbacksContext","DocumentDrawerContextProvider","children","rest","_jsx","value","useDocumentDrawerContext","context","Error"],"sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"sourcesContent":["import type { ClientCollectionConfig, Data, FormState, TypeWithID } from 'payload'\n\nimport { createContext, use } from 'react'\n\nexport type DocumentDrawerContextProps = {\n readonly clearDoc?: () => void\n readonly drawerSlug: string\n readonly onDelete?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n /* only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n }) => Promise<void> | void\n readonly onRestore?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n readonly onSave?: (args: {\n collectionConfig?: ClientCollectionConfig\n /**\n * @experimental - Note: this property is experimental and may change in the future. Use as your own discretion.\n * If you want to pass additional data to the onSuccess callback, you can use this context object.\n */\n context?: Record<string, unknown>\n doc: TypeWithID\n operation: 'create' | 'update'\n result: Data\n }) => Promise<FormState | void> | void\n}\n\nexport type DocumentDrawerContextType = {} & DocumentDrawerContextProps\n\nexport const DocumentDrawerCallbacksContext = createContext({} as DocumentDrawerContextType)\n\nexport const DocumentDrawerContextProvider: React.FC<\n {\n children: React.ReactNode\n } & DocumentDrawerContextProps\n> = ({ children, ...rest }) => {\n return <DocumentDrawerCallbacksContext value={rest}>{children}</DocumentDrawerCallbacksContext>\n}\n\nexport const useDocumentDrawerContext = (): DocumentDrawerContextType => {\n const context = use(DocumentDrawerCallbacksContext)\n\n if (!context) {\n throw new Error('useDocumentDrawerContext must be used within a DocumentDrawerProvider')\n }\n\n return context\n}\n"],"mappings":";AAEA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AAiCnC,OAAO,MAAMC,8BAAA,gBAAiCF,aAAA,CAAc,CAAC;AAE7D,OAAO,MAAMG,6BAAA,GAITA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAA,CAAM;EACxB,oBAAOC,IAAA,CAACJ,8BAAA;IAA+BK,KAAA,EAAOF,IAAA;cAAOD;;AACvD;AAEA,OAAO,MAAMI,wBAAA,GAA2BA,CAAA;EACtC,MAAMC,OAAA,GAAUR,GAAA,CAAIC,8BAAA;EAEpB,IAAI,CAACO,OAAA,EAAS;IACZ,MAAM,IAAIC,KAAA,CAAM;EAClB;EAEA,OAAOD,OAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"Provider.js","names":["createContext","use","DocumentDrawerCallbacksContext","DocumentDrawerContextProvider","children","rest","_jsx","value","useDocumentDrawerContext","context","Error"],"sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"sourcesContent":["import type { ClientCollectionConfig, Data, FormState, TypeWithID } from 'payload'\n\nimport { createContext, use } from 'react'\n\nexport type DocumentDrawerContextProps = {\n readonly clearDoc?: () => void\n readonly drawerSlug: string\n readonly onDelete?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n /* only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n }) => Promise<void> | void\n readonly onRestore?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n readonly onSave?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n operation: 'create' | 'update'\n result: Data\n }) => Promise<FormState | void> | void\n}\n\nexport type DocumentDrawerContextType = {} & DocumentDrawerContextProps\n\nexport const DocumentDrawerCallbacksContext = createContext({} as DocumentDrawerContextType)\n\nexport const DocumentDrawerContextProvider: React.FC<\n {\n children: React.ReactNode\n } & DocumentDrawerContextProps\n> = ({ children, ...rest }) => {\n return <DocumentDrawerCallbacksContext value={rest}>{children}</DocumentDrawerCallbacksContext>\n}\n\nexport const useDocumentDrawerContext = (): DocumentDrawerContextType => {\n const context = use(DocumentDrawerCallbacksContext)\n\n if (!context) {\n throw new Error('useDocumentDrawerContext must be used within a DocumentDrawerProvider')\n }\n\n return context\n}\n"],"mappings":";AAEA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AA4BnC,OAAO,MAAMC,8BAAA,gBAAiCF,aAAA,CAAc,CAAC;AAE7D,OAAO,MAAMG,6BAAA,GAITA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAA,CAAM;EACxB,oBAAOC,IAAA,CAACJ,8BAAA;IAA+BK,KAAA,EAAOF,IAAA;cAAOD;;AACvD;AAEA,OAAO,MAAMI,wBAAA,GAA2BA,CAAA;EACtC,MAAMC,OAAA,GAAUR,GAAA,CAAIC,8BAAA;EAEpB,IAAI,CAACO,OAAA,EAAS;IACZ,MAAM,IAAIC,KAAA,CAAM;EAClB;EAEA,OAAOD,OAAA;AACT","ignoreList":[]}
@@ -125,7 +125,6 @@
125
125
 
126
126
  &--force-sidebar-wrap {
127
127
  display: block;
128
- isolation: isolate;
129
128
 
130
129
  .document-fields {
131
130
  &__main {
@@ -1,6 +1,6 @@
1
1
  import type { QueryPreset } from 'payload';
2
2
  import './index.scss';
3
- export declare function QueryPresetToggler({ activePreset, openPresetListDrawer, resetPreset, }: {
3
+ export declare function ActiveQueryPreset({ activePreset, openPresetListDrawer, resetPreset, }: {
4
4
  activePreset: QueryPreset;
5
5
  openPresetListDrawer: () => void;
6
6
  resetPreset: () => Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListControls/ActiveQueryPreset/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAS1C,OAAO,cAAc,CAAA;AAIrB,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,oBAAoB,EACpB,WAAW,GACZ,EAAE;IACD,YAAY,EAAE,WAAW,CAAA;IACzB,oBAAoB,EAAE,MAAM,IAAI,CAAA;IAChC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACjC,+BAiDA"}