UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

1,670 lines (1,669 loc) 220 kB
var Nn = Object.defineProperty; var Pn = (e, t, n) => t in e ? Nn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n; var ne = (e, t, n) => Pn(e, typeof t != "symbol" ? t + "" : t, n); import { ref as d, computed as A, defineComponent as ie, watch as J, onMounted as Fe, createVNode as f, nextTick as nt, toRefs as An, onBeforeMount as Ct, createTextVNode as ce, Fragment as ot, withModifiers as ht, inject as Vt, provide as Ln, onUnmounted as St, Teleport as Hn, Transition as an, shallowRef as Vn, createApp as ln, render as Pt, h as zn, cloneVNode as Wn, mergeProps as zt, reactive as ze } from "vue"; import { cloneDeep as Te, isPlainObject as Kt, isUndefined as Ie } from "lodash-es"; import { resolveAppearance as Wt, createPropsResolver as qt, getSchemaByTypeForDesigner as qn } from "../dynamic-resolver/index.esm.js"; import { useI18n as pt } from "vue-i18n"; import _n from "../button-edit/index.esm.js"; import Gn from "../list-view/index.esm.js"; import { LocaleService as xt } from "../locale/index.esm.js"; import "../accordion/index.esm.js"; import "../avatar/index.esm.js"; import "../../designer/button-edit/index.esm.js"; import "../button-group/index.esm.js"; import "../calendar/index.esm.js"; import "../capsule/index.esm.js"; import "../../designer/checkbox/index.esm.js"; import "../../designer/checkbox-group/index.esm.js"; import "../combo-list/index.esm.js"; import "../combo-tree/index.esm.js"; import "../component/index.esm.js"; import "../color-picker/index.esm.js"; import "../content-container/index.esm.js"; import "../date-picker/index.esm.js"; import "../../designer/data-grid/index.esm.js"; import "../dropdown/index.esm.js"; import "../dynamic-form/index.esm.js"; import "../events-editor/index.esm.js"; import "../filter-bar/index.esm.js"; import "../field-selector/index.esm.js"; import "../binding-selector/index.esm.js"; import "../image-cropper/index.esm.js"; import "../../designer/input-group/index.esm.js"; import "../layout/index.esm.js"; import "../list-nav/index.esm.js"; import "../../designer/list-view/index.esm.js"; import "../lookup/index.esm.js"; import "../mapping-editor/index.esm.js"; import "../nav/index.esm.js"; import "../number-range/index.esm.js"; import "../number-spinner/index.esm.js"; import "../order/index.esm.js"; import "../page-header/index.esm.js"; import "../page-footer/index.esm.js"; import "../pagination/index.esm.js"; import "../progress/index.esm.js"; import "../query-solution/index.esm.js"; import "../../designer/radio-group/index.esm.js"; import "../rate/index.esm.js"; import "../response-toolbar/index.esm.js"; import "../response-layout/index.esm.js"; import "../response-layout-editor/index.esm.js"; import "../search-box/index.esm.js"; import "../section/index.esm.js"; import "../smoke-detector/index.esm.js"; import "../splitter/index.esm.js"; import "../step/index.esm.js"; import "../switch/index.esm.js"; import "../tabs/index.esm.js"; import "../tags/index.esm.js"; import "../text/index.esm.js"; import "../time-picker/index.esm.js"; import "../transfer/index.esm.js"; import "../tree-view/index.esm.js"; import "../uploader/index.esm.js"; import "../verify-detail/index.esm.js"; import "../video/index.esm.js"; import "../textarea/index.esm.js"; import "../schema-selector/index.esm.js"; import "../../designer/tree-grid/index.esm.js"; import "../event-parameter/index.esm.js"; import "../filter-condition-editor/index.esm.js"; import "../fieldset/index.esm.js"; import "../sort-condition-editor/index.esm.js"; import "../menu-lookup/index.esm.js"; import "../../designer/drawer/index.esm.js"; import "../json-editor/index.esm.js"; import "../property-editor/index.esm.js"; import "../expression-editor/index.esm.js"; import "../code-editor/index.esm.js"; import "../html-template/index.esm.js"; import "../collection-property-editor/index.esm.js"; import "../modal/index.esm.js"; import "../external-container/index.esm.js"; import "../language-textbox/index.esm.js"; import "../designer-canvas/index.esm.js"; import { getCustomClass as Lt, withInstall as Un, FormSchemaEntityField$Type as en, FormSchemaEntityFieldTypeName as tn } from "../common/index.esm.js"; import { useResizeObserver as Xn } from "@vueuse/core"; import { getHierarchyRow as Yn, useIdentify as Jn, useGroupData as Qn, useFilter as Zn, useHierarchy as Kn, useLoading as eo, useDataView as to, useSelection as no, useSelectHierarchyItem as oo, usePagination as ao, useDataViewContainerStyle as lo, useCommandColumn as io, useSettingColumn as ro, useColumn as so, useSort as uo, useGroupColumn as co, useRow as fo, useEdit as po, useVisualDataBound as mo, useVisualDataCell as vo, useVisualDataRow as ho, useVisualData as yo, useCellPosition as go, useSidebar as bo, useVirtualScroll as wo, useFitColumn as Co, useFilterHistory as So, useColumnFilter as xo, useDragColumn as To, getColumnHeader as Fo, getSidebar as Bo, getDisableMask as Mo, getHorizontalScrollbar as ko, getVerticalScrollbar as Oo, getEmpty as Eo, getPagination as Ro, getSummary as Do } from "../data-view/index.esm.js"; import "../property-panel/index.esm.js"; import "../notify/index.esm.js"; const Io = { /** 接受传入的原始数据的defaultState */ initialState: { type: Object, default: {} } }, $o = { /** 记录默认模式及分组状态 */ defaultStates: { type: Object, default: { mode: "" } }, /** 当前开关模式 */ onSwitchInStandardModeChanged: { type: Function, default: () => { } }, /** 用户设置的屏幕分辨率变化-例:MD*/ onCurrentScreenResolutionChanged: { type: Function, default: () => { } }, /** 用户设置的屏幕分辨率缩写变化-例:中等屏幕 */ onScreenNameChanged: { type: Function, default: () => { } } }, jo = "https://json-schema.org/draft/2020-12/schema", No = "https://farris-design.gitee.io/capsule.schema.json", Po = "capsule", Ao = "A Farris Component", Lo = "object", Ho = { id: { description: "The unique identifier for a capsule", type: "string" }, type: { description: "The type string of capsule component", type: "string", default: "capsule" }, appearance: { description: "", type: "object", properties: { class: { type: "string" }, style: { type: "string" } }, default: {} }, binding: { description: "", type: "object", default: {} }, disable: { type: "string", default: !1 }, editable: { description: "", type: "boolean", default: !0 }, placeholder: { description: "", type: "string", default: "" }, readonly: { description: "", type: "boolean", default: !1 }, require: { description: "", type: "boolean", default: !1 }, tabindex: { description: "", type: "number", default: -1 }, visible: { description: "", type: "boolean", default: !0 } }, Vo = [ "id", "type" ], zo = { $schema: jo, $id: No, title: Po, description: Ao, type: Lo, properties: Ho, required: Vo }; function rn(e, t) { let n; function o(r) { const { properties: u, title: c, ignore: m } = r, b = m && Array.isArray(m), x = Object.keys(u).reduce((E, M) => ((!b || !m.find((j) => j === M)) && (E[M] = u[M].type === "object" && u[M].properties ? o(u[M]) : Te(u[M].default)), E), {}); if (c && (!b || !m.find((E) => E === "id"))) { const E = c.toLowerCase().replace(/-/g, "_"); x.id = `${E}_${Math.random().toString().slice(2, 6)}`; } return x; } function a(r) { const { properties: u, title: c, required: m } = r; if (m && Array.isArray(m)) { const b = m.reduce((x, E) => (x[E] = u[E].type === "object" && u[E].properties ? o(u[E]) : Te(u[E].default), x), {}); if (c && m.find((x) => x === "id")) { const x = c.toLowerCase().replace(/-/g, "_"); b.id = `${x}_${Math.random().toString().slice(2, 6)}`; } return b; } return { type: c }; } function i(r, u = {}, c) { const m = e[r]; if (m) { let b = a(m); const x = t[r]; return b = x ? x({ getSchemaByType: i }, b, u, c) : b, n != null && n.appendIdentifyForNewControl && n.appendIdentifyForNewControl(b), b; } return null; } function l(r, u) { const c = o(u); return Object.keys(c).reduce((m, b) => (Object.prototype.hasOwnProperty.call(r, b) && (m[b] && Kt(m[b]) && Kt(r[b] || !r[b]) ? Object.assign(m[b], r[b] || {}) : m[b] = r[b]), m), c), c; } function p(r, u) { return Object.keys(r).filter((m) => r[m] != null).reduce((m, b) => { if (u.has(b)) { const x = u.get(b); if (typeof x == "string") m[x] = r[b]; else { const E = x(b, r[b], r); Object.assign(m, E); } } else m[b] = r[b]; return m; }, {}); } function v(r, u, c = /* @__PURE__ */ new Map()) { const m = l(r, u); return p(m, c); } function s(r) { var c; const u = r.type; if (u) { const m = e[u]; if (!m) return r; const b = l(r, m), x = ((c = r.editor) == null ? void 0 : c.type) || ""; if (x) { const E = e[x], M = l(r.editor, E); b.editor = M; } return b; } return r; } function h(r) { n = r; } return { getSchemaByType: i, resolveSchemaWithDefaultValue: s, resolveSchemaToProps: v, mappingSchemaToProps: p, setDesignerContext: h }; } const sn = {}, un = {}, { getSchemaByType: Tu, resolveSchemaWithDefaultValue: Wo, resolveSchemaToProps: qo, mappingSchemaToProps: _o, setDesignerContext: Fu } = rn(sn, un); function Go(e = {}) { function t(s, h, r, u) { if (typeof r == "number") return u[s].length === r; if (typeof r == "object") { const c = Object.keys(r)[0], m = r[c]; if (c === "not") return Number(u[s].length) !== Number(m); if (c === "moreThan") return Number(u[s].length) >= Number(m); if (c === "lessThan") return Number(u[s].length) <= Number(m); } return !1; } function n(s, h, r, u) { return u[s] && u[s].propertyValue && String(u[s].propertyValue.value) === String(r); } const o = /* @__PURE__ */ new Map([ ["length", t], ["getProperty", n] ]); Object.keys(e).reduce((s, h) => (s.set(h, e[h]), s), o); function a(s, h) { const r = s; return typeof h == "number" ? [{ target: r, operator: "length", param: null, value: Number(h) }] : typeof h == "boolean" ? [{ target: r, operator: "getProperty", param: s, value: !!h }] : typeof h == "object" ? Object.keys(h).map((u) => { if (u === "length") return { target: r, operator: "length", param: null, value: h[u] }; const c = u, m = h[u]; return { target: r, operator: "getProperty", param: c, value: m }; }) : []; } function i(s) { return Object.keys(s).reduce((r, u) => { const c = a(u, s[u]); return r.push(...c), r; }, []); } function l(s, h) { if (o.has(s.operator)) { const r = o.get(s.operator); return r && r(s.target, s.param, s.value, h) || !1; } return !1; } function p(s, h) { return i(s).reduce((c, m) => c && l(m, h), !0); } function v(s, h) { const r = Object.keys(s), u = r.includes("allOf"), c = r.includes("anyOf"), m = u || c, E = (m ? s[m ? u ? "allOf" : "anyOf" : "allOf"] : [s]).map((j) => p(j, h)); return u ? !E.includes(!1) : E.includes(!0); } return { parseValueSchema: v }; } const Uo = { convertTo: (e, t, n, o) => { e.appearance || (e.appearance = {}), e.appearance[t] = n; }, convertFrom: (e, t, n) => e.appearance ? e.appearance[t] : e[t] }, Xo = { convertFrom: (e, t, n) => e.buttons && e.buttons.length ? `共 ${e.buttons.length} 项` : "无" }, Yo = { convertTo: (e, t, n, o) => { e.editor && (e.editor[t] = n); }, convertFrom: (e, t, n) => e.editor && Object.prototype.hasOwnProperty.call(e.editor, t) ? e.editor[t] : e[t] }, V = { 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: "标签页工具栏按钮" }, "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: "标签页工具栏" }, 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: "多语输入框" } }, Jo = { convertFrom: (e, t, n) => { var a; const o = e.editor && e.editor[t] ? e.editor[t] : e[t]; return ((a = V[o]) == null ? void 0 : a.name) || o; } }, Qo = { convertTo: (e, t, n, o) => { e[t] = e[t]; }, convertFrom: (e, t, n) => e.editor ? n.getRealEditorType(e.editor.type) : "" }, Zo = { convertTo: (e, t, n, o) => { (e.type === "data-grid-column" || e.type === "tree-grid-column") && (e.formatter ? e.formatter[t] = n : e.formatter = { [t]: n }); }, convertFrom: (e, t, n) => { 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 === "tempDateFormat") return e.formatter.dateFormat === "yyyy年MM月dd日" ? "yearMonthDay" : e.formatter.dateFormat === "yyyy-MM-dd HH:mm:ss" ? "yyyy-MM-ddTHH:mm:ss" : e.formatter.dateFormat === "yyyy/MM/dd HH:mm:ss" ? "yyyy/MM/ddTHH:mm:ss" : e.formatter.dateFormat === "yyyy年MM月dd日 HH时mm分ss秒" ? "yearMonthDayHourMinuteSecond" : e.formatter.tempDateFormat || e.formatter.dateFormat || "yyyy-MM-dd"; if (t === "customFormat") return e.formatter.customFormat; if (t === "type") return e.formatter.type || "none"; } return "none"; } }, Ko = { convertTo: (e, t, n, o) => { e.command ? e.command[t] = n : e.command = { [t]: n }, t === "enable" && n && (e.command.commands || (e.command.commands = [ { text: "编辑", type: "primary", command: "edit" }, { text: "删除", type: "danger", command: "remove" } ])); }, convertFrom: (e, t, n) => e.command && t === "enable" ? e.command.enable : "" }, ea = { convertTo: (e, t, n, o) => { e.column ? e.column[t] = n : e.column = { [t]: n }, t === "fitColumns" && n && (e.column.fitMode || (e.column.fitMode = "average")); }, convertFrom: (e, t, n) => { if (e.column) { if (t === "fitColumns") return e.column.fitColumns; if (t === "fitMode") return e.column.fitMode; } return ""; } }, ta = { convertTo: (e, t, n, o) => { e.summary ? e.summary[t] = n : e.summary = { [t]: n }, t === "enable" && n && (e.summary ? e.summary.groupFields || (e.summary.groupFields = []) : e.summary = { enable: n, groupFields: [] }); }, convertFrom: (e, t, n) => e.summary && t === "enable" ? e.summary.enable : e.type === "data-grid-column" ? e.enableSummary === void 0 ? !1 : e.enableSummary : "" }, na = { convertTo: (e, t, n, o) => { e.group ? e.group[t] = n : e.group = { [t]: n }, t === "enable" && n && (e.group ? e.group.groupFields || (e.group.groupFields = []) : e.group = { enable: n, groupFields: [], showSummary: !1 }); }, convertFrom: (e, t, n) => { if (e.group) { if (t === "enable") return e.group.enable; if (t === "showSummary") return e.group.showSummary; } } }, oa = { convertFrom: (e, t) => e.binding ? e.binding.path : "", convertTo: (e, t, n) => { if (n && n.length > 0) { const o = n[0]; e.binding || (e.binding = {}), e.binding.type = "Form", e.binding.path = o.bindingField, e.binding.field = o.id, e.binding.fullPath = o.path, e.path = o.bindingPath; } } }, aa = { convertTo: (e, t, n, o) => { e.pagination || (e.pagination = {}), e.pagination[t] = n; }, convertFrom: (e, t, n) => e.pagination ? e.pagination[t] : e[t] }, la = { convertTo: (e, t, n, o) => { e.rowNumber || (e.rowNumber = {}), e.rowNumber[t] = n; }, convertFrom: (e, t, n) => e.rowNumber ? e.rowNumber[t] : e[t] }, ia = { convertTo: (e, t, n, o) => { e.selection || (e.selection = {}), e.selection[t] = n; }, convertFrom: (e, t, n) => e.selection ? e.selection[t] : e[t] }, ra = { convertFrom: (e, t, n) => e[t] && e[t].length ? `共 ${e[t].length} 项` : "" }, sa = { convertFrom: (e, t) => e[t] || "", convertTo: (e, t, n) => { e[t] = n; } }, ua = { convertTo: (e, t, n, o) => { e.size || (e.size = {}), e.size[t] = n; }, convertFrom: (e, t, n) => e.size ? e.size[t] : e[t] }, ca = { convertFrom: (e, t, n) => { var o, a; return (o = e.formatter) != null && o.data && t === "formatterEnumData" && !e.formatterEnumData ? (a = e.formatter) == null ? void 0 : a.data : e.formatterEnumData; } }, da = { convertTo: (e, t, n, o) => { e.sort || (e.sort = {}), e.sort[t] = n; }, convertFrom: (e, t, n) => { var o, a; if (t === "mode") return ((o = e.sort) == null ? void 0 : o.mode) || "client"; if (t === "multiSort") return !!((a = e.sort) != null && a.multiSort); } }, fa = { convertTo: (e, t, n, o) => { e.filter || (e.filter = {}), e.filter[t] = n; }, convertFrom: (e, t, n) => { var o; if (t === "mode") return ((o = e.filter) == null ? void 0 : o.mode) || "client"; } }, pa = { convertTo: (e, t, n, o) => { e.rowOption ? e.rowOption[t] = n : e.rowOption = { [t]: n }; }, convertFrom: (e, t, n) => { if (e.rowOption) { if (t === "customRowStyle") return e.rowOption.customRowStyle; if (t === "customCellStyle") return e.rowOption.customCellStyle; } return ""; } }; function cn(e, t, n) { const o = /* @__PURE__ */ new Map([ ["/converter/appearance.converter", Uo], ["/converter/buttons.converter", Xo], ["/converter/property-editor.converter", Yo], ["/converter/items-count.converter", ra], ["/converter/type.converter", Jo], ["/converter/change-editor.converter", Qo], ["/converter/change-formatter.converter", Zo], ["/converter/column-command.converter", Ko], ["/converter/column-option.converter", ea], ["/converter/summary.converter", ta], ["/converter/group.converter", na], ["/converter/form-group-label.converter", sa], ["/converter/field-selector.converter", oa], ["/converter/pagination.converter", aa], ["/converter/row-number.converter", la], ["/converter/grid-selection.converter", ia], ["/converter/size.converter", ua], ["/converter/change-formatter-enum.converter", ca], ["/converter/grid-sort.converter", da], ["/converter/grid-filter.converter", fa], ["/converter/row-option.converter", pa] ]), a = /* @__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 }] ]), i = Go(); function l(m, b) { return () => i.parseValueSchema(m, b); } function p(m, b, x) { return m.includes("visible") && b.visible !== void 0 ? typeof b.visible == "boolean" ? () => !!b.visible : b.visible === void 0 ? !0 : l(b.visible, x) : () => !0; } function v(m, b, x) { return m.includes("readonly") && b.readonly !== void 0 ? typeof b.readonly == "boolean" ? () => !!b.readonly : l(b.readonly, x) : () => !1; } function s(m, b) { const x = m.$converter || b; return typeof x == "string" && x && o.has(x) ? o.get(x) || null : x || null; } function h(m, b, x, E, M, j = "", k = "") { return Object.keys(m).map((w) => { const T = d(1), C = w, y = m[w], R = Object.keys(y), F = y.title, B = y.type, $ = a.get(B) || { type: "input-group", enableClear: !1 }, S = y.editor ? Object.assign({}, $, y.editor) : Object.assign({}, $), D = p(R, y, b), H = v(R, y, b); S.readonly = S.readonly === void 0 ? H() : S.readonly; const Q = y.type === "cascade" ? h(y.properties, b, x, E, M, j, k) : [], P = !0; let I = s(y, k); const q = A({ get() { if (T.value) { if (["class", "style"].find((de) => de === C) && !I && (I = o.get("/converter/appearance.converter") || null), I && I.convertFrom) return I.convertFrom(x, w, M, j); const le = x[w]; return Object.prototype.hasOwnProperty.call(y, "defaultValue") && (le === void 0 || typeof le == "string" && le === "") ? y.type === "boolean" ? y.defaultValue : y.defaultValue || "" : le; } return null; }, set(le) { T.value += 1, I && I.convertTo ? (I.convertTo(E, w, le, M, j), I.convertTo(x, w, le, M, j)) : (E[w] = le, x[w] = le); } }), { refreshPanelAfterChanged: z, description: ee, isExpand: ge, parentPropertyID: be } = y, Y = { propertyID: C, propertyName: F, propertyType: B, propertyValue: q, editor: S, visible: D, readonly: H, cascadeConfig: Q, hideCascadeTitle: P, refreshPanelAfterChanged: z, description: ee, isExpand: ge, parentPropertyID: be }; return b[C] = Y, Y; }); } function r(m, b, x = {}) { const E = {}, M = e[m]; return M && M.categories ? Object.keys(M.categories).map((k) => { const g = M.categories[k], w = g == null ? void 0 : g.title, T = h(g.properties || {}, E, {}, x, b); return { categoryId: k, categoryName: w, properties: T }; }) : []; } function u(m, b, x, E, M = "") { const j = b.$ref.schema, k = b.$ref.converter, g = x[j], w = g.type, T = n(g), C = {}, y = e[w]; if (y && y.categories) { const R = y.categories[m], F = R == null ? void 0 : R.title; k && Object.keys(R.properties).forEach((S) => { R.properties[S].$converter = k; }); const B = (R == null ? void 0 : R.properties) || {}, $ = h(B, C, T, g, E, M); return { categoryId: m, categoryName: F, properties: $ }; } return { categoryId: m, categoryName: "", properties: [] }; } function c(m, b, x, E, M) { const j = m.type, k = n(m), g = {}; let w = M || e[j]; if (w && Object.keys(w).length === 0 && x && x.getPropConfig && (w = x.getPropConfig(E)), w && w.categories) { const T = []; return Object.keys(w.categories).map((C) => { const y = w.categories[C]; if (y.$ref) { T.push(u(C, y, m, b, E)); return; } const R = y == null ? void 0 : y.title, F = y == null ? void 0 : y.tabId, B = y == null ? void 0 : y.tabName, $ = y == null ? void 0 : y.hide, S = y == null ? void 0 : y.hideTitle, D = h(y.properties || {}, g, k, m, b, E, y.$converter), { setPropertyRelates: H } = y, Q = y == null ? void 0 : y.parentPropertyID; T.push({ categoryId: C, categoryName: R, tabId: F, tabName: B, hide: $, properties: D, hideTitle: S, setPropertyRelates: H, parentPropertyID: Q }); }), T; } return []; } return { getPropertyConfigBySchema: c, getPropertyConfigByType: r, propertyConverterMap: o }; } const dn = {}, fn = {}; cn(dn, fn, Wo); const pn = {}, mn = {}, { getSchemaByType: Bu, resolveSchemaWithDefaultValue: ma, resolveSchemaToProps: Mu, mappingSchemaToProps: ku, setDesignerContext: Ou } = rn(pn, mn), vn = {}, hn = {}; cn(vn, hn, ma); function $e(e, t, n = /* @__PURE__ */ new Map(), o = (l, p, v, s) => p, a = {}, i = (l) => l) { return sn[t.title] = t, un[t.title] = o, dn[t.title] = a, fn[t.title] = i, pn[t.title] = t, mn[t.title] = o, vn[t.title] = a, hn[t.title] = i, (l = {}, p = !0) => { if (!p) return _o(l, n); const v = qo(l, t, n), s = Object.keys(e).reduce((h, r) => (h[r] = e[r].default, h), {}); return Object.assign(s, v); }; } function at(e, t) { return { customClass: t.class, customStyle: t.style }; } const va = /* @__PURE__ */ new Map([ ["appearance", at] ]); function ha(e, t, n) { return t; } const ya = "capsule", ga = "A Farris Component", ba = "object", wa = { basic: { description: "Basic Infomation", title: "基本信息", properties: { id: { description: "组件标识", title: "标识", type: "string", readonly: !0 }, type: { description: "组件类型", title: "控件类型", type: "select", editor: { type: "waiting for modification", enum: [] } } } } }, Ca = { title: ya, description: ga, type: ba, categories: wa }, yn = { items: { Type: Array, default: [ { name: "升序", value: "asc", icon: "f-icon f-icon-col-ascendingorder" }, { name: "降序", value: "desc", icon: "f-icon f-icon-col-descendingorder" } ] }, /** * 组件值 */ modelValue: { type: String, default: "" }, type: { type: String, default: "primary" } }, Sa = { name: { type: String, default: "" }, value: { type: String, default: "" }, isActive: { type: Boolean, default: !1 }, icon: { type: String, default: "" }, index: { type: Number, default: 0 }, show: { type: Boolean, default: !0 }, disabled: { type: Boolean, default: !1 } }; $e(yn, zo, va, ha, Ca); const xa = /* @__PURE__ */ ie({ name: "FCapsuleItem", props: Sa, emits: ["mounted", "active"], setup(e, t) { const n = d(), o = d(e.isActive); J(() => e.isActive, (l) => { o.value = l; }); const a = A(() => ({ "f-capsule-item": !0, "f-capsule-active-item": o.value, "f-capsule-disabled": e.disabled })); Fe(() => { t.emit("mounted", n, e.value); }); function i(l) { e.disabled || t.emit("active", l, { name: e.name, value: e.value }); } return () => f("div", { ref: n, class: a.value, onClick: (l) => i(l) }, [e.icon && f("i", { class: e.icon }, null), e.name]); } }), Ta = /* @__PURE__ */ ie({ name: "FCapsule", props: yn, emits: ["change", "update:modelValue"], setup(e, t) { const n = d(e.items), o = d(), a = 2, i = d(e.modelValue), l = d("none"), p = d(e.type), v = A(() => { const C = { "f-capsule-container": !0 }; return p.value && (C[p.value] = !0), C; }), s = A(() => ({})), h = A(() => ({ "f-capsule": !0 })), r = d(a), u = d(0), c = d(0), m = A(() => ({ left: `${r.value}px`, width: `${u.value}px`, transition: l.value })), b = A(() => ({ width: `${c.value}px` })), x = /* @__PURE__ */ new Map(); function E(C) { var y; if (x.has(C.value)) { const R = (y = x.get(C.value)) == null ? void 0 : y.value; if (R) { const F = R.getBoundingClientRect(), B = o.value.getBoundingClientRect(); r.value = F.left - B.left + a + o.value.scrollLeft, u.value = F.width - 2 * a; } } } function M(C, y) { const R = C.value; i.value = R, t.emit("update:modelValue", R), E(C), y && t.emit("change", R); } function j(C) { const y = n.value.findIndex((R) => R.value === C); y > -1 && M(n.value[y], !1); } J(() => e.modelValue, (C) => { i.value = C, j(i.value); }), Fe(async () => { j(i.value), await nt(), l.value = "0.1s ease-out all", c.value = Array.from(x.values()).reduce((C, y) => (C += y.value.clientWidth, C), 0); }); function k(C, y) { M(y, !0); } function g(C, y) { x.set(y, C); } function w(C) { Array.from(x.keys()).forEach((y) => { C.find((F) => F.value === y) || x.delete(y); }); } function T(C, y) { return f(xa, { name: C.name, value: C.value, isActive: C.value === i.value, index: y, disabled: C.disabled, key: C.value, onMounted: g, onActive: k }, null); } return J(() => e.items, async (C) => { const y = C.filter((R) => R.show); w(y), n.value = y, await nt(), j(i.value), c.value = Array.from(x.values()).reduce((R, F) => (R += F.value.clientWidth, R), 0); }), () => f("span", { ref: o, class: v.value, style: s.value }, [f("span", { class: "f-capsule-pane" }, [n.value.map((C, y) => T(C, y))]), f("small", { class: h.value, style: m.value }, null), f("div", { class: "f-capsule-board", style: b.value }, null)]); } }), Fa = /* @__PURE__ */ new Map([ ["appearance", Wt] ]), Ba = "https://json-schema.org/draft/2020-12/schema", Ma = "https://farris-design.gitee.io/switch.schema.json", ka = "switch", Oa = "A Farris Component", Ea = "object", Ra = { id: { description: "The unique identifier for a switch", type: "string" }, type: { description: "The type string of switch component", type: "string", default: "switch" }, appearance: { description: "", type: "object", properties: { class: { type: "string" }, style: { type: "string" } }, default: {} }, binding: { description: "", type: "object", default: {} }, disabled: { type: "boolean", default: !1 }, onBackground: { description: "", type: "string", default: "" }, offBackground: { description: "", type: "string", default: "" }, onColor: { description: "", type: "string", default: "" }, offColor: { description: "", type: "string", default: "" }, onLabel: { description: "", type: "string", default: "" }, offLabel: { description: "", type: "string", default: "" }, readonly: { description: "", type: "boolean", default: !1 }, size: { description: "", type: "enum", default: "medium" }, required: { description: "", type: "boolean", default: !1 }, trueValue: { description: "", type: "boolean", default: !0 }, falseValue: { description: "", type: "boolean", default: !1 } }, Da = [ "type" ], Ia = [ "id", "appearance", "binding" ], $a = { $schema: Ba, $id: Ma, title: ka, description: Oa, type: Ea, properties: Ra, required: Da, ignore: Ia }; function ja(e, t, n) { return t; } const gn = { modelValue: { type: [String, Number, Boolean], default: !1 }, /** 禁用 */ disabled: { type: Boolean, default: !1 }, /** * 同disabled */ readonly: { type: Boolean, default: !1 }, onBackground: { type: String }, offBackground: { type: String }, onColor: { type: String }, offColor: { type: String }, onLabel: { type: String }, offLabel: { type: String }, /** 尺寸大小 */ size: { type: String, default: "medium" }, /** 开关值变化事件 */ onModelValueChanged: { type: Function, default: () => { } }, focusOnCreated: { type: Boolean, default: !1 }, trueValue: { type: [String, Number, Boolean], default: !0 }, falseValue: { type: [String, Number, Boolean], default: !1 } }; $e(gn, $a, Fa, ja); const Na = /* @__PURE__ */ ie({ name: "FSwitch", props: gn, emits: ["update:modelValue", "modelValueChanged"], setup(e, t) { const { disabled: n, size: o, onLabel: a, offLabel: i, onBackground: l, offBackground: p, onColor: v, offColor: s, readonly: h } = An(e), r = d(e.modelValue), u = d(), c = d(""), m = A(() => e.trueValue != null ? r.value === e.trueValue : !!r.value), b = A(() => ({ switch: !0, "f-cmp-switch": !0, checked: m.value, disabled: h.value || n.value, "switch-large": o.value === "large", "switch-medium": o.value === "medium", "switch-small": o.value === "small" })), x = A(() => m.value ? { outline: "none", background: l.value } : { outline: "none", backgroundColor: p.value }), E = A(() => m.value ? { background: v.value } : { backgroundColor: s.value }), M = A(() => (a == null ? void 0 : a.value) || (i == null ? void 0 : i.value)); function j() { !M.value || u.value || nt(() => { const g = r.value, w = u.value.querySelector(g ? ".switch-label-checked" : ".switch-label-unchecked"); w && w.scrollWidth > w.clientWidth ? c.value = g ? a == null ? void 0 : a.value : i == null ? void 0 : i.value : c.value = ""; }); } function k() { h.value || n.value || (r.value = m.value ? e.falseValue : e.trueValue, t.emit("update:modelValue", r.value), j()); } return J(r, (g, w) => { g !== w && t.emit("modelValueChanged", g); }), J(() => e.modelValue, (g, w) => { g !== w && (r.value = g); }), Fe(() => { var g; e.focusOnCreated && ((g = u.value) == null || g.focus()), j(); }), () => f("span", { ref: u, tabindex: "0", role: "button", class: b.value, style: x.value, onClick: k, title: c.value }, [M.value && f("span", { class: "switch-pane" }, [f("span", { class: "switch-label-checked" }, [a == null ? void 0 : a.value]), f("span", { class: "switch-label-unchecked" }, [i == null ? void 0 : i.value])]), f("small", { style: E.value }, [t.slots.default && t.slots.default()])]); } }), Pa = /* @__PURE__ */ ie({ name: "FScreenResolutionSelector", props: $o, emits: ["screenNameChanged", "currentScreenResolutionChanged", "switchInStandardModeChanged"], setup(e, t) { const n = d([{ name: "小屏幕", code: "SM", value: "SM", active: !1 }, { name: "中等屏幕", code: "MD", value: "MD", active: !0 }, { name: "大屏幕", code: "LG", value: "LG", active: !1 }, { name: "极大屏幕", code: "EL", value: "EL", active: !1 }]), o = d(e.defaultStates), a = d("MD"), i = d("中等屏幕"), l = d(!0); function p(h) { n.value.forEach((r) => { r.active = r.code === h, r.active && (a.value = r.code, i.value = r.name, t.emit("screenNameChanged", i.value), t.emit("currentScreenResolutionChanged", a.value)); }); } function v() { t.emit("switchInStandardModeChanged", l.value); } J(l, () => { }), Ct(() => { o.value.model === "standard" ? l.value = !0 : (l.value = !1, v()); }); function s() { return f(Ta, { class: "f-layout-editor-screen-resolution-selector-frame", items: n.value, modelValue: a.value, "onUpdate:modelValue": (h) => a.value = h, onChange: p }, null); } return () => f("div", { class: "f-layout-editor-screen-resolution-selector" }, [f("div", { class: "f-layout-editor-screen-resolution-selector-header" }, [f("div", { class: "f-layout-editor-screen-resolution-selector-form" }, [ce("表单布局配置")])]), s(), f("div", { class: "f-layout-editor-screen-resolution-selector-switch" }, [f(Na, { class: "f-layout-editor-show-switch", modelValue: l.value, "onUpdate:modelValue": (h) => l.value = h, onModelValueChanged: v }, null), l.value ? f("div", { class: "f-layout-editor-show-switch-label" }, [ce("标准模式")]) : f("div", { class: "f-layout-editor-show-switch-label" }, [ce("自定义模式")])])]); } }), Aa = { /** 默认屏幕分辨率对应的英文缩写 */ currentScreenResolution: { type: String, default: "" }, /** 模式开关 */ switchInStandardMode: { type: Boolean, default: !1 }, /** 记录当前展示的区域 */ currentArea: { type: Object, default: [] }, /** 接受组件列表区传入的二维数组 */ twoDimensionalArray: { type: Array, default: [] } }, La = { /** 单个组件的预览状态 */ item: { type: Object, default: {} }, /** 默认屏幕分辨率对应的英文缩写 */ currentScreenResolution: { type: String, default: "" }, /** 接受switch状态,若为自定义模式,则需要改变Col-num的num来源;*/ switchInStandardMode: { type: Boolean, default: !1 } }, Ha = /* @__PURE__ */ ie({ name: "FColumnWidthView", props: La, emits: [], setup(e, t) { const n = d(e.item), o = d(e.currentScreenResolution), a = A(() => `col-${n.value[`columnIn${o.value}`]}`); return J([() => e.item, () => e.currentScreenResolution], ([i, l], [p, v]) => { i !== p && (n.value = i), l !== v && (o.value = l); }), () => f("div", { class: a.value }, [f("div", { class: "f-layout-editor-column-width-view", title: n.value.label }, [f("div", { class: "f-layout-editor-column-width-view-label" }, [n.value.label])])]); } }), Va = /* @__PURE__ */ ie({ name: "FPreview", props: Aa, emits: ["update:twoDimensionalArray"], setup(e, t) { const n = d(e.currentScreenResolution), o = d(e.switchInStandardMode), a = d(e.currentArea), i = d(e.twoDimensionalArray), l = d([]); J([() => e.currentArea, () => e.switchInStandardMode, () => e.currentScreenResolution], ([r, u, c], [m, b, x]) => { r !== m && (a.value = r), u !== b && (o.value = u), c !== x && (n.value = c); }); function p(r, u) { const c = []; let m = []; return r.forEach((b) => { u !== b.componentRow && (u += 1, c.push(m), m = []), m.push(b); }), c.push(m), c; } function v() { const r = []; let u = 1; return l.value.forEach((c) => { const m = p(c, u); u += m.length, r.push(m); }), r; } function s() { l.value = Te(i.value), l.value = v(); } J(() => e.twoDimensionalArray, () => { i.value = e.twoDimensionalArray, s(); }), Fe(() => { s(); }); function h() { if (o.value) return ""; const r = Array.from({ length: 12 }, () => f("div", { class: "col-1" }, [f("div", { class: "f-layout-editor-preview-customize-single-background" }, [ce(" ")])])); return f("div", { class: "f-layout-editor-preview-customize-whole-background" }, [r]); } return () => f("div", { class: "f-layout-editor-preview f-utils-fill-flex-column" }, [f("div", { class: "f-layout-editor-preview-header" }, [ce("预览区")]), h(), f("div", { class: "f-layout-editor-preview-view f-utils-overflow-xhya" }, [f("div", { class: "f-layout-editor-preview-row-group" }, [l.value.map((r) => { var u, c; return ((u = r[0][0]) == null ? void 0 : u.group.toString()) === ((c = a.value[0]) == null ? void 0 : c.id) && r.map((m) => f("div", { class: "f-layout-editor-row" }, [m.map((b) => f(Ha, { item: b, "onUpdate:item": (x) => b = x, currentScreenResolution: n.value, switchInStandardMode: o.value }, null))])); })])])]); } }), za = { /** 用户切换屏幕分辨率-缩写-例:MD; */ currentScreenResolution: { type: String, default: "" }, /** 检测用户是否切换模式 */ switchInStandardMode: { type: Boolean, default: !1 }, /** 输入的控件原始数据 */ originalData: { type: Array, default: [] }, /** 在用户切换模式时显示原数据,确保两个模式下的数据不互通 */ originalDataCopy: { type: Array, default: [] }, /** 默认状态:包括defaultGroupNumber(默认显示组)及mode(当前模式:standard或customize) */ defaultStates: { type: Object, default: {} }, /** twoDimensionalArray值变化事件 */ onTwoDimensionalArrayChanged: { type: Function, default: () => { } }, /** originalData值变化事件 */ onOriginalDataChanged: { type: Function, default: () => { } } }; function Wa(e, t) { const n = d(-1), o = d(!1); function a(r) { if (r.target.offsetParent) { const u = r.target.offsetParent, c = u.offsetWidth - r.target.offsetWidth / 2 - 4, m = u.offsetHeight / 2; r.dataTransfer && r.dataTransfer.setDragImage(u, c, m); } } function i(r) { if (r) { const u = e.value.findIndex((c) => c.label === r.label); setTimeout(() => { n.value = u, o.value = !0, r.moving = !0; }); } } function l(r, u) { r.stopPropagation(), a(r), i(u); } function p(r) { const u = e.value.findIndex((c) => c.label === r.label); if (n.value !== u) { const c = e.value[n.value], m = e.value; m.splice(n.value, 1), m.splice(u, 0, c), n.value = u, t && t(); } } function v(r, u) { r.preventDefault(), p(u); } function s(r) { r.preventDefault(), r.dataTransfer && (r.dataTransfer.dropEffect = "move"); } function h(r, u) { u && (u.moving = !1), o.value = !1; } return { dragstart: l, dragenter: v, dragover: s, dragend: h, isDragging: o }; } const qa = /* @__PURE__ */ new Map([ ["appearance", Wt] ]), _a = "https://json-schema.org/draft/2020-12/schema", Ga = "https://farris-design.gitee.io/combo-list.schema.json", Ua = "combo-list", Xa = "A Farris Input Component", Ya = "object", Ja = { id: { description: "The unique identifier for a combo list", type: "string" }, type: { description: "The type string of number combo list component", type: "string", default: "combo-list" }, appearance: { description: "", type: "object", properties: { class: { type: "string" }, style: { type: "string" } }, default: {} }, binding: { description: "", type: "object", default: {} }, disabled: { description: "", type: "boolean", default: !1 }, enableClear: { description: "", type: "boolean", default: !1 }, editable: { description: "", type: "boolean", default: !1 }, enableLinkLabel: { description: "", type: "boolean", default: !1 }, label: { description: "", type: "string", default: "" }, lableWidth: { description: "", type: "number" }, placeholder: { description: "", type: "string", default: "请选择" }, idField: { description: "", type: "string", default: "id" }, valueField: { description: "", type: "string", default: "id" }, titleField: { description: "", type: "string", default: "name" }, textField: { description: "", type: "string", default: "name" }, dataSourceType: { description: "", type: "string", default: "static" }, data: { description: "", type: "array" }, remote: { description: "", type: "string" }, readonly: { description: "", type: "boolean", default: !1 }, required: { description: "", type: "boolean", default: !1 }, tabindex: { description: "", type: "number", default: -1 }, textAlign: { description: "", type: "string", enum: [ "left", "middle", "right" ], default: "left" }, multiSelect: { description: "", type: "boolean", default: !1 }, maxLength: { description: "", type: "number", default: null }, visible: { description: "", type: "boolean", default: !0 }, onBlur: { description: "", type: "string", default: "" }, onClickLinkLabel: { description: "", type: "sting", default: "" }, maxHeight: { description: "", type: "number", default: 350 }, minPanelWidth: { description: "", type: "number", default: 160 }, popupOnClick: { description: "", type: "boolean", default: !0 }, separator: { description: "", type: "string", default: "," }, viewType: { description: "", type: "string", default: "tag" }, enableSearch: { description: "启用搜索", type: "boolean", default: !0 }, enableHighlightSearch: { description: "启用高亮搜索", type: "boolean", default: !1 } }, Qa = [ "type" ], Za = [ "id", "appearance", "binding", "visible" ], Ka = { $schema: _a, $id: Ga, title: Ua, description: Xa, type: Ya, properties: Ja, required: Qa, ignore: Za }; function el(e, t, n) { return t; } const _t = { /** * 组件标识 */ id: { type: String }, /** * 下拉数据源 */ data: { type: Array, default: [] }, /** * 可选,展示文本 * 默认为空字符串 -----内部需要根据value重新生成展示文本,此属性不生效 * displayText: { type: String, default: '' }, */ /** * 可选,是否禁用 * 默认为`false` */ disabled: { default: !1, type: Boolean }, /** * 可选,下拉图标 * 默认为'<span class="f-icon f-icon-arrow-60-down"></span>' */ dropDownIcon: { type: String, default: '<span class="f-icon f-icon-arrow-chevron-down"></span>' }, /** * 可选,是否可编辑 * 默认`false` */ editable: { default: !1, type: Boolean }, /** * 可选,是否启用清空 * 默认启用 */ enableClear: { default: !0, type: Boolean }, /** * 可选,启用搜索 * 默认为`false` */ enableSearch: { type: Boolean, default: !1 }, /** * 可选,鼠标悬停时是否显示控件值 * 默认显示 */ enableTitle: { default: !0, type: Boolean }, fitEditor: { default: !1, type: Boolean }, /** * 可选,强制显示占位符 * 默认`false` */ forcePlaceholder: { default: !1, type: Boolean }, /** * 可选,清空值时隐藏面板 * 默认`true` */ hidePanelOnClear: { default: !0, type: Boolean }, /** * 可选,数据源id字段 * 默认为`id` */ idField: { default: "id", type: String }, /** * 可选,字段映射 */ mapFields: { type: Object }, /** * 可选,最大高度 * 默认`350` */ maxHeight: { default: 350, type: Number }, /** * 最大输入长度 */ maxLength: { type: Number }, /** * 可选,是否支持多选 * 默认`false` */ multiSelect: { type: Boolean, default: !1 }, /** * 绑定值 */ modelValue: {}, /** * 占位符 */ placeholder: { type: String, default: "请选择" }, /** * 可选,下拉面板展示位置 * 默认为`auto` */ placement: { type: String, default: "auto" /* auto */ }, /** * 可选,是否只读 * 默认为`false` */ readonly: { default: !1, type: Boolean }, /** * 远端数据源信息 */ remote: { default: null, type: Object }, /** * 可选,是否支持远端过滤 * 默认`false` */ remoteSearch: { default: !1, type: Boolean }, /** * 可选,分隔符 * 默认`,` */ separator: { default: ",", type: String }, /** * tabIndex */ tabIndex: { type: Number, default: -1 }, /** * 可选,数据源显示字段 * 默认为`name` */ textField: { default: "name", type: String }, /** * 可选,数据源的title * 默认为`name` */ titleField: { default: "name", type: String }, /** * 可选,数据源值字段 * 默认为`id` */ valueField: { default: "id", type: String }, /** * 可选,启用多选下,下拉列表值在输入框中的展示方式 * 支持text | tag * 因为ButtonEdit内部处理类型只有在批量的情况下才会有展示类型区分 */ viewType: { default: "tag", type: String }, /** * 值变化事件 */ change: { type: Function, default: () => { } }, /** * 作为内嵌编辑器被创建后默认获得焦点 */ focusOnCreated: { type: Boolean, default: !1 }, /** * 作为内嵌编辑器被创建后默认选中文本 */ selectOnCreated: { type: Boolean, default: !1 }, /** * 此属性废弃 */ autoHeight: { type: Boolean, default: !0 }, /** * 打开前 */ beforeOpen: { type: Function, default: null }, searchOption: { type: [Boolean, Function], default: !1 }, // 搜索启用高亮 enableHighlightSearch: { type: Boolean, default: !0 }, minPanelWidth: { type: Number, default: 160 }, popupOnClick: { type: Boolean, default: !0 } }; Object.assign({}, _t, { readonly: {} }); qt(_t, Ka, qa, el); const tl = { dataSource: { type: Array, default: [] }, enableSearch: { type: Boolean, default: !1 }, idField: { type: String, default: "id" }, multiSelect: { type: Boolean, default: !1 }, selectedValues: { type: String, default: "" }, separator: { type: String, default: "," }, textField: { type: String, default: "name" },