UNPKG

@fecp/mobile

Version:

105 lines (104 loc) 4.27 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const vue = require("vue"); const formRule = require("../../../utils/formRule.js"); const _sfc_main = { __name: "FormItem", props: { fieldType: { type: String, default: "text" }, disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, placeholder: String }, emits: ["update:modelValue"], setup(__props, { emit: __emit }) { const props = __props; const formItem = vue.computed(() => { switch (props.fieldType) { case "text": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../field/index.js"))); case "picker": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldPicker/index.js"))); case "cascader": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldCascaderPicker/index.js"))); case "calendar": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldCalendarPicker/index.js"))); case "date": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldDatePicker/index.js"))); case "dateTime": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldDateTimePicker/index.js"))); case "time": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldTimePicker/index.js"))); case "radio": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldRadio/index.js"))); case "checkbox": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldCheckbox/index.js"))); case "upload": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldUploader/index.js"))); case "area": return vue.defineAsyncComponent(() => Promise.resolve().then(() => require("../fieldArea/index.js"))); } }); const formData = vue.inject("formData"); const formDisabled = vue.inject("formDisabled"); const formReadonly = vue.inject("formReadonly"); const dicListMap = vue.inject("dicListMap"); const formItemDisabled = vue.computed(() => { if (formDisabled == null ? void 0 : formDisabled.value) { return formDisabled.value; } return props.disabled; }); const formItemReadonly = vue.computed(() => { if (formReadonly == null ? void 0 : formReadonly.value) { return formReadonly.value; } return props.readonly; }); const attrs = vue.useAttrs(); const emit = __emit; const compValue = vue.computed({ get: () => { var _a; if (formData) { return (_a = formData.value) == null ? void 0 : _a[attrs.name]; } return props.modelValue; }, set: (val) => { if (formData) { formData.value[attrs.name] = val; } else { emit("update:modelValue", val); } } }); const rules = vue.computed(() => { return formRule.parseRule(props.fieldType, attrs); }); return (_ctx, _cache) => { var _a; return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(formItem)), vue.mergeProps(_ctx.$attrs, { modelValue: vue.unref(compValue), "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(compValue) ? compValue.value = $event : null), fieldType: __props.fieldType, rules: vue.unref(rules), required: vue.unref(formItemReadonly) ? false : "auto", disabled: vue.unref(formItemDisabled), readonly: vue.unref(formItemReadonly), placeholder: vue.unref(formItemReadonly) ? "" : __props.placeholder, dicList: (_a = vue.unref(dicListMap)) == null ? void 0 : _a[vue.unref(attrs).dicKey] }), null, 16, ["modelValue", "fieldType", "rules", "required", "disabled", "readonly", "placeholder", "dicList"]); }; } }; exports.default = _sfc_main;