UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

2 lines 2.22 kB
import{copy as e}from"../../../../i18n/copy.mjs";import t from"../../../../../constants/constants.mjs";import n from"../../utils/zod-safe-parse.mjs";import r from"../../custom-field.mjs";import i from"../../utils/key-to-title.mjs";import{linkFieldConfig as a}from"./config.mjs";import o from"zod";var s=class extends r{type=a.type;config;key;props;constructor(t,n){super(),this.key=t,this.props=n,this.config={key:this.key,type:this.type,details:{label:this.props?.details?.label??e(`admin:fields.${this.type}.${this.key}.label`,{defaultMessage:i(this.key)}),summary:this.props?.details?.summary,placeholder:this.props?.details?.placeholder},localized:this.props?.localized??!1,default:this.props?.default??{url:null,label:null,target:null},index:this.props?.index,ui:{hidden:this.props?.ui?.hidden,disabled:this.props?.ui?.disabled,condition:this.props?.ui?.condition,width:this.props?.ui?.width},validation:this.props?.validation}}getSchemaDefinition(e){return{data:{columns:[{name:this.key,type:e.db.getDataType(`json`),nullable:!0,default:this.config.default}]},error:void 0}}formatResponseValue(e){return{url:e?.url??this.config.default.url??null,label:e?.label??this.config.default.label??null,target:e?.target??this.config.default.target??null}}normalizeInputValue(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;return{...t,url:typeof t.url==`string`?t.url.trim():t.url,label:typeof t.label==`string`?t.label.trim():t.label,target:typeof t.target==`string`?t.target.trim():t.target}}get errors(){return{...super.errors,required:{condition:e=>{if(e==null||e===``)return!0;if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e,n=e=>e==null||e===``;return n(t.url)&&n(t.label)},message:e(`server:core.fields.validation.required`)}}}uniqueValidation(r){let i=n(r,o.object({url:o.string().optional().nullable(),target:o.string().optional().nullable(),label:o.string().optional().nullable()}));if(!i.valid)return i;let a=r;return a.target&&!t.customFields.link.targets.includes(a.target)?{valid:!1,message:e(`server:core.fields.link.validation.target.error.message`,{data:{valid:t.customFields.link.targets.join(`, `)}})}:{valid:!0}}};export{s as default}; //# sourceMappingURL=custom-field.mjs.map