2024-07-04 15:00:51 +08:00

79 lines
1.9 KiB
JavaScript

/*!
* @form-create/component-elm-tree v3.2.0
* (c) 2018-2024 xaboy
* Github https://github.com/xaboy/form-create with tree
* Released under the MIT License.
*/
import { defineComponent, createVNode, resolveComponent, mergeProps } from 'vue';
function toArray(value) {
return Array.isArray(value) ? value : [null, undefined, ''].indexOf(value) > -1 ? [] : [value];
}
var NAME = 'fcTree';
var Tree = defineComponent({
name: NAME,
inheritAttrs: false,
formCreateParser: {
mergeProp: function mergeProp(ctx) {
var props = ctx.prop.props;
if (!props.nodeKey) props.nodeKey = 'id';
if (!props.props) props.props = {
label: 'title'
};
}
},
props: {
type: String,
modelValue: {
type: [Array, String, Number],
"default": function _default() {
return [];
}
}
},
emits: ['update:modelValue', 'fc.el'],
watch: {
modelValue: function modelValue() {
this.setValue();
}
},
methods: {
updateValue: function updateValue() {
if (!this.$refs.tree) return;
var value;
if (this.type === 'selected') {
value = this.$refs.tree.getCurrentKey();
} else {
value = this.$refs.tree.getCheckedKeys();
}
this.$emit('update:modelValue', value);
},
setValue: function setValue() {
if (!this.$refs.tree) return;
var type = this.type;
if (type === 'selected') {
this.$refs.tree.setCurrentKey(this.modelValue);
} else {
this.$refs.tree.setCheckedKeys(toArray(this.modelValue));
}
}
},
render: function render() {
return createVNode(resolveComponent("ElTree"), mergeProps(this.$attrs, {
"ref": "tree",
"onCheck": this.updateValue,
"onNode-click": this.updateValue
}), this.$slots);
},
mounted: function mounted() {
this.setValue();
this.$emit('fc.el', this.$refs.tree);
}
});
export { Tree as default };