UNPKG

song-ui-u

Version:

vue3 + js的PC前端组件库

110 lines (96 loc) 2.77 kB
'use strict'; var vue = require('vue'); var constant = require('./constant.cjs'); var index = require('../../../hook/use-namespace/index.cjs'); require('song-ui-pro-icon'); require('../../../hook/use-zindex/index.cjs'); var _pluginVue_exportHelper = require('../../../_virtual/_plugin-vue_export-helper.cjs'); const __default__ = { name: "x-form" }; const _sfc_main = /*#__PURE__*/Object.assign(__default__, { props: { model: { type: Object, default: () => ({}), }, rules: { type: Object, default: () => ({}), }, labelWidth: { type: String, default: "", }, align: { type: String, default: "", }, size: { type: String, default: "", }, inline: Boolean, colon: { type: Boolean, default: true, }, }, setup(__props, { expose: __expose }) { const ns = index.useNamespace("form"); const props = __props; // 所有字段 const modelFields = []; const pushField = (context) => modelFields.push(context); /** * 校验 */ const validate = async (fields) => { // validateFields const validateFields = filterFields(fields) || modelFields; let verificationError = []; for (const field of validateFields) { try { await field.validate(); } catch (fields) { verificationError = [...verificationError, ...fields]; } } if (!verificationError.length) return true; return Promise.reject(verificationError); }; /** * 重置 */ const reset = () => { const validateFields = modelFields; for (const field of validateFields) { field?.resetField(); } }; // 过滤需要校验的字段 const filterFields = (fields) => { if (!fields) { return null; } const fieldArr = modelFields.filter((v) => fields.includes(v.prop)); return !!fieldArr.length ? fieldArr : null; }; vue.provide(constant.FORM_KEY, { ...vue.toRefs(props), pushField }); __expose({ validate, reset, }); const __returned__ = { ns, props, modelFields, pushField, validate, reset, filterFields, toRefs: vue.toRefs, provide: vue.provide, get FORM_KEY() { return constant.FORM_KEY }, get useNamespace() { return index.useNamespace } }; Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true }); return __returned__ } }); function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return (vue.openBlock(), vue.createElementBlock("form", { class: vue.normalizeClass([$setup.ns.b(), $setup.ns.is('inline', $props.inline)]) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2 /* CLASS */)) } var Form = /*#__PURE__*/_pluginVue_exportHelper(_sfc_main, [['render',_sfc_render],['__file',"E:\\code\\my-code\\song-ui-ultra\\packages\\components\\form\\src\\form.vue"]]); module.exports = Form; //# sourceMappingURL=form.vue.cjs.map