@payloadcms/ui 3.29.0-internal.d2c9ba5 → 3.29.0-internal.e4e913b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/Autosave/index.js +1 -1
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js +143 -127
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditMany/index.js +1 -1
- package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js +5 -5
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +3 -3
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/BulkUpload/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/index.js +2 -4
- package/dist/elements/BulkUpload/index.js.map +1 -1
- package/dist/elements/Collapsible/provider.d.ts.map +1 -1
- package/dist/elements/Collapsible/provider.js +3 -5
- package/dist/elements/Collapsible/provider.js.map +1 -1
- package/dist/elements/DocumentControls/index.js +1 -1
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/Provider.js +3 -3
- package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +1 -5
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/Drawer/index.d.ts.map +1 -1
- package/dist/elements/Drawer/index.js +3 -5
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.d.ts +3 -1
- package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +122 -124
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/EditMany/index.js +7 -7
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditMany/index.scss +14 -3
- package/dist/elements/FieldSelect/index.d.ts +12 -7
- package/dist/elements/FieldSelect/index.d.ts.map +1 -1
- package/dist/elements/FieldSelect/index.js +34 -131
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.d.ts +19 -0
- package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -0
- package/dist/elements/FieldSelect/reduceFieldOptions.js +57 -0
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -0
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +2 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.js +3 -3
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/LoadingOverlay/index.js +3 -3
- package/dist/elements/LoadingOverlay/index.js.map +1 -1
- package/dist/elements/Nav/context.d.ts.map +1 -1
- package/dist/elements/Nav/context.js +2 -4
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts +2 -1
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +5 -2
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +3 -3
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/StepNav/context.d.ts.map +1 -1
- package/dist/elements/StepNav/context.js +3 -5
- package/dist/elements/StepNav/context.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Date/index.js +1 -1
- package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js +24 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +32 -25
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js +3 -5
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
- package/dist/elements/TableColumns/RenderDefaultCell/index.js +2 -4
- package/dist/elements/TableColumns/RenderDefaultCell/index.js.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js +8 -1
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/TableColumns/context.d.ts.map +1 -1
- package/dist/elements/TableColumns/context.js +2 -2
- package/dist/elements/TableColumns/context.js.map +1 -1
- package/dist/elements/TableColumns/index.js +1 -1
- package/dist/elements/TableColumns/index.js.map +1 -1
- package/dist/elements/Thumbnail/index.js +25 -23
- package/dist/elements/Thumbnail/index.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.js +1 -1
- package/dist/elements/ThumbnailCard/index.js.map +1 -1
- package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
- package/dist/elements/Toasts/fieldErrors.js +2 -2
- package/dist/elements/Toasts/fieldErrors.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +3 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/reduceFields.js +2 -2
- package/dist/elements/WhereBuilder/reduceFields.js.map +1 -1
- package/dist/exports/client/{CodeEditor-TQ5ADFPC.js → CodeEditor-J4IKAVAK.js} +2 -2
- package/dist/exports/client/{DatePicker-HHQ6TPOW.js → DatePicker-DMHV2M2L.js} +2 -2
- package/dist/exports/client/{chunk-IMEQ6NKQ.js → chunk-3AA2TJQ5.js} +2 -2
- package/dist/exports/client/{chunk-IMEQ6NKQ.js.map → chunk-3AA2TJQ5.js.map} +3 -3
- package/dist/exports/client/{chunk-LMYT7O7U.js → chunk-PKQOCWZD.js} +2 -2
- package/dist/exports/client/{chunk-LMYT7O7U.js.map → chunk-PKQOCWZD.js.map} +3 -3
- package/dist/exports/client/index.js +11 -11
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.d.ts +2 -2
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +1 -1
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +4 -3
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +26 -20
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +5 -4
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/index.d.ts +1 -1
- package/dist/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/fields/Checkbox/index.js +4 -3
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js +4 -3
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.js +3 -2
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/ConfirmPassword/index.js +13 -11
- package/dist/fields/ConfirmPassword/index.js.map +1 -1
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +5 -4
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js +3 -2
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/Group/index.d.ts.map +1 -1
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/Group/index.scss +12 -6
- package/dist/fields/Group/provider.d.ts.map +1 -1
- package/dist/fields/Group/provider.js +3 -5
- package/dist/fields/Group/provider.js.map +1 -1
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +5 -4
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js +6 -5
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js +2 -4
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Point/index.d.ts.map +1 -1
- package/dist/fields/Point/index.js +4 -3
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js +4 -3
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js +5 -4
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Relationship/optionsReducer.js +1 -1
- package/dist/fields/Relationship/optionsReducer.js.map +1 -1
- package/dist/fields/Row/provider.d.ts.map +1 -1
- package/dist/fields/Row/provider.js +3 -5
- package/dist/fields/Row/provider.js.map +1 -1
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +4 -3
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.d.ts +1 -0
- package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/fields/Tabs/Tab/index.js +29 -25
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.scss +4 -0
- package/dist/fields/Tabs/index.d.ts +1 -1
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +285 -194
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Tabs/index.scss +8 -0
- package/dist/fields/Tabs/provider.d.ts.map +1 -1
- package/dist/fields/Tabs/provider.js +3 -5
- package/dist/fields/Tabs/provider.js.map +1 -1
- package/dist/fields/Text/index.d.ts.map +1 -1
- package/dist/fields/Text/index.js +4 -3
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Textarea/index.d.ts.map +1 -1
- package/dist/fields/Textarea/index.js +2 -1
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Upload/index.d.ts.map +1 -1
- package/dist/fields/Upload/index.js +2 -1
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/forms/Form/context.d.ts.map +1 -1
- package/dist/forms/Form/context.js +9 -25
- package/dist/forms/Form/context.js.map +1 -1
- package/dist/forms/Form/fieldReducer.js +1 -1
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +8 -8
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/RenderFields/index.d.ts.map +1 -1
- package/dist/forms/RenderFields/index.js +1 -1
- package/dist/forms/RenderFields/index.js.map +1 -1
- package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
- package/dist/forms/RowLabel/Context/index.js +2 -2
- package/dist/forms/RowLabel/Context/index.js.map +1 -1
- package/dist/forms/RowLabel/index.d.ts.map +1 -1
- package/dist/forms/RowLabel/index.js +2 -2
- package/dist/forms/RowLabel/index.js.map +1 -1
- package/dist/forms/RowLabel/types.d.ts +1 -1
- package/dist/forms/RowLabel/types.d.ts.map +1 -1
- package/dist/forms/RowLabel/types.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +3 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +45 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts +4 -2
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.js +4 -0
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts +4 -2
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.js +4 -0
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts +4 -2
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js +41 -2
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.d.ts +4 -2
- package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/index.js +6 -0
- package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +4 -2
- package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/iterateFields.js +16 -0
- package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
- package/dist/forms/useField/index.d.ts.map +1 -1
- package/dist/forms/useField/index.js +70 -67
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/forms/useField/types.d.ts +1 -0
- package/dist/forms/useField/types.d.ts.map +1 -1
- package/dist/forms/useField/types.js.map +1 -1
- package/dist/hooks/useQueues.js +3 -3
- package/dist/hooks/useQueues.js.map +1 -1
- package/dist/providers/Actions/index.d.ts.map +1 -1
- package/dist/providers/Actions/index.js +3 -5
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +3 -5
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/ClientFunction/index.d.ts.map +1 -1
- package/dist/providers/ClientFunction/index.js +4 -4
- package/dist/providers/ClientFunction/index.js.map +1 -1
- package/dist/providers/Config/index.d.ts.map +1 -1
- package/dist/providers/Config/index.js +3 -5
- package/dist/providers/Config/index.js.map +1 -1
- package/dist/providers/DocumentEvents/index.d.ts.map +1 -1
- package/dist/providers/DocumentEvents/index.js +3 -5
- package/dist/providers/DocumentEvents/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +4 -6
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/EditDepth/index.d.ts.map +1 -1
- package/dist/providers/EditDepth/index.js +3 -5
- package/dist/providers/EditDepth/index.js.map +1 -1
- package/dist/providers/EntityVisibility/index.d.ts.map +1 -1
- package/dist/providers/EntityVisibility/index.js +3 -5
- package/dist/providers/EntityVisibility/index.js.map +1 -1
- package/dist/providers/ListQuery/context.d.ts.map +1 -1
- package/dist/providers/ListQuery/context.js +2 -2
- package/dist/providers/ListQuery/context.js.map +1 -1
- package/dist/providers/ListQuery/index.js +1 -1
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +5 -9
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Operation/index.d.ts.map +1 -1
- package/dist/providers/Operation/index.js +3 -5
- package/dist/providers/Operation/index.js.map +1 -1
- package/dist/providers/Params/index.d.ts.map +1 -1
- package/dist/providers/Params/index.js +3 -5
- package/dist/providers/Params/index.js.map +1 -1
- package/dist/providers/Preferences/index.d.ts.map +1 -1
- package/dist/providers/Preferences/index.js +3 -5
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/RouteCache/index.d.ts.map +1 -1
- package/dist/providers/RouteCache/index.js +3 -5
- package/dist/providers/RouteCache/index.js.map +1 -1
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +2 -4
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/providers/SearchParams/index.d.ts.map +1 -1
- package/dist/providers/SearchParams/index.js +3 -5
- package/dist/providers/SearchParams/index.js.map +1 -1
- package/dist/providers/Selection/index.d.ts.map +1 -1
- package/dist/providers/Selection/index.js +3 -5
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.js +2 -2
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +3 -5
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/Translation/index.d.ts.map +1 -1
- package/dist/providers/Translation/index.js +3 -5
- package/dist/providers/Translation/index.js.map +1 -1
- package/dist/providers/UploadEdits/index.d.ts.map +1 -1
- package/dist/providers/UploadEdits/index.js +2 -4
- package/dist/providers/UploadEdits/index.js.map +1 -1
- package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
- package/dist/providers/UploadHandlers/index.js +3 -3
- package/dist/providers/UploadHandlers/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +5 -1
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/combineFieldLabel.d.ts +7 -0
- package/dist/utilities/combineFieldLabel.d.ts.map +1 -0
- package/dist/utilities/combineFieldLabel.js +31 -0
- package/dist/utilities/combineFieldLabel.js.map +1 -0
- package/dist/utilities/{formatDate.d.ts → formatDocTitle/formatDateTitle.d.ts} +1 -1
- package/dist/utilities/formatDocTitle/formatDateTitle.d.ts.map +1 -0
- package/dist/utilities/{formatDate.js → formatDocTitle/formatDateTitle.js} +1 -1
- package/dist/utilities/formatDocTitle/formatDateTitle.js.map +1 -0
- package/dist/utilities/formatDocTitle/formatLexicalDocTitle.d.ts +19 -0
- package/dist/utilities/formatDocTitle/formatLexicalDocTitle.d.ts.map +1 -0
- package/dist/utilities/formatDocTitle/formatLexicalDocTitle.js +19 -0
- package/dist/utilities/formatDocTitle/formatLexicalDocTitle.js.map +1 -0
- package/dist/utilities/{formatDocTitle.d.ts → formatDocTitle/index.d.ts} +2 -2
- package/dist/utilities/formatDocTitle/index.d.ts.map +1 -0
- package/dist/utilities/{formatDocTitle.js → formatDocTitle/index.js} +11 -3
- package/dist/utilities/formatDocTitle/index.js.map +1 -0
- package/dist/utilities/getDisplayedFieldValue.d.ts +13 -0
- package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -0
- package/dist/utilities/getDisplayedFieldValue.js +28 -0
- package/dist/utilities/getDisplayedFieldValue.js.map +1 -0
- package/dist/utilities/hasOptionLabelJSXElement.d.ts +3 -0
- package/dist/utilities/hasOptionLabelJSXElement.d.ts.map +1 -0
- package/dist/utilities/hasOptionLabelJSXElement.js +15 -0
- package/dist/utilities/hasOptionLabelJSXElement.js.map +1 -0
- package/dist/views/Edit/SetDocumentTitle/index.js +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +1 -1
- package/dist/views/Edit/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/utilities/formatDate.d.ts.map +0 -1
- package/dist/utilities/formatDate.js.map +0 -1
- package/dist/utilities/formatDocTitle.d.ts.map +0 -1
- package/dist/utilities/formatDocTitle.js.map +0 -1
- /package/dist/exports/client/{CodeEditor-TQ5ADFPC.js.map → CodeEditor-J4IKAVAK.js.map} +0 -0
- /package/dist/exports/client/{DatePicker-HHQ6TPOW.js.map → DatePicker-DMHV2M2L.js.map} +0 -0
|
@@ -14,7 +14,7 @@ import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
|
14
14
|
import { useLocale } from '../../providers/Locale/index.js';
|
|
15
15
|
import './index.scss';
|
|
16
16
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
17
|
-
import { formatTimeToNow } from '../../utilities/
|
|
17
|
+
import { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js';
|
|
18
18
|
import { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js';
|
|
19
19
|
import { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js';
|
|
20
20
|
const baseClass = 'autosave';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["dequal","reduceFieldsToValues","versionDefaults","React","useDeferredValue","useEffect","useRef","useState","toast","useAllFormFields","useForm","useFormModified","useFormProcessing","useFormSubmitted","useDebounce","useEffectEvent","useConfig","useDocumentEvents","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","serverURL","docConfig","incrementVersionCount","lastUpdateTime","mostRecentVersionIsAutosaved","setLastUpdateTime","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","updateSavedDocumentData","queueRef","isProcessingRef","reportUpdate","dispatchFields","isValid","setBackgroundProcessing","setIsValid","setSubmitted","isFormProcessing","fields","modified","submitted","code","locale","i18n","t","versionsConfig","versions","interval","autosaveInterval","drafts","autosave","validateOnDraft","Boolean","validate","_saving","setSaving","saving","debouncedFields","fieldRef","modifiedRef","localeRef","isValidRef","current","processQueue","useCallback","length","latestAction","autosaveTimeoutRef","handleAutosave","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","slug","data","valid","_status","skipSubmission","res","fetch","body","JSON","stringify","credentials","headers","language","error","newDate","status","updatedAt","toISOString","prev","json","errors","Array","isArray","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","push","forEach","dataError","field","type","document","doc","result","didMount","previousDebouncedFieldValues","debouncedFieldValues","clearTimeout","_jsxs","className","_jsx","Fragment","distance","date"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { reduceFieldsToValues, versionDefaults } from 'payload/shared'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport './index.scss'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDate.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const {\n docConfig,\n incrementVersionCount,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n updateSavedDocumentData,\n } = useDocumentInfo()\n const queueRef = useRef([])\n const isProcessingRef = useRef(false)\n\n const { reportUpdate } = useDocumentEvents()\n const { dispatchFields, isValid, setBackgroundProcessing, setIsValid, setSubmitted } = useForm()\n const isFormProcessing = useFormProcessing()\n\n const [fields] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const versionsConfig = docConfig?.versions\n let interval = versionDefaults.autosaveInterval\n\n if (versionsConfig.drafts && versionsConfig.drafts.autosave) {\n interval = versionsConfig.drafts.autosave.interval\n }\n\n const validateOnDraft = Boolean(\n docConfig?.versions?.drafts && docConfig?.versions?.drafts.validate,\n )\n\n const [_saving, setSaving] = useState(false)\n const saving = useDeferredValue(_saving)\n const debouncedFields = useDebounce(fields, interval)\n const fieldRef = useRef(fields)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n /**\n * Track the validation internally so Autosave can determine when to run queue processing again\n * Helps us prevent infinite loops when the queue is processing and the form is invalid\n */\n const isValidRef = useRef(isValid)\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n fieldRef.current = fields\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n localeRef.current = locale\n\n const processQueue = React.useCallback(async () => {\n if (isProcessingRef.current || queueRef.current.length === 0) {\n return\n }\n\n // Do not autosave if the form is already processing (e.g. if the user clicked the publish button\n // right before this autosave runs), as parallel updates could cause conflicts\n if (isFormProcessing) {\n queueRef.current = []\n return\n }\n\n if (!isValidRef.current) {\n // Clear queue so we don't end up in an infinite loop\n queueRef.current = []\n // Reset internal validation state so queue processing can run again\n isValidRef.current = true\n return\n }\n isProcessingRef.current = true\n\n const latestAction = queueRef.current[queueRef.current.length - 1]\n queueRef.current = []\n\n setBackgroundProcessing(true)\n try {\n await latestAction()\n } finally {\n isProcessingRef.current = false\n setBackgroundProcessing(false)\n if (queueRef.current.length > 0) {\n await processQueue()\n }\n }\n setBackgroundProcessing(false)\n }, [isFormProcessing, setBackgroundProcessing])\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n const autosave = async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n if (url) {\n if (modifiedRef.current) {\n const { data, valid } = reduceFieldsToValuesWithValidation(fieldRef.current, true)\n\n data._status = 'draft'\n\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission && isValidRef.current) {\n let res\n try {\n res = await fetch(url, {\n body: JSON.stringify(data),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method,\n })\n } catch (error) {\n // Swallow Error\n }\n\n const newDate = new Date()\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n if (res.status === 200) {\n setLastUpdateTime(newDate.getTime())\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: newDate.toISOString(),\n })\n\n if (!mostRecentVersionIsAutosaved) {\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n }\n const json = await res.json()\n\n if (versionsConfig?.drafts && versionsConfig?.drafts?.validate && json?.errors) {\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || i18n.t('error:unknown'))\n })\n\n // Set valid to false internally so the queue doesn't process\n isValidRef.current = false\n setIsValid(false)\n setSubmitted(true)\n hideIndicator()\n return\n }\n } else {\n // If it's not an error then we can update the document data inside the context\n const document = json?.doc || json?.result\n\n // Manually update the data since this function doesn't fire the `submit` function from useForm\n if (document) {\n setIsValid(true)\n\n // Reset internal state allowing the queue to process\n isValidRef.current = true\n updateSavedDocumentData(document)\n }\n }\n\n hideIndicator()\n }\n }\n }\n }\n }\n\n queueRef.current.push(autosave)\n void processQueue()\n })\n\n const didMount = useRef(false)\n const previousDebouncedFieldValues = useRef(reduceFieldsToValues(debouncedFields))\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n */\n const debouncedFieldValues = reduceFieldsToValues(debouncedFields)\n if (dequal(debouncedFieldValues, previousDebouncedFieldValues)) {\n return\n }\n\n previousDebouncedFieldValues.current = debouncedFieldValues\n\n handleAutosave()\n }, [debouncedFields])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <div className={baseClass}>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && t('general:saving')}\n {!saving && Boolean(lastUpdateTime) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastUpdateTime, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["dequal","reduceFieldsToValues","versionDefaults","React","useDeferredValue","useEffect","useRef","useState","toast","useAllFormFields","useForm","useFormModified","useFormProcessing","useFormSubmitted","useDebounce","useEffectEvent","useConfig","useDocumentEvents","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","serverURL","docConfig","incrementVersionCount","lastUpdateTime","mostRecentVersionIsAutosaved","setLastUpdateTime","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","updateSavedDocumentData","queueRef","isProcessingRef","reportUpdate","dispatchFields","isValid","setBackgroundProcessing","setIsValid","setSubmitted","isFormProcessing","fields","modified","submitted","code","locale","i18n","t","versionsConfig","versions","interval","autosaveInterval","drafts","autosave","validateOnDraft","Boolean","validate","_saving","setSaving","saving","debouncedFields","fieldRef","modifiedRef","localeRef","isValidRef","current","processQueue","useCallback","length","latestAction","autosaveTimeoutRef","handleAutosave","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","slug","data","valid","_status","skipSubmission","res","fetch","body","JSON","stringify","credentials","headers","language","error","newDate","status","updatedAt","toISOString","prev","json","errors","Array","isArray","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","push","forEach","dataError","field","type","document","doc","result","didMount","previousDebouncedFieldValues","debouncedFieldValues","clearTimeout","_jsxs","className","_jsx","Fragment","distance","date"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { reduceFieldsToValues, versionDefaults } from 'payload/shared'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport './index.scss'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const {\n docConfig,\n incrementVersionCount,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n updateSavedDocumentData,\n } = useDocumentInfo()\n const queueRef = useRef([])\n const isProcessingRef = useRef(false)\n\n const { reportUpdate } = useDocumentEvents()\n const { dispatchFields, isValid, setBackgroundProcessing, setIsValid, setSubmitted } = useForm()\n const isFormProcessing = useFormProcessing()\n\n const [fields] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const versionsConfig = docConfig?.versions\n let interval = versionDefaults.autosaveInterval\n\n if (versionsConfig.drafts && versionsConfig.drafts.autosave) {\n interval = versionsConfig.drafts.autosave.interval\n }\n\n const validateOnDraft = Boolean(\n docConfig?.versions?.drafts && docConfig?.versions?.drafts.validate,\n )\n\n const [_saving, setSaving] = useState(false)\n const saving = useDeferredValue(_saving)\n const debouncedFields = useDebounce(fields, interval)\n const fieldRef = useRef(fields)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n /**\n * Track the validation internally so Autosave can determine when to run queue processing again\n * Helps us prevent infinite loops when the queue is processing and the form is invalid\n */\n const isValidRef = useRef(isValid)\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n fieldRef.current = fields\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n localeRef.current = locale\n\n const processQueue = React.useCallback(async () => {\n if (isProcessingRef.current || queueRef.current.length === 0) {\n return\n }\n\n // Do not autosave if the form is already processing (e.g. if the user clicked the publish button\n // right before this autosave runs), as parallel updates could cause conflicts\n if (isFormProcessing) {\n queueRef.current = []\n return\n }\n\n if (!isValidRef.current) {\n // Clear queue so we don't end up in an infinite loop\n queueRef.current = []\n // Reset internal validation state so queue processing can run again\n isValidRef.current = true\n return\n }\n isProcessingRef.current = true\n\n const latestAction = queueRef.current[queueRef.current.length - 1]\n queueRef.current = []\n\n setBackgroundProcessing(true)\n try {\n await latestAction()\n } finally {\n isProcessingRef.current = false\n setBackgroundProcessing(false)\n if (queueRef.current.length > 0) {\n await processQueue()\n }\n }\n setBackgroundProcessing(false)\n }, [isFormProcessing, setBackgroundProcessing])\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n const autosave = async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n if (url) {\n if (modifiedRef.current) {\n const { data, valid } = reduceFieldsToValuesWithValidation(fieldRef.current, true)\n\n data._status = 'draft'\n\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission && isValidRef.current) {\n let res\n try {\n res = await fetch(url, {\n body: JSON.stringify(data),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method,\n })\n } catch (error) {\n // Swallow Error\n }\n\n const newDate = new Date()\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n if (res.status === 200) {\n setLastUpdateTime(newDate.getTime())\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: newDate.toISOString(),\n })\n\n if (!mostRecentVersionIsAutosaved) {\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n }\n const json = await res.json()\n\n if (versionsConfig?.drafts && versionsConfig?.drafts?.validate && json?.errors) {\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || i18n.t('error:unknown'))\n })\n\n // Set valid to false internally so the queue doesn't process\n isValidRef.current = false\n setIsValid(false)\n setSubmitted(true)\n hideIndicator()\n return\n }\n } else {\n // If it's not an error then we can update the document data inside the context\n const document = json?.doc || json?.result\n\n // Manually update the data since this function doesn't fire the `submit` function from useForm\n if (document) {\n setIsValid(true)\n\n // Reset internal state allowing the queue to process\n isValidRef.current = true\n updateSavedDocumentData(document)\n }\n }\n\n hideIndicator()\n }\n }\n }\n }\n }\n\n queueRef.current.push(autosave)\n void processQueue()\n })\n\n const didMount = useRef(false)\n const previousDebouncedFieldValues = useRef(reduceFieldsToValues(debouncedFields))\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n */\n const debouncedFieldValues = reduceFieldsToValues(debouncedFields)\n if (dequal(debouncedFieldValues, previousDebouncedFieldValues)) {\n return\n }\n\n previousDebouncedFieldValues.current = debouncedFieldValues\n\n handleAutosave()\n }, [debouncedFields])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <div className={baseClass}>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && t('general:saving')}\n {!saving && Boolean(lastUpdateTime) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastUpdateTime, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/EditMany/DrawerContent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/EditMany/DrawerContent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAmC,MAAM,SAAS,CAAA;AAKtF,OAAO,KAAoD,MAAM,OAAO,CAAA;AAIxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAYvD,OAAO,EAAa,KAAK,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrE,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,gCAAgC,EAAE,KAAK,CAAC,EAAE,CACrD;IACE,UAAU,EAAE,sBAAsB,CAAA;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;CACtB,GAAG,wBAAwB,CA+J7B,CAAA"}
|
|
@@ -1,45 +1,36 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
4
|
import { useModal } from '@faceless-ui/modal';
|
|
6
5
|
import { getTranslation } from '@payloadcms/translations';
|
|
7
|
-
import
|
|
6
|
+
import { unflatten } from 'payload/shared';
|
|
7
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
8
8
|
import { Button } from '../../../elements/Button/index.js';
|
|
9
9
|
import { Form } from '../../../forms/Form/index.js';
|
|
10
10
|
import { RenderFields } from '../../../forms/RenderFields/index.js';
|
|
11
11
|
import { XIcon } from '../../../icons/X/index.js';
|
|
12
12
|
import { useAuth } from '../../../providers/Auth/index.js';
|
|
13
|
+
import { useServerFunctions } from '../../../providers/ServerFunctions/index.js';
|
|
13
14
|
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
14
|
-
import {
|
|
15
|
+
import { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js';
|
|
15
16
|
import { FieldSelect } from '../../FieldSelect/index.js';
|
|
16
17
|
import { useFormsManager } from '../FormsManager/index.js';
|
|
17
18
|
import { baseClass } from './index.js';
|
|
18
19
|
import './index.scss';
|
|
19
20
|
export const EditManyBulkUploadsDrawerContent = props => {
|
|
20
|
-
const $ = _c(24);
|
|
21
21
|
const {
|
|
22
|
-
collection:
|
|
22
|
+
collection: {
|
|
23
|
+
fields,
|
|
24
|
+
labels: {
|
|
25
|
+
plural,
|
|
26
|
+
singular
|
|
27
|
+
}
|
|
28
|
+
} = {},
|
|
29
|
+
collection,
|
|
23
30
|
drawerSlug,
|
|
24
31
|
forms
|
|
25
32
|
} = props;
|
|
26
|
-
|
|
27
|
-
if ($[0] !== t0) {
|
|
28
|
-
t1 = t0 === undefined ? {} : t0;
|
|
29
|
-
$[0] = t0;
|
|
30
|
-
$[1] = t1;
|
|
31
|
-
} else {
|
|
32
|
-
t1 = $[1];
|
|
33
|
-
}
|
|
34
|
-
const {
|
|
35
|
-
slug,
|
|
36
|
-
fields,
|
|
37
|
-
labels: t2
|
|
38
|
-
} = t1;
|
|
39
|
-
const {
|
|
40
|
-
plural,
|
|
41
|
-
singular
|
|
42
|
-
} = t2;
|
|
33
|
+
const [isInitializing, setIsInitializing] = useState(false);
|
|
43
34
|
const {
|
|
44
35
|
permissions
|
|
45
36
|
} = useAuth();
|
|
@@ -53,116 +44,141 @@ export const EditManyBulkUploadsDrawerContent = props => {
|
|
|
53
44
|
const {
|
|
54
45
|
bulkUpdateForm
|
|
55
46
|
} = useFormsManager();
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
47
|
+
const {
|
|
48
|
+
getFormState
|
|
49
|
+
} = useServerFunctions();
|
|
50
|
+
const abortFormStateRef = React.useRef(null);
|
|
51
|
+
const [selectedFields, setSelectedFields] = useState([]);
|
|
52
|
+
const collectionPermissions = permissions?.collections?.[collection.slug];
|
|
53
|
+
const select = useMemo(() => {
|
|
54
|
+
return unflatten(selectedFields.reduce((acc, field) => {
|
|
55
|
+
acc[field.path] = true;
|
|
56
|
+
return acc;
|
|
57
|
+
}, {}));
|
|
58
|
+
}, [selectedFields]);
|
|
59
|
+
const onChange = useCallback(async ({
|
|
60
|
+
formState: prevFormState,
|
|
61
|
+
submitted
|
|
62
|
+
}) => {
|
|
63
|
+
const controller = handleAbortRef(abortFormStateRef);
|
|
64
|
+
const {
|
|
65
|
+
state
|
|
66
|
+
} = await getFormState({
|
|
67
|
+
collectionSlug: collection.slug,
|
|
68
|
+
docPermissions: collectionPermissions,
|
|
69
|
+
docPreferences: null,
|
|
70
|
+
formState: prevFormState,
|
|
71
|
+
operation: 'update',
|
|
72
|
+
schemaPath: collection.slug,
|
|
73
|
+
select,
|
|
74
|
+
signal: controller.signal,
|
|
75
|
+
skipValidation: !submitted
|
|
76
|
+
});
|
|
77
|
+
abortFormStateRef.current = null;
|
|
78
|
+
return state;
|
|
79
|
+
}, [getFormState, collection, collectionPermissions, select]);
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
const abortFormState = abortFormStateRef.current;
|
|
82
|
+
return () => {
|
|
83
|
+
abortAndIgnore(abortFormState);
|
|
84
|
+
};
|
|
85
|
+
}, []);
|
|
86
|
+
const handleSubmit = useCallback(formState => {
|
|
87
|
+
const pairedData = selectedFields.reduce((acc_0, field_0) => {
|
|
88
|
+
const {
|
|
89
|
+
path
|
|
90
|
+
} = field_0;
|
|
91
|
+
if (formState[path]) {
|
|
92
|
+
acc_0[path] = formState[path].value;
|
|
93
|
+
}
|
|
94
|
+
return acc_0;
|
|
95
|
+
}, {});
|
|
96
|
+
void bulkUpdateForm(pairedData, () => closeModal(drawerSlug));
|
|
97
|
+
}, [closeModal, drawerSlug, bulkUpdateForm, selectedFields]);
|
|
98
|
+
const onFieldSelect = useCallback(async ({
|
|
99
|
+
dispatchFields,
|
|
100
|
+
formState: formState_0,
|
|
101
|
+
selected
|
|
102
|
+
}) => {
|
|
103
|
+
setIsInitializing(true);
|
|
104
|
+
if (selected === null) {
|
|
105
|
+
setSelectedFields([]);
|
|
97
106
|
} else {
|
|
98
|
-
|
|
107
|
+
setSelectedFields(selected.map(({
|
|
108
|
+
value
|
|
109
|
+
}) => value));
|
|
99
110
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
111
|
+
const {
|
|
112
|
+
state: state_0
|
|
113
|
+
} = await getFormState({
|
|
114
|
+
collectionSlug: collection.slug,
|
|
115
|
+
docPermissions: collectionPermissions,
|
|
116
|
+
docPreferences: null,
|
|
117
|
+
formState: formState_0,
|
|
118
|
+
operation: 'update',
|
|
119
|
+
schemaPath: collection.slug,
|
|
120
|
+
select: unflatten(selected.reduce((acc_1, option) => {
|
|
121
|
+
acc_1[option.value.path] = true;
|
|
122
|
+
return acc_1;
|
|
123
|
+
}, {})),
|
|
124
|
+
skipValidation: true
|
|
125
|
+
});
|
|
126
|
+
dispatchFields({
|
|
127
|
+
type: 'UPDATE_MANY',
|
|
128
|
+
formState: state_0
|
|
129
|
+
});
|
|
130
|
+
setIsInitializing(false);
|
|
131
|
+
}, [getFormState, collection, collectionPermissions]);
|
|
132
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
133
|
+
className: `${baseClass}__main`,
|
|
134
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
135
|
+
className: `${baseClass}__header`,
|
|
136
|
+
children: [/*#__PURE__*/_jsx("h2", {
|
|
137
|
+
className: `${baseClass}__header__title`,
|
|
138
|
+
children: t('general:editingLabel', {
|
|
139
|
+
count: forms.length,
|
|
140
|
+
label: getTranslation(forms.length > 1 ? plural : singular, i18n)
|
|
141
|
+
})
|
|
142
|
+
}), /*#__PURE__*/_jsx("button", {
|
|
143
|
+
"aria-label": t('general:close'),
|
|
144
|
+
className: `${baseClass}__header__close`,
|
|
145
|
+
id: `close-drawer__${drawerSlug}`,
|
|
146
|
+
onClick: () => closeModal(drawerSlug),
|
|
147
|
+
type: "button",
|
|
148
|
+
children: /*#__PURE__*/_jsx(XIcon, {})
|
|
149
|
+
})]
|
|
150
|
+
}), /*#__PURE__*/_jsxs(Form, {
|
|
151
|
+
className: `${baseClass}__form`,
|
|
152
|
+
isInitializing: isInitializing,
|
|
153
|
+
onChange: [onChange],
|
|
154
|
+
onSubmit: handleSubmit,
|
|
155
|
+
children: [/*#__PURE__*/_jsx(FieldSelect, {
|
|
156
|
+
fields: fields,
|
|
157
|
+
onChange: onFieldSelect
|
|
158
|
+
}), selectedFields.length === 0 ? null : /*#__PURE__*/_jsx(RenderFields, {
|
|
159
|
+
fields: selectedFields,
|
|
160
|
+
parentIndexPath: "",
|
|
161
|
+
parentPath: "",
|
|
162
|
+
parentSchemaPath: collection.slug,
|
|
163
|
+
permissions: collectionPermissions?.fields,
|
|
164
|
+
readOnly: false
|
|
165
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
166
|
+
className: `${baseClass}__sidebar-wrap`,
|
|
167
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
168
|
+
className: `${baseClass}__sidebar`,
|
|
169
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
170
|
+
className: `${baseClass}__sidebar-sticky-wrap`,
|
|
171
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
172
|
+
className: `${baseClass}__document-actions`,
|
|
173
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
174
|
+
type: "submit",
|
|
175
|
+
children: t('general:applyChanges')
|
|
144
176
|
})
|
|
145
177
|
})
|
|
146
178
|
})
|
|
147
|
-
})
|
|
179
|
+
})
|
|
148
180
|
})]
|
|
149
|
-
})
|
|
150
|
-
|
|
151
|
-
$[4] = closeModal;
|
|
152
|
-
$[5] = collectionPermissions?.fields;
|
|
153
|
-
$[6] = drawerSlug;
|
|
154
|
-
$[7] = fields;
|
|
155
|
-
$[8] = forms.length;
|
|
156
|
-
$[9] = i18n;
|
|
157
|
-
$[10] = plural;
|
|
158
|
-
$[11] = selectedFields;
|
|
159
|
-
$[12] = singular;
|
|
160
|
-
$[13] = slug;
|
|
161
|
-
$[14] = t;
|
|
162
|
-
$[15] = t4;
|
|
163
|
-
} else {
|
|
164
|
-
t4 = $[15];
|
|
165
|
-
}
|
|
166
|
-
return t4;
|
|
181
|
+
})]
|
|
182
|
+
});
|
|
167
183
|
};
|
|
168
184
|
//# sourceMappingURL=DrawerContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerContent.js","names":["c","_c","useModal","getTranslation","React","useCallback","useState","Button","Form","RenderFields","XIcon","useAuth","useTranslation","filterOutUploadFields","FieldSelect","useFormsManager","baseClass","EditManyBulkUploadsDrawerContent","props","$","collection","t0","drawerSlug","forms","t1","undefined","slug","fields","labels","t2","plural","singular","permissions","i18n","t","closeModal","bulkUpdateForm","t3","Symbol","for","selectedFields","setSelectedFields","collectionPermissions","collections","t4","length","filteredFields","t5","formState","pairedData","reduce","acc","field","path","value","handleSubmit","t6","_jsxs","className","children","_jsx","count","label","id","onClick","type","initialState","onSubmit","setSelected","parentIndexPath","parentPath","parentSchemaPath","readOnly"],"sources":["../../../../src/elements/BulkUpload/EditMany/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, FieldWithPathClient } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useState } from 'react'\n\nimport type { FormProps } from '../../../forms/Form/index.js'\nimport type { State } from '../FormsManager/reducer.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { Form } from '../../../forms/Form/index.js'\nimport { RenderFields } from '../../../forms/RenderFields/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { filterOutUploadFields } from '../../../utilities/filterOutUploadFields.js'\nimport { FieldSelect } from '../../FieldSelect/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { baseClass, type EditManyBulkUploadsProps } from './index.js'\nimport './index.scss'\n\nexport const EditManyBulkUploadsDrawerContent: React.FC<\n {\n collection: ClientCollectionConfig\n drawerSlug: string\n forms: State['forms']\n } & EditManyBulkUploadsProps\n> = (props) => {\n const {\n collection: { slug, fields, labels: { plural, singular } } = {},\n drawerSlug,\n forms,\n } = props\n\n const { permissions } = useAuth()\n const { i18n, t } = useTranslation()\n const { closeModal } = useModal()\n const { bulkUpdateForm } = useFormsManager()\n\n const [selectedFields, setSelectedFields] = useState<FieldWithPathClient[]>([])\n const collectionPermissions = permissions?.collections?.[slug]\n const filteredFields = filterOutUploadFields(fields)\n\n const handleSubmit: FormProps['onSubmit'] = useCallback(\n (formState) => {\n const pairedData = selectedFields.reduce((acc, field) => {\n const { path } = field\n if (formState[path]) {\n acc[path] = formState[path].value\n }\n return acc\n }, {})\n\n void bulkUpdateForm(pairedData, () => closeModal(drawerSlug))\n },\n [closeModal, drawerSlug, bulkUpdateForm, selectedFields],\n )\n\n return (\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', {\n count: forms.length,\n label: getTranslation(forms.length > 1 ? plural : singular, i18n),\n })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form className={`${baseClass}__form`} initialState={{}} onSubmit={handleSubmit}>\n <FieldSelect fields={filteredFields} setSelected={setSelectedFields} />\n {selectedFields.length === 0 ? null : (\n <RenderFields\n fields={selectedFields}\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={slug}\n permissions={collectionPermissions?.fields}\n readOnly={false}\n />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n <Button type=\"submit\">{t('general:applyChanges')}</Button>\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DrawerContent.js","names":["useModal","getTranslation","unflatten","React","useCallback","useEffect","useMemo","useState","Button","Form","RenderFields","XIcon","useAuth","useServerFunctions","useTranslation","abortAndIgnore","handleAbortRef","FieldSelect","useFormsManager","baseClass","EditManyBulkUploadsDrawerContent","props","collection","fields","labels","plural","singular","drawerSlug","forms","isInitializing","setIsInitializing","permissions","i18n","t","closeModal","bulkUpdateForm","getFormState","abortFormStateRef","useRef","selectedFields","setSelectedFields","collectionPermissions","collections","slug","select","reduce","acc","field","path","onChange","formState","prevFormState","submitted","controller","state","collectionSlug","docPermissions","docPreferences","operation","schemaPath","signal","skipValidation","current","abortFormState","handleSubmit","pairedData","value","onFieldSelect","dispatchFields","selected","map","option","type","_jsxs","className","_jsx","count","length","label","id","onClick","onSubmit","parentIndexPath","parentPath","parentSchemaPath","readOnly"],"sources":["../../../../src/elements/BulkUpload/EditMany/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, FieldWithPathClient, SelectType } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { unflatten } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { FormProps } from '../../../forms/Form/index.js'\nimport type { OnFieldSelect } from '../../FieldSelect/index.js'\nimport type { State } from '../FormsManager/reducer.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { Form } from '../../../forms/Form/index.js'\nimport { RenderFields } from '../../../forms/RenderFields/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js'\nimport { FieldSelect } from '../../FieldSelect/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { baseClass, type EditManyBulkUploadsProps } from './index.js'\nimport './index.scss'\n\nexport const EditManyBulkUploadsDrawerContent: React.FC<\n {\n collection: ClientCollectionConfig\n drawerSlug: string\n forms: State['forms']\n } & EditManyBulkUploadsProps\n> = (props) => {\n const {\n collection: { fields, labels: { plural, singular } } = {},\n collection,\n drawerSlug,\n forms,\n } = props\n\n const [isInitializing, setIsInitializing] = useState(false)\n const { permissions } = useAuth()\n const { i18n, t } = useTranslation()\n const { closeModal } = useModal()\n const { bulkUpdateForm } = useFormsManager()\n const { getFormState } = useServerFunctions()\n const abortFormStateRef = React.useRef<AbortController>(null)\n\n const [selectedFields, setSelectedFields] = useState<FieldWithPathClient[]>([])\n const collectionPermissions = permissions?.collections?.[collection.slug]\n\n const select = useMemo<SelectType>(() => {\n return unflatten(\n selectedFields.reduce((acc, field) => {\n acc[field.path] = true\n return acc\n }, {} as SelectType),\n )\n }, [selectedFields])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortFormStateRef)\n\n const { state } = await getFormState({\n collectionSlug: collection.slug,\n docPermissions: collectionPermissions,\n docPreferences: null,\n formState: prevFormState,\n operation: 'update',\n schemaPath: collection.slug,\n select,\n signal: controller.signal,\n skipValidation: !submitted,\n })\n\n abortFormStateRef.current = null\n\n return state\n },\n [getFormState, collection, collectionPermissions, select],\n )\n\n useEffect(() => {\n const abortFormState = abortFormStateRef.current\n\n return () => {\n abortAndIgnore(abortFormState)\n }\n }, [])\n\n const handleSubmit: FormProps['onSubmit'] = useCallback(\n (formState) => {\n const pairedData = selectedFields.reduce((acc, field) => {\n const { path } = field\n if (formState[path]) {\n acc[path] = formState[path].value\n }\n return acc\n }, {})\n\n void bulkUpdateForm(pairedData, () => closeModal(drawerSlug))\n },\n [closeModal, drawerSlug, bulkUpdateForm, selectedFields],\n )\n\n const onFieldSelect = useCallback<OnFieldSelect>(\n async ({ dispatchFields, formState, selected }) => {\n setIsInitializing(true)\n\n if (selected === null) {\n setSelectedFields([])\n } else {\n setSelectedFields(selected.map(({ value }) => value))\n }\n\n const { state } = await getFormState({\n collectionSlug: collection.slug,\n docPermissions: collectionPermissions,\n docPreferences: null,\n formState,\n operation: 'update',\n schemaPath: collection.slug,\n select: unflatten(\n selected.reduce((acc, option) => {\n acc[option.value.path] = true\n return acc\n }, {} as SelectType),\n ),\n skipValidation: true,\n })\n\n dispatchFields({\n type: 'UPDATE_MANY',\n formState: state,\n })\n\n setIsInitializing(false)\n },\n [getFormState, collection, collectionPermissions],\n )\n\n return (\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', {\n count: forms.length,\n label: getTranslation(forms.length > 1 ? plural : singular, i18n),\n })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n isInitializing={isInitializing}\n onChange={[onChange]}\n onSubmit={handleSubmit}\n >\n <FieldSelect fields={fields} onChange={onFieldSelect} />\n {selectedFields.length === 0 ? null : (\n <RenderFields\n fields={selectedFields}\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={collection.slug}\n permissions={collectionPermissions?.fields}\n readOnly={false}\n />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n <Button type=\"submit\">{t('general:applyChanges')}</Button>\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAIA,SAASA,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,QAAQ;AAC1B,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ;AAMjE,SAASC,MAAM,QAAQ;AACvB,SAASC,IAAI,QAAQ;AACrB,SAASC,YAAY,QAAQ;AAC7B,SAASC,KAAK,QAAQ;AACtB,SAASC,OAAO,QAAQ;AACxB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,EAAEC,cAAc,QAAQ;AAC/C,SAASC,WAAW,QAAQ;AAC5B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAuC;AACzD,OAAO;AAEP,OAAO,MAAMC,gCAAA,GAMRC,KAAA;EACH,MAAM;IACJC,UAAA,EAAY;MAAEC,MAAM;MAAEC,MAAA,EAAQ;QAAEC,MAAM;QAAEC;MAAQ;IAAE,CAAE,GAAG,CAAC,CAAC;IACzDJ,UAAU;IACVK,UAAU;IACVC;EAAK,CACN,GAAGP,KAAA;EAEJ,MAAM,CAACQ,cAAA,EAAgBC,iBAAA,CAAkB,GAAGvB,QAAA,CAAS;EACrD,MAAM;IAAEwB;EAAW,CAAE,GAAGnB,OAAA;EACxB,MAAM;IAAEoB,IAAI;IAAEC;EAAC,CAAE,GAAGnB,cAAA;EACpB,MAAM;IAAEoB;EAAU,CAAE,GAAGlC,QAAA;EACvB,MAAM;IAAEmC;EAAc,CAAE,GAAGjB,eAAA;EAC3B,MAAM;IAAEkB;EAAY,CAAE,GAAGvB,kBAAA;EACzB,MAAMwB,iBAAA,GAAoBlC,KAAA,CAAMmC,MAAM,CAAkB;EAExD,MAAM,CAACC,cAAA,EAAgBC,iBAAA,CAAkB,GAAGjC,QAAA,CAAgC,EAAE;EAC9E,MAAMkC,qBAAA,GAAwBV,WAAA,EAAaW,WAAA,GAAcpB,UAAA,CAAWqB,IAAI,CAAC;EAEzE,MAAMC,MAAA,GAAStC,OAAA,CAAoB;IACjC,OAAOJ,SAAA,CACLqC,cAAA,CAAeM,MAAM,CAAC,CAACC,GAAA,EAAKC,KAAA;MAC1BD,GAAG,CAACC,KAAA,CAAMC,IAAI,CAAC,GAAG;MAClB,OAAOF,GAAA;IACT,GAAG,CAAC;EAER,GAAG,CAACP,cAAA,CAAe;EAEnB,MAAMU,QAAA,GAAqC7C,WAAA,CACzC,OAAO;IAAE8C,SAAA,EAAWC,aAAa;IAAEC;EAAS,CAAE;IAC5C,MAAMC,UAAA,GAAarC,cAAA,CAAeqB,iBAAA;IAElC,MAAM;MAAEiB;IAAK,CAAE,GAAG,MAAMlB,YAAA,CAAa;MACnCmB,cAAA,EAAgBjC,UAAA,CAAWqB,IAAI;MAC/Ba,cAAA,EAAgBf,qBAAA;MAChBgB,cAAA,EAAgB;MAChBP,SAAA,EAAWC,aAAA;MACXO,SAAA,EAAW;MACXC,UAAA,EAAYrC,UAAA,CAAWqB,IAAI;MAC3BC,MAAA;MACAgB,MAAA,EAAQP,UAAA,CAAWO,MAAM;MACzBC,cAAA,EAAgB,CAACT;IACnB;IAEAf,iBAAA,CAAkByB,OAAO,GAAG;IAE5B,OAAOR,KAAA;EACT,GACA,CAAClB,YAAA,EAAcd,UAAA,EAAYmB,qBAAA,EAAuBG,MAAA,CAAO;EAG3DvC,SAAA,CAAU;IACR,MAAM0D,cAAA,GAAiB1B,iBAAA,CAAkByB,OAAO;IAEhD,OAAO;MACL/C,cAAA,CAAegD,cAAA;IACjB;EACF,GAAG,EAAE;EAEL,MAAMC,YAAA,GAAsC5D,WAAA,CACzC8C,SAAA;IACC,MAAMe,UAAA,GAAa1B,cAAA,CAAeM,MAAM,CAAC,CAACC,KAAA,EAAKC,OAAA;MAC7C,MAAM;QAAEC;MAAI,CAAE,GAAGD,OAAA;MACjB,IAAIG,SAAS,CAACF,IAAA,CAAK,EAAE;QACnBF,KAAG,CAACE,IAAA,CAAK,GAAGE,SAAS,CAACF,IAAA,CAAK,CAACkB,KAAK;MACnC;MACA,OAAOpB,KAAA;IACT,GAAG,CAAC;IAEJ,KAAKX,cAAA,CAAe8B,UAAA,EAAY,MAAM/B,UAAA,CAAWP,UAAA;EACnD,GACA,CAACO,UAAA,EAAYP,UAAA,EAAYQ,cAAA,EAAgBI,cAAA,CAAe;EAG1D,MAAM4B,aAAA,GAAgB/D,WAAA,CACpB,OAAO;IAAEgE,cAAc;IAAElB,SAAS,EAATA,WAAS;IAAEmB;EAAQ,CAAE;IAC5CvC,iBAAA,CAAkB;IAElB,IAAIuC,QAAA,KAAa,MAAM;MACrB7B,iBAAA,CAAkB,EAAE;IACtB,OAAO;MACLA,iBAAA,CAAkB6B,QAAA,CAASC,GAAG,CAAC,CAAC;QAAEJ;MAAK,CAAE,KAAKA,KAAA;IAChD;IAEA,MAAM;MAAEZ,KAAK,EAALA;IAAK,CAAE,GAAG,MAAMlB,YAAA,CAAa;MACnCmB,cAAA,EAAgBjC,UAAA,CAAWqB,IAAI;MAC/Ba,cAAA,EAAgBf,qBAAA;MAChBgB,cAAA,EAAgB;MAChBP,SAAA,EAAAA,WAAA;MACAQ,SAAA,EAAW;MACXC,UAAA,EAAYrC,UAAA,CAAWqB,IAAI;MAC3BC,MAAA,EAAQ1C,SAAA,CACNmE,QAAA,CAASxB,MAAM,CAAC,CAACC,KAAA,EAAKyB,MAAA;QACpBzB,KAAG,CAACyB,MAAA,CAAOL,KAAK,CAAClB,IAAI,CAAC,GAAG;QACzB,OAAOF,KAAA;MACT,GAAG,CAAC;MAENe,cAAA,EAAgB;IAClB;IAEAO,cAAA,CAAe;MACbI,IAAA,EAAM;MACNtB,SAAA,EAAWI;IACb;IAEAxB,iBAAA,CAAkB;EACpB,GACA,CAACM,YAAA,EAAcd,UAAA,EAAYmB,qBAAA,CAAsB;EAGnD,oBACEgC,KAAA,CAAC;IAAIC,SAAA,EAAW,GAAGvD,SAAA,QAAiB;4BAClCsD,KAAA,CAAC;MAAIC,SAAA,EAAW,GAAGvD,SAAA,UAAmB;8BACpCwD,IAAA,CAAC;QAAGD,SAAA,EAAW,GAAGvD,SAAA,iBAA0B;kBACzCc,CAAA,CAAE,wBAAwB;UACzB2C,KAAA,EAAOhD,KAAA,CAAMiD,MAAM;UACnBC,KAAA,EAAO7E,cAAA,CAAe2B,KAAA,CAAMiD,MAAM,GAAG,IAAIpD,MAAA,GAASC,QAAA,EAAUM,IAAA;QAC9D;uBAEF2C,IAAA,CAAC;QACC,cAAY1C,CAAA,CAAE;QACdyC,SAAA,EAAW,GAAGvD,SAAA,iBAA0B;QACxC4D,EAAA,EAAI,iBAAiBpD,UAAA,EAAY;QACjCqD,OAAA,EAASA,CAAA,KAAM9C,UAAA,CAAWP,UAAA;QAC1B6C,IAAA,EAAK;kBAEL,aAAAG,IAAA,CAAChE,KAAA;;qBAGL8D,KAAA,CAAChE,IAAA;MACCiE,SAAA,EAAW,GAAGvD,SAAA,QAAiB;MAC/BU,cAAA,EAAgBA,cAAA;MAChBoB,QAAA,EAAU,CAACA,QAAA,CAAS;MACpBgC,QAAA,EAAUjB,YAAA;8BAEVW,IAAA,CAAC1D,WAAA;QAAYM,MAAA,EAAQA,MAAA;QAAQ0B,QAAA,EAAUkB;UACtC5B,cAAA,CAAesC,MAAM,KAAK,IAAI,oBAC7BF,IAAA,CAACjE,YAAA;QACCa,MAAA,EAAQgB,cAAA;QACR2C,eAAA,EAAgB;QAChBC,UAAA,EAAW;QACXC,gBAAA,EAAkB9D,UAAA,CAAWqB,IAAI;QACjCZ,WAAA,EAAaU,qBAAA,EAAuBlB,MAAA;QACpC8D,QAAA,EAAU;uBAGdV,IAAA,CAAC;QAAID,SAAA,EAAW,GAAGvD,SAAA,gBAAyB;kBAC1C,aAAAwD,IAAA,CAAC;UAAID,SAAA,EAAW,GAAGvD,SAAA,WAAoB;oBACrC,aAAAwD,IAAA,CAAC;YAAID,SAAA,EAAW,GAAGvD,SAAA,uBAAgC;sBACjD,aAAAwD,IAAA,CAAC;cAAID,SAAA,EAAW,GAAGvD,SAAA,oBAA6B;wBAC9C,aAAAwD,IAAA,CAACnE,MAAA;gBAAOgE,IAAA,EAAK;0BAAUvC,CAAA,CAAE;;;;;;;;AAQzC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/EditMany/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/EditMany/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,2BAA2B,CAAA;AAEjD,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAA;CAC5C,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAqClE,CAAA"}
|
|
@@ -8,8 +8,8 @@ import { EditDepthProvider } from '../../../providers/EditDepth/index.js';
|
|
|
8
8
|
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
9
9
|
import { Drawer, DrawerToggler } from '../../Drawer/index.js';
|
|
10
10
|
import { useFormsManager } from '../FormsManager/index.js';
|
|
11
|
-
import './index.scss';
|
|
12
11
|
import { EditManyBulkUploadsDrawerContent } from './DrawerContent.js';
|
|
12
|
+
import './index.scss';
|
|
13
13
|
export const baseClass = 'edit-many-bulk-uploads';
|
|
14
14
|
export const EditManyBulkUploads = props => {
|
|
15
15
|
const $ = _c(5);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","React","useAuth","EditDepthProvider","useTranslation","Drawer","DrawerToggler","useFormsManager","EditManyBulkUploadsDrawerContent","baseClass","EditManyBulkUploads","props","$","collection","t0","slug","undefined","permissions","t","forms","collectionPermissions","collections","hasUpdatePermission","update","drawerSlug","t1","_jsxs","className","children","_jsx","Header"],"sources":["../../../../src/elements/BulkUpload/EditMany/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../../Drawer/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","useAuth","EditDepthProvider","useTranslation","Drawer","DrawerToggler","useFormsManager","EditManyBulkUploadsDrawerContent","baseClass","EditManyBulkUploads","props","$","collection","t0","slug","undefined","permissions","t","forms","collectionPermissions","collections","hasUpdatePermission","update","drawerSlug","t1","_jsxs","className","children","_jsx","Header"],"sources":["../../../../src/elements/BulkUpload/EditMany/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../../Drawer/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { EditManyBulkUploadsDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'edit-many-bulk-uploads'\n\nexport type EditManyBulkUploadsProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditManyBulkUploads: React.FC<EditManyBulkUploadsProps> = (props) => {\n const { collection: { slug } = {}, collection } = props\n\n const { permissions } = useAuth()\n\n const { t } = useTranslation()\n const { forms } = useFormsManager() // Access forms managed in bulk uploads\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update\n\n const drawerSlug = `edit-${slug}-bulk-uploads`\n\n if (!hasUpdatePermission) {\n return null\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:editAll')}\n className={`${baseClass}__toggle`}\n slug={drawerSlug}\n >\n {t('general:editAll')}\n </DrawerToggler>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyBulkUploadsDrawerContent\n collection={collection}\n drawerSlug={drawerSlug}\n forms={forms}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,OAAOC,KAAA,MAAW;AAElB,SAASC,OAAO,QAAQ;AACxB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,EAAEC,aAAa,QAAQ;AACtC,SAASC,eAAe,QAAQ;AAChC,SAASC,gCAAgC,QAAQ;AACjD,OAAO;AAEP,OAAO,MAAMC,SAAA,GAAY;AAMzB,OAAO,MAAMC,mBAAA,GAA0DC,KAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EACrE;IAAAa,UAAA,EAAAC,EAAA;IAAAD;EAAA,IAAkDF,KAAA;EAA9B;IAAAI;EAAA,IAAAD,EAAa,KAAAE,SAAA,QAAbF,EAAa;EAEjC;IAAAG;EAAA,IAAwBf,OAAA;EAExB;IAAAgB;EAAA,IAAcd,cAAA;EACd;IAAAe;EAAA,IAAkBZ,eAAA;EAElB,MAAAa,qBAAA,GAA8BH,WAAA,EAAAI,WAAA,GAA2BN,IAAA;EACzD,MAAAO,mBAAA,GAA4BF,qBAAA,EAAAG,MAAA;EAE5B,MAAAC,UAAA,GAAmB,QAAQT,IAAA,eAAmB;EAAA,KAEzCO,mBAAA;IAAA;EAAA;EAAA,IAAAG,EAAA;EAAA,IAAAb,CAAA,QAAAC,UAAA,IAAAD,CAAA,QAAAY,UAAA,IAAAZ,CAAA,QAAAO,KAAA,IAAAP,CAAA,QAAAM,CAAA;IAKHO,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAAlB,SAAA;MAAAmB,QAAA,GACCC,IAAA,CAAAvB,aAAA;QAAA,cACcY,CAAA,CAAE;QAAAS,SAAA,EACH,GAAAlB,SAAA,UAAsB;QAAAM,IAAA,EAC3BS,UAAA;QAAAI,QAAA,EAELV,CAAA,CAAE;MAAA,C,GAELW,IAAA,CAAA1B,iBAAA;QAAAyB,QAAA,EACEC,IAAA,CAAAxB,MAAA;UAAAyB,MAAA;UAAAf,IAAA,EAA4BS,UAAA;UAAAI,QAAA,EAC1BC,IAAA,CAAArB,gCAAA;YAAAK,UAAA;YAAAW,UAAA;YAAAL;UAAA,C;;;;;;;;;;;;SAVNM,E;CAmBJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,cAAc,CAAA;AASrB,wBAAgB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,cAAc,CAAA;AASrB,wBAAgB,WAAW,sBA6K1B"}
|
|
@@ -111,7 +111,7 @@ export function FileSidebar() {
|
|
|
111
111
|
errorCount,
|
|
112
112
|
formState
|
|
113
113
|
} = t9;
|
|
114
|
-
const currentFile = formState
|
|
114
|
+
const currentFile = formState?.file?.value || {};
|
|
115
115
|
return _jsxs("div", {
|
|
116
116
|
className: [`${baseClass}__fileRowContainer`, index_0 === activeIndex && `${baseClass}__fileRowContainer--active`, errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`].filter(Boolean).join(" "),
|
|
117
117
|
children: [_jsxs("button", {
|
|
@@ -120,18 +120,18 @@ export function FileSidebar() {
|
|
|
120
120
|
type: "button",
|
|
121
121
|
children: [_jsx(Thumbnail, {
|
|
122
122
|
className: `${baseClass}__thumbnail`,
|
|
123
|
-
fileSrc: isImage(currentFile.type) ? thumbnailUrls[index_0] :
|
|
123
|
+
fileSrc: isImage(currentFile.type) ? thumbnailUrls[index_0] : null
|
|
124
124
|
}), _jsx("div", {
|
|
125
125
|
className: `${baseClass}__fileDetails`,
|
|
126
126
|
children: _jsx("p", {
|
|
127
127
|
className: `${baseClass}__fileName`,
|
|
128
128
|
title: currentFile.name,
|
|
129
|
-
children: currentFile.name
|
|
129
|
+
children: currentFile.name || t("upload:noFile")
|
|
130
130
|
})
|
|
131
|
-
}), _jsx("p", {
|
|
131
|
+
}), currentFile instanceof File ? _jsx("p", {
|
|
132
132
|
className: `${baseClass}__fileSize`,
|
|
133
133
|
children: getFileSize(currentFile)
|
|
134
|
-
}), _jsx("div", {
|
|
134
|
+
}) : null, _jsx("div", {
|
|
135
135
|
className: `${baseClass}__remove ${baseClass}__remove--underlay`,
|
|
136
136
|
children: _jsx(XIcon, {})
|
|
137
137
|
}), errorCount ? _jsx(ErrorPill, {
|