UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

1,091 lines (1,090 loc) 36.9 kB
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 };