@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
266 lines (265 loc) • 9.21 kB
JavaScript
import { inject as B, ref as o, defineComponent as V, onMounted as L, createVNode as x } from "vue";
import { FTreeView as R } from "../tree-view/index.esm.js";
import { DgControl as j } from "../designer-canvas/index.esm.js";
import { cloneDeep as G } from "lodash-es";
const H = {
/** 树表数据 */
data: { type: Object, default: [] },
/** 树表是否支持可选状态 */
selectable: { type: Boolean, default: !1 },
/** 选中父节点会自动选中子节点 */
autoCheckChildren: { type: Boolean, default: !0 },
/** 返回值展示父节点和子节点 */
cascade: { type: Boolean, default: !0 },
/** 是否显示图标集 */
showTreeNodeIcons: { type: Boolean, default: !0 },
/** 是否显示连接线 */
showLines: { type: Boolean, default: !1 },
/** 新增值 */
newDataItem: { type: Object, default: {} },
/** 连接线颜色 */
lineColor: { type: String, default: "#9399a0" },
/** 单元格高度 */
cellHeight: { type: Number, default: 28 },
/** 控件信息 */
dgControl: { type: Object, default: {} }
};
var h = /* @__PURE__ */ ((a) => (a.Frame = "frame", a.dataGrid = "data-grid", a.listView = "list-view", a.form = "form", a.uploader = "uploader", a.calendar = "calendar", a.page = "page", a))(h || {});
function _(a, w) {
const d = B("designerContext"), f = d && d.dgControl ? d.dgControl : j, C = o(""), b = o("");
function g(e) {
var u, c, s, N;
let i = "controlIcon fd-i-Family ", t = "";
switch (e == null ? void 0 : e.type) {
case "form-group": {
t = ((u = f[e.type]) == null ? void 0 : u.icon) || ((c = e.editor) == null ? void 0 : c.type) || "", (s = f[e.editor.type]) != null && s.icon && (t = f[e.editor.type].icon);
break;
}
default:
t = ((N = f[e.type]) == null ? void 0 : N.icon) || e.type;
}
const r = `fd_pc-${t}`;
return i += r, i;
}
function S(e, i) {
var u;
let t = e.id;
const r = i == null ? void 0 : i.contents;
if ((i == null ? void 0 : i.type) === "splitter" && r && r.length === 2) {
const c = i.direction !== "column";
e.id === ((u = r[0]) == null ? void 0 : u.id) ? t = c ? "左侧区域" : "上方区域" : t = c ? "右侧区域" : "下方区域";
}
return t;
}
function O(e) {
if (e.isLikeCardContainer)
return "区块";
const i = e.appearance && e.appearance.class || "", t = i.split(" ");
return e.id === "page-header" && i && i === "f-page-header" ? "页头" : t.includes("f-page-header-base") ? "页头容器" : t.includes("f-page-header-extend") ? "页头扩展容器" : t.includes("f-title") ? "标题容器" : t.includes("f-page") ? "根容器" : t.includes("f-page-main") ? "内容区域" : t.includes("f-scrollspy-content") && e.isScrollspyContainer ? "滚动监听容器" : t.includes("f-grid-is-sub") ? "表格容器" : t.includes("f-filter-container") ? "筛选条容器" : "容器";
}
function k(e) {
const { componentType: i } = e;
switch (i) {
case h.Frame:
return "根组件";
case h.dataGrid:
return (a == null ? void 0 : a.formSchemaUtils.selectNode(e, (r) => r.type === (f["tree-grid"] && f["tree-grid"].type))) ? "树表格组件" : "表格组件";
case h.uploader:
return "附件组件";
case h.listView:
return "列表视图组件";
case h.form:
return "卡片组件";
case h.calendar:
return "日历组件";
case h.page:
return e.name || "页面";
default:
return "组件";
}
}
function F(e, i) {
const t = e.name || e.text || e.label || e.title || e.mainTitle;
if (e.type !== "component" && t && typeof t == "string")
return t.trim();
switch (e.type) {
case "content-container":
return O(e);
case "splitter-pane":
return S(e, i);
case "component":
return k(e);
default:
return f[e.type] && f[e.type].name || e.id;
}
}
function n(e, i) {
const t = e.length ? e[0] : null;
if (!t)
return;
b.value = "", C.value = t.originalId;
const r = t ? `${t.originalId}-design-item` : "", u = document.getElementById(r);
u && u.click(), w.emit("selectionChanged", t);
}
function l(e) {
if (!e)
return;
const i = `${e}-design-item`, t = document.getElementById(i);
t && t.click();
}
return { getIcon: g, getTitle: F, onChanged: n, currentSelectedNodeId: C, currentSelectedOutsideNodeId: b, triggerOutsideClick: l };
}
function $(a, w, d = !1) {
const { getIcon: f, getTitle: C } = w;
function b(n, l, e, i, t) {
var u;
const r = (u = a.data.module) == null ? void 0 : u.components.find((c) => c.id === n.component);
r && g([r], l, e, i, t);
}
function g(n, l, e, i, t) {
return n.forEach((r) => {
var c, s;
if (r.type === "component" && (t = r.id), r.type === "component-ref") {
b(r, l, e, i, t);
return;
}
const u = {
originalId: r.id,
layer: e,
originalParent: i == null ? void 0 : i.id,
componentId: t,
name: C(r, i),
type: r.type,
controlIcon: f(r),
rawSchema: r
};
l.push(G(u)), (r.contents || r.buttons) && g(r.contents || r.buttons, l, e + 1, r, t), d && (s = (c = r.toolbar) == null ? void 0 : c.buttons) != null && s.length && g(r.toolbar.buttons, l, e + 1, r, t);
}), l;
}
function S(n) {
const l = [], e = n.find((u) => u.layer === 0);
n = n.filter((u) => u.layer !== 0), l.push(e);
let i = e.originalId, t = 0, r = 1e3;
for (; n.length !== 0 || r === 0; ) {
const u = n.find((c) => c.originalParent === i);
u ? (l.push(u), i = u.originalId, n = n.filter((c) => c.originalId !== i), t = 0) : (t -= 1, i = l.slice(t)[0].originalId), r -= 1;
}
return l;
}
function O(n) {
return n.forEach((l, e) => {
l.id = (e + 1).toString();
}), n.forEach((l) => {
var e;
l.parent = ((e = n.find((i) => i.originalId === l.originalParent)) == null ? void 0 : e.id) || "";
}), n.forEach((l) => {
l.hasChildren = n.findIndex((e) => e.parent === l.id) > 0;
}), n;
}
function k(n) {
const l = {
originalId: a.data.module.id,
layer: 0,
originalParent: null,
name: "页面",
type: "module",
controlIcon: "controlIcon fd-i-Family fd_pc-module",
rawSchema: a.data.module
}, e = [];
return n.forEach((i) => {
i[0].originalParent = l.originalId, e.push(...i);
}), e.unshift(l), e;
}
function F() {
const n = a.data.module ? o(a.data.module.components) : o([a.data]);
if (!n.value)
return;
const l = [];
n.value.forEach((r) => {
if (r) {
const u = [];
u.push(r);
const N = g(u, [], 1, null, r.id);
l.push(N);
}
});
const e = k(l), i = S(e);
return O(i);
}
return { getData: F };
}
const U = /* @__PURE__ */ V({
name: "FDesignerOutline",
props: H,
emits: ["outputValue", "currentEvent", "selectionChanged"],
setup(a, w) {
const d = o(), f = o(a.selectable), C = o(a.autoCheckChildren), b = o(a.cascade), g = o(a.showTreeNodeIcons), S = o(a.showLines), O = o(a.newDataItem), k = o(a.lineColor), F = o(a.cellHeight), n = o([{
field: "name",
title: "",
dataType: "string"
}]), l = B("designer-host-service"), e = _(l, w), {
onChanged: i,
currentSelectedNodeId: t,
currentSelectedOutsideNodeId: r,
triggerOutsideClick: u
} = e, {
getData: c
} = $(a, e);
let s = c();
function N() {
var y, T, D, v;
if (s = c(), d.value && d.value.updateDataSource) {
if (d.value.updateDataSource(s), r.value) {
(T = (y = d.value).emptyCurrentRowId) == null || T.call(y), u(r.value);
return;
}
t && ((v = (D = d.value).emptyCurrentRowId) == null || v.call(D), E({
id: t.value
}));
}
}
function E(y) {
var T, D;
if (!y && d.value && ((D = (T = d.value).emptyCurrentRowId) == null || D.call(T)), y && d.value && d.value.selectItem) {
const v = s.find((P) => P.originalId === y.id);
v ? (d.value.selectRowById(v.id), t && (t.value = v.originalId), d.value.activeRowById(v.id), r.value = "") : t && (t.value = "", r.value = y.id);
}
}
return w.expose({
selectControlTreeNode: E,
refreshControlTree: N
}), L(() => {
s.length && d.value && E({
id: s[0].originalId
});
}), () => x("div", {
class: "designer-control-tree"
}, [x(R, {
ref: d,
data: s,
columns: n.value,
selectable: f.value,
columnOption: {
fitColumns: !0,
fitMode: "expand"
},
autoCheckChildren: C.value,
cascade: b.value,
showTreeNodeIcons: g.value,
showLines: S.value,
newDataItem: O.value,
lineColor: k.value,
cellHeight: F.value,
fit: !1,
autoHeight: !0,
iconField: "controlIcon",
virtualized: !0,
onSelectionChange: i
}, null)]);
}
});
export {
h as ComponentType,
U as FDesignerOutline,
H as designerOutlineProps
};