@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.3 kB
JavaScript
import{copy as e}from"../../../../i18n/copy.mjs";import t from"../../../helpers/prefix-generated-column-name.mjs";import{clampRelationInputValue as n,normalizeStoredRelationValues as r}from"../../utils/normalize-relation-values.mjs";import i from"../../utils/zod-safe-parse.mjs";import a from"../../custom-field.mjs";import o from"../../utils/key-to-title.mjs";import{validateRelationItemCount as s}from"../../utils/relation-item-count-validation.mjs";import{userFieldConfig as c}from"./config.mjs";import l from"zod";var u=class extends a{type=c.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:o(this.key)}),summary:this.props?.details?.summary},localized:this.props?.localized??!1,default:this.props?.default??[],index:this.props?.index,multiple:this.props?.multiple,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}}normalizeInputValue(e){return n(e,this.config.multiple)}get defaultValue(){return r(this.config.default,this.config.multiple)}get errors(){return{...super.errors,required:{condition:e=>e==null||Array.isArray(e)&&e.length===0,message:e(`server:core.fields.validation.required`)}}}getSchemaDefinition(e){return{data:{columns:[{name:`user_id`,type:e.db.getDataType(`integer`),nullable:!1,foreignKey:{table:`lucid_users`,column:`id`,onDelete:`cascade`}}]},error:void 0}}formatResponseValue(e){return r(e,this.config.multiple)}get relationValueColumn(){return`user_id`}serializeRelationFieldValue(e){return r(e,this.config.multiple).map(e=>({[t(`user_id`)]:e}))}uniqueValidation(t,r){let a=l.array(l.number()),o=n(t,this.config.multiple),c=i(o,a);if(!c.valid)return c;let u=Array.isArray(o)?o.filter(e=>typeof e==`number`):[],d=s({multiple:this.config.multiple,length:u.length,validation:this.config.validation});if(!d.valid)return d;let f=[];for(let[t,n]of u.entries())r?.find(e=>e.id===n)===void 0&&f.push({itemIndex:t,message:e(`server:core.fields.user.validation.not.found`)});return f.length>0?{valid:!1,errors:f}:{valid:!0}}};export{u as default};
//# sourceMappingURL=custom-field.mjs.map