@payloadcms/ui 4.0.0-beta.1 → 4.0.0-beta.3
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/css/preflight.css +21 -2
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +1 -34
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.js +27 -19
- package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +6 -2
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.css +35 -25
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentFields/index.css +2 -2
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/LivePreview/Window/index.css +7 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/SegmentedControl/index.css +50 -7
- package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +6 -1
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-S7MOGZSR.js → CodeEditor-I6PL55BF.js} +2 -2
- package/dist/exports/client/{DatePicker-POZJVQP4.js → DatePicker-RFCB5VGD.js} +2 -2
- package/dist/exports/client/{chunk-2AY67NFV.js → chunk-O2RR6XEH.js} +2 -2
- package/dist/exports/client/chunk-O2RR6XEH.js.map +7 -0
- package/dist/exports/client/{chunk-Z42OBP5U.js → chunk-R7M6BG75.js} +1 -1
- package/dist/exports/client/{chunk-Z42OBP5U.js.map → chunk-R7M6BG75.js.map} +1 -1
- package/dist/exports/client/index.js +15 -15
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +3 -1
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/Form/reduceToSerializableFields.d.ts +9 -4
- package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
- package/dist/forms/Form/reduceToSerializableFields.js +34 -7
- package/dist/forms/Form/reduceToSerializableFields.js.map +1 -1
- package/dist/icons/Table/index.css +5 -1
- package/dist/layouts/Root/index.d.ts +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +4 -15
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/RouteCache/index.d.ts.map +1 -1
- package/dist/providers/RouteCache/index.js +37 -25
- package/dist/providers/RouteCache/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +34 -23
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/styles.css +22 -3
- package/dist/templates/Default/index.css +0 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +32 -6
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.d.ts +8 -2
- package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.js +11 -1
- package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
- package/dist/utilities/getHasScheduledPublish.js.map +1 -1
- package/dist/utilities/handleLivePreview.js.map +1 -1
- package/dist/utilities/handleServerFunctions.d.ts +2 -10
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
- package/dist/utilities/handleServerFunctions.js +3 -7
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/utilities/hasSavePermission.js.map +1 -1
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts +2 -7
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +2 -7
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +1 -1
- package/dist/widgets/RecentlyViewed/getDocuments.js +4 -1
- package/dist/widgets/RecentlyViewed/getDocuments.js.map +1 -1
- package/dist/widgets/RecentlyViewed/index.client.d.ts.map +1 -1
- package/dist/widgets/RecentlyViewed/index.client.js +7 -2
- package/dist/widgets/RecentlyViewed/index.client.js.map +1 -1
- package/package.json +16 -16
- package/dist/exports/client/chunk-2AY67NFV.js.map +0 -7
- /package/dist/exports/client/{CodeEditor-S7MOGZSR.js.map → CodeEditor-I6PL55BF.js.map} +0 -0
- /package/dist/exports/client/{DatePicker-POZJVQP4.js.map → DatePicker-RFCB5VGD.js.map} +0 -0
package/dist/css/preflight.css
CHANGED
|
@@ -59,7 +59,16 @@ SOFTWARE.
|
|
|
59
59
|
line-height: 1.5; /* 1 */
|
|
60
60
|
-webkit-text-size-adjust: 100%; /* 2 */
|
|
61
61
|
tab-size: 4; /* 3 */
|
|
62
|
-
font-family: var(
|
|
62
|
+
font-family: var(
|
|
63
|
+
--font-family-sans,
|
|
64
|
+
ui-sans-serif,
|
|
65
|
+
system-ui,
|
|
66
|
+
sans-serif,
|
|
67
|
+
'Apple Color Emoji',
|
|
68
|
+
'Segoe UI Emoji',
|
|
69
|
+
'Segoe UI Symbol',
|
|
70
|
+
'Noto Color Emoji'
|
|
71
|
+
); /* 4 */
|
|
63
72
|
font-feature-settings: normal; /* 5 */
|
|
64
73
|
font-variation-settings: normal; /* 6 */
|
|
65
74
|
-webkit-tap-highlight-color: transparent; /* 7 */
|
|
@@ -130,7 +139,17 @@ SOFTWARE.
|
|
|
130
139
|
kbd,
|
|
131
140
|
samp,
|
|
132
141
|
pre {
|
|
133
|
-
font-family: var(
|
|
142
|
+
font-family: var(
|
|
143
|
+
--font-family-mono,
|
|
144
|
+
ui-monospace,
|
|
145
|
+
SFMono-Regular,
|
|
146
|
+
Menlo,
|
|
147
|
+
Monaco,
|
|
148
|
+
Consolas,
|
|
149
|
+
'Liberation Mono',
|
|
150
|
+
'Courier New',
|
|
151
|
+
monospace
|
|
152
|
+
); /* 1 */
|
|
134
153
|
font-feature-settings: normal; /* 2 */
|
|
135
154
|
font-variation-settings: normal; /* 3 */
|
|
136
155
|
font-size: 1em; /* 4 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,IAAI,EACJ,aAAa,EACb,SAAS,EAET,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAiBzC,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,OAAO,CAAC,CAAA;IAC3D,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,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,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;AA8BD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAChC,CAAC,CAAA;AAEF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,IAAI,EACJ,aAAa,EACb,SAAS,EAET,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAiBzC,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,OAAO,CAAC,CAAA;IAC3D,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,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,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;AA8BD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAChC,CAAC,CAAA;AAEF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAkwBnE;AAED,wBAAgB,eAAe,wBAE9B"}
|
|
@@ -444,20 +444,6 @@ export function FormsManagerProvider({
|
|
|
444
444
|
const missingFilename = fileValue && typeof fileValue === 'object' && 'name' in fileValue && (!fileValue.name || fileValue.name === '');
|
|
445
445
|
if (missingFile || exceedsLimit || missingFilename) {
|
|
446
446
|
currentForms_0[i_0].formState.file.valid = false;
|
|
447
|
-
// File/Blob objects cannot be serialized via the RSC flight protocol,
|
|
448
|
-
// so replace with a plain object before calling the server function.
|
|
449
|
-
const originalFileValue = currentForms_0[i_0].formState.file?.value;
|
|
450
|
-
const formStateForServer = {
|
|
451
|
-
...currentForms_0[i_0].formState
|
|
452
|
-
};
|
|
453
|
-
if (originalFileValue instanceof File) {
|
|
454
|
-
formStateForServer.file = {
|
|
455
|
-
...formStateForServer.file,
|
|
456
|
-
value: {
|
|
457
|
-
name: originalFileValue.name
|
|
458
|
-
}
|
|
459
|
-
};
|
|
460
|
-
}
|
|
461
447
|
// Need to get the field state to extract count since field errors
|
|
462
448
|
// are not returned when file is missing or exceeds limit
|
|
463
449
|
const {
|
|
@@ -466,17 +452,11 @@ export function FormsManagerProvider({
|
|
|
466
452
|
collectionSlug,
|
|
467
453
|
docPermissions,
|
|
468
454
|
docPreferences: null,
|
|
469
|
-
formState:
|
|
455
|
+
formState: currentForms_0[i_0].formState,
|
|
470
456
|
operation: 'update',
|
|
471
457
|
schemaPath: collectionSlug
|
|
472
458
|
});
|
|
473
459
|
if (newState) {
|
|
474
|
-
if (originalFileValue instanceof File && newState.file) {
|
|
475
|
-
newState.file = {
|
|
476
|
-
...newState.file,
|
|
477
|
-
value: originalFileValue
|
|
478
|
-
};
|
|
479
|
-
}
|
|
480
460
|
currentForms_0[i_0] = {
|
|
481
461
|
errorCount: Object.values(newState).reduce((acc, value) => value?.valid === false ? acc + 1 : acc, 0),
|
|
482
462
|
formID: currentForms_0[i_0].formID,
|
|
@@ -576,13 +556,6 @@ export function FormsManagerProvider({
|
|
|
576
556
|
afterStateUpdate();
|
|
577
557
|
}
|
|
578
558
|
if (hasSubmitted) {
|
|
579
|
-
// File/Blob objects cannot be serialized across the server-function
|
|
580
|
-
// boundary (RSC flight / TanStack seroval), so the `file` value is
|
|
581
|
-
// dropped during the `getFormState` round-trip. Capture it first and
|
|
582
|
-
// re-attach it afterwards so the file survives — mirroring the
|
|
583
|
-
// save-retry path below; without this the next save omits the file
|
|
584
|
-
// entirely and the server responds "No files were uploaded".
|
|
585
|
-
const originalFileValue_0 = forms[i_3].formState.file?.value;
|
|
586
559
|
const {
|
|
587
560
|
state: state_0
|
|
588
561
|
} = await getFormState({
|
|
@@ -593,12 +566,6 @@ export function FormsManagerProvider({
|
|
|
593
566
|
operation: 'create',
|
|
594
567
|
schemaPath: collectionSlug
|
|
595
568
|
});
|
|
596
|
-
if (originalFileValue_0 instanceof File && state_0.file) {
|
|
597
|
-
state_0.file = {
|
|
598
|
-
...state_0.file,
|
|
599
|
-
value: originalFileValue_0
|
|
600
|
-
};
|
|
601
|
-
}
|
|
602
569
|
const newFormErrorCount = Object.values(state_0).reduce((acc_2, value_1) => value_1?.valid === false ? acc_2 + 1 : acc_2, 0);
|
|
603
570
|
dispatch({
|
|
604
571
|
type: 'UPDATE_FORM',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","formatAdminURL","validateMimeType","qs","React","toast","fieldReducer","useEffectEvent","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","FieldErrorsToast","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","changeCollectionSlug","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","totalErrorCount","updateUploadEdits","initialState","FormsManagerProvider","children","config","getEntityConfig","routes","api","locale","code","i18n","t","getDocumentSlots","getFormState","getUploadHandler","setDocumentSlots","useState","setHasSubmitted","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","toggleLoadingOverlay","closeModal","initialFiles","initialForms","modalSlug","drawerSlug","onSuccess","parentID","selectableCollections","setCollectionSlug","setInitialFiles","setInitialForms","setSuccessfullyUploaded","collectionConfig","folderFieldName","hierarchy","parentFieldName","isUploading","setIsUploading","loadingText","setLoadingText","hasInitializedWithFiles","initialStateRef","initializedStateCollectionSlugRef","initializedPermissionsCollectionSlugRef","currentCollectionSlugRef","pendingCollectionChangeRef","collectionFormsCacheRef","useCallback","slug","includes","mimeTypes","upload","length","some","formState","file","value","File","type","error","activeFormState","currentForms","map","form","index","actionURL","apiRoute","path","initializeSharedDocPermissions","params","docAccessPath","stringify","res","fetch","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","docPreferences","fields","operation","renderAllFields","schemaPath","skipValidation","customComponents","Field","_err","currentFormsData","i","errorCount","formID","uploadEdits","applyFolderToState","baseState","initialValue","files","acceptedFiles","Array","from","filter","isLoading","key","initialFormState","addFilesEffectEvent","addInitialForms","count","overrides","activeFormID","newDocs","fileValue","total","actionURLWithParams","addQueryPrefix","req","collections","find","allowRestrictedFileTypes","wasSuccessful","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","isArray","data","forEach","dataError","missingFile","exceedsLimit","missingFilename","name","valid","originalFileValue","formStateForServer","newState","Object","values","acc","_jsx","errorMessage","_","remainingForms","successCount","Math","max","success","updatedFields","afterStateUpdate","entries","newFormErrorCount","resetUploadEdits","useEffect","previousForms","nextTemplate","cachedForms","cachedForm","field","previousField","_jsxs","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n CollectionSlug,\n Data,\n DocumentSlots,\n FormState,\n JsonObject,\n SanitizedDocumentPermissions,\n UploadEdits,\n} from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL, validateMimeType } from 'payload/shared'\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 { useEffectEvent } from '../../../hooks/useEffectEvent.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 { FieldErrorsToast } from '../../Toasts/fieldErrors.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<boolean>\n readonly bulkUpdateForm: (\n updatedFields: Record<string, unknown>,\n afterStateUpdate?: () => void,\n ) => Promise<void>\n readonly changeCollectionSlug: (slug: string) => 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(false),\n bulkUpdateForm: () => null,\n changeCollectionSlug: () => 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\nexport type InitialForms = Array<{\n file: File\n formID?: string\n initialState?: FormState | null\n}>\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\n\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config, getEntityConfig } = useConfig()\n const {\n routes: { api },\n } = config\n const locale = useLocale()\n const code = locale?.code\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 {\n collectionSlug,\n initialFiles,\n initialForms,\n modalSlug: drawerSlug,\n onSuccess,\n parentID,\n selectableCollections,\n setCollectionSlug,\n setInitialFiles,\n setInitialForms,\n setSuccessfullyUploaded,\n } = useBulkUpload()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const folderFieldName = collectionConfig?.hierarchy\n ? collectionConfig.hierarchy.parentFieldName\n : undefined\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 initializedStateCollectionSlugRef = React.useRef<string | undefined>(undefined)\n const initializedPermissionsCollectionSlugRef = React.useRef<string | undefined>(undefined)\n const currentCollectionSlugRef = React.useRef(collectionSlug)\n currentCollectionSlugRef.current = collectionSlug\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n const pendingCollectionChangeRef = React.useRef<{\n forms: State['forms']\n slug: string\n }>(null)\n const collectionFormsCacheRef = React.useRef<Record<string, State['forms']>>({})\n\n const changeCollectionSlug = React.useCallback<FormsManagerContext['changeCollectionSlug']>(\n (slug) => {\n if (slug === collectionSlug || isInitializing || !selectableCollections?.includes(slug)) {\n return\n }\n\n const mimeTypes = getEntityConfig({ collectionSlug: slug })?.upload?.mimeTypes\n if (\n mimeTypes?.length &&\n forms.some(({ formState }) => {\n const file = formState?.file?.value\n return file instanceof File && !validateMimeType(file.type, mimeTypes)\n })\n ) {\n toast.error(t('error:invalidFileType'))\n return\n }\n\n const activeFormState = getFormDataRef.current()\n const currentForms = forms.map((form, index) =>\n index === activeIndex ? { ...form, formState: activeFormState } : form,\n )\n collectionFormsCacheRef.current[collectionSlug] = currentForms\n pendingCollectionChangeRef.current = {\n slug,\n forms: currentForms,\n }\n setIsInitializing(true)\n setHasInitializedState(false)\n setHasInitializedDocPermissions(false)\n setHasSavePermission(false)\n setHasPublishPermission(false)\n setCollectionSlug(slug)\n },\n [\n activeIndex,\n collectionSlug,\n forms,\n getEntityConfig,\n isInitializing,\n selectableCollections,\n setCollectionSlug,\n t,\n ],\n )\n\n const actionURL = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}`,\n })\n\n const initializeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessPath: `/${string}/access?${string}` = `/${collectionSlug}/access?${qs.stringify(params)}`\n const res = await fetch(formatAdminURL({ apiRoute: api, path: docAccessPath }), {\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 formatAdminURL({ apiRoute: api, path: docAccessPath }),\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 if (currentCollectionSlugRef.current !== collectionSlug) {\n return\n }\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 initializedPermissionsCollectionSlugRef.current = collectionSlug\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language])\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\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n collectionSlug,\n docPermissions:\n initializedPermissionsCollectionSlugRef.current === collectionSlug\n ? docPermissions\n : undefined,\n docPreferences: { fields: {} },\n locale: code,\n operation: 'create',\n renderAllFields: true,\n schemaPath: collectionSlug,\n skipValidation: true,\n })\n\n if (folderFieldName && formStateWithoutFiles?.[folderFieldName]) {\n formStateWithoutFiles[folderFieldName] = {\n ...formStateWithoutFiles[folderFieldName],\n customComponents: {\n ...formStateWithoutFiles[folderFieldName].customComponents,\n Field: undefined,\n },\n }\n }\n\n if (currentCollectionSlugRef.current !== collectionSlug) {\n return null\n }\n\n setDocumentSlots(documentSlots)\n initialStateRef.current = formStateWithoutFiles\n initializedStateCollectionSlugRef.current = collectionSlug\n setHasInitializedState(true)\n return formStateWithoutFiles\n } catch (_err) {\n // swallow error\n return null\n }\n },\n [getDocumentSlots, collectionSlug, getFormState, docPermissions, code, folderFieldName],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n\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 applyFolderToState = React.useCallback(\n (baseState: FormState | null): FormState | null => {\n if (parentID && folderFieldName && baseState?.[folderFieldName]) {\n return {\n ...baseState,\n [folderFieldName]: {\n ...baseState[folderFieldName],\n initialValue: parentID,\n value: parentID,\n },\n }\n }\n return baseState\n },\n [parentID, folderFieldName],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n const mimeTypes = getEntityConfig({ collectionSlug })?.upload?.mimeTypes\n const acceptedFiles = Array.from(files).filter(\n (file) => !mimeTypes?.length || validateMimeType(file.type, mimeTypes),\n )\n if (acceptedFiles.length !== files.length) {\n toast.error(t('error:invalidFileType'))\n }\n if (!acceptedFiles.length) {\n return false\n }\n\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 let initialFormState = initialStateRef.current\n if (initializedStateCollectionSlugRef.current !== collectionSlug) {\n initialFormState = await initializeSharedFormState()\n }\n if (currentCollectionSlugRef.current !== collectionSlug || !initialFormState) {\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n return false\n }\n dispatch({\n type: 'ADD_FORMS',\n forms: acceptedFiles.map((file) => ({\n file,\n initialState: applyFolderToState(initialFormState),\n })),\n })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n return true\n },\n [\n initializeSharedFormState,\n collectionSlug,\n toggleLoadingOverlay,\n activeIndex,\n forms,\n applyFolderToState,\n getEntityConfig,\n t,\n ],\n )\n\n const addFilesEffectEvent = useEffectEvent(addFiles)\n\n const addInitialForms = useEffectEvent(async (initialForms: InitialForms) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n\n let initialFormState = initialStateRef.current\n if (initializedStateCollectionSlugRef.current !== collectionSlug) {\n initialFormState = await initializeSharedFormState()\n }\n if (currentCollectionSlugRef.current !== collectionSlug || !initialFormState) {\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n return\n }\n\n dispatch({\n type: 'ADD_FORMS',\n forms: initialForms.map((form) => ({\n ...form,\n initialState: applyFolderToState(form?.initialState || initialFormState),\n })),\n })\n\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\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 activeFormID = currentForms[activeIndex]?.formID\n const newDocs: Array<{\n collectionSlug: CollectionSlug\n doc: JsonObject\n /**\n * ID of the form that created this document\n */\n formID: string\n }> = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n const fileValue = form.formState?.file?.value\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const actionURLWithParams = `${actionURL}${qs.stringify(\n {\n locale: code,\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 getUploadHandler({ collectionSlug }),\n config.collections.find(({ slug }) => slug === collectionSlug)?.upload\n ?.allowRestrictedFileTypes,\n ),\n credentials: 'include',\n method: 'POST',\n })\n\n const json = await req.json()\n\n const wasSuccessful = req.status === 201 && json?.doc\n\n if (wasSuccessful) {\n newDocs.push({\n collectionSlug,\n doc: json.doc,\n formID: form.formID,\n })\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 const missingFile = !fileValue && req.status === 400\n const exceedsLimit = fileValue && req.status === 413\n const missingFilename =\n fileValue &&\n typeof fileValue === 'object' &&\n 'name' in fileValue &&\n (!fileValue.name || fileValue.name === '')\n\n if (missingFile || exceedsLimit || missingFilename) {\n currentForms[i].formState.file.valid = false\n\n // File/Blob objects cannot be serialized via the RSC flight protocol,\n // so replace with a plain object before calling the server function.\n const originalFileValue = currentForms[i].formState.file?.value\n const formStateForServer = { ...currentForms[i].formState }\n if (originalFileValue instanceof File) {\n formStateForServer.file = {\n ...formStateForServer.file,\n value: { name: originalFileValue.name },\n }\n }\n\n // Need to get the field state to extract count since field errors\n // are not returned when file is missing or exceeds limit\n const { state: newState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: formStateForServer,\n operation: 'update',\n schemaPath: collectionSlug,\n })\n\n if (newState) {\n if (originalFileValue instanceof File && newState.file) {\n newState.file = { ...newState.file, value: originalFileValue }\n }\n\n currentForms[i] = {\n errorCount: Object.values(newState).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n ),\n formID: currentForms[i].formID,\n formState: newState,\n }\n }\n\n toast.error(nonFieldErrors[0]?.message)\n } else {\n let errorCount = fieldErrors.length\n\n // Fall back to non-field errors when no field errors are present\n // (e.g., APIError thrown from a hook).\n if (!wasSuccessful && errorCount === 0) {\n errorCount = nonFieldErrors.length || 1\n }\n\n currentForms[i] = {\n errorCount,\n formID: currentForms[i].formID,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n\n // Mimic forms/Form/index.tsx.\n if (!wasSuccessful) {\n nonFieldErrors.forEach((err) => {\n toast.error(<FieldErrorsToast errorMessage={err.message || t('error:unknown')} />)\n })\n }\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 setSuccessfullyUploaded(true)\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: remainingForms.reduce((acc, { formID }, i) => {\n if (formID === activeFormID) {\n return i\n }\n return acc\n }, 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 setInitialForms(undefined)\n }\n },\n [\n forms,\n activeIndex,\n t,\n actionURL,\n code,\n collectionSlug,\n config.collections,\n getUploadHandler,\n getFormState,\n docPermissions,\n setSuccessfullyUploaded,\n onSuccess,\n closeModal,\n drawerSlug,\n setInitialFiles,\n setInitialForms,\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 // File/Blob objects cannot be serialized across the server-function\n // boundary (RSC flight / TanStack seroval), so the `file` value is\n // dropped during the `getFormState` round-trip. Capture it first and\n // re-attach it afterwards so the file survives — mirroring the\n // save-retry path below; without this the next save omits the file\n // entirely and the server responds \"No files were uploaded\".\n const originalFileValue = forms[i].formState.file?.value\n\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 if (originalFileValue instanceof File && state.file) {\n state.file = { ...state.file, value: originalFileValue }\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 (initializedStateCollectionSlugRef.current !== collectionSlug) {\n void initializeSharedFormState()\n }\n\n if (initializedPermissionsCollectionSlugRef.current !== collectionSlug) {\n void initializeSharedDocPermissions()\n }\n\n if (initialFiles || initialForms) {\n if (\n initializedStateCollectionSlugRef.current !== collectionSlug ||\n initializedPermissionsCollectionSlugRef.current !== collectionSlug\n ) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (\n hasInitializedState &&\n hasInitializedDocPermissions &&\n initializedStateCollectionSlugRef.current === collectionSlug &&\n initializedPermissionsCollectionSlugRef.current === collectionSlug &&\n pendingCollectionChangeRef.current?.slug === collectionSlug\n ) {\n const previousForms = pendingCollectionChangeRef.current.forms\n const nextTemplate = applyFolderToState(initialStateRef.current)\n const cachedForms = collectionFormsCacheRef.current[collectionSlug]\n dispatch({\n type: 'REPLACE',\n state: {\n forms: previousForms.map((form) => {\n const formState: FormState = {}\n const cachedForm = cachedForms?.find(({ formID }) => formID === form.formID)\n for (const [path, field] of Object.entries(nextTemplate)) {\n const previousField =\n path === folderFieldName && parentID\n ? undefined\n : (cachedForm?.formState[path] ?? form.formState[path])\n formState[path] = previousField\n ? { ...field, initialValue: previousField.value, value: previousField.value }\n : field\n }\n formState.file = form.formState.file\n return { ...form, errorCount: 0, formState, uploadEdits: {} }\n }),\n totalErrorCount: 0,\n },\n })\n pendingCollectionChangeRef.current = null\n setHasSubmitted(false)\n setIsInitializing(false)\n }\n\n if (\n hasInitializedState &&\n hasInitializedDocPermissions &&\n initializedStateCollectionSlugRef.current === collectionSlug &&\n initializedPermissionsCollectionSlugRef.current === collectionSlug &&\n (initialForms?.length || initialFiles?.length) &&\n !hasInitializedWithFiles.current\n ) {\n if (initialForms?.length) {\n void addInitialForms(initialForms)\n }\n if (initialFiles?.length) {\n void addFilesEffectEvent(initialFiles)\n }\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n initialFiles,\n initializeSharedFormState,\n initializeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n initialForms,\n applyFolderToState,\n ])\n\n return (\n <Context\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n bulkUpdateForm,\n changeCollectionSlug,\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","formatAdminURL","validateMimeType","qs","React","toast","fieldReducer","useEffectEvent","useConfig","useLocale","useServerFunctions","useTranslation","useUploadHandlers","hasSavePermission","getHasSavePermission","LoadingOverlay","useLoadingOverlay","FieldErrorsToast","useBulkUpload","createFormData","formsManagementReducer","Context","createContext","activeIndex","addFiles","Promise","resolve","bulkUpdateForm","changeCollectionSlug","collectionSlug","docPermissions","undefined","documentSlots","forms","getFormDataRef","current","hasPublishPermission","hasSubmitted","isInitializing","removeFile","saveAllDocs","setActiveIndex","setFormTotalErrorCount","totalErrorCount","updateUploadEdits","initialState","FormsManagerProvider","children","config","getEntityConfig","routes","api","locale","code","i18n","t","getDocumentSlots","getFormState","getUploadHandler","setDocumentSlots","useState","setHasSubmitted","setDocPermissions","setHasSavePermission","setHasPublishPermission","hasInitializedState","setHasInitializedState","hasInitializedDocPermissions","setHasInitializedDocPermissions","setIsInitializing","state","dispatch","useReducer","formsRef","useRef","toggleLoadingOverlay","closeModal","initialFiles","initialForms","modalSlug","drawerSlug","onSuccess","parentID","selectableCollections","setCollectionSlug","setInitialFiles","setInitialForms","setSuccessfullyUploaded","collectionConfig","folderFieldName","hierarchy","parentFieldName","isUploading","setIsUploading","loadingText","setLoadingText","hasInitializedWithFiles","initialStateRef","initializedStateCollectionSlugRef","initializedPermissionsCollectionSlugRef","currentCollectionSlugRef","pendingCollectionChangeRef","collectionFormsCacheRef","useCallback","slug","includes","mimeTypes","upload","length","some","formState","file","value","File","type","error","activeFormState","currentForms","map","form","index","actionURL","apiRoute","path","initializeSharedDocPermissions","params","docAccessPath","stringify","res","fetch","credentials","headers","language","method","json","publishedAccessJSON","body","JSON","_status","then","isEditing","update","initializeSharedFormState","abortController","signal","abort","formStateWithoutFiles","docPreferences","fields","operation","renderAllFields","schemaPath","skipValidation","customComponents","Field","_err","currentFormsData","i","errorCount","formID","uploadEdits","applyFolderToState","baseState","initialValue","files","acceptedFiles","Array","from","filter","isLoading","key","initialFormState","addFilesEffectEvent","addInitialForms","count","overrides","activeFormID","newDocs","fileValue","total","actionURLWithParams","addQueryPrefix","req","collections","find","allowRestrictedFileTypes","wasSuccessful","status","doc","push","fieldErrors","nonFieldErrors","errors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","isArray","data","forEach","dataError","missingFile","exceedsLimit","missingFilename","name","valid","newState","Object","values","acc","_jsx","errorMessage","_","remainingForms","successCount","Math","max","success","updatedFields","afterStateUpdate","entries","newFormErrorCount","resetUploadEdits","useEffect","previousForms","nextTemplate","cachedForms","cachedForm","field","previousField","_jsxs","animationDuration","overlayType","show","useFormsManager","use"],"sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n CollectionSlug,\n Data,\n DocumentSlots,\n FormState,\n JsonObject,\n SanitizedDocumentPermissions,\n UploadEdits,\n} from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL, validateMimeType } from 'payload/shared'\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 { useEffectEvent } from '../../../hooks/useEffectEvent.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 { FieldErrorsToast } from '../../Toasts/fieldErrors.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<boolean>\n readonly bulkUpdateForm: (\n updatedFields: Record<string, unknown>,\n afterStateUpdate?: () => void,\n ) => Promise<void>\n readonly changeCollectionSlug: (slug: string) => 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(false),\n bulkUpdateForm: () => null,\n changeCollectionSlug: () => 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\nexport type InitialForms = Array<{\n file: File\n formID?: string\n initialState?: FormState | null\n}>\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\n\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config, getEntityConfig } = useConfig()\n const {\n routes: { api },\n } = config\n const locale = useLocale()\n const code = locale?.code\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 {\n collectionSlug,\n initialFiles,\n initialForms,\n modalSlug: drawerSlug,\n onSuccess,\n parentID,\n selectableCollections,\n setCollectionSlug,\n setInitialFiles,\n setInitialForms,\n setSuccessfullyUploaded,\n } = useBulkUpload()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const folderFieldName = collectionConfig?.hierarchy\n ? collectionConfig.hierarchy.parentFieldName\n : undefined\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 initializedStateCollectionSlugRef = React.useRef<string | undefined>(undefined)\n const initializedPermissionsCollectionSlugRef = React.useRef<string | undefined>(undefined)\n const currentCollectionSlugRef = React.useRef(collectionSlug)\n currentCollectionSlugRef.current = collectionSlug\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n const pendingCollectionChangeRef = React.useRef<{\n forms: State['forms']\n slug: string\n }>(null)\n const collectionFormsCacheRef = React.useRef<Record<string, State['forms']>>({})\n\n const changeCollectionSlug = React.useCallback<FormsManagerContext['changeCollectionSlug']>(\n (slug) => {\n if (slug === collectionSlug || isInitializing || !selectableCollections?.includes(slug)) {\n return\n }\n\n const mimeTypes = getEntityConfig({ collectionSlug: slug })?.upload?.mimeTypes\n if (\n mimeTypes?.length &&\n forms.some(({ formState }) => {\n const file = formState?.file?.value\n return file instanceof File && !validateMimeType(file.type, mimeTypes)\n })\n ) {\n toast.error(t('error:invalidFileType'))\n return\n }\n\n const activeFormState = getFormDataRef.current()\n const currentForms = forms.map((form, index) =>\n index === activeIndex ? { ...form, formState: activeFormState } : form,\n )\n collectionFormsCacheRef.current[collectionSlug] = currentForms\n pendingCollectionChangeRef.current = {\n slug,\n forms: currentForms,\n }\n setIsInitializing(true)\n setHasInitializedState(false)\n setHasInitializedDocPermissions(false)\n setHasSavePermission(false)\n setHasPublishPermission(false)\n setCollectionSlug(slug)\n },\n [\n activeIndex,\n collectionSlug,\n forms,\n getEntityConfig,\n isInitializing,\n selectableCollections,\n setCollectionSlug,\n t,\n ],\n )\n\n const actionURL = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}`,\n })\n\n const initializeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessPath: `/${string}/access?${string}` = `/${collectionSlug}/access?${qs.stringify(params)}`\n const res = await fetch(formatAdminURL({ apiRoute: api, path: docAccessPath }), {\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 formatAdminURL({ apiRoute: api, path: docAccessPath }),\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 if (currentCollectionSlugRef.current !== collectionSlug) {\n return\n }\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 initializedPermissionsCollectionSlugRef.current = collectionSlug\n setHasInitializedDocPermissions(true)\n }, [api, code, collectionSlug, i18n.language])\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\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n collectionSlug,\n docPermissions:\n initializedPermissionsCollectionSlugRef.current === collectionSlug\n ? docPermissions\n : undefined,\n docPreferences: { fields: {} },\n locale: code,\n operation: 'create',\n renderAllFields: true,\n schemaPath: collectionSlug,\n skipValidation: true,\n })\n\n if (folderFieldName && formStateWithoutFiles?.[folderFieldName]) {\n formStateWithoutFiles[folderFieldName] = {\n ...formStateWithoutFiles[folderFieldName],\n customComponents: {\n ...formStateWithoutFiles[folderFieldName].customComponents,\n Field: undefined,\n },\n }\n }\n\n if (currentCollectionSlugRef.current !== collectionSlug) {\n return null\n }\n\n setDocumentSlots(documentSlots)\n initialStateRef.current = formStateWithoutFiles\n initializedStateCollectionSlugRef.current = collectionSlug\n setHasInitializedState(true)\n return formStateWithoutFiles\n } catch (_err) {\n // swallow error\n return null\n }\n },\n [getDocumentSlots, collectionSlug, getFormState, docPermissions, code, folderFieldName],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n\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 applyFolderToState = React.useCallback(\n (baseState: FormState | null): FormState | null => {\n if (parentID && folderFieldName && baseState?.[folderFieldName]) {\n return {\n ...baseState,\n [folderFieldName]: {\n ...baseState[folderFieldName],\n initialValue: parentID,\n value: parentID,\n },\n }\n }\n return baseState\n },\n [parentID, folderFieldName],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n const mimeTypes = getEntityConfig({ collectionSlug })?.upload?.mimeTypes\n const acceptedFiles = Array.from(files).filter(\n (file) => !mimeTypes?.length || validateMimeType(file.type, mimeTypes),\n )\n if (acceptedFiles.length !== files.length) {\n toast.error(t('error:invalidFileType'))\n }\n if (!acceptedFiles.length) {\n return false\n }\n\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 let initialFormState = initialStateRef.current\n if (initializedStateCollectionSlugRef.current !== collectionSlug) {\n initialFormState = await initializeSharedFormState()\n }\n if (currentCollectionSlugRef.current !== collectionSlug || !initialFormState) {\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n return false\n }\n dispatch({\n type: 'ADD_FORMS',\n forms: acceptedFiles.map((file) => ({\n file,\n initialState: applyFolderToState(initialFormState),\n })),\n })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n return true\n },\n [\n initializeSharedFormState,\n collectionSlug,\n toggleLoadingOverlay,\n activeIndex,\n forms,\n applyFolderToState,\n getEntityConfig,\n t,\n ],\n )\n\n const addFilesEffectEvent = useEffectEvent(addFiles)\n\n const addInitialForms = useEffectEvent(async (initialForms: InitialForms) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n\n let initialFormState = initialStateRef.current\n if (initializedStateCollectionSlugRef.current !== collectionSlug) {\n initialFormState = await initializeSharedFormState()\n }\n if (currentCollectionSlugRef.current !== collectionSlug || !initialFormState) {\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n return\n }\n\n dispatch({\n type: 'ADD_FORMS',\n forms: initialForms.map((form) => ({\n ...form,\n initialState: applyFolderToState(form?.initialState || initialFormState),\n })),\n })\n\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\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 activeFormID = currentForms[activeIndex]?.formID\n const newDocs: Array<{\n collectionSlug: CollectionSlug\n doc: JsonObject\n /**\n * ID of the form that created this document\n */\n formID: string\n }> = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n const fileValue = form.formState?.file?.value\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const actionURLWithParams = `${actionURL}${qs.stringify(\n {\n locale: code,\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 getUploadHandler({ collectionSlug }),\n config.collections.find(({ slug }) => slug === collectionSlug)?.upload\n ?.allowRestrictedFileTypes,\n ),\n credentials: 'include',\n method: 'POST',\n })\n\n const json = await req.json()\n\n const wasSuccessful = req.status === 201 && json?.doc\n\n if (wasSuccessful) {\n newDocs.push({\n collectionSlug,\n doc: json.doc,\n formID: form.formID,\n })\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 const missingFile = !fileValue && req.status === 400\n const exceedsLimit = fileValue && req.status === 413\n const missingFilename =\n fileValue &&\n typeof fileValue === 'object' &&\n 'name' in fileValue &&\n (!fileValue.name || fileValue.name === '')\n\n if (missingFile || exceedsLimit || missingFilename) {\n currentForms[i].formState.file.valid = false\n\n // Need to get the field state to extract count since field errors\n // are not returned when file is missing or exceeds limit\n const { state: newState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: currentForms[i].formState,\n operation: 'update',\n schemaPath: collectionSlug,\n })\n\n if (newState) {\n currentForms[i] = {\n errorCount: Object.values(newState).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n ),\n formID: currentForms[i].formID,\n formState: newState,\n }\n }\n\n toast.error(nonFieldErrors[0]?.message)\n } else {\n let errorCount = fieldErrors.length\n\n // Fall back to non-field errors when no field errors are present\n // (e.g., APIError thrown from a hook).\n if (!wasSuccessful && errorCount === 0) {\n errorCount = nonFieldErrors.length || 1\n }\n\n currentForms[i] = {\n errorCount,\n formID: currentForms[i].formID,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n\n // Mimic forms/Form/index.tsx.\n if (!wasSuccessful) {\n nonFieldErrors.forEach((err) => {\n toast.error(<FieldErrorsToast errorMessage={err.message || t('error:unknown')} />)\n })\n }\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 setSuccessfullyUploaded(true)\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: remainingForms.reduce((acc, { formID }, i) => {\n if (formID === activeFormID) {\n return i\n }\n return acc\n }, 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 setInitialForms(undefined)\n }\n },\n [\n forms,\n activeIndex,\n t,\n actionURL,\n code,\n collectionSlug,\n config.collections,\n getUploadHandler,\n getFormState,\n docPermissions,\n setSuccessfullyUploaded,\n onSuccess,\n closeModal,\n drawerSlug,\n setInitialFiles,\n setInitialForms,\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 (initializedStateCollectionSlugRef.current !== collectionSlug) {\n void initializeSharedFormState()\n }\n\n if (initializedPermissionsCollectionSlugRef.current !== collectionSlug) {\n void initializeSharedDocPermissions()\n }\n\n if (initialFiles || initialForms) {\n if (\n initializedStateCollectionSlugRef.current !== collectionSlug ||\n initializedPermissionsCollectionSlugRef.current !== collectionSlug\n ) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (\n hasInitializedState &&\n hasInitializedDocPermissions &&\n initializedStateCollectionSlugRef.current === collectionSlug &&\n initializedPermissionsCollectionSlugRef.current === collectionSlug &&\n pendingCollectionChangeRef.current?.slug === collectionSlug\n ) {\n const previousForms = pendingCollectionChangeRef.current.forms\n const nextTemplate = applyFolderToState(initialStateRef.current)\n const cachedForms = collectionFormsCacheRef.current[collectionSlug]\n dispatch({\n type: 'REPLACE',\n state: {\n forms: previousForms.map((form) => {\n const formState: FormState = {}\n const cachedForm = cachedForms?.find(({ formID }) => formID === form.formID)\n for (const [path, field] of Object.entries(nextTemplate)) {\n const previousField =\n path === folderFieldName && parentID\n ? undefined\n : (cachedForm?.formState[path] ?? form.formState[path])\n formState[path] = previousField\n ? { ...field, initialValue: previousField.value, value: previousField.value }\n : field\n }\n formState.file = form.formState.file\n return { ...form, errorCount: 0, formState, uploadEdits: {} }\n }),\n totalErrorCount: 0,\n },\n })\n pendingCollectionChangeRef.current = null\n setHasSubmitted(false)\n setIsInitializing(false)\n }\n\n if (\n hasInitializedState &&\n hasInitializedDocPermissions &&\n initializedStateCollectionSlugRef.current === collectionSlug &&\n initializedPermissionsCollectionSlugRef.current === collectionSlug &&\n (initialForms?.length || initialFiles?.length) &&\n !hasInitializedWithFiles.current\n ) {\n if (initialForms?.length) {\n void addInitialForms(initialForms)\n }\n if (initialFiles?.length) {\n void addFilesEffectEvent(initialFiles)\n }\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n initialFiles,\n initializeSharedFormState,\n initializeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n initialForms,\n applyFolderToState,\n ])\n\n return (\n <Context\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n bulkUpdateForm,\n changeCollectionSlug,\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":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/CloseModalOnRouteChange/index.tsx"],"names":[],"mappings":"AAQA,wBAAgB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/CloseModalOnRouteChange/index.tsx"],"names":[],"mappings":"AAQA,wBAAgB,uBAAuB,QA0BtC"}
|
|
@@ -6,46 +6,54 @@ import { useEffect, useRef } from 'react';
|
|
|
6
6
|
import { useEffectEvent } from '../../hooks/useEffectEvent.js';
|
|
7
7
|
import { usePathname } from '../../providers/RouterAdapter/index.js';
|
|
8
8
|
export function CloseModalOnRouteChange() {
|
|
9
|
-
const $ = _c(
|
|
9
|
+
const $ = _c(8);
|
|
10
10
|
const {
|
|
11
|
-
closeAllModals
|
|
11
|
+
closeAllModals,
|
|
12
|
+
modalState
|
|
12
13
|
} = useModal();
|
|
13
14
|
const pathname = usePathname();
|
|
14
15
|
let t0;
|
|
15
|
-
if ($[0] !== closeAllModals) {
|
|
16
|
+
if ($[0] !== closeAllModals || $[1] !== modalState) {
|
|
16
17
|
t0 = () => {
|
|
17
|
-
|
|
18
|
+
if (Object.values(modalState).some(_temp)) {
|
|
19
|
+
closeAllModals();
|
|
20
|
+
}
|
|
18
21
|
};
|
|
19
22
|
$[0] = closeAllModals;
|
|
20
|
-
$[1] =
|
|
23
|
+
$[1] = modalState;
|
|
24
|
+
$[2] = t0;
|
|
21
25
|
} else {
|
|
22
|
-
t0 = $[
|
|
26
|
+
t0 = $[2];
|
|
23
27
|
}
|
|
24
|
-
const
|
|
25
|
-
const
|
|
28
|
+
const closeOpenModals = useEffectEvent(t0);
|
|
29
|
+
const previousPathnameRef = useRef(pathname);
|
|
26
30
|
let t1;
|
|
27
|
-
if ($[
|
|
31
|
+
if ($[3] !== closeOpenModals || $[4] !== pathname) {
|
|
28
32
|
t1 = () => {
|
|
29
|
-
if (
|
|
30
|
-
initialRenderRef.current = false;
|
|
33
|
+
if (previousPathnameRef.current === pathname) {
|
|
31
34
|
return;
|
|
32
35
|
}
|
|
33
|
-
|
|
36
|
+
previousPathnameRef.current = pathname;
|
|
37
|
+
closeOpenModals();
|
|
34
38
|
};
|
|
35
|
-
$[
|
|
36
|
-
$[
|
|
39
|
+
$[3] = closeOpenModals;
|
|
40
|
+
$[4] = pathname;
|
|
41
|
+
$[5] = t1;
|
|
37
42
|
} else {
|
|
38
|
-
t1 = $[
|
|
43
|
+
t1 = $[5];
|
|
39
44
|
}
|
|
40
45
|
let t2;
|
|
41
|
-
if ($[
|
|
46
|
+
if ($[6] !== pathname) {
|
|
42
47
|
t2 = [pathname];
|
|
43
|
-
$[
|
|
44
|
-
$[
|
|
48
|
+
$[6] = pathname;
|
|
49
|
+
$[7] = t2;
|
|
45
50
|
} else {
|
|
46
|
-
t2 = $[
|
|
51
|
+
t2 = $[7];
|
|
47
52
|
}
|
|
48
53
|
useEffect(t1, t2);
|
|
49
54
|
return null;
|
|
50
55
|
}
|
|
56
|
+
function _temp(modal) {
|
|
57
|
+
return modal.isOpen;
|
|
58
|
+
}
|
|
51
59
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","useEffect","useRef","useEffectEvent","usePathname","CloseModalOnRouteChange","$","closeAllModals","pathname","t0","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","useEffect","useRef","useEffectEvent","usePathname","CloseModalOnRouteChange","$","closeAllModals","modalState","pathname","t0","Object","values","some","_temp","closeOpenModals","previousPathnameRef","t1","current","t2","modal","isOpen"],"sources":["../../../src/elements/CloseModalOnRouteChange/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useEffect, useRef } from 'react'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { usePathname } from '../../providers/RouterAdapter/index.js'\n\nexport function CloseModalOnRouteChange() {\n const { closeAllModals, modalState } = useModal()\n const pathname = usePathname()\n\n const closeOpenModals = useEffectEvent(() => {\n // The modal reducer returns a new state object for every action, even when nothing is open.\n // Skipping the no-op dispatch avoids re-rendering every modal consumer on each navigation.\n if (Object.values(modalState).some((modal) => modal.isOpen)) {\n closeAllModals()\n }\n })\n\n const previousPathnameRef = useRef(pathname)\n\n useEffect(() => {\n // React can run this effect again without a route change, e.g. when it reconnects effects\n // after hydrating or revealing a hidden `<Activity>`. Only close modals if the pathname changed.\n if (previousPathnameRef.current === pathname) {\n return\n }\n\n previousPathnameRef.current = pathname\n closeOpenModals()\n }, [pathname])\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,QAAQ,QAAQ;AACzB,SAASC,SAAS,EAAEC,MAAM,QAAQ;AAElC,SAASC,cAAc,QAAQ;AAC/B,SAASC,WAAW,QAAQ;AAE5B,OAAO,SAAAC,wBAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EACL;IAAAQ,cAAA;IAAAC;EAAA,IAAuCR,QAAA;EACvC,MAAAS,QAAA,GAAiBL,WAAA;EAAA,IAAAM,EAAA;EAAA,IAAAJ,CAAA,QAAAC,cAAA,IAAAD,CAAA,QAAAE,UAAA;IAEsBE,EAAA,GAAAA,CAAA;MAAA,IAGjCC,MAAA,CAAAC,MAAA,CAAcJ,UAAA,EAAAK,IAAA,CAAAC,KAAwC;QACxDP,cAAA;MAAA;IAAA;IAEJD,CAAA,MAAAC,cAAA;IAAAD,CAAA,MAAAE,UAAA;IAAAF,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EANA,MAAAS,eAAA,GAAwBZ,cAAA,CAAeO,EAMvC;EAEA,MAAAM,mBAAA,GAA4Bd,MAAA,CAAOO,QAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAX,CAAA,QAAAS,eAAA,IAAAT,CAAA,QAAAG,QAAA;IAEzBQ,EAAA,GAAAA,CAAA;MAAA,IAGJD,mBAAA,CAAAE,OAAA,KAAgCT,QAAA;QAAA;MAAA;MAIpCO,mBAAA,CAAAE,OAAA,GAA8BT,QAAA;MAC9BM,eAAA;IAAA;IACFT,CAAA,MAAAS,eAAA;IAAAT,CAAA,MAAAG,QAAA;IAAAH,CAAA,MAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EAAA,IAAAa,EAAA;EAAA,IAAAb,CAAA,QAAAG,QAAA;IAAGU,EAAA,IAACV,QAAA;IAASH,CAAA,MAAAG,QAAA;IAAAH,CAAA,MAAAa,EAAA;EAAA;IAAAA,EAAA,GAAAb,CAAA;EAAA;EATbL,SAAA,CAAUgB,EASV,EAAGE,EAAU;EAAA;AAAA;AAvBR,SAAAL,MAAAM,KAAA;EAAA,OAO2CA,KAAA,CAAAC,MAAA;AAAA","ignoreList":[]}
|
|
@@ -184,7 +184,9 @@ const DatePicker = props => {
|
|
|
184
184
|
nextMonthButtonLabel: /*#__PURE__*/_jsx(ChevronIcon, {
|
|
185
185
|
direction: "right"
|
|
186
186
|
}),
|
|
187
|
-
nextYearButtonLabel:
|
|
187
|
+
nextYearButtonLabel: /*#__PURE__*/_jsx(ChevronIcon, {
|
|
188
|
+
direction: "right"
|
|
189
|
+
}),
|
|
188
190
|
onChange,
|
|
189
191
|
placeholderText,
|
|
190
192
|
popperContainer: modalContainer ? popperContainer : undefined,
|
|
@@ -194,7 +196,9 @@ const DatePicker = props => {
|
|
|
194
196
|
previousMonthButtonLabel: /*#__PURE__*/_jsx(ChevronIcon, {
|
|
195
197
|
direction: "left"
|
|
196
198
|
}),
|
|
197
|
-
previousYearButtonLabel:
|
|
199
|
+
previousYearButtonLabel: /*#__PURE__*/_jsx(ChevronIcon, {
|
|
200
|
+
direction: "left"
|
|
201
|
+
}),
|
|
198
202
|
selected: value && new Date(value),
|
|
199
203
|
shouldCloseOnSelect: false,
|
|
200
204
|
showMonthYearPicker: pickerAppearance === 'monthOnly',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","names":["React","ReactDatePickerDefaultImport","registerLocale","setDefaultLocale","createPortal","flushSync","ReactDatePicker","default","CalendarIcon","ChevronIcon","useTranslation","getFormattedLocale","hasAmbiguousYearInput","useDatePickerKeyboard","baseClass","AccessibleCalendarContainer","children","className","containerRef","dialogLabel","monthLabel","onKeyDown","yearLabel","useLayoutEffect","current","querySelector","setAttribute","_jsx","ref","role","getDateTimeFieldLabel","field","locale","Intl","DisplayNames","type","of","_error","DatePicker","props","id","displayFormat","customDisplayFormat","maxDate","maxTime","minDate","minTime","monthsToShow","onChange","onChangeFromProps","overrides","pickerAppearance","placeholder","placeholderText","readOnly","timeFormat","timeIntervals","value","calendarRef","datePickerRef","onBlur","onCalendarClose","onCalendarKeyDown","onCalendarOpen","onChangeRaw","onKeyDownCapture","rejectedInputValueRef","useRef","undefined","modalContainer","setModalContainer","useState","setContainerRef","useCallback","element","closest","popperContainer","i18n","t","language","CustomCalendarContainer","calendarContainer","containerProps","style","display","dateFormat","incomingDate","event","newDate","inputValue","target","HTMLInputElement","date","picker","setPreSelection","calcInitialState","preSelection","Date","includes","tzOffset","getTimezoneOffset","setHours","setMilliseconds","dateTimePickerProps","customInputRef","disabled","monthsShown","Math","min","nextMonthButtonLabel","direction","nextYearButtonLabel","popperPlacement","portalId","preventOpenOnFocus","previousMonthButtonLabel","previousYearButtonLabel","selected","shouldCloseOnSelect","showMonthYearPicker","showPopperArrow","showTimeSelect","showTimeSelectOnly","onBlurCapture","input","test","resetInputValue","classes","filter","Boolean","join","useEffect","dateFNS","datepickerLocale","console","warn","_jsxs","dropdownMode","showMonthDropdown","showYearDropdown"],"sources":["../../../src/elements/DatePicker/DatePicker.tsx"],"sourcesContent":["'use client'\nimport type { DatePickerProps } from 'react-datepicker'\n\nimport React from 'react'\nimport ReactDatePickerDefaultImport, { registerLocale, setDefaultLocale } from 'react-datepicker'\nimport { createPortal, flushSync } from 'react-dom'\nconst ReactDatePicker =\n 'default' in ReactDatePickerDefaultImport\n ? ReactDatePickerDefaultImport.default\n : ReactDatePickerDefaultImport\n\nimport type { Props } from './types.js'\n\nimport { CalendarIcon } from '../../icons/Calendar/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormattedLocale } from './getFormattedLocale.js'\nimport { hasAmbiguousYearInput } from './hasAmbiguousYearInput.js'\nimport { useDatePickerKeyboard } from './useDatePickerKeyboard.js'\nimport './index.css'\n\nconst baseClass = 'date-time-picker'\n\ntype AccessibleCalendarContainerProps = React.PropsWithChildren<{\n className?: string\n containerRef: React.RefObject<HTMLDivElement | null>\n dialogLabel: string\n monthLabel: string\n onKeyDown: React.KeyboardEventHandler<HTMLDivElement>\n yearLabel: string\n}>\n\nconst AccessibleCalendarContainer: React.FC<AccessibleCalendarContainerProps> = ({\n children,\n className,\n containerRef,\n dialogLabel,\n monthLabel,\n onKeyDown,\n yearLabel,\n}) => {\n React.useLayoutEffect(() => {\n containerRef.current\n ?.querySelector<HTMLSelectElement>('.react-datepicker__month-select')\n ?.setAttribute('aria-label', monthLabel)\n containerRef.current\n ?.querySelector<HTMLSelectElement>('.react-datepicker__year-select')\n ?.setAttribute('aria-label', yearLabel)\n })\n\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- Handle Escape bubbling from the dialog's interactive children.\n <div\n aria-label={dialogLabel}\n className={className}\n onKeyDown={onKeyDown}\n ref={containerRef}\n role=\"dialog\"\n >\n {children}\n </div>\n )\n}\n\nconst getDateTimeFieldLabel = ({ field, locale }: { field: 'month' | 'year'; locale: string }) => {\n try {\n return new Intl.DisplayNames(locale, { type: 'dateTimeField' }).of(field) || field\n } catch (_error) {\n return field\n }\n}\n\nconst DatePicker: React.FC<Props> = (props) => {\n const {\n id,\n displayFormat: customDisplayFormat,\n maxDate,\n maxTime,\n minDate,\n minTime,\n monthsToShow = 1,\n onChange: onChangeFromProps,\n overrides,\n pickerAppearance = 'default',\n placeholder: placeholderText,\n readOnly,\n timeFormat = 'h:mm aa',\n timeIntervals = 30,\n value,\n } = props\n\n const {\n calendarRef,\n datePickerRef,\n onBlur,\n onCalendarClose,\n onCalendarKeyDown,\n onCalendarOpen,\n onChangeRaw,\n onKeyDown,\n onKeyDownCapture,\n } = useDatePickerKeyboard(props)\n const rejectedInputValueRef = React.useRef<string | undefined>(undefined)\n const [modalContainer, setModalContainer] = React.useState<Element | null>(null)\n const setContainerRef = React.useCallback((element: HTMLDivElement | null) => {\n setModalContainer(element?.closest('dialog, [role=\"dialog\"]') ?? null)\n }, [])\n const popperContainer = React.useCallback<React.FC<React.PropsWithChildren>>(\n ({ children }) => (modalContainer ? createPortal(children, modalContainer) : children),\n [modalContainer],\n )\n\n // Use the user's AdminUI language preference for the locale\n const { i18n, t } = useTranslation()\n const monthLabel = getDateTimeFieldLabel({ field: 'month', locale: i18n.language })\n const yearLabel = getDateTimeFieldLabel({ field: 'year', locale: i18n.language })\n const CustomCalendarContainer = overrides?.calendarContainer\n const calendarContainer = React.useCallback(\n ({ children, className, ...containerProps }) =>\n CustomCalendarContainer ? (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- Handle Escape bubbling from the custom calendar's interactive children.\n <div onKeyDown={onCalendarKeyDown} ref={calendarRef} style={{ display: 'contents' }}>\n <CustomCalendarContainer {...containerProps} className={className}>\n {children}\n </CustomCalendarContainer>\n </div>\n ) : (\n <AccessibleCalendarContainer\n className={className}\n containerRef={calendarRef}\n dialogLabel={`${t('general:selectValue')}: ${monthLabel}, ${yearLabel}`}\n monthLabel={monthLabel}\n onKeyDown={onCalendarKeyDown}\n yearLabel={yearLabel}\n >\n {children}\n </AccessibleCalendarContainer>\n ),\n [CustomCalendarContainer, calendarRef, monthLabel, onCalendarKeyDown, t, yearLabel],\n )\n\n let dateFormat = customDisplayFormat\n\n if (!customDisplayFormat) {\n // when no displayFormat is provided, determine format based on the picker appearance\n if (pickerAppearance === 'default') {\n dateFormat = 'MM/dd/yyyy'\n } else if (pickerAppearance === 'dayAndTime') {\n dateFormat = 'MMM d, yyy h:mm a'\n } else if (pickerAppearance === 'timeOnly') {\n dateFormat = 'h:mm a'\n } else if (pickerAppearance === 'dayOnly') {\n dateFormat = 'MMM dd'\n } else if (pickerAppearance === 'monthOnly') {\n dateFormat = 'MMMM'\n }\n }\n\n const onChange: Extract<\n DatePickerProps,\n { selectsMultiple?: false; selectsRange?: false }\n >['onChange'] = (incomingDate, event) => {\n const newDate = incomingDate\n\n const inputValue =\n event?.target instanceof HTMLInputElement\n ? event.target.value\n : !event\n ? rejectedInputValueRef.current\n : undefined\n\n if (\n hasAmbiguousYearInput({\n date: newDate,\n dateFormat: overrides?.dateFormat ?? dateFormat,\n inputValue,\n locale: overrides?.locale,\n })\n ) {\n const picker = datePickerRef.current\n\n rejectedInputValueRef.current = inputValue\n picker?.setPreSelection(picker.calcInitialState().preSelection)\n return\n }\n rejectedInputValueRef.current = undefined\n\n if (newDate instanceof Date && ['dayOnly', 'default', 'monthOnly'].includes(pickerAppearance)) {\n const tzOffset = incomingDate.getTimezoneOffset() / 60\n newDate.setHours(12 - tzOffset, 0)\n }\n\n if (newDate instanceof Date && !dateFormat.includes('SSS')) {\n // Unless the dateFormat includes milliseconds, set milliseconds to 0\n // This is to ensure that the timestamp is consistent with the displayFormat\n newDate.setMilliseconds(0)\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newDate)\n }\n }\n\n const dateTimePickerProps: Extract<\n DatePickerProps,\n { selectsMultiple?: false; selectsRange?: false }\n > = {\n customInputRef: 'ref',\n dateFormat,\n disabled: readOnly,\n maxDate,\n maxTime,\n minDate,\n minTime,\n monthsShown: Math.min(2, monthsToShow),\n nextMonthButtonLabel: <ChevronIcon direction=\"right\" />,\n nextYearButtonLabel: '›',\n onChange,\n placeholderText,\n popperContainer: modalContainer ? popperContainer : undefined,\n popperPlacement: 'bottom-start',\n portalId: modalContainer ? undefined : 'date-time-picker-portal',\n preventOpenOnFocus: true,\n previousMonthButtonLabel: <ChevronIcon direction=\"left\" />,\n previousYearButtonLabel: '‹',\n selected: value && new Date(value),\n shouldCloseOnSelect: false,\n showMonthYearPicker: pickerAppearance === 'monthOnly',\n showPopperArrow: false,\n showTimeSelect: pickerAppearance === 'dayAndTime' || pickerAppearance === 'timeOnly',\n showTimeSelectOnly: pickerAppearance === 'timeOnly',\n timeFormat,\n timeIntervals,\n ...(overrides as Extract<\n DatePickerProps,\n { selectsMultiple?: false; selectsRange?: false } // to satisfy TypeScript. Overrides can enable selectsMultiple or selectsRange but then it's up to the user to ensure they pass in the correct onChange\n >),\n calendarContainer,\n onBlur,\n onCalendarClose,\n onCalendarOpen,\n onChangeRaw,\n onKeyDown,\n }\n\n const onBlurCapture = (event: React.FocusEvent<HTMLDivElement>) => {\n const input = event.target\n\n if (input !== datePickerRef.current?.input || !(input instanceof HTMLInputElement)) {\n return\n }\n\n if (/[a-z0-9]/i.test(input.value) || !/[\\p{L}\\p{N}]/u.test(input.value)) {\n return\n }\n\n // react-datepicker 9.1 treats non-Latin input as an empty mask.\n // Reset raw text synchronously before its blur handler can clear the selected date.\n // eslint-disable-next-line @eslint-react/dom/no-flush-sync -- Programmatic blur also requires the reset before the upstream handler runs.\n flushSync(() => datePickerRef.current?.resetInputValue())\n }\n\n const classes = [baseClass, `${baseClass}__appearance--${pickerAppearance}`]\n .filter(Boolean)\n .join(' ')\n\n React.useEffect(() => {\n if (i18n.dateFNS) {\n try {\n const datepickerLocale = getFormattedLocale(i18n.language)\n registerLocale(datepickerLocale, i18n.dateFNS)\n setDefaultLocale(datepickerLocale)\n } catch (_error) {\n // eslint-disable-next-line no-console\n console.warn(`Could not find DatePicker locale for ${i18n.language}`)\n }\n }\n }, [i18n.language, i18n.dateFNS])\n\n return (\n <div\n className={classes}\n id={id}\n onBlurCapture={onBlurCapture}\n onKeyDownCapture={onKeyDownCapture}\n ref={setContainerRef}\n >\n <div className={`${baseClass}__input-wrapper`}>\n <ReactDatePicker\n ref={datePickerRef}\n {...dateTimePickerProps}\n dropdownMode=\"select\"\n showMonthDropdown={pickerAppearance !== 'monthOnly'}\n showYearDropdown={pickerAppearance !== 'monthOnly'}\n />\n <CalendarIcon />\n </div>\n </div>\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default DatePicker\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":["React","ReactDatePickerDefaultImport","registerLocale","setDefaultLocale","createPortal","flushSync","ReactDatePicker","default","CalendarIcon","ChevronIcon","useTranslation","getFormattedLocale","hasAmbiguousYearInput","useDatePickerKeyboard","baseClass","AccessibleCalendarContainer","children","className","containerRef","dialogLabel","monthLabel","onKeyDown","yearLabel","useLayoutEffect","current","querySelector","setAttribute","_jsx","ref","role","getDateTimeFieldLabel","field","locale","Intl","DisplayNames","type","of","_error","DatePicker","props","id","displayFormat","customDisplayFormat","maxDate","maxTime","minDate","minTime","monthsToShow","onChange","onChangeFromProps","overrides","pickerAppearance","placeholder","placeholderText","readOnly","timeFormat","timeIntervals","value","calendarRef","datePickerRef","onBlur","onCalendarClose","onCalendarKeyDown","onCalendarOpen","onChangeRaw","onKeyDownCapture","rejectedInputValueRef","useRef","undefined","modalContainer","setModalContainer","useState","setContainerRef","useCallback","element","closest","popperContainer","i18n","t","language","CustomCalendarContainer","calendarContainer","containerProps","style","display","dateFormat","incomingDate","event","newDate","inputValue","target","HTMLInputElement","date","picker","setPreSelection","calcInitialState","preSelection","Date","includes","tzOffset","getTimezoneOffset","setHours","setMilliseconds","dateTimePickerProps","customInputRef","disabled","monthsShown","Math","min","nextMonthButtonLabel","direction","nextYearButtonLabel","popperPlacement","portalId","preventOpenOnFocus","previousMonthButtonLabel","previousYearButtonLabel","selected","shouldCloseOnSelect","showMonthYearPicker","showPopperArrow","showTimeSelect","showTimeSelectOnly","onBlurCapture","input","test","resetInputValue","classes","filter","Boolean","join","useEffect","dateFNS","datepickerLocale","console","warn","_jsxs","dropdownMode","showMonthDropdown","showYearDropdown"],"sources":["../../../src/elements/DatePicker/DatePicker.tsx"],"sourcesContent":["'use client'\nimport type { DatePickerProps } from 'react-datepicker'\n\nimport React from 'react'\nimport ReactDatePickerDefaultImport, { registerLocale, setDefaultLocale } from 'react-datepicker'\nimport { createPortal, flushSync } from 'react-dom'\nconst ReactDatePicker =\n 'default' in ReactDatePickerDefaultImport\n ? ReactDatePickerDefaultImport.default\n : ReactDatePickerDefaultImport\n\nimport type { Props } from './types.js'\n\nimport { CalendarIcon } from '../../icons/Calendar/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormattedLocale } from './getFormattedLocale.js'\nimport { hasAmbiguousYearInput } from './hasAmbiguousYearInput.js'\nimport { useDatePickerKeyboard } from './useDatePickerKeyboard.js'\nimport './index.css'\n\nconst baseClass = 'date-time-picker'\n\ntype AccessibleCalendarContainerProps = React.PropsWithChildren<{\n className?: string\n containerRef: React.RefObject<HTMLDivElement | null>\n dialogLabel: string\n monthLabel: string\n onKeyDown: React.KeyboardEventHandler<HTMLDivElement>\n yearLabel: string\n}>\n\nconst AccessibleCalendarContainer: React.FC<AccessibleCalendarContainerProps> = ({\n children,\n className,\n containerRef,\n dialogLabel,\n monthLabel,\n onKeyDown,\n yearLabel,\n}) => {\n React.useLayoutEffect(() => {\n containerRef.current\n ?.querySelector<HTMLSelectElement>('.react-datepicker__month-select')\n ?.setAttribute('aria-label', monthLabel)\n containerRef.current\n ?.querySelector<HTMLSelectElement>('.react-datepicker__year-select')\n ?.setAttribute('aria-label', yearLabel)\n })\n\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- Handle Escape bubbling from the dialog's interactive children.\n <div\n aria-label={dialogLabel}\n className={className}\n onKeyDown={onKeyDown}\n ref={containerRef}\n role=\"dialog\"\n >\n {children}\n </div>\n )\n}\n\nconst getDateTimeFieldLabel = ({ field, locale }: { field: 'month' | 'year'; locale: string }) => {\n try {\n return new Intl.DisplayNames(locale, { type: 'dateTimeField' }).of(field) || field\n } catch (_error) {\n return field\n }\n}\n\nconst DatePicker: React.FC<Props> = (props) => {\n const {\n id,\n displayFormat: customDisplayFormat,\n maxDate,\n maxTime,\n minDate,\n minTime,\n monthsToShow = 1,\n onChange: onChangeFromProps,\n overrides,\n pickerAppearance = 'default',\n placeholder: placeholderText,\n readOnly,\n timeFormat = 'h:mm aa',\n timeIntervals = 30,\n value,\n } = props\n\n const {\n calendarRef,\n datePickerRef,\n onBlur,\n onCalendarClose,\n onCalendarKeyDown,\n onCalendarOpen,\n onChangeRaw,\n onKeyDown,\n onKeyDownCapture,\n } = useDatePickerKeyboard(props)\n const rejectedInputValueRef = React.useRef<string | undefined>(undefined)\n const [modalContainer, setModalContainer] = React.useState<Element | null>(null)\n const setContainerRef = React.useCallback((element: HTMLDivElement | null) => {\n setModalContainer(element?.closest('dialog, [role=\"dialog\"]') ?? null)\n }, [])\n const popperContainer = React.useCallback<React.FC<React.PropsWithChildren>>(\n ({ children }) => (modalContainer ? createPortal(children, modalContainer) : children),\n [modalContainer],\n )\n\n // Use the user's AdminUI language preference for the locale\n const { i18n, t } = useTranslation()\n const monthLabel = getDateTimeFieldLabel({ field: 'month', locale: i18n.language })\n const yearLabel = getDateTimeFieldLabel({ field: 'year', locale: i18n.language })\n const CustomCalendarContainer = overrides?.calendarContainer\n const calendarContainer = React.useCallback(\n ({ children, className, ...containerProps }) =>\n CustomCalendarContainer ? (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- Handle Escape bubbling from the custom calendar's interactive children.\n <div onKeyDown={onCalendarKeyDown} ref={calendarRef} style={{ display: 'contents' }}>\n <CustomCalendarContainer {...containerProps} className={className}>\n {children}\n </CustomCalendarContainer>\n </div>\n ) : (\n <AccessibleCalendarContainer\n className={className}\n containerRef={calendarRef}\n dialogLabel={`${t('general:selectValue')}: ${monthLabel}, ${yearLabel}`}\n monthLabel={monthLabel}\n onKeyDown={onCalendarKeyDown}\n yearLabel={yearLabel}\n >\n {children}\n </AccessibleCalendarContainer>\n ),\n [CustomCalendarContainer, calendarRef, monthLabel, onCalendarKeyDown, t, yearLabel],\n )\n\n let dateFormat = customDisplayFormat\n\n if (!customDisplayFormat) {\n // when no displayFormat is provided, determine format based on the picker appearance\n if (pickerAppearance === 'default') {\n dateFormat = 'MM/dd/yyyy'\n } else if (pickerAppearance === 'dayAndTime') {\n dateFormat = 'MMM d, yyy h:mm a'\n } else if (pickerAppearance === 'timeOnly') {\n dateFormat = 'h:mm a'\n } else if (pickerAppearance === 'dayOnly') {\n dateFormat = 'MMM dd'\n } else if (pickerAppearance === 'monthOnly') {\n dateFormat = 'MMMM'\n }\n }\n\n const onChange: Extract<\n DatePickerProps,\n { selectsMultiple?: false; selectsRange?: false }\n >['onChange'] = (incomingDate, event) => {\n const newDate = incomingDate\n\n const inputValue =\n event?.target instanceof HTMLInputElement\n ? event.target.value\n : !event\n ? rejectedInputValueRef.current\n : undefined\n\n if (\n hasAmbiguousYearInput({\n date: newDate,\n dateFormat: overrides?.dateFormat ?? dateFormat,\n inputValue,\n locale: overrides?.locale,\n })\n ) {\n const picker = datePickerRef.current\n\n rejectedInputValueRef.current = inputValue\n picker?.setPreSelection(picker.calcInitialState().preSelection)\n return\n }\n rejectedInputValueRef.current = undefined\n\n if (newDate instanceof Date && ['dayOnly', 'default', 'monthOnly'].includes(pickerAppearance)) {\n const tzOffset = incomingDate.getTimezoneOffset() / 60\n newDate.setHours(12 - tzOffset, 0)\n }\n\n if (newDate instanceof Date && !dateFormat.includes('SSS')) {\n // Unless the dateFormat includes milliseconds, set milliseconds to 0\n // This is to ensure that the timestamp is consistent with the displayFormat\n newDate.setMilliseconds(0)\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newDate)\n }\n }\n\n const dateTimePickerProps: Extract<\n DatePickerProps,\n { selectsMultiple?: false; selectsRange?: false }\n > = {\n customInputRef: 'ref',\n dateFormat,\n disabled: readOnly,\n maxDate,\n maxTime,\n minDate,\n minTime,\n monthsShown: Math.min(2, monthsToShow),\n nextMonthButtonLabel: <ChevronIcon direction=\"right\" />,\n nextYearButtonLabel: <ChevronIcon direction=\"right\" />,\n onChange,\n placeholderText,\n popperContainer: modalContainer ? popperContainer : undefined,\n popperPlacement: 'bottom-start',\n portalId: modalContainer ? undefined : 'date-time-picker-portal',\n preventOpenOnFocus: true,\n previousMonthButtonLabel: <ChevronIcon direction=\"left\" />,\n previousYearButtonLabel: <ChevronIcon direction=\"left\" />,\n selected: value && new Date(value),\n shouldCloseOnSelect: false,\n showMonthYearPicker: pickerAppearance === 'monthOnly',\n showPopperArrow: false,\n showTimeSelect: pickerAppearance === 'dayAndTime' || pickerAppearance === 'timeOnly',\n showTimeSelectOnly: pickerAppearance === 'timeOnly',\n timeFormat,\n timeIntervals,\n ...(overrides as Extract<\n DatePickerProps,\n { selectsMultiple?: false; selectsRange?: false } // to satisfy TypeScript. Overrides can enable selectsMultiple or selectsRange but then it's up to the user to ensure they pass in the correct onChange\n >),\n calendarContainer,\n onBlur,\n onCalendarClose,\n onCalendarOpen,\n onChangeRaw,\n onKeyDown,\n }\n\n const onBlurCapture = (event: React.FocusEvent<HTMLDivElement>) => {\n const input = event.target\n\n if (input !== datePickerRef.current?.input || !(input instanceof HTMLInputElement)) {\n return\n }\n\n if (/[a-z0-9]/i.test(input.value) || !/[\\p{L}\\p{N}]/u.test(input.value)) {\n return\n }\n\n // react-datepicker 9.1 treats non-Latin input as an empty mask.\n // Reset raw text synchronously before its blur handler can clear the selected date.\n // eslint-disable-next-line @eslint-react/dom/no-flush-sync -- Programmatic blur also requires the reset before the upstream handler runs.\n flushSync(() => datePickerRef.current?.resetInputValue())\n }\n\n const classes = [baseClass, `${baseClass}__appearance--${pickerAppearance}`]\n .filter(Boolean)\n .join(' ')\n\n React.useEffect(() => {\n if (i18n.dateFNS) {\n try {\n const datepickerLocale = getFormattedLocale(i18n.language)\n registerLocale(datepickerLocale, i18n.dateFNS)\n setDefaultLocale(datepickerLocale)\n } catch (_error) {\n // eslint-disable-next-line no-console\n console.warn(`Could not find DatePicker locale for ${i18n.language}`)\n }\n }\n }, [i18n.language, i18n.dateFNS])\n\n return (\n <div\n className={classes}\n id={id}\n onBlurCapture={onBlurCapture}\n onKeyDownCapture={onKeyDownCapture}\n ref={setContainerRef}\n >\n <div className={`${baseClass}__input-wrapper`}>\n <ReactDatePicker\n ref={datePickerRef}\n {...dateTimePickerProps}\n dropdownMode=\"select\"\n showMonthDropdown={pickerAppearance !== 'monthOnly'}\n showYearDropdown={pickerAppearance !== 'monthOnly'}\n />\n <CalendarIcon />\n </div>\n </div>\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default DatePicker\n"],"mappings":"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","ignoreList":[]}
|