@vtj/ui 0.6.24 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/LICENSE +21 -21
  2. package/dist/index.cjs +7 -0
  3. package/dist/index.iife.js +7 -0
  4. package/dist/index.mjs +4165 -0
  5. package/dist/index.umd.js +7 -0
  6. package/dist/style.css +1 -0
  7. package/package.json +23 -21
  8. package/types/components/action/Action.d.ts +23 -22
  9. package/types/components/action/Trigger.d.ts +15 -14
  10. package/types/components/action/hooks.d.ts +7 -6
  11. package/types/components/action/types.d.ts +14 -10
  12. package/types/components/action-bar/ActionBar.d.ts +41 -40
  13. package/types/components/action-bar/types.d.ts +10 -11
  14. package/types/components/chart/Chart.d.ts +4 -4
  15. package/types/components/chart/types.d.ts +3 -3
  16. package/types/components/chart/useChart.d.ts +5 -5
  17. package/types/components/container/Container.d.ts +14 -7
  18. package/types/components/container/types.d.ts +6 -3
  19. package/types/components/data-item/DataItem.d.ts +23 -22
  20. package/types/components/data-item/types.d.ts +3 -3
  21. package/types/components/dialog/Dialog.d.ts +9 -9
  22. package/types/components/dialog/create.d.ts +2 -2
  23. package/types/components/dialog/hooks.d.ts +5 -5
  24. package/types/components/dialog/types.d.ts +4 -4
  25. package/types/components/dialog-form/DialogForm.d.ts +3 -3
  26. package/types/components/dialog-form/types.d.ts +3 -3
  27. package/types/components/field/Field.d.ts +17 -4
  28. package/types/components/field/editors/CheckboxEditor.d.ts +6 -3
  29. package/types/components/field/editors/RadioEditor.d.ts +6 -3
  30. package/types/components/field/editors/SelectEditor.d.ts +6 -3
  31. package/types/components/field/hooks/useEditor.d.ts +3 -3
  32. package/types/components/field/types.d.ts +16 -4
  33. package/types/components/form/Form.d.ts +13 -3
  34. package/types/components/form/types.d.ts +10 -2
  35. package/types/components/header/Header.d.ts +2 -2
  36. package/types/components/header/types.d.ts +4 -3
  37. package/types/components/icon/Icon.d.ts +2 -2
  38. package/types/components/index.d.ts +2 -2
  39. package/types/components/list/List.d.ts +109 -0
  40. package/types/components/list/index.d.ts +3 -0
  41. package/types/components/list/types.d.ts +58 -0
  42. package/types/components/mask/Mask.d.ts +23 -22
  43. package/types/components/mask/components/Avatar.d.ts +2 -2
  44. package/types/components/mask/components/Brand.d.ts +5 -2
  45. package/types/components/mask/components/Content.d.ts +3 -3
  46. package/types/components/mask/components/Menu.d.ts +6 -3
  47. package/types/components/mask/components/Sidebar.d.ts +2 -2
  48. package/types/components/mask/components/SwitchBar.d.ts +5 -2
  49. package/types/components/mask/components/Tabs.d.ts +4 -4
  50. package/types/components/mask/components/ThemeSwitch.d.ts +2 -2
  51. package/types/components/mask/components/Toolbar.d.ts +7 -4
  52. package/types/components/mask/defineTab.d.ts +1 -1
  53. package/types/components/mask/hooks/useContent.d.ts +2 -2
  54. package/types/components/mask/hooks/useHome.d.ts +1 -1
  55. package/types/components/mask/hooks/useMenus.d.ts +3 -3
  56. package/types/components/mask/hooks/useSidebar.d.ts +1 -2
  57. package/types/components/mask/hooks/useTabs.d.ts +4 -4
  58. package/types/components/mask/types.d.ts +3 -3
  59. package/types/components/menu/Menu.d.ts +6 -3
  60. package/types/components/menu/MenuItem.d.ts +3 -3
  61. package/types/components/menu/types.d.ts +2 -2
  62. package/types/components/panel/Panel.d.ts +18 -24
  63. package/types/components/panel/types.d.ts +15 -11
  64. package/types/components/shared.d.ts +2 -1
  65. package/types/components/tabs/Tabs.d.ts +3 -3
  66. package/types/components/tabs/types.d.ts +3 -3
  67. package/types/components/test/Test.d.ts +244 -0
  68. package/types/components/test/index.d.ts +3 -0
  69. package/types/components/test/types.d.ts +41 -0
  70. package/types/directives/vDraggable.d.ts +2 -2
  71. package/types/directives/vResizable.d.ts +2 -2
  72. package/types/hooks/index.d.ts +1 -0
  73. package/types/hooks/useDisabled.d.ts +1 -1
  74. package/types/hooks/useIcon.d.ts +3 -3
  75. package/types/index.d.ts +1 -4
  76. package/types/install.d.ts +4 -0
  77. package/types/list.d.ts +1 -1
  78. package/types/utils/util.d.ts +1 -3
  79. package/types/version.d.ts +8 -1
  80. package/cdn/index.js +0 -1
  81. package/cdn/style.css +0 -1
  82. package/lib/index.js +0 -3825
  83. package/lib/style.css +0 -1
  84. package/types/components/simple-mask/SimpleMask.d.ts +0 -43
  85. package/types/components/simple-mask/index.d.ts +0 -2
  86. package/types/components/startup/Startup.d.ts +0 -38
  87. package/types/components/startup/index.d.ts +0 -2
package/lib/index.js DELETED
@@ -1,3825 +0,0 @@
1
- import { defineComponent as M, openBlock as u, createElementBlock as E, renderSlot as _, createElementVNode as R, unref as n, toDisplayString as F, createVNode as k, withCtx as f, createTextVNode as N, createBlock as g, createCommentVNode as y, useAttrs as Ue, getCurrentInstance as ve, computed as h, markRaw as be, normalizeClass as Q, normalizeStyle as ue, resolveDynamicComponent as W, mergeProps as j, Fragment as Z, renderList as se, isVNode as jt, h as te, toRef as Be, useSlots as Nt, toRaw as pe, ref as D, normalizeProps as ce, guardReactiveProps as ge, effectScope as ct, watch as L, reactive as He, onMounted as ut, onUnmounted as dt, watchEffect as pt, nextTick as me, Teleport as mt, withDirectives as J, createSlots as ye, render as Ye, vShow as ee, isRef as $e, withModifiers as Xt, KeepAlive as Ut, shallowRef as qe, provide as Se, inject as we } from "vue";
2
- import { ElDivider as xe, ElButton as de, ElIcon as Ht, ElSubMenu as Wt, ElBadge as Oe, ElMenuItem as Lt, ElMenu as Kt, ElContainer as et, ElHeader as Qt, ElAside as Zt, ElMain as Jt, ElFooter as Gt, ElDropdown as Yt, ElDropdownMenu as qt, ElDropdownItem as eo, ElTooltip as ft, ElSwitch as We, ElInput as je, ElEmpty as to, ElTabs as gt, ElTabPane as Ne, ElPopover as yt, ElAvatar as oo, ElMessageBox as Re, ElSelect as no, ElOption as ao, ElCheckboxButton as so, ElCheckbox as lo, ElCheckboxGroup as io, ElRadioButton as ro, ElRadio as co, ElRadioGroup as uo, ElInputNumber as po, ElDatePicker as tt, ElTimePicker as mo, ElRate as fo, ElSlider as go, ElCascader as yo, formContextKey as ho, ElFormItem as vo, ElForm as bo, ElImage as _o } from "element-plus";
3
- import { VideoPlay as ko, Document as re, Menu as ht, ArrowRight as wo, StarFilled as vt, Search as Xe, Close as bt, Expand as xo, Fold as So, Star as _t, Refresh as zo, CopyDocument as Co, Moon as To, Sunny as Eo, MoreFilled as Mo, UserFilled as $o, HomeFilled as Bo, WarningFilled as Io } from "@element-plus/icons-vue";
4
- import { useRouter as Ae, useRoute as Le, RouterView as kt, routeLocationKey as Ao } from "vue-router";
5
- import { Minimize as Vo, Popup as Po, Maximize as Do, RawClose as Ro } from "@vtj/icons";
6
- import { useDraggable as Fo, useMouseInElement as Oo, useEventListener as Ie, useElementSize as wt, useDark as jo, useResizeObserver as No } from "@vueuse/core";
7
- import { isEqual as Ke, isObject as Qe, uid as xt, arrayToMap as Xo, isUrl as Uo, upperFirstCamelCase as St, toArray as Ho, merge as Wo, set as ot, debounce as Lo } from "@vtj/utils";
8
- import * as nt from "echarts";
9
- function oe(a) {
10
- return typeof a == "string" ? a : `${a}px`;
11
- }
12
- function Te(a = 0, t) {
13
- if (typeof a == "number")
14
- return a;
15
- if (/(%|vh|vw)$/i.test(a)) {
16
- const o = Number.parseInt(a);
17
- return Math.floor(t * o / 100);
18
- }
19
- return Number.parseInt(a);
20
- }
21
- function Va(a, t) {
22
- const e = {};
23
- return Object.keys(a).forEach((o) => {
24
- t.includes(o) || (e[o] = a[o]);
25
- }), e;
26
- }
27
- function Pa(a, t) {
28
- const e = {};
29
- return Object.keys(a).forEach((o) => {
30
- t.includes(o) && (e[o] = a[o]);
31
- }), e;
32
- }
33
- const Da = () => {
34
- }, at = Symbol("INSTALLED_KEY"), Ko = (a = []) => ({
35
- install: (e) => {
36
- e[at] || (e[at] = !0, a.forEach((o) => {
37
- o.name && e.component(o.name, o);
38
- }));
39
- }
40
- }), zt = "data:image/png;base64,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", Qo = { class: "x-startup" }, Zo = { class: "brand" }, Jo = ["src"], Go = /* @__PURE__ */ R("h3", null, [
41
- /* @__PURE__ */ N("基于 "),
42
- /* @__PURE__ */ R("span", null, "Vue3 + TypeScript"),
43
- /* @__PURE__ */ N(" 的低代码设计器引擎")
44
- ], -1), Yo = { class: "btn" }, qo = /* @__PURE__ */ R("div", { class: "ba" }, [
45
- /* @__PURE__ */ R("a", { href: "http://beian.miit.gov.cn/" }, "粤ICP备2023104074号")
46
- ], -1), en = /* @__PURE__ */ M({
47
- name: "XStartup",
48
- __name: "Startup",
49
- props: {
50
- text: { default: "VTJ.PRO" },
51
- link: { default: "/" },
52
- example: {}
53
- },
54
- setup(a) {
55
- const t = a, e = () => {
56
- location.href = t.link + "#/?startup";
57
- }, o = () => {
58
- t.example && t.example(t.link);
59
- };
60
- return (l, s) => (u(), E("div", Qo, [
61
- _(l.$slots, "default", {}, () => [
62
- R("div", null, [
63
- R("div", Zo, [
64
- R("img", { src: n(zt) }, null, 8, Jo),
65
- R("h1", null, F(t.text), 1)
66
- ]),
67
- k(n(xe)),
68
- Go,
69
- R("div", Yo, [
70
- k(n(de), {
71
- onClick: e,
72
- type: "primary",
73
- round: "",
74
- size: "large",
75
- icon: n(ko)
76
- }, {
77
- default: f(() => [
78
- N(" 立即开始体验 ")
79
- ]),
80
- _: 1
81
- }, 8, ["icon"]),
82
- t.example ? (u(), g(n(de), {
83
- key: 0,
84
- onClick: o,
85
- type: "default",
86
- round: "",
87
- size: "large",
88
- icon: n(re)
89
- }, {
90
- default: f(() => [
91
- N(" 加载示例项目 ")
92
- ]),
93
- _: 1
94
- }, 8, ["icon"])) : y("", !0)
95
- ])
96
- ])
97
- ]),
98
- qo
99
- ]));
100
- }
101
- });
102
- const tn = {
103
- default: 14,
104
- small: 12,
105
- large: 18
106
- }, on = {
107
- icon: {
108
- type: [String, Object]
109
- },
110
- color: {
111
- type: String
112
- },
113
- size: {
114
- type: [Number, String],
115
- default: "inherit"
116
- },
117
- src: {
118
- type: String
119
- },
120
- background: {
121
- type: String
122
- },
123
- padding: {
124
- type: Number
125
- },
126
- radius: {
127
- type: Number
128
- }
129
- }, nn = ["src"], ae = /* @__PURE__ */ M({
130
- name: "XIcon",
131
- __name: "Icon",
132
- props: on,
133
- setup(a) {
134
- const t = a, e = Ue(), o = ve(), l = h(() => {
135
- if (!t.icon)
136
- return null;
137
- const i = o?.appContext.app;
138
- return typeof t.icon == "object" ? be(t.icon) : i?.component(t.icon) || t.icon;
139
- }), s = h(() => {
140
- const i = {
141
- "is-pointer": !!e.onClick
142
- };
143
- return !l.value && t.icon && (i[t.icon] = !0), i;
144
- }), c = h(() => ({
145
- "background-color": t.background,
146
- "border-radius": t.radius ? oe(t.radius) : void 0,
147
- padding: t.padding ? oe(t.padding) : void 0
148
- })), r = h(() => typeof t.size == "number" ? t.size : tn[t.size] ?? void 0);
149
- return (i, m) => (u(), g(n(Ht), {
150
- class: Q(["x-icon", s.value]),
151
- color: t.color,
152
- size: r.value,
153
- style: ue(c.value)
154
- }, {
155
- default: f(() => [
156
- _(i.$slots, "default", {}, () => [
157
- l.value ? (u(), g(W(l.value), { key: 0 })) : y("", !0),
158
- t.src ? (u(), E("img", {
159
- key: 1,
160
- src: t.src
161
- }, null, 8, nn)) : y("", !0)
162
- ])
163
- ]),
164
- _: 3
165
- }, 8, ["class", "color", "size", "style"]));
166
- }
167
- }), an = { class: "x-menu__wrapper" }, sn = {
168
- key: 1,
169
- class: "x-menu__title"
170
- }, ln = /* @__PURE__ */ R("i", null, null, -1), rn = {
171
- key: 0,
172
- class: "x-menu__title"
173
- }, cn = /* @__PURE__ */ R("i", null, null, -1), Ct = /* @__PURE__ */ M({
174
- inheritAttrs: !1,
175
- name: "XMenuItem",
176
- __name: "MenuItem",
177
- props: {
178
- item: {},
179
- subMenu: {},
180
- defaultIcon: { type: [Object, Function] }
181
- },
182
- setup(a) {
183
- const t = a, e = ve(), o = (c) => {
184
- if (c)
185
- return typeof c == "string" && (e?.appContext.app?.component(c) || t.defaultIcon) || c;
186
- }, l = (c) => typeof c == "object" ? c : { value: c }, s = (c = []) => c.filter((r) => !r.hidden);
187
- return (c, r) => t.item.children ? (u(), g(n(Wt), j({
188
- key: 0,
189
- disabled: t.item.disabled
190
- }, t.subMenu, {
191
- index: String(t.item.id)
192
- }), {
193
- title: f(() => [
194
- R("div", an, [
195
- t.item.icon ? (u(), g(n(ae), {
196
- key: 0,
197
- icon: o(t.item.icon)
198
- }, null, 8, ["icon"])) : y("", !0),
199
- t.item.title ? (u(), E("span", sn, F(t.item.title), 1)) : y("", !0),
200
- t.item.badge ? (u(), g(n(Oe), j({
201
- key: 2,
202
- class: "x-menu__badge"
203
- }, l(t.item.badge)), {
204
- default: f(() => [
205
- ln
206
- ]),
207
- _: 1
208
- }, 16)) : y("", !0)
209
- ])
210
- ]),
211
- default: f(() => [
212
- (u(!0), E(Z, null, se(s(t.item.children), (i) => (u(), g(n(Ct), {
213
- key: i.id,
214
- item: i,
215
- subMenu: t.subMenu,
216
- defaultIcon: t.defaultIcon
217
- }, null, 8, ["item", "subMenu", "defaultIcon"]))), 128))
218
- ]),
219
- _: 1
220
- }, 16, ["disabled", "index"])) : (u(), g(n(Lt), {
221
- key: 1,
222
- index: String(t.item.id),
223
- disabled: t.item.disabled
224
- }, {
225
- title: f(() => [
226
- t.item.title ? (u(), E("span", rn, F(t.item.title), 1)) : y("", !0),
227
- t.item.badge ? (u(), g(n(Oe), j({
228
- key: 1,
229
- class: "x-menu__badge"
230
- }, l(t.item.badge)), {
231
- default: f(() => [
232
- cn
233
- ]),
234
- _: 1
235
- }, 16)) : y("", !0)
236
- ]),
237
- default: f(() => [
238
- t.item.icon ? (u(), g(n(ae), {
239
- key: 0,
240
- icon: o(t.item.icon)
241
- }, null, 8, ["icon"])) : y("", !0)
242
- ]),
243
- _: 1
244
- }, 8, ["index", "disabled"]));
245
- }
246
- }), ne = /* @__PURE__ */ M({
247
- inheritAttrs: !1,
248
- name: "XMenu",
249
- __name: "Menu",
250
- props: {
251
- data: { default: () => [] },
252
- subMenu: {},
253
- defaultIcon: {}
254
- },
255
- emits: ["select"],
256
- setup(a, { emit: t }) {
257
- const e = a, o = t, l = h(() => e.data.filter((r) => !r.hidden)), s = (r, i) => {
258
- const m = (p, d = []) => {
259
- for (const b of d) {
260
- if (b.id.toString() === p.toString())
261
- return b;
262
- if (b.children?.length) {
263
- const S = m(p, b.children);
264
- if (S)
265
- return S;
266
- }
267
- }
268
- };
269
- return m(i, r);
270
- }, c = (r) => {
271
- const i = s(l.value, r);
272
- i && o("select", i);
273
- };
274
- return (r, i) => (u(), g(n(Kt), j({ class: "x-menu" }, r.$attrs, { onSelect: c }), {
275
- default: f(() => [
276
- (u(!0), E(Z, null, se(l.value, (m) => (u(), g(n(Ct), {
277
- item: { ...m, icon: m.icon || n(ht) },
278
- defaultIcon: e.defaultIcon,
279
- subMenu: e.subMenu
280
- }, null, 8, ["item", "defaultIcon", "subMenu"]))), 256))
281
- ]),
282
- _: 1
283
- }, 16));
284
- }
285
- }), un = { class: "x-simple-mask__brand" }, dn = { class: "x-simple-mask__aciton" }, pn = /* @__PURE__ */ M({
286
- name: "XSimpleMask",
287
- __name: "SimpleMask",
288
- props: {
289
- preview: { type: Boolean },
290
- project: { default: () => ({
291
- name: "Logo",
292
- home: "/"
293
- }) },
294
- menu: {}
295
- },
296
- setup(a, { expose: t }) {
297
- const e = a, o = Ae(), l = Le(), s = h(() => l.params.id), c = () => {
298
- const i = e.project.home;
299
- i && o.push(i);
300
- }, r = (i) => {
301
- const m = i?.id;
302
- if (m) {
303
- const d = `${e.preview ? "/preview" : e.project.page}/${m}`;
304
- o.push(d);
305
- }
306
- };
307
- return t({
308
- goHome: c
309
- }), (i, m) => (u(), g(n(et), { class: "x-simple-mask" }, {
310
- default: f(() => [
311
- k(n(Qt), { class: "x-simple-mask__header" }, {
312
- default: f(() => [
313
- R("div", un, [
314
- R("span", {
315
- class: "x-simple-mask__logo",
316
- onClick: c
317
- }, [
318
- _(i.$slots, "logo", {}, () => [
319
- N(F(e.project.name), 1)
320
- ])
321
- ])
322
- ]),
323
- R("div", dn, [
324
- _(i.$slots, "action")
325
- ])
326
- ]),
327
- _: 3
328
- }),
329
- k(n(et), null, {
330
- default: f(() => [
331
- k(n(Zt), { class: "x-simple-mask__aside" }, {
332
- default: f(() => [
333
- k(n(ne), j(e.menu, {
334
- "default-active": s.value,
335
- onSelect: r
336
- }), null, 16, ["default-active"])
337
- ]),
338
- _: 1
339
- }),
340
- k(n(Jt), { class: "x-simple-mask__main" }, {
341
- default: f(() => [
342
- _(i.$slots, "default", {}, () => [
343
- k(n(kt))
344
- ])
345
- ]),
346
- _: 3
347
- })
348
- ]),
349
- _: 3
350
- }),
351
- i.$slots.footer ? (u(), g(n(Gt), {
352
- key: 0,
353
- class: "x-simple-mask__footer",
354
- height: "40px"
355
- }, {
356
- default: f(() => [
357
- _(i.$slots, "footer")
358
- ]),
359
- _: 3
360
- })) : y("", !0)
361
- ]),
362
- _: 3
363
- }));
364
- }
365
- }), Tt = {
366
- /**
367
- * 动作名称标识
368
- */
369
- name: {
370
- type: String
371
- },
372
- /**
373
- * 动作标题文本
374
- */
375
- label: {
376
- type: String
377
- },
378
- /**
379
- * 动作值,用来传输数据
380
- */
381
- value: {
382
- type: [String, Number, Object, Array, Boolean]
383
- },
384
- /**
385
- * 图标配置
386
- */
387
- icon: {
388
- type: [String, Object]
389
- },
390
- /**
391
- * 模式
392
- */
393
- mode: {
394
- type: String,
395
- default: "button"
396
- },
397
- /**
398
- * 下拉菜单配置
399
- */
400
- menus: {
401
- type: Array
402
- },
403
- /**
404
- * tooltip 配置
405
- */
406
- tooltip: {
407
- type: [String, Object]
408
- },
409
- /**
410
- * Badge 配置
411
- */
412
- badge: {
413
- type: [String, Number, Object]
414
- },
415
- /**
416
- * ElDropdown 组件配置
417
- */
418
- dropdown: {
419
- type: Object
420
- },
421
- /**
422
- * ElButton 组件配置,mode为button时有效
423
- */
424
- button: {
425
- type: Object
426
- },
427
- /**
428
- * 禁用
429
- */
430
- disabled: {
431
- type: [Boolean, Function]
432
- },
433
- /**
434
- * 尺寸
435
- */
436
- size: {
437
- type: String,
438
- default: "default"
439
- },
440
- /**
441
- * 颜色类型
442
- */
443
- type: {
444
- type: String,
445
- default: "primary"
446
- },
447
- /**
448
- * icon 背景设置,当 mode为 icon 时有效
449
- */
450
- background: {
451
- type: String,
452
- default: "always"
453
- },
454
- /**
455
- * icon 背景样式圆形,当 mode为 icon 时有效
456
- */
457
- circle: {
458
- type: Boolean
459
- }
460
- };
461
- function mn(a) {
462
- return h(() => {
463
- const t = a.tooltip;
464
- if (t)
465
- return typeof t == "string" ? { content: t } : t;
466
- });
467
- }
468
- function fn(a) {
469
- return h(() => {
470
- const t = a.badge;
471
- if (t)
472
- return typeof t == "object" ? t : { value: t };
473
- });
474
- }
475
- function gn(a) {
476
- return h(() => {
477
- const { dropdown: t, menus: e } = a;
478
- if (e && e.length > 0)
479
- return Object.assign(
480
- { popperClass: "x-action__menus", size: a.size },
481
- t || {}
482
- );
483
- });
484
- }
485
- function yn(a) {
486
- const t = ve();
487
- return h(() => {
488
- const e = n(a);
489
- if (e)
490
- if (typeof e == "string" || e.setup || e.render || jt(e)) {
491
- const o = t?.appContext.app;
492
- return {
493
- icon: typeof e == "string" && o?.component(e) || e
494
- };
495
- } else
496
- return e;
497
- return null;
498
- });
499
- }
500
- function he(a) {
501
- const t = yn(a);
502
- return t.value ? be(M({ render: () => te(ae, t.value) })) : null;
503
- }
504
- function Ze(a, t) {
505
- return h(() => {
506
- const e = n(a);
507
- return typeof e == "function" ? e(t) : !!e;
508
- });
509
- }
510
- const hn = { key: 0 }, vn = /* @__PURE__ */ M({
511
- __name: "Trigger",
512
- props: Tt,
513
- emits: ["click"],
514
- setup(a, { emit: t }) {
515
- const e = a, o = t, l = he(Be(e, "icon")), s = Ze(Be(e, "disabled")), c = h(() => ({
516
- [`is-${e.mode}`]: !!e.mode,
517
- [`is-${e.type}`]: !!e.type,
518
- [`is-${e.size}`]: !!e.size && e.size !== "default",
519
- [`is-background-${e.background}`]: e.mode === "icon" && !!e.background,
520
- "is-disabled": !!e.disabled,
521
- "is-circle": !!e.circle
522
- })), r = () => {
523
- o("click");
524
- };
525
- return (i, m) => e.mode === "button" ? (u(), g(n(de), j({
526
- key: 0,
527
- icon: n(l),
528
- type: e.type,
529
- size: e.size,
530
- disabled: n(s)
531
- }, e.button, { onClick: r }), {
532
- default: f(() => [
533
- N(F(i.label), 1)
534
- ]),
535
- _: 1
536
- }, 16, ["icon", "type", "size", "disabled"])) : (u(), E("div", {
537
- key: 1,
538
- class: Q(["x-action__inner", c.value]),
539
- onClick: r
540
- }, [
541
- (u(), g(W(n(l)))),
542
- i.label ? (u(), E("span", hn, F(i.label), 1)) : y("", !0)
543
- ], 2));
544
- }
545
- }), Y = /* @__PURE__ */ M({
546
- name: "XAction",
547
- __name: "Action",
548
- props: Tt,
549
- emits: ["click", "command"],
550
- setup(a, { emit: t }) {
551
- const e = a, o = Nt(), l = t, s = mn(e), c = fn(e), r = gn(e), i = Ze(Be(e, "disabled")), m = h(() => ({
552
- [`x-action--${e.mode}`]: !!e.mode
553
- })), p = () => {
554
- l("click", pe(e));
555
- }, d = (x) => {
556
- const T = e.menus?.find((v) => v.command === x);
557
- T && l("command", pe(T));
558
- }, b = (x) => te(Oe, c.value, () => [].concat(x)), S = (x) => te(
559
- Yt,
560
- { ...r.value, disabled: i.value, onCommand: d },
561
- {
562
- default: () => [x],
563
- dropdown: () => [
564
- te(
565
- qt,
566
- () => (e.menus || []).map((T) => te(
567
- eo,
568
- T,
569
- () => o.item ? o.item({ item: T }) : T.label
570
- ))
571
- )
572
- ]
573
- }
574
- ), w = (x) => te(ft, { ...s.value, disabled: i.value }, () => [
575
- x
576
- ]), V = h(() => {
577
- let x = o.default ? o.default()[0] : te(be(vn), { ...e, onClick: p });
578
- return c.value && (x = b(x)), r.value && (x = S(x)), s.value && (x = w(x)), x;
579
- });
580
- return (x, T) => (u(), E("div", {
581
- class: Q(["x-action", m.value])
582
- }, [
583
- (u(), g(W(V.value)))
584
- ], 2));
585
- }
586
- }), bn = {
587
- /**
588
- * 动作项
589
- */
590
- items: {
591
- type: Array
592
- },
593
- /**
594
- * 模式
595
- */
596
- mode: {
597
- type: String,
598
- default: "button"
599
- },
600
- /**
601
- * 尺寸
602
- */
603
- size: {
604
- type: String,
605
- default: "default"
606
- },
607
- /**
608
- * 颜色类型
609
- */
610
- type: {
611
- type: String,
612
- default: "primary"
613
- },
614
- /**
615
- * icon 背景设置,当 mode为 icon 时有效
616
- */
617
- background: {
618
- type: String,
619
- default: "always"
620
- },
621
- /**
622
- * icon 背景样式圆形,当 mode为 icon 时有效
623
- */
624
- circle: {
625
- type: Boolean
626
- },
627
- /**
628
- * 禁用
629
- */
630
- disabled: {
631
- type: [Boolean, Function]
632
- },
633
- /**
634
- * tooltip 配置
635
- */
636
- tooltip: {
637
- type: Object
638
- },
639
- /**
640
- * Badge 配置
641
- */
642
- badge: {
643
- type: Object
644
- },
645
- /**
646
- * ElDropdown 组件配置
647
- */
648
- dropdown: {
649
- type: Object
650
- },
651
- /**
652
- * ElButton 组件配置,mode为button时有效
653
- */
654
- button: {
655
- type: Object
656
- }
657
- }, Ve = /* @__PURE__ */ M({
658
- name: "XActionBar",
659
- __name: "ActionBar",
660
- props: bn,
661
- emits: ["click", "command"],
662
- setup(a, { emit: t }) {
663
- const e = a, o = t, l = h(() => (e.items || []).map((r) => r === "|" ? r : {
664
- ...r,
665
- badge: r.badge ? {
666
- ...e.badge,
667
- ...typeof r.badge == "object" ? r.badge || {} : { value: r.badge }
668
- } : void 0,
669
- tooltip: r.tooltip ? {
670
- ...e.tooltip,
671
- ...typeof r.tooltip == "object" ? r.tooltip || {} : { content: r.tooltip }
672
- } : void 0
673
- })), s = (r) => {
674
- o("click", r);
675
- }, c = (r, i) => {
676
- o("command", r, i);
677
- };
678
- return (r, i) => (u(), g(n($), {
679
- class: "x-action-bar",
680
- align: "center"
681
- }, {
682
- default: f(() => [
683
- (u(!0), E(Z, null, se(l.value, (m) => (u(), E(Z, null, [
684
- m === "|" ? (u(), g(n(xe), {
685
- key: 0,
686
- direction: "vertical",
687
- class: "x-action-bar__divider"
688
- })) : (u(), g(n(Y), j({
689
- key: 1,
690
- mode: e.mode,
691
- size: e.size,
692
- type: e.type,
693
- circle: e.circle,
694
- background: e.background,
695
- button: e.button,
696
- dropdown: e.dropdown,
697
- disabled: n(Ze)(e.disabled, m).value
698
- }, m, {
699
- onClick: s,
700
- onCommand: (p) => c(m, p)
701
- }), null, 16, ["mode", "size", "type", "circle", "background", "button", "dropdown", "disabled", "onCommand"]))
702
- ], 64))), 256))
703
- ]),
704
- _: 1
705
- }));
706
- }
707
- }), _n = {
708
- /**
709
- * 组件渲染html标签
710
- */
711
- tag: {
712
- type: String,
713
- default: "div"
714
- },
715
- /**
716
- * 宽高自适应
717
- */
718
- fit: {
719
- type: Boolean,
720
- default: !1
721
- },
722
- /**
723
- * 指定高度,fit 为true 失效
724
- */
725
- width: {
726
- type: [String, Number]
727
- },
728
- /**
729
- * 指定高度,fit 为true失效
730
- */
731
- height: {
732
- type: [String, Number]
733
- },
734
- /**
735
- * 开启flex布局
736
- */
737
- flex: {
738
- type: Boolean,
739
- default: !0
740
- },
741
- /**
742
- * inline-flex
743
- */
744
- inline: {
745
- type: Boolean
746
- },
747
- /**
748
- * flex主轴方向
749
- */
750
- direction: {
751
- type: String,
752
- default: "row"
753
- },
754
- /**
755
- * 换行
756
- */
757
- wrap: {
758
- type: String,
759
- default: "nowrap"
760
- },
761
- /**
762
- * 主轴上的对齐方式。
763
- */
764
- justify: {
765
- type: String,
766
- default: "flex-start"
767
- },
768
- /**
769
- * 交叉轴上对齐方式
770
- */
771
- align: {
772
- type: String,
773
- default: "flex-start"
774
- },
775
- /**
776
- * 多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用
777
- */
778
- alignContent: {
779
- type: String,
780
- default: "stretch"
781
- },
782
- /**
783
- * 放大
784
- */
785
- grow: {
786
- type: Boolean,
787
- default: !1
788
- },
789
- /**
790
- * 缩小
791
- */
792
- shrink: {
793
- type: Boolean,
794
- default: !1
795
- },
796
- /**
797
- * 单个项目有与其他项目不一样的对齐方式。可覆盖容器的align-items属性
798
- */
799
- alignSelf: {
800
- type: String,
801
- default: "auto"
802
- },
803
- /**
804
- * css overflow
805
- */
806
- overflow: {
807
- type: String
808
- },
809
- /**
810
- * 内边距
811
- */
812
- padding: {
813
- type: Boolean,
814
- default: !1
815
- },
816
- // 嵌套子组件加间隔
817
- gap: {
818
- type: Boolean
819
- }
820
- }, $ = /* @__PURE__ */ M({
821
- name: "XContainer",
822
- __name: "Container",
823
- props: _n,
824
- setup(a) {
825
- const t = a, e = Ue(), o = ve(), l = h(() => {
826
- const r = o?.parent;
827
- if (!r)
828
- return !1;
829
- const i = r.proxy;
830
- return i.$options.name === "XContainer" || !!i.flex;
831
- }), s = h(() => ({
832
- "is-fit": t.fit,
833
- "is-flex": t.flex && !t.inline,
834
- "is-inline-flex": t.flex && t.inline,
835
- [`is-direction-${t.direction}`]: t.flex && t.direction !== "row",
836
- [`is-wrap-${t.wrap}`]: t.flex && t.wrap !== "nowrap",
837
- [`is-justify-${t.justify}`]: t.flex && t.justify !== "flex-start",
838
- [`is-align-${t.align}`]: t.flex && t.align !== "flex-start",
839
- [`is-align-content-${t.alignContent}`]: t.flex && t.alignContent !== "stretch",
840
- "is-grow": t.grow ?? l.value,
841
- "is-shrink": l.value && t.shrink,
842
- [`is-align-self-${t.alignSelf}`]: l.value && t.alignSelf !== "auto",
843
- [`is-overflow-${t.overflow}`]: !!t.overflow,
844
- "is-padding": !!t.padding,
845
- "is-pointer": !!e.onClick,
846
- "is-gap": !!t.gap
847
- })), c = h(() => {
848
- const { width: r, height: i, fit: m } = t;
849
- return m ? null : {
850
- width: r ? oe(r) : void 0,
851
- height: i ? oe(i) : void 0
852
- };
853
- });
854
- return (r, i) => (u(), g(W(t.tag), {
855
- class: Q(["x-container", s.value]),
856
- style: ue(c.value)
857
- }, {
858
- default: f(() => [
859
- _(r.$slots, "default")
860
- ]),
861
- _: 3
862
- }, 8, ["class", "style"]));
863
- }
864
- }), kn = {
865
- size: {
866
- type: String,
867
- default: "default"
868
- },
869
- content: {
870
- type: String,
871
- default: ""
872
- },
873
- subtitle: {
874
- type: String
875
- },
876
- icon: {
877
- type: [String, Object]
878
- },
879
- border: {
880
- type: Boolean
881
- },
882
- more: {
883
- type: Boolean
884
- }
885
- }, wn = {
886
- key: 2,
887
- class: "x-header__subtitle"
888
- }, xn = {
889
- key: 0,
890
- class: "x-header__actions"
891
- }, Et = /* @__PURE__ */ M({
892
- name: "XHeader",
893
- inheritAttrs: !1,
894
- __name: "Header",
895
- props: kn,
896
- setup(a) {
897
- const t = a, e = Ue(), o = he(Be(t, "icon")), l = h(() => ({
898
- [`is-size-${t.size}`]: !!t.size && t.size !== "default",
899
- "is-border": t.border,
900
- "is-pointer": !!e.onClick
901
- }));
902
- return (s, c) => (u(), g(n($), {
903
- class: Q(["x-header", l.value]),
904
- justify: "space-between",
905
- align: "center"
906
- }, {
907
- default: f(() => [
908
- k(n($), {
909
- align: "center",
910
- class: Q(["x-header__wrapper", l.value]),
911
- grow: ""
912
- }, {
913
- default: f(() => [
914
- n(o) ? (u(), g(W(n(o)), {
915
- key: 0,
916
- class: "x-header__icon"
917
- })) : y("", !0),
918
- R("span", j({ class: "x-header__content" }, s.$attrs), [
919
- _(s.$slots, "default", {}, () => [
920
- N(F(t.content), 1)
921
- ])
922
- ], 16),
923
- t.more ? (u(), g(n(ae), {
924
- key: 1,
925
- class: "x-header__more",
926
- icon: n(wo)
927
- }, null, 8, ["icon"])) : y("", !0),
928
- t.subtitle || s.$slots.subtitle ? (u(), E("span", wn, [
929
- _(s.$slots, "subtitle", {}, () => [
930
- N(F(t.subtitle), 1)
931
- ])
932
- ])) : y("", !0)
933
- ]),
934
- _: 3
935
- }, 8, ["class"]),
936
- s.$slots.actions ? (u(), E("div", xn, [
937
- _(s.$slots, "actions")
938
- ])) : y("", !0)
939
- ]),
940
- _: 3
941
- }, 8, ["class"]));
942
- }
943
- }), Sn = {
944
- /**
945
- * 宽高自适应
946
- */
947
- fit: {
948
- type: Boolean,
949
- default: !1
950
- },
951
- /**
952
- * 指定高度,fit 为true 失效
953
- */
954
- width: {
955
- type: [String, Number]
956
- },
957
- /**
958
- * 指定高度,fit 为true失效
959
- */
960
- height: {
961
- type: [String, Number]
962
- },
963
- /**
964
- * 显示边框
965
- */
966
- border: {
967
- type: Boolean,
968
- default: !0
969
- },
970
- /**
971
- * 圆角
972
- */
973
- radius: {
974
- type: Boolean,
975
- default: !0
976
- },
977
- /**
978
- * 卡片模式
979
- */
980
- card: {
981
- type: Boolean
982
- },
983
- /**
984
- * 尺寸
985
- */
986
- size: {
987
- type: String
988
- },
989
- /**
990
- * 阴影设置
991
- */
992
- shadow: {
993
- type: String
994
- },
995
- /**
996
- * 头部设置
997
- */
998
- header: {
999
- type: [String, Object]
1000
- },
1001
- bodyPadding: {
1002
- type: Boolean,
1003
- default: !0
1004
- },
1005
- footerPadding: {
1006
- type: Boolean,
1007
- default: !0
1008
- },
1009
- body: {
1010
- type: Object
1011
- },
1012
- footer: {
1013
- type: Object
1014
- }
1015
- }, Mt = /* @__PURE__ */ M({
1016
- name: "XPanel",
1017
- __name: "Panel",
1018
- props: Sn,
1019
- setup(a, { expose: t }) {
1020
- const e = a, o = D(), l = h(() => ({
1021
- "x-panel--card": !!e.card,
1022
- "x-panel--default": !e.card,
1023
- [`is-${e.size}`]: !!e.size && e.size !== "default",
1024
- "is-border": !!e.border,
1025
- "is-radius": !!e.radius,
1026
- [`is-shadow-${e.shadow}`]: !!e.shadow && e.shadow !== "none"
1027
- })), s = h(() => e.header === null ? null : typeof e.header == "string" ? {
1028
- content: e.header,
1029
- size: e.size
1030
- } : {
1031
- ...e.header,
1032
- size: e.size
1033
- }), c = h(() => e.fit || e.height ? "auto" : void 0);
1034
- return t({
1035
- bodyRef: o
1036
- }), (r, i) => (u(), g(n($), {
1037
- class: Q(["x-panel", l.value]),
1038
- direction: "column",
1039
- fit: e.fit,
1040
- width: e.width,
1041
- height: e.height
1042
- }, {
1043
- default: f(() => [
1044
- s.value ? (u(), g(n($), {
1045
- key: 0,
1046
- flex: !1,
1047
- class: "x-panel__header"
1048
- }, {
1049
- default: f(() => [
1050
- _(r.$slots, "header", {}, () => [
1051
- k(n(Et), ce(ge(s.value)), {
1052
- default: f(() => [
1053
- _(r.$slots, "title")
1054
- ]),
1055
- actions: f(() => [
1056
- _(r.$slots, "actions")
1057
- ]),
1058
- _: 3
1059
- }, 16)
1060
- ])
1061
- ]),
1062
- _: 3
1063
- })) : y("", !0),
1064
- k(n($), j({
1065
- ref_key: "bodyRef",
1066
- ref: o,
1067
- flex: !1,
1068
- overflow: c.value,
1069
- grow: "",
1070
- padding: "",
1071
- class: "x-panel__body"
1072
- }, e.body), {
1073
- default: f(() => [
1074
- _(r.$slots, "default")
1075
- ]),
1076
- _: 3
1077
- }, 16, ["overflow"]),
1078
- r.$slots.footer ? (u(), g(n($), j({
1079
- key: 1,
1080
- flex: !1,
1081
- padding: "",
1082
- class: "x-panel__footer"
1083
- }, e.footer), {
1084
- default: f(() => [
1085
- _(r.$slots, "footer")
1086
- ]),
1087
- _: 3
1088
- }, 16)) : y("", !0)
1089
- ]),
1090
- _: 3
1091
- }, 8, ["class", "fit", "width", "height"]));
1092
- }
1093
- }), st = "user-select-none";
1094
- class lt {
1095
- constructor(t, e = {}) {
1096
- this.el = t, this.options = e, this.scope = ct(), this.scope.run(() => {
1097
- this.init();
1098
- });
1099
- }
1100
- scope;
1101
- dragging = !1;
1102
- getHandle() {
1103
- const { selector: t, handle: e } = this.options;
1104
- return t ? this.el.querySelector(t) : e;
1105
- }
1106
- getTarget() {
1107
- const { target: t = "body" } = this.options;
1108
- return typeof t == "string" ? document.querySelector(t) : n(t) || document.body;
1109
- }
1110
- init() {
1111
- const { el: t, options: e } = this, { disabled: o, delay: l = 150, onStart: s, onEnd: c } = e;
1112
- if (o)
1113
- return;
1114
- let r = null;
1115
- const i = this.getHandle(), m = this.getTarget();
1116
- let p = t.getBoundingClientRect(), d = null;
1117
- const { x: b, y: S } = Fo(t, {
1118
- initialValue: { x: p.x, y: p.y },
1119
- ...e,
1120
- handle: i,
1121
- onStart: (w, V) => {
1122
- document.body.classList.add(st), clearTimeout(r), r = setTimeout(() => {
1123
- this.dragging = !0, p = t.getBoundingClientRect(), d = m?.getBoundingClientRect(), s && s(w, V);
1124
- }, l);
1125
- },
1126
- onEnd: (w, V) => {
1127
- if (clearTimeout(r), document.body.classList.remove(st), this.dragging && d) {
1128
- this.dragging = !1;
1129
- const { x, y: T } = w, v = this.getPosition(d, p, x, T);
1130
- c && c(v, V), d = null;
1131
- }
1132
- }
1133
- });
1134
- L([b, S], () => {
1135
- if (this.dragging && d) {
1136
- const w = this.getPosition(d, p, b.value, S.value);
1137
- t.style.left = `${w.x}px`, t.style.top = `${w.y}px`;
1138
- }
1139
- });
1140
- }
1141
- getPosition(t, e, o, l) {
1142
- const { edge: s = 50 } = this.options, c = -e.width + s, r = t.width - s, i = 0, m = t.height - s, p = Math.min(r, Math.max(o, c)), d = Math.min(m, Math.max(l, i));
1143
- return {
1144
- x: p,
1145
- y: d
1146
- };
1147
- }
1148
- destory() {
1149
- this.scope.stop();
1150
- }
1151
- }
1152
- const zn = {
1153
- mounted(a, t) {
1154
- const e = t.value || {}, o = new lt(a, e);
1155
- a.__draggable__ = o;
1156
- },
1157
- updated(a, t) {
1158
- const e = t.value || {};
1159
- let o = a.__draggable__;
1160
- o && !Ke(o.options, e) && (o.destory(), a.__draggable__ = new lt(a, e));
1161
- },
1162
- unmounted(a) {
1163
- const t = a.__draggable__;
1164
- t && (t.destory(), a.__draggable__ = null);
1165
- }
1166
- }, Fe = "user-select-none";
1167
- class it {
1168
- constructor(t, e = {}) {
1169
- this.el = t, this.options = e, this.scope = ct(), this.scope.run(() => {
1170
- this.init();
1171
- });
1172
- }
1173
- scope;
1174
- resizing = D(!1);
1175
- direction = D("");
1176
- MIE = null;
1177
- cleanMousedown;
1178
- cleanMouseup;
1179
- init() {
1180
- const { el: t, options: e } = this, { disabled: o, onStart: l, onEnd: s } = e;
1181
- if (o)
1182
- return;
1183
- this.MIE = Oo(t), this.cleanMousedown = Ie(document, "mousedown", () => {
1184
- this.direction?.value && this.MIE && (this.resizing.value = !0, t.classList.add("is-resizing", `is-${this.direction.value}-resizing`), l && l(this.direction.value, this.MIE));
1185
- }), this.cleanMouseup = Ie(document, "mouseup", () => {
1186
- this.resizing.value && this.direction?.value && this.MIE && (t.classList.remove(
1187
- "is-resizing",
1188
- `is-${this.direction.value}-resizing`
1189
- ), s && s(this.direction.value, this.MIE)), this.resizing.value = !1;
1190
- }), L(this.direction, (i) => {
1191
- const m = document.body;
1192
- m.style.cursor = i ? `${i}-resize` : "", i ? m.classList.add(Fe) : m.classList.remove(Fe);
1193
- });
1194
- const { x: c, y: r } = this.MIE;
1195
- L([c, r], () => {
1196
- this.resizing.value ? this.resize() : this.direction.value = this.getDirection();
1197
- });
1198
- }
1199
- resize() {
1200
- const { MIE: t, direction: e, resizing: o, options: l, el: s } = this, c = e?.value || "";
1201
- if (!t || !o.value || !c)
1202
- return;
1203
- const { x: r, y: i, elementX: m, elementY: p, elementHeight: d, elementWidth: b } = t, { onResizing: S } = l, {
1204
- minWidth: w = 0,
1205
- minHeight: V = 0,
1206
- maxWidth: x = 99999,
1207
- maxHeight: T = 99999
1208
- } = l;
1209
- if (c.includes("e")) {
1210
- const v = Math.min(Math.max(m.value, w), x);
1211
- s.style.width = `${v}px`;
1212
- }
1213
- if (c.includes("s")) {
1214
- const v = Math.min(Math.max(p.value, V), T);
1215
- s.style.height = `${v}px`;
1216
- }
1217
- if (c.includes("w")) {
1218
- const v = Math.min(
1219
- Math.max(b.value - m.value, w),
1220
- x
1221
- );
1222
- s.style.width = `${v}px`, s.style.left = `${r.value}px`;
1223
- }
1224
- if (c.includes("n")) {
1225
- const v = Math.min(
1226
- Math.max(d.value - p.value, V),
1227
- T
1228
- );
1229
- this.el.style.height = `${v}px`, this.el.style.top = `${i.value}px`;
1230
- }
1231
- S && S(c, t);
1232
- }
1233
- getDirection() {
1234
- if (!this.MIE)
1235
- return "";
1236
- const { elementX: t, elementY: e, elementHeight: o, elementWidth: l, isOutside: s } = this.MIE;
1237
- if (s.value)
1238
- return "";
1239
- const { dirs: c = ["n", "s", "w", "e"], edge: r = 5 } = this.options;
1240
- let i = "";
1241
- return c.includes("n") && e.value <= r ? i += "n" : c.includes("s") && e.value > o.value - r && (i += "s"), c.includes("w") && t.value <= r ? i += "w" : c.includes("e") && t.value > l.value - r && (i += "e"), i;
1242
- }
1243
- destory() {
1244
- const t = document.body;
1245
- t.style.cursor = "", t.classList.remove(Fe), this.cleanMousedown && this.cleanMousedown(), this.cleanMouseup && this.cleanMouseup(), this.MIE?.stop(), this.scope.stop();
1246
- }
1247
- }
1248
- const $t = {
1249
- mounted(a, t) {
1250
- const e = t.value || {}, o = new it(a, e);
1251
- a.__resizable__ = o;
1252
- },
1253
- updated(a, t) {
1254
- const e = t.value || {};
1255
- let o = a.__resizable__;
1256
- o && !Ke(o.options, e) && (o.destory(), a.__resizable__ = new it(a, e));
1257
- },
1258
- unmounted(a) {
1259
- const t = a.__resizable__;
1260
- t && (t.destory(), a.__resizable__ = null);
1261
- }
1262
- }, Cn = {
1263
- modelValue: {
1264
- type: Boolean,
1265
- default: !0
1266
- },
1267
- title: {
1268
- type: String
1269
- },
1270
- subtitle: {
1271
- type: String
1272
- },
1273
- icon: {
1274
- type: [String, Object]
1275
- },
1276
- size: {
1277
- type: String,
1278
- default: "default"
1279
- },
1280
- width: {
1281
- type: [Number, String],
1282
- default: "70%"
1283
- },
1284
- height: {
1285
- type: [Number, String],
1286
- default: "70%"
1287
- },
1288
- left: {
1289
- type: [Number, String]
1290
- },
1291
- top: {
1292
- type: [Number, String]
1293
- },
1294
- modal: {
1295
- type: Boolean,
1296
- default: !0
1297
- },
1298
- draggable: {
1299
- type: [Boolean, Object],
1300
- default: !0
1301
- },
1302
- resizable: {
1303
- type: [Boolean, Object]
1304
- },
1305
- closable: {
1306
- type: Boolean,
1307
- default: !0
1308
- },
1309
- maximizable: {
1310
- type: Boolean,
1311
- default: !0
1312
- },
1313
- minimizable: {
1314
- type: Boolean,
1315
- default: !0
1316
- },
1317
- mode: {
1318
- type: String,
1319
- default: "normal"
1320
- },
1321
- content: {
1322
- type: Object
1323
- },
1324
- src: {
1325
- type: String
1326
- },
1327
- componentInstance: {
1328
- type: Object
1329
- },
1330
- beforeClose: {
1331
- type: Function
1332
- },
1333
- submit: {
1334
- type: [Boolean, String]
1335
- },
1336
- cancel: {
1337
- type: [Boolean, String]
1338
- },
1339
- bodyPadding: {
1340
- type: Boolean,
1341
- default: !0
1342
- },
1343
- primary: {
1344
- type: Boolean
1345
- }
1346
- };
1347
- let fe = 1e3;
1348
- function Tn(a, t) {
1349
- const { width: e, height: o } = wt(t), l = He({
1350
- mode: a.mode || "normal",
1351
- wrapperWidth: 0,
1352
- wrapperHeight: 0,
1353
- width: 0,
1354
- height: 0,
1355
- top: 0,
1356
- left: 0,
1357
- zIndex: ++fe,
1358
- dragging: !1,
1359
- resizing: !1
1360
- });
1361
- return L([e, o], ([s, c]) => {
1362
- l.wrapperWidth = s, l.wrapperHeight = c, l.width = Te(a.width, s), l.height = Te(a.height, c), l.left = a.left ? Te(a.left, s) - l.width / 2 : Math.max(Math.floor((s - l.width) / 2), 0), l.top = a.top ? Te(a.top, c) : Math.max(Math.floor((c - l.height) / 2), 0);
1363
- }), L(l, (s) => {
1364
- fe = Math.max(s.zIndex, fe);
1365
- }), {
1366
- state: l,
1367
- normal: h(() => l.mode === "normal"),
1368
- maximized: h(() => l.mode === "maximized"),
1369
- minimized: h(() => l.mode === "minimized")
1370
- };
1371
- }
1372
- function En(a, t) {
1373
- const e = h(() => {
1374
- const { width: c, height: r, top: i, left: m, zIndex: p } = t;
1375
- return {
1376
- width: `${c}px`,
1377
- height: `${r}px`,
1378
- top: `${i}px`,
1379
- left: `${m}px`,
1380
- zIndex: p
1381
- };
1382
- }), o = h(() => ({
1383
- [`is-${t.mode}`]: !!t.mode,
1384
- "is-draggable": !!a.draggable,
1385
- "is-resizable": !!a.resizable,
1386
- "is-primary": !!a.primary
1387
- })), l = h(() => ({
1388
- [`is-${t.mode}`]: !!t.mode,
1389
- "is-dragging": t.dragging,
1390
- "is-resizing": t.resizing
1391
- })), s = h(() => ({
1392
- zIndex: t.zIndex
1393
- }));
1394
- return {
1395
- styles: e,
1396
- classes: o,
1397
- wrapperClass: l,
1398
- modalStyle: s
1399
- };
1400
- }
1401
- function Mn(a, t, e) {
1402
- const o = (p) => {
1403
- t.mode = p, ["maximized", "minimized", "normal"].includes(p) && e(p), e("modeChange", p);
1404
- }, l = async () => {
1405
- (!a.beforeClose || await a.beforeClose()) && (e("update:modelValue", !1), e("close"), e("destroy"));
1406
- };
1407
- return {
1408
- close: l,
1409
- changeMode: o,
1410
- show: () => o("normal"),
1411
- hide: () => o("minimized"),
1412
- active: () => {
1413
- t.zIndex = Math.max(t.zIndex, ++fe);
1414
- },
1415
- submit: () => e("submit"),
1416
- cancel: () => {
1417
- e("cancel"), l();
1418
- }
1419
- };
1420
- }
1421
- function $n(a, t, e, o) {
1422
- return h(() => {
1423
- const l = typeof a.draggable == "boolean" ? !a.draggable : !!a.draggable?.disabled;
1424
- return {
1425
- ...Qe(a.draggable) ? a.draggable : {},
1426
- disabled: l,
1427
- target: o,
1428
- selector: ".x-panel__header",
1429
- onStart(s) {
1430
- t.dragging = !0, t.zIndex = Math.max(t.zIndex, ++fe), e("dragStart", s);
1431
- },
1432
- onMove(s) {
1433
- e("dragging", s);
1434
- },
1435
- onEnd(s) {
1436
- if (t.mode === "maximized")
1437
- return;
1438
- const { x: c, y: r } = s;
1439
- t.left = c, t.top = r, t.dragging = !1, e("dragEnd", s);
1440
- }
1441
- };
1442
- });
1443
- }
1444
- function Bn(a, t, e) {
1445
- return h(() => {
1446
- const o = typeof a.resizable == "boolean" ? !a.resizable : !!a.resizable?.disabled;
1447
- return {
1448
- minWidth: 200,
1449
- minHeight: 150,
1450
- ...Qe(a.resizable) ? a.resizable : {},
1451
- disabled: o,
1452
- dirs: ["e", "s", "w"],
1453
- onStart(l, s) {
1454
- t.resizing = !0, t.zIndex = Math.max(t.zIndex, ++fe), e("resizeStart", l, s);
1455
- },
1456
- onResizing(l, s) {
1457
- e("resizing", l, s);
1458
- },
1459
- onEnd(l, s) {
1460
- t.left = s.elementPositionX.value, t.top = s.elementPositionY.value, t.width = s.elementWidth.value, t.height = s.elementHeight.value, t.resizing = !1, e("resizeEnd", l, s);
1461
- }
1462
- };
1463
- });
1464
- }
1465
- function In(a, t) {
1466
- const e = a.componentInstance;
1467
- if (!e)
1468
- return;
1469
- let o = null;
1470
- return ut(() => {
1471
- const l = n(t), s = n(l?.bodyRef);
1472
- o = e.$el, s && s.$el && s.$el.appendChild(o);
1473
- }), dt(() => {
1474
- o && o.parentNode && o.parentNode.removeChild(o);
1475
- }), {
1476
- componentInstance: e
1477
- };
1478
- }
1479
- const An = ["src"], Je = /* @__PURE__ */ M({
1480
- name: "XDialog",
1481
- __name: "Dialog",
1482
- props: Cn,
1483
- emits: ["update:modelValue", "open", "close", "destroy", "maximized", "minimized", "normal", "modeChange", "dragStart", "dragging", "dragEnd", "resizeStart", "resizeEnd", "resizing", "submit", "cancel"],
1484
- setup(a, { expose: t, emit: e }) {
1485
- const o = a, l = e, s = ve(), c = D(), r = D(), { state: i, maximized: m, minimized: p, normal: d } = Tn(o, c), { styles: b, classes: S, wrapperClass: w, modalStyle: V } = En(o, i), { changeMode: x, active: T, close: v, show: I, hide: A, submit: U, cancel: z } = Mn(
1486
- o,
1487
- i,
1488
- l
1489
- ), H = $n(o, i, l, c), X = Bn(o, i, l), le = In(o, r);
1490
- pt(async () => {
1491
- o.modelValue && (await me(), s && l("open", s));
1492
- });
1493
- const _e = h(() => r.value?.$el);
1494
- return t({
1495
- $vtjEl: _e,
1496
- panelRef: r,
1497
- state: i,
1498
- maximized: m,
1499
- minimized: p,
1500
- changeMode: x,
1501
- show: I,
1502
- hide: A,
1503
- submit: U,
1504
- cancel: z,
1505
- componentInstance: le
1506
- }), (K, G) => o.modelValue ? (u(), g(mt, {
1507
- key: 0,
1508
- to: "body"
1509
- }, [
1510
- R("div", {
1511
- ref_key: "wrapper",
1512
- ref: c,
1513
- class: Q(["x-dialog__wrapper", n(w)])
1514
- }, [
1515
- o.modal ? (u(), E("div", {
1516
- key: 0,
1517
- class: "x-dialog__modal",
1518
- style: ue(n(V))
1519
- }, null, 4)) : y("", !0),
1520
- J((u(), g(n(Mt), {
1521
- ref_key: "panelRef",
1522
- ref: r,
1523
- class: Q(["x-dialog", n(S)]),
1524
- card: "",
1525
- shadow: "always",
1526
- header: { icon: o.icon, subtitle: o.subtitle },
1527
- width: "800px",
1528
- height: "600px",
1529
- footer: { justify: "space-between", flex: !0, align: "center" },
1530
- style: ue(n(b)),
1531
- size: o.size,
1532
- body: { padding: o.bodyPadding },
1533
- onClick: n(T)
1534
- }, ye({
1535
- title: f(() => [
1536
- N(F(o.title), 1)
1537
- ]),
1538
- actions: f(() => [
1539
- _(K.$slots, "actions"),
1540
- o.minimizable ? (u(), g(n(Y), {
1541
- key: 0,
1542
- icon: n(Vo),
1543
- size: o.size,
1544
- mode: "icon",
1545
- type: "primary",
1546
- background: "hover",
1547
- onClick: G[0] || (G[0] = (ie) => n(x)("minimized"))
1548
- }, null, 8, ["icon", "size"])) : y("", !0),
1549
- o.maximizable ? (u(), E(Z, { key: 1 }, [
1550
- n(d) ? (u(), g(n(Y), {
1551
- key: 1,
1552
- icon: n(Do),
1553
- size: o.size,
1554
- mode: "icon",
1555
- type: "primary",
1556
- background: "hover",
1557
- onClick: G[2] || (G[2] = (ie) => n(x)("maximized"))
1558
- }, null, 8, ["icon", "size"])) : (u(), g(n(Y), {
1559
- key: 0,
1560
- icon: n(Po),
1561
- size: o.size,
1562
- mode: "icon",
1563
- type: "primary",
1564
- background: "hover",
1565
- onClick: G[1] || (G[1] = (ie) => n(x)("normal"))
1566
- }, null, 8, ["icon", "size"]))
1567
- ], 64)) : y("", !0),
1568
- o.closable ? (u(), g(n(Y), {
1569
- key: 2,
1570
- icon: n(Ro),
1571
- size: o.size,
1572
- mode: "icon",
1573
- type: "danger",
1574
- background: "hover",
1575
- onClick: n(v)
1576
- }, null, 8, ["icon", "size", "onClick"])) : y("", !0)
1577
- ]),
1578
- default: f(() => [
1579
- _(K.$slots, "default", {}, () => [
1580
- o.content ? (u(), g(W(o.content), { key: 0 })) : y("", !0),
1581
- o.src ? (u(), E("iframe", {
1582
- key: 1,
1583
- src: o.src,
1584
- class: "x-dialog__frame"
1585
- }, null, 8, An)) : y("", !0)
1586
- ])
1587
- ]),
1588
- _: 2
1589
- }, [
1590
- o.cancel || o.submit || K.$slots.footer || K.$slots.extra || K.$slots.handle ? {
1591
- name: "footer",
1592
- fn: f(() => [
1593
- _(K.$slots, "footer", {}, () => [
1594
- k(n($), { align: "center" }, {
1595
- default: f(() => [
1596
- _(K.$slots, "extra")
1597
- ]),
1598
- _: 3
1599
- }),
1600
- k(n($), { align: "center" }, {
1601
- default: f(() => [
1602
- _(K.$slots, "handle"),
1603
- o.cancel ? (u(), g(n(de), {
1604
- key: 0,
1605
- type: "default",
1606
- size: o.size,
1607
- onClick: n(z)
1608
- }, {
1609
- default: f(() => [
1610
- N(F(typeof o.cancel == "string" ? o.cancel : "取消"), 1)
1611
- ]),
1612
- _: 1
1613
- }, 8, ["size", "onClick"])) : y("", !0),
1614
- o.submit ? (u(), g(n(de), {
1615
- key: 1,
1616
- type: "primary",
1617
- size: o.size,
1618
- onClick: n(U)
1619
- }, {
1620
- default: f(() => [
1621
- N(F(typeof o.submit == "string" ? o.submit : "确定"), 1)
1622
- ]),
1623
- _: 1
1624
- }, 8, ["size", "onClick"])) : y("", !0)
1625
- ]),
1626
- _: 3
1627
- })
1628
- ])
1629
- ]),
1630
- key: "0"
1631
- } : void 0
1632
- ]), 1032, ["header", "class", "style", "size", "body", "onClick"])), [
1633
- [n(zn), n(H)],
1634
- [n($t), n(X)]
1635
- ])
1636
- ], 2)
1637
- ])) : y("", !0);
1638
- }
1639
- });
1640
- function Ge(a, t) {
1641
- const e = document.createElement("div"), o = k(Je, a);
1642
- o.appContext = t ?? Ge._context, Ye(o, e);
1643
- const l = () => {
1644
- Ye(null, e), e.parentNode?.removeChild(e);
1645
- };
1646
- return o.props.onDestroy = () => {
1647
- l();
1648
- }, document.body.appendChild(e), {
1649
- vnode: o,
1650
- destroy: l
1651
- };
1652
- }
1653
- const Vn = /* @__PURE__ */ R("div", { class: "x-mask-sidebar__helper" }, null, -1), Pn = /* @__PURE__ */ M({
1654
- __name: "Sidebar",
1655
- props: {
1656
- collapsed: { type: Boolean }
1657
- },
1658
- setup(a) {
1659
- const t = a;
1660
- return (e, o) => J((u(), g(n($), {
1661
- class: Q(["x-mask-sidebar", { "is-collapsed": t.collapsed }]),
1662
- grow: !1,
1663
- flex: "",
1664
- direction: "column"
1665
- }, {
1666
- default: f(() => [
1667
- _(e.$slots, "brand"),
1668
- k(n($), {
1669
- class: "x-mask-sidebar__wrapper",
1670
- flex: "",
1671
- grow: "",
1672
- direction: "column",
1673
- justify: "space-between",
1674
- align: "center"
1675
- }, {
1676
- default: f(() => [
1677
- _(e.$slots, "default"),
1678
- Vn
1679
- ]),
1680
- _: 3
1681
- })
1682
- ]),
1683
- _: 3
1684
- }, 8, ["class"])), [
1685
- [n($t), {
1686
- dirs: ["e"],
1687
- disabled: t.collapsed,
1688
- maxWidth: 500,
1689
- minWidth: 200
1690
- }]
1691
- ]);
1692
- }
1693
- }), Dn = /* @__PURE__ */ M({
1694
- __name: "SwitchBar",
1695
- props: {
1696
- collasped: { type: Boolean, default: !1 },
1697
- favorite: { type: Boolean, default: !1 },
1698
- keyword: {}
1699
- },
1700
- emits: [
1701
- "update:collasped",
1702
- "update:keyword",
1703
- "update:favorite"
1704
- ],
1705
- setup(a, { emit: t }) {
1706
- const e = a, o = t, l = D(!1), s = D(""), c = D(!1), r = () => {
1707
- l.value = !0;
1708
- }, i = () => {
1709
- s.value = "", l.value = !1, o("update:keyword", s.value);
1710
- }, m = () => {
1711
- o("update:collasped", !e.collasped);
1712
- }, p = () => {
1713
- o("update:keyword", s.value);
1714
- }, d = () => {
1715
- o("update:favorite", c.value);
1716
- };
1717
- return (b, S) => (u(), g(n($), {
1718
- class: "x-mask-switch-bar",
1719
- justify: "space-between",
1720
- align: "center"
1721
- }, {
1722
- default: f(() => [
1723
- e.collasped ? y("", !0) : (u(), g(n($), {
1724
- key: 0,
1725
- class: "x-mask-switch-bar__left",
1726
- grow: ""
1727
- }, {
1728
- default: f(() => [
1729
- l.value ? y("", !0) : (u(), g(n(We), {
1730
- key: 0,
1731
- modelValue: c.value,
1732
- "onUpdate:modelValue": S[0] || (S[0] = (w) => c.value = w),
1733
- class: "x-mask-switch-bar__switch",
1734
- "active-icon": n(vt),
1735
- "inactive-icon": n(ht),
1736
- onChange: d
1737
- }, null, 8, ["modelValue", "active-icon", "inactive-icon"])),
1738
- l.value ? (u(), g(n(je), {
1739
- key: 1,
1740
- modelValue: s.value,
1741
- "onUpdate:modelValue": S[1] || (S[1] = (w) => s.value = w),
1742
- class: "x-mask-switch-bar__input",
1743
- size: "small",
1744
- placeholder: "请输入查询关键字",
1745
- onInput: p,
1746
- "prefix-icon": n(Xe)
1747
- }, {
1748
- suffix: f(() => [
1749
- k(n(ae), {
1750
- icon: n(bt),
1751
- onClick: i
1752
- }, null, 8, ["icon"])
1753
- ]),
1754
- _: 1
1755
- }, 8, ["modelValue", "prefix-icon"])) : y("", !0)
1756
- ]),
1757
- _: 1
1758
- })),
1759
- k(n($), {
1760
- class: Q(["x-mask-switch-bar__right", { "is-collasped": e.collasped }]),
1761
- flex: "",
1762
- align: "center",
1763
- justify: "center"
1764
- }, {
1765
- default: f(() => [
1766
- !l.value && !e.collasped ? (u(), g(n(Y), {
1767
- key: 0,
1768
- icon: n(Xe),
1769
- mode: "icon",
1770
- background: "hover",
1771
- size: "default",
1772
- circle: "",
1773
- onClick: r
1774
- }, null, 8, ["icon"])) : y("", !0),
1775
- e.collasped ? (u(), g(n(Y), {
1776
- key: 1,
1777
- icon: n(xo),
1778
- mode: "icon",
1779
- size: "default",
1780
- background: "hover",
1781
- onClick: m,
1782
- circle: ""
1783
- }, null, 8, ["icon"])) : y("", !0),
1784
- e.collasped ? y("", !0) : (u(), g(n(Y), {
1785
- key: 2,
1786
- icon: n(So),
1787
- mode: "icon",
1788
- size: "default",
1789
- background: "hover",
1790
- circle: "",
1791
- onClick: m
1792
- }, null, 8, ["icon"]))
1793
- ]),
1794
- _: 1
1795
- }, 8, ["class"])
1796
- ]),
1797
- _: 1
1798
- }));
1799
- }
1800
- }), Rn = ["src"], Fn = { key: 0 }, On = /* @__PURE__ */ M({
1801
- __name: "Brand",
1802
- props: {
1803
- collapsed: { type: Boolean, default: !1 },
1804
- logo: {},
1805
- title: {},
1806
- url: {}
1807
- },
1808
- setup(a) {
1809
- const t = a, e = Ae(), o = () => {
1810
- t.url && e.push(t.url);
1811
- };
1812
- return (l, s) => (u(), g(n($), {
1813
- class: Q(["x-mask-brand", { "is-collapsed": t.collapsed }]),
1814
- align: "center"
1815
- }, {
1816
- default: f(() => [
1817
- k(n($), {
1818
- class: "x-mask-brand__logo",
1819
- flex: "",
1820
- justify: "center",
1821
- align: "center",
1822
- onClick: o
1823
- }, {
1824
- default: f(() => [
1825
- _(l.$slots, "logo", {}, () => [
1826
- t.logo ? (u(), E("img", {
1827
- key: 0,
1828
- src: t.logo
1829
- }, null, 8, Rn)) : y("", !0)
1830
- ])
1831
- ]),
1832
- _: 3
1833
- }),
1834
- k(n($), {
1835
- class: "x-mask-brand__title",
1836
- flex: "",
1837
- align: "center"
1838
- }, {
1839
- default: f(() => [
1840
- t.title ? (u(), E("span", Fn, [
1841
- _(l.$slots, "title", {}, () => [
1842
- N(F(t.title), 1)
1843
- ])
1844
- ])) : y("", !0)
1845
- ]),
1846
- _: 3
1847
- })
1848
- ]),
1849
- _: 3
1850
- }, 8, ["class"]));
1851
- }
1852
- }), Ee = "__favorites__", Me = "__search__", jn = /* @__PURE__ */ M({
1853
- __name: "Menu",
1854
- props: {
1855
- collapse: { type: Boolean, default: !1 },
1856
- keyword: {},
1857
- favorite: { type: Boolean },
1858
- favorites: {},
1859
- flatMenus: {},
1860
- menus: {},
1861
- active: {}
1862
- },
1863
- emits: ["select"],
1864
- setup(a, { emit: t }) {
1865
- const e = a, o = h(() => e.menus || []), l = t, s = h(() => String(e.active?.id)), c = h(() => [
1866
- {
1867
- id: Ee,
1868
- title: "收藏",
1869
- icon: _t,
1870
- children: e.favorites?.length ? e.favorites : [
1871
- {
1872
- id: Ee + "empty",
1873
- disabled: !0,
1874
- title: "暂无收藏菜单"
1875
- }
1876
- ]
1877
- }
1878
- ]), r = h(() => {
1879
- const m = (e.keyword || "").trim(), p = m ? (e.flatMenus || []).filter((d) => d.title?.includes(m)) : [];
1880
- return [
1881
- {
1882
- id: Me,
1883
- title: "搜索",
1884
- icon: Xe,
1885
- children: p?.length ? p : [
1886
- {
1887
- id: Me + "empty",
1888
- disabled: !0,
1889
- title: "查询匹配不到菜单项"
1890
- }
1891
- ]
1892
- }
1893
- ];
1894
- }), i = (m) => {
1895
- l("select", m);
1896
- };
1897
- return (m, p) => (u(), E(Z, null, [
1898
- J(k(n($), {
1899
- class: "x-mask-menu",
1900
- grow: "",
1901
- flex: !1,
1902
- overflow: "auto"
1903
- }, {
1904
- default: f(() => [
1905
- J(k(n(ne), {
1906
- subMenu: {
1907
- popperClass: "x-mask-menu-popper",
1908
- teleported: !0,
1909
- showTimeout: 200,
1910
- hideTimeout: 200
1911
- },
1912
- data: o.value,
1913
- "default-icon": n(re),
1914
- collapse: !0,
1915
- "collapse-transition": !1,
1916
- "default-active": s.value,
1917
- onSelect: i
1918
- }, null, 8, ["data", "default-icon", "default-active"]), [
1919
- [ee, e.collapse]
1920
- ]),
1921
- J(k(n(ne), {
1922
- subMenu: {
1923
- popperClass: "x-mask-menu-popper",
1924
- teleported: !0
1925
- },
1926
- data: o.value,
1927
- "default-icon": n(re),
1928
- collapse: !1,
1929
- "collapse-transition": !1,
1930
- "default-active": s.value,
1931
- onSelect: i
1932
- }, null, 8, ["data", "default-icon", "default-active"]), [
1933
- [ee, !e.collapse]
1934
- ]),
1935
- o.value.length ? y("", !0) : (u(), g(n(to), {
1936
- key: 0,
1937
- description: "暂无菜单数据"
1938
- }))
1939
- ]),
1940
- _: 1
1941
- }, 512), [
1942
- [ee, !e.favorite && !e.keyword]
1943
- ]),
1944
- J(k(n($), {
1945
- class: "x-mask-menu",
1946
- grow: "",
1947
- flex: !1,
1948
- overflow: "auto"
1949
- }, {
1950
- default: f(() => [
1951
- J(k(n(ne), {
1952
- class: "x-mask-menu__favorites",
1953
- subMenu: {
1954
- popperClass: "x-mask-menu-popper",
1955
- teleported: !0,
1956
- showTimeout: 200,
1957
- hideTimeout: 200
1958
- },
1959
- data: c.value,
1960
- "default-icon": n(re),
1961
- collapse: !0,
1962
- "collapse-transition": !1,
1963
- "default-active": s.value,
1964
- "default-openeds": [Ee],
1965
- onSelect: i
1966
- }, null, 8, ["data", "default-icon", "default-active", "default-openeds"]), [
1967
- [ee, e.collapse]
1968
- ]),
1969
- J(k(n(ne), {
1970
- class: "x-mask-menu__favorites",
1971
- subMenu: {
1972
- popperClass: "x-mask-menu-popper",
1973
- teleported: !0,
1974
- showTimeout: 200,
1975
- hideTimeout: 200
1976
- },
1977
- data: c.value,
1978
- "default-icon": n(re),
1979
- collapse: !1,
1980
- "collapse-transition": !1,
1981
- "default-active": s.value,
1982
- "default-openeds": [Ee],
1983
- onSelect: i
1984
- }, null, 8, ["data", "default-icon", "default-active", "default-openeds"]), [
1985
- [ee, !e.collapse]
1986
- ])
1987
- ]),
1988
- _: 1
1989
- }, 512), [
1990
- [ee, e.favorite && !e.keyword]
1991
- ]),
1992
- e.keyword ? J((u(), g(n($), {
1993
- key: 0,
1994
- class: "x-mask-menu",
1995
- grow: "",
1996
- flex: !1,
1997
- overflow: "auto"
1998
- }, {
1999
- default: f(() => [
2000
- J(k(n(ne), {
2001
- class: "x-mask-menu__search",
2002
- subMenu: {
2003
- popperClass: "x-mask-menu-popper",
2004
- teleported: !0,
2005
- showTimeout: 200,
2006
- hideTimeout: 200
2007
- },
2008
- data: r.value,
2009
- "default-icon": n(re),
2010
- collapse: !0,
2011
- "collapse-transition": !1,
2012
- "default-active": s.value,
2013
- "default-openeds": [Me],
2014
- onSelect: i
2015
- }, null, 8, ["data", "default-icon", "default-active", "default-openeds"]), [
2016
- [ee, e.collapse]
2017
- ]),
2018
- J(k(n(ne), {
2019
- class: "x-mask-menu__search",
2020
- subMenu: {
2021
- popperClass: "x-mask-menu-popper",
2022
- teleported: !0,
2023
- showTimeout: 200,
2024
- hideTimeout: 200
2025
- },
2026
- data: r.value,
2027
- "default-icon": n(re),
2028
- collapse: !1,
2029
- "collapse-transition": !1,
2030
- "default-active": s.value,
2031
- "default-openeds": [Me],
2032
- onSelect: i
2033
- }, null, 8, ["data", "default-icon", "default-active", "default-openeds"]), [
2034
- [ee, !e.collapse]
2035
- ])
2036
- ]),
2037
- _: 1
2038
- }, 512)), [
2039
- [ee, !!e.keyword]
2040
- ]) : y("", !0)
2041
- ], 64));
2042
- }
2043
- }), Nn = { class: "x-mask-tabs__trigger" }, Xn = { key: 1 }, Un = ["onDragstart", "onDragend"], Hn = { key: 1 }, Wn = /* @__PURE__ */ M({
2044
- __name: "Tabs",
2045
- props: {
2046
- tabs: {},
2047
- home: {},
2048
- isActiveTab: { type: Function },
2049
- value: {},
2050
- favorites: {}
2051
- },
2052
- emits: ["click", "remove", "refresh", "toggleFavorite", "dialog"],
2053
- setup(a, { emit: t }) {
2054
- const e = a, o = t, l = (p) => {
2055
- const d = !!e.favorites.find(
2056
- (b) => b === p.menu || b.id === p.menu?.id
2057
- );
2058
- return [
2059
- {
2060
- icon: zo,
2061
- label: "刷新",
2062
- name: "refresh",
2063
- value: p
2064
- },
2065
- "|",
2066
- {
2067
- icon: d ? vt : _t,
2068
- label: "收藏",
2069
- name: "favorite",
2070
- value: p.menu,
2071
- disabled: !p.menu
2072
- },
2073
- "|",
2074
- {
2075
- icon: Co,
2076
- label: "弹窗",
2077
- name: "dialog",
2078
- value: p
2079
- }
2080
- ];
2081
- }, s = (p) => {
2082
- const d = p.paneName;
2083
- if (d === e.home.id) {
2084
- o("click", e.home);
2085
- return;
2086
- }
2087
- const b = e.tabs.find((S) => S.id === d);
2088
- b && o("click", b);
2089
- }, c = (p) => {
2090
- const d = e.tabs.find((b) => b.id === p);
2091
- d && o("remove", d);
2092
- }, r = (p) => {
2093
- switch (p.name) {
2094
- case "refresh":
2095
- o("refresh", p.value);
2096
- break;
2097
- case "favorite":
2098
- o("toggleFavorite", p.value);
2099
- break;
2100
- case "dialog":
2101
- o("dialog", p.value);
2102
- break;
2103
- }
2104
- }, i = (p, d) => {
2105
- d.dataTransfer && (d.dataTransfer.setData("tab", p.id), d.target && d.target.classList.add("is-dagging"));
2106
- }, m = (p, d) => {
2107
- d.target && d.target.classList.remove("is-dagging");
2108
- };
2109
- return (p, d) => (u(), g(n($), {
2110
- ref: "tabsRef",
2111
- class: "x-mask-tabs",
2112
- height: "100%",
2113
- grow: "",
2114
- flex: "",
2115
- justify: "flex-end",
2116
- direction: "column"
2117
- }, {
2118
- default: f(() => [
2119
- k(n(gt), {
2120
- type: "card",
2121
- "model-value": e.value,
2122
- onTabRemove: c,
2123
- onTabClick: s
2124
- }, {
2125
- default: f(() => [
2126
- e.home ? (u(), g(n(Ne), {
2127
- key: 0,
2128
- name: e.home.id
2129
- }, {
2130
- label: f(() => [
2131
- R("div", Nn, [
2132
- e.home.icon ? (u(), g(W(n(he)(e.home.icon)), { key: 0 })) : y("", !0),
2133
- e.home.title ? (u(), E("span", Xn, F(e.home.title), 1)) : y("", !0)
2134
- ])
2135
- ]),
2136
- _: 1
2137
- }, 8, ["name"])) : y("", !0),
2138
- (u(!0), E(Z, null, se(e.tabs, (b) => (u(), g(n(Ne), {
2139
- key: b.id,
2140
- name: b.id,
2141
- lazy: "",
2142
- closable: ""
2143
- }, {
2144
- label: f(() => [
2145
- k(n(yt), {
2146
- "open-delay": 500,
2147
- placement: "bottom",
2148
- trigger: "hover",
2149
- width: "200px",
2150
- disabled: b.id !== e.value
2151
- }, {
2152
- reference: f(() => [
2153
- R("div", {
2154
- class: "x-mask-tabs__trigger",
2155
- draggable: "true",
2156
- onDragstart: (S) => i(b, S),
2157
- onDragend: (S) => m(b, S)
2158
- }, [
2159
- b.icon ? (u(), g(W(n(he)(b.icon)), { key: 0 })) : y("", !0),
2160
- b.title ? (u(), E("span", Hn, F(b.title), 1)) : y("", !0)
2161
- ], 40, Un)
2162
- ]),
2163
- default: f(() => [
2164
- k(n(Ve), {
2165
- items: l(b),
2166
- mode: "text",
2167
- size: "small",
2168
- type: "info",
2169
- onClick: r
2170
- }, null, 8, ["items"])
2171
- ]),
2172
- _: 2
2173
- }, 1032, ["disabled"])
2174
- ]),
2175
- _: 2
2176
- }, 1032, ["name"]))), 128))
2177
- ]),
2178
- _: 1
2179
- }, 8, ["model-value"])
2180
- ]),
2181
- _: 1
2182
- }, 512));
2183
- }
2184
- }), Ln = /* @__PURE__ */ M({
2185
- __name: "ThemeSwitch",
2186
- setup(a) {
2187
- const t = jo();
2188
- return (e, o) => (u(), g(n(We), {
2189
- class: "x-mask-theme-switch",
2190
- modelValue: n(t),
2191
- "onUpdate:modelValue": o[0] || (o[0] = (l) => $e(t) ? t.value = l : null),
2192
- size: "default",
2193
- "active-action-icon": n(To),
2194
- "inactive-action-icon": n(Eo)
2195
- }, null, 8, ["modelValue", "active-action-icon", "inactive-action-icon"]));
2196
- }
2197
- }), Kn = { class: "x-mask-toolbar__menu-item" }, Qn = /* @__PURE__ */ M({
2198
- __name: "Toolbar",
2199
- props: {
2200
- tabs: { default: () => [] },
2201
- actions: {},
2202
- theme: { type: Boolean }
2203
- },
2204
- emits: [
2205
- "closeOtherTabs",
2206
- "closeAllTabs",
2207
- "closeTab",
2208
- "clickTab",
2209
- "actionClick",
2210
- "actionCommand"
2211
- ],
2212
- setup(a, { emit: t }) {
2213
- const e = a, o = t, l = h(() => {
2214
- const m = e.tabs.map((p, d) => ({
2215
- divided: d === 0,
2216
- label: p.title,
2217
- command: p
2218
- }));
2219
- return [
2220
- {
2221
- label: "关闭其他",
2222
- command: "other"
2223
- },
2224
- {
2225
- label: "关闭全部",
2226
- command: "all"
2227
- },
2228
- ...m
2229
- ];
2230
- }), s = (m) => {
2231
- o("closeTab", m.command);
2232
- }, c = (m) => {
2233
- switch (m.command) {
2234
- case "all":
2235
- o("closeAllTabs");
2236
- break;
2237
- case "other":
2238
- o("closeOtherTabs");
2239
- break;
2240
- default:
2241
- o("clickTab", m.command);
2242
- break;
2243
- }
2244
- }, r = (m) => {
2245
- o("actionClick", m);
2246
- }, i = (m, p) => {
2247
- o("actionCommand", m, p);
2248
- };
2249
- return (m, p) => (u(), g(n($), {
2250
- class: "x-mask-toolbar",
2251
- align: "center"
2252
- }, {
2253
- default: f(() => [
2254
- k(n(Y), {
2255
- icon: n(Mo),
2256
- menus: l.value,
2257
- dropdown: { size: "small" },
2258
- mode: "icon",
2259
- circle: "",
2260
- background: "hover",
2261
- onCommand: c
2262
- }, {
2263
- item: f(({ item: d }) => [
2264
- R("span", Kn, [
2265
- N(F(d.label) + " ", 1),
2266
- ["other", "all"].includes(d.command) ? y("", !0) : (u(), g(n(ae), {
2267
- key: 0,
2268
- onClick: Xt((b) => s(d), ["stop"]),
2269
- icon: n(bt)
2270
- }, null, 8, ["onClick", "icon"]))
2271
- ])
2272
- ]),
2273
- _: 1
2274
- }, 8, ["icon", "menus"]),
2275
- k(n(xe), { direction: "vertical" }),
2276
- e.actions ? (u(), g(n(Ve), {
2277
- key: 0,
2278
- circle: "",
2279
- mode: "icon",
2280
- size: "default",
2281
- background: "hover",
2282
- items: m.actions,
2283
- onClick: r,
2284
- onCommand: i
2285
- }, null, 8, ["items"])) : y("", !0),
2286
- e.actions ? (u(), g(n(xe), {
2287
- key: 1,
2288
- direction: "vertical"
2289
- })) : y("", !0),
2290
- e.theme ? (u(), g(Ln, { key: 2 })) : y("", !0),
2291
- e.theme ? (u(), g(n(xe), {
2292
- key: 3,
2293
- direction: "vertical"
2294
- })) : y("", !0),
2295
- _(m.$slots, "default")
2296
- ]),
2297
- _: 3
2298
- }));
2299
- }
2300
- }), Zn = /* @__PURE__ */ M({
2301
- __name: "Avatar",
2302
- props: {
2303
- avatar: {}
2304
- },
2305
- setup(a) {
2306
- const t = a;
2307
- return (e, o) => (u(), g(n(yt), {
2308
- width: 200,
2309
- "popper-class": "x-mask-avatar__popper",
2310
- disabled: !e.$slots.default
2311
- }, {
2312
- reference: f(() => [
2313
- k(n(oo), {
2314
- class: "x-mask-avatar",
2315
- shape: "circle",
2316
- icon: n($o),
2317
- src: t.avatar,
2318
- size: 26
2319
- }, null, 8, ["icon", "src"])
2320
- ]),
2321
- default: f(() => [
2322
- e.$slots.default ? _(e.$slots, "default", { key: 0 }) : y("", !0)
2323
- ]),
2324
- _: 3
2325
- }, 8, ["disabled"]));
2326
- }
2327
- }), rt = /* @__PURE__ */ M({
2328
- __name: "Content",
2329
- props: {
2330
- createView: { type: Function },
2331
- exclude: {}
2332
- },
2333
- setup(a) {
2334
- const t = a;
2335
- return (e, o) => (u(), g(n($), {
2336
- class: "x-mask__content",
2337
- flex: !1,
2338
- grow: "",
2339
- padding: !1
2340
- }, {
2341
- default: f(() => [
2342
- _(e.$slots, "default"),
2343
- k(n(kt), null, {
2344
- default: f(({ Component: l, route: s }) => [
2345
- (u(), g(Ut, {
2346
- exclude: t.exclude
2347
- }, [
2348
- l ? (u(), g(W(t.createView(l, s)), {
2349
- key: s.fullPath
2350
- })) : y("", !0)
2351
- ], 1032, ["exclude"]))
2352
- ]),
2353
- _: 1
2354
- })
2355
- ]),
2356
- _: 3
2357
- }));
2358
- }
2359
- }), Jn = 140, Gn = {
2360
- /**
2361
- * 系统logo
2362
- */
2363
- logo: {
2364
- type: String,
2365
- default: zt
2366
- },
2367
- /**
2368
- * 系统标题
2369
- */
2370
- title: {
2371
- type: String,
2372
- default: "VTJ.PRO"
2373
- },
2374
- /**
2375
- * 菜单项数据
2376
- */
2377
- menus: {
2378
- type: [Array, Function],
2379
- default() {
2380
- return [];
2381
- }
2382
- },
2383
- /**
2384
- * 收藏菜单项
2385
- */
2386
- favorites: {
2387
- type: [Array, Function],
2388
- default() {
2389
- return [];
2390
- }
2391
- },
2392
- /**
2393
- * 菜单项数据适配函数,用作转换菜单项数据
2394
- */
2395
- menuAdapter: {
2396
- type: Function
2397
- },
2398
- /**
2399
- * 主页Tab配置
2400
- */
2401
- home: {
2402
- type: [String, Object],
2403
- default: "/"
2404
- },
2405
- /**
2406
- * 最大tabs数量
2407
- */
2408
- tabs: {
2409
- type: Number,
2410
- default: 20
2411
- },
2412
- /**
2413
- * 右上角工具条配置
2414
- */
2415
- actions: {
2416
- type: Array
2417
- },
2418
- /**
2419
- * 用户头像图片url
2420
- */
2421
- avatar: {
2422
- type: String
2423
- },
2424
- /**
2425
- * 开启主题切换
2426
- */
2427
- theme: {
2428
- type: Boolean
2429
- },
2430
- /**
2431
- * 禁用框架容器
2432
- */
2433
- disabled: {
2434
- type: Boolean
2435
- },
2436
- addFavorite: {
2437
- type: Function
2438
- },
2439
- removeFavorite: {
2440
- type: Function
2441
- }
2442
- }, Bt = Symbol(), It = Symbol();
2443
- function Yn(a) {
2444
- const t = D(!1), e = D(""), o = D(!1);
2445
- return {
2446
- collapsed: t,
2447
- keyword: e,
2448
- favorite: o
2449
- };
2450
- }
2451
- function qn(a) {
2452
- const t = xt();
2453
- return h(() => {
2454
- const e = a.home;
2455
- return Object.assign(
2456
- { id: t, url: "/", name: "MaskHome", icon: Bo, closable: !1 },
2457
- typeof e == "string" ? { url: e } : e || {}
2458
- );
2459
- });
2460
- }
2461
- function At(a, t) {
2462
- let e = [];
2463
- return a.forEach((o) => {
2464
- o = t ? t(o) : o, o.children ? e = e.concat(At(o.children, t)) : e.push(o);
2465
- }), e;
2466
- }
2467
- function ea(a, t) {
2468
- const e = Ae(), o = qe([]), l = qe([]), s = h(() => At(o.value, a.menuAdapter)), c = h(() => Xo(s.value, "id")), r = D(null), i = (w) => {
2469
- const V = typeof w == "object" ? w.id : w, x = c.value.get(V);
2470
- if (!x) {
2471
- console.warn("找不到菜单", w);
2472
- return;
2473
- }
2474
- const { type: T = "route", url: v, title: I, icon: A } = x;
2475
- if (!v) {
2476
- r.value = x, t("select", x);
2477
- return;
2478
- }
2479
- if (T === "route") {
2480
- Uo(v) || v.startsWith("//") ? window.open(v) : (r.value = x, e.push(v).catch((U) => U));
2481
- return;
2482
- }
2483
- if (T === "window") {
2484
- window.open(v);
2485
- return;
2486
- }
2487
- T === "dialog" && Ge({
2488
- resizable: !0,
2489
- bodyPadding: !1,
2490
- width: "80%",
2491
- height: "80%",
2492
- title: I,
2493
- icon: A,
2494
- src: v
2495
- });
2496
- }, m = async () => {
2497
- o.value = typeof a.menus == "function" ? await a.menus() || [] : a.menus ?? [], l.value = typeof a.favorites == "function" ? await a.favorites() || [] : a.favorites ?? [];
2498
- }, p = (w) => {
2499
- l.value = [w, ...l.value], a.addFavorite && a.addFavorite(w);
2500
- }, d = (w) => {
2501
- l.value = l.value.filter((V) => V.id !== w.id), a.removeFavorite && a.removeFavorite(w);
2502
- }, b = (w) => !!l.value.find((V) => V === w || V.id === w.id), S = (w) => {
2503
- b(w) ? d(w) : p(w);
2504
- };
2505
- return pt(m), {
2506
- menus: o,
2507
- favorites: l,
2508
- flatMenus: s,
2509
- active: r,
2510
- select: i,
2511
- toggleFavorite: S
2512
- };
2513
- }
2514
- function ta(a, t, e, o, l) {
2515
- const s = Le(), c = Ae(), r = {}, i = D([]), m = D(), { width: p } = wt(m), d = h(() => Math.floor(p.value / Jn)), b = h(
2516
- () => i.value.slice(0, d.value).filter((C) => !C.dialog)
2517
- ), S = h(() => i.value.slice(d.value)), w = (C) => e.value.find((B) => B.url === C), V = (C) => s.fullPath === C.url, x = (C) => l.value.id === C ? l.value : i.value.find((B) => B.id === C), T = D(""), v = h(() => x(T.value)), I = (C) => {
2518
- c.push(C.url).catch((B) => B);
2519
- }, A = (C) => {
2520
- T.value = C.id, s.fullPath !== C.url && I(C);
2521
- }, U = () => {
2522
- I(l.value);
2523
- }, z = (C) => {
2524
- const B = i.value.find((P) => P.url === C.url || P.id === C.id);
2525
- B ? A(B) : (i.value.unshift(C), A(C));
2526
- }, H = async (C) => {
2527
- const { url: B = s.fullPath, icon: P, title: ze = "新建标签页" } = C || {}, Ce = r[B], Pe = xt(), De = St(B);
2528
- return {
2529
- id: Pe,
2530
- name: De,
2531
- url: B,
2532
- icon: P,
2533
- title: ze,
2534
- closable: !0,
2535
- menu: C,
2536
- ...Ce ? await Ce() : {}
2537
- };
2538
- }, X = async (C) => {
2539
- if (await Re.confirm("是否关闭页签", "提示", {
2540
- type: "warning"
2541
- }).catch((P) => !1)) {
2542
- if (i.value = i.value.filter((P) => P.id !== C.id), T.value === C.id) {
2543
- const P = i.value[0];
2544
- I(P || l.value);
2545
- }
2546
- return C;
2547
- }
2548
- }, le = (C) => {
2549
- const B = i.value.findIndex((P) => P.id === C.id);
2550
- if (B >= 0) {
2551
- const P = i.value[B];
2552
- i.value.splice(B, 1, Object.assign(P, C));
2553
- }
2554
- }, _e = async () => {
2555
- if (!await Re.confirm("是否关闭全部页签", "提示", {
2556
- type: "warning"
2557
- }).catch((P) => !1))
2558
- return;
2559
- const B = i.value;
2560
- return i.value = [], A(l.value), B;
2561
- }, K = async () => {
2562
- if (!await Re.confirm("是否关闭其他页签", "提示", {
2563
- type: "warning"
2564
- }).catch((P) => !1))
2565
- return;
2566
- const B = i.value.filter((P) => P.id !== T.value);
2567
- return i.value = i.value.filter((P) => P.id === T.value), B;
2568
- }, G = (C) => {
2569
- const B = i.value.filter((P) => P.id !== C.id);
2570
- i.value = [C, ...B], A(C);
2571
- }, ie = async () => {
2572
- await me();
2573
- const C = l.value.url === s.fullPath, B = w(s.fullPath);
2574
- if (C)
2575
- T.value = l.value.id;
2576
- else {
2577
- const P = await H(B);
2578
- z(P);
2579
- }
2580
- await me(), o.value = B || null;
2581
- };
2582
- return L(e, ie), L(s, ie, { immediate: !0 }), Se(Bt, r), {
2583
- tabRef: m,
2584
- tabs: i,
2585
- showTabs: b,
2586
- currentTab: v,
2587
- changeTab: I,
2588
- removeTab: X,
2589
- updateTab: le,
2590
- addTab: z,
2591
- home: l,
2592
- tabValue: T,
2593
- isCurrentTab: V,
2594
- activeHome: U,
2595
- activeTab: A,
2596
- dropdownTabs: S,
2597
- removeAllTabs: _e,
2598
- removeOtherTabs: K,
2599
- moveToShow: G
2600
- };
2601
- }
2602
- function oa(a) {
2603
- const t = /* @__PURE__ */ new Map(), e = D([]), o = He({}), l = {}, { updateTab: s, isCurrentTab: c, activeHome: r, tabs: i } = a, m = (v, I) => {
2604
- const A = I.fullPath;
2605
- if (t.has(A))
2606
- return t.get(A);
2607
- {
2608
- const U = St(A), z = {
2609
- name: U,
2610
- setup() {
2611
- const H = h(() => o[A] || document.body), X = h(() => !o[A]), le = h(() => !e.value.includes(U));
2612
- return Se(
2613
- Ao,
2614
- pe({ ...I })
2615
- ), () => le.value ? te(
2616
- mt,
2617
- {
2618
- to: H.value,
2619
- disabled: X.value
2620
- },
2621
- [te(v)]
2622
- ) : null;
2623
- }
2624
- };
2625
- return t.set(A, z), z;
2626
- }
2627
- }, p = (v) => {
2628
- v.dialog = void 0, delete o[v.url];
2629
- const I = l[v.id];
2630
- I && (I.destroy(), delete l[v.id], s(v));
2631
- }, d = (v = []) => {
2632
- v.forEach((I) => {
2633
- p(I);
2634
- });
2635
- }, b = async (v) => {
2636
- v.dialog = {
2637
- ...v.dialog,
2638
- onMinimized: () => {
2639
- p(v);
2640
- },
2641
- onClose: async () => {
2642
- p(v), i.value = i.value.filter((A) => A.id !== v.id);
2643
- }
2644
- }, s(v);
2645
- const I = Ge({
2646
- title: v.title,
2647
- icon: v.icon,
2648
- modal: !1,
2649
- resizable: !0,
2650
- draggable: !0,
2651
- ...v.dialog,
2652
- onOpen(A) {
2653
- o[v.url] = A.refs.panelRef?.bodyRef?.$el;
2654
- }
2655
- });
2656
- return await me(), c(v) && r(), l[v.id] = I, I;
2657
- }, S = async (v) => {
2658
- e.value = [v.name], await me(), e.value = [];
2659
- }, w = async (v) => {
2660
- e.value = v.map((I) => I.name), await me(), e.value = [];
2661
- }, V = (v) => (v.preventDefault(), !1), x = (v) => {
2662
- if (v.dataTransfer) {
2663
- const I = v.dataTransfer.getData("tab"), A = i.value.find((U) => U.id === I);
2664
- if (A) {
2665
- const { clientX: U, clientY: z } = v;
2666
- A.dialog = {
2667
- left: U,
2668
- top: z
2669
- }, b(A);
2670
- }
2671
- }
2672
- }, T = (v) => !!o[v];
2673
- return Ie(document, "dragover", V), Ie(document, "drop", x), {
2674
- createView: m,
2675
- openDialog: b,
2676
- refresh: S,
2677
- exclude: e,
2678
- cleanCache: w,
2679
- hasDialog: T,
2680
- closeDialog: p,
2681
- closeDialogs: d
2682
- };
2683
- }
2684
- const na = /* @__PURE__ */ M({
2685
- name: "XMask",
2686
- __name: "Mask",
2687
- props: Gn,
2688
- emits: ["select", "actionClick", "actionCommand"],
2689
- setup(a, { emit: t }) {
2690
- const e = a, o = t, l = qn(e), { collapsed: s, keyword: c, favorite: r } = Yn(), { menus: i, favorites: m, flatMenus: p, active: d, select: b, toggleFavorite: S } = ea(e, o), {
2691
- tabRef: w,
2692
- showTabs: V,
2693
- currentTab: x,
2694
- changeTab: T,
2695
- removeTab: v,
2696
- tabs: I,
2697
- updateTab: A,
2698
- isCurrentTab: U,
2699
- activeHome: z,
2700
- removeAllTabs: H,
2701
- removeOtherTabs: X,
2702
- dropdownTabs: le,
2703
- moveToShow: _e
2704
- } = ta(e, o, p, d, l), { createView: K, openDialog: G, refresh: ie, exclude: C, cleanCache: B, closeDialogs: P } = oa({
2705
- tabs: I,
2706
- updateTab: A,
2707
- isCurrentTab: U,
2708
- activeHome: z
2709
- }), ze = async (O) => {
2710
- await v(O) && await B([O]);
2711
- }, Ce = async () => {
2712
- const O = await H();
2713
- O && (P(O), await B(O));
2714
- }, Pe = async () => {
2715
- const O = await X();
2716
- O && (P(O), await B(O));
2717
- }, De = (O) => {
2718
- o("actionClick", O);
2719
- }, Ot = (O, q) => {
2720
- o("actionCommand", O, q);
2721
- };
2722
- return Se(It, {
2723
- tabs: I,
2724
- flatMenus: p,
2725
- favorites: m,
2726
- updateTab: A,
2727
- active: d,
2728
- currentTab: x
2729
- }), (O, q) => (u(), g(n($), { class: "x-mask" }, {
2730
- default: f(() => [
2731
- e.disabled ? (u(), g(rt, {
2732
- key: 1,
2733
- createView: n(K),
2734
- exclude: n(C)
2735
- }, {
2736
- default: f(() => [
2737
- O.$slots.default ? _(O.$slots, "default", { key: 0 }) : y("", !0)
2738
- ]),
2739
- _: 3
2740
- }, 8, ["createView", "exclude"])) : (u(), E(Z, { key: 0 }, [
2741
- k(Pn, { collapsed: n(s) }, {
2742
- brand: f(() => [
2743
- k(On, {
2744
- logo: e.logo,
2745
- title: e.title,
2746
- url: n(l).url,
2747
- collapsed: n(s)
2748
- }, null, 8, ["logo", "title", "url", "collapsed"])
2749
- ]),
2750
- default: f(() => [
2751
- k(Dn, {
2752
- collasped: n(s),
2753
- "onUpdate:collasped": q[0] || (q[0] = (ke) => $e(s) ? s.value = ke : null),
2754
- favorite: n(r),
2755
- "onUpdate:favorite": q[1] || (q[1] = (ke) => $e(r) ? r.value = ke : null),
2756
- keyword: n(c),
2757
- "onUpdate:keyword": q[2] || (q[2] = (ke) => $e(c) ? c.value = ke : null)
2758
- }, null, 8, ["collasped", "favorite", "keyword"]),
2759
- k(jn, {
2760
- collapse: n(s),
2761
- keyword: n(c),
2762
- favorite: n(r),
2763
- favorites: n(m),
2764
- flatMenus: n(p),
2765
- menus: n(i),
2766
- active: n(d),
2767
- onSelect: n(b)
2768
- }, null, 8, ["collapse", "keyword", "favorite", "favorites", "flatMenus", "menus", "active", "onSelect"])
2769
- ]),
2770
- _: 1
2771
- }, 8, ["collapsed"]),
2772
- k(n($), {
2773
- class: "x-mask__main",
2774
- grow: "",
2775
- shrink: "",
2776
- flex: "",
2777
- direction: "column"
2778
- }, {
2779
- default: f(() => [
2780
- k(n($), {
2781
- class: "x-mask-topbar",
2782
- justify: "space-between",
2783
- align: "center"
2784
- }, {
2785
- default: f(() => [
2786
- k(Wn, {
2787
- ref_key: "tabRef",
2788
- ref: w,
2789
- favorites: n(m),
2790
- tabs: n(V),
2791
- home: n(l),
2792
- value: n(x)?.id,
2793
- onClick: n(T),
2794
- onToggleFavorite: n(S),
2795
- onRemove: ze,
2796
- onDialog: n(G),
2797
- onRefresh: n(ie)
2798
- }, null, 8, ["favorites", "tabs", "home", "value", "onClick", "onToggleFavorite", "onDialog", "onRefresh"]),
2799
- k(Qn, {
2800
- tabs: n(le),
2801
- actions: e.actions,
2802
- theme: e.theme,
2803
- onCloseOtherTabs: Pe,
2804
- onCloseAllTabs: Ce,
2805
- onCloseTab: ze,
2806
- onClickTab: n(_e),
2807
- onActionClick: De,
2808
- onActionCommand: Ot
2809
- }, {
2810
- default: f(() => [
2811
- k(Zn, {
2812
- avatar: e.avatar
2813
- }, ye({ _: 2 }, [
2814
- O.$slots.user ? {
2815
- name: "default",
2816
- fn: f(() => [
2817
- _(O.$slots, "user")
2818
- ]),
2819
- key: "0"
2820
- } : void 0
2821
- ]), 1032, ["avatar"])
2822
- ]),
2823
- _: 3
2824
- }, 8, ["tabs", "actions", "theme", "onClickTab"])
2825
- ]),
2826
- _: 3
2827
- }),
2828
- k(rt, {
2829
- createView: n(K),
2830
- exclude: n(C)
2831
- }, {
2832
- default: f(() => [
2833
- O.$slots.default ? _(O.$slots, "default", { key: 0 }) : y("", !0)
2834
- ]),
2835
- _: 3
2836
- }, 8, ["createView", "exclude"])
2837
- ]),
2838
- _: 3
2839
- })
2840
- ], 64))
2841
- ]),
2842
- _: 3
2843
- }));
2844
- }
2845
- });
2846
- function Ra(a = {}) {
2847
- const t = Le(), e = we(Bt, null), o = we(It, null);
2848
- if (e) {
2849
- const s = typeof a == "function" ? a : async () => a;
2850
- e[t.fullPath] = s;
2851
- }
2852
- return {
2853
- tab: h(() => o ? o.tabs.value.find((s) => s.url === t.fullPath) : null),
2854
- mask: o
2855
- };
2856
- }
2857
- const aa = /* @__PURE__ */ M({
2858
- __name: "SelectEditor",
2859
- props: {
2860
- options: { default: () => [] }
2861
- },
2862
- setup(a) {
2863
- const t = a;
2864
- return (e, o) => (u(), g(n(no), ce(ge(e.$attrs)), {
2865
- default: f(() => [
2866
- (u(!0), E(Z, null, se(t.options, (l, s) => (u(), g(n(ao), j({
2867
- key: `item_${s}_${l.value}`
2868
- }, l), ye({ _: 2 }, [
2869
- e.$slots.option ? {
2870
- name: "default",
2871
- fn: f(() => [
2872
- _(e.$slots, "option", { option: l })
2873
- ]),
2874
- key: "0"
2875
- } : void 0
2876
- ]), 1040))), 128))
2877
- ]),
2878
- _: 3
2879
- }, 16));
2880
- }
2881
- }), sa = /* @__PURE__ */ M({
2882
- __name: "CheckboxEditor",
2883
- props: {
2884
- options: { default: () => [] },
2885
- button: { type: Boolean, default: !1 }
2886
- },
2887
- setup(a) {
2888
- const t = a, e = h(
2889
- () => be(t.button ? so : lo)
2890
- );
2891
- return (o, l) => (u(), g(n(io), ce(ge(o.$attrs)), {
2892
- default: f(() => [
2893
- (u(!0), E(Z, null, se(t.options, (s, c) => (u(), g(W(e.value), {
2894
- key: `item_${c}_${s.value}`,
2895
- label: s.value
2896
- }, {
2897
- default: f(() => [
2898
- N(F(s.label), 1)
2899
- ]),
2900
- _: 2
2901
- }, 1032, ["label"]))), 128))
2902
- ]),
2903
- _: 1
2904
- }, 16));
2905
- }
2906
- }), la = /* @__PURE__ */ M({
2907
- __name: "RadioEditor",
2908
- props: {
2909
- options: { default: () => [] },
2910
- button: { type: Boolean, default: !1 }
2911
- },
2912
- setup(a) {
2913
- const t = a, e = h(
2914
- () => be(t.button ? ro : co)
2915
- );
2916
- return (o, l) => (u(), g(n(uo), ce(ge(o.$attrs)), {
2917
- default: f(() => [
2918
- (u(!0), E(Z, null, se(t.options, (s, c) => (u(), g(W(e.value), {
2919
- key: `item_${c}_${s.value}`,
2920
- label: s.value
2921
- }, {
2922
- default: f(() => [
2923
- N(F(s.label), 1)
2924
- ]),
2925
- _: 2
2926
- }, 1032, ["label"]))), 128))
2927
- ]),
2928
- _: 1
2929
- }, 16));
2930
- }
2931
- }), Vt = {
2932
- none: {
2933
- component: "div",
2934
- props: {
2935
- class: "x-field-none"
2936
- }
2937
- },
2938
- text: {
2939
- component: je,
2940
- props: {
2941
- clearable: !0
2942
- },
2943
- defaultValue: ""
2944
- },
2945
- textarea: {
2946
- component: je,
2947
- props: {
2948
- type: "textarea",
2949
- rows: 2
2950
- },
2951
- defaultValue: ""
2952
- },
2953
- select: {
2954
- component: aa,
2955
- props: {
2956
- clearable: !0
2957
- }
2958
- },
2959
- checkbox: {
2960
- component: sa,
2961
- props: {},
2962
- defaultValue: []
2963
- },
2964
- radio: {
2965
- component: la,
2966
- props: {}
2967
- },
2968
- number: {
2969
- component: po,
2970
- props: {}
2971
- },
2972
- date: {
2973
- component: tt,
2974
- props: {}
2975
- },
2976
- time: {
2977
- component: mo,
2978
- props: {}
2979
- },
2980
- datetime: {
2981
- component: tt,
2982
- props: {
2983
- type: "datetime"
2984
- }
2985
- },
2986
- switch: {
2987
- component: We,
2988
- props: {}
2989
- },
2990
- rate: {
2991
- component: fo,
2992
- props: {}
2993
- },
2994
- slider: {
2995
- component: go,
2996
- props: {}
2997
- },
2998
- cascader: {
2999
- component: yo,
3000
- props: {}
3001
- }
3002
- }, ia = {
3003
- /**
3004
- * 字段名称
3005
- */
3006
- name: {
3007
- type: String
3008
- },
3009
- /**
3010
- * 字段标题文本
3011
- */
3012
- label: {
3013
- type: String
3014
- },
3015
- /**
3016
- * 编辑器组件
3017
- */
3018
- editor: {
3019
- type: [String, Object],
3020
- default: "text"
3021
- },
3022
- /**
3023
- * 编辑器组件参数
3024
- */
3025
- props: {
3026
- type: Object
3027
- },
3028
- /**
3029
- * 字段值
3030
- */
3031
- modelValue: {
3032
- type: [String, Number, Boolean, Object, Array],
3033
- default(a) {
3034
- return Vt[a.editor]?.defaultValue;
3035
- }
3036
- },
3037
- /**
3038
- * 输入框尺寸
3039
- */
3040
- size: {
3041
- type: String
3042
- },
3043
- width: {
3044
- type: [String, Number]
3045
- },
3046
- /**
3047
- * 是否在tooltip显示校验信息
3048
- */
3049
- tooltipMessage: {
3050
- type: [Boolean, Object],
3051
- default: !0
3052
- },
3053
- /**
3054
- * tooltip信息显示相对输入框的位置
3055
- */
3056
- tooltipPosition: {
3057
- type: [String, Number],
3058
- default: "outer"
3059
- },
3060
- /**
3061
- * null 不显示 placeholder
3062
- */
3063
- placeholder: {
3064
- type: String
3065
- },
3066
- /**
3067
- * 禁用
3068
- */
3069
- disabled: {
3070
- type: Boolean
3071
- },
3072
- /**
3073
- * 只读
3074
- */
3075
- readonly: {
3076
- type: Boolean
3077
- },
3078
- /**
3079
- * 选项数据
3080
- */
3081
- options: {
3082
- type: [Array, Function]
3083
- },
3084
- /**
3085
- * 是否显示控制
3086
- */
3087
- visible: {
3088
- type: [Boolean, Object, Function],
3089
- default: !0
3090
- },
3091
- /**
3092
- * 级联字段,根据字段值变化刷新options
3093
- */
3094
- cascader: {
3095
- type: [String, Array]
3096
- }
3097
- };
3098
- async function ra(a, t) {
3099
- const e = a.options;
3100
- return e ? typeof e == "function" ? await e(t) || [] : e : [];
3101
- }
3102
- function ca(a, t, e, o, l) {
3103
- const s = D([]), c = h(() => !o || !l ? {} : Ho(a.cascader).reduce((m, p) => (m[p] = l[p], m), {}));
3104
- return L(
3105
- c,
3106
- async (i) => {
3107
- if (e.value) {
3108
- s.value = await ra(a, i);
3109
- const m = o?.exposed?.reset;
3110
- m && a.name && m(a.name);
3111
- }
3112
- },
3113
- {
3114
- immediate: !0
3115
- }
3116
- ), {
3117
- editor: h(() => {
3118
- const {
3119
- editor: i = "text",
3120
- placeholder: m,
3121
- label: p = "...",
3122
- disabled: d,
3123
- readonly: b
3124
- } = a, S = {
3125
- ...a.props,
3126
- placeholder: m || (m === null ? void 0 : `请输入${p}`),
3127
- disabled: d,
3128
- readonly: b,
3129
- options: s.value,
3130
- onFocus: () => t("focus"),
3131
- onBlur: () => t("blur"),
3132
- onChange: (V) => t("change", V)
3133
- }, w = typeof i == "string" ? Vt[i] : {
3134
- component: i,
3135
- props: {}
3136
- };
3137
- return Wo({}, w, {
3138
- props: S
3139
- });
3140
- })
3141
- };
3142
- }
3143
- const ua = { class: "x-field__editor_wrap" }, Pt = /* @__PURE__ */ M({
3144
- name: "XField",
3145
- __name: "Field",
3146
- props: ia,
3147
- emits: ["update:modelValue", "change", "focus", "blur"],
3148
- setup(a, { expose: t, emit: e }) {
3149
- const o = a, l = e, s = we(Dt, null), c = we(ho, null), r = we(Rt, null), i = h(() => !s?.proxy || !r ? o.visible : typeof o.visible == "function" ? o.visible(r) : Qe(o.visible) ? Object.entries(o.visible).every(([H, X]) => r[H] === X) : o.visible), m = () => s?.proxy && r && o.name ? r[o.name] ?? o.modelValue : o.modelValue, p = D(m()), { editor: d } = ca(
3150
- o,
3151
- l,
3152
- i,
3153
- s,
3154
- r
3155
- ), b = D(), S = D(), w = h(
3156
- () => o.size || c?.size || "default"
3157
- ), V = h(() => Object.assign(
3158
- {},
3159
- typeof o.tooltipMessage == "boolean" ? {} : o.tooltipMessage
3160
- )), x = h(() => ({
3161
- [`is-tooltip-${o.tooltipPosition}`]: !!o.tooltipPosition
3162
- })), T = h(() => {
3163
- const z = s?.proxy;
3164
- return {
3165
- width: o.width ? oe(o.width) : z && z.inline && z.inlineColumns ? `${100 / z.inlineColumns}%` : null
3166
- };
3167
- }), v = h(() => ({
3168
- right: typeof o.tooltipPosition == "number" ? `${o.tooltipPosition}px` : void 0
3169
- })), I = h(() => ({
3170
- ...d.value.props,
3171
- modelValue: p.value,
3172
- "onUpdate:modelValue": (z) => {
3173
- p.value = z;
3174
- }
3175
- }));
3176
- return L(p, (z, H) => {
3177
- i.value && !Ke(z, H) && (l("update:modelValue", z), s?.proxy && r && o.name && ot(r, o.name, z));
3178
- }), L(
3179
- () => !s?.proxy || !o.name || !r ? o.modelValue : r[o.name] ?? o.modelValue,
3180
- (z) => {
3181
- i.value && (p.value = z);
3182
- },
3183
- {
3184
- immediate: !0
3185
- }
3186
- ), L(
3187
- i,
3188
- (z) => {
3189
- s?.proxy && r && o.name && (z ? (p.value = m(), ot(r, o.name, p.value)) : (p.value = void 0, delete r[o.name]));
3190
- },
3191
- {
3192
- immediate: !0
3193
- }
3194
- ), t({
3195
- fieldValue: p,
3196
- itemRef: b,
3197
- editorRef: S,
3198
- focus: () => {
3199
- S.value?.focus && S.value.focus();
3200
- },
3201
- blur: () => {
3202
- S.value?.foucs && S.value.blur();
3203
- }
3204
- }), (z, H) => i.value ? (u(), g(n(vo), j({
3205
- key: 0,
3206
- class: ["x-field", x.value],
3207
- ref_key: "itemRef",
3208
- ref: b,
3209
- prop: o.name,
3210
- label: z.label,
3211
- size: w.value,
3212
- style: T.value
3213
- }, z.$attrs), ye({
3214
- error: f(({ error: X }) => [
3215
- _(z.$slots, "error", { error: X }, () => [
3216
- o.tooltipMessage ? (u(), E("div", {
3217
- key: 0,
3218
- class: "x-field__info",
3219
- style: ue(v.value)
3220
- }, [
3221
- k(n(ft), j({ content: X }, V.value), {
3222
- default: f(() => [
3223
- k(n(ae), {
3224
- class: "x-field__trigger",
3225
- icon: n(Io),
3226
- size: w.value
3227
- }, null, 8, ["icon", "size"])
3228
- ]),
3229
- _: 2
3230
- }, 1040, ["content"])
3231
- ], 4)) : y("", !0)
3232
- ])
3233
- ]),
3234
- default: f(() => [
3235
- R("div", ua, [
3236
- _(z.$slots, "editor", { editor: I.value }, () => [
3237
- n(d).component ? (u(), g(W(n(d).component), j({
3238
- key: 0,
3239
- class: "x-field__editor",
3240
- ref_key: "editorRef",
3241
- ref: S,
3242
- modelValue: p.value,
3243
- "onUpdate:modelValue": H[0] || (H[0] = (X) => p.value = X)
3244
- }, n(d).props), ye({ _: 2 }, [
3245
- z.$slots.option ? {
3246
- name: "option",
3247
- fn: f(({ option: X }) => [
3248
- _(z.$slots, "option", { option: X })
3249
- ]),
3250
- key: "0"
3251
- } : void 0
3252
- ]), 1040, ["modelValue"])) : y("", !0)
3253
- ])
3254
- ]),
3255
- _(z.$slots, "default")
3256
- ]),
3257
- _: 2
3258
- }, [
3259
- z.$slots.label ? {
3260
- name: "label",
3261
- fn: f(() => [
3262
- _(z.$slots, "label")
3263
- ]),
3264
- key: "0"
3265
- } : void 0
3266
- ]), 1040, ["prop", "label", "size", "class", "style"])) : y("", !0);
3267
- }
3268
- }), da = {
3269
- /**
3270
- * 表单模型
3271
- */
3272
- model: {
3273
- type: Object,
3274
- default() {
3275
- return /* @__PURE__ */ Object.create(null);
3276
- }
3277
- },
3278
- /**
3279
- * inline模式
3280
- */
3281
- inline: {
3282
- type: Boolean
3283
- },
3284
- /**
3285
- * inline模式显示列数
3286
- */
3287
- inlineColumns: {
3288
- type: Number
3289
- },
3290
- /**
3291
- * 显示底部操作按钮
3292
- */
3293
- footer: {
3294
- type: Boolean,
3295
- default: !0
3296
- },
3297
- /**
3298
- * 提交按钮文本
3299
- */
3300
- submitText: {
3301
- type: String,
3302
- default: "提交"
3303
- },
3304
- /**
3305
- * 重置按钮文本
3306
- */
3307
- resetText: {
3308
- type: String,
3309
- default: "重置"
3310
- },
3311
- /**
3312
- * 表单提交处理方法
3313
- */
3314
- submitMethod: {
3315
- type: Function
3316
- }
3317
- }, Dt = Symbol("formInstanceKey"), Rt = Symbol("formModelKey"), Ft = /* @__PURE__ */ M({
3318
- name: "XForm",
3319
- __name: "Form",
3320
- props: da,
3321
- emits: ["change", "submit", "reset"],
3322
- setup(a, { expose: t, emit: e }) {
3323
- const o = a, l = e, s = ve(), c = D(), r = He(o.model || {}), i = D(!1);
3324
- Se(Dt, s), Se(Rt, r), L(r, () => {
3325
- l("change", pe(r));
3326
- }), L(
3327
- () => o.model,
3328
- (d) => {
3329
- Object.assign(r, d);
3330
- },
3331
- { deep: !0 }
3332
- );
3333
- const m = async () => {
3334
- await c.value.validate().catch((b) => b) && o.model && (l("submit", pe(r)), o.submitMethod && (i.value = !0, await o.submitMethod(pe(r)), i.value = !1));
3335
- }, p = (d) => {
3336
- c.value.resetFields(d), l("reset");
3337
- };
3338
- return t({
3339
- formRef: c,
3340
- model: r,
3341
- submit: m,
3342
- reset: p
3343
- }), (d, b) => (u(), g(n(bo), j({
3344
- ref_key: "formRef",
3345
- ref: c,
3346
- class: "x-form",
3347
- inline: o.inline,
3348
- model: r
3349
- }, d.$attrs), {
3350
- default: f(() => [
3351
- _(d.$slots, "default"),
3352
- o.footer ? (u(), g(n(Pt), {
3353
- key: 0,
3354
- editor: "none",
3355
- class: "x-form__footer",
3356
- label: " "
3357
- }, {
3358
- editor: f(() => [
3359
- _(d.$slots, "footer", {}, () => [
3360
- o.submitText ? (u(), g(n(de), {
3361
- key: 0,
3362
- loading: i.value,
3363
- type: "primary",
3364
- onClick: m
3365
- }, {
3366
- default: f(() => [
3367
- N(F(o.submitText), 1)
3368
- ]),
3369
- _: 1
3370
- }, 8, ["loading"])) : y("", !0),
3371
- o.resetText ? (u(), g(n(de), {
3372
- key: 1,
3373
- type: "default",
3374
- onClick: b[0] || (b[0] = () => p())
3375
- }, {
3376
- default: f(() => [
3377
- N(F(o.resetText), 1)
3378
- ]),
3379
- _: 1
3380
- })) : y("", !0),
3381
- _(d.$slots, "action")
3382
- ])
3383
- ]),
3384
- _: 3
3385
- })) : y("", !0)
3386
- ]),
3387
- _: 3
3388
- }, 16, ["inline", "model"]));
3389
- }
3390
- }), pa = {
3391
- modelValue: {
3392
- type: Boolean,
3393
- default: !0
3394
- },
3395
- size: {
3396
- type: String
3397
- },
3398
- formProps: {
3399
- type: Object
3400
- },
3401
- submit: {
3402
- type: [Boolean, String],
3403
- default: "确定"
3404
- },
3405
- cancel: {
3406
- type: [Boolean, String],
3407
- default: "取消"
3408
- },
3409
- /**
3410
- * 表单模型
3411
- */
3412
- model: {
3413
- type: Object,
3414
- default() {
3415
- return /* @__PURE__ */ Object.create(null);
3416
- }
3417
- },
3418
- rules: {
3419
- type: Object
3420
- },
3421
- /**
3422
- * 表单提交处理方法, return true 关闭弹窗
3423
- */
3424
- submitMethod: {
3425
- type: Function
3426
- }
3427
- }, ma = /* @__PURE__ */ M({
3428
- name: "XDialogForm",
3429
- __name: "DialogForm",
3430
- props: pa,
3431
- emits: ["update:modelValue", "submit", "close"],
3432
- setup(a, { expose: t, emit: e }) {
3433
- const o = a, l = e, s = D(), c = D(), r = h(() => c.value?.$vtjEl), i = () => {
3434
- s.value?.submit();
3435
- }, m = () => {
3436
- l("update:modelValue", !1), l("close");
3437
- }, p = async (d) => {
3438
- l("submit", d), o.submitMethod ? await o.submitMethod(d) && m() : m();
3439
- };
3440
- return t({
3441
- $vtjEl: r,
3442
- formRef: s,
3443
- dialogRef: c
3444
- }), (d, b) => (u(), g(n(Je), j({
3445
- ref_key: "dialogRef",
3446
- ref: c,
3447
- "model-value": o.modelValue,
3448
- submit: o.submit,
3449
- cancel: o.cancel,
3450
- size: o.size,
3451
- onSubmit: i,
3452
- onClose: m,
3453
- minimizable: !1,
3454
- maximizable: !1
3455
- }, d.$attrs), ye({
3456
- default: f(() => [
3457
- k(n(Ft), j({
3458
- ref_key: "formRef",
3459
- ref: s,
3460
- footer: !1,
3461
- "label-width": "80px",
3462
- size: o.size,
3463
- model: o.model,
3464
- rules: o.rules,
3465
- "submit-method": p
3466
- }, o.formProps), {
3467
- default: f(() => [
3468
- _(d.$slots, "default")
3469
- ]),
3470
- _: 3
3471
- }, 16, ["size", "model", "rules"])
3472
- ]),
3473
- _: 2
3474
- }, [
3475
- d.$slots.extra ? {
3476
- name: "extra",
3477
- fn: f(() => [
3478
- _(d.$slots, "extra")
3479
- ]),
3480
- key: "0"
3481
- } : void 0,
3482
- d.$slots.handle ? {
3483
- name: "handle",
3484
- fn: f(() => [
3485
- _(d.$slots, "handle")
3486
- ]),
3487
- key: "1"
3488
- } : void 0,
3489
- d.$slots.footer ? {
3490
- name: "footer",
3491
- fn: f(() => [
3492
- _(d.$slots, "footer")
3493
- ]),
3494
- key: "2"
3495
- } : void 0
3496
- ]), 1040, ["model-value", "submit", "cancel", "size"]));
3497
- }
3498
- }), fa = {
3499
- items: {
3500
- type: Array,
3501
- default() {
3502
- return [];
3503
- }
3504
- },
3505
- border: {
3506
- type: Boolean
3507
- }
3508
- }, ga = /* @__PURE__ */ M({
3509
- name: "XTabs",
3510
- __name: "Tabs",
3511
- props: fa,
3512
- setup(a) {
3513
- const t = a, e = (l) => {
3514
- const { label: s, name: c, value: r, disabled: i, closable: m, lazy: p } = l;
3515
- return {
3516
- label: s,
3517
- name: r ?? c,
3518
- disabled: i,
3519
- closable: m,
3520
- lazy: p
3521
- };
3522
- }, o = h(() => ({
3523
- "is-no-border": !t.border
3524
- }));
3525
- return (l, s) => (u(), g(n(gt), j({
3526
- class: ["x-tabs", o.value]
3527
- }, l.$attrs), {
3528
- default: f(() => [
3529
- (u(!0), E(Z, null, se(t.items, (c) => (u(), g(n(Ne), j({
3530
- key: c.value ?? c.name
3531
- }, e(c)), {
3532
- label: f(() => [
3533
- _(l.$slots, "label", ce(ge(c)), () => [
3534
- c.icon ? (u(), g(W(n(he)(c.icon)), {
3535
- key: 0,
3536
- class: "x-tabs__icon"
3537
- })) : y("", !0),
3538
- N(" " + F(c.label), 1)
3539
- ])
3540
- ]),
3541
- default: f(() => [
3542
- _(l.$slots, "default", ce(ge(c)), () => [
3543
- c.component ? (u(), g(W(c.component), ce(j({ key: 0 }, c.props)), null, 16)) : y("", !0)
3544
- ])
3545
- ]),
3546
- _: 2
3547
- }, 1040))), 128))
3548
- ]),
3549
- _: 3
3550
- }, 16, ["class"]));
3551
- }
3552
- }), ya = {
3553
- direction: {
3554
- type: String,
3555
- default: "column"
3556
- },
3557
- imageSrc: {
3558
- type: String
3559
- },
3560
- imageWidth: {
3561
- type: [Number, String]
3562
- },
3563
- imageHeight: {
3564
- type: [Number, String]
3565
- },
3566
- icon: {
3567
- type: [String, Object]
3568
- },
3569
- title: {
3570
- type: String
3571
- },
3572
- description: {
3573
- type: String
3574
- },
3575
- actions: {
3576
- type: Array
3577
- },
3578
- actionBarProps: {
3579
- type: Object
3580
- },
3581
- split: {
3582
- type: Boolean
3583
- },
3584
- onImageClick: {
3585
- type: Function
3586
- },
3587
- onTitleClick: {
3588
- type: Function
3589
- }
3590
- }, ha = { class: "x-data-item__title" }, va = {
3591
- key: 1,
3592
- class: "x-data-item__section x-data-item__desc"
3593
- }, ba = {
3594
- key: 2,
3595
- class: "x-data-item__section x-data-item__extra"
3596
- }, _a = {
3597
- key: 3,
3598
- class: "x-data-item__section x-data-item__actions"
3599
- }, ka = /* @__PURE__ */ M({
3600
- name: "XDataItem",
3601
- __name: "DataItem",
3602
- props: ya,
3603
- emits: ["imageClick", "titleClick", "actionClick", "actionCommand"],
3604
- setup(a, { emit: t }) {
3605
- const e = a, o = t, l = h(() => {
3606
- const { imageWidth: d, imageHeight: b } = e;
3607
- return {
3608
- width: d ? oe(d) : void 0,
3609
- height: b ? oe(b) : void 0
3610
- };
3611
- }), s = h(() => ({
3612
- [`is-image-${e.direction}`]: !!e.direction,
3613
- "is-split": !!e.split
3614
- })), c = h(() => ({
3615
- size: "small",
3616
- mode: "text",
3617
- justify: "flex-end",
3618
- type: "info",
3619
- items: e.actions,
3620
- ...e.actionBarProps
3621
- })), r = () => o("imageClick"), i = () => o("titleClick"), m = (d) => o("actionClick", d), p = (d, b) => o("actionCommand", d, b);
3622
- return (d, b) => (u(), g(n($), {
3623
- class: Q(["x-data-item", s.value]),
3624
- direction: e.direction
3625
- }, {
3626
- default: f(() => [
3627
- e.imageSrc || d.$slots.image ? (u(), g(n($), {
3628
- key: 0,
3629
- class: "x-data-item__img",
3630
- onClick: e.onImageClick ? r : void 0
3631
- }, {
3632
- default: f(() => [
3633
- _(d.$slots, "image", {}, () => [
3634
- e.imageSrc ? (u(), g(n(_o), {
3635
- key: 0,
3636
- style: ue(l.value),
3637
- src: e.imageSrc
3638
- }, null, 8, ["style", "src"])) : y("", !0)
3639
- ])
3640
- ]),
3641
- _: 3
3642
- }, 8, ["onClick"])) : y("", !0),
3643
- k(n($), {
3644
- class: "x-data-item__content",
3645
- direction: "column",
3646
- grow: "",
3647
- shrink: ""
3648
- }, {
3649
- default: f(() => [
3650
- e.title || d.$slots.title ? (u(), g(n($), {
3651
- key: 0,
3652
- class: "x-data-item__section x-data-item__wrapper",
3653
- align: "center",
3654
- onClick: e.onTitleClick ? i : void 0
3655
- }, {
3656
- default: f(() => [
3657
- e.icon ? (u(), g(W(n(he)(e.icon)), {
3658
- key: 0,
3659
- class: "x-data-item__icon"
3660
- })) : y("", !0),
3661
- R("span", ha, [
3662
- _(d.$slots, "title", {}, () => [
3663
- N(F(e.title), 1)
3664
- ])
3665
- ])
3666
- ]),
3667
- _: 3
3668
- }, 8, ["onClick"])) : y("", !0),
3669
- e.description || d.$slots.description ? (u(), E("div", va, [
3670
- _(d.$slots, "description", {}, () => [
3671
- N(F(e.description), 1)
3672
- ])
3673
- ])) : y("", !0),
3674
- d.$slots.default ? (u(), E("div", ba, [
3675
- _(d.$slots, "default")
3676
- ])) : y("", !0),
3677
- e.actions || e.actionBarProps || d.$slots.actions ? (u(), E("div", _a, [
3678
- _(d.$slots, "actions", {}, () => [
3679
- k(n(Ve), j(c.value, {
3680
- onClick: m,
3681
- onCommand: p
3682
- }), null, 16)
3683
- ])
3684
- ])) : y("", !0)
3685
- ]),
3686
- _: 3
3687
- })
3688
- ]),
3689
- _: 3
3690
- }, 8, ["direction", "class"]));
3691
- }
3692
- }), wa = {
3693
- option: {
3694
- type: Object
3695
- },
3696
- width: {
3697
- type: [Number, String],
3698
- default: "100%"
3699
- },
3700
- height: {
3701
- type: [Number, String],
3702
- default: "400px"
3703
- }
3704
- };
3705
- function xa(a, t) {
3706
- const e = D();
3707
- return ut(() => {
3708
- const o = n(a);
3709
- o && (e.value || (e.value = be(nt.init(o))), e.value.setOption(t.option || {}));
3710
- }), dt(() => {
3711
- e.value && e.value.dispose();
3712
- }), L(
3713
- () => t.option,
3714
- (o) => {
3715
- e.value && e.value.setOption(o || {});
3716
- },
3717
- { deep: !0 }
3718
- ), No(
3719
- a,
3720
- Lo(() => {
3721
- e.value && e.value.resize();
3722
- }, 150)
3723
- ), {
3724
- echartsInstance: e,
3725
- echarts: nt
3726
- };
3727
- }
3728
- const Sa = /* @__PURE__ */ M({
3729
- name: "XChart",
3730
- __name: "Chart",
3731
- props: wa,
3732
- setup(a, { expose: t }) {
3733
- const e = a, o = D(), { echartsInstance: l, echarts: s } = xa(o, e), c = h(() => ({
3734
- width: oe(e.width),
3735
- height: oe(e.height)
3736
- }));
3737
- return t({
3738
- chartRef: o,
3739
- echartsInstance: l,
3740
- echarts: s
3741
- }), (r, i) => (u(), E("div", {
3742
- ref_key: "chartRef",
3743
- ref: o,
3744
- style: ue(c.value)
3745
- }, null, 4));
3746
- }
3747
- }), za = [
3748
- en,
3749
- ae,
3750
- ne,
3751
- pn,
3752
- Y,
3753
- Ve,
3754
- $,
3755
- Et,
3756
- Mt,
3757
- Je,
3758
- na,
3759
- Pt,
3760
- Ft,
3761
- ma,
3762
- ga,
3763
- ka,
3764
- Sa
3765
- ], Fa = "0.6.24", Ca = Ko(za), Oa = Ca.install;
3766
- export {
3767
- lt as Draggable,
3768
- at as INSTALLED_KEY,
3769
- It as MASK_KEY,
3770
- Da as NOOP,
3771
- it as Resizable,
3772
- Bt as TAB_CREATORS_KEY,
3773
- Jn as TAB_ITEM_WIDTH,
3774
- Y as XAction,
3775
- Ve as XActionBar,
3776
- Sa as XChart,
3777
- $ as XContainer,
3778
- ka as XDataItem,
3779
- Je as XDialog,
3780
- ma as XDialogForm,
3781
- Pt as XField,
3782
- Ft as XForm,
3783
- Et as XHeader,
3784
- ae as XIcon,
3785
- na as XMask,
3786
- ne as XMenu,
3787
- Mt as XPanel,
3788
- pn as XSimpleMask,
3789
- en as XStartup,
3790
- ga as XTabs,
3791
- bn as actionBarProps,
3792
- Tt as actionProps,
3793
- Vt as builtinFieldEditors,
3794
- wa as chartProps,
3795
- za as components,
3796
- _n as containerProps,
3797
- Ge as createDialog,
3798
- ya as dataItemProps,
3799
- Oa as default,
3800
- Ra as defineTab,
3801
- pa as dialogFormProps,
3802
- Cn as dialogProps,
3803
- ia as fieldProps,
3804
- Dt as formInstanceKey,
3805
- Rt as formModelKey,
3806
- da as formProps,
3807
- oe as getSizeValue,
3808
- kn as headerProps,
3809
- on as iconProps,
3810
- tn as iconSizeMap,
3811
- Oa as install,
3812
- Ko as makeInstaller,
3813
- Gn as maskProps,
3814
- Va as omit,
3815
- Sn as panelProps,
3816
- Te as parseSize,
3817
- Pa as pick,
3818
- fa as tabsProps,
3819
- Ze as useDisabled,
3820
- he as useIcon,
3821
- yn as useIconProps,
3822
- zn as vDraggable,
3823
- $t as vResizable,
3824
- Fa as version
3825
- };