@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
1,091 lines (1,090 loc) • 36.9 kB
JavaScript
import { ref as $, computed as M, defineComponent as ce, watch as ue, onMounted as de, watchEffect as fe, createVNode as C, Teleport as me, Transition as A, withModifiers as _, Fragment as pe } from "vue";
import ve from "../response-toolbar/index.esm.js";
import { getCustomStyle as be, getMaxZIndex as ge, withInstall as ye } from "../common/index.esm.js";
import { resolveAppearance as Te } from "../dynamic-resolver/index.esm.js";
import { isPlainObject as I, cloneDeep as W } from "lodash-es";
import { LocaleService as G } from "../locale/index.esm.js";
const we = /* @__PURE__ */ new Map([
["appearance", Te]
]), Ce = "https://json-schema.org/draft/2020-12/schema", he = "https://farris-design.gitee.io/drawer.schema.json", Se = "drawer", ke = "A Farris Component", Fe = "object", xe = {
id: {
description: "The unique identifier for drawer",
type: "string"
},
type: {
description: "The type string of drawer",
type: "string",
default: "drawer"
},
appearance: {
description: "",
type: "object",
properties: {
class: {
type: "string"
},
style: {
type: "string"
}
},
default: {}
},
visible: {
description: "",
type: "boolean",
default: !0
},
title: {
description: "",
type: "string",
default: "标题"
},
position: {
description: "",
type: "string",
default: "right"
},
width: {
description: "",
type: "number",
default: 500
},
showMask: {
description: "",
type: "boolean",
default: !0
},
showHeader: {
description: "",
type: "boolean",
default: !0
},
showClose: {
description: "",
type: "boolean",
default: !0
},
customHeader: {
description: "",
type: "boolean",
default: !1
},
headerTemplate: {
description: "",
type: "object"
},
headerToolbar: {
description: "",
type: "object",
properties: {
appearance: {
description: "",
type: "object",
properties: {
class: {
type: "string",
default: ""
}
}
},
id: {
description: "",
type: "string"
},
type: {
description: "",
type: "string",
default: "drawer-toolbar"
},
alignment: {
description: "The alignment of Response Toolbar Button.",
type: "string",
default: "right"
},
buttons: {
description: "The items of Response Toolbar.",
type: "array",
default: []
}
}
},
showFooter: {
description: "",
type: "boolean",
default: !0
},
showEntry: {
description: "",
type: "boolean",
default: !1
},
footerToolbar: {
description: "",
type: "object",
properties: {
appearance: {
description: "",
type: "object",
properties: {
class: {
type: "string",
default: ""
}
}
},
id: {
description: "",
type: "string"
},
type: {
description: "",
type: "string",
default: "drawer-toolbar"
},
alignment: {
description: "The alignment of Response Toolbar Button.",
type: "string",
default: "right"
},
buttons: {
description: "The items of Response Toolbar.",
type: "array",
default: []
}
}
},
contents: {
description: "",
type: "array",
default: []
},
footerTemplate: {
description: "",
type: "object"
},
footerContentType: {
description: "",
type: "string",
default: "toolbar"
},
footerHeight: {
description: "",
type: "number",
default: 60
},
allowClickMaskToClose: {
description: "",
type: "boolean",
default: !0
},
transparent: {
description: "遮罩层是否透明",
type: "boolean",
default: !1
},
host: {
description: "",
type: "string"
}
}, Oe = [
"id",
"type",
"contents"
], Pe = {
beforeClose: "关闭前事件"
}, je = {
$schema: Ce,
$id: he,
title: Se,
description: ke,
type: Fe,
properties: xe,
required: Oe,
events: Pe
};
function Ee(e, t, r) {
return Object.assign(t, {
title: "标题",
headerToolbar: {
id: t.id + "_header_toolbar",
type: "drawer-toolbar",
buttons: []
},
footerToolbar: {
id: t.id + "_footer_toolbar",
type: "drawer-toolbar",
buttons: []
}
}), t;
}
function Z(e, t) {
let r;
function n(a) {
const { properties: c, title: p, ignore: o } = a, i = o && Array.isArray(o), u = Object.keys(c).reduce((v, g) => ((!i || !o.find((S) => S === g)) && (v[g] = c[g].type === "object" && c[g].properties ? n(c[g]) : W(c[g].default)), v), {});
if (p && (!i || !o.find((v) => v === "id"))) {
const v = p.toLowerCase().replace(/-/g, "_");
u.id = `${v}_${Math.random().toString().slice(2, 6)}`;
}
return u;
}
function m(a) {
const { properties: c, title: p, required: o } = a;
if (o && Array.isArray(o)) {
const i = o.reduce((u, v) => (u[v] = c[v].type === "object" && c[v].properties ? n(c[v]) : W(c[v].default), u), {});
if (p && o.find((u) => u === "id")) {
const u = p.toLowerCase().replace(/-/g, "_");
i.id = `${u}_${Math.random().toString().slice(2, 6)}`;
}
return i;
}
return {
type: p
};
}
function h(a, c = {}, p) {
const o = e[a];
if (o) {
let i = m(o);
const u = t[a];
return i = u ? u({ getSchemaByType: h }, i, c, p) : i, r != null && r.appendIdentifyForNewControl && r.appendIdentifyForNewControl(i), i;
}
return null;
}
function T(a, c) {
const p = n(c);
return Object.keys(p).reduce((o, i) => (Object.prototype.hasOwnProperty.call(a, i) && (o[i] && I(o[i]) && I(a[i] || !a[i]) ? Object.assign(o[i], a[i] || {}) : o[i] = a[i]), o), p), p;
}
function k(a, c) {
return Object.keys(a).filter((o) => a[o] != null).reduce((o, i) => {
if (c.has(i)) {
const u = c.get(i);
if (typeof u == "string")
o[u] = a[i];
else {
const v = u(i, a[i], a);
Object.assign(o, v);
}
} else
o[i] = a[i];
return o;
}, {});
}
function F(a, c, p = /* @__PURE__ */ new Map()) {
const o = T(a, c);
return k(o, p);
}
function f(a) {
var p;
const c = a.type;
if (c) {
const o = e[c];
if (!o)
return a;
const i = T(a, o), u = ((p = a.editor) == null ? void 0 : p.type) || "";
if (u) {
const v = e[u], g = T(a.editor, v);
i.editor = g;
}
return i;
}
return a;
}
function b(a) {
r = a;
}
return { getSchemaByType: h, resolveSchemaWithDefaultValue: f, resolveSchemaToProps: F, mappingSchemaToProps: k, setDesignerContext: b };
}
const J = {}, Q = {}, { resolveSchemaWithDefaultValue: De, resolveSchemaToProps: Re, mappingSchemaToProps: Me } = Z(J, Q);
function Ne(e = {}) {
function t(f, b, a, c) {
if (typeof a == "number")
return c[f].length === a;
if (typeof a == "object") {
const p = Object.keys(a)[0], o = a[p];
if (p === "not")
return Number(c[f].length) !== Number(o);
if (p === "moreThan")
return Number(c[f].length) >= Number(o);
if (p === "lessThan")
return Number(c[f].length) <= Number(o);
}
return !1;
}
function r(f, b, a, c) {
return c[f] && c[f].propertyValue && String(c[f].propertyValue.value) === String(a);
}
const n = /* @__PURE__ */ new Map([
["length", t],
["getProperty", r]
]);
Object.keys(e).reduce((f, b) => (f.set(b, e[b]), f), n);
function m(f, b) {
const a = f;
return typeof b == "number" ? [{ target: a, operator: "length", param: null, value: Number(b) }] : typeof b == "boolean" ? [{ target: a, operator: "getProperty", param: f, value: !!b }] : typeof b == "object" ? Object.keys(b).map((c) => {
if (c === "length")
return { target: a, operator: "length", param: null, value: b[c] };
const p = c, o = b[c];
return { target: a, operator: "getProperty", param: p, value: o };
}) : [];
}
function h(f) {
return Object.keys(f).reduce((a, c) => {
const p = m(c, f[c]);
return a.push(...p), a;
}, []);
}
function T(f, b) {
if (n.has(f.operator)) {
const a = n.get(f.operator);
return a && a(f.target, f.param, f.value, b) || !1;
}
return !1;
}
function k(f, b) {
return h(f).reduce((p, o) => p && T(o, b), !0);
}
function F(f, b) {
const a = Object.keys(f), c = a.includes("allOf"), p = a.includes("anyOf"), o = c || p, v = (o ? f[o ? c ? "allOf" : "anyOf" : "allOf"] : [f]).map((S) => k(S, b));
return c ? !v.includes(!1) : v.includes(!0);
}
return { parseValueSchema: F };
}
const $e = {
convertTo: (e, t, r, n) => {
e.appearance || (e.appearance = {}), e.appearance[t] = r;
},
convertFrom: (e, t, r) => e.appearance ? e.appearance[t] : e[t]
}, Be = {
convertFrom: (e, t, r) => e.buttons && e.buttons.length ? `共 ${e.buttons.length} 项` : "无"
}, ze = {
convertTo: (e, t, r, n) => {
e.editor && (e.editor[t] = r);
},
convertFrom: (e, t, r) => e.editor && Object.prototype.hasOwnProperty.call(e.editor, t) ? e.editor[t] : e[t]
}, Le = {
button: { type: "button", name: "按钮" },
"response-toolbar": { type: "response-toolbar", name: "工具栏" },
"response-toolbar-item": { type: "response-toolbar-item", name: "按钮" },
"content-container": { type: "content-container", name: "容器" },
"input-group": { type: "input-group", name: "文本" },
textarea: { type: "textarea", name: "多行文本" },
lookup: { type: "lookup", name: "帮助" },
"number-spinner": { type: "number-spinner", name: "数值" },
"date-picker": { type: "date-picker", name: "日期" },
switch: { type: "switch", name: "开关" },
"radio-group": { type: "radio-group", name: "单选组" },
"check-box": { type: "check-box", name: "复选框" },
"check-group": { type: "check-group", name: "复选框组" },
"combo-list": { type: "combo-list", name: "下拉列表" },
"response-form": { type: "response-form", name: "卡片面板" },
"response-layout": { type: "response-layout", name: "布局容器", icon: "response-layout-3" },
"response-layout-item": { type: "response-layout-item", name: "布局", icon: "response-layout-1" },
"tree-grid": { type: "tree-grid", name: "树表格" },
"tree-grid-column": { type: "tree-grid-column", name: "树表格列" },
"data-grid": { type: "data-grid", name: "表格" },
"data-grid-column": { type: "data-grid-column", name: "表格列" },
module: { type: "Module", name: "模块" },
component: { type: "component", name: "组件" },
tabs: { type: "tabs", name: "标签页" },
"tab-page": { type: "tab-page", name: "标签页项", dependentParentControl: "Tab" },
"tab-toolbar-item": { type: "tab-toolbar-item", name: "标签页工具栏按钮" },
"drawer-toolbar-item": { type: "drawer-toolbar-item", name: "抽屉工具栏按钮" },
"html-template": { type: "html-template", name: "模板容器" },
"time-picker": { type: "time-picker", name: "时间选择" },
section: { type: "section", name: "分组面板" },
"section-toolbar": { type: "section-toolbar", name: "分组面板工具栏" },
"section-toolbar-item": { type: "section-toolbar-item", name: "分组面板按钮" },
splitter: { type: "splitter", name: "分栏面板" },
"splitter-pane": { type: "splitter-pane", name: "分栏面板项", dependentParentControl: "Splitter" },
"component-ref": { type: "component-ref", name: "组件引用节点" },
uploader: { type: "uploader", name: "附件上传" },
"page-header": { type: "page-header", name: "页头" },
"page-footer": { type: "page-footer", name: "页脚" },
"tab-toolbar": { type: "tab-toolbar", name: "标签页工具栏" },
"drawer-toolbar": { type: "drawer-toolbar", name: "抽屉工具栏" },
fieldset: { type: "fieldset", name: "分组" },
"query-solution": { type: "query-solution", name: "筛选方案" },
drawer: { type: "drawer", name: "抽屉" },
"external-container": { type: "external-container", name: "外部容器", icon: "content-container" },
"list-nav": { type: "list-nav", name: "列表导航" },
"list-view": { type: "list-view", name: "列表" },
"filter-bar": { type: "filter-bar", name: "筛选条" },
"language-textbox": { type: "language-textbox", name: "多语输入框" },
image: { type: "image", name: "图像" },
"discussion-editor": { type: "discussion-editor", name: "评论编辑区" },
"discussion-list": { type: "discussion-list", name: "评论列表" },
comment: { type: "comment", name: "评论区" },
"rich-text-editor": { type: "rich-text-editor", name: "富文本", icon: "rich-text-box" },
calendar: { type: "calendar", name: "日历", icon: "date-picker" },
wizard: { type: "wizard", name: "向导", icon: "wizard" },
"wizard-page": { type: "wizard-page", name: "向导页", icon: "wizard" },
"wizard-page-detail": { type: "wizard-page-detail", name: "向导详情", icon: "wizard" },
step: { type: "step", name: "步骤条", icon: "step" },
"dynamic-form": { type: "dynamic-form", name: "动态表单" }
}, He = {
convertFrom: (e, t, r) => {
var m;
const n = e.editor && e.editor[t] ? e.editor[t] : e[t];
return ((m = Le[n]) == null ? void 0 : m.name) || n;
}
}, qe = {
convertTo: (e, t, r, n) => {
e[t] = e[t];
},
convertFrom: (e, t, r) => e.editor ? r.getRealEditorType(e.editor.type) : ""
}, Ae = {
convertTo: (e, t, r, n) => {
(e.type === "data-grid-column" || e.type === "tree-grid-column") && (e.formatter ? e.formatter[t] = r : e.formatter = {
[t]: r
});
},
convertFrom: (e, t, r) => {
if (e.formatter) {
if (t === "trueText")
return e.formatter.trueText;
if (t === "falseText")
return e.formatter.falseText;
if (t === "prefix")
return e.formatter.prefix;
if (t === "suffix")
return e.formatter.suffix;
if (t === "precision")
return e.formatter.precision;
if (t === "decimal")
return e.formatter.decimal;
if (t === "thousand")
return e.formatter.thousand;
if (t === "dateFormat")
return e.formatter.dateFormat || "yyyy-MM-dd";
if (t === "customFormat")
return e.formatter.customFormat;
if (t === "type")
return e.formatter.type || "none";
if (t === "customFormat")
return e.formmater.customFormat;
}
return "none";
}
}, _e = {
convertTo: (e, t, r, n) => {
e.command ? e.command[t] = r : e.command = {
[t]: r
}, t === "enableType" && r === "default" && (e.command.enable = !0, e.command.commands = [
{
text: "编辑",
type: "primary",
command: "edit"
},
{
text: "删除",
type: "danger",
command: "remove"
}
]), t === "enableType" && r === "custom" && (e.command.enable = !0, e.command.commands = [
{
value: "add",
text: "增加",
type: "link"
},
{
value: "edit",
text: "编辑",
type: "danger"
},
{
value: "remove",
text: "删除",
type: "remove"
}
]), t === "enableType" && r === "unable" && (e.command.enable = !1);
},
convertFrom: (e, t, r) => {
var n, m;
if (e.command) {
if (t === "enableType") {
const h = (m = (n = e.command) == null ? void 0 : n.commands) == null ? void 0 : m.find((T) => T.command === "edit" && T.type === "primary");
return e.command.enable ? h ? "default" : "custom" : "unable";
}
if (t === "commands")
return e.command.enableType === "custom" ? e.command.commands : [];
if (t === "formatter")
return e.command.formatter;
if (t === "count")
return e.command.count;
if (t === "columnWidth")
return e.command.columnWidth || 200;
}
return "";
}
}, Ie = {
convertTo: (e, t, r, n) => {
e.column ? e.column[t] = r : e.column = {
[t]: r
}, t === "fitColumns" && r && (e.column.fitMode || (e.column.fitMode = "average"));
},
convertFrom: (e, t, r) => {
if (e.column) {
if (t === "fitColumns")
return e.column.fitColumns;
if (t === "fitMode")
return e.column.fitMode;
}
return "";
}
}, We = {
convertTo: (e, t, r, n) => {
e.summary ? e.summary[t] = r : e.summary = {
[t]: r
}, t === "enable" && r && (e.summary ? e.summary.groupFields || (e.summary.groupFields = []) : e.summary = {
enable: r,
groupFields: []
});
},
convertFrom: (e, t, r) => {
var n, m;
return t === "customSummaryStyle" ? e.summary.customSummaryStyle : t === "position" ? ((n = e.summary) == null ? void 0 : n[t]) || "bottom" : t === "customRender" ? ((m = e.summary) == null ? void 0 : m[t]) || "" : e.summary && t === "enable" ? e.summary.enable : e.type === "data-grid-column" ? e.enableSummary === void 0 ? !1 : e.enableSummary : "";
}
}, Ge = {
convertTo: (e, t, r, n) => {
e.group ? e.group[t] = r : e.group = {
[t]: r
}, t === "enable" && r && (e.group ? e.group.groupFields || (e.group.groupFields = []) : e.group = {
enable: r,
groupFields: [],
showSummary: !1,
customRender: ""
});
},
convertFrom: (e, t, r) => {
if (e.group) {
if (t === "enable")
return e.group.enable;
if (t === "showSummary")
return e.group.showSummary;
if (t === "customRender")
return e.group.customRender;
if (t === "groupFields")
return e.group.groupFields;
}
}
}, Ze = {
convertFrom: (e, t) => e.binding ? e.binding.path : "",
convertTo: (e, t, r) => {
if (r && r.length > 0) {
const n = r[0];
e.binding || (e.binding = {}), e.binding.type = "Form", e.binding.path = n.bindingField, e.binding.field = n.id, e.binding.fullPath = n.path, e.path = n.bindingPath;
}
}
}, Je = {
convertTo: (e, t, r, n) => {
e.pagination || (e.pagination = {}), t === "sizeLimits" ? e.pagination.sizeLimits = r.split(",") : e.pagination[t] = r;
},
convertFrom: (e, t, r) => e.pagination ? t === "sizeLimits" ? e.pagination.sizeLimits.join(",") : e.pagination[t] : e[t]
}, Qe = {
convertTo: (e, t, r, n) => {
e.rowNumber || (e.rowNumber = {}), e.rowNumber[t] = r;
},
convertFrom: (e, t, r) => e.rowNumber ? e.rowNumber[t] : e[t]
}, Ue = {
convertTo: (e, t, r, n) => {
e.selection || (e.selection = {}), e.selection[t] = r;
},
convertFrom: (e, t, r) => {
var n, m;
return t === "showCheckbox" ? (n = e.selection) != null && n.multiSelect ? !0 : (m = e.selection) == null ? void 0 : m.showCheckbox : e.selection ? e.selection[t] : e[t];
}
}, Xe = {
convertFrom: (e, t, r) => e[t] && e[t].length ? `共 ${e[t].length} 项` : ""
}, Ye = {
convertFrom: (e, t) => e[t] || "",
convertTo: (e, t, r) => {
e[t] = r;
}
}, Ve = {
convertTo: (e, t, r, n) => {
e.size || (e.size = {}), e.size[t] = r;
},
convertFrom: (e, t, r) => e.size ? e.size[t] : e[t]
}, Ke = {
convertFrom: (e, t, r) => {
var n, m;
return (n = e.formatter) != null && n.data && t === "formatterEnumData" && !e.formatterEnumData ? (m = e.formatter) == null ? void 0 : m.data : e.formatterEnumData;
}
}, et = {
convertTo: (e, t, r, n) => {
e.sort || (e.sort = {}), e.sort[t] = r;
},
convertFrom: (e, t, r) => {
var n, m;
if (t === "mode")
return ((n = e.sort) == null ? void 0 : n.mode) || "client";
if (t === "multiSort")
return !!((m = e.sort) != null && m.multiSort);
}
}, tt = {
convertTo: (e, t, r, n) => {
e.filter || (e.filter = {}), e.filter[t] = r;
},
convertFrom: (e, t, r) => {
var n;
if (t === "mode")
return ((n = e.filter) == null ? void 0 : n.mode) || "client";
}
}, rt = {
convertTo: (e, t, r, n) => {
e.rowOption ? e.rowOption[t] = r : e.rowOption = {
[t]: r
};
},
convertFrom: (e, t, r) => {
if (e.rowOption) {
if (t === "customRowStyle")
return e.rowOption.customRowStyle;
if (t === "customCellStyle")
return e.rowOption.customCellStyle;
if (t === "height")
return e.rowOption.height;
}
return "";
}
}, nt = {
convertTo: (e, t, r, n) => {
(e.type === "data-grid-column" || e.type === "tree-grid-column") && (e[t] = r, t === "columnTemplateType" && r === "hyperlink" && (e.onClickLinkCommand ? e.columnTemplate = `
<span class="f-pretend-link f-cursor-pointer"
@click="(ctx)=>viewModel.current.${e.onClickLinkCommand || ""}({id: rowData.id,context: ctx})">
{{rowData.${e.field}}}
</span>` : e.columnTemplate = `
<span class="f-pretend-link f-cursor-pointer">
{{rowData.${e.field}}}
</span>`), t === "columnTemplateType" && r === "default" && (e.columnTemplate = ""), t === "columnTemplateType" && r === "custom" && (e.columnTemplate = ""));
},
convertFrom: (e, t, r) => t === "columnTemplate" ? e.columnTemplate : t === "columnTemplateType" ? e.columnTemplateType ? e.columnTemplateType || "default" : e.columnTemplate && !e.onClickLinkCommand ? "custom" : e.columnTemplate && e.onClickLinkCommand ? "hyperlink" : "default" : ""
};
function U(e, t, r) {
const n = /* @__PURE__ */ new Map([
["/converter/appearance.converter", $e],
["/converter/buttons.converter", Be],
["/converter/property-editor.converter", ze],
["/converter/items-count.converter", Xe],
["/converter/type.converter", He],
["/converter/change-editor.converter", qe],
["/converter/change-formatter.converter", Ae],
["/converter/column-command.converter", _e],
["/converter/column-option.converter", Ie],
["/converter/summary.converter", We],
["/converter/group.converter", Ge],
["/converter/form-group-label.converter", Ye],
["/converter/field-selector.converter", Ze],
["/converter/pagination.converter", Je],
["/converter/row-number.converter", Qe],
["/converter/grid-selection.converter", Ue],
["/converter/size.converter", Ve],
["/converter/change-formatter-enum.converter", Ke],
["/converter/grid-sort.converter", et],
["/converter/grid-filter.converter", tt],
["/converter/row-option.converter", rt],
["/converter/change-formatter-type.converter", nt]
]), m = /* @__PURE__ */ new Map([
["string", { type: "input-group", enableClear: !1 }],
["boolean", {
type: "combo-list",
textField: "name",
valueField: "value",
idField: "value",
enableClear: !1,
editable: !1,
data: [
{
value: !0,
name: "是"
},
{
value: !1,
name: "否"
}
]
}],
["enum", { type: "combo-list", maxHeight: 128, enableClear: !1, editable: !1 }],
["array", { type: "button-edit" }],
["number", { type: "number-spinner", placeholder: "" }],
["events-editor", { type: "events-editor", hide: !0 }],
["multiLanguage", { type: "language-textbox" }]
]), h = Ne();
function T(o, i) {
return () => h.parseValueSchema(o, i);
}
function k(o, i, u) {
return o.includes("visible") && i.visible !== void 0 ? typeof i.visible == "boolean" ? () => !!i.visible : i.visible === void 0 ? !0 : T(i.visible, u) : () => !0;
}
function F(o, i, u) {
return o.includes("readonly") && i.readonly !== void 0 ? typeof i.readonly == "boolean" ? () => !!i.readonly : T(i.readonly, u) : () => !1;
}
function f(o, i) {
const u = o.$converter || i;
return typeof u == "string" && u && n.has(u) ? n.get(u) || null : u || null;
}
function b(o, i, u, v, g, S = "", O = "") {
return Object.keys(o).map((y) => {
const P = $(1), l = y, s = o[y], d = Object.keys(s), E = s.title, w = s.type, N = m.get(w) || { type: "input-group", enableClear: !1 }, j = s.editor ? Object.assign({}, N, s.editor) : Object.assign({}, N), z = k(d, s, i), B = F(d, s, i);
j.readonly = j.readonly === void 0 ? B() : j.readonly;
const L = s.type === "cascade" ? b(s.properties, i, u, v, g, S, O) : [], H = !0;
let D = f(s, O);
const ne = M({
get() {
if (P.value) {
if (["class", "style"].find((se) => se === l) && !D && (D = n.get("/converter/appearance.converter") || null), D && D.convertFrom)
return D.convertFrom(u, y, g, S);
const R = u[y];
return Object.prototype.hasOwnProperty.call(s, "defaultValue") && (R === void 0 || typeof R == "string" && R === "") ? s.type === "boolean" ? s.defaultValue : s.defaultValue || "" : R;
}
return null;
},
set(R) {
P.value += 1, D && D.convertTo ? (D.convertTo(v, y, R, g, S), D.convertTo(u, y, R, g, S)) : (v[y] = R, u[y] = R);
}
}), { refreshPanelAfterChanged: oe, description: ie, isExpand: ae, parentPropertyID: le } = s, q = { propertyID: l, propertyName: E, propertyType: w, propertyValue: ne, editor: j, visible: z, readonly: B, cascadeConfig: L, hideCascadeTitle: H, refreshPanelAfterChanged: oe, description: ie, isExpand: ae, parentPropertyID: le };
return i[l] = q, q;
});
}
function a(o, i, u = {}) {
const v = {}, g = e[o];
return g && g.categories ? Object.keys(g.categories).map((O) => {
const x = g.categories[O], y = x == null ? void 0 : x.title, P = b(x.properties || {}, v, {}, u, i);
return { categoryId: O, categoryName: y, properties: P };
}) : [];
}
function c(o, i, u, v, g = "") {
const S = i.$ref.schema, O = i.$ref.converter, x = u[S], y = x.type, P = r(x), l = {}, s = e[y];
if (s && s.categories) {
const d = s.categories[o], E = d == null ? void 0 : d.title;
O && Object.keys(d.properties).forEach((j) => {
d.properties[j].$converter = O;
});
const w = (d == null ? void 0 : d.properties) || {}, N = b(w, l, P, x, v, g);
return { categoryId: o, categoryName: E, properties: N };
}
return { categoryId: o, categoryName: "", properties: [] };
}
function p(o, i, u, v, g) {
const S = o.type, O = r(o), x = {};
let y = g || e[S];
if (!(y && Object.keys(y).length > 0) && u && u.getPropConfig && (y = u.getPropConfig(v)), y && y.categories) {
const l = [];
return Object.keys(y.categories).map((s) => {
const d = y.categories[s];
if (d.$ref) {
l.push(c(s, d, o, i, v));
return;
}
const E = d == null ? void 0 : d.title, w = d == null ? void 0 : d.tabId, N = d == null ? void 0 : d.tabName, j = d == null ? void 0 : d.hide, z = d == null ? void 0 : d.hideTitle, B = b(d.properties || {}, x, O, o, i, v, d.$converter), { setPropertyRelates: L } = d, H = d == null ? void 0 : d.parentPropertyID;
l.push({ categoryId: s, categoryName: E, tabId: w, tabName: N, hide: j, properties: B, hideTitle: z, setPropertyRelates: L, parentPropertyID: H });
}), l;
}
return [];
}
return {
getPropertyConfigBySchema: p,
getPropertyConfigByType: a,
propertyConverterMap: n
};
}
const X = {}, Y = {};
U(X, Y, De);
const V = {}, K = {}, { resolveSchemaWithDefaultValue: ot } = Z(V, K), ee = {}, te = {};
U(ee, te, ot);
function it(e, t, r = /* @__PURE__ */ new Map(), n = (T, k, F, f) => k, m = {}, h = (T) => T) {
return J[t.title] = t, Q[t.title] = n, X[t.title] = m, Y[t.title] = h, V[t.title] = t, K[t.title] = n, ee[t.title] = m, te[t.title] = h, (T = {}, k = !0) => {
if (!k)
return Me(T, r);
const F = Re(T, t, r), f = Object.keys(e).reduce((b, a) => (b[a] = e[a].default, b), {});
return Object.assign(f, F);
};
}
function at(e, t) {
if (!e || e.length < 1)
return null;
for (const r of e) {
if (r.id === t)
return r;
if (r.children) {
const n = r.children.find((m) => m.id === t);
if (n)
return n;
}
}
return null;
}
function lt() {
function e(t, r) {
const { footerToolbar: n, headerToolbar: m } = t, h = ((n == null ? void 0 : n.buttons) || []).concat((m == null ? void 0 : m.buttons) || []);
if (!h || h.length < 1)
return null;
const [T, k] = r.payloads, F = at(h, k);
return F ? F.onClick || F.click : null;
}
return {
resolve: e
};
}
const re = {
id: { type: String, required: !0 },
/** 背景色 */
backgroundColor: { type: String, default: "#fff" },
/**
* 关闭对话框前事件, 是个函数,返回true或者false
*/
beforeClose: { type: Function, default: () => !0 },
/**
* 自定义抽屉样式
* @deprecated 请使用 customClass
*/
class: { type: String, default: "" },
/**
* 自定义抽屉蒙层样式
*/
modalClass: { type: String, default: "" },
/** 高度 */
height: { type: String, default: 300 },
/** 打开关闭抽屉 */
modelValue: { type: Boolean, default: !1 },
/** 从哪个位置呼出 */
position: { type: String, default: "right" },
/** 抽屉插入位置 */
appendTo: { type: String, default: "body" },
/** 是否展示打开抽屉入口 */
showEntry: { type: Boolean, default: !1 },
/** 是否展示关闭按钮 */
showClose: { type: Boolean, default: !0 },
/** 是否展示遮罩层 */
// showMask: { type: Boolean, default: true },
/** 点击遮罩是否关闭抽屉 */
allowClickMaskToClose: { type: Boolean, default: !0 },
/** 抽屉是否透明 */
transparent: { type: Boolean, default: !1 },
/** 标题 */
title: { type: String, default: "" },
/** 宽度 */
width: { type: String, default: 300 },
/**
* 渲染的DOM容器
*/
host: { type: Object, default: "body" },
showHeader: { type: Boolean, default: !0 },
headerToolbar: { type: Object, default: {} },
headerTemplate: { type: Object, default: null },
showFooter: { type: Boolean, default: !0 },
footerTemplate: { type: Object, default: null },
footerToolbar: { type: Object, default: {} },
footerHeight: { type: Number, default: 60 },
buttons: { type: Array, default: [] },
customClass: { type: String, default: "" },
customStyle: { type: String, default: "" }
}, bt = it(re, je, we, Ee), gt = lt();
function st() {
return { drawerLocale: {
cancel: G.getLocaleValue("drawer.cancel") || "取消",
confirm: G.getLocaleValue("drawer.confirm") || "确定"
} };
}
const ct = /* @__PURE__ */ ce({
name: "FDrawer",
props: re,
emits: ["afterClose", "update:modelValue", "click"],
setup(e, t) {
st();
const r = $(e.modelValue), n = $(e.buttons), m = $(!1), h = M(() => ({
"f-utils-absolute-all f-drawer": !0,
// 在某个DOM内部打开抽屉
"f-drawer-inline": typeof e.host == "string" ? e.host !== "body" : document.querySelector(e.host) !== document.body
})), T = M(() => ({
opacity: e.transparent ? 0 : 1
})), k = M(() => {
const l = {};
return e.maskClass && e.maskClass.split(" ").forEach((s) => {
l[s] = !0;
}), {
"f-drawer-mask f-utils-absolute-all": !0,
...l
};
}), F = M(() => {
const l = {};
return e.customClass && e.customClass.split(" ").forEach((s) => {
l[s] = !0;
}), {
"f-drawer-wrapper": !0,
[`f-drawer-wrapper-${e.position}`]: !0,
...l
};
}), f = M(() => {
const l = e.width;
return typeof l == "string" ? l : typeof l == "number" ? `${l}px` : "20%";
}), b = M(() => {
const l = e.height;
return typeof l == "string" ? l : typeof l == "number" ? `${l}px` : "20%";
}), a = M(() => {
let l = "-6px 0";
switch (e.position) {
case "left":
l = "6px 0";
break;
case "right":
l = "-6px 0";
break;
case "top":
l = "0 6px";
break;
case "bottom":
l = "0 -6px";
break;
}
const s = {
width: f.value,
height: b.value,
backgroundColor: e.backgroundColor,
maxWidth: "100%"
};
return e.transparent && (s.boxShadow = `${l} 8px 0 rgba(31, 35, 41, .1)`), be(s, e == null ? void 0 : e.customStyle);
}), c = M(() => `f-drawer-${e.position}`), p = (l) => {
Promise.resolve().then(() => {
var s;
return (s = e.beforeClose) == null ? void 0 : s.call(e);
}).then((s) => {
s && (r.value = !1, t.emit("update:modelValue", r.value), t.emit("afterClose"));
});
};
ue(() => e.modelValue, (l, s) => {
l !== s && (r.value = l);
});
const o = (l, s) => {
t.emit("click", l, s);
}, i = {
close: () => {
r.value = !1;
}
};
async function u(l, s) {
l.handle && await l.handle(s, i) && t.emit("closed", s);
}
const v = (l, s) => C(ve, {
class: s,
alignment: "right",
items: l,
onClick: o
}, null);
function g() {
var l, s, d, E;
if ((s = (l = e.footerToolbar) == null ? void 0 : l.buttons) != null && s.length && (e.footerToolbar.visible === void 0 || e.footerToolbar.visible)) {
const w = {
"f-utils-fill": !0
};
return (E = (d = e.footerToolbar) == null ? void 0 : d.appearance) != null && E.class && (w[e.footerToolbar.appearance.class] = !0), v(e.footerToolbar.buttons, w);
}
return n.value && !!n.value.length && n.value.map((w) => {
const N = $(w.disabled);
return C("button", {
id: w.id,
type: "button",
disabled: N.value,
class: w.class + (w.iconClass ? " btn-icontext" : ""),
onClick: (j) => {
u(w, j);
}
}, [!!w.iconClass && C("i", {
class: w.iconClass
}, null), w.text]);
});
}
function S() {
return e.footerTemplate && typeof e.footerTemplate == "function" ? e.footerTemplate() : t.slots.footerTemplate ? t.slots.footerTemplate() : g();
}
function O() {
var s, d;
const l = {
"f-utils-fill": !0
};
return (d = (s = e.headerToolbar) == null ? void 0 : s.appearance) != null && d.class && (l[e.headerToolbar.appearance.class] = !0), e.headerTemplate && typeof e.headerTemplate == "function" ? e.headerTemplate() : t.slots.headerTemplate ? t.slots.headerTemplate() : C(pe, null, [C("div", {
class: "f-drawer-title",
title: e.title
}, [e.title]), e.headerToolbar && (e.headerToolbar.visible === void 0 || e.headerToolbar.visible) && C("div", {
class: "f-utils-fill-flex-row mx-2 col-7"
}, [v(e.headerToolbar.buttons || [], l)]), e.showClose && C("div", {
class: "f-drawer-close"
}, [C("span", {
class: "f-icon f-icon-close",
onClick: _((E) => {
p();
}, ["stop"])
}, null)])]);
}
const x = $({});
function y() {
const l = ge();
x.value = {
zIndex: l < 1e3 ? 1e3 : l
};
}
function P() {
return m.value ? !0 : typeof e.host == "string" ? e.host === "body" ? !0 : !!document.querySelector(e.host) : !!e.host;
}
return m.value = P(), de(() => {
m.value = P();
}), fe(() => {
r.value && y();
}), t.expose({
open: () => {
r.value = !0;
},
close: () => {
p();
}
}), () => m.value ? C(me, {
to: e.host
}, {
default: () => [C("div", {
class: h.value,
id: e.id,
style: x.value
}, [C(A, {
name: "f-drawer-mask",
appear: !0
}, {
default: () => [r.value && C("div", {
class: k.value,
style: T.value,
onClick: _((l) => {
e.allowClickMaskToClose && p();
}, ["stop"])
}, null)]
}), C(A, {
name: c.value
}, {
default: () => {
var l, s;
return [r.value && C("div", {
class: F.value,
style: a.value
}, [C("div", {
class: "f-drawer-container"
}, [e.showHeader && C("div", {
class: "f-drawer-header align-items-center"
}, [O()]), C("div", {
class: "f-drawer-body f-utils-fill",
style: "overflow: auto;"
}, [(s = (l = t.slots).default) == null ? void 0 : s.call(l)]), e.showFooter && C("div", {
class: "f-drawer-footer px-2",
style: {
height: e.footerHeight + "px"
}
}, [S()])])])];
}
})])]
}) : null;
}
}), yt = ye(ct);
export {
ct as FDrawer,
yt as default,
re as drawerProps,
gt as eventHandlerResolver,
bt as propsResolver
};