UNPKG

@zhsz/cool-design-crud

Version:

285 lines (284 loc) 8.83 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); require("./test.js"); const core = require("../hooks/core.js"); const index = require("./index.js"); require("@formily/core"); const lodashEs = require("lodash-es"); require("../hooks/table.js"); const tdesignVueNext = require("tdesign-vue-next"); const tdesignIconsVueNext = require("tdesign-icons-vue-next"); function _isSlot(s) { return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s); } function parseFunctionField(value, { scope }, defaultValue) { if (index.isBoolean(value)) { return value; } else if (index.isFunction(value)) { return value({ scope }); } return defaultValue; } function calculateProperties(properties, form) { for (const item in properties) { const element = properties[item]; if (index.isObject(element) && !index.isArray(element) && item !== "cProps") { calculateProperties(element, form); } } if (properties.hidden !== void 0) properties._hidden = parseFunctionField(properties.hidden, { scope: form }, false); if (properties.filter !== void 0) properties._filter = parseFunctionField(properties.filter, { scope: form }, false); if (properties.visible !== void 0) properties._visible = parseFunctionField(properties.visible, { scope: form }, true); if (properties.required !== void 0) properties._required = parseFunctionField(properties.required, { scope: form }, false); if (properties == null ? void 0 : properties.properties) { calculateProperties(properties.properties, form); } if (properties == null ? void 0 : properties.items) { calculateProperties(properties.items, form); } } function parseTableDict(value, data) { let list = []; let isText = false; let separator = ","; if (data == null ? void 0 : data.options) { list = data.options; isText = data.text; separator = data.separator; } else { list = data; } const values = index.isArray(value) ? value : [value]; const arr = values.map((v) => { const d = list.find((d2) => d2.value === v); if (d) { return isText ? d.label : vue.h(tdesignVueNext.Tag, { ...d, style: { margin: "2px" } }, { default: () => d.label }); } else { return v || "-"; } }); return isText ? arr.join(separator) : arr; } function parseTableOpButtons({ buttons, length = 3 }, { scope }) { const { getValue } = core.useTools(); const list = (getValue(buttons, { scope }) || ["edit", "delete"]).filter((item) => !["", void 0, null].includes(item)); if (list.length <= length) { return list.map((vnode) => { return generateButtons(vnode, scope); }); } else { return generateDropDown(list, scope); } } function generateDropDown(list, scope) { let _slot; const { crud } = core.useCore(); return vue.createVNode(tdesignVueNext.Dropdown, { "trigger": "click" }, { default: () => [vue.createVNode(tdesignVueNext.Button, { "theme": "default", "variant": "text", "shape": "square" }, { default: () => [vue.createVNode(tdesignIconsVueNext.EllipsisIcon, { "size": "16" }, null)] }), vue.createVNode(tdesignVueNext.DropdownMenu, null, _isSlot(_slot = list.map((vnode) => { if (vnode === "info") { return vue.withDirectives(vue.createVNode(tdesignVueNext.DropdownItem, { "onClick": () => { crud.rowInfo(scope.row); } }, { default: () => { var _a; return [(_a = crud.dict.label) == null ? void 0 : _a.info]; } }), [[vue.vShow, crud.getPermission("info")]]); } else if (vnode === "edit") { return vue.withDirectives(vue.createVNode(tdesignVueNext.DropdownItem, { "onClick": () => { crud.rowEdit(scope.row); } }, { default: () => { var _a; return [(_a = crud.dict.label) == null ? void 0 : _a.update]; } }), [[vue.vShow, crud.getPermission("update")]]); } else if (vnode === "delete") { return vue.withDirectives(vue.createVNode(tdesignVueNext.DropdownItem, { "theme": "error", "onClick": () => { crud.rowDelete(scope.row); } }, { default: () => { var _a; return [(_a = crud.dict.label) == null ? void 0 : _a.delete]; } }), [[vue.vShow, crud.getPermission("delete")]]); } else { return !vnode.hidden && vue.createVNode(tdesignVueNext.DropdownItem, vue.mergeProps(lodashEs.omit(vnode == null ? void 0 : vnode.dropdownProps, ["onClick", "hidden", "label"]), { "onClick": () => { vnode.onClick({ scope }); } }), { default: () => [vnode.label] }); } })) ? _slot : { default: () => [_slot] })] }); } function generateButtons(vnode, scope) { var _a, _b, _c, _d; core.useTools(); const { crud } = core.useCore(); if (vnode === "info") { return vue.withDirectives(vue.createVNode(tdesignVueNext.Button, { "size": "small", "onClick": () => { crud.rowInfo(scope.row); } }, { default: () => { var _a2; return [(_a2 = crud.dict.label) == null ? void 0 : _a2.info]; } }), [[vue.vShow, crud.getPermission("info")]]); } else if (vnode === "edit") { return vue.withDirectives(vue.createVNode(tdesignVueNext.Button, { "theme": "primary", "size": "small", "onClick": () => { crud.rowEdit(scope.row); } }, { default: () => { var _a2; return [(_a2 = crud.dict.label) == null ? void 0 : _a2.update]; } }), [[vue.vShow, crud.getPermission("update")]]); } else if (vnode === "delete") { return vue.withDirectives(vue.createVNode(tdesignVueNext.Button, { "theme": "danger", "size": "small", "onClick": () => { crud.rowDelete(scope.row); } }, { default: () => { var _a2; return [(_a2 = crud.dict.label) == null ? void 0 : _a2.delete]; } }), [[vue.vShow, crud.getPermission("delete")]]); } else { return !vnode.hidden && vue.createVNode(tdesignVueNext.Button, vue.mergeProps(lodashEs.omit(vnode.buttonProps, ["variant", "onClick", "hidden", "type", "theme", "size", "label"]), { "variant": ((_a = vnode == null ? void 0 : vnode.buttonProps) == null ? void 0 : _a.variant) || "base", "type": (_b = vnode == null ? void 0 : vnode.buttonProps) == null ? void 0 : _b.type, "size": ((_c = vnode == null ? void 0 : vnode.buttonProps) == null ? void 0 : _c.size) || "small", "theme": (_d = vnode == null ? void 0 : vnode.buttonProps) == null ? void 0 : _d.theme, "onClick": () => { vnode.onClick({ scope }); } }), { default: () => [vnode.label] }); } } function parseExtensionComponent(vnode) { const { getValue } = core.useTools(); if (["t-select", "t-radio-group", "t-checkbox-group"].includes(vnode.name)) { const list = getValue(vnode.options) || []; const children = vue.createVNode("div", null, [list.map((e, i) => { if (vnode.name === "t-select") { let label, value; if (index.isString(e)) { label = value = e; } else if (index.isObject(e)) { label = e.label; value = e.value; } else { return vue.h("div", {}, `组件渲染失败,options 参数错误`); } return vue.createVNode(vue.resolveComponent("t-option"), vue.mergeProps({ "key": i, "label": label, "value": value }, e.props), null); } else if (vnode.name === "t-radio-group") { return vue.createVNode(vue.resolveComponent("t-radio"), vue.mergeProps({ "key": i, "label": e.value }, e.props), { default: () => [e.label] }); } else if (vnode.name === "t-checkbox-group") { return vue.createVNode(vue.resolveComponent("t-checkbox"), vue.mergeProps({ "key": i, "label": e.value }, e.props), { default: () => [e.label] }); } else { return null; } })]); return { children }; } else { return {}; } } exports.calculateProperties = calculateProperties; exports.parseExtensionComponent = parseExtensionComponent; exports.parseFunctionField = parseFunctionField; exports.parseTableDict = parseTableDict; exports.parseTableOpButtons = parseTableOpButtons;