import { defineComponent, resolveComponent } from "vue";
import { ReadonlyItem } from "./Readonly";
import { xU } from "../../ventoseUtils";
/**
* @Description
* @date 2021-11-09
* @param {any} {properties isPassword 密码输入框 isTextarea
* @param {any} slots}
* @returns {any}
*/
export default defineComponent({
props: ["properties", "slots", "listeners", "propsWillDeleteFromConfigs"],
mounted() {
xU("xItem Input");
},
data(vm) {
return {
oldComponent: "",
ComponentInstance: "",
_modelValue: ""
};
},
methods: {
diffComponent(type) {
if (type === this.oldComponent) {
return this.ComponentInstance;
}
this.oldComponent = type;
const ComponentInstance = resolveComponent(type);
/* @ts-ignore */
ComponentInstance.__v_skip = true;
this.ComponentInstance = ComponentInstance;
if (type === "aTextarea") {
this.properties.autoSize = this.properties.autoSize || {
minRows: 4,
maxRows: 6
};
}
}
},
watch: {
"properties.value"(value) {
if (value !== undefined) {
if (value !== this._modelValue) {
this._modelValue = value;
}
}
},
_modelValue(modelValue) {
this.listeners["onUpdate:value"](modelValue);
}
},
computed: {
component({ properties }) {
if (!this.ComponentInstance) {
this.diffComponent("aInput");
}
if (properties.isPassword) {
this.diffComponent("aInputPassword");
} else if (properties.isNumber) {
this.diffComponent("aInputNumber");
} else if (properties.isTextarea) {
this.diffComponent("aTextarea");
} else if (properties.isSearch) {
this.diffComponent("aInputSearch");
}
return this.ComponentInstance;
}
},
render(vm) {
const {
properties,
slots,
listeners,
propsWillDeleteFromConfigs,
component
} = vm;
/* { properties, slots, listeners, propsWillDeleteFromConfigs } */
/* 只读模式下的 */
if (properties.isReadonly) {
return ;
}
return (
);
}
});