payload 0.14.22-beta.0 → 0.14.23-beta.0
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/CHANGELOG.md +110 -0
- package/components/index.js +10 -2
- package/components/styles.css +1 -1
- package/dist/admin/components/Routes.js +81 -29
- package/dist/admin/components/elements/Autosave/index.d.ts +5 -0
- package/dist/admin/components/elements/Autosave/index.js +116 -0
- package/dist/admin/components/elements/Autosave/index.scss +5 -0
- package/dist/admin/components/elements/Autosave/types.d.ts +8 -0
- package/dist/admin/components/elements/Autosave/types.js +1 -0
- package/dist/admin/components/elements/Banner/index.scss +1 -2
- package/dist/admin/components/elements/Button/index.js +2 -1
- package/dist/admin/components/elements/Button/index.scss +26 -9
- package/dist/admin/components/elements/DeleteDocument/index.js +2 -8
- package/dist/admin/components/elements/IDLabel/index.d.ts +7 -0
- package/dist/admin/components/elements/IDLabel/index.js +8 -0
- package/dist/admin/components/elements/IDLabel/index.scss +11 -0
- package/dist/admin/components/elements/PerPage/index.d.ts +1 -2
- package/dist/admin/components/elements/PerPage/index.js +3 -2
- package/dist/admin/components/elements/Pill/index.scss +36 -10
- package/dist/admin/components/elements/Pill/types.d.ts +1 -1
- package/dist/admin/components/elements/PreviewButton/index.d.ts +1 -0
- package/dist/admin/components/elements/PreviewButton/index.js +3 -2
- package/dist/admin/components/elements/PreviewButton/index.scss +1 -0
- package/dist/admin/components/elements/Publish/index.d.ts +4 -0
- package/dist/admin/components/elements/Publish/index.js +20 -0
- package/dist/admin/components/elements/Publish/types.d.ts +1 -0
- package/dist/admin/components/elements/Publish/types.js +1 -0
- package/dist/admin/components/elements/ReactSelect/index.js +2 -2
- package/dist/admin/components/elements/ReactSelect/index.scss +4 -4
- package/dist/admin/components/elements/ReactSelect/types.d.ts +1 -0
- package/dist/admin/components/elements/RenderTitle/index.d.ts +0 -1
- package/dist/admin/components/elements/RenderTitle/index.js +6 -9
- package/dist/admin/components/elements/SaveDraft/index.d.ts +4 -0
- package/dist/admin/components/elements/SaveDraft/index.js +39 -0
- package/dist/admin/components/elements/SaveDraft/index.scss +0 -0
- package/dist/admin/components/elements/Status/index.d.ts +5 -0
- package/dist/admin/components/elements/Status/index.js +107 -0
- package/dist/admin/components/elements/Status/index.scss +30 -0
- package/dist/admin/components/elements/Status/types.d.ts +1 -0
- package/dist/admin/components/elements/Status/types.js +1 -0
- package/dist/admin/components/elements/VersionsCount/index.d.ts +5 -0
- package/dist/admin/components/elements/VersionsCount/index.js +42 -0
- package/dist/admin/components/elements/VersionsCount/index.scss +9 -0
- package/dist/admin/components/elements/VersionsCount/types.d.ts +7 -0
- package/dist/admin/components/elements/VersionsCount/types.js +1 -0
- package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/types.d.ts +2 -1
- package/dist/admin/components/forms/Form/getDataByPath.d.ts +1 -1
- package/dist/admin/components/forms/Form/index.js +34 -11
- package/dist/admin/components/forms/Form/initContextState.js +3 -0
- package/dist/admin/components/forms/Form/types.d.ts +13 -4
- package/dist/admin/components/forms/Submit/index.d.ts +3 -4
- package/dist/admin/components/forms/Submit/index.js +3 -2
- package/dist/admin/components/forms/field-types/Array/Array.js +1 -5
- package/dist/admin/components/forms/field-types/Array/types.d.ts +1 -25
- package/dist/admin/components/forms/field-types/Blocks/Blocks.js +1 -5
- package/dist/admin/components/forms/field-types/Blocks/types.d.ts +1 -26
- package/dist/admin/components/forms/field-types/Relationship/createRelationMap.d.ts +10 -0
- package/dist/admin/components/forms/field-types/Relationship/createRelationMap.js +29 -0
- package/dist/admin/components/forms/field-types/Relationship/index.js +67 -47
- package/dist/admin/components/forms/field-types/Relationship/optionsReducer.js +15 -6
- package/dist/admin/components/forms/field-types/Relationship/types.d.ts +10 -1
- package/dist/admin/components/forms/field-types/RichText/RichText.js +6 -2
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Button/index.d.ts +1 -1
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Button/index.js +3 -2
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/SwapUploadModal/index.d.ts +1 -1
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/SwapUploadModal/index.js +4 -3
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/index.js +1 -1
- package/dist/admin/components/forms/field-types/RichText/elements/upload/{modal.scss → addSwapModals.scss} +0 -0
- package/dist/admin/components/forms/field-types/Select/index.js +5 -2
- package/dist/admin/components/forms/field-types/Upload/SelectExisting/index.js +2 -1
- package/dist/admin/components/utilities/DocumentInfo/index.d.ts +2 -13
- package/dist/admin/components/utilities/DocumentInfo/index.js +128 -19
- package/dist/admin/components/utilities/DocumentInfo/types.d.ts +23 -0
- package/dist/admin/components/utilities/DocumentInfo/types.js +1 -0
- package/dist/admin/components/views/Account/Default.js +3 -3
- package/dist/admin/components/views/Account/index.js +11 -13
- package/dist/admin/components/views/Global/Default.js +27 -9
- package/dist/admin/components/views/Global/index.js +23 -28
- package/dist/admin/components/views/Global/types.d.ts +3 -1
- package/dist/admin/components/views/NotFound/index.d.ts +1 -0
- package/dist/admin/components/views/NotFound/index.js +7 -5
- package/dist/admin/components/views/NotFound/index.scss +10 -0
- package/dist/admin/components/views/Version/Compare/index.d.ts +5 -0
- package/dist/admin/components/views/Version/Compare/index.js +79 -0
- package/dist/admin/components/views/Version/Compare/index.scss +15 -0
- package/dist/admin/components/views/Version/Compare/types.d.ts +26 -0
- package/dist/admin/components/views/Version/Compare/types.js +1 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/Label/index.d.ts +4 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/Label/index.js +5 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/Label/index.scss +6 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +8 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +57 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +25 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts +8 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.js +15 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.scss +8 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +8 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +68 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +10 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +5 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.js +25 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.scss +10 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/richTextToHTML.d.ts +1 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/richTextToHTML.js +82 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/stringifyRichText.d.ts +1 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/stringifyRichText.js +52 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/diffMethods.d.ts +6 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/diffMethods.js +6 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.d.ts +33 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.js +23 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/types.d.ts +16 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/types.js +1 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/index.d.ts +5 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/index.js +39 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/index.scss +11 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/types.d.ts +11 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/types.js +1 -0
- package/dist/admin/components/views/Version/Restore/index.d.ts +5 -0
- package/dist/admin/components/views/Version/Restore/index.js +50 -0
- package/dist/admin/components/views/Version/Restore/index.scss +20 -0
- package/dist/admin/components/views/Version/Restore/types.d.ts +10 -0
- package/dist/admin/components/views/Version/Restore/types.js +1 -0
- package/dist/admin/components/views/Version/SelectLocales/index.d.ts +5 -0
- package/dist/admin/components/views/Version/SelectLocales/index.js +8 -0
- package/dist/admin/components/views/Version/SelectLocales/index.scss +9 -0
- package/dist/admin/components/views/Version/SelectLocales/types.d.ts +6 -0
- package/dist/admin/components/views/Version/SelectLocales/types.js +1 -0
- package/dist/admin/components/views/Version/Version.d.ts +5 -0
- package/dist/admin/components/views/Version/Version.js +158 -0
- package/dist/admin/components/views/Version/index.d.ts +4 -0
- package/dist/admin/components/views/Version/index.js +6 -0
- package/dist/admin/components/views/Version/index.scss +65 -0
- package/dist/admin/components/views/Version/shared.d.ts +8 -0
- package/dist/admin/components/views/Version/shared.js +8 -0
- package/dist/admin/components/views/Version/types.d.ts +16 -0
- package/dist/admin/components/views/Version/types.js +1 -0
- package/dist/admin/components/views/Versions/columns.d.ts +4 -0
- package/dist/admin/components/views/Versions/columns.js +47 -0
- package/dist/admin/components/views/Versions/index.d.ts +5 -0
- package/dist/admin/components/views/Versions/index.js +178 -0
- package/dist/admin/components/views/Versions/index.scss +79 -0
- package/dist/admin/components/views/Versions/types.d.ts +6 -0
- package/dist/admin/components/views/Versions/types.js +1 -0
- package/dist/admin/components/views/collections/Edit/Default.js +38 -24
- package/dist/admin/components/views/collections/Edit/index.js +41 -30
- package/dist/admin/components/views/collections/Edit/index.scss +15 -3
- package/dist/admin/components/views/collections/Edit/types.d.ts +1 -0
- package/dist/admin/components/views/collections/List/Default.js +2 -1
- package/dist/admin/components/views/collections/List/index.js +1 -0
- package/dist/admin/components/views/collections/List/types.d.ts +2 -1
- package/dist/admin/hooks/useDebounce.d.ts +1 -1
- package/dist/admin/scss/app.scss +1 -1
- package/dist/{fields/baseFields/baseAccountLockFields.d.ts → auth/baseFields/accountLock.d.ts} +1 -1
- package/dist/auth/baseFields/accountLock.js +16 -0
- package/dist/{fields/baseFields/baseAuthFields.d.ts → auth/baseFields/apiKey.d.ts} +1 -1
- package/dist/auth/baseFields/apiKey.js +63 -0
- package/dist/{fields/baseFields/baseVerificationFields.d.ts → auth/baseFields/auth.d.ts} +1 -1
- package/dist/auth/baseFields/auth.js +28 -0
- package/dist/{fields/baseFields/baseAPIKeyFields.d.ts → auth/baseFields/verification.d.ts} +1 -1
- package/dist/auth/baseFields/verification.js +41 -0
- package/dist/auth/operations/access.d.ts +2 -1
- package/dist/auth/operations/access.js +14 -3
- package/dist/auth/operations/local/login.d.ts +4 -1
- package/dist/auth/operations/local/login.js +1 -1
- package/dist/auth/operations/login.d.ts +2 -1
- package/dist/auth/operations/login.js +2 -2
- package/dist/auth/operations/registerFirstUser.d.ts +6 -0
- package/dist/auth/operations/registerFirstUser.js +11 -8
- package/dist/collections/bindCollection.d.ts +3 -2
- package/dist/collections/bindCollection.js +1 -1
- package/dist/collections/config/defaults.d.ts +1 -0
- package/dist/collections/config/defaults.js +2 -1
- package/dist/collections/config/sanitize.js +39 -45
- package/dist/collections/config/schema.js +12 -1
- package/dist/collections/config/types.d.ts +16 -16
- package/dist/collections/graphql/init.js +63 -3
- package/dist/collections/graphql/resolvers/create.js +2 -1
- package/dist/collections/graphql/resolvers/find.js +2 -1
- package/dist/collections/graphql/resolvers/findByID.js +2 -1
- package/dist/collections/graphql/resolvers/findVersionByID.d.ts +11 -0
- package/dist/collections/graphql/resolvers/findVersionByID.js +22 -0
- package/dist/collections/graphql/resolvers/findVersions.d.ts +16 -0
- package/dist/collections/graphql/resolvers/findVersions.js +25 -0
- package/dist/collections/graphql/resolvers/restoreVersion.d.ts +8 -0
- package/dist/collections/graphql/resolvers/restoreVersion.js +17 -0
- package/dist/collections/graphql/resolvers/update.js +3 -1
- package/dist/collections/init.js +26 -2
- package/dist/collections/operations/create.d.ts +1 -0
- package/dist/collections/operations/create.js +13 -58
- package/dist/collections/operations/find.d.ts +3 -1
- package/dist/collections/operations/find.js +44 -46
- package/dist/collections/operations/findByID.d.ts +3 -1
- package/dist/collections/operations/findByID.js +21 -11
- package/dist/collections/operations/findVersionByID.d.ts +16 -0
- package/dist/collections/operations/findVersionByID.js +102 -0
- package/dist/collections/operations/findVersions.d.ts +19 -0
- package/dist/collections/operations/findVersions.js +125 -0
- package/dist/collections/operations/local/create.d.ts +5 -2
- package/dist/collections/operations/local/create.js +4 -2
- package/dist/collections/operations/local/find.d.ts +3 -1
- package/dist/collections/operations/local/find.js +3 -2
- package/dist/collections/operations/local/findByID.d.ts +2 -0
- package/dist/collections/operations/local/findByID.js +5 -2
- package/dist/collections/operations/local/findVersionByID.d.ts +16 -0
- package/dist/collections/operations/local/findVersionByID.js +24 -0
- package/dist/collections/operations/local/findVersions.d.ts +17 -0
- package/dist/collections/operations/local/findVersions.js +26 -0
- package/dist/collections/operations/local/index.d.ts +6 -0
- package/dist/collections/operations/local/index.js +7 -1
- package/dist/collections/operations/local/restoreVersion.d.ts +14 -0
- package/dist/collections/operations/local/restoreVersion.js +25 -0
- package/dist/collections/operations/local/update.d.ts +6 -5
- package/dist/collections/operations/local/update.js +4 -2
- package/dist/collections/operations/restoreVersion.d.ts +15 -0
- package/dist/collections/operations/restoreVersion.js +118 -0
- package/dist/collections/operations/update.d.ts +5 -2
- package/dist/collections/operations/update.js +72 -79
- package/dist/collections/requestHandlers/create.js +2 -1
- package/dist/collections/requestHandlers/find.d.ts +2 -1
- package/dist/collections/requestHandlers/find.js +2 -1
- package/dist/collections/requestHandlers/findByID.js +2 -1
- package/dist/collections/requestHandlers/findVersionByID.d.ts +8 -0
- package/dist/collections/requestHandlers/findVersionByID.js +19 -0
- package/dist/collections/requestHandlers/findVersions.d.ts +5 -0
- package/dist/collections/requestHandlers/findVersions.js +33 -0
- package/dist/collections/requestHandlers/restoreVersion.d.ts +8 -0
- package/dist/collections/requestHandlers/restoreVersion.js +27 -0
- package/dist/collections/requestHandlers/update.js +11 -2
- package/dist/config/defaults.d.ts +1 -0
- package/dist/config/defaults.js +2 -1
- package/dist/config/schema.js +1 -2
- package/dist/config/types.d.ts +1 -1
- package/dist/errors/TimestampsRequired.d.ts +6 -0
- package/dist/errors/TimestampsRequired.js +13 -0
- package/dist/express/middleware/index.js +2 -2
- package/dist/fields/accessPromise.d.ts +1 -1
- package/dist/fields/hookPromise.d.ts +3 -1
- package/dist/fields/hookPromise.js +41 -14
- package/dist/fields/mergeBaseFields.d.ts +2 -0
- package/dist/fields/mergeBaseFields.js +40 -0
- package/dist/fields/performFieldOperations.d.ts +4 -4
- package/dist/fields/performFieldOperations.js +4 -2
- package/dist/fields/relationshipPopulationPromise.js +3 -3
- package/dist/fields/richText/populate.js +4 -7
- package/dist/fields/traverseFields.d.ts +2 -1
- package/dist/fields/traverseFields.js +4 -2
- package/dist/globals/buildModel.d.ts +2 -2
- package/dist/globals/buildModel.js +3 -1
- package/dist/globals/config/sanitize.js +25 -2
- package/dist/globals/config/schema.js +11 -1
- package/dist/globals/config/types.d.ts +13 -3
- package/dist/globals/graphql/init.js +60 -2
- package/dist/globals/graphql/resolvers/findOne.js +2 -1
- package/dist/globals/graphql/resolvers/findVersionByID.d.ts +13 -0
- package/dist/globals/graphql/resolvers/findVersionByID.js +23 -0
- package/dist/globals/graphql/resolvers/findVersions.d.ts +3 -0
- package/dist/globals/graphql/resolvers/findVersions.js +35 -0
- package/dist/globals/graphql/resolvers/index.d.ts +4 -5
- package/dist/globals/graphql/resolvers/index.js +10 -5
- package/dist/globals/graphql/resolvers/restoreVersion.d.ts +3 -0
- package/dist/globals/graphql/resolvers/restoreVersion.js +18 -0
- package/dist/globals/graphql/resolvers/update.js +4 -3
- package/dist/globals/init.js +28 -1
- package/dist/globals/operations/findOne.js +39 -6
- package/dist/globals/operations/findVersionByID.d.ts +15 -0
- package/dist/globals/operations/findVersionByID.js +97 -0
- package/dist/globals/operations/findVersions.d.ts +18 -0
- package/dist/globals/operations/findVersions.js +110 -0
- package/dist/globals/operations/local/findOne.js +3 -2
- package/dist/globals/operations/local/update.js +3 -2
- package/dist/globals/operations/restoreVersion.d.ts +18 -0
- package/dist/globals/operations/restoreVersion.js +95 -0
- package/dist/globals/operations/update.d.ts +3 -1
- package/dist/globals/operations/update.js +93 -10
- package/dist/globals/requestHandlers/findOne.js +2 -1
- package/dist/globals/requestHandlers/findVersionByID.d.ts +3 -0
- package/dist/globals/requestHandlers/findVersionByID.js +23 -0
- package/dist/globals/requestHandlers/findVersions.d.ts +2 -0
- package/dist/globals/requestHandlers/findVersions.js +37 -0
- package/dist/globals/requestHandlers/restoreVersion.d.ts +2 -0
- package/dist/globals/requestHandlers/restoreVersion.js +31 -0
- package/dist/globals/requestHandlers/update.js +11 -2
- package/dist/graphql/bindResolvers.d.ts +12 -0
- package/dist/graphql/bindResolvers.js +13 -1
- package/dist/graphql/schema/buildPoliciesType.js +14 -3
- package/dist/graphql/schema/buildWhereInputType.js +7 -202
- package/dist/graphql/schema/fieldToSchemaMap.d.ts +2 -0
- package/dist/graphql/schema/fieldToSchemaMap.js +169 -0
- package/dist/graphql/schema/operators.d.ts +7 -0
- package/dist/graphql/schema/operators.js +10 -0
- package/dist/graphql/schema/recursivelyBuildNestedPaths.d.ts +3 -0
- package/dist/graphql/schema/recursivelyBuildNestedPaths.js +38 -0
- package/dist/index.d.ts +38 -8
- package/dist/index.js +33 -2
- package/dist/init/bindOperations.d.ts +64 -0
- package/dist/init/bindOperations.js +13 -1
- package/dist/init/bindRequestHandlers.d.ts +12 -0
- package/dist/init/bindRequestHandlers.js +13 -1
- package/dist/mongoose/buildSchema.d.ts +2 -2
- package/dist/mongoose/buildSchema.js +13 -13
- package/dist/mongoose/buildSortParam.d.ts +1 -0
- package/dist/mongoose/buildSortParam.js +27 -0
- package/dist/mongoose/types.d.ts +12 -0
- package/dist/mongoose/types.js +3 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +6 -1
- package/dist/{fields/baseFields/getBaseUploadFields.d.ts → uploads/getBaseFields.d.ts} +3 -3
- package/dist/{fields/baseFields/getBaseUploadFields.js → uploads/getBaseFields.js} +2 -2
- package/dist/uploads/uploadFile.d.ts +13 -0
- package/dist/uploads/uploadFile.js +70 -0
- package/dist/utilities/getUniqueListBy.d.ts +1 -0
- package/dist/utilities/getUniqueListBy.js +7 -0
- package/dist/versions/baseFields.d.ts +7 -0
- package/dist/versions/baseFields.js +29 -0
- package/dist/versions/buildCollectionFields.d.ts +3 -0
- package/dist/versions/buildCollectionFields.js +29 -0
- package/dist/versions/buildGlobalFields.d.ts +3 -0
- package/dist/versions/buildGlobalFields.js +23 -0
- package/dist/versions/cleanUpFailedVersion.d.ts +11 -0
- package/dist/versions/cleanUpFailedVersion.js +11 -0
- package/dist/versions/defaults.d.ts +3 -0
- package/dist/versions/defaults.js +19 -0
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts +2 -0
- package/dist/versions/drafts/appendVersionToQueryKey.js +19 -0
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +13 -0
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js +66 -0
- package/dist/versions/drafts/saveCollectionDraft.d.ts +13 -0
- package/dist/versions/drafts/saveCollectionDraft.js +54 -0
- package/dist/versions/drafts/saveGlobalDraft.d.ts +10 -0
- package/dist/versions/drafts/saveGlobalDraft.js +49 -0
- package/dist/versions/enforceMaxVersions.d.ts +12 -0
- package/dist/versions/enforceMaxVersions.js +25 -0
- package/dist/versions/ensurePublishedCollectionVersion.d.ts +12 -0
- package/dist/versions/ensurePublishedCollectionVersion.js +62 -0
- package/dist/versions/ensurePublishedGlobalVersion.d.ts +11 -0
- package/dist/versions/ensurePublishedGlobalVersion.js +56 -0
- package/dist/versions/getVersionsModelName.d.ts +3 -0
- package/dist/versions/getVersionsModelName.js +6 -0
- package/dist/versions/saveCollectionVersion.d.ts +12 -0
- package/dist/versions/saveCollectionVersion.js +82 -0
- package/dist/versions/saveGlobalVersion.d.ts +11 -0
- package/dist/versions/saveGlobalVersion.js +76 -0
- package/dist/versions/shouldIncrementVersionCount.d.ts +14 -0
- package/dist/versions/shouldIncrementVersionCount.js +10 -0
- package/dist/versions/tests/collections-graphql.spec.d.ts +1 -0
- package/dist/versions/tests/collections-graphql.spec.js +141 -0
- package/dist/versions/tests/collections-rest.spec.d.ts +1 -0
- package/dist/versions/tests/collections-rest.spec.js +148 -0
- package/dist/versions/tests/globals-graphql.spec.d.ts +1 -0
- package/dist/versions/tests/globals-graphql.spec.js +157 -0
- package/dist/versions/tests/globals-rest.spec.d.ts +1 -0
- package/dist/versions/tests/globals-rest.spec.js +151 -0
- package/dist/versions/types.d.ts +34 -0
- package/dist/versions/types.js +3 -0
- package/dist/webpack/components.config.d.ts +2 -2
- package/dist/webpack/components.config.js +3 -3
- package/docs/access-control/globals.mdx +2 -2
- package/docs/admin/components.mdx +0 -1
- package/docs/admin/customizing-css.mdx +0 -2
- package/docs/admin/overview.mdx +0 -1
- package/docs/admin/webpack.mdx +0 -2
- package/docs/authentication/overview.mdx +0 -1
- package/docs/configuration/express.mdx +0 -2
- package/docs/configuration/localization.mdx +0 -1
- package/docs/configuration/overview.mdx +1 -2
- package/docs/getting-started/installation.mdx +2 -5
- package/docs/graphql/extending.mdx +0 -1
- package/docs/plugins/overview.mdx +0 -1
- package/docs/upload/overview.mdx +0 -1
- package/docs/versions/autosave.mdx +71 -0
- package/docs/versions/drafts.mdx +160 -0
- package/docs/versions/overview.mdx +140 -0
- package/package.json +13 -12
- package/dist/admin/components/elements/RenderTitle/index.scss +0 -12
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/SwapUploadModal/index.scss +0 -25
- package/dist/fields/baseFields/baseAPIKeyFields.js +0 -63
- package/dist/fields/baseFields/baseAccountLockFields.js +0 -16
- package/dist/fields/baseFields/baseAuthFields.js +0 -28
- package/dist/fields/baseFields/baseVerificationFields.js +0 -41
- package/docs/.DS_Store +0 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import React, { useCallback, useState } from 'react';
|
|
2
|
+
import { useConfig } from '@payloadcms/config-provider';
|
|
3
|
+
import { toast } from 'react-toastify';
|
|
4
|
+
import { Modal, useModal } from '@faceless-ui/modal';
|
|
5
|
+
import { useDocumentInfo } from '../../utilities/DocumentInfo';
|
|
6
|
+
import Button from '../Button';
|
|
7
|
+
import { MinimalTemplate } from '../..';
|
|
8
|
+
import { requests } from '../../../api';
|
|
9
|
+
import { useForm } from '../../forms/Form/context';
|
|
10
|
+
import { useLocale } from '../../utilities/Locale';
|
|
11
|
+
import './index.scss';
|
|
12
|
+
const baseClass = 'status';
|
|
13
|
+
const unPublishModalSlug = 'confirm-un-publish';
|
|
14
|
+
const revertModalSlug = 'confirm-revert';
|
|
15
|
+
const Status = () => {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
const { publishedDoc, unpublishedVersions, collection, global, id, getVersions } = useDocumentInfo();
|
|
18
|
+
const { toggle, closeAll: closeAllModals } = useModal();
|
|
19
|
+
const { serverURL, routes: { api } } = useConfig();
|
|
20
|
+
const [processing, setProcessing] = useState(false);
|
|
21
|
+
const { reset: resetForm } = useForm();
|
|
22
|
+
const locale = useLocale();
|
|
23
|
+
let statusToRender;
|
|
24
|
+
if (((_a = unpublishedVersions === null || unpublishedVersions === void 0 ? void 0 : unpublishedVersions.docs) === null || _a === void 0 ? void 0 : _a.length) > 0 && publishedDoc) {
|
|
25
|
+
statusToRender = 'Changed';
|
|
26
|
+
}
|
|
27
|
+
else if (!publishedDoc) {
|
|
28
|
+
statusToRender = 'Draft';
|
|
29
|
+
}
|
|
30
|
+
else if (publishedDoc && ((_b = unpublishedVersions === null || unpublishedVersions === void 0 ? void 0 : unpublishedVersions.docs) === null || _b === void 0 ? void 0 : _b.length) <= 1) {
|
|
31
|
+
statusToRender = 'Published';
|
|
32
|
+
}
|
|
33
|
+
const performAction = useCallback(async (action) => {
|
|
34
|
+
let url;
|
|
35
|
+
let method;
|
|
36
|
+
let body;
|
|
37
|
+
setProcessing(true);
|
|
38
|
+
if (action === 'unpublish') {
|
|
39
|
+
body = {
|
|
40
|
+
_status: 'draft',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (action === 'revert') {
|
|
44
|
+
body = publishedDoc;
|
|
45
|
+
}
|
|
46
|
+
if (collection) {
|
|
47
|
+
url = `${serverURL}${api}/${collection.slug}/${id}?depth=0&locale=${locale}&fallback-locale=null`;
|
|
48
|
+
method = 'put';
|
|
49
|
+
}
|
|
50
|
+
if (global) {
|
|
51
|
+
url = `${serverURL}${api}/globals/${global.slug}?depth=0&locale=${locale}&fallback-locale=null`;
|
|
52
|
+
method = 'post';
|
|
53
|
+
}
|
|
54
|
+
const res = await requests[method](url, {
|
|
55
|
+
headers: {
|
|
56
|
+
'Content-Type': 'application/json',
|
|
57
|
+
},
|
|
58
|
+
body: JSON.stringify(body),
|
|
59
|
+
});
|
|
60
|
+
if (res.status === 200) {
|
|
61
|
+
let data;
|
|
62
|
+
let fields;
|
|
63
|
+
const json = await res.json();
|
|
64
|
+
if (global) {
|
|
65
|
+
data = json.result;
|
|
66
|
+
fields = global.fields;
|
|
67
|
+
}
|
|
68
|
+
if (collection) {
|
|
69
|
+
data = json.doc;
|
|
70
|
+
fields = collection.fields;
|
|
71
|
+
}
|
|
72
|
+
resetForm(fields, data);
|
|
73
|
+
toast.success(json.message);
|
|
74
|
+
getVersions();
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
toast.error('There was a problem while un-publishing this document.');
|
|
78
|
+
}
|
|
79
|
+
setProcessing(false);
|
|
80
|
+
closeAllModals();
|
|
81
|
+
}, [closeAllModals, collection, global, serverURL, api, resetForm, id, locale, getVersions, publishedDoc]);
|
|
82
|
+
if (statusToRender) {
|
|
83
|
+
return (React.createElement("div", { className: baseClass },
|
|
84
|
+
React.createElement("div", { className: `${baseClass}__value-wrap` },
|
|
85
|
+
React.createElement("span", { className: `${baseClass}__value` }, statusToRender),
|
|
86
|
+
statusToRender === 'Published' && (React.createElement(React.Fragment, null,
|
|
87
|
+
"\u00A0\u2014\u00A0",
|
|
88
|
+
React.createElement(Button, { onClick: () => toggle(unPublishModalSlug), className: `${baseClass}__action`, buttonStyle: "none" }, "Unpublish"),
|
|
89
|
+
React.createElement(Modal, { slug: unPublishModalSlug, className: `${baseClass}__modal` },
|
|
90
|
+
React.createElement(MinimalTemplate, null,
|
|
91
|
+
React.createElement("h1", null, "Confirm unpublish"),
|
|
92
|
+
React.createElement("p", null, "You are about to unpublish this document. Are you sure?"),
|
|
93
|
+
React.createElement(Button, { buttonStyle: "secondary", type: "button", onClick: processing ? undefined : () => toggle(unPublishModalSlug) }, "Cancel"),
|
|
94
|
+
React.createElement(Button, { onClick: processing ? undefined : () => performAction('unpublish') }, processing ? 'Unpublishing...' : 'Confirm'))))),
|
|
95
|
+
statusToRender === 'Changed' && (React.createElement(React.Fragment, null,
|
|
96
|
+
"\u00A0\u2014\u00A0",
|
|
97
|
+
React.createElement(Button, { onClick: () => toggle(revertModalSlug), className: `${baseClass}__action`, buttonStyle: "none" }, "Revert to published"),
|
|
98
|
+
React.createElement(Modal, { slug: revertModalSlug, className: `${baseClass}__modal` },
|
|
99
|
+
React.createElement(MinimalTemplate, null,
|
|
100
|
+
React.createElement("h1", null, "Confirm revert to saved"),
|
|
101
|
+
React.createElement("p", null, "You are about to revert this document's changes to its published state. Are you sure?"),
|
|
102
|
+
React.createElement(Button, { buttonStyle: "secondary", type: "button", onClick: processing ? undefined : () => toggle(revertModalSlug) }, "Cancel"),
|
|
103
|
+
React.createElement(Button, { onClick: processing ? undefined : () => performAction('revert') }, processing ? 'Reverting...' : 'Confirm'))))))));
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
};
|
|
107
|
+
export default Status;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
@import '../../../scss/styles.scss';
|
|
2
|
+
|
|
3
|
+
.status {
|
|
4
|
+
&__label {
|
|
5
|
+
color: gray;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
&__value {
|
|
9
|
+
font-weight: 600;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
&__action {
|
|
13
|
+
text-decoration: underline;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&__modal {
|
|
17
|
+
@include blur-bg;
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
height: 100%;
|
|
21
|
+
|
|
22
|
+
&__toggle {
|
|
23
|
+
@extend %btn-reset;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.btn {
|
|
27
|
+
margin-right: $baseline;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type Props = {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useConfig } from '@payloadcms/config-provider';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import Button from '../Button';
|
|
4
|
+
import { useDocumentInfo } from '../../utilities/DocumentInfo';
|
|
5
|
+
import { shouldIncrementVersionCount } from '../../../../versions/shouldIncrementVersionCount';
|
|
6
|
+
import './index.scss';
|
|
7
|
+
const baseClass = 'versions-count';
|
|
8
|
+
const VersionsCount = ({ collection, global, id }) => {
|
|
9
|
+
var _a, _b, _c;
|
|
10
|
+
const { routes: { admin } } = useConfig();
|
|
11
|
+
const { versions, publishedDoc, unpublishedVersions } = useDocumentInfo();
|
|
12
|
+
// Doc status could come from three places:
|
|
13
|
+
// 1. the newest unpublished version (a draft)
|
|
14
|
+
// 2. the published doc's status, in the event that the doc is published and there are no newer versions
|
|
15
|
+
// 3. if there is no published doc, it's a draft
|
|
16
|
+
const docStatus = ((_c = (_b = (_a = unpublishedVersions === null || unpublishedVersions === void 0 ? void 0 : unpublishedVersions.docs) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.version) === null || _c === void 0 ? void 0 : _c._status) || (publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc._status) || 'draft';
|
|
17
|
+
let versionsURL;
|
|
18
|
+
let entity;
|
|
19
|
+
if (collection) {
|
|
20
|
+
versionsURL = `${admin}/collections/${collection.slug}/${id}/versions`;
|
|
21
|
+
entity = collection;
|
|
22
|
+
}
|
|
23
|
+
if (global) {
|
|
24
|
+
versionsURL = `${admin}/globals/${global.slug}/versions`;
|
|
25
|
+
entity = global;
|
|
26
|
+
}
|
|
27
|
+
let initialVersionsCount = 0;
|
|
28
|
+
if (shouldIncrementVersionCount({ entity, versions, docStatus })) {
|
|
29
|
+
initialVersionsCount = 1;
|
|
30
|
+
}
|
|
31
|
+
const versionCount = ((versions === null || versions === void 0 ? void 0 : versions.totalDocs) || 0) + initialVersionsCount;
|
|
32
|
+
return (React.createElement("div", { className: baseClass },
|
|
33
|
+
versionCount === 0 && 'No versions found',
|
|
34
|
+
versionCount > 0 && (React.createElement(Button, { className: `${baseClass}__button`, buttonStyle: "none", el: "link", to: versionsURL },
|
|
35
|
+
versionCount,
|
|
36
|
+
' ',
|
|
37
|
+
"version",
|
|
38
|
+
versionCount > 1 && 's',
|
|
39
|
+
' ',
|
|
40
|
+
"found"))));
|
|
41
|
+
};
|
|
42
|
+
export default VersionsCount;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SanitizedCollectionConfig } from '../../../../collections/config/types';
|
|
2
|
+
import { SanitizedGlobalConfig } from '../../../../globals/config/types';
|
|
3
|
+
export declare type Props = {
|
|
4
|
+
collection?: SanitizedCollectionConfig;
|
|
5
|
+
global?: SanitizedGlobalConfig;
|
|
6
|
+
id?: string | number;
|
|
7
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RelationshipField } from '../../../../../../fields/config/types';
|
|
2
|
-
import {
|
|
2
|
+
import { SanitizedCollectionConfig } from '../../../../../../collections/config/types';
|
|
3
|
+
import { PaginatedDocs } from '../../../../../../mongoose/types';
|
|
3
4
|
export declare type Props = {
|
|
4
5
|
onChange: (val: unknown) => void;
|
|
5
6
|
value: unknown;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
|
|
1
2
|
import React, { useReducer, useEffect, useRef, useState, useCallback, } from 'react';
|
|
2
3
|
import { serialize } from 'object-to-formdata';
|
|
3
4
|
import { useHistory } from 'react-router-dom';
|
|
@@ -15,6 +16,7 @@ import wait from '../../../../utilities/wait';
|
|
|
15
16
|
import buildInitialState from './buildInitialState';
|
|
16
17
|
import errorMessages from './errorMessages';
|
|
17
18
|
import { SubmittedContext, ProcessingContext, ModifiedContext, FormContext, FormWatchContext } from './context';
|
|
19
|
+
import buildStateFromSchema from './buildStateFromSchema';
|
|
18
20
|
const baseClass = 'form';
|
|
19
21
|
const Form = (props) => {
|
|
20
22
|
const { disabled, onSubmit, method, action, handleResponse, onSuccess, children, className, redirect, disableSuccessStatus, initialState, // fully formed initial field state
|
|
@@ -27,6 +29,7 @@ const Form = (props) => {
|
|
|
27
29
|
const [processing, setProcessing] = useState(false);
|
|
28
30
|
const [submitted, setSubmitted] = useState(false);
|
|
29
31
|
const [formattedInitialData, setFormattedInitialData] = useState(buildInitialState(initialData));
|
|
32
|
+
const formRef = useRef(null);
|
|
30
33
|
const contextRef = useRef({});
|
|
31
34
|
let initialFieldState = {};
|
|
32
35
|
if (formattedInitialData)
|
|
@@ -62,17 +65,22 @@ const Form = (props) => {
|
|
|
62
65
|
dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState });
|
|
63
66
|
return isValid;
|
|
64
67
|
}, [contextRef]);
|
|
65
|
-
const submit = useCallback(async (e) => {
|
|
68
|
+
const submit = useCallback(async (options = {}, e) => {
|
|
69
|
+
const { overrides = {}, action: actionToUse = action, method: methodToUse = method, skipValidation, } = options;
|
|
66
70
|
if (disabled) {
|
|
67
|
-
e
|
|
71
|
+
if (e) {
|
|
72
|
+
e.preventDefault();
|
|
73
|
+
}
|
|
68
74
|
return;
|
|
69
75
|
}
|
|
70
|
-
e
|
|
71
|
-
|
|
76
|
+
if (e) {
|
|
77
|
+
e.stopPropagation();
|
|
78
|
+
e.preventDefault();
|
|
79
|
+
}
|
|
72
80
|
setProcessing(true);
|
|
73
81
|
if (waitForAutocomplete)
|
|
74
82
|
await wait(100);
|
|
75
|
-
const isValid = await contextRef.current.validateForm();
|
|
83
|
+
const isValid = skipValidation ? true : await contextRef.current.validateForm();
|
|
76
84
|
setSubmitted(true);
|
|
77
85
|
// If not valid, prevent submission
|
|
78
86
|
if (!isValid) {
|
|
@@ -82,12 +90,16 @@ const Form = (props) => {
|
|
|
82
90
|
}
|
|
83
91
|
// If submit handler comes through via props, run that
|
|
84
92
|
if (onSubmit) {
|
|
85
|
-
|
|
93
|
+
const data = {
|
|
94
|
+
...reduceFieldsToValues(fields),
|
|
95
|
+
...overrides,
|
|
96
|
+
};
|
|
97
|
+
onSubmit(fields, data);
|
|
86
98
|
return;
|
|
87
99
|
}
|
|
88
|
-
const formData = contextRef.current.createFormData();
|
|
100
|
+
const formData = contextRef.current.createFormData(overrides);
|
|
89
101
|
try {
|
|
90
|
-
const res = await requests[
|
|
102
|
+
const res = await requests[methodToUse.toLowerCase()](actionToUse, {
|
|
91
103
|
body: formData,
|
|
92
104
|
});
|
|
93
105
|
setModified(false);
|
|
@@ -202,20 +214,29 @@ const Form = (props) => {
|
|
|
202
214
|
const getSiblingData = useCallback((path) => getSiblingDataFunc(contextRef.current.fields, path), [contextRef]);
|
|
203
215
|
const getDataByPath = useCallback((path) => getDataByPathFunc(contextRef.current.fields, path), [contextRef]);
|
|
204
216
|
const getUnflattenedValues = useCallback(() => reduceFieldsToValues(contextRef.current.fields), [contextRef]);
|
|
205
|
-
const createFormData = useCallback(() => {
|
|
217
|
+
const createFormData = useCallback((overrides = {}) => {
|
|
206
218
|
const data = reduceFieldsToValues(contextRef.current.fields, true);
|
|
207
219
|
const file = data === null || data === void 0 ? void 0 : data.file;
|
|
208
220
|
if (file) {
|
|
209
221
|
delete data.file;
|
|
210
222
|
}
|
|
223
|
+
const dataWithOverrides = {
|
|
224
|
+
...data,
|
|
225
|
+
...overrides,
|
|
226
|
+
};
|
|
211
227
|
const dataToSerialize = {
|
|
212
|
-
_payload: JSON.stringify(
|
|
228
|
+
_payload: JSON.stringify(dataWithOverrides),
|
|
213
229
|
file,
|
|
214
230
|
};
|
|
215
231
|
// nullAsUndefineds is important to allow uploads and relationship fields to clear themselves
|
|
216
232
|
const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false });
|
|
217
233
|
return formData;
|
|
218
234
|
}, [contextRef]);
|
|
235
|
+
const reset = useCallback(async (fieldSchema, data) => {
|
|
236
|
+
const state = await buildStateFromSchema(fieldSchema, data);
|
|
237
|
+
contextRef.current = { ...initContextState };
|
|
238
|
+
dispatchFields({ type: 'REPLACE_STATE', state });
|
|
239
|
+
}, []);
|
|
219
240
|
contextRef.current.dispatchFields = dispatchFields;
|
|
220
241
|
contextRef.current.submit = submit;
|
|
221
242
|
contextRef.current.getFields = getFields;
|
|
@@ -230,6 +251,8 @@ const Form = (props) => {
|
|
|
230
251
|
contextRef.current.setProcessing = setProcessing;
|
|
231
252
|
contextRef.current.setSubmitted = setSubmitted;
|
|
232
253
|
contextRef.current.disabled = disabled;
|
|
254
|
+
contextRef.current.formRef = formRef;
|
|
255
|
+
contextRef.current.reset = reset;
|
|
233
256
|
useEffect(() => {
|
|
234
257
|
if (initialState) {
|
|
235
258
|
contextRef.current = { ...initContextState };
|
|
@@ -259,7 +282,7 @@ const Form = (props) => {
|
|
|
259
282
|
// eslint-disable-next-line no-console
|
|
260
283
|
console.log(fields);
|
|
261
284
|
}
|
|
262
|
-
return (React.createElement("form", { noValidate: true, onSubmit: contextRef.current.submit, method: method, action: action, className: classes },
|
|
285
|
+
return (React.createElement("form", { noValidate: true, onSubmit: (e) => contextRef.current.submit({}, e), method: method, action: action, className: classes, ref: formRef },
|
|
263
286
|
React.createElement(FormContext.Provider, { value: contextRef.current },
|
|
264
287
|
React.createElement(FormWatchContext.Provider, { value: {
|
|
265
288
|
fields,
|
|
@@ -7,6 +7,7 @@ const createFormData = () => undefined;
|
|
|
7
7
|
const setModified = () => undefined;
|
|
8
8
|
const setProcessing = () => undefined;
|
|
9
9
|
const setSubmitted = () => undefined;
|
|
10
|
+
const reset = () => undefined;
|
|
10
11
|
const initialContextState = {
|
|
11
12
|
getFields: () => ({}),
|
|
12
13
|
getField: () => undefined,
|
|
@@ -24,5 +25,7 @@ const initialContextState = {
|
|
|
24
25
|
initialState: {},
|
|
25
26
|
fields: {},
|
|
26
27
|
disabled: false,
|
|
28
|
+
formRef: null,
|
|
29
|
+
reset,
|
|
27
30
|
};
|
|
28
31
|
export default initialContextState;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { Condition } from '../../../../fields/config/types';
|
|
2
|
+
import { Field as FieldConfig, Condition } from '../../../../fields/config/types';
|
|
3
3
|
export declare type Field = {
|
|
4
4
|
value: unknown;
|
|
5
5
|
initialValue: unknown;
|
|
@@ -35,19 +35,26 @@ export declare type Props = {
|
|
|
35
35
|
waitForAutocomplete?: boolean;
|
|
36
36
|
log?: boolean;
|
|
37
37
|
};
|
|
38
|
+
export declare type SubmitOptions = {
|
|
39
|
+
action?: string;
|
|
40
|
+
method?: string;
|
|
41
|
+
overrides?: Record<string, unknown>;
|
|
42
|
+
skipValidation?: boolean;
|
|
43
|
+
};
|
|
38
44
|
export declare type DispatchFields = React.Dispatch<any>;
|
|
39
|
-
export declare type Submit = (e
|
|
45
|
+
export declare type Submit = (options?: SubmitOptions, e?: React.FormEvent<HTMLFormElement>) => void;
|
|
40
46
|
export declare type ValidateForm = () => Promise<boolean>;
|
|
41
|
-
export declare type CreateFormData = () => FormData;
|
|
47
|
+
export declare type CreateFormData = (overrides?: any) => FormData;
|
|
42
48
|
export declare type GetFields = () => Fields;
|
|
43
49
|
export declare type GetField = (path: string) => Field;
|
|
44
50
|
export declare type GetData = () => Data;
|
|
45
51
|
export declare type GetSiblingData = (path: string) => Data;
|
|
46
52
|
export declare type GetUnflattenedValues = () => Data;
|
|
47
|
-
export declare type GetDataByPath = (path: string) =>
|
|
53
|
+
export declare type GetDataByPath = <T = unknown>(path: string) => T;
|
|
48
54
|
export declare type SetModified = (modified: boolean) => void;
|
|
49
55
|
export declare type SetSubmitted = (submitted: boolean) => void;
|
|
50
56
|
export declare type SetProcessing = (processing: boolean) => void;
|
|
57
|
+
export declare type Reset = (fieldSchema: FieldConfig[], data: unknown) => Promise<void>;
|
|
51
58
|
export declare type Context = {
|
|
52
59
|
dispatchFields: DispatchFields;
|
|
53
60
|
submit: Submit;
|
|
@@ -65,4 +72,6 @@ export declare type Context = {
|
|
|
65
72
|
setModified: SetModified;
|
|
66
73
|
setProcessing: SetProcessing;
|
|
67
74
|
setSubmitted: SetSubmitted;
|
|
75
|
+
formRef: React.MutableRefObject<HTMLFormElement>;
|
|
76
|
+
reset: Reset;
|
|
68
77
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Props } from '../../elements/Button/types';
|
|
2
3
|
import './index.scss';
|
|
3
|
-
declare const FormSubmit:
|
|
4
|
-
children: any;
|
|
5
|
-
}) => JSX.Element;
|
|
4
|
+
declare const FormSubmit: React.FC<Props>;
|
|
6
5
|
export default FormSubmit;
|
|
@@ -3,10 +3,11 @@ import { useForm, useFormProcessing } from '../Form/context';
|
|
|
3
3
|
import Button from '../../elements/Button';
|
|
4
4
|
import './index.scss';
|
|
5
5
|
const baseClass = 'form-submit';
|
|
6
|
-
const FormSubmit = (
|
|
6
|
+
const FormSubmit = (props) => {
|
|
7
|
+
const { children, disabled: disabledFromProps, type = 'submit' } = props;
|
|
7
8
|
const processing = useFormProcessing();
|
|
8
9
|
const { disabled } = useForm();
|
|
9
10
|
return (React.createElement("div", { className: baseClass },
|
|
10
|
-
React.createElement(Button, { type:
|
|
11
|
+
React.createElement(Button, { ...props, type: type, disabled: disabledFromProps || processing || disabled ? true : undefined }, children)));
|
|
11
12
|
};
|
|
12
13
|
export default FormSubmit;
|
|
@@ -77,10 +77,6 @@ const ArrayFieldType = (props) => {
|
|
|
77
77
|
setDisableFormData(true);
|
|
78
78
|
}
|
|
79
79
|
}, [rows, setValue]);
|
|
80
|
-
return (React.createElement(RenderArray, { onDragEnd: onDragEnd, label: label, showError: showError, errorMessage: errorMessage, rows: rows, labels: labels, addRow: addRow, removeRow: removeRow, moveRow: moveRow, path: path, name: name, fieldTypes: fieldTypes, fields: fields, permissions: permissions, value: value, readOnly: readOnly, minRows: minRows, maxRows: maxRows, required: required, description: description }));
|
|
81
|
-
};
|
|
82
|
-
const RenderArray = React.memo((props) => {
|
|
83
|
-
const { onDragEnd, label, showError, errorMessage, rows, labels, addRow, removeRow, moveRow, path, fieldTypes, fields, permissions, value, readOnly, minRows, maxRows, required, description, } = props;
|
|
84
80
|
const hasMaxRows = maxRows && rows.length >= maxRows;
|
|
85
81
|
return (React.createElement(DragDropContext, { onDragEnd: onDragEnd },
|
|
86
82
|
React.createElement("div", { className: baseClass },
|
|
@@ -105,5 +101,5 @@ const RenderArray = React.memo((props) => {
|
|
|
105
101
|
provided.placeholder))),
|
|
106
102
|
(!readOnly && (!hasMaxRows)) && (React.createElement("div", { className: `${baseClass}__add-button-wrap` },
|
|
107
103
|
React.createElement(Button, { onClick: () => addRow(value), buttonStyle: "icon-label", icon: "plus", iconStyle: "with-border", iconPosition: "left" }, `Add ${labels.singular}`))))));
|
|
108
|
-
}
|
|
104
|
+
};
|
|
109
105
|
export default withCondition(ArrayFieldType);
|
|
@@ -1,33 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ArrayField, Labels, Field } from '../../../../../fields/config/types';
|
|
1
|
+
import { ArrayField } from '../../../../../fields/config/types';
|
|
3
2
|
import { FieldTypes } from '..';
|
|
4
3
|
import { FieldPermissions } from '../../../../../auth/types';
|
|
5
|
-
import { Description } from '../../FieldDescription/types';
|
|
6
4
|
export declare type Props = Omit<ArrayField, 'type'> & {
|
|
7
5
|
path?: string;
|
|
8
6
|
fieldTypes: FieldTypes;
|
|
9
7
|
permissions: FieldPermissions;
|
|
10
8
|
label: string | false;
|
|
11
9
|
};
|
|
12
|
-
export declare type RenderArrayProps = {
|
|
13
|
-
path: string;
|
|
14
|
-
name: string;
|
|
15
|
-
fieldTypes: FieldTypes;
|
|
16
|
-
fields: Field[];
|
|
17
|
-
permissions: FieldPermissions;
|
|
18
|
-
onDragEnd: (result: any) => void;
|
|
19
|
-
label: string | false;
|
|
20
|
-
value: number;
|
|
21
|
-
readOnly: boolean;
|
|
22
|
-
minRows: number;
|
|
23
|
-
maxRows: number;
|
|
24
|
-
required: boolean;
|
|
25
|
-
labels: Labels;
|
|
26
|
-
addRow: (index: number) => Promise<void>;
|
|
27
|
-
removeRow: (index: number) => void;
|
|
28
|
-
moveRow: (fromIndex: number, toIndex: number) => void;
|
|
29
|
-
showError: boolean;
|
|
30
|
-
errorMessage: string;
|
|
31
|
-
rows: Data[];
|
|
32
|
-
description?: Description;
|
|
33
|
-
};
|
|
@@ -117,10 +117,6 @@ const Blocks = (props) => {
|
|
|
117
117
|
setDisableFormData(true);
|
|
118
118
|
}
|
|
119
119
|
}, [rows, setValue]);
|
|
120
|
-
return (React.createElement(RenderBlocks, { onDragEnd: onDragEnd, label: label, showError: showError, errorMessage: errorMessage, rows: rows, labels: labels, addRow: addRow, removeRow: removeRow, moveRow: moveRow, path: path, name: name, fieldTypes: fieldTypes, setCollapse: setCollapse, permissions: permissions, value: value, blocks: blocks, readOnly: readOnly, minRows: minRows, maxRows: maxRows, required: required, description: description }));
|
|
121
|
-
};
|
|
122
|
-
const RenderBlocks = React.memo((props) => {
|
|
123
|
-
const { onDragEnd, label, showError, errorMessage, rows, labels, addRow, removeRow, moveRow, path, fieldTypes, permissions, value, setCollapse, blocks, readOnly, minRows, maxRows, required, description, } = props;
|
|
124
120
|
const hasMaxRows = maxRows && rows.length >= maxRows;
|
|
125
121
|
return (React.createElement(DragDropContext, { onDragEnd: onDragEnd },
|
|
126
122
|
React.createElement("div", { className: baseClass },
|
|
@@ -153,5 +149,5 @@ const RenderBlocks = React.memo((props) => {
|
|
|
153
149
|
provided.placeholder))),
|
|
154
150
|
(!readOnly && (rows.length < maxRows || maxRows === undefined)) && (React.createElement("div", { className: `${baseClass}__add-button-wrap` },
|
|
155
151
|
React.createElement(Popup, { buttonType: "custom", size: "large", horizontalAlign: "left", button: (React.createElement(Button, { buttonStyle: "icon-label", icon: "plus", iconPosition: "left", iconStyle: "with-border" }, `Add ${labels.singular}`)), render: ({ close }) => (React.createElement(BlockSelector, { blocks: blocks, addRow: addRow, addRowIndex: value, close: close })) }))))));
|
|
156
|
-
}
|
|
152
|
+
};
|
|
157
153
|
export default withCondition(Blocks);
|
|
@@ -1,33 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BlockField, Labels, Block } from '../../../../../fields/config/types';
|
|
1
|
+
import { BlockField } from '../../../../../fields/config/types';
|
|
3
2
|
import { FieldTypes } from '..';
|
|
4
3
|
import { FieldPermissions } from '../../../../../auth/types';
|
|
5
|
-
import { Description } from '../../FieldDescription/types';
|
|
6
4
|
export declare type Props = Omit<BlockField, 'type'> & {
|
|
7
5
|
path?: string;
|
|
8
6
|
fieldTypes: FieldTypes;
|
|
9
7
|
permissions: FieldPermissions;
|
|
10
8
|
};
|
|
11
|
-
export declare type RenderBlockProps = {
|
|
12
|
-
path: string;
|
|
13
|
-
name: string;
|
|
14
|
-
fieldTypes: FieldTypes;
|
|
15
|
-
permissions: FieldPermissions;
|
|
16
|
-
onDragEnd: (result: any) => void;
|
|
17
|
-
label: string | false;
|
|
18
|
-
value: number;
|
|
19
|
-
readOnly: boolean;
|
|
20
|
-
minRows: number;
|
|
21
|
-
maxRows: number;
|
|
22
|
-
required: boolean;
|
|
23
|
-
labels: Labels;
|
|
24
|
-
addRow: (index: number, blockType: string) => Promise<void>;
|
|
25
|
-
removeRow: (index: number) => void;
|
|
26
|
-
moveRow: (fromIndex: number, toIndex: number) => void;
|
|
27
|
-
showError: boolean;
|
|
28
|
-
errorMessage: string;
|
|
29
|
-
rows: Data[];
|
|
30
|
-
blocks: Block[];
|
|
31
|
-
setCollapse: (id: string, collapsed: boolean) => void;
|
|
32
|
-
description?: Description;
|
|
33
|
-
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare type RelationMap = {
|
|
2
|
+
[relation: string]: unknown[];
|
|
3
|
+
};
|
|
4
|
+
declare type CreateRelationMap = (args: {
|
|
5
|
+
hasMany: boolean;
|
|
6
|
+
relationTo: string | string[];
|
|
7
|
+
value: unknown;
|
|
8
|
+
}) => RelationMap;
|
|
9
|
+
export declare const createRelationMap: CreateRelationMap;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const createRelationMap = ({ hasMany, relationTo, value, }) => {
|
|
2
|
+
const hasMultipleRelations = Array.isArray(relationTo);
|
|
3
|
+
const relationMap = {};
|
|
4
|
+
const add = (relation, id) => {
|
|
5
|
+
if (typeof relationMap[relation] === 'undefined')
|
|
6
|
+
relationMap[relation] = [];
|
|
7
|
+
if (id !== 'null' && id !== null) {
|
|
8
|
+
relationMap[relation].push(id);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
if (hasMany) {
|
|
12
|
+
(value || []).forEach((val, i) => {
|
|
13
|
+
if (hasMultipleRelations) {
|
|
14
|
+
add(value[i].relationTo, value[i].value);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
add(relationTo, value[i]);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
else if (hasMultipleRelations) {
|
|
22
|
+
const valueWithRelation = value;
|
|
23
|
+
add(valueWithRelation.relationTo, valueWithRelation.value);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
add(relationTo, value);
|
|
27
|
+
}
|
|
28
|
+
return relationMap;
|
|
29
|
+
};
|