UNPKG

el-plus-powerful-form

Version:

## [DOCS](https://peng-xiao-shuai.github.io/vite-vue-admin-docs/zh-CN/component_directive/component/powerful-form-doc.html)

1 lines 5.58 kB
{"version":3,"file":"index.mjs","sources":["../../packages/utils/index.ts"],"sourcesContent":["/*\n * @Author: peng-xiao-shuai\n * @Date: 2023-11-21 18:12:55\n * @LastEditors: peng-xiao-shuai\n * @LastEditTime: 2023-11-27 10:10:11\n * @Description: 表单组件工具函数\n */\nimport type { FormItem, FormType, FunBol, PowerfulFormData } from '~/index'\nimport type { FormItemRule } from 'element-plus'\nimport { FormTypeEnum } from '~/index'\nimport { LangKey } from '~/locale/lang'\n\n/**\n * 校验规则\n */\nexport const verify = {\n phone: {\n pattern:\n /^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[1589]))\\d{8}$/,\n message: LangKey.VerifyPhone,\n trigger: 'blur',\n },\n email: {\n type: 'email',\n message: LangKey.VerifyEmail,\n trigger: 'blur',\n },\n code: {\n pattern:\n /^\\d{6}((((((19|20)\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|(((19|20)\\d{2})(0[13578]|1[02])31)|((19|20)\\d{2})02(0[1-9]|1\\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\\d{3})|((((\\d{2})(0[13-9]|1[012])(0[1-9]|[12]\\d|30))|((\\d{2})(0[13578]|1[02])31)|((\\d{2})02(0[1-9]|1\\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\\d{2}))(\\d|X|x)$/,\n message: LangKey.VerifyCode,\n trigger: 'blur',\n },\n https: {\n pattern:\n /^(((ht|f)tps?):\\/\\/)?([^!@#$%^&*?.\\s-]([^!@#$%^&*?.\\s]{0,63}[^!@#$%^&*?.\\s])?\\.)+[a-z]{2,6}\\/?/,\n message: LangKey.VerifyHttps,\n trigger: 'blur',\n },\n ip: {\n pattern:\n /^(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}$/,\n message: LangKey.VerifyIp,\n trigger: 'blur',\n },\n number: {\n pattern: /^\\d+$/,\n message: LangKey.VerifyNumber,\n trigger: 'blur',\n },\n english: {\n pattern: /^[A-Za-z]+$/,\n message: LangKey.VerifyEnglish,\n trigger: 'blur',\n },\n chinese: {\n pattern: /^[\\u4E00-\\u9FA5]+$/,\n message: LangKey.VerifyChinese,\n trigger: 'blur',\n },\n}\n\nexport const verifyFormItemRule: { [s: string]: FormItemRule } =\n Object.assign(verify)\n\n/**\n * @description 类型保护\n * @see https://www.tslang.cn/docs/handbook/advanced-types.html 搜索 “自定义类型保护”\n * @param {T} obj 值,它必须是联合类型\n * @param {(obj: T) => boolean} cb 回调函数,返回一个布尔值\n * @example\n * const a = [] | string\n * a.push() // 报错\n * if (isTypeProtect<typeof a, []>(a, (a) => Array.isArray(a))) {\n * a.push() // 正常\n * }\n * @returns {boolean}\n */\nexport const isTypeProtect = <T, P extends T>(\n obj: T,\n cb: (obj: T) => boolean\n): obj is P => cb(obj)\n\n/**\n * 匹配组件\n * @param {Exclude<keyof FormType, 'slot'>} type 类型\n * @returns 组件名称\n */\nexport const matchComponents = (type: Exclude<keyof FormType, 'slot'>) => {\n return {\n [FormTypeEnum.Switch]: 'FSwitch',\n [FormTypeEnum.Input]: 'FInput',\n [FormTypeEnum.Textarea]: 'FInput',\n [FormTypeEnum.Rate]: 'FRate',\n [FormTypeEnum.Select]: 'FSelect',\n [FormTypeEnum.SelectV2]: 'FSelectV2',\n [FormTypeEnum.DatePicker]: 'FDatePicker',\n [FormTypeEnum.Radio]: 'FRadio',\n [FormTypeEnum.Checkbox]: 'FCheckbox',\n [FormTypeEnum.UploadFile]: 'FUploadFile',\n [FormTypeEnum.UploadMedia]: 'FUploadMedia',\n }[type]\n}\n\n/**\n * 是否是boolean 还是 fun 函数类型\n * @param val 值\n * @param params val 为函数类型时 参数\n * @returns {boolean} true 为禁用\n */\nexport const isBolOrFun = (\n val: FunBol,\n params: {\n formData: PowerfulFormData['formData']\n formItem: FormItem\n index: number\n }\n): boolean => {\n if (val) {\n if (typeof val === 'boolean') return val\n else val(params)\n }\n return false\n}\n\n/**\n * 清除:和 空格\n */\nexport const clearSymbol = (v: string | undefined) => {\n return v?.replace(/[::]{1}\\s*$/g, '')\n}\n"],"names":["FormTypeEnum","LangKey","verify","verifyFormItemRule","isTypeProtect","obj","cb","matchComponents","type","isBolOrFun","val","params","clearSymbol","v"],"mappings":"AAeO,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,SAAA,gBAAAA,SAAA;AAAA,OAAA;AAAA,OAAA;AAAA,OAAA;AAAA,SAAA,WAAAC,SAAA;AAAA,MAAMC,IAAS;AAAA,EACpB,OAAO;AAAA,IACL,SACE;AAAA,IACF,SAASD,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,SACE;AAAA,IACF,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,SACE;AAAA,IACF,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,IAAI;AAAA,IACF,SACE;AAAA,IACF,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,SAASA,EAAQ;AAAA,IACjB,SAAS;AAAA,EACX;AACF,GAEaE,IACX,OAAO,OAAOD,CAAM,GAeTE,IAAgB,CAC3BC,GACAC,MACaA,EAAGD,CAAG,GAORE,IAAkB,CAACC,OACvB;AAAA,EACL,CAACR,EAAa,MAAM,GAAG;AAAA,EACvB,CAACA,EAAa,KAAK,GAAG;AAAA,EACtB,CAACA,EAAa,QAAQ,GAAG;AAAA,EACzB,CAACA,EAAa,IAAI,GAAG;AAAA,EACrB,CAACA,EAAa,MAAM,GAAG;AAAA,EACvB,CAACA,EAAa,QAAQ,GAAG;AAAA,EACzB,CAACA,EAAa,UAAU,GAAG;AAAA,EAC3B,CAACA,EAAa,KAAK,GAAG;AAAA,EACtB,CAACA,EAAa,QAAQ,GAAG;AAAA,EACzB,CAACA,EAAa,UAAU,GAAG;AAAA,EAC3B,CAACA,EAAa,WAAW,GAAG;GAC5BQ,CAAI,GASKC,IAAa,CACxBC,GACAC,MAKY;AACZ,MAAID,GAAK;AACP,QAAI,OAAOA,KAAQ;AAAkB,aAAAA;AAChC,IAAAA,EAAIC,CAAM;AAAA,EACjB;AACO,SAAA;AACT,GAKaC,IAAc,CAACC,MACnBA,KAAA,gBAAAA,EAAG,QAAQ,gBAAgB;"}