payload
Version:
Node, React, Headless CMS and Application Framework built on Next.js
40 lines (39 loc) • 1.55 kB
JavaScript
// @ts-strict-ignore
// default beforeDuplicate hook for required and unique fields
import { fieldShouldBeLocalized } from './config/types.js';
const isStringValue = (value)=>typeof value === 'string' && value.trim() !== '';
const unique = ({ value })=>isStringValue(value) ? `${value} - Copy` : undefined;
const localizedUnique = ({ req, value })=>isStringValue(value) ? `${value} - ${req?.t('general:copy') ?? 'Copy'}` : undefined;
export const setDefaultBeforeDuplicate = (field, parentIsLocalized)=>{
if (('required' in field && field.required || field.unique) && (!field.hooks?.beforeDuplicate || Array.isArray(field.hooks.beforeDuplicate) && field.hooks.beforeDuplicate.length === 0)) {
if (field.unique) {
if ([
'email',
'number',
'point',
'relationship',
'select',
'upload'
].includes(field.type)) {
field.hooks.beforeDuplicate = [
()=>undefined
];
} else if ([
'code',
'json',
'text',
'textarea'
].includes(field.type)) {
field.hooks.beforeDuplicate = fieldShouldBeLocalized({
field,
parentIsLocalized
}) ? [
localizedUnique
] : [
unique
];
}
}
}
};
//# sourceMappingURL=setDefaultBeforeDuplicate.js.map