@wocwin/t-ui-plus
Version:
Page level components developed based on Element Plus.
132 lines (127 loc) • 4.53 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
const _hoisted_1 = { class: "t_form" };
const _hoisted_2 = { class: "collapse-item_title" };
const _hoisted_3 = {
key: 0,
class: "t_btn"
};
var _sfc_main = /* @__PURE__ */ vue.defineComponent({
...{
name: "ModuleForm"
},
__name: "moduleForm",
props: {
// 表单配置项
formOpts: {
type: Object,
default: () => ({})
},
// 是否Title文字加粗
titleBold: {
type: Boolean,
default: false
}
},
emits: ["handleEvent"],
setup(__props, { expose: __expose, emit: __emit }) {
const props = __props;
const dashboardRef = vue.ref({});
const slots = vue.useSlots();
const attrs = vue.useAttrs();
const getChildRef = (index) => {
const childRef = dashboardRef.value[index];
return childRef;
};
__expose({ getChildRef });
const defaultActiveKey = vue.computed({
get() {
return Object.keys(props.formOpts);
},
set(val) {
return val;
}
});
const emits = __emit;
const handleEvent = (val, type) => {
emits("handleEvent", val, type);
};
return (_ctx, _cache) => {
const _component_t_form = vue.resolveComponent("t-form");
const _component_el_collapse_item = vue.resolveComponent("el-collapse-item");
const _component_el_collapse = vue.resolveComponent("el-collapse");
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
vue.createVNode(_component_el_collapse, {
modelValue: defaultActiveKey.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => defaultActiveKey.value = $event)
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(__props.formOpts, (formOpt, formIndex) => {
return vue.openBlock(), vue.createBlock(_component_el_collapse_item, {
class: vue.normalizeClass([
formOpt.className,
{
noTitle: !formOpt.title,
disabledStyle: formOpt.disabled,
title_bold: __props.titleBold
}
]),
key: formIndex,
name: formOpt.name,
disabled: formOpt.disabled
}, {
title: vue.withCtx(() => [
vue.createElementVNode(
"span",
_hoisted_2,
vue.toDisplayString(formOpt.title),
1
/* TEXT */
),
formOpt.btn ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
vue.renderSlot(_ctx.$slots, formOpt.btn)
])) : vue.createCommentVNode("v-if", true)
]),
default: vue.withCtx(() => [
formOpt.slotName ? vue.renderSlot(_ctx.$slots, formOpt.slotName, { key: 0 }) : vue.createCommentVNode("v-if", true),
vue.createVNode(_component_t_form, vue.mergeProps({
ref_for: true,
ref: (el) => {
dashboardRef.value[formIndex] = el;
},
formOpts: formOpt.opts,
widthSize: formOpt.widthSize || 3
}, vue.unref(attrs), { onHandleEvent: handleEvent }), vue.createSlots({
_: 2
/* DYNAMIC */
}, [
vue.renderList(vue.unref(slots), (_index, name) => {
return {
name,
fn: vue.withCtx((data) => [
vue.renderSlot(_ctx.$slots, name, vue.normalizeProps(vue.guardReactiveProps(data)))
])
};
})
]), 1040, ["formOpts", "widthSize"])
]),
_: 2
/* DYNAMIC */
}, 1032, ["class", "name", "disabled"]);
}),
128
/* KEYED_FRAGMENT */
))
]),
_: 3
/* FORWARDED */
}, 8, ["modelValue"])
]);
};
}
});
exports.default = _sfc_main;