UNPKG

d-render

Version:

数据渲染库 - form、table、search-form

61 lines (58 loc) 1.69 kB
import { defineComponent, ref, computed, createVNode, Fragment, h } from 'vue'; import { ElIcon, ElDrawer } from 'element-plus'; import { List } from '@element-plus/icons-vue'; var formDirectory = /* @__PURE__ */ defineComponent({ props: { directory: { type: Object, required: true } }, setup(props) { const drawerSwitch = ref(false); const openDrawer = () => { drawerSwitch.value = true; }; const list = computed(() => { const result = []; Object.keys(props.directory).forEach((key) => { result.push({ key, config: props.directory[key] }); }); return result; }); const DynamicHead = ({ config }) => { return h("a", { href: `#${config.key}`, class: "form-directory-item" }, [h("h" + config.config.level, {}, [config.config.label])]); }; return () => createVNode(Fragment, null, [createVNode("div", { "class": "form-directory__switch", "onClick": () => openDrawer() }, [createVNode(ElIcon, { "style": "font-size: 24px" }, { default: () => [createVNode(List, null, null)] })]), createVNode(ElDrawer, { "custom-class": "form-directory__drawer", "modelValue": drawerSwitch.value, "onUpdate:modelValue": ($event) => drawerSwitch.value = $event, "title": "\u8868\u5355\u76EE\u5F55" }, { default: () => [createVNode("div", { "class": "form-directory" }, [list.value.map((v) => { return createVNode(DynamicHead, { "key": v.key, "config": v }, null); })])] })]); } }); export { formDirectory as default };