diff --git a/.changeset/tricky-adults-laugh.md b/.changeset/tricky-adults-laugh.md new file mode 100644 index 0000000000..4c34ff0d0e --- /dev/null +++ b/.changeset/tricky-adults-laugh.md @@ -0,0 +1,5 @@ +--- +"@comet/cms-admin": minor +--- + +Make all DAM license fields optional if `LicenseType` is `ROYALTY_FREE` even if `requireLicense` is true in `DamConfig` diff --git a/packages/admin/cms-admin/src/dam/FileForm/EditFile.tsx b/packages/admin/cms-admin/src/dam/FileForm/EditFile.tsx index dfc9ed4b5a..c2f7c8deb0 100644 --- a/packages/admin/cms-admin/src/dam/FileForm/EditFile.tsx +++ b/packages/admin/cms-admin/src/dam/FileForm/EditFile.tsx @@ -195,7 +195,6 @@ const EditFileInner = ({ file, id }: EditFileInnerProps) => { // override default onAfterSubmit because default is stackApi.goBack() // https://github.com/vivid-planet/comet/blob/master/packages/admin/src/FinalForm.tsx#L53 }} - validateOnBlur > {({ pristine, hasValidationErrors, submitting, handleSubmit }) => ( <> diff --git a/packages/admin/cms-admin/src/dam/FileForm/FileSettingsFields.tsx b/packages/admin/cms-admin/src/dam/FileForm/FileSettingsFields.tsx index 08c21addcf..ebdd5c71f7 100644 --- a/packages/admin/cms-admin/src/dam/FileForm/FileSettingsFields.tsx +++ b/packages/admin/cms-admin/src/dam/FileForm/FileSettingsFields.tsx @@ -59,6 +59,18 @@ export const FileSettingsFields = ({ isImage, folderId }: SettingsFormProps): Re [apollo, folderId, scope], ); + const requiredValidator = React.useCallback( + (value: unknown, allValues: object) => { + const type = (allValues as EditFileFormValues).license?.type; + const isRequired = type === "ROYALTY_FREE" ? false : damConfig.requireLicense; + + if (isRequired && !value) { + return ; + } + }, + [damConfig.requireLicense], + ); + return (
@@ -122,10 +134,9 @@ export const FileSettingsFields = ({ isImage, folderId }: SettingsFormProps): Re } }} shouldShowError={() => true} - validateFields={["license.durationTo"]} /> - {({ input: { value } }) => { + {({ input: { value: licenseType } }) => { return ( <> true} /> true} /> } fullWidth - disabled={value === "NO_LICENSE"} - required={damConfig.requireLicense} + disabled={licenseType === "NO_LICENSE"} > } - disabled={value === "NO_LICENSE"} - required={damConfig.requireLicense} + validateFields={["license.durationTo"]} + disabled={licenseType === "NO_LICENSE"} + validate={requiredValidator} shouldShowError={() => true} /> } validate={(value: Date | undefined, allValues) => { - if (value && allValues && value < (allValues as EditFileFormValues).license?.durationFrom) { + const requiredError = requiredValidator(value, allValues); + if (requiredError) { + return requiredError; + } + + const durationFrom = (allValues as EditFileFormValues).license?.durationFrom; + if (value && durationFrom && value < durationFrom) { return ( true} />