@zhsz/cool-design-crud
Version:
285 lines (284 loc) • 8.83 kB
JavaScript
;
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;