djm-ui 0.72.0 → 0.73.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.
- package/CHANGELOG.md +13 -0
- package/README.md +2 -2
- package/dist/djm-ui.cjs +624 -487
- package/dist/djm-ui.cjs.map +3 -3
- package/dist/djm-ui.css +272 -5
- package/dist/djm-ui.esm.js +447 -312
- package/dist/djm-ui.esm.js.map +3 -3
- package/dist/djm-ui.esm.min.js +167 -121
- package/dist/djm-ui.min.cjs +172 -126
- package/dist/djm-ui.min.css +2 -2
- package/dist/djm-ui.umd.js +162 -28
- package/dist/djm-ui.umd.min.js +166 -120
- package/dist/mcp/manifest.json +121 -16
- package/package.json +1 -1
- package/src/components/drawer/index.js +4 -2
- package/src/components/modal/index.js +4 -2
- package/src/components/progress/index.js +72 -3
- package/src/components/spin/index.js +69 -22
- package/src/index.js +2 -1
- package/src/styles/components/feedback.css +46 -0
- package/src/styles/components/glass.css +58 -0
- package/src/styles/components/spin.css +156 -4
- package/src/styles/index.css +1 -0
- package/src/styles/theme-dark.css +3 -0
- package/src/styles/tokens.css +5 -0
- package/src/theme/index.js +22 -0
- package/types/index.d.ts +9 -0
package/dist/djm-ui.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! DJM UI v0.
|
|
1
|
+
/*! DJM UI v0.73.0 · MIT · 2026-10-26 */
|
|
2
2
|
"use strict";
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -1039,6 +1039,7 @@ __export(index_exports, {
|
|
|
1039
1039
|
djmMessage: () => djmMessage,
|
|
1040
1040
|
djmMessages: () => djmMessages,
|
|
1041
1041
|
getLocale: () => getLocale,
|
|
1042
|
+
glass: () => glass,
|
|
1042
1043
|
hasPermission: () => hasPermission,
|
|
1043
1044
|
initTheme: () => initTheme,
|
|
1044
1045
|
install: () => install,
|
|
@@ -1048,6 +1049,7 @@ __export(index_exports, {
|
|
|
1048
1049
|
primaryColor: () => primaryColor,
|
|
1049
1050
|
resetPrimaryColor: () => resetPrimaryColor,
|
|
1050
1051
|
sanitizeHtml: () => sanitizeHtml,
|
|
1052
|
+
setGlass: () => setGlass,
|
|
1051
1053
|
setLocale: () => setLocale,
|
|
1052
1054
|
setPermissions: () => setPermissions,
|
|
1053
1055
|
setPrimaryColor: () => setPrimaryColor,
|
|
@@ -1872,7 +1874,7 @@ function t(key, params) {
|
|
|
1872
1874
|
// src/utils/panel.js
|
|
1873
1875
|
var PANEL_HIDDEN_STYLE = { position: "fixed", left: "0px", top: "0px", visibility: "hidden" };
|
|
1874
1876
|
function bindPanelListeners({ root, panel, onClose, onReposition, esc = true }) {
|
|
1875
|
-
const el = (
|
|
1877
|
+
const el = (ref51) => typeof ref51 === "function" ? ref51() : ref51;
|
|
1876
1878
|
function onDocumentMousedown(event) {
|
|
1877
1879
|
const rootEl = el(root);
|
|
1878
1880
|
const panelEl = el(panel);
|
|
@@ -4245,12 +4247,18 @@ var progress_default = {
|
|
|
4245
4247
|
name: "DjmProgress",
|
|
4246
4248
|
props: {
|
|
4247
4249
|
percent: { type: Number, default: 0 },
|
|
4250
|
+
// line 横向 / circle 环形
|
|
4251
|
+
type: { type: String, default: "line" },
|
|
4248
4252
|
// '' / success / error / warning
|
|
4249
4253
|
status: { type: String, default: "" },
|
|
4250
4254
|
showText: { type: Boolean, default: true },
|
|
4251
4255
|
strokeWidth: { type: Number, default: 6 },
|
|
4252
4256
|
// 自定义进度色,不传由状态决定
|
|
4253
|
-
color: { type: String, default: "" }
|
|
4257
|
+
color: { type: String, default: "" },
|
|
4258
|
+
// 环形直径(px)
|
|
4259
|
+
size: { type: Number, default: 96 },
|
|
4260
|
+
// 无障碍名称,默认「进度」
|
|
4261
|
+
label: { type: String, default: "" }
|
|
4254
4262
|
},
|
|
4255
4263
|
computed: {
|
|
4256
4264
|
safePercent() {
|
|
@@ -4263,10 +4271,72 @@ var progress_default = {
|
|
|
4263
4271
|
},
|
|
4264
4272
|
trackStyle() {
|
|
4265
4273
|
return { height: this.strokeWidth + "px" };
|
|
4274
|
+
},
|
|
4275
|
+
circleSize() {
|
|
4276
|
+
return Math.max(48, Number(this.size) || 96);
|
|
4277
|
+
},
|
|
4278
|
+
circleRadius() {
|
|
4279
|
+
return (this.circleSize - this.strokeWidth) / 2;
|
|
4280
|
+
},
|
|
4281
|
+
circleLength() {
|
|
4282
|
+
return 2 * Math.PI * this.circleRadius;
|
|
4283
|
+
},
|
|
4284
|
+
circleOffset() {
|
|
4285
|
+
return this.circleLength * (1 - this.safePercent / 100);
|
|
4286
|
+
},
|
|
4287
|
+
circleStyle() {
|
|
4288
|
+
return { width: this.circleSize + "px", height: this.circleSize + "px" };
|
|
4289
|
+
},
|
|
4290
|
+
circleLabelStyle() {
|
|
4291
|
+
return { fontSize: Math.max(12, Math.round(this.circleSize / 5)) + "px" };
|
|
4266
4292
|
}
|
|
4267
4293
|
},
|
|
4268
4294
|
template: `
|
|
4269
|
-
<div
|
|
4295
|
+
<div
|
|
4296
|
+
v-if="type === 'circle'"
|
|
4297
|
+
class="djm-progress-circle"
|
|
4298
|
+
:class="status ? 'djm-is-' + status : ''"
|
|
4299
|
+
:style="circleStyle"
|
|
4300
|
+
role="progressbar"
|
|
4301
|
+
:aria-label="label || '\u8FDB\u5EA6'"
|
|
4302
|
+
:aria-valuenow="safePercent"
|
|
4303
|
+
aria-valuemin="0"
|
|
4304
|
+
aria-valuemax="100"
|
|
4305
|
+
>
|
|
4306
|
+
<svg :viewBox="'0 0 ' + circleSize + ' ' + circleSize" aria-hidden="true">
|
|
4307
|
+
<circle
|
|
4308
|
+
class="djm-progress-circle-track"
|
|
4309
|
+
:cx="circleSize / 2"
|
|
4310
|
+
:cy="circleSize / 2"
|
|
4311
|
+
:r="circleRadius"
|
|
4312
|
+
:stroke-width="strokeWidth"
|
|
4313
|
+
fill="none"
|
|
4314
|
+
/>
|
|
4315
|
+
<circle
|
|
4316
|
+
class="djm-progress-circle-bar"
|
|
4317
|
+
:cx="circleSize / 2"
|
|
4318
|
+
:cy="circleSize / 2"
|
|
4319
|
+
:r="circleRadius"
|
|
4320
|
+
:stroke-width="strokeWidth"
|
|
4321
|
+
fill="none"
|
|
4322
|
+
stroke-linecap="round"
|
|
4323
|
+
:stroke-dasharray="circleLength"
|
|
4324
|
+
:stroke-dashoffset="circleOffset"
|
|
4325
|
+
:style="color ? { stroke: color } : null"
|
|
4326
|
+
/>
|
|
4327
|
+
</svg>
|
|
4328
|
+
<span v-if="showText" class="djm-progress-circle-label" :style="circleLabelStyle">{{ safePercent }}%</span>
|
|
4329
|
+
</div>
|
|
4330
|
+
<div
|
|
4331
|
+
v-else
|
|
4332
|
+
class="djm-progress-line"
|
|
4333
|
+
:class="status ? 'djm-is-' + status : ''"
|
|
4334
|
+
role="progressbar"
|
|
4335
|
+
:aria-label="label || '\u8FDB\u5EA6'"
|
|
4336
|
+
:aria-valuenow="safePercent"
|
|
4337
|
+
aria-valuemin="0"
|
|
4338
|
+
aria-valuemax="100"
|
|
4339
|
+
>
|
|
4270
4340
|
<div class="djm-progress" :style="trackStyle">
|
|
4271
4341
|
<div class="djm-progress-bar" :style="barStyle"></div>
|
|
4272
4342
|
</div>
|
|
@@ -5468,48 +5538,91 @@ var alert_default = {
|
|
|
5468
5538
|
};
|
|
5469
5539
|
|
|
5470
5540
|
// src/components/spin/index.js
|
|
5541
|
+
var import_vue7 = require("vue");
|
|
5471
5542
|
var spin_default = {
|
|
5472
5543
|
name: "DjmSpin",
|
|
5473
5544
|
props: {
|
|
5474
5545
|
spinning: { type: Boolean, default: true },
|
|
5475
|
-
size: { type: String, default: "md" },
|
|
5476
5546
|
// sm | md | lg
|
|
5477
|
-
|
|
5547
|
+
size: { type: String, default: "md" },
|
|
5548
|
+
// ring 环形 / dots 点状 / bars 柱状 / pulse 脉冲
|
|
5549
|
+
type: { type: String, default: "ring" },
|
|
5550
|
+
tip: { type: String, default: "" },
|
|
5551
|
+
// 延迟多少毫秒后显示,0 表示立即
|
|
5552
|
+
delay: { type: Number, default: 0 },
|
|
5553
|
+
// 全屏加载:遮罩铺满视口
|
|
5554
|
+
fullscreen: { type: Boolean, default: false },
|
|
5555
|
+
// 自定义指示器颜色,默认跟随品牌色
|
|
5556
|
+
color: { type: String, default: "" }
|
|
5557
|
+
},
|
|
5558
|
+
setup(props) {
|
|
5559
|
+
const visible = (0, import_vue7.ref)(false);
|
|
5560
|
+
let timer = null;
|
|
5561
|
+
function sync() {
|
|
5562
|
+
window.clearTimeout(timer);
|
|
5563
|
+
timer = null;
|
|
5564
|
+
if (!props.spinning) {
|
|
5565
|
+
visible.value = false;
|
|
5566
|
+
return;
|
|
5567
|
+
}
|
|
5568
|
+
if (props.delay > 0) {
|
|
5569
|
+
timer = window.setTimeout(() => {
|
|
5570
|
+
visible.value = true;
|
|
5571
|
+
}, props.delay);
|
|
5572
|
+
} else {
|
|
5573
|
+
visible.value = true;
|
|
5574
|
+
}
|
|
5575
|
+
}
|
|
5576
|
+
(0, import_vue7.watch)(() => [props.spinning, props.delay], sync, { immediate: true });
|
|
5577
|
+
(0, import_vue7.onBeforeUnmount)(() => window.clearTimeout(timer));
|
|
5578
|
+
return { visible };
|
|
5478
5579
|
},
|
|
5479
5580
|
computed: {
|
|
5480
|
-
// 有默认插槽即为包裹模式
|
|
5481
5581
|
wrapped() {
|
|
5482
5582
|
return !!this.$slots.default;
|
|
5583
|
+
},
|
|
5584
|
+
rootClass() {
|
|
5585
|
+
return [
|
|
5586
|
+
"djm-spin",
|
|
5587
|
+
"djm-spin-" + this.size,
|
|
5588
|
+
{
|
|
5589
|
+
"djm-spin-wrap": this.wrapped && !this.fullscreen,
|
|
5590
|
+
"djm-spin-inline": !this.wrapped && !this.fullscreen,
|
|
5591
|
+
"djm-spin-fullscreen": this.fullscreen
|
|
5592
|
+
}
|
|
5593
|
+
];
|
|
5483
5594
|
}
|
|
5484
5595
|
},
|
|
5485
5596
|
template: `
|
|
5486
5597
|
<div
|
|
5487
|
-
v-if="wrapped"
|
|
5488
|
-
class="
|
|
5489
|
-
:
|
|
5490
|
-
:
|
|
5598
|
+
v-if="fullscreen || wrapped || visible"
|
|
5599
|
+
:class="rootClass"
|
|
5600
|
+
:aria-busy="String(visible)"
|
|
5601
|
+
:role="visible ? 'status' : undefined"
|
|
5602
|
+
:aria-label="!wrapped && !fullscreen && !tip && visible ? '\u52A0\u8F7D\u4E2D' : undefined"
|
|
5491
5603
|
>
|
|
5492
|
-
<slot />
|
|
5493
|
-
<div v-if="
|
|
5494
|
-
<span class="djm-
|
|
5604
|
+
<slot v-if="wrapped && !fullscreen" />
|
|
5605
|
+
<div v-if="visible" class="djm-spin-mask">
|
|
5606
|
+
<span class="djm-spin-indicator" :class="'djm-spin-' + type" :style="color ? { color } : null">
|
|
5607
|
+
<slot name="indicator">
|
|
5608
|
+
<i v-if="type === 'ring'" class="djm-spinner"></i>
|
|
5609
|
+
<template v-else-if="type === 'dots'">
|
|
5610
|
+
<i></i><i></i><i></i>
|
|
5611
|
+
</template>
|
|
5612
|
+
<template v-else-if="type === 'bars'">
|
|
5613
|
+
<i></i><i></i><i></i><i></i>
|
|
5614
|
+
</template>
|
|
5615
|
+
<i v-else class="djm-spin-core"></i>
|
|
5616
|
+
</slot>
|
|
5617
|
+
</span>
|
|
5495
5618
|
<span v-if="tip" class="djm-spin-tip">{{ tip }}</span>
|
|
5496
5619
|
</div>
|
|
5497
5620
|
</div>
|
|
5498
|
-
<span
|
|
5499
|
-
v-else
|
|
5500
|
-
class="djm-spin-inline"
|
|
5501
|
-
:class="'djm-spin-' + size"
|
|
5502
|
-
role="status"
|
|
5503
|
-
:aria-label="tip ? undefined : '\u52A0\u8F7D\u4E2D'"
|
|
5504
|
-
>
|
|
5505
|
-
<span class="djm-spinner"></span>
|
|
5506
|
-
<span v-if="tip" class="djm-spin-tip">{{ tip }}</span>
|
|
5507
|
-
</span>
|
|
5508
5621
|
`
|
|
5509
5622
|
};
|
|
5510
5623
|
|
|
5511
5624
|
// src/components/popconfirm/index.js
|
|
5512
|
-
var
|
|
5625
|
+
var import_vue8 = require("vue");
|
|
5513
5626
|
var popconfirm_default = {
|
|
5514
5627
|
name: "DjmPopconfirm",
|
|
5515
5628
|
components: { DjmIcon: icon_default },
|
|
@@ -5525,10 +5638,10 @@ var popconfirm_default = {
|
|
|
5525
5638
|
},
|
|
5526
5639
|
emits: ["confirm", "cancel", "visible-change"],
|
|
5527
5640
|
setup(props, { emit }) {
|
|
5528
|
-
const open = (0,
|
|
5529
|
-
const root = (0,
|
|
5530
|
-
const panelEl = (0,
|
|
5531
|
-
const panelStyle = (0,
|
|
5641
|
+
const open = (0, import_vue8.ref)(false);
|
|
5642
|
+
const root = (0, import_vue8.ref)(null);
|
|
5643
|
+
const panelEl = (0, import_vue8.ref)(null);
|
|
5644
|
+
const panelStyle = (0, import_vue8.ref)({});
|
|
5532
5645
|
const PANEL_WIDTH = 244;
|
|
5533
5646
|
let detachPanel = null;
|
|
5534
5647
|
function syncTriggerA11y() {
|
|
@@ -5543,8 +5656,8 @@ var popconfirm_default = {
|
|
|
5543
5656
|
target.setAttribute("aria-haspopup", "dialog");
|
|
5544
5657
|
target.setAttribute("aria-expanded", String(open.value));
|
|
5545
5658
|
}
|
|
5546
|
-
(0,
|
|
5547
|
-
(0,
|
|
5659
|
+
(0, import_vue8.onMounted)(() => (0, import_vue8.nextTick)(syncTriggerA11y));
|
|
5660
|
+
(0, import_vue8.watch)(open, () => (0, import_vue8.nextTick)(syncTriggerA11y));
|
|
5548
5661
|
function updatePosition() {
|
|
5549
5662
|
if (!open.value || !root.value) return;
|
|
5550
5663
|
const rect = root.value.getBoundingClientRect();
|
|
@@ -5567,7 +5680,7 @@ var popconfirm_default = {
|
|
|
5567
5680
|
onReposition: updatePosition
|
|
5568
5681
|
});
|
|
5569
5682
|
requestAnimationFrame(updatePosition);
|
|
5570
|
-
(0,
|
|
5683
|
+
(0, import_vue8.nextTick)(() => {
|
|
5571
5684
|
const first = panelEl.value && panelEl.value.querySelector("button");
|
|
5572
5685
|
if (first) first.focus();
|
|
5573
5686
|
});
|
|
@@ -5583,7 +5696,7 @@ var popconfirm_default = {
|
|
|
5583
5696
|
detachPanel = null;
|
|
5584
5697
|
}
|
|
5585
5698
|
if (hadFocus) {
|
|
5586
|
-
(0,
|
|
5699
|
+
(0, import_vue8.nextTick)(() => {
|
|
5587
5700
|
const wrapper = root.value && root.value.querySelector(".djm-popconfirm-trigger");
|
|
5588
5701
|
const target = wrapper && (wrapper.querySelector('button, a[href], [role="button"]') || wrapper);
|
|
5589
5702
|
if (target) target.focus();
|
|
@@ -5603,7 +5716,7 @@ var popconfirm_default = {
|
|
|
5603
5716
|
emit("cancel");
|
|
5604
5717
|
close2();
|
|
5605
5718
|
}
|
|
5606
|
-
(0,
|
|
5719
|
+
(0, import_vue8.onBeforeUnmount)(close2);
|
|
5607
5720
|
return { open, root, panelEl, panelStyle, toggle, close: close2, confirm, cancel };
|
|
5608
5721
|
},
|
|
5609
5722
|
template: `
|
|
@@ -5647,7 +5760,7 @@ var popconfirm_default = {
|
|
|
5647
5760
|
};
|
|
5648
5761
|
|
|
5649
5762
|
// src/components/anchor/index.js
|
|
5650
|
-
var
|
|
5763
|
+
var import_vue9 = require("vue");
|
|
5651
5764
|
var anchor_default = {
|
|
5652
5765
|
name: "DjmAnchor",
|
|
5653
5766
|
props: {
|
|
@@ -5660,8 +5773,8 @@ var anchor_default = {
|
|
|
5660
5773
|
},
|
|
5661
5774
|
emits: ["change"],
|
|
5662
5775
|
setup(props, { emit }) {
|
|
5663
|
-
const root = (0,
|
|
5664
|
-
const activeKey = (0,
|
|
5776
|
+
const root = (0, import_vue9.ref)(null);
|
|
5777
|
+
const activeKey = (0, import_vue9.ref)("");
|
|
5665
5778
|
let scrollEl = null;
|
|
5666
5779
|
let target = null;
|
|
5667
5780
|
function resolveContainer() {
|
|
@@ -5715,9 +5828,9 @@ var anchor_default = {
|
|
|
5715
5828
|
activeKey.value = item.href;
|
|
5716
5829
|
emit("change", item.href);
|
|
5717
5830
|
}
|
|
5718
|
-
(0,
|
|
5719
|
-
(0,
|
|
5720
|
-
(0,
|
|
5831
|
+
(0, import_vue9.onMounted)(bind);
|
|
5832
|
+
(0, import_vue9.watch)(() => props.container, bind);
|
|
5833
|
+
(0, import_vue9.onBeforeUnmount)(unbind);
|
|
5721
5834
|
return { root, activeKey, go };
|
|
5722
5835
|
},
|
|
5723
5836
|
template: `
|
|
@@ -5739,7 +5852,7 @@ var anchor_default = {
|
|
|
5739
5852
|
};
|
|
5740
5853
|
|
|
5741
5854
|
// src/components/backtop/index.js
|
|
5742
|
-
var
|
|
5855
|
+
var import_vue10 = require("vue");
|
|
5743
5856
|
var backtop_default = {
|
|
5744
5857
|
name: "DjmBacktop",
|
|
5745
5858
|
components: { DjmIcon: icon_default },
|
|
@@ -5752,8 +5865,8 @@ var backtop_default = {
|
|
|
5752
5865
|
},
|
|
5753
5866
|
emits: ["click"],
|
|
5754
5867
|
setup(props, { emit }) {
|
|
5755
|
-
const visible = (0,
|
|
5756
|
-
const root = (0,
|
|
5868
|
+
const visible = (0, import_vue10.ref)(false);
|
|
5869
|
+
const root = (0, import_vue10.ref)(null);
|
|
5757
5870
|
let target = null;
|
|
5758
5871
|
let scrollEl = null;
|
|
5759
5872
|
function resolveContainer() {
|
|
@@ -5786,8 +5899,8 @@ var backtop_default = {
|
|
|
5786
5899
|
else target.scrollTo({ top: 0, behavior });
|
|
5787
5900
|
emit("click");
|
|
5788
5901
|
}
|
|
5789
|
-
(0,
|
|
5790
|
-
(0,
|
|
5902
|
+
(0, import_vue10.onMounted)(bind);
|
|
5903
|
+
(0, import_vue10.onBeforeUnmount)(unbind);
|
|
5791
5904
|
return { visible, root, toTop };
|
|
5792
5905
|
},
|
|
5793
5906
|
template: `
|
|
@@ -5864,7 +5977,7 @@ var space_default = {
|
|
|
5864
5977
|
};
|
|
5865
5978
|
|
|
5866
5979
|
// src/components/affix/index.js
|
|
5867
|
-
var
|
|
5980
|
+
var import_vue11 = require("vue");
|
|
5868
5981
|
var affix_default = {
|
|
5869
5982
|
name: "DjmAffix",
|
|
5870
5983
|
props: {
|
|
@@ -5875,10 +5988,10 @@ var affix_default = {
|
|
|
5875
5988
|
zIndex: { type: Number, default: 900 }
|
|
5876
5989
|
},
|
|
5877
5990
|
setup(props) {
|
|
5878
|
-
const root = (0,
|
|
5879
|
-
const fixed = (0,
|
|
5880
|
-
const affixStyle = (0,
|
|
5881
|
-
const holderStyle = (0,
|
|
5991
|
+
const root = (0, import_vue11.ref)(null);
|
|
5992
|
+
const fixed = (0, import_vue11.ref)(false);
|
|
5993
|
+
const affixStyle = (0, import_vue11.ref)({});
|
|
5994
|
+
const holderStyle = (0, import_vue11.ref)({});
|
|
5882
5995
|
let target = null;
|
|
5883
5996
|
let scrollEl = null;
|
|
5884
5997
|
function resolveContainer() {
|
|
@@ -5933,8 +6046,8 @@ var affix_default = {
|
|
|
5933
6046
|
scrollEl = null;
|
|
5934
6047
|
target = null;
|
|
5935
6048
|
}
|
|
5936
|
-
(0,
|
|
5937
|
-
(0,
|
|
6049
|
+
(0, import_vue11.onMounted)(bind);
|
|
6050
|
+
(0, import_vue11.onBeforeUnmount)(unbind);
|
|
5938
6051
|
return { root, fixed, affixStyle, holderStyle };
|
|
5939
6052
|
},
|
|
5940
6053
|
template: `
|
|
@@ -5985,7 +6098,7 @@ var segmented_default = {
|
|
|
5985
6098
|
};
|
|
5986
6099
|
|
|
5987
6100
|
// src/components/image/index.js
|
|
5988
|
-
var
|
|
6101
|
+
var import_vue12 = require("vue");
|
|
5989
6102
|
|
|
5990
6103
|
// src/utils/scroll-lock.js
|
|
5991
6104
|
var count = 0;
|
|
@@ -6032,11 +6145,11 @@ var image_default = {
|
|
|
6032
6145
|
preview: { type: Boolean, default: true }
|
|
6033
6146
|
},
|
|
6034
6147
|
setup(props) {
|
|
6035
|
-
const failed = (0,
|
|
6036
|
-
const open = (0,
|
|
6037
|
-
const zoomRef = (0,
|
|
6038
|
-
const closeRef = (0,
|
|
6039
|
-
(0,
|
|
6148
|
+
const failed = (0, import_vue12.ref)(false);
|
|
6149
|
+
const open = (0, import_vue12.ref)(false);
|
|
6150
|
+
const zoomRef = (0, import_vue12.ref)(null);
|
|
6151
|
+
const closeRef = (0, import_vue12.ref)(null);
|
|
6152
|
+
(0, import_vue12.watch)(() => props.src, () => {
|
|
6040
6153
|
failed.value = false;
|
|
6041
6154
|
});
|
|
6042
6155
|
function toSize(value) {
|
|
@@ -6050,7 +6163,7 @@ var image_default = {
|
|
|
6050
6163
|
open.value = true;
|
|
6051
6164
|
lockScroll();
|
|
6052
6165
|
document.addEventListener("keydown", onKeydown);
|
|
6053
|
-
await (0,
|
|
6166
|
+
await (0, import_vue12.nextTick)();
|
|
6054
6167
|
if (closeRef.value) closeRef.value.focus();
|
|
6055
6168
|
}
|
|
6056
6169
|
function closePreview() {
|
|
@@ -6060,7 +6173,7 @@ var image_default = {
|
|
|
6060
6173
|
document.removeEventListener("keydown", onKeydown);
|
|
6061
6174
|
if (zoomRef.value) zoomRef.value.focus();
|
|
6062
6175
|
}
|
|
6063
|
-
(0,
|
|
6176
|
+
(0, import_vue12.onBeforeUnmount)(closePreview);
|
|
6064
6177
|
return { failed, open, zoomRef, closeRef, toSize, openPreview, closePreview, t };
|
|
6065
6178
|
},
|
|
6066
6179
|
template: `
|
|
@@ -6115,13 +6228,15 @@ var image_default = {
|
|
|
6115
6228
|
};
|
|
6116
6229
|
|
|
6117
6230
|
// src/components/watermark/index.js
|
|
6118
|
-
var
|
|
6231
|
+
var import_vue14 = require("vue");
|
|
6119
6232
|
|
|
6120
6233
|
// src/theme/index.js
|
|
6121
|
-
var
|
|
6234
|
+
var import_vue13 = require("vue");
|
|
6122
6235
|
var KEY = "djm-theme";
|
|
6123
6236
|
var COLOR_KEY = "djm-primary";
|
|
6124
|
-
var
|
|
6237
|
+
var GLASS_KEY = "djm-glass";
|
|
6238
|
+
var theme = (0, import_vue13.ref)("light");
|
|
6239
|
+
var glass = (0, import_vue13.ref)(false);
|
|
6125
6240
|
var PRESET_COLORS = [
|
|
6126
6241
|
{ name: "\u9ED8\u8BA4\u84DD", value: "#1a6fc4" },
|
|
6127
6242
|
{ name: "\u79D1\u6280\u84DD", value: "#2563eb" },
|
|
@@ -6132,7 +6247,7 @@ var PRESET_COLORS = [
|
|
|
6132
6247
|
{ name: "\u6731\u7802\u7EA2", value: "#c0392b" },
|
|
6133
6248
|
{ name: "\u77F3\u58A8\u7070", value: "#4b5b6b" }
|
|
6134
6249
|
];
|
|
6135
|
-
var primaryColor = (0,
|
|
6250
|
+
var primaryColor = (0, import_vue13.ref)("");
|
|
6136
6251
|
var BRAND_VARS = [
|
|
6137
6252
|
"--djm-brand-50",
|
|
6138
6253
|
"--djm-brand-100",
|
|
@@ -6254,6 +6369,15 @@ function setTheme(name) {
|
|
|
6254
6369
|
function toggleTheme() {
|
|
6255
6370
|
setTheme(theme.value === "dark" ? "light" : "dark");
|
|
6256
6371
|
}
|
|
6372
|
+
function setGlass(enabled) {
|
|
6373
|
+
glass.value = !!enabled;
|
|
6374
|
+
document.documentElement.dataset.djmGlass = glass.value ? "on" : "";
|
|
6375
|
+
try {
|
|
6376
|
+
if (glass.value) localStorage.setItem(GLASS_KEY, "1");
|
|
6377
|
+
else localStorage.removeItem(GLASS_KEY);
|
|
6378
|
+
} catch (error) {
|
|
6379
|
+
}
|
|
6380
|
+
}
|
|
6257
6381
|
function initTheme() {
|
|
6258
6382
|
let saved = "";
|
|
6259
6383
|
try {
|
|
@@ -6273,9 +6397,16 @@ function initTheme() {
|
|
|
6273
6397
|
} catch (error) {
|
|
6274
6398
|
color = "";
|
|
6275
6399
|
}
|
|
6400
|
+
let glassSaved = false;
|
|
6401
|
+
try {
|
|
6402
|
+
glassSaved = localStorage.getItem(GLASS_KEY) === "1";
|
|
6403
|
+
} catch (error) {
|
|
6404
|
+
glassSaved = false;
|
|
6405
|
+
}
|
|
6276
6406
|
if (color) primaryColor.value = color;
|
|
6277
6407
|
const next = param === "dark" || param === "light" ? param : saved || "light";
|
|
6278
6408
|
setTheme(next);
|
|
6409
|
+
setGlass(glassSaved);
|
|
6279
6410
|
}
|
|
6280
6411
|
|
|
6281
6412
|
// src/components/watermark/index.js
|
|
@@ -6291,7 +6422,7 @@ var watermark_default = {
|
|
|
6291
6422
|
zIndex: { type: Number, default: 10 }
|
|
6292
6423
|
},
|
|
6293
6424
|
setup(props) {
|
|
6294
|
-
const dataUrl = (0,
|
|
6425
|
+
const dataUrl = (0, import_vue14.ref)("");
|
|
6295
6426
|
let canvasEl = null;
|
|
6296
6427
|
function build() {
|
|
6297
6428
|
const lines = (Array.isArray(props.content) ? props.content : [props.content]).filter(Boolean);
|
|
@@ -6328,13 +6459,13 @@ var watermark_default = {
|
|
|
6328
6459
|
});
|
|
6329
6460
|
dataUrl.value = canvasEl.toDataURL("image/png");
|
|
6330
6461
|
}
|
|
6331
|
-
const layerStyle = (0,
|
|
6462
|
+
const layerStyle = (0, import_vue14.computed)(() => ({
|
|
6332
6463
|
backgroundImage: dataUrl.value ? "url(" + dataUrl.value + ")" : "none",
|
|
6333
6464
|
zIndex: props.zIndex
|
|
6334
6465
|
}));
|
|
6335
|
-
(0,
|
|
6336
|
-
(0,
|
|
6337
|
-
(0,
|
|
6466
|
+
(0, import_vue14.onMounted)(build);
|
|
6467
|
+
(0, import_vue14.watch)(() => [props.content, props.gap, props.fontSize, props.color, props.rotate, theme.value], build, { deep: true });
|
|
6468
|
+
(0, import_vue14.onBeforeUnmount)(() => {
|
|
6338
6469
|
canvasEl = null;
|
|
6339
6470
|
});
|
|
6340
6471
|
return { layerStyle };
|
|
@@ -6524,7 +6655,7 @@ var autocomplete_default = {
|
|
|
6524
6655
|
};
|
|
6525
6656
|
|
|
6526
6657
|
// src/components/splitter/index.js
|
|
6527
|
-
var
|
|
6658
|
+
var import_vue15 = require("vue");
|
|
6528
6659
|
var splitter_default = {
|
|
6529
6660
|
name: "DjmSplitter",
|
|
6530
6661
|
props: {
|
|
@@ -6537,9 +6668,9 @@ var splitter_default = {
|
|
|
6537
6668
|
},
|
|
6538
6669
|
emits: ["update:modelValue", "change"],
|
|
6539
6670
|
setup(props, { emit }) {
|
|
6540
|
-
const root = (0,
|
|
6541
|
-
const dragging = (0,
|
|
6542
|
-
const ratio = (0,
|
|
6671
|
+
const root = (0, import_vue15.ref)(null);
|
|
6672
|
+
const dragging = (0, import_vue15.ref)(false);
|
|
6673
|
+
const ratio = (0, import_vue15.computed)(() => {
|
|
6543
6674
|
const value = Number(props.modelValue);
|
|
6544
6675
|
const safe = Number.isFinite(value) ? value : 50;
|
|
6545
6676
|
return Math.min(props.max, Math.max(props.min, safe));
|
|
@@ -6583,7 +6714,7 @@ var splitter_default = {
|
|
|
6583
6714
|
commit(ratio.value + step);
|
|
6584
6715
|
}
|
|
6585
6716
|
}
|
|
6586
|
-
(0,
|
|
6717
|
+
(0, import_vue15.onBeforeUnmount)(stopDrag);
|
|
6587
6718
|
return { root, dragging, ratio, startDrag, onKeydown };
|
|
6588
6719
|
},
|
|
6589
6720
|
template: `
|
|
@@ -6620,7 +6751,7 @@ var splitter_default = {
|
|
|
6620
6751
|
};
|
|
6621
6752
|
|
|
6622
6753
|
// src/components/carousel/index.js
|
|
6623
|
-
var
|
|
6754
|
+
var import_vue16 = require("vue");
|
|
6624
6755
|
var carousel_default = {
|
|
6625
6756
|
name: "DjmCarousel",
|
|
6626
6757
|
components: { DjmIcon: icon_default },
|
|
@@ -6634,7 +6765,7 @@ var carousel_default = {
|
|
|
6634
6765
|
},
|
|
6635
6766
|
emits: ["change"],
|
|
6636
6767
|
setup(props, { emit }) {
|
|
6637
|
-
const index = (0,
|
|
6768
|
+
const index = (0, import_vue16.ref)(0);
|
|
6638
6769
|
let timer = null;
|
|
6639
6770
|
const boxStyle = () => ({
|
|
6640
6771
|
height: typeof props.height === "number" ? props.height + "px" : props.height
|
|
@@ -6671,15 +6802,15 @@ var carousel_default = {
|
|
|
6671
6802
|
next();
|
|
6672
6803
|
}
|
|
6673
6804
|
}
|
|
6674
|
-
(0,
|
|
6675
|
-
(0,
|
|
6805
|
+
(0, import_vue16.onMounted)(start);
|
|
6806
|
+
(0, import_vue16.watch)(() => [props.autoplay, props.interval, props.items.length], start);
|
|
6676
6807
|
function pause() {
|
|
6677
6808
|
if (props.autoplay) stop();
|
|
6678
6809
|
}
|
|
6679
6810
|
function resume() {
|
|
6680
6811
|
if (props.autoplay) start();
|
|
6681
6812
|
}
|
|
6682
|
-
(0,
|
|
6813
|
+
(0, import_vue16.onBeforeUnmount)(stop);
|
|
6683
6814
|
return { index, boxStyle, go, next, prev, onKeydown, pause, resume };
|
|
6684
6815
|
},
|
|
6685
6816
|
template: `
|
|
@@ -6739,7 +6870,7 @@ var carousel_default = {
|
|
|
6739
6870
|
};
|
|
6740
6871
|
|
|
6741
6872
|
// src/components/tour/index.js
|
|
6742
|
-
var
|
|
6873
|
+
var import_vue17 = require("vue");
|
|
6743
6874
|
var tour_default = {
|
|
6744
6875
|
name: "DjmTour",
|
|
6745
6876
|
components: { DjmIcon: icon_default },
|
|
@@ -6751,11 +6882,11 @@ var tour_default = {
|
|
|
6751
6882
|
},
|
|
6752
6883
|
emits: ["update:modelValue", "change", "finish"],
|
|
6753
6884
|
setup(props, { emit }) {
|
|
6754
|
-
const current = (0,
|
|
6755
|
-
const highlight = (0,
|
|
6756
|
-
const cardStyle = (0,
|
|
6757
|
-
const card = (0,
|
|
6758
|
-
const step = (0,
|
|
6885
|
+
const current = (0, import_vue17.ref)(0);
|
|
6886
|
+
const highlight = (0, import_vue17.ref)({ top: "0px", left: "0px", width: "0px", height: "0px" });
|
|
6887
|
+
const cardStyle = (0, import_vue17.ref)({ position: "fixed", left: "0px", top: "0px", visibility: "hidden" });
|
|
6888
|
+
const card = (0, import_vue17.ref)(null);
|
|
6889
|
+
const step = (0, import_vue17.computed)(() => props.steps[current.value] || null);
|
|
6759
6890
|
function update() {
|
|
6760
6891
|
const scene = step.value;
|
|
6761
6892
|
if (!scene) return;
|
|
@@ -6785,7 +6916,7 @@ var tour_default = {
|
|
|
6785
6916
|
document.addEventListener("keydown", onKeydown);
|
|
6786
6917
|
window.addEventListener("resize", update);
|
|
6787
6918
|
window.addEventListener("scroll", update, true);
|
|
6788
|
-
(0,
|
|
6919
|
+
(0, import_vue17.nextTick)(() => {
|
|
6789
6920
|
update();
|
|
6790
6921
|
if (card.value) card.value.focus({ preventScroll: true });
|
|
6791
6922
|
});
|
|
@@ -6807,22 +6938,22 @@ var tour_default = {
|
|
|
6807
6938
|
}
|
|
6808
6939
|
current.value += 1;
|
|
6809
6940
|
emit("change", current.value);
|
|
6810
|
-
(0,
|
|
6941
|
+
(0, import_vue17.nextTick)(update);
|
|
6811
6942
|
}
|
|
6812
6943
|
function prev() {
|
|
6813
6944
|
if (current.value === 0) return;
|
|
6814
6945
|
current.value -= 1;
|
|
6815
6946
|
emit("change", current.value);
|
|
6816
|
-
(0,
|
|
6947
|
+
(0, import_vue17.nextTick)(update);
|
|
6817
6948
|
}
|
|
6818
|
-
(0,
|
|
6949
|
+
(0, import_vue17.watch)(() => props.modelValue, (value) => {
|
|
6819
6950
|
if (value) startScene();
|
|
6820
6951
|
else stopScene();
|
|
6821
6952
|
});
|
|
6822
|
-
(0,
|
|
6953
|
+
(0, import_vue17.onMounted)(() => {
|
|
6823
6954
|
if (props.modelValue) startScene();
|
|
6824
6955
|
});
|
|
6825
|
-
(0,
|
|
6956
|
+
(0, import_vue17.onBeforeUnmount)(stopScene);
|
|
6826
6957
|
return { current, step, highlight, cardStyle, card, close: close2, next, prev, t };
|
|
6827
6958
|
},
|
|
6828
6959
|
template: `
|
|
@@ -6860,7 +6991,7 @@ var tour_default = {
|
|
|
6860
6991
|
};
|
|
6861
6992
|
|
|
6862
6993
|
// src/components/calendar/index.js
|
|
6863
|
-
var
|
|
6994
|
+
var import_vue18 = require("vue");
|
|
6864
6995
|
function pad2(num) {
|
|
6865
6996
|
return String(num).padStart(2, "0");
|
|
6866
6997
|
}
|
|
@@ -6890,16 +7021,16 @@ var calendar_default = {
|
|
|
6890
7021
|
const today = /* @__PURE__ */ new Date();
|
|
6891
7022
|
const todayKey = toKey(today.getFullYear(), today.getMonth(), today.getDate());
|
|
6892
7023
|
const initial = parse(props.modelValue);
|
|
6893
|
-
const viewYear = (0,
|
|
6894
|
-
const viewMonth = (0,
|
|
6895
|
-
const weekNames = (0,
|
|
7024
|
+
const viewYear = (0, import_vue18.ref)(initial ? initial.year : today.getFullYear());
|
|
7025
|
+
const viewMonth = (0, import_vue18.ref)(initial ? initial.month : today.getMonth());
|
|
7026
|
+
const weekNames = (0, import_vue18.computed)(() => {
|
|
6896
7027
|
const base = ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"];
|
|
6897
7028
|
return base.slice(props.firstDay).concat(base.slice(0, props.firstDay));
|
|
6898
7029
|
});
|
|
6899
|
-
const markSet = (0,
|
|
7030
|
+
const markSet = (0, import_vue18.computed)(() => new Set(
|
|
6900
7031
|
props.marks.map((item) => typeof item === "string" ? item : item.date).filter(Boolean)
|
|
6901
7032
|
));
|
|
6902
|
-
const cells = (0,
|
|
7033
|
+
const cells = (0, import_vue18.computed)(() => {
|
|
6903
7034
|
const first = new Date(viewYear.value, viewMonth.value, 1);
|
|
6904
7035
|
const offset = (first.getDay() - props.firstDay + 7) % 7;
|
|
6905
7036
|
const start = new Date(viewYear.value, viewMonth.value, 1 - offset);
|
|
@@ -6914,7 +7045,7 @@ var calendar_default = {
|
|
|
6914
7045
|
}
|
|
6915
7046
|
return list;
|
|
6916
7047
|
});
|
|
6917
|
-
const weeks = (0,
|
|
7048
|
+
const weeks = (0, import_vue18.computed)(() => {
|
|
6918
7049
|
const list = cells.value;
|
|
6919
7050
|
return Array.from({ length: 6 }, (_, index) => list.slice(index * 7, index * 7 + 7));
|
|
6920
7051
|
});
|
|
@@ -6957,7 +7088,7 @@ var calendar_default = {
|
|
|
6957
7088
|
event.preventDefault();
|
|
6958
7089
|
list[next].focus();
|
|
6959
7090
|
}
|
|
6960
|
-
(0,
|
|
7091
|
+
(0, import_vue18.watch)(() => props.modelValue, (value) => {
|
|
6961
7092
|
const parts = parse(value);
|
|
6962
7093
|
if (parts && (parts.year !== viewYear.value || parts.month !== viewMonth.value)) {
|
|
6963
7094
|
viewYear.value = parts.year;
|
|
@@ -7011,7 +7142,7 @@ var calendar_default = {
|
|
|
7011
7142
|
};
|
|
7012
7143
|
|
|
7013
7144
|
// src/components/float-button/index.js
|
|
7014
|
-
var
|
|
7145
|
+
var import_vue19 = require("vue");
|
|
7015
7146
|
var float_button_default = {
|
|
7016
7147
|
name: "DjmFloatButton",
|
|
7017
7148
|
components: { DjmIcon: icon_default },
|
|
@@ -7027,7 +7158,7 @@ var float_button_default = {
|
|
|
7027
7158
|
},
|
|
7028
7159
|
emits: ["click", "select"],
|
|
7029
7160
|
setup(props, { emit }) {
|
|
7030
|
-
const open = (0,
|
|
7161
|
+
const open = (0, import_vue19.ref)(false);
|
|
7031
7162
|
function onKeydown(event) {
|
|
7032
7163
|
if (event.key === "Escape") close2();
|
|
7033
7164
|
}
|
|
@@ -7062,7 +7193,7 @@ var float_button_default = {
|
|
|
7062
7193
|
emit("select", item);
|
|
7063
7194
|
if (typeof item.onClick === "function") item.onClick(item);
|
|
7064
7195
|
}
|
|
7065
|
-
(0,
|
|
7196
|
+
(0, import_vue19.onBeforeUnmount)(close2);
|
|
7066
7197
|
return { open, onMainClick, choose };
|
|
7067
7198
|
},
|
|
7068
7199
|
template: `
|
|
@@ -7097,7 +7228,7 @@ var float_button_default = {
|
|
|
7097
7228
|
};
|
|
7098
7229
|
|
|
7099
7230
|
// src/components/mentions/index.js
|
|
7100
|
-
var
|
|
7231
|
+
var import_vue20 = require("vue");
|
|
7101
7232
|
var uidSeed3 = 0;
|
|
7102
7233
|
var mentions_default = {
|
|
7103
7234
|
name: "DjmMentions",
|
|
@@ -7112,26 +7243,26 @@ var mentions_default = {
|
|
|
7112
7243
|
},
|
|
7113
7244
|
emits: ["update:modelValue", "input", "select"],
|
|
7114
7245
|
setup(props, { emit }) {
|
|
7115
|
-
const root = (0,
|
|
7116
|
-
const input = (0,
|
|
7117
|
-
const text = (0,
|
|
7118
|
-
const open = (0,
|
|
7119
|
-
const keyword = (0,
|
|
7120
|
-
const activeIndex = (0,
|
|
7246
|
+
const root = (0, import_vue20.ref)(null);
|
|
7247
|
+
const input = (0, import_vue20.ref)(null);
|
|
7248
|
+
const text = (0, import_vue20.ref)(props.modelValue);
|
|
7249
|
+
const open = (0, import_vue20.ref)(false);
|
|
7250
|
+
const keyword = (0, import_vue20.ref)("");
|
|
7251
|
+
const activeIndex = (0, import_vue20.ref)(-1);
|
|
7121
7252
|
const listId = "djm-mentions-" + ++uidSeed3;
|
|
7122
|
-
const panelStyle = (0,
|
|
7253
|
+
const panelStyle = (0, import_vue20.ref)({ ...PANEL_HIDDEN_STYLE });
|
|
7123
7254
|
let triggerIndex = -1;
|
|
7124
7255
|
let detachPanel = null;
|
|
7125
|
-
(0,
|
|
7256
|
+
(0, import_vue20.watch)(() => props.modelValue, (value) => {
|
|
7126
7257
|
text.value = value;
|
|
7127
7258
|
});
|
|
7128
|
-
const normalized = (0,
|
|
7129
|
-
const filtered = (0,
|
|
7259
|
+
const normalized = (0, import_vue20.computed)(() => props.options.map((item) => typeof item === "string" ? { value: item, label: item } : item));
|
|
7260
|
+
const filtered = (0, import_vue20.computed)(() => {
|
|
7130
7261
|
const key = keyword.value.trim().toLowerCase();
|
|
7131
7262
|
const list = key ? normalized.value.filter((item) => String(item.label).toLowerCase().indexOf(key) > -1) : normalized.value;
|
|
7132
7263
|
return list.slice(0, 6);
|
|
7133
7264
|
});
|
|
7134
|
-
const activeId = (0,
|
|
7265
|
+
const activeId = (0, import_vue20.computed)(() => activeIndex.value > -1 ? listId + "-" + activeIndex.value : void 0);
|
|
7135
7266
|
function updatePosition() {
|
|
7136
7267
|
if (!open.value || !root.value) return;
|
|
7137
7268
|
const rect = root.value.getBoundingClientRect();
|
|
@@ -7151,7 +7282,7 @@ var mentions_default = {
|
|
|
7151
7282
|
onReposition: updatePosition,
|
|
7152
7283
|
esc: false
|
|
7153
7284
|
});
|
|
7154
|
-
(0,
|
|
7285
|
+
(0, import_vue20.nextTick)(updatePosition);
|
|
7155
7286
|
}
|
|
7156
7287
|
function closePanel() {
|
|
7157
7288
|
if (!open.value) return;
|
|
@@ -7178,7 +7309,7 @@ var mentions_default = {
|
|
|
7178
7309
|
keyword.value = match[1];
|
|
7179
7310
|
activeIndex.value = -1;
|
|
7180
7311
|
if (!open.value) openPanel();
|
|
7181
|
-
else (0,
|
|
7312
|
+
else (0, import_vue20.nextTick)(updatePosition);
|
|
7182
7313
|
}
|
|
7183
7314
|
function onKeydown(event) {
|
|
7184
7315
|
if (!open.value) return;
|
|
@@ -7208,14 +7339,14 @@ var mentions_default = {
|
|
|
7208
7339
|
emit("update:modelValue", next);
|
|
7209
7340
|
emit("select", item);
|
|
7210
7341
|
closePanel();
|
|
7211
|
-
(0,
|
|
7342
|
+
(0, import_vue20.nextTick)(() => {
|
|
7212
7343
|
if (!input.value) return;
|
|
7213
7344
|
const pos = triggerIndex + item.label.length + 2;
|
|
7214
7345
|
input.value.focus();
|
|
7215
7346
|
input.value.setSelectionRange(pos, pos);
|
|
7216
7347
|
});
|
|
7217
7348
|
}
|
|
7218
|
-
(0,
|
|
7349
|
+
(0, import_vue20.onBeforeUnmount)(closePanel);
|
|
7219
7350
|
return {
|
|
7220
7351
|
root,
|
|
7221
7352
|
input,
|
|
@@ -7489,7 +7620,7 @@ var input_tag_default = {
|
|
|
7489
7620
|
};
|
|
7490
7621
|
|
|
7491
7622
|
// src/components/password/index.js
|
|
7492
|
-
var
|
|
7623
|
+
var import_vue21 = require("vue");
|
|
7493
7624
|
var password_default = {
|
|
7494
7625
|
name: "DjmPassword",
|
|
7495
7626
|
components: { DjmIcon: icon_default },
|
|
@@ -7503,8 +7634,8 @@ var password_default = {
|
|
|
7503
7634
|
},
|
|
7504
7635
|
emits: ["update:modelValue", "input", "change", "enter", "focus", "blur"],
|
|
7505
7636
|
setup(props, { emit }) {
|
|
7506
|
-
const visible = (0,
|
|
7507
|
-
const score = (0,
|
|
7637
|
+
const visible = (0, import_vue21.ref)(false);
|
|
7638
|
+
const score = (0, import_vue21.computed)(() => {
|
|
7508
7639
|
const value = props.modelValue || "";
|
|
7509
7640
|
if (!value) return 0;
|
|
7510
7641
|
let total = 0;
|
|
@@ -7514,12 +7645,12 @@ var password_default = {
|
|
|
7514
7645
|
if (/[^a-zA-Z\d]/.test(value)) total += 1;
|
|
7515
7646
|
return total;
|
|
7516
7647
|
});
|
|
7517
|
-
const level = (0,
|
|
7648
|
+
const level = (0, import_vue21.computed)(() => {
|
|
7518
7649
|
if (score.value <= 1) return 1;
|
|
7519
7650
|
if (score.value <= 3) return 2;
|
|
7520
7651
|
return 3;
|
|
7521
7652
|
});
|
|
7522
|
-
const label = (0,
|
|
7653
|
+
const label = (0, import_vue21.computed)(() => {
|
|
7523
7654
|
const key = ["", "password.weak", "password.medium", "password.strong"][level.value];
|
|
7524
7655
|
return t(key);
|
|
7525
7656
|
});
|
|
@@ -7569,7 +7700,7 @@ var password_default = {
|
|
|
7569
7700
|
};
|
|
7570
7701
|
|
|
7571
7702
|
// src/components/command-palette/index.js
|
|
7572
|
-
var
|
|
7703
|
+
var import_vue22 = require("vue");
|
|
7573
7704
|
|
|
7574
7705
|
// src/utils/focus-trap.js
|
|
7575
7706
|
var FOCUSABLE = [
|
|
@@ -7622,14 +7753,14 @@ var command_palette_default = {
|
|
|
7622
7753
|
},
|
|
7623
7754
|
emits: ["update:modelValue", "run"],
|
|
7624
7755
|
setup(props, { emit }) {
|
|
7625
|
-
const open = (0,
|
|
7626
|
-
const keyword = (0,
|
|
7627
|
-
const activeIndex = (0,
|
|
7628
|
-
const searchInput = (0,
|
|
7629
|
-
const panelEl = (0,
|
|
7756
|
+
const open = (0, import_vue22.ref)(false);
|
|
7757
|
+
const keyword = (0, import_vue22.ref)("");
|
|
7758
|
+
const activeIndex = (0, import_vue22.ref)(-1);
|
|
7759
|
+
const searchInput = (0, import_vue22.ref)(null);
|
|
7760
|
+
const panelEl = (0, import_vue22.ref)(null);
|
|
7630
7761
|
const listId = "djm-command-list-" + ++uidSeed4;
|
|
7631
7762
|
let releaseTrap = null;
|
|
7632
|
-
const filtered = (0,
|
|
7763
|
+
const filtered = (0, import_vue22.computed)(() => {
|
|
7633
7764
|
const key = keyword.value.trim().toLowerCase();
|
|
7634
7765
|
if (!key) return props.commands;
|
|
7635
7766
|
return props.commands.filter((item) => {
|
|
@@ -7637,7 +7768,7 @@ var command_palette_default = {
|
|
|
7637
7768
|
return text.indexOf(key) > -1;
|
|
7638
7769
|
});
|
|
7639
7770
|
});
|
|
7640
|
-
const activeId = (0,
|
|
7771
|
+
const activeId = (0, import_vue22.computed)(() => activeIndex.value > -1 ? listId + "-" + activeIndex.value : void 0);
|
|
7641
7772
|
function show() {
|
|
7642
7773
|
if (open.value) return;
|
|
7643
7774
|
open.value = true;
|
|
@@ -7646,7 +7777,7 @@ var command_palette_default = {
|
|
|
7646
7777
|
emit("update:modelValue", true);
|
|
7647
7778
|
lockScroll();
|
|
7648
7779
|
document.addEventListener("keydown", onDocumentKeydown);
|
|
7649
|
-
(0,
|
|
7780
|
+
(0, import_vue22.nextTick)(() => {
|
|
7650
7781
|
releaseTrap = trapFocus(panelEl.value);
|
|
7651
7782
|
if (searchInput.value) searchInput.value.focus();
|
|
7652
7783
|
});
|
|
@@ -7709,12 +7840,12 @@ var command_palette_default = {
|
|
|
7709
7840
|
if (typeof item.run === "function") item.run(item);
|
|
7710
7841
|
hide();
|
|
7711
7842
|
}
|
|
7712
|
-
(0,
|
|
7843
|
+
(0, import_vue22.watch)(() => props.modelValue, (value) => {
|
|
7713
7844
|
if (value) show();
|
|
7714
7845
|
else hide();
|
|
7715
7846
|
});
|
|
7716
|
-
(0,
|
|
7717
|
-
(0,
|
|
7847
|
+
(0, import_vue22.onMounted)(() => window.addEventListener("keydown", onGlobalKeydown));
|
|
7848
|
+
(0, import_vue22.onBeforeUnmount)(() => {
|
|
7718
7849
|
window.removeEventListener("keydown", onGlobalKeydown);
|
|
7719
7850
|
hide();
|
|
7720
7851
|
});
|
|
@@ -7766,7 +7897,7 @@ var command_palette_default = {
|
|
|
7766
7897
|
};
|
|
7767
7898
|
|
|
7768
7899
|
// src/components/qrcode/index.js
|
|
7769
|
-
var
|
|
7900
|
+
var import_vue23 = require("vue");
|
|
7770
7901
|
var qrcode_default = {
|
|
7771
7902
|
name: "DjmQRCode",
|
|
7772
7903
|
props: {
|
|
@@ -7781,8 +7912,8 @@ var qrcode_default = {
|
|
|
7781
7912
|
alt: { type: String, default: "\u4E8C\u7EF4\u7801" }
|
|
7782
7913
|
},
|
|
7783
7914
|
setup(props) {
|
|
7784
|
-
const src = (0,
|
|
7785
|
-
const error = (0,
|
|
7915
|
+
const src = (0, import_vue23.ref)("");
|
|
7916
|
+
const error = (0, import_vue23.ref)("");
|
|
7786
7917
|
let lib = null;
|
|
7787
7918
|
let seq2 = 0;
|
|
7788
7919
|
async function ensureLib() {
|
|
@@ -7818,8 +7949,8 @@ var qrcode_default = {
|
|
|
7818
7949
|
error.value = "\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25";
|
|
7819
7950
|
}
|
|
7820
7951
|
}
|
|
7821
|
-
(0,
|
|
7822
|
-
(0,
|
|
7952
|
+
(0, import_vue23.onMounted)(render);
|
|
7953
|
+
(0, import_vue23.watch)(() => [props.value, props.size, props.level, props.margin, props.dark, props.light], render);
|
|
7823
7954
|
return { src, error };
|
|
7824
7955
|
},
|
|
7825
7956
|
template: `
|
|
@@ -7858,7 +7989,7 @@ var status_default = {
|
|
|
7858
7989
|
};
|
|
7859
7990
|
|
|
7860
7991
|
// src/components/tooltip/index.js
|
|
7861
|
-
var
|
|
7992
|
+
var import_vue24 = require("vue");
|
|
7862
7993
|
var uid2 = 0;
|
|
7863
7994
|
var tooltip_default = {
|
|
7864
7995
|
name: "DjmTooltip",
|
|
@@ -7869,11 +8000,11 @@ var tooltip_default = {
|
|
|
7869
8000
|
delay: { type: Number, default: 80 }
|
|
7870
8001
|
},
|
|
7871
8002
|
setup(props) {
|
|
7872
|
-
const visible = (0,
|
|
7873
|
-
const rootRef = (0,
|
|
7874
|
-
const contentRef = (0,
|
|
7875
|
-
const actualPlacement = (0,
|
|
7876
|
-
const panelStyle = (0,
|
|
8003
|
+
const visible = (0, import_vue24.ref)(false);
|
|
8004
|
+
const rootRef = (0, import_vue24.ref)(null);
|
|
8005
|
+
const contentRef = (0, import_vue24.ref)(null);
|
|
8006
|
+
const actualPlacement = (0, import_vue24.ref)(props.placement);
|
|
8007
|
+
const panelStyle = (0, import_vue24.ref)({});
|
|
7877
8008
|
const tipId = "djm-tooltip-" + ++uid2;
|
|
7878
8009
|
let timer = null;
|
|
7879
8010
|
function triggerEl() {
|
|
@@ -7931,7 +8062,7 @@ var tooltip_default = {
|
|
|
7931
8062
|
window.clearTimeout(timer);
|
|
7932
8063
|
timer = window.setTimeout(async () => {
|
|
7933
8064
|
visible.value = true;
|
|
7934
|
-
await (0,
|
|
8065
|
+
await (0, import_vue24.nextTick)();
|
|
7935
8066
|
position();
|
|
7936
8067
|
bindTrigger(true);
|
|
7937
8068
|
bindReposition(true);
|
|
@@ -7944,7 +8075,7 @@ var tooltip_default = {
|
|
|
7944
8075
|
bindTrigger(false);
|
|
7945
8076
|
bindReposition(false);
|
|
7946
8077
|
}
|
|
7947
|
-
(0,
|
|
8078
|
+
(0, import_vue24.onBeforeUnmount)(() => {
|
|
7948
8079
|
window.clearTimeout(timer);
|
|
7949
8080
|
bindReposition(false);
|
|
7950
8081
|
});
|
|
@@ -7969,7 +8100,7 @@ var tooltip_default = {
|
|
|
7969
8100
|
};
|
|
7970
8101
|
|
|
7971
8102
|
// src/components/dropdown/index.js
|
|
7972
|
-
var
|
|
8103
|
+
var import_vue25 = require("vue");
|
|
7973
8104
|
var dropdown_default = {
|
|
7974
8105
|
name: "DjmDropdown",
|
|
7975
8106
|
components: { DjmIcon: icon_default },
|
|
@@ -7986,10 +8117,10 @@ var dropdown_default = {
|
|
|
7986
8117
|
},
|
|
7987
8118
|
emits: ["select", "visible-change"],
|
|
7988
8119
|
setup(props, { emit }) {
|
|
7989
|
-
const open = (0,
|
|
7990
|
-
const root = (0,
|
|
7991
|
-
const menuEl = (0,
|
|
7992
|
-
const panelStyle = (0,
|
|
8120
|
+
const open = (0, import_vue25.ref)(false);
|
|
8121
|
+
const root = (0, import_vue25.ref)(null);
|
|
8122
|
+
const menuEl = (0, import_vue25.ref)(null);
|
|
8123
|
+
const panelStyle = (0, import_vue25.ref)({});
|
|
7993
8124
|
let detachPanel = null;
|
|
7994
8125
|
function syncTriggerA11y() {
|
|
7995
8126
|
const wrapper = root.value && root.value.querySelector(".djm-dropdown-trigger");
|
|
@@ -8002,8 +8133,8 @@ var dropdown_default = {
|
|
|
8002
8133
|
if (props.disabled) target.setAttribute("aria-disabled", "true");
|
|
8003
8134
|
else target.removeAttribute("aria-disabled");
|
|
8004
8135
|
}
|
|
8005
|
-
(0,
|
|
8006
|
-
(0,
|
|
8136
|
+
(0, import_vue25.onMounted)(() => (0, import_vue25.nextTick)(syncTriggerA11y));
|
|
8137
|
+
(0, import_vue25.watch)(open, () => (0, import_vue25.nextTick)(syncTriggerA11y));
|
|
8007
8138
|
function updatePosition() {
|
|
8008
8139
|
if (!open.value || !root.value) return;
|
|
8009
8140
|
const rect = root.value.getBoundingClientRect();
|
|
@@ -8047,7 +8178,7 @@ var dropdown_default = {
|
|
|
8047
8178
|
returnFocus();
|
|
8048
8179
|
}
|
|
8049
8180
|
function focusFirstItem() {
|
|
8050
|
-
(0,
|
|
8181
|
+
(0, import_vue25.nextTick)(() => {
|
|
8051
8182
|
const el = menuEl.value && menuEl.value.querySelector(".djm-dropdown-item:not(:disabled)");
|
|
8052
8183
|
if (el) el.focus();
|
|
8053
8184
|
});
|
|
@@ -8106,7 +8237,7 @@ var dropdown_default = {
|
|
|
8106
8237
|
emit("select", item);
|
|
8107
8238
|
if (props.closeOnSelect) close2();
|
|
8108
8239
|
}
|
|
8109
|
-
(0,
|
|
8240
|
+
(0, import_vue25.onBeforeUnmount)(() => {
|
|
8110
8241
|
window.clearTimeout(hoverTimer);
|
|
8111
8242
|
close2();
|
|
8112
8243
|
});
|
|
@@ -8171,7 +8302,7 @@ var dropdown_default = {
|
|
|
8171
8302
|
};
|
|
8172
8303
|
|
|
8173
8304
|
// src/components/drawer/index.js
|
|
8174
|
-
var
|
|
8305
|
+
var import_vue26 = require("vue");
|
|
8175
8306
|
var uid3 = 0;
|
|
8176
8307
|
var drawer_default = {
|
|
8177
8308
|
name: "DjmDrawer",
|
|
@@ -8184,11 +8315,13 @@ var drawer_default = {
|
|
|
8184
8315
|
// 点击遮罩关闭
|
|
8185
8316
|
maskClosable: { type: Boolean, default: true },
|
|
8186
8317
|
showClose: { type: Boolean, default: true },
|
|
8187
|
-
closeOnEsc: { type: Boolean, default: true }
|
|
8318
|
+
closeOnEsc: { type: Boolean, default: true },
|
|
8319
|
+
// 毛玻璃底
|
|
8320
|
+
glass: { type: Boolean, default: false }
|
|
8188
8321
|
},
|
|
8189
8322
|
emits: ["update:modelValue", "open", "close"],
|
|
8190
8323
|
setup(props, { emit }) {
|
|
8191
|
-
const panelRef = (0,
|
|
8324
|
+
const panelRef = (0, import_vue26.ref)(null);
|
|
8192
8325
|
const titleId = `djm-drawer-title-${++uid3}`;
|
|
8193
8326
|
let locked = false;
|
|
8194
8327
|
let releaseTrap = null;
|
|
@@ -8209,7 +8342,7 @@ var drawer_default = {
|
|
|
8209
8342
|
lockScroll();
|
|
8210
8343
|
locked = true;
|
|
8211
8344
|
emit("open");
|
|
8212
|
-
await (0,
|
|
8345
|
+
await (0, import_vue26.nextTick)();
|
|
8213
8346
|
releaseTrap = trapFocus(panelRef.value);
|
|
8214
8347
|
}
|
|
8215
8348
|
function deactivate() {
|
|
@@ -8221,14 +8354,14 @@ var drawer_default = {
|
|
|
8221
8354
|
}
|
|
8222
8355
|
emit("close");
|
|
8223
8356
|
}
|
|
8224
|
-
(0,
|
|
8357
|
+
(0, import_vue26.watch)(() => props.modelValue, (open) => {
|
|
8225
8358
|
if (open) activate();
|
|
8226
8359
|
else deactivate();
|
|
8227
8360
|
});
|
|
8228
|
-
(0,
|
|
8361
|
+
(0, import_vue26.onMounted)(() => {
|
|
8229
8362
|
if (props.modelValue) activate();
|
|
8230
8363
|
});
|
|
8231
|
-
(0,
|
|
8364
|
+
(0, import_vue26.onBeforeUnmount)(() => {
|
|
8232
8365
|
document.removeEventListener("keydown", onKeydown);
|
|
8233
8366
|
release();
|
|
8234
8367
|
if (locked) unlockScroll();
|
|
@@ -8247,7 +8380,7 @@ var drawer_default = {
|
|
|
8247
8380
|
<aside
|
|
8248
8381
|
ref="panelRef"
|
|
8249
8382
|
class="djm-drawer"
|
|
8250
|
-
:class="'djm-drawer-' + placement"
|
|
8383
|
+
:class="['djm-drawer-' + placement, { 'djm-is-glass': glass }]"
|
|
8251
8384
|
:style="panelStyle"
|
|
8252
8385
|
role="dialog"
|
|
8253
8386
|
aria-modal="true"
|
|
@@ -8282,7 +8415,7 @@ var drawer_default = {
|
|
|
8282
8415
|
};
|
|
8283
8416
|
|
|
8284
8417
|
// src/components/modal/index.js
|
|
8285
|
-
var
|
|
8418
|
+
var import_vue27 = require("vue");
|
|
8286
8419
|
var uid4 = 0;
|
|
8287
8420
|
var modal_default = {
|
|
8288
8421
|
name: "DjmModal",
|
|
@@ -8297,11 +8430,13 @@ var modal_default = {
|
|
|
8297
8430
|
// 是否允许 Esc 关闭
|
|
8298
8431
|
closeOnEsc: { type: Boolean, default: true },
|
|
8299
8432
|
// 全屏铺满,适合配置类大表单
|
|
8300
|
-
fullscreen: { type: Boolean, default: false }
|
|
8433
|
+
fullscreen: { type: Boolean, default: false },
|
|
8434
|
+
// 毛玻璃底:需要显示背后页面时使用
|
|
8435
|
+
glass: { type: Boolean, default: false }
|
|
8301
8436
|
},
|
|
8302
8437
|
emits: ["update:modelValue", "open", "close"],
|
|
8303
8438
|
setup(props, { emit }) {
|
|
8304
|
-
const dialogRef = (0,
|
|
8439
|
+
const dialogRef = (0, import_vue27.ref)(null);
|
|
8305
8440
|
const titleId = `djm-modal-title-${++uid4}`;
|
|
8306
8441
|
let locked = false;
|
|
8307
8442
|
let releaseTrap = null;
|
|
@@ -8322,7 +8457,7 @@ var modal_default = {
|
|
|
8322
8457
|
lockScroll();
|
|
8323
8458
|
locked = true;
|
|
8324
8459
|
emit("open");
|
|
8325
|
-
await (0,
|
|
8460
|
+
await (0, import_vue27.nextTick)();
|
|
8326
8461
|
releaseTrap = trapFocus(dialogRef.value);
|
|
8327
8462
|
}
|
|
8328
8463
|
function deactivate() {
|
|
@@ -8334,14 +8469,14 @@ var modal_default = {
|
|
|
8334
8469
|
}
|
|
8335
8470
|
emit("close");
|
|
8336
8471
|
}
|
|
8337
|
-
(0,
|
|
8472
|
+
(0, import_vue27.watch)(() => props.modelValue, (open) => {
|
|
8338
8473
|
if (open) activate();
|
|
8339
8474
|
else deactivate();
|
|
8340
8475
|
});
|
|
8341
|
-
(0,
|
|
8476
|
+
(0, import_vue27.onMounted)(() => {
|
|
8342
8477
|
if (props.modelValue) activate();
|
|
8343
8478
|
});
|
|
8344
|
-
(0,
|
|
8479
|
+
(0, import_vue27.onBeforeUnmount)(() => {
|
|
8345
8480
|
document.removeEventListener("keydown", onKey);
|
|
8346
8481
|
release();
|
|
8347
8482
|
if (locked) unlockScroll();
|
|
@@ -8351,7 +8486,7 @@ var modal_default = {
|
|
|
8351
8486
|
dialogRef,
|
|
8352
8487
|
titleId,
|
|
8353
8488
|
t,
|
|
8354
|
-
dialogStyle: (0,
|
|
8489
|
+
dialogStyle: (0, import_vue27.computed)(
|
|
8355
8490
|
() => props.fullscreen ? { width: "calc(100vw - 32px)", height: "calc(100vh - 48px)" } : { width: props.width }
|
|
8356
8491
|
)
|
|
8357
8492
|
};
|
|
@@ -8363,7 +8498,7 @@ var modal_default = {
|
|
|
8363
8498
|
<div
|
|
8364
8499
|
ref="dialogRef"
|
|
8365
8500
|
class="djm-modal"
|
|
8366
|
-
:class="{ 'djm-is-fullscreen': fullscreen }"
|
|
8501
|
+
:class="{ 'djm-is-fullscreen': fullscreen, 'djm-is-glass': glass }"
|
|
8367
8502
|
:style="dialogStyle"
|
|
8368
8503
|
role="dialog"
|
|
8369
8504
|
aria-modal="true"
|
|
@@ -8461,7 +8596,7 @@ var confirm_dialog_default = {
|
|
|
8461
8596
|
};
|
|
8462
8597
|
|
|
8463
8598
|
// src/components/pagination/index.js
|
|
8464
|
-
var
|
|
8599
|
+
var import_vue28 = require("vue");
|
|
8465
8600
|
var pagination_default = {
|
|
8466
8601
|
name: "DjmPagination",
|
|
8467
8602
|
components: { Icon: icon_default },
|
|
@@ -8473,10 +8608,10 @@ var pagination_default = {
|
|
|
8473
8608
|
},
|
|
8474
8609
|
emits: ["update:page", "update:pageSize", "change"],
|
|
8475
8610
|
setup(props, { emit }) {
|
|
8476
|
-
const jumpText = (0,
|
|
8477
|
-
const pageCount = (0,
|
|
8478
|
-
const current = (0,
|
|
8479
|
-
const pages = (0,
|
|
8611
|
+
const jumpText = (0, import_vue28.ref)("");
|
|
8612
|
+
const pageCount = (0, import_vue28.computed)(() => Math.max(1, Math.ceil(props.total / Math.max(1, props.pageSize))));
|
|
8613
|
+
const current = (0, import_vue28.computed)(() => Math.min(Math.max(1, props.page), pageCount.value));
|
|
8614
|
+
const pages = (0, import_vue28.computed)(() => {
|
|
8480
8615
|
const count2 = pageCount.value;
|
|
8481
8616
|
const currentPage = current.value;
|
|
8482
8617
|
if (count2 <= 7) {
|
|
@@ -8573,7 +8708,7 @@ var pagination_default = {
|
|
|
8573
8708
|
};
|
|
8574
8709
|
|
|
8575
8710
|
// src/components/tabs/index.js
|
|
8576
|
-
var
|
|
8711
|
+
var import_vue29 = require("vue");
|
|
8577
8712
|
var uid5 = 0;
|
|
8578
8713
|
var tabs_default = {
|
|
8579
8714
|
name: "DjmTabs",
|
|
@@ -8589,7 +8724,7 @@ var tabs_default = {
|
|
|
8589
8724
|
emits: ["update:modelValue", "close"],
|
|
8590
8725
|
setup(props, { emit }) {
|
|
8591
8726
|
const panelId = `djm-tabs-panel-${++uid5}`;
|
|
8592
|
-
const activeItem = (0,
|
|
8727
|
+
const activeItem = (0, import_vue29.computed)(
|
|
8593
8728
|
() => props.items.find((item) => item.key === props.modelValue) || { label: String(props.modelValue) }
|
|
8594
8729
|
);
|
|
8595
8730
|
function tabId(item) {
|
|
@@ -8693,7 +8828,7 @@ var tabs_default = {
|
|
|
8693
8828
|
};
|
|
8694
8829
|
|
|
8695
8830
|
// src/components/context-menu/index.js
|
|
8696
|
-
var
|
|
8831
|
+
var import_vue30 = require("vue");
|
|
8697
8832
|
var context_menu_default = {
|
|
8698
8833
|
name: "DjmContextMenu",
|
|
8699
8834
|
components: { Icon: icon_default },
|
|
@@ -8705,8 +8840,8 @@ var context_menu_default = {
|
|
|
8705
8840
|
},
|
|
8706
8841
|
emits: ["update:modelValue", "select"],
|
|
8707
8842
|
setup(props, { emit }) {
|
|
8708
|
-
const menuRef = (0,
|
|
8709
|
-
const pos = (0,
|
|
8843
|
+
const menuRef = (0, import_vue30.ref)(null);
|
|
8844
|
+
const pos = (0, import_vue30.ref)({ left: 0, top: 0 });
|
|
8710
8845
|
const margin = 8;
|
|
8711
8846
|
function close2() {
|
|
8712
8847
|
emit("update:modelValue", false);
|
|
@@ -8726,7 +8861,7 @@ var context_menu_default = {
|
|
|
8726
8861
|
}
|
|
8727
8862
|
async function openAtCursor() {
|
|
8728
8863
|
pos.value = { left: props.x, top: props.y };
|
|
8729
|
-
await (0,
|
|
8864
|
+
await (0, import_vue30.nextTick)();
|
|
8730
8865
|
place();
|
|
8731
8866
|
const first = menuRef.value && menuRef.value.querySelector(".djm-context-menu-item:not(:disabled)");
|
|
8732
8867
|
if (first) first.focus();
|
|
@@ -8768,7 +8903,7 @@ var context_menu_default = {
|
|
|
8768
8903
|
detach = null;
|
|
8769
8904
|
}
|
|
8770
8905
|
}
|
|
8771
|
-
(0,
|
|
8906
|
+
(0, import_vue30.watch)(
|
|
8772
8907
|
() => props.modelValue,
|
|
8773
8908
|
(open) => {
|
|
8774
8909
|
if (open) {
|
|
@@ -8779,10 +8914,10 @@ var context_menu_default = {
|
|
|
8779
8914
|
}
|
|
8780
8915
|
}
|
|
8781
8916
|
);
|
|
8782
|
-
(0,
|
|
8917
|
+
(0, import_vue30.watch)([() => props.x, () => props.y], () => {
|
|
8783
8918
|
if (props.modelValue) openAtCursor();
|
|
8784
8919
|
});
|
|
8785
|
-
(0,
|
|
8920
|
+
(0, import_vue30.onBeforeUnmount)(unbind);
|
|
8786
8921
|
return { menuRef, pos, close: close2, onSelect, onKeydown, t };
|
|
8787
8922
|
},
|
|
8788
8923
|
template: `
|
|
@@ -8821,7 +8956,7 @@ var context_menu_default = {
|
|
|
8821
8956
|
};
|
|
8822
8957
|
|
|
8823
8958
|
// src/components/date-picker/index.js
|
|
8824
|
-
var
|
|
8959
|
+
var import_vue31 = require("vue");
|
|
8825
8960
|
var uidSeed5 = 0;
|
|
8826
8961
|
function pad3(value) {
|
|
8827
8962
|
return String(value).padStart(2, "0");
|
|
@@ -8856,36 +8991,36 @@ var date_picker_default = {
|
|
|
8856
8991
|
},
|
|
8857
8992
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
8858
8993
|
setup(props, { emit }) {
|
|
8859
|
-
const open = (0,
|
|
8860
|
-
(0,
|
|
8861
|
-
const root = (0,
|
|
8862
|
-
const panel = (0,
|
|
8994
|
+
const open = (0, import_vue31.ref)(false);
|
|
8995
|
+
(0, import_vue31.watch)(open, (value) => emit("visible-change", value));
|
|
8996
|
+
const root = (0, import_vue31.ref)(null);
|
|
8997
|
+
const panel = (0, import_vue31.ref)(null);
|
|
8863
8998
|
const panelId = "djm-date-panel-" + ++uidSeed5;
|
|
8864
|
-
const panelStyle = (0,
|
|
8999
|
+
const panelStyle = (0, import_vue31.ref)({ ...PANEL_HIDDEN_STYLE });
|
|
8865
9000
|
let detachPanel = null;
|
|
8866
9001
|
const today = /* @__PURE__ */ new Date();
|
|
8867
9002
|
const todayKey = toKey2(today.getFullYear(), today.getMonth(), today.getDate());
|
|
8868
|
-
const values = (0,
|
|
9003
|
+
const values = (0, import_vue31.computed)(() => {
|
|
8869
9004
|
if (props.range) return Array.isArray(props.modelValue) ? props.modelValue : [];
|
|
8870
9005
|
return props.modelValue ? [props.modelValue] : [];
|
|
8871
9006
|
});
|
|
8872
|
-
const displayText = (0,
|
|
9007
|
+
const displayText = (0, import_vue31.computed)(() => {
|
|
8873
9008
|
if (!props.range) return values.value[0] || "";
|
|
8874
9009
|
const [start, end] = values.value;
|
|
8875
9010
|
if (!start) return "";
|
|
8876
9011
|
return end ? `${start} ~ ${end}` : `${start} ~ ${t("datePicker.rangeEnd")}`;
|
|
8877
9012
|
});
|
|
8878
9013
|
const initial = parse2(values.value[0]);
|
|
8879
|
-
const viewYear = (0,
|
|
8880
|
-
const viewMonth = (0,
|
|
8881
|
-
const pendingStart = (0,
|
|
8882
|
-
const pendingEnd = (0,
|
|
8883
|
-
const placeholderText = (0,
|
|
9014
|
+
const viewYear = (0, import_vue31.ref)(initial ? initial.year : today.getFullYear());
|
|
9015
|
+
const viewMonth = (0, import_vue31.ref)(initial ? initial.month : today.getMonth());
|
|
9016
|
+
const pendingStart = (0, import_vue31.ref)(values.value[0] || "");
|
|
9017
|
+
const pendingEnd = (0, import_vue31.ref)(values.value[1] || "");
|
|
9018
|
+
const placeholderText = (0, import_vue31.computed)(() => {
|
|
8884
9019
|
if (props.placeholder) return props.placeholder;
|
|
8885
9020
|
return t(props.range ? "datePicker.rangePlaceholder" : "datePicker.placeholder");
|
|
8886
9021
|
});
|
|
8887
|
-
const weeks = (0,
|
|
8888
|
-
const narrow = (0,
|
|
9022
|
+
const weeks = (0, import_vue31.computed)(() => t("datePicker.weeks").split(","));
|
|
9023
|
+
const narrow = (0, import_vue31.ref)(false);
|
|
8889
9024
|
let media = null;
|
|
8890
9025
|
const onMediaChange = (event) => {
|
|
8891
9026
|
narrow.value = event.matches;
|
|
@@ -8896,14 +9031,14 @@ var date_picker_default = {
|
|
|
8896
9031
|
if (media.addEventListener) media.addEventListener("change", onMediaChange);
|
|
8897
9032
|
else media.addListener(onMediaChange);
|
|
8898
9033
|
}
|
|
8899
|
-
(0,
|
|
9034
|
+
(0, import_vue31.onBeforeUnmount)(() => {
|
|
8900
9035
|
if (!media) return;
|
|
8901
9036
|
if (media.removeEventListener) media.removeEventListener("change", onMediaChange);
|
|
8902
9037
|
else media.removeListener(onMediaChange);
|
|
8903
9038
|
});
|
|
8904
|
-
const panelCount = (0,
|
|
8905
|
-
const hoverKey = (0,
|
|
8906
|
-
const hoverRange = (0,
|
|
9039
|
+
const panelCount = (0, import_vue31.computed)(() => props.range ? Math.min(narrow.value ? 1 : 2, Math.max(1, props.panels)) : 1);
|
|
9040
|
+
const hoverKey = (0, import_vue31.ref)("");
|
|
9041
|
+
const hoverRange = (0, import_vue31.computed)(() => {
|
|
8907
9042
|
if (!props.range || !pendingStart.value || pendingEnd.value || !hoverKey.value) return null;
|
|
8908
9043
|
const a = pendingStart.value;
|
|
8909
9044
|
const b = hoverKey.value;
|
|
@@ -8939,7 +9074,7 @@ var date_picker_default = {
|
|
|
8939
9074
|
};
|
|
8940
9075
|
});
|
|
8941
9076
|
}
|
|
8942
|
-
const panels = (0,
|
|
9077
|
+
const panels = (0, import_vue31.computed)(
|
|
8943
9078
|
() => Array.from({ length: panelCount.value }, (_, offset) => {
|
|
8944
9079
|
const { year, month } = monthAt(offset);
|
|
8945
9080
|
return {
|
|
@@ -8954,7 +9089,7 @@ var date_picker_default = {
|
|
|
8954
9089
|
if (props.max && key > props.max) return true;
|
|
8955
9090
|
return typeof props.disabledDate === "function" ? Boolean(props.disabledDate(key)) : false;
|
|
8956
9091
|
}
|
|
8957
|
-
const presetList = (0,
|
|
9092
|
+
const presetList = (0, import_vue31.computed)(() => {
|
|
8958
9093
|
if (!props.range) return [];
|
|
8959
9094
|
return (props.presets || []).map((preset) => {
|
|
8960
9095
|
const value = typeof preset.value === "function" ? preset.value() : preset.value;
|
|
@@ -9082,7 +9217,7 @@ var date_picker_default = {
|
|
|
9082
9217
|
pendingEnd.value = "";
|
|
9083
9218
|
closePanel();
|
|
9084
9219
|
}
|
|
9085
|
-
(0,
|
|
9220
|
+
(0, import_vue31.onBeforeUnmount)(() => {
|
|
9086
9221
|
if (detachPanel) {
|
|
9087
9222
|
detachPanel();
|
|
9088
9223
|
detachPanel = null;
|
|
@@ -9211,7 +9346,7 @@ var date_picker_default = {
|
|
|
9211
9346
|
};
|
|
9212
9347
|
|
|
9213
9348
|
// src/components/tree-select/index.js
|
|
9214
|
-
var
|
|
9349
|
+
var import_vue32 = require("vue");
|
|
9215
9350
|
function collectLeaves(node, keyOf2, out = []) {
|
|
9216
9351
|
if (node.children && node.children.length) {
|
|
9217
9352
|
node.children.forEach((child) => collectLeaves(child, keyOf2, out));
|
|
@@ -9247,13 +9382,13 @@ var tree_select_default = {
|
|
|
9247
9382
|
},
|
|
9248
9383
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
9249
9384
|
setup(props, { emit }) {
|
|
9250
|
-
const open = (0,
|
|
9251
|
-
const root = (0,
|
|
9252
|
-
const panel = (0,
|
|
9253
|
-
const searchInput = (0,
|
|
9254
|
-
const search = (0,
|
|
9255
|
-
const temp = (0,
|
|
9256
|
-
const panelStyle = (0,
|
|
9385
|
+
const open = (0, import_vue32.ref)(false);
|
|
9386
|
+
const root = (0, import_vue32.ref)(null);
|
|
9387
|
+
const panel = (0, import_vue32.ref)(null);
|
|
9388
|
+
const searchInput = (0, import_vue32.ref)(null);
|
|
9389
|
+
const search = (0, import_vue32.ref)("");
|
|
9390
|
+
const temp = (0, import_vue32.ref)([]);
|
|
9391
|
+
const panelStyle = (0, import_vue32.ref)({ ...PANEL_HIDDEN_STYLE });
|
|
9257
9392
|
let detachPanel = null;
|
|
9258
9393
|
function keyOf2(node) {
|
|
9259
9394
|
return node ? node[props.nodeKey] : void 0;
|
|
@@ -9262,26 +9397,26 @@ var tree_select_default = {
|
|
|
9262
9397
|
const value = node ? node[props.labelKey] : "";
|
|
9263
9398
|
return value === null || value === void 0 ? "" : String(value);
|
|
9264
9399
|
}
|
|
9265
|
-
const expandedIds = (0,
|
|
9400
|
+
const expandedIds = (0, import_vue32.ref)(
|
|
9266
9401
|
new Set(
|
|
9267
9402
|
collectNodes(props.options).filter((node) => node.children && node.children.length).map((node) => keyOf2(node))
|
|
9268
9403
|
)
|
|
9269
9404
|
);
|
|
9270
|
-
const nodeMap = (0,
|
|
9405
|
+
const nodeMap = (0, import_vue32.computed)(() => {
|
|
9271
9406
|
const map = /* @__PURE__ */ new Map();
|
|
9272
9407
|
collectNodes(props.options).forEach((node) => map.set(keyOf2(node), node));
|
|
9273
9408
|
return map;
|
|
9274
9409
|
});
|
|
9275
|
-
(0,
|
|
9410
|
+
(0, import_vue32.watch)(() => props.options, (options) => {
|
|
9276
9411
|
if (!options || !options.length || expandedIds.value.size) return;
|
|
9277
9412
|
expandedIds.value = new Set(
|
|
9278
9413
|
collectNodes(options).filter((node) => node.children && node.children.length).map((node) => keyOf2(node))
|
|
9279
9414
|
);
|
|
9280
9415
|
});
|
|
9281
|
-
const selectedNodes = (0,
|
|
9416
|
+
const selectedNodes = (0, import_vue32.computed)(
|
|
9282
9417
|
() => props.modelValue.map((id) => nodeMap.value.get(id)).filter(Boolean).map((node) => ({ key: keyOf2(node), label: labelOf(node) }))
|
|
9283
9418
|
);
|
|
9284
|
-
const searchState = (0,
|
|
9419
|
+
const searchState = (0, import_vue32.computed)(() => {
|
|
9285
9420
|
const text = search.value.trim().toLowerCase();
|
|
9286
9421
|
if (!text) return null;
|
|
9287
9422
|
const visible = /* @__PURE__ */ new Set();
|
|
@@ -9300,7 +9435,7 @@ var tree_select_default = {
|
|
|
9300
9435
|
walk(props.options);
|
|
9301
9436
|
return visible;
|
|
9302
9437
|
});
|
|
9303
|
-
const rows = (0,
|
|
9438
|
+
const rows = (0, import_vue32.computed)(() => {
|
|
9304
9439
|
const result = [];
|
|
9305
9440
|
const walk = (nodes, depth) => {
|
|
9306
9441
|
nodes.forEach((node) => {
|
|
@@ -9375,7 +9510,7 @@ var tree_select_default = {
|
|
|
9375
9510
|
onClose: closePanel,
|
|
9376
9511
|
onReposition: updatePosition
|
|
9377
9512
|
});
|
|
9378
|
-
(0,
|
|
9513
|
+
(0, import_vue32.nextTick)(() => {
|
|
9379
9514
|
updatePosition();
|
|
9380
9515
|
if (searchInput.value) searchInput.value.focus();
|
|
9381
9516
|
});
|
|
@@ -9431,7 +9566,7 @@ var tree_select_default = {
|
|
|
9431
9566
|
emit("change", []);
|
|
9432
9567
|
temp.value = [];
|
|
9433
9568
|
}
|
|
9434
|
-
(0,
|
|
9569
|
+
(0, import_vue32.onBeforeUnmount)(() => {
|
|
9435
9570
|
if (detachPanel) {
|
|
9436
9571
|
detachPanel();
|
|
9437
9572
|
detachPanel = null;
|
|
@@ -9570,10 +9705,10 @@ var tree_select_default = {
|
|
|
9570
9705
|
};
|
|
9571
9706
|
|
|
9572
9707
|
// src/components/rich-editor/index.js
|
|
9573
|
-
var
|
|
9708
|
+
var import_vue34 = require("vue");
|
|
9574
9709
|
|
|
9575
9710
|
// src/components/media-picker/index.js
|
|
9576
|
-
var
|
|
9711
|
+
var import_vue33 = require("vue");
|
|
9577
9712
|
var media_picker_default = {
|
|
9578
9713
|
name: "DjmMediaPicker",
|
|
9579
9714
|
components: { DjmModal: modal_default, DjmPagination: pagination_default, DjmIcon: icon_default },
|
|
@@ -9592,11 +9727,11 @@ var media_picker_default = {
|
|
|
9592
9727
|
},
|
|
9593
9728
|
emits: ["update:modelValue", "change"],
|
|
9594
9729
|
setup(props, { emit }) {
|
|
9595
|
-
const open = (0,
|
|
9596
|
-
const keyword = (0,
|
|
9597
|
-
const page = (0,
|
|
9598
|
-
const temp = (0,
|
|
9599
|
-
const selectedIds = (0,
|
|
9730
|
+
const open = (0, import_vue33.ref)(false);
|
|
9731
|
+
const keyword = (0, import_vue33.ref)("");
|
|
9732
|
+
const page = (0, import_vue33.ref)(1);
|
|
9733
|
+
const temp = (0, import_vue33.ref)([]);
|
|
9734
|
+
const selectedIds = (0, import_vue33.computed)(() => {
|
|
9600
9735
|
if (props.multiple) return Array.isArray(props.modelValue) ? props.modelValue : [];
|
|
9601
9736
|
if (props.modelValue === "" || props.modelValue === null || props.modelValue === void 0) return [];
|
|
9602
9737
|
return [props.modelValue];
|
|
@@ -9605,7 +9740,7 @@ var media_picker_default = {
|
|
|
9605
9740
|
if (item.type) return item.type === "image";
|
|
9606
9741
|
return /\.(png|jpe?g|gif|webp|svg|avif)$/i.test(item.url || "");
|
|
9607
9742
|
}
|
|
9608
|
-
const filtered = (0,
|
|
9743
|
+
const filtered = (0, import_vue33.computed)(() => {
|
|
9609
9744
|
const key = keyword.value.trim().toLowerCase();
|
|
9610
9745
|
return props.items.filter((item) => {
|
|
9611
9746
|
if (props.accept === "image" && !isImage(item)) return false;
|
|
@@ -9614,14 +9749,14 @@ var media_picker_default = {
|
|
|
9614
9749
|
return true;
|
|
9615
9750
|
});
|
|
9616
9751
|
});
|
|
9617
|
-
const paged = (0,
|
|
9752
|
+
const paged = (0, import_vue33.computed)(() => {
|
|
9618
9753
|
const start = (page.value - 1) * props.pageSize;
|
|
9619
9754
|
return filtered.value.slice(start, start + props.pageSize);
|
|
9620
9755
|
});
|
|
9621
|
-
(0,
|
|
9756
|
+
(0, import_vue33.watch)(keyword, () => {
|
|
9622
9757
|
page.value = 1;
|
|
9623
9758
|
});
|
|
9624
|
-
(0,
|
|
9759
|
+
(0, import_vue33.watch)(
|
|
9625
9760
|
() => filtered.value.length,
|
|
9626
9761
|
() => {
|
|
9627
9762
|
const max = Math.max(1, Math.ceil(filtered.value.length / props.pageSize));
|
|
@@ -9955,18 +10090,18 @@ var rich_editor_default = {
|
|
|
9955
10090
|
},
|
|
9956
10091
|
emits: ["update:modelValue", "upload-error"],
|
|
9957
10092
|
setup(props, { emit }) {
|
|
9958
|
-
const editor = (0,
|
|
9959
|
-
const fileInput = (0,
|
|
9960
|
-
const sourceMode = (0,
|
|
9961
|
-
const source = (0,
|
|
9962
|
-
const fullscreen = (0,
|
|
9963
|
-
const panel = (0,
|
|
9964
|
-
const uploadCount = (0,
|
|
9965
|
-
const textColor = (0,
|
|
9966
|
-
const bgColor = (0,
|
|
9967
|
-
const fontSize = (0,
|
|
9968
|
-
const count2 = (0,
|
|
9969
|
-
const formats = (0,
|
|
10093
|
+
const editor = (0, import_vue34.ref)(null);
|
|
10094
|
+
const fileInput = (0, import_vue34.ref)(null);
|
|
10095
|
+
const sourceMode = (0, import_vue34.ref)(false);
|
|
10096
|
+
const source = (0, import_vue34.ref)(props.modelValue);
|
|
10097
|
+
const fullscreen = (0, import_vue34.ref)(false);
|
|
10098
|
+
const panel = (0, import_vue34.ref)("");
|
|
10099
|
+
const uploadCount = (0, import_vue34.ref)(0);
|
|
10100
|
+
const textColor = (0, import_vue34.ref)(COLORS[0]);
|
|
10101
|
+
const bgColor = (0, import_vue34.ref)("#fdf3c4");
|
|
10102
|
+
const fontSize = (0, import_vue34.ref)("");
|
|
10103
|
+
const count2 = (0, import_vue34.ref)(0);
|
|
10104
|
+
const formats = (0, import_vue34.ref)({
|
|
9970
10105
|
bold: false,
|
|
9971
10106
|
italic: false,
|
|
9972
10107
|
underline: false,
|
|
@@ -9977,15 +10112,15 @@ var rich_editor_default = {
|
|
|
9977
10112
|
list: ""
|
|
9978
10113
|
});
|
|
9979
10114
|
let savedRange = null;
|
|
9980
|
-
const ready = (0,
|
|
9981
|
-
const toolbarGroups = (0,
|
|
10115
|
+
const ready = (0, import_vue34.computed)(() => !props.disabled && !sourceMode.value);
|
|
10116
|
+
const toolbarGroups = (0, import_vue34.computed)(() => {
|
|
9982
10117
|
const list = Array.isArray(props.toolbar) ? props.toolbar : TOOLBAR_PRESETS[props.toolbar] || TOOLBAR_PRESETS.full;
|
|
9983
10118
|
return new Set(list);
|
|
9984
10119
|
});
|
|
9985
10120
|
function has(group) {
|
|
9986
10121
|
return toolbarGroups.value.has(group);
|
|
9987
10122
|
}
|
|
9988
|
-
const mediaLibrary = (0,
|
|
10123
|
+
const mediaLibrary = (0, import_vue34.computed)(
|
|
9989
10124
|
() => (props.media || []).map((item, index) => {
|
|
9990
10125
|
if (typeof item === "string") {
|
|
9991
10126
|
return { id: "media-" + index, url: item, name: "", type: "image" };
|
|
@@ -10360,7 +10495,7 @@ var rich_editor_default = {
|
|
|
10360
10495
|
panel.value = "";
|
|
10361
10496
|
}
|
|
10362
10497
|
}
|
|
10363
|
-
(0,
|
|
10498
|
+
(0, import_vue34.watch)(
|
|
10364
10499
|
() => props.modelValue,
|
|
10365
10500
|
(value) => {
|
|
10366
10501
|
if (sourceMode.value) {
|
|
@@ -10372,14 +10507,14 @@ var rich_editor_default = {
|
|
|
10372
10507
|
count2.value = plainText(next).trim().length;
|
|
10373
10508
|
}
|
|
10374
10509
|
);
|
|
10375
|
-
(0,
|
|
10510
|
+
(0, import_vue34.onMounted)(() => {
|
|
10376
10511
|
if (editor.value) editor.value.innerHTML = clean(props.modelValue);
|
|
10377
10512
|
count2.value = plainText(props.modelValue).trim().length;
|
|
10378
10513
|
document.addEventListener("selectionchange", syncFormats);
|
|
10379
10514
|
document.addEventListener("click", onDocumentClick);
|
|
10380
10515
|
document.addEventListener("keydown", onKeydown);
|
|
10381
10516
|
});
|
|
10382
|
-
(0,
|
|
10517
|
+
(0, import_vue34.onBeforeUnmount)(() => {
|
|
10383
10518
|
document.removeEventListener("selectionchange", syncFormats);
|
|
10384
10519
|
document.removeEventListener("click", onDocumentClick);
|
|
10385
10520
|
document.removeEventListener("keydown", onKeydown);
|
|
@@ -10682,7 +10817,7 @@ var rich_editor_default = {
|
|
|
10682
10817
|
};
|
|
10683
10818
|
|
|
10684
10819
|
// src/components/floating-window/index.js
|
|
10685
|
-
var
|
|
10820
|
+
var import_vue35 = require("vue");
|
|
10686
10821
|
function clamp(value, min, max) {
|
|
10687
10822
|
return Math.min(Math.max(value, min), Math.max(min, max));
|
|
10688
10823
|
}
|
|
@@ -10700,12 +10835,12 @@ var floating_window_default = {
|
|
|
10700
10835
|
},
|
|
10701
10836
|
emits: ["close", "focus"],
|
|
10702
10837
|
setup(props, { emit }) {
|
|
10703
|
-
const root = (0,
|
|
10704
|
-
const pos = (0,
|
|
10705
|
-
const size = (0,
|
|
10706
|
-
const minimized = (0,
|
|
10707
|
-
const maximized = (0,
|
|
10708
|
-
const saved = (0,
|
|
10838
|
+
const root = (0, import_vue35.ref)(null);
|
|
10839
|
+
const pos = (0, import_vue35.ref)({ x: props.initialX, y: props.initialY });
|
|
10840
|
+
const size = (0, import_vue35.ref)({ w: props.width, h: props.height });
|
|
10841
|
+
const minimized = (0, import_vue35.ref)(false);
|
|
10842
|
+
const maximized = (0, import_vue35.ref)(false);
|
|
10843
|
+
const saved = (0, import_vue35.ref)(null);
|
|
10709
10844
|
let drag = null;
|
|
10710
10845
|
let resize = null;
|
|
10711
10846
|
function stage() {
|
|
@@ -10793,7 +10928,7 @@ var floating_window_default = {
|
|
|
10793
10928
|
}
|
|
10794
10929
|
emit("focus");
|
|
10795
10930
|
}
|
|
10796
|
-
(0,
|
|
10931
|
+
(0, import_vue35.onBeforeUnmount)(() => {
|
|
10797
10932
|
window.removeEventListener("pointermove", onDrag);
|
|
10798
10933
|
window.removeEventListener("pointerup", endDrag);
|
|
10799
10934
|
window.removeEventListener("pointermove", onResize);
|
|
@@ -10841,7 +10976,7 @@ var floating_window_default = {
|
|
|
10841
10976
|
};
|
|
10842
10977
|
|
|
10843
10978
|
// src/components/upload/index.js
|
|
10844
|
-
var
|
|
10979
|
+
var import_vue36 = require("vue");
|
|
10845
10980
|
var uidSeed6 = 0;
|
|
10846
10981
|
function extension(name) {
|
|
10847
10982
|
const index = name.lastIndexOf(".");
|
|
@@ -10891,11 +11026,11 @@ var upload_default = {
|
|
|
10891
11026
|
},
|
|
10892
11027
|
emits: ["update:modelValue", "change", "success", "error", "remove", "exceed"],
|
|
10893
11028
|
setup(props, { emit }) {
|
|
10894
|
-
const files = (0,
|
|
10895
|
-
const dragActive = (0,
|
|
10896
|
-
const inputRef = (0,
|
|
11029
|
+
const files = (0, import_vue36.ref)([]);
|
|
11030
|
+
const dragActive = (0, import_vue36.ref)(false);
|
|
11031
|
+
const inputRef = (0, import_vue36.ref)(null);
|
|
10897
11032
|
const tasks = /* @__PURE__ */ new Map();
|
|
10898
|
-
(0,
|
|
11033
|
+
(0, import_vue36.watch)(
|
|
10899
11034
|
() => props.modelValue,
|
|
10900
11035
|
(list) => {
|
|
10901
11036
|
const next = list || [];
|
|
@@ -10989,7 +11124,7 @@ var upload_default = {
|
|
|
10989
11124
|
if (pass === false) continue;
|
|
10990
11125
|
}
|
|
10991
11126
|
uidSeed6 += 1;
|
|
10992
|
-
const item = (0,
|
|
11127
|
+
const item = (0, import_vue36.reactive)({
|
|
10993
11128
|
uid: uidSeed6,
|
|
10994
11129
|
name: raw.name,
|
|
10995
11130
|
size: raw.size,
|
|
@@ -11049,7 +11184,7 @@ var upload_default = {
|
|
|
11049
11184
|
files.value = [];
|
|
11050
11185
|
emitList();
|
|
11051
11186
|
}
|
|
11052
|
-
(0,
|
|
11187
|
+
(0, import_vue36.onBeforeUnmount)(() => {
|
|
11053
11188
|
files.value.forEach((item) => {
|
|
11054
11189
|
if (item.url) URL.revokeObjectURL(item.url);
|
|
11055
11190
|
});
|
|
@@ -11197,7 +11332,7 @@ var upload_default = {
|
|
|
11197
11332
|
};
|
|
11198
11333
|
|
|
11199
11334
|
// src/components/tree/index.js
|
|
11200
|
-
var
|
|
11335
|
+
var import_vue37 = require("vue");
|
|
11201
11336
|
var tree_default = {
|
|
11202
11337
|
name: "DjmTree",
|
|
11203
11338
|
components: { Icon: icon_default },
|
|
@@ -11229,17 +11364,17 @@ var tree_default = {
|
|
|
11229
11364
|
},
|
|
11230
11365
|
emits: ["update:checked", "update:expanded", "node-click", "check", "node-drop", "load-error"],
|
|
11231
11366
|
setup(props, { emit }) {
|
|
11232
|
-
const lazyChildren = (0,
|
|
11233
|
-
const loadingKeys = (0,
|
|
11234
|
-
const innerExpanded = (0,
|
|
11235
|
-
const innerChecked = (0,
|
|
11236
|
-
(0,
|
|
11367
|
+
const lazyChildren = (0, import_vue37.ref)({});
|
|
11368
|
+
const loadingKeys = (0, import_vue37.ref)([]);
|
|
11369
|
+
const innerExpanded = (0, import_vue37.ref)([...props.expanded]);
|
|
11370
|
+
const innerChecked = (0, import_vue37.ref)([...props.checked]);
|
|
11371
|
+
(0, import_vue37.watch)(
|
|
11237
11372
|
() => props.expanded,
|
|
11238
11373
|
(value) => {
|
|
11239
11374
|
if (Array.isArray(value)) innerExpanded.value = value;
|
|
11240
11375
|
}
|
|
11241
11376
|
);
|
|
11242
|
-
(0,
|
|
11377
|
+
(0, import_vue37.watch)(
|
|
11243
11378
|
() => props.checked,
|
|
11244
11379
|
(value) => {
|
|
11245
11380
|
if (Array.isArray(value)) innerChecked.value = value;
|
|
@@ -11277,7 +11412,7 @@ var tree_default = {
|
|
|
11277
11412
|
});
|
|
11278
11413
|
return out;
|
|
11279
11414
|
}
|
|
11280
|
-
(0,
|
|
11415
|
+
(0, import_vue37.watch)(
|
|
11281
11416
|
() => props.data,
|
|
11282
11417
|
() => {
|
|
11283
11418
|
if (props.defaultExpandAll) innerExpanded.value = collectExpandable(props.data);
|
|
@@ -11294,7 +11429,7 @@ var tree_default = {
|
|
|
11294
11429
|
const children = childrenOf(node);
|
|
11295
11430
|
return Boolean(children && children.some((child) => matchSubtree(child)));
|
|
11296
11431
|
}
|
|
11297
|
-
const rows = (0,
|
|
11432
|
+
const rows = (0, import_vue37.computed)(() => {
|
|
11298
11433
|
const result = [];
|
|
11299
11434
|
const walk = (nodes, level) => {
|
|
11300
11435
|
nodes.forEach((node) => {
|
|
@@ -11365,8 +11500,8 @@ var tree_default = {
|
|
|
11365
11500
|
function isActive(node) {
|
|
11366
11501
|
return props.activeKey !== "" && node[props.nodeKey] === props.activeKey;
|
|
11367
11502
|
}
|
|
11368
|
-
const rootEl = (0,
|
|
11369
|
-
const focusIndex = (0,
|
|
11503
|
+
const rootEl = (0, import_vue37.ref)(null);
|
|
11504
|
+
const focusIndex = (0, import_vue37.ref)(-1);
|
|
11370
11505
|
function tabIndexOf(index) {
|
|
11371
11506
|
return (focusIndex.value === -1 ? 0 : focusIndex.value) === index ? 0 : -1;
|
|
11372
11507
|
}
|
|
@@ -11423,9 +11558,9 @@ var tree_default = {
|
|
|
11423
11558
|
function rowClassOf(node, level) {
|
|
11424
11559
|
return typeof props.rowClass === "function" ? props.rowClass(node, level) : props.rowClass;
|
|
11425
11560
|
}
|
|
11426
|
-
const dragKey = (0,
|
|
11427
|
-
const dropKey = (0,
|
|
11428
|
-
const dropPosition = (0,
|
|
11561
|
+
const dragKey = (0, import_vue37.ref)("");
|
|
11562
|
+
const dropKey = (0, import_vue37.ref)("");
|
|
11563
|
+
const dropPosition = (0, import_vue37.ref)("");
|
|
11429
11564
|
function findNodeByKey(key, nodes = props.data) {
|
|
11430
11565
|
for (const node of nodes) {
|
|
11431
11566
|
if (node[props.nodeKey] === key) return node;
|
|
@@ -11537,7 +11672,7 @@ var tree_default = {
|
|
|
11537
11672
|
onDrop,
|
|
11538
11673
|
onDragEnd,
|
|
11539
11674
|
labelOf,
|
|
11540
|
-
emptyLabel: (0,
|
|
11675
|
+
emptyLabel: (0, import_vue37.computed)(() => props.emptyText || t("tree.empty")),
|
|
11541
11676
|
t
|
|
11542
11677
|
};
|
|
11543
11678
|
},
|
|
@@ -11606,7 +11741,7 @@ var tree_default = {
|
|
|
11606
11741
|
};
|
|
11607
11742
|
|
|
11608
11743
|
// src/components/editable-table/index.js
|
|
11609
|
-
var
|
|
11744
|
+
var import_vue38 = require("vue");
|
|
11610
11745
|
var ACTIONS_KEY = "__editable_actions";
|
|
11611
11746
|
function isEmpty(value) {
|
|
11612
11747
|
if (value === "" || value === null || value === void 0) return true;
|
|
@@ -11629,13 +11764,13 @@ var editable_table_default = {
|
|
|
11629
11764
|
},
|
|
11630
11765
|
emits: ["edit", "save", "cancel"],
|
|
11631
11766
|
setup(props, { emit }) {
|
|
11632
|
-
const slots = (0,
|
|
11633
|
-
const editingKey = (0,
|
|
11634
|
-
const draft = (0,
|
|
11635
|
-
const errors = (0,
|
|
11636
|
-
const tableRef = (0,
|
|
11637
|
-
const editableColumns = (0,
|
|
11638
|
-
const renderColumns = (0,
|
|
11767
|
+
const slots = (0, import_vue38.useSlots)();
|
|
11768
|
+
const editingKey = (0, import_vue38.ref)("");
|
|
11769
|
+
const draft = (0, import_vue38.reactive)({});
|
|
11770
|
+
const errors = (0, import_vue38.reactive)({});
|
|
11771
|
+
const tableRef = (0, import_vue38.ref)(null);
|
|
11772
|
+
const editableColumns = (0, import_vue38.computed)(() => props.columns.filter((column) => column.editor));
|
|
11773
|
+
const renderColumns = (0, import_vue38.computed)(() => {
|
|
11639
11774
|
if (!props.showActions) return props.columns;
|
|
11640
11775
|
return props.columns.concat({
|
|
11641
11776
|
key: ACTIONS_KEY,
|
|
@@ -11647,7 +11782,7 @@ var editable_table_default = {
|
|
|
11647
11782
|
exportable: false
|
|
11648
11783
|
});
|
|
11649
11784
|
});
|
|
11650
|
-
const forwardedSlotNames = (0,
|
|
11785
|
+
const forwardedSlotNames = (0, import_vue38.computed)(() => {
|
|
11651
11786
|
const taken = new Set(editableColumns.value.map((column) => "cell-" + column.key));
|
|
11652
11787
|
taken.add("cell-" + ACTIONS_KEY);
|
|
11653
11788
|
return Object.keys(slots).filter((name) => !taken.has(name));
|
|
@@ -11722,7 +11857,7 @@ var editable_table_default = {
|
|
|
11722
11857
|
return false;
|
|
11723
11858
|
}
|
|
11724
11859
|
if (!validate()) {
|
|
11725
|
-
(0,
|
|
11860
|
+
(0, import_vue38.nextTick)(() => {
|
|
11726
11861
|
const el = tableRef.value && tableRef.value.$el ? tableRef.value.$el.querySelector(".djm-cell-error") : null;
|
|
11727
11862
|
if (el) el.scrollIntoView({ block: "nearest" });
|
|
11728
11863
|
});
|
|
@@ -11742,7 +11877,7 @@ var editable_table_default = {
|
|
|
11742
11877
|
clearErrors();
|
|
11743
11878
|
return true;
|
|
11744
11879
|
}
|
|
11745
|
-
(0,
|
|
11880
|
+
(0, import_vue38.watch)(
|
|
11746
11881
|
() => props.rows,
|
|
11747
11882
|
() => {
|
|
11748
11883
|
if (editingKey.value && !findRow(editingKey.value)) {
|
|
@@ -11878,8 +12013,8 @@ var descriptions_default = {
|
|
|
11878
12013
|
};
|
|
11879
12014
|
|
|
11880
12015
|
// src/components/message/index.js
|
|
11881
|
-
var
|
|
11882
|
-
var djmMessages = (0,
|
|
12016
|
+
var import_vue39 = require("vue");
|
|
12017
|
+
var djmMessages = (0, import_vue39.reactive)([]);
|
|
11883
12018
|
var seq = 0;
|
|
11884
12019
|
function close(id) {
|
|
11885
12020
|
const index = djmMessages.findIndex((item) => item.id === id);
|
|
@@ -11924,7 +12059,7 @@ var message_default = {
|
|
|
11924
12059
|
};
|
|
11925
12060
|
|
|
11926
12061
|
// src/components/org-picker/index.js
|
|
11927
|
-
var
|
|
12062
|
+
var import_vue40 = require("vue");
|
|
11928
12063
|
var org_picker_default = {
|
|
11929
12064
|
name: "DjmOrgPicker",
|
|
11930
12065
|
components: { DjmIcon: icon_default },
|
|
@@ -11943,13 +12078,13 @@ var org_picker_default = {
|
|
|
11943
12078
|
},
|
|
11944
12079
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
11945
12080
|
setup(props, { emit }) {
|
|
11946
|
-
const open = (0,
|
|
11947
|
-
const root = (0,
|
|
11948
|
-
const searchRef = (0,
|
|
11949
|
-
const keyword = (0,
|
|
11950
|
-
const activeDept = (0,
|
|
11951
|
-
const temp = (0,
|
|
11952
|
-
const expandedIds = (0,
|
|
12081
|
+
const open = (0, import_vue40.ref)(false);
|
|
12082
|
+
const root = (0, import_vue40.ref)(null);
|
|
12083
|
+
const searchRef = (0, import_vue40.ref)(null);
|
|
12084
|
+
const keyword = (0, import_vue40.ref)("");
|
|
12085
|
+
const activeDept = (0, import_vue40.ref)("");
|
|
12086
|
+
const temp = (0, import_vue40.ref)([]);
|
|
12087
|
+
const expandedIds = (0, import_vue40.ref)(/* @__PURE__ */ new Set());
|
|
11953
12088
|
let detachPanel = null;
|
|
11954
12089
|
function collectDeptIds(nodes, out = []) {
|
|
11955
12090
|
nodes.forEach((node) => {
|
|
@@ -11979,22 +12114,22 @@ var org_picker_default = {
|
|
|
11979
12114
|
walk([root2]);
|
|
11980
12115
|
return ids;
|
|
11981
12116
|
}
|
|
11982
|
-
const staffMap = (0,
|
|
12117
|
+
const staffMap = (0, import_vue40.computed)(() => {
|
|
11983
12118
|
const map = /* @__PURE__ */ new Map();
|
|
11984
12119
|
props.staff.forEach((item) => map.set(item.id, item));
|
|
11985
12120
|
return map;
|
|
11986
12121
|
});
|
|
11987
|
-
const appliedStaff = (0,
|
|
12122
|
+
const appliedStaff = (0, import_vue40.computed)(
|
|
11988
12123
|
() => props.modelValue.map((id) => staffMap.value.get(id)).filter(Boolean)
|
|
11989
12124
|
);
|
|
11990
|
-
const visibleTags = (0,
|
|
12125
|
+
const visibleTags = (0, import_vue40.computed)(() => {
|
|
11991
12126
|
if (props.maxTagCount <= 0) return appliedStaff.value;
|
|
11992
12127
|
return appliedStaff.value.slice(0, props.maxTagCount);
|
|
11993
12128
|
});
|
|
11994
|
-
const restTagCount = (0,
|
|
12129
|
+
const restTagCount = (0, import_vue40.computed)(
|
|
11995
12130
|
() => Math.max(0, appliedStaff.value.length - visibleTags.value.length)
|
|
11996
12131
|
);
|
|
11997
|
-
const visibleStaff = (0,
|
|
12132
|
+
const visibleStaff = (0, import_vue40.computed)(() => {
|
|
11998
12133
|
const key = keyword.value.trim().toLowerCase();
|
|
11999
12134
|
if (key) {
|
|
12000
12135
|
return props.staff.filter(
|
|
@@ -12005,7 +12140,7 @@ var org_picker_default = {
|
|
|
12005
12140
|
const scope = deptScope(activeDept.value);
|
|
12006
12141
|
return props.staff.filter((item) => scope.has(item.deptId));
|
|
12007
12142
|
});
|
|
12008
|
-
const deptRows = (0,
|
|
12143
|
+
const deptRows = (0, import_vue40.computed)(() => {
|
|
12009
12144
|
const rows = [];
|
|
12010
12145
|
const walk = (nodes, depth) => {
|
|
12011
12146
|
nodes.forEach((node) => {
|
|
@@ -12017,11 +12152,11 @@ var org_picker_default = {
|
|
|
12017
12152
|
walk(props.departments, 0);
|
|
12018
12153
|
return rows;
|
|
12019
12154
|
});
|
|
12020
|
-
const selectedCount = (0,
|
|
12021
|
-
const placeholderText = (0,
|
|
12022
|
-
const emptyLabel = (0,
|
|
12023
|
-
const panel = (0,
|
|
12024
|
-
const panelStyle = (0,
|
|
12155
|
+
const selectedCount = (0, import_vue40.computed)(() => temp.value.length);
|
|
12156
|
+
const placeholderText = (0, import_vue40.computed)(() => props.placeholder || t("orgPicker.placeholder"));
|
|
12157
|
+
const emptyLabel = (0, import_vue40.computed)(() => props.emptyText || t("orgPicker.empty"));
|
|
12158
|
+
const panel = (0, import_vue40.ref)(null);
|
|
12159
|
+
const panelStyle = (0, import_vue40.ref)({ ...PANEL_HIDDEN_STYLE });
|
|
12025
12160
|
const PANEL_HEIGHT = 342;
|
|
12026
12161
|
function updatePosition() {
|
|
12027
12162
|
if (!open.value || !root.value) return;
|
|
@@ -12038,7 +12173,7 @@ var org_picker_default = {
|
|
|
12038
12173
|
expandedIds.value = new Set(collectDeptIds(props.departments));
|
|
12039
12174
|
}
|
|
12040
12175
|
expandAll();
|
|
12041
|
-
(0,
|
|
12176
|
+
(0, import_vue40.watch)(() => props.departments, () => {
|
|
12042
12177
|
expandedIds.value = /* @__PURE__ */ new Set([...expandedIds.value, ...collectDeptIds(props.departments)]);
|
|
12043
12178
|
});
|
|
12044
12179
|
function initialOf(item) {
|
|
@@ -12127,7 +12262,7 @@ var org_picker_default = {
|
|
|
12127
12262
|
function clearTemp() {
|
|
12128
12263
|
temp.value = [];
|
|
12129
12264
|
}
|
|
12130
|
-
(0,
|
|
12265
|
+
(0, import_vue40.onBeforeUnmount)(() => {
|
|
12131
12266
|
if (detachPanel) {
|
|
12132
12267
|
detachPanel();
|
|
12133
12268
|
detachPanel = null;
|
|
@@ -12313,7 +12448,7 @@ var org_picker_default = {
|
|
|
12313
12448
|
};
|
|
12314
12449
|
|
|
12315
12450
|
// src/components/schema-form/index.js
|
|
12316
|
-
var
|
|
12451
|
+
var import_vue41 = require("vue");
|
|
12317
12452
|
var CONTROL_MAP = {
|
|
12318
12453
|
input: input_default,
|
|
12319
12454
|
number: input_number_default,
|
|
@@ -12349,26 +12484,26 @@ var schema_form_default = {
|
|
|
12349
12484
|
},
|
|
12350
12485
|
emits: ["update:modelValue", "change"],
|
|
12351
12486
|
setup(props, { emit }) {
|
|
12352
|
-
const innerForm = (0,
|
|
12353
|
-
const model = (0,
|
|
12354
|
-
(0,
|
|
12487
|
+
const innerForm = (0, import_vue41.ref)(null);
|
|
12488
|
+
const model = (0, import_vue41.reactive)({ ...props.modelValue });
|
|
12489
|
+
(0, import_vue41.watch)(() => props.fields, (fields) => {
|
|
12355
12490
|
fields.forEach((field) => {
|
|
12356
12491
|
if (model[field.key] === void 0 && field.default !== void 0) {
|
|
12357
12492
|
model[field.key] = typeof field.default === "function" ? field.default() : field.default;
|
|
12358
12493
|
}
|
|
12359
12494
|
});
|
|
12360
12495
|
}, { immediate: true, deep: true });
|
|
12361
|
-
(0,
|
|
12496
|
+
(0, import_vue41.watch)(() => props.modelValue, (value) => {
|
|
12362
12497
|
if (!value) return;
|
|
12363
12498
|
Object.keys(value).forEach((key) => {
|
|
12364
12499
|
if (model[key] !== value[key]) model[key] = value[key];
|
|
12365
12500
|
});
|
|
12366
12501
|
}, { deep: true });
|
|
12367
|
-
(0,
|
|
12502
|
+
(0, import_vue41.watch)(model, () => {
|
|
12368
12503
|
emit("update:modelValue", { ...model });
|
|
12369
12504
|
emit("change", { ...model });
|
|
12370
12505
|
}, { deep: true });
|
|
12371
|
-
const formRules = (0,
|
|
12506
|
+
const formRules = (0, import_vue41.computed)(() => {
|
|
12372
12507
|
const merged = { ...props.rules };
|
|
12373
12508
|
props.fields.forEach((field) => {
|
|
12374
12509
|
if (!field.required && !field.rules) return;
|
|
@@ -12381,7 +12516,7 @@ var schema_form_default = {
|
|
|
12381
12516
|
});
|
|
12382
12517
|
return merged;
|
|
12383
12518
|
});
|
|
12384
|
-
const visibleFields = (0,
|
|
12519
|
+
const visibleFields = (0, import_vue41.computed)(
|
|
12385
12520
|
() => props.fields.filter((field) => {
|
|
12386
12521
|
if (typeof field.visibleWhen !== "function") return true;
|
|
12387
12522
|
return Boolean(field.visibleWhen(model));
|
|
@@ -12575,7 +12710,7 @@ var approval_flow_default = {
|
|
|
12575
12710
|
};
|
|
12576
12711
|
|
|
12577
12712
|
// src/components/query-filter/index.js
|
|
12578
|
-
var
|
|
12713
|
+
var import_vue42 = require("vue");
|
|
12579
12714
|
var CONTROL_MAP2 = {
|
|
12580
12715
|
input: input_default,
|
|
12581
12716
|
number: input_number_default,
|
|
@@ -12600,26 +12735,26 @@ var query_filter_default = {
|
|
|
12600
12735
|
},
|
|
12601
12736
|
emits: ["update:modelValue", "search", "reset"],
|
|
12602
12737
|
setup(props, { emit }) {
|
|
12603
|
-
const expanded = (0,
|
|
12604
|
-
const model = (0,
|
|
12605
|
-
(0,
|
|
12738
|
+
const expanded = (0, import_vue42.ref)(false);
|
|
12739
|
+
const model = (0, import_vue42.reactive)({ ...props.modelValue });
|
|
12740
|
+
(0, import_vue42.watch)(() => props.fields, (fields) => {
|
|
12606
12741
|
fields.forEach((field) => {
|
|
12607
12742
|
if (model[field.key] === void 0 && field.default !== void 0) {
|
|
12608
12743
|
model[field.key] = typeof field.default === "function" ? field.default() : field.default;
|
|
12609
12744
|
}
|
|
12610
12745
|
});
|
|
12611
12746
|
}, { immediate: true, deep: true });
|
|
12612
|
-
(0,
|
|
12747
|
+
(0, import_vue42.watch)(() => props.modelValue, (value) => {
|
|
12613
12748
|
if (!value) return;
|
|
12614
12749
|
Object.keys(value).forEach((key) => {
|
|
12615
12750
|
if (model[key] !== value[key]) model[key] = value[key];
|
|
12616
12751
|
});
|
|
12617
12752
|
}, { deep: true });
|
|
12618
|
-
(0,
|
|
12753
|
+
(0, import_vue42.watch)(model, () => {
|
|
12619
12754
|
emit("update:modelValue", { ...model });
|
|
12620
12755
|
}, { deep: true });
|
|
12621
|
-
const collapsible = (0,
|
|
12622
|
-
const visibleFields = (0,
|
|
12756
|
+
const collapsible = (0, import_vue42.computed)(() => props.fields.length > props.visibleCount);
|
|
12757
|
+
const visibleFields = (0, import_vue42.computed)(() => {
|
|
12623
12758
|
if (!collapsible.value || expanded.value) return props.fields;
|
|
12624
12759
|
return props.fields.slice(0, props.visibleCount);
|
|
12625
12760
|
});
|
|
@@ -12749,7 +12884,7 @@ var filter_tags_default = {
|
|
|
12749
12884
|
};
|
|
12750
12885
|
|
|
12751
12886
|
// src/components/kanban/index.js
|
|
12752
|
-
var
|
|
12887
|
+
var import_vue43 = require("vue");
|
|
12753
12888
|
function cloneColumns(list) {
|
|
12754
12889
|
return (list || []).map((col) => ({ ...col, cards: (col.cards || []).slice() }));
|
|
12755
12890
|
}
|
|
@@ -12766,15 +12901,15 @@ var kanban_default = {
|
|
|
12766
12901
|
},
|
|
12767
12902
|
emits: ["update:columns", "change", "card-move", "card-click", "card-add"],
|
|
12768
12903
|
setup(props, { emit }) {
|
|
12769
|
-
const inner = (0,
|
|
12770
|
-
(0,
|
|
12904
|
+
const inner = (0, import_vue43.ref)(cloneColumns(props.columns));
|
|
12905
|
+
(0, import_vue43.watch)(
|
|
12771
12906
|
() => props.columns,
|
|
12772
12907
|
(list) => {
|
|
12773
12908
|
inner.value = cloneColumns(list);
|
|
12774
12909
|
}
|
|
12775
12910
|
);
|
|
12776
|
-
const dragCard = (0,
|
|
12777
|
-
const dropTarget = (0,
|
|
12911
|
+
const dragCard = (0, import_vue43.ref)(null);
|
|
12912
|
+
const dropTarget = (0, import_vue43.ref)(null);
|
|
12778
12913
|
function columnOf(key) {
|
|
12779
12914
|
return inner.value.find((col) => col.key === key);
|
|
12780
12915
|
}
|
|
@@ -12937,7 +13072,7 @@ var kanban_default = {
|
|
|
12937
13072
|
};
|
|
12938
13073
|
|
|
12939
13074
|
// src/components/attachment-list/index.js
|
|
12940
|
-
var
|
|
13075
|
+
var import_vue44 = require("vue");
|
|
12941
13076
|
var IMAGE_EXTS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "svg"];
|
|
12942
13077
|
function extOf(file) {
|
|
12943
13078
|
if (file.ext) return String(file.ext).toLowerCase();
|
|
@@ -12961,14 +13096,14 @@ var attachment_list_default = {
|
|
|
12961
13096
|
},
|
|
12962
13097
|
emits: ["preview", "download", "remove"],
|
|
12963
13098
|
setup(props, { emit }) {
|
|
12964
|
-
const list = (0,
|
|
13099
|
+
const list = (0, import_vue44.computed)(
|
|
12965
13100
|
() => props.files.map((file, index) => {
|
|
12966
13101
|
const ext = extOf(file);
|
|
12967
13102
|
const isImage = file.type === "image" || IMAGE_EXTS.includes(ext);
|
|
12968
13103
|
return { ...file, _key: file.uid !== void 0 ? file.uid : index, _ext: ext, _isImage: isImage };
|
|
12969
13104
|
})
|
|
12970
13105
|
);
|
|
12971
|
-
const emptyLabel = (0,
|
|
13106
|
+
const emptyLabel = (0, import_vue44.computed)(() => props.emptyText || t("attachment.empty"));
|
|
12972
13107
|
function onPreview(file) {
|
|
12973
13108
|
emit("preview", file);
|
|
12974
13109
|
}
|
|
@@ -13074,7 +13209,7 @@ var attachment_list_default = {
|
|
|
13074
13209
|
};
|
|
13075
13210
|
|
|
13076
13211
|
// src/components/notification/index.js
|
|
13077
|
-
var
|
|
13212
|
+
var import_vue45 = require("vue");
|
|
13078
13213
|
var TYPE_MAP = {
|
|
13079
13214
|
info: { icon: "info", cls: "djm-is-info" },
|
|
13080
13215
|
success: { icon: "check", cls: "djm-is-success" },
|
|
@@ -13094,8 +13229,8 @@ var notification_default = {
|
|
|
13094
13229
|
},
|
|
13095
13230
|
emits: ["click", "read", "read-all", "remove", "clear"],
|
|
13096
13231
|
setup(props, { emit }) {
|
|
13097
|
-
const unreadCount = (0,
|
|
13098
|
-
const emptyLabel = (0,
|
|
13232
|
+
const unreadCount = (0, import_vue45.computed)(() => props.items.filter((item) => !item.read).length);
|
|
13233
|
+
const emptyLabel = (0, import_vue45.computed)(() => props.emptyText || t("notification.empty"));
|
|
13099
13234
|
function typeOf(item) {
|
|
13100
13235
|
return TYPE_MAP[item.type] || TYPE_MAP.info;
|
|
13101
13236
|
}
|
|
@@ -13106,7 +13241,7 @@ var notification_default = {
|
|
|
13106
13241
|
function onReadAll() {
|
|
13107
13242
|
emit("read-all");
|
|
13108
13243
|
}
|
|
13109
|
-
const clearing = (0,
|
|
13244
|
+
const clearing = (0, import_vue45.ref)(false);
|
|
13110
13245
|
let clearTimer = null;
|
|
13111
13246
|
function onClear() {
|
|
13112
13247
|
if (!clearing.value) {
|
|
@@ -13120,7 +13255,7 @@ var notification_default = {
|
|
|
13120
13255
|
clearing.value = false;
|
|
13121
13256
|
emit("clear");
|
|
13122
13257
|
}
|
|
13123
|
-
(0,
|
|
13258
|
+
(0, import_vue45.onBeforeUnmount)(() => window.clearTimeout(clearTimer));
|
|
13124
13259
|
function onRemove(item) {
|
|
13125
13260
|
emit("remove", item);
|
|
13126
13261
|
}
|
|
@@ -13195,7 +13330,7 @@ var notification_default = {
|
|
|
13195
13330
|
};
|
|
13196
13331
|
|
|
13197
13332
|
// src/components/config-provider/index.js
|
|
13198
|
-
var
|
|
13333
|
+
var import_vue46 = require("vue");
|
|
13199
13334
|
var SIZE_HEIGHT = { xs: "24px", sm: "28px", md: "30px", lg: "34px" };
|
|
13200
13335
|
var config_provider_default = {
|
|
13201
13336
|
name: "DjmConfigProvider",
|
|
@@ -13205,7 +13340,7 @@ var config_provider_default = {
|
|
|
13205
13340
|
},
|
|
13206
13341
|
setup(props) {
|
|
13207
13342
|
if (props.locale) setLocale(props.locale);
|
|
13208
|
-
(0,
|
|
13343
|
+
(0, import_vue46.watch)(
|
|
13209
13344
|
() => props.locale,
|
|
13210
13345
|
(code) => {
|
|
13211
13346
|
if (code) setLocale(code);
|
|
@@ -13227,7 +13362,7 @@ var config_provider_default = {
|
|
|
13227
13362
|
};
|
|
13228
13363
|
|
|
13229
13364
|
// src/components/date-time-picker/index.js
|
|
13230
|
-
var
|
|
13365
|
+
var import_vue47 = require("vue");
|
|
13231
13366
|
var uidSeed7 = 0;
|
|
13232
13367
|
var pad4 = (value) => String(value).padStart(2, "0");
|
|
13233
13368
|
function toDateKey(year, month, day) {
|
|
@@ -13260,31 +13395,31 @@ var date_time_picker_default = {
|
|
|
13260
13395
|
},
|
|
13261
13396
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
13262
13397
|
setup(props, { emit }) {
|
|
13263
|
-
const open = (0,
|
|
13264
|
-
(0,
|
|
13265
|
-
const root = (0,
|
|
13266
|
-
const panel = (0,
|
|
13398
|
+
const open = (0, import_vue47.ref)(false);
|
|
13399
|
+
(0, import_vue47.watch)(open, (value) => emit("visible-change", value));
|
|
13400
|
+
const root = (0, import_vue47.ref)(null);
|
|
13401
|
+
const panel = (0, import_vue47.ref)(null);
|
|
13267
13402
|
const panelId = "djm-datetime-panel-" + ++uidSeed7;
|
|
13268
|
-
const panelStyle = (0,
|
|
13403
|
+
const panelStyle = (0, import_vue47.ref)({ ...PANEL_HIDDEN_STYLE });
|
|
13269
13404
|
let detachPanel = null;
|
|
13270
13405
|
const today = /* @__PURE__ */ new Date();
|
|
13271
13406
|
const todayKey = toDateKey(today.getFullYear(), today.getMonth(), today.getDate());
|
|
13272
|
-
const hasSeconds = (0,
|
|
13273
|
-
const draft = (0,
|
|
13407
|
+
const hasSeconds = (0, import_vue47.computed)(() => props.format.indexOf("ss") > -1);
|
|
13408
|
+
const draft = (0, import_vue47.ref)({ date: "", h: "00", m: "00", s: "00" });
|
|
13274
13409
|
const initial = parseDate(parseValue(props.modelValue).date);
|
|
13275
|
-
const viewYear = (0,
|
|
13276
|
-
const viewMonth = (0,
|
|
13277
|
-
const displayText = (0,
|
|
13278
|
-
const placeholderText = (0,
|
|
13279
|
-
const weeks = (0,
|
|
13280
|
-
const hours = (0,
|
|
13281
|
-
const minutes = (0,
|
|
13410
|
+
const viewYear = (0, import_vue47.ref)(initial ? initial.year : today.getFullYear());
|
|
13411
|
+
const viewMonth = (0, import_vue47.ref)(initial ? initial.month : today.getMonth());
|
|
13412
|
+
const displayText = (0, import_vue47.computed)(() => props.modelValue || "");
|
|
13413
|
+
const placeholderText = (0, import_vue47.computed)(() => props.placeholder || t("dateTimePicker.placeholder"));
|
|
13414
|
+
const weeks = (0, import_vue47.computed)(() => t("datePicker.weeks").split(","));
|
|
13415
|
+
const hours = (0, import_vue47.computed)(() => Array.from({ length: 24 }, (_, index) => pad4(index)));
|
|
13416
|
+
const minutes = (0, import_vue47.computed)(() => {
|
|
13282
13417
|
const list = [];
|
|
13283
13418
|
for (let value = 0; value < 60; value += Math.max(1, props.minuteStep)) list.push(pad4(value));
|
|
13284
13419
|
return list;
|
|
13285
13420
|
});
|
|
13286
|
-
const seconds = (0,
|
|
13287
|
-
const timeCols = (0,
|
|
13421
|
+
const seconds = (0, import_vue47.computed)(() => Array.from({ length: 60 }, (_, index) => pad4(index)));
|
|
13422
|
+
const timeCols = (0, import_vue47.computed)(() => {
|
|
13288
13423
|
const cols = [
|
|
13289
13424
|
{ key: "h", list: hours.value },
|
|
13290
13425
|
{ key: "m", list: minutes.value }
|
|
@@ -13292,8 +13427,8 @@ var date_time_picker_default = {
|
|
|
13292
13427
|
if (hasSeconds.value) cols.push({ key: "s", list: seconds.value });
|
|
13293
13428
|
return cols;
|
|
13294
13429
|
});
|
|
13295
|
-
const monthLabel = (0,
|
|
13296
|
-
const cells = (0,
|
|
13430
|
+
const monthLabel = (0, import_vue47.computed)(() => t("datePicker.title", { year: viewYear.value, month: viewMonth.value + 1 }));
|
|
13431
|
+
const cells = (0, import_vue47.computed)(() => {
|
|
13297
13432
|
const first = new Date(viewYear.value, viewMonth.value, 1);
|
|
13298
13433
|
const offset = (first.getDay() + 6) % 7;
|
|
13299
13434
|
const start = new Date(viewYear.value, viewMonth.value, 1 - offset);
|
|
@@ -13429,7 +13564,7 @@ var date_time_picker_default = {
|
|
|
13429
13564
|
emit("change", "");
|
|
13430
13565
|
closePanel();
|
|
13431
13566
|
}
|
|
13432
|
-
(0,
|
|
13567
|
+
(0, import_vue47.onBeforeUnmount)(() => {
|
|
13433
13568
|
if (detachPanel) {
|
|
13434
13569
|
detachPanel();
|
|
13435
13570
|
detachPanel = null;
|
|
@@ -13554,7 +13689,7 @@ var date_time_picker_default = {
|
|
|
13554
13689
|
};
|
|
13555
13690
|
|
|
13556
13691
|
// src/components/virtual-list/index.js
|
|
13557
|
-
var
|
|
13692
|
+
var import_vue48 = require("vue");
|
|
13558
13693
|
var virtual_list_default = {
|
|
13559
13694
|
name: "DjmVirtualList",
|
|
13560
13695
|
props: {
|
|
@@ -13571,14 +13706,14 @@ var virtual_list_default = {
|
|
|
13571
13706
|
},
|
|
13572
13707
|
emits: ["scroll", "reach-bottom", "item-click"],
|
|
13573
13708
|
setup(props, { emit, expose }) {
|
|
13574
|
-
const viewport = (0,
|
|
13575
|
-
const scrollTop = (0,
|
|
13576
|
-
const viewHeight = (0,
|
|
13709
|
+
const viewport = (0, import_vue48.ref)(null);
|
|
13710
|
+
const scrollTop = (0, import_vue48.ref)(0);
|
|
13711
|
+
const viewHeight = (0, import_vue48.ref)(typeof props.height === "number" ? props.height : 320);
|
|
13577
13712
|
let bottomFired = false;
|
|
13578
13713
|
function rowHeight(item, index) {
|
|
13579
13714
|
return typeof props.itemHeight === "function" ? Math.max(1, Number(props.itemHeight(item, index)) || 1) : Math.max(1, props.itemHeight);
|
|
13580
13715
|
}
|
|
13581
|
-
const offsets = (0,
|
|
13716
|
+
const offsets = (0, import_vue48.computed)(() => {
|
|
13582
13717
|
const list = [0];
|
|
13583
13718
|
let sum = 0;
|
|
13584
13719
|
props.items.forEach((item, index) => {
|
|
@@ -13587,7 +13722,7 @@ var virtual_list_default = {
|
|
|
13587
13722
|
});
|
|
13588
13723
|
return list;
|
|
13589
13724
|
});
|
|
13590
|
-
const totalHeight = (0,
|
|
13725
|
+
const totalHeight = (0, import_vue48.computed)(() => offsets.value[offsets.value.length - 1]);
|
|
13591
13726
|
function findStart(top) {
|
|
13592
13727
|
const list = offsets.value;
|
|
13593
13728
|
let low = 0;
|
|
@@ -13599,7 +13734,7 @@ var virtual_list_default = {
|
|
|
13599
13734
|
}
|
|
13600
13735
|
return Math.max(0, low - 1);
|
|
13601
13736
|
}
|
|
13602
|
-
const range = (0,
|
|
13737
|
+
const range = (0, import_vue48.computed)(() => {
|
|
13603
13738
|
const total = props.items.length;
|
|
13604
13739
|
if (!total) return { start: 0, end: 0 };
|
|
13605
13740
|
const start = Math.max(0, findStart(scrollTop.value) - props.overscan);
|
|
@@ -13608,7 +13743,7 @@ var virtual_list_default = {
|
|
|
13608
13743
|
while (end < total && offsets.value[end] < limit) end += 1;
|
|
13609
13744
|
return { start, end: Math.min(total, end + props.overscan) };
|
|
13610
13745
|
});
|
|
13611
|
-
const visibleRows = (0,
|
|
13746
|
+
const visibleRows = (0, import_vue48.computed)(() => {
|
|
13612
13747
|
const { start, end } = range.value;
|
|
13613
13748
|
return props.items.slice(start, end).map((item, index) => {
|
|
13614
13749
|
const realIndex = start + index;
|
|
@@ -13643,7 +13778,7 @@ var virtual_list_default = {
|
|
|
13643
13778
|
else if (start < el.scrollTop) el.scrollTop = start;
|
|
13644
13779
|
else if (end > el.scrollTop + el.clientHeight) el.scrollTop = end - el.clientHeight;
|
|
13645
13780
|
}
|
|
13646
|
-
(0,
|
|
13781
|
+
(0, import_vue48.watch)(
|
|
13647
13782
|
() => props.height,
|
|
13648
13783
|
() => {
|
|
13649
13784
|
if (viewport.value) viewHeight.value = viewport.value.clientHeight;
|
|
@@ -13653,14 +13788,14 @@ var virtual_list_default = {
|
|
|
13653
13788
|
if (viewport.value) viewHeight.value = viewport.value.clientHeight;
|
|
13654
13789
|
}
|
|
13655
13790
|
let resizeObserver = null;
|
|
13656
|
-
(0,
|
|
13791
|
+
(0, import_vue48.onMounted)(() => {
|
|
13657
13792
|
measure();
|
|
13658
13793
|
if (window.ResizeObserver && viewport.value) {
|
|
13659
13794
|
resizeObserver = new ResizeObserver(() => measure());
|
|
13660
13795
|
resizeObserver.observe(viewport.value);
|
|
13661
13796
|
}
|
|
13662
13797
|
});
|
|
13663
|
-
(0,
|
|
13798
|
+
(0, import_vue48.onBeforeUnmount)(() => {
|
|
13664
13799
|
if (resizeObserver) resizeObserver.disconnect();
|
|
13665
13800
|
});
|
|
13666
13801
|
function onItemClick(row) {
|
|
@@ -13705,7 +13840,7 @@ var virtual_list_default = {
|
|
|
13705
13840
|
};
|
|
13706
13841
|
|
|
13707
13842
|
// src/components/batch-bar/index.js
|
|
13708
|
-
var
|
|
13843
|
+
var import_vue49 = require("vue");
|
|
13709
13844
|
var batch_bar_default = {
|
|
13710
13845
|
name: "DjmBatchBar",
|
|
13711
13846
|
props: {
|
|
@@ -13720,8 +13855,8 @@ var batch_bar_default = {
|
|
|
13720
13855
|
},
|
|
13721
13856
|
emits: ["clear", "select-all"],
|
|
13722
13857
|
setup(props, { emit }) {
|
|
13723
|
-
const text = (0,
|
|
13724
|
-
const canSelectAll = (0,
|
|
13858
|
+
const text = (0, import_vue49.computed)(() => props.label || t("batchBar.selected", { count: props.count }));
|
|
13859
|
+
const canSelectAll = (0, import_vue49.computed)(() => props.total > props.count);
|
|
13725
13860
|
return {
|
|
13726
13861
|
text,
|
|
13727
13862
|
canSelectAll,
|
|
@@ -13749,7 +13884,7 @@ var batch_bar_default = {
|
|
|
13749
13884
|
};
|
|
13750
13885
|
|
|
13751
13886
|
// src/components/import-wizard/index.js
|
|
13752
|
-
var
|
|
13887
|
+
var import_vue50 = require("vue");
|
|
13753
13888
|
function matchAccept2(name, accept) {
|
|
13754
13889
|
if (!accept) return true;
|
|
13755
13890
|
const ext = "." + String(name).split(".").pop().toLowerCase();
|
|
@@ -13776,19 +13911,19 @@ var import_wizard_default = {
|
|
|
13776
13911
|
},
|
|
13777
13912
|
emits: ["update:step", "update:mapping", "file-change", "submit", "retry"],
|
|
13778
13913
|
setup(props, { emit }) {
|
|
13779
|
-
const innerStep = (0,
|
|
13780
|
-
(0,
|
|
13914
|
+
const innerStep = (0, import_vue50.ref)(props.step || 1);
|
|
13915
|
+
(0, import_vue50.watch)(
|
|
13781
13916
|
() => props.step,
|
|
13782
13917
|
(value) => {
|
|
13783
13918
|
if (value) innerStep.value = value;
|
|
13784
13919
|
}
|
|
13785
13920
|
);
|
|
13786
|
-
const file = (0,
|
|
13787
|
-
const fileError = (0,
|
|
13788
|
-
const mappingError = (0,
|
|
13789
|
-
const fileInput = (0,
|
|
13790
|
-
const innerMapping = (0,
|
|
13791
|
-
(0,
|
|
13921
|
+
const file = (0, import_vue50.ref)(null);
|
|
13922
|
+
const fileError = (0, import_vue50.ref)("");
|
|
13923
|
+
const mappingError = (0, import_vue50.ref)("");
|
|
13924
|
+
const fileInput = (0, import_vue50.ref)(null);
|
|
13925
|
+
const innerMapping = (0, import_vue50.ref)({ ...props.mapping });
|
|
13926
|
+
(0, import_vue50.watch)(
|
|
13792
13927
|
() => props.mapping,
|
|
13793
13928
|
(value) => {
|
|
13794
13929
|
innerMapping.value = { ...value };
|
|
@@ -13799,7 +13934,7 @@ var import_wizard_default = {
|
|
|
13799
13934
|
innerStep.value = next;
|
|
13800
13935
|
emit("update:step", next);
|
|
13801
13936
|
}
|
|
13802
|
-
const steps = (0,
|
|
13937
|
+
const steps = (0, import_vue50.computed)(() => [
|
|
13803
13938
|
{ index: 1, title: t("importWizard.stepFile") },
|
|
13804
13939
|
{ index: 2, title: t("importWizard.stepMapping") },
|
|
13805
13940
|
{ index: 3, title: t("importWizard.stepResult") }
|
|
@@ -13841,7 +13976,7 @@ var import_wizard_default = {
|
|
|
13841
13976
|
mappingError.value = "";
|
|
13842
13977
|
emit("update:mapping", next);
|
|
13843
13978
|
}
|
|
13844
|
-
const missingRequired = (0,
|
|
13979
|
+
const missingRequired = (0, import_vue50.computed)(
|
|
13845
13980
|
() => props.columns.filter((col) => col.required && !innerMapping.value[col.key])
|
|
13846
13981
|
);
|
|
13847
13982
|
function submit() {
|
|
@@ -13853,7 +13988,7 @@ var import_wizard_default = {
|
|
|
13853
13988
|
}
|
|
13854
13989
|
emit("submit", { ...innerMapping.value });
|
|
13855
13990
|
}
|
|
13856
|
-
(0,
|
|
13991
|
+
(0, import_vue50.watch)(
|
|
13857
13992
|
() => props.result,
|
|
13858
13993
|
(value) => {
|
|
13859
13994
|
if (value && (value.total || value.success || value.failed || value.errors && value.errors.length)) {
|
|
@@ -13874,7 +14009,7 @@ var import_wizard_default = {
|
|
|
13874
14009
|
emit("retry");
|
|
13875
14010
|
goStep(2);
|
|
13876
14011
|
}
|
|
13877
|
-
const stats = (0,
|
|
14012
|
+
const stats = (0, import_vue50.computed)(() => {
|
|
13878
14013
|
const data = props.result || {};
|
|
13879
14014
|
return {
|
|
13880
14015
|
total: data.total || 0,
|
|
@@ -14020,7 +14155,7 @@ var import_wizard_default = {
|
|
|
14020
14155
|
};
|
|
14021
14156
|
|
|
14022
14157
|
// src/components/diff/index.js
|
|
14023
|
-
var
|
|
14158
|
+
var import_vue51 = require("vue");
|
|
14024
14159
|
|
|
14025
14160
|
// src/utils/text-diff.js
|
|
14026
14161
|
var MAX_CELLS = 1e6;
|
|
@@ -14084,8 +14219,8 @@ var diff_default = {
|
|
|
14084
14219
|
afterLabel: { type: String, default: "" }
|
|
14085
14220
|
},
|
|
14086
14221
|
setup(props) {
|
|
14087
|
-
const rows = (0,
|
|
14088
|
-
const stats = (0,
|
|
14222
|
+
const rows = (0, import_vue51.computed)(() => diffLines(props.before, props.after));
|
|
14223
|
+
const stats = (0, import_vue51.computed)(() => {
|
|
14089
14224
|
let add = 0;
|
|
14090
14225
|
let remove = 0;
|
|
14091
14226
|
rows.value.forEach((row) => {
|
|
@@ -14094,11 +14229,11 @@ var diff_default = {
|
|
|
14094
14229
|
});
|
|
14095
14230
|
return { add, remove };
|
|
14096
14231
|
});
|
|
14097
|
-
const expandedBlocks = (0,
|
|
14232
|
+
const expandedBlocks = (0, import_vue51.ref)([]);
|
|
14098
14233
|
function expand(index) {
|
|
14099
14234
|
expandedBlocks.value = expandedBlocks.value.concat(index);
|
|
14100
14235
|
}
|
|
14101
|
-
const displayRows = (0,
|
|
14236
|
+
const displayRows = (0, import_vue51.computed)(() => {
|
|
14102
14237
|
const ctx = Math.max(0, props.context);
|
|
14103
14238
|
const list = rows.value;
|
|
14104
14239
|
if (!ctx) return list;
|
|
@@ -14129,7 +14264,7 @@ var diff_default = {
|
|
|
14129
14264
|
}
|
|
14130
14265
|
return out;
|
|
14131
14266
|
});
|
|
14132
|
-
const splitRows = (0,
|
|
14267
|
+
const splitRows = (0, import_vue51.computed)(() => {
|
|
14133
14268
|
const list = displayRows.value;
|
|
14134
14269
|
const out = [];
|
|
14135
14270
|
let i = 0;
|
|
@@ -14154,8 +14289,8 @@ var diff_default = {
|
|
|
14154
14289
|
}
|
|
14155
14290
|
return out;
|
|
14156
14291
|
});
|
|
14157
|
-
const beforeLabelText = (0,
|
|
14158
|
-
const afterLabelText = (0,
|
|
14292
|
+
const beforeLabelText = (0, import_vue51.computed)(() => props.beforeLabel || t("diff.before"));
|
|
14293
|
+
const afterLabelText = (0, import_vue51.computed)(() => props.afterLabel || t("diff.after"));
|
|
14159
14294
|
return {
|
|
14160
14295
|
stats,
|
|
14161
14296
|
displayRows,
|
|
@@ -14221,7 +14356,7 @@ var diff_default = {
|
|
|
14221
14356
|
};
|
|
14222
14357
|
|
|
14223
14358
|
// src/components/tree-table/index.js
|
|
14224
|
-
var
|
|
14359
|
+
var import_vue52 = require("vue");
|
|
14225
14360
|
function keyOf(row, rowKey) {
|
|
14226
14361
|
return row && row[rowKey] !== void 0 ? row[rowKey] : row && row.id;
|
|
14227
14362
|
}
|
|
@@ -14260,23 +14395,23 @@ var tree_table_default = {
|
|
|
14260
14395
|
eachNode(props.data, (row) => keys.push(keyOf(row, props.rowKey)));
|
|
14261
14396
|
return keys;
|
|
14262
14397
|
}
|
|
14263
|
-
const innerExpanded = (0,
|
|
14398
|
+
const innerExpanded = (0, import_vue52.ref)(
|
|
14264
14399
|
props.expandedKeys ? props.expandedKeys.slice() : props.defaultExpandAll ? allKeys() : []
|
|
14265
14400
|
);
|
|
14266
|
-
(0,
|
|
14401
|
+
(0, import_vue52.watch)(
|
|
14267
14402
|
() => props.expandedKeys,
|
|
14268
14403
|
(value) => {
|
|
14269
14404
|
if (value) innerExpanded.value = value.slice();
|
|
14270
14405
|
}
|
|
14271
14406
|
);
|
|
14272
|
-
const innerChecked = (0,
|
|
14273
|
-
(0,
|
|
14407
|
+
const innerChecked = (0, import_vue52.ref)(props.checkedKeys ? props.checkedKeys.slice() : []);
|
|
14408
|
+
(0, import_vue52.watch)(
|
|
14274
14409
|
() => props.checkedKeys,
|
|
14275
14410
|
(value) => {
|
|
14276
14411
|
if (value) innerChecked.value = value.slice();
|
|
14277
14412
|
}
|
|
14278
14413
|
);
|
|
14279
|
-
const rows = (0,
|
|
14414
|
+
const rows = (0, import_vue52.computed)(() => {
|
|
14280
14415
|
const out = [];
|
|
14281
14416
|
function walk(list, level, parentKey) {
|
|
14282
14417
|
;
|
|
@@ -14291,7 +14426,7 @@ var tree_table_default = {
|
|
|
14291
14426
|
walk(props.data, 1, null);
|
|
14292
14427
|
return out;
|
|
14293
14428
|
});
|
|
14294
|
-
const descendantMap = (0,
|
|
14429
|
+
const descendantMap = (0, import_vue52.computed)(() => {
|
|
14295
14430
|
const map = {};
|
|
14296
14431
|
function collect(row) {
|
|
14297
14432
|
const key = keyOf(row, props.rowKey);
|
|
@@ -14306,16 +14441,16 @@ var tree_table_default = {
|
|
|
14306
14441
|
(props.data || []).forEach(collect);
|
|
14307
14442
|
return map;
|
|
14308
14443
|
});
|
|
14309
|
-
const leafKeys = (0,
|
|
14444
|
+
const leafKeys = (0, import_vue52.computed)(() => {
|
|
14310
14445
|
const keys = [];
|
|
14311
14446
|
eachNode(props.data, (row) => {
|
|
14312
14447
|
if (!row.children || !row.children.length) keys.push(keyOf(row, props.rowKey));
|
|
14313
14448
|
});
|
|
14314
14449
|
return keys;
|
|
14315
14450
|
});
|
|
14316
|
-
const checkedSet = (0,
|
|
14317
|
-
const allChecked = (0,
|
|
14318
|
-
const someChecked = (0,
|
|
14451
|
+
const checkedSet = (0, import_vue52.computed)(() => new Set(innerChecked.value));
|
|
14452
|
+
const allChecked = (0, import_vue52.computed)(() => leafKeys.value.length > 0 && leafKeys.value.every((key) => checkedSet.value.has(key)));
|
|
14453
|
+
const someChecked = (0, import_vue52.computed)(() => !allChecked.value && leafKeys.value.some((key) => checkedSet.value.has(key)));
|
|
14319
14454
|
function isIndeterminate(row) {
|
|
14320
14455
|
if (!props.selectable || props.checkStrictly) return false;
|
|
14321
14456
|
const desc = descendantMap.value[keyOf(row, props.rowKey)] || [];
|
|
@@ -14349,7 +14484,7 @@ var tree_table_default = {
|
|
|
14349
14484
|
}
|
|
14350
14485
|
emitChecked(Array.from(set));
|
|
14351
14486
|
}
|
|
14352
|
-
const nodeMap = (0,
|
|
14487
|
+
const nodeMap = (0, import_vue52.computed)(() => {
|
|
14353
14488
|
const map = {};
|
|
14354
14489
|
eachNode(props.data, (row, level, parentKey) => {
|
|
14355
14490
|
map[keyOf(row, props.rowKey)] = { row, parentKey };
|
|
@@ -14396,11 +14531,11 @@ var tree_table_default = {
|
|
|
14396
14531
|
function onRowClick(item) {
|
|
14397
14532
|
emit("row-click", item.row, item);
|
|
14398
14533
|
}
|
|
14399
|
-
const scrollStyle = (0,
|
|
14534
|
+
const scrollStyle = (0, import_vue52.computed)(() => {
|
|
14400
14535
|
if (!props.maxHeight) return null;
|
|
14401
14536
|
return { maxHeight: typeof props.maxHeight === "number" ? props.maxHeight + "px" : props.maxHeight };
|
|
14402
14537
|
});
|
|
14403
|
-
const emptyLabel = (0,
|
|
14538
|
+
const emptyLabel = (0, import_vue52.computed)(() => props.emptyText || t("treeTable.empty"));
|
|
14404
14539
|
return {
|
|
14405
14540
|
rows,
|
|
14406
14541
|
innerExpanded,
|
|
@@ -14502,7 +14637,7 @@ var tree_table_default = {
|
|
|
14502
14637
|
};
|
|
14503
14638
|
|
|
14504
14639
|
// src/components/schedule/index.js
|
|
14505
|
-
var
|
|
14640
|
+
var import_vue53 = require("vue");
|
|
14506
14641
|
var pad5 = (value) => String(value).padStart(2, "0");
|
|
14507
14642
|
function toKey3(date) {
|
|
14508
14643
|
return `${date.getFullYear()}-${pad5(date.getMonth() + 1)}-${pad5(date.getDate())}`;
|
|
@@ -14534,13 +14669,13 @@ var schedule_default = {
|
|
|
14534
14669
|
emits: ["update:modelValue", "event-click", "slot-click", "week-change"],
|
|
14535
14670
|
setup(props, { emit }) {
|
|
14536
14671
|
const todayKey = toKey3(/* @__PURE__ */ new Date());
|
|
14537
|
-
const nowMinutes = (0,
|
|
14672
|
+
const nowMinutes = (0, import_vue53.ref)((/* @__PURE__ */ new Date()).getHours() * 60 + (/* @__PURE__ */ new Date()).getMinutes());
|
|
14538
14673
|
const timer = window.setInterval(() => {
|
|
14539
14674
|
const now = /* @__PURE__ */ new Date();
|
|
14540
14675
|
nowMinutes.value = now.getHours() * 60 + now.getMinutes();
|
|
14541
14676
|
}, 6e4);
|
|
14542
|
-
const anchor = (0,
|
|
14543
|
-
(0,
|
|
14677
|
+
const anchor = (0, import_vue53.ref)(props.modelValue || todayKey);
|
|
14678
|
+
(0, import_vue53.watch)(
|
|
14544
14679
|
() => props.modelValue,
|
|
14545
14680
|
(value) => {
|
|
14546
14681
|
if (value) anchor.value = value;
|
|
@@ -14552,8 +14687,8 @@ var schedule_default = {
|
|
|
14552
14687
|
const offset = (day + 6) % 7;
|
|
14553
14688
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate() - offset);
|
|
14554
14689
|
}
|
|
14555
|
-
const weekStartDate = (0,
|
|
14556
|
-
const weekdays = (0,
|
|
14690
|
+
const weekStartDate = (0, import_vue53.computed)(() => startOfWeek(anchor.value));
|
|
14691
|
+
const weekdays = (0, import_vue53.computed)(() => t("schedule.weekdays").split(","));
|
|
14557
14692
|
function layoutDay(list) {
|
|
14558
14693
|
const sorted = list.map((item) => {
|
|
14559
14694
|
const startMin = toMinutes(item.start, props.startHour * 60);
|
|
@@ -14586,7 +14721,7 @@ var schedule_default = {
|
|
|
14586
14721
|
};
|
|
14587
14722
|
});
|
|
14588
14723
|
}
|
|
14589
|
-
const days = (0,
|
|
14724
|
+
const days = (0, import_vue53.computed)(() => {
|
|
14590
14725
|
const start = weekStartDate.value;
|
|
14591
14726
|
const list = Array.from({ length: 7 }, (_, index) => {
|
|
14592
14727
|
const date = new Date(start.getFullYear(), start.getMonth(), start.getDate() + index);
|
|
@@ -14604,20 +14739,20 @@ var schedule_default = {
|
|
|
14604
14739
|
});
|
|
14605
14740
|
return props.showWeekend ? list : list.slice(0, 5);
|
|
14606
14741
|
});
|
|
14607
|
-
const hours = (0,
|
|
14742
|
+
const hours = (0, import_vue53.computed)(() => {
|
|
14608
14743
|
const list = [];
|
|
14609
14744
|
for (let hour = props.startHour; hour < props.endHour; hour++) list.push(hour);
|
|
14610
14745
|
return list;
|
|
14611
14746
|
});
|
|
14612
|
-
const bodyHeight = (0,
|
|
14613
|
-
const gridStyle = (0,
|
|
14747
|
+
const bodyHeight = (0, import_vue53.computed)(() => (props.endHour - props.startHour) * props.hourHeight);
|
|
14748
|
+
const gridStyle = (0, import_vue53.computed)(() => ({
|
|
14614
14749
|
gridTemplateColumns: "56px repeat(" + Math.max(1, days.value.length) + ", minmax(0, 1fr))"
|
|
14615
14750
|
}));
|
|
14616
|
-
const nowTop = (0,
|
|
14617
|
-
const showNowLine = (0,
|
|
14751
|
+
const nowTop = (0, import_vue53.computed)(() => (nowMinutes.value - props.startHour * 60) / 60 * props.hourHeight);
|
|
14752
|
+
const showNowLine = (0, import_vue53.computed)(
|
|
14618
14753
|
() => nowMinutes.value >= props.startHour * 60 && nowMinutes.value <= props.endHour * 60 && days.value.some((day) => day.today)
|
|
14619
14754
|
);
|
|
14620
|
-
const rangeLabel = (0,
|
|
14755
|
+
const rangeLabel = (0, import_vue53.computed)(() => {
|
|
14621
14756
|
const list = days.value;
|
|
14622
14757
|
if (!list.length) return "";
|
|
14623
14758
|
const first = list[0];
|
|
@@ -14647,7 +14782,7 @@ var schedule_default = {
|
|
|
14647
14782
|
const minute = minutes % 60;
|
|
14648
14783
|
emit("slot-click", { date: day.key, time: `${pad5(hour)}:${pad5(minute)}` });
|
|
14649
14784
|
}
|
|
14650
|
-
(0,
|
|
14785
|
+
(0, import_vue53.onBeforeUnmount)(() => window.clearInterval(timer));
|
|
14651
14786
|
return {
|
|
14652
14787
|
days,
|
|
14653
14788
|
hours,
|
|
@@ -14747,7 +14882,7 @@ var schedule_default = {
|
|
|
14747
14882
|
};
|
|
14748
14883
|
|
|
14749
14884
|
// src/components/comment/index.js
|
|
14750
|
-
var
|
|
14885
|
+
var import_vue54 = require("vue");
|
|
14751
14886
|
var comment_default = {
|
|
14752
14887
|
name: "DjmComment",
|
|
14753
14888
|
components: { DjmAvatar: avatar_default, DjmIcon: icon_default },
|
|
@@ -14764,16 +14899,16 @@ var comment_default = {
|
|
|
14764
14899
|
},
|
|
14765
14900
|
emits: ["submit", "reply", "remove"],
|
|
14766
14901
|
setup(props, { emit }) {
|
|
14767
|
-
const content = (0,
|
|
14768
|
-
const replyTarget = (0,
|
|
14769
|
-
const placeholderText = (0,
|
|
14902
|
+
const content = (0, import_vue54.ref)("");
|
|
14903
|
+
const replyTarget = (0, import_vue54.ref)(null);
|
|
14904
|
+
const placeholderText = (0, import_vue54.computed)(() => {
|
|
14770
14905
|
if (replyTarget.value) return t("comment.replyPlaceholder", { name: replyTarget.value.author });
|
|
14771
14906
|
return props.placeholder || t("comment.placeholder");
|
|
14772
14907
|
});
|
|
14773
|
-
const submitLabel = (0,
|
|
14774
|
-
const emptyLabel = (0,
|
|
14775
|
-
const overLimit = (0,
|
|
14776
|
-
const canSubmit = (0,
|
|
14908
|
+
const submitLabel = (0, import_vue54.computed)(() => props.submitText || t("comment.submit"));
|
|
14909
|
+
const emptyLabel = (0, import_vue54.computed)(() => props.emptyText || t("comment.empty"));
|
|
14910
|
+
const overLimit = (0, import_vue54.computed)(() => content.value.length > props.maxLength);
|
|
14911
|
+
const canSubmit = (0, import_vue54.computed)(() => content.value.trim().length > 0 && !overLimit.value && !props.disabled && !props.loading);
|
|
14777
14912
|
function onInput(event) {
|
|
14778
14913
|
content.value = event.target.value;
|
|
14779
14914
|
}
|
|
@@ -14878,7 +15013,7 @@ var comment_default = {
|
|
|
14878
15013
|
};
|
|
14879
15014
|
|
|
14880
15015
|
// src/components/signature/index.js
|
|
14881
|
-
var
|
|
15016
|
+
var import_vue55 = require("vue");
|
|
14882
15017
|
var signature_default = {
|
|
14883
15018
|
name: "DjmSignature",
|
|
14884
15019
|
props: {
|
|
@@ -14892,10 +15027,10 @@ var signature_default = {
|
|
|
14892
15027
|
},
|
|
14893
15028
|
emits: ["update:modelValue", "change", "start", "end", "clear"],
|
|
14894
15029
|
setup(props, { emit }) {
|
|
14895
|
-
const canvas = (0,
|
|
14896
|
-
const root = (0,
|
|
14897
|
-
const strokes = (0,
|
|
14898
|
-
const hasImage = (0,
|
|
15030
|
+
const canvas = (0, import_vue55.ref)(null);
|
|
15031
|
+
const root = (0, import_vue55.ref)(null);
|
|
15032
|
+
const strokes = (0, import_vue55.ref)([]);
|
|
15033
|
+
const hasImage = (0, import_vue55.ref)(false);
|
|
14899
15034
|
let imageCache = null;
|
|
14900
15035
|
let drawing = false;
|
|
14901
15036
|
let current = null;
|
|
@@ -15010,7 +15145,7 @@ var signature_default = {
|
|
|
15010
15145
|
return canvas.value ? canvas.value.toDataURL("image/png") : "";
|
|
15011
15146
|
}
|
|
15012
15147
|
const isEmpty2 = () => strokes.value.length === 0 && !hasImage.value;
|
|
15013
|
-
(0,
|
|
15148
|
+
(0, import_vue55.watch)(
|
|
15014
15149
|
() => props.modelValue,
|
|
15015
15150
|
(value) => {
|
|
15016
15151
|
if (value === lastEmitted) return;
|
|
@@ -15032,7 +15167,7 @@ var signature_default = {
|
|
|
15032
15167
|
img.src = value;
|
|
15033
15168
|
}
|
|
15034
15169
|
);
|
|
15035
|
-
(0,
|
|
15170
|
+
(0, import_vue55.onMounted)(() => {
|
|
15036
15171
|
setupCanvas();
|
|
15037
15172
|
if (props.modelValue) {
|
|
15038
15173
|
const img = new Image();
|
|
@@ -15048,7 +15183,7 @@ var signature_default = {
|
|
|
15048
15183
|
if (root.value) observer.observe(root.value);
|
|
15049
15184
|
}
|
|
15050
15185
|
});
|
|
15051
|
-
(0,
|
|
15186
|
+
(0, import_vue55.onBeforeUnmount)(() => {
|
|
15052
15187
|
if (observer) observer.disconnect();
|
|
15053
15188
|
});
|
|
15054
15189
|
return {
|
|
@@ -15088,7 +15223,7 @@ var signature_default = {
|
|
|
15088
15223
|
};
|
|
15089
15224
|
|
|
15090
15225
|
// src/components/print/index.js
|
|
15091
|
-
var
|
|
15226
|
+
var import_vue56 = require("vue");
|
|
15092
15227
|
function escapeHtml(text) {
|
|
15093
15228
|
return String(text).replace(/[&<>"]/g, (ch) => ({ "&": "&", "<": "<", ">": ">", '"': """ })[ch]);
|
|
15094
15229
|
}
|
|
@@ -15104,8 +15239,8 @@ var print_default = {
|
|
|
15104
15239
|
},
|
|
15105
15240
|
emits: ["before-print", "after-print"],
|
|
15106
15241
|
setup(props, { emit }) {
|
|
15107
|
-
const content = (0,
|
|
15108
|
-
const label = (0,
|
|
15242
|
+
const content = (0, import_vue56.ref)(null);
|
|
15243
|
+
const label = (0, import_vue56.computed)(() => props.buttonText || t("print.button"));
|
|
15109
15244
|
function collectStyles() {
|
|
15110
15245
|
return Array.from(document.querySelectorAll('link[rel="stylesheet"], style')).map((el) => el.outerHTML).join("");
|
|
15111
15246
|
}
|
|
@@ -15154,7 +15289,7 @@ var print_default = {
|
|
|
15154
15289
|
};
|
|
15155
15290
|
|
|
15156
15291
|
// src/components/gantt/index.js
|
|
15157
|
-
var
|
|
15292
|
+
var import_vue57 = require("vue");
|
|
15158
15293
|
var DAY = 864e5;
|
|
15159
15294
|
var pad6 = (value) => String(value).padStart(2, "0");
|
|
15160
15295
|
function parseDate3(value) {
|
|
@@ -15190,7 +15325,7 @@ var gantt_default = {
|
|
|
15190
15325
|
emits: ["task-click"],
|
|
15191
15326
|
setup(props, { emit }) {
|
|
15192
15327
|
const todayKey = toKey4(/* @__PURE__ */ new Date());
|
|
15193
|
-
const range = (0,
|
|
15328
|
+
const range = (0, import_vue57.computed)(() => {
|
|
15194
15329
|
const starts = props.tasks.map((task) => task.start).filter(Boolean).sort();
|
|
15195
15330
|
const ends = props.tasks.map((task) => task.end || task.start).filter(Boolean).sort();
|
|
15196
15331
|
let start = props.startDate || starts[0] || todayKey;
|
|
@@ -15203,7 +15338,7 @@ var gantt_default = {
|
|
|
15203
15338
|
}
|
|
15204
15339
|
return { start, end };
|
|
15205
15340
|
});
|
|
15206
|
-
const days = (0,
|
|
15341
|
+
const days = (0, import_vue57.computed)(() => {
|
|
15207
15342
|
const total = dayDiff(range.value.end, range.value.start) + 1;
|
|
15208
15343
|
const base = parseDate3(range.value.start);
|
|
15209
15344
|
return Array.from({ length: total }, (_, index) => {
|
|
@@ -15220,9 +15355,9 @@ var gantt_default = {
|
|
|
15220
15355
|
};
|
|
15221
15356
|
});
|
|
15222
15357
|
});
|
|
15223
|
-
const trackWidth = (0,
|
|
15224
|
-
const innerWidth = (0,
|
|
15225
|
-
const bars = (0,
|
|
15358
|
+
const trackWidth = (0, import_vue57.computed)(() => days.value.length * props.dayWidth);
|
|
15359
|
+
const innerWidth = (0, import_vue57.computed)(() => props.nameWidth + trackWidth.value);
|
|
15360
|
+
const bars = (0, import_vue57.computed)(
|
|
15226
15361
|
() => props.tasks.map((task, index) => {
|
|
15227
15362
|
const start = task.start || range.value.start;
|
|
15228
15363
|
const end = task.end || start;
|
|
@@ -15238,12 +15373,12 @@ var gantt_default = {
|
|
|
15238
15373
|
};
|
|
15239
15374
|
})
|
|
15240
15375
|
);
|
|
15241
|
-
const todayLeft = (0,
|
|
15376
|
+
const todayLeft = (0, import_vue57.computed)(() => {
|
|
15242
15377
|
const index = days.value.findIndex((day) => day.today);
|
|
15243
15378
|
if (index === -1) return null;
|
|
15244
15379
|
return props.nameWidth + index * props.dayWidth + props.dayWidth / 2;
|
|
15245
15380
|
});
|
|
15246
|
-
const emptyLabel = (0,
|
|
15381
|
+
const emptyLabel = (0, import_vue57.computed)(() => props.emptyText || t("gantt.empty"));
|
|
15247
15382
|
function onClick(bar) {
|
|
15248
15383
|
emit("task-click", bar.task);
|
|
15249
15384
|
}
|
|
@@ -15325,7 +15460,7 @@ var gantt_default = {
|
|
|
15325
15460
|
};
|
|
15326
15461
|
|
|
15327
15462
|
// src/components/field-list/index.js
|
|
15328
|
-
var
|
|
15463
|
+
var import_vue58 = require("vue");
|
|
15329
15464
|
var uidSeed8 = 0;
|
|
15330
15465
|
var field_list_default = {
|
|
15331
15466
|
name: "DjmFieldList",
|
|
@@ -15345,7 +15480,7 @@ var field_list_default = {
|
|
|
15345
15480
|
},
|
|
15346
15481
|
emits: ["update:modelValue", "add", "remove", "change"],
|
|
15347
15482
|
setup(props, { emit }) {
|
|
15348
|
-
const uids = (0,
|
|
15483
|
+
const uids = (0, import_vue58.ref)([]);
|
|
15349
15484
|
function syncUids() {
|
|
15350
15485
|
const length = props.modelValue.length;
|
|
15351
15486
|
if (uids.value.length === length) return;
|
|
@@ -15354,12 +15489,12 @@ var field_list_default = {
|
|
|
15354
15489
|
uids.value = next;
|
|
15355
15490
|
}
|
|
15356
15491
|
syncUids();
|
|
15357
|
-
(0,
|
|
15358
|
-
const errors = (0,
|
|
15359
|
-
const addLabel = (0,
|
|
15360
|
-
const emptyLabel = (0,
|
|
15361
|
-
const canAdd = (0,
|
|
15362
|
-
const canRemove = (0,
|
|
15492
|
+
(0, import_vue58.watch)(() => props.modelValue.length, syncUids);
|
|
15493
|
+
const errors = (0, import_vue58.ref)({});
|
|
15494
|
+
const addLabel = (0, import_vue58.computed)(() => props.addText || t("fieldList.add"));
|
|
15495
|
+
const emptyLabel = (0, import_vue58.computed)(() => props.emptyText || t("fieldList.empty"));
|
|
15496
|
+
const canAdd = (0, import_vue58.computed)(() => !props.disabled && (!props.max || props.modelValue.length < props.max));
|
|
15497
|
+
const canRemove = (0, import_vue58.computed)(() => !props.disabled && props.modelValue.length > props.min);
|
|
15363
15498
|
function commit(list) {
|
|
15364
15499
|
emit("update:modelValue", list);
|
|
15365
15500
|
emit("change", list);
|
|
@@ -15521,7 +15656,7 @@ var field_list_default = {
|
|
|
15521
15656
|
};
|
|
15522
15657
|
|
|
15523
15658
|
// src/components/chat/index.js
|
|
15524
|
-
var
|
|
15659
|
+
var import_vue59 = require("vue");
|
|
15525
15660
|
var chat_default = {
|
|
15526
15661
|
name: "DjmChat",
|
|
15527
15662
|
components: { DjmAvatar: avatar_default },
|
|
@@ -15538,19 +15673,19 @@ var chat_default = {
|
|
|
15538
15673
|
},
|
|
15539
15674
|
emits: ["submit"],
|
|
15540
15675
|
setup(props, { emit }) {
|
|
15541
|
-
const content = (0,
|
|
15542
|
-
const listRef = (0,
|
|
15543
|
-
const placeholderText = (0,
|
|
15544
|
-
const sendLabel = (0,
|
|
15545
|
-
const emptyLabel = (0,
|
|
15546
|
-
const canSend = (0,
|
|
15676
|
+
const content = (0, import_vue59.ref)("");
|
|
15677
|
+
const listRef = (0, import_vue59.ref)(null);
|
|
15678
|
+
const placeholderText = (0, import_vue59.computed)(() => props.placeholder || t("chat.placeholder"));
|
|
15679
|
+
const sendLabel = (0, import_vue59.computed)(() => props.sendText || t("chat.send"));
|
|
15680
|
+
const emptyLabel = (0, import_vue59.computed)(() => props.emptyText || t("chat.empty"));
|
|
15681
|
+
const canSend = (0, import_vue59.computed)(() => content.value.trim().length > 0 && !props.disabled && !props.loading);
|
|
15547
15682
|
function scrollToBottom() {
|
|
15548
15683
|
const el = listRef.value;
|
|
15549
15684
|
if (el) el.scrollTop = el.scrollHeight;
|
|
15550
15685
|
}
|
|
15551
|
-
(0,
|
|
15686
|
+
(0, import_vue59.watch)(
|
|
15552
15687
|
() => props.messages.length,
|
|
15553
|
-
() => (0,
|
|
15688
|
+
() => (0, import_vue59.nextTick)(scrollToBottom)
|
|
15554
15689
|
);
|
|
15555
15690
|
function onInput(event) {
|
|
15556
15691
|
content.value = event.target.value;
|
|
@@ -15661,7 +15796,7 @@ var chat_default = {
|
|
|
15661
15796
|
};
|
|
15662
15797
|
|
|
15663
15798
|
// src/components/org-chart/index.js
|
|
15664
|
-
var
|
|
15799
|
+
var import_vue60 = require("vue");
|
|
15665
15800
|
var org_chart_default = {
|
|
15666
15801
|
name: "DjmOrgChart",
|
|
15667
15802
|
components: { DjmAvatar: avatar_default, DjmIcon: icon_default },
|
|
@@ -15694,11 +15829,11 @@ var org_chart_default = {
|
|
|
15694
15829
|
walk(node);
|
|
15695
15830
|
return keys;
|
|
15696
15831
|
}
|
|
15697
|
-
const collapsed = (0,
|
|
15698
|
-
(0,
|
|
15832
|
+
const collapsed = (0, import_vue60.ref)(props.defaultExpandAll ? [] : collapsedByDefault(props.data));
|
|
15833
|
+
(0, import_vue60.watch)(() => props.data, (data) => {
|
|
15699
15834
|
collapsed.value = props.defaultExpandAll ? [] : collapsedByDefault(data);
|
|
15700
15835
|
});
|
|
15701
|
-
const layout = (0,
|
|
15836
|
+
const layout = (0, import_vue60.computed)(() => {
|
|
15702
15837
|
if (!props.data) return { nodes: [], links: [], width: 0, height: 0 };
|
|
15703
15838
|
const rowH = props.nodeHeight + props.verticalGap;
|
|
15704
15839
|
let cursor = 0;
|
|
@@ -15763,7 +15898,7 @@ var org_chart_default = {
|
|
|
15763
15898
|
function onClick(item) {
|
|
15764
15899
|
emit("node-click", item.node);
|
|
15765
15900
|
}
|
|
15766
|
-
const emptyLabel = (0,
|
|
15901
|
+
const emptyLabel = (0, import_vue60.computed)(() => props.emptyText || t("orgChart.empty"));
|
|
15767
15902
|
return {
|
|
15768
15903
|
layout,
|
|
15769
15904
|
toggle,
|
|
@@ -15824,7 +15959,7 @@ var org_chart_default = {
|
|
|
15824
15959
|
};
|
|
15825
15960
|
|
|
15826
15961
|
// src/components/page-tabs/index.js
|
|
15827
|
-
var
|
|
15962
|
+
var import_vue61 = require("vue");
|
|
15828
15963
|
var page_tabs_default = {
|
|
15829
15964
|
name: "DjmPageTabs",
|
|
15830
15965
|
components: { DjmIcon: icon_default },
|
|
@@ -15835,7 +15970,7 @@ var page_tabs_default = {
|
|
|
15835
15970
|
},
|
|
15836
15971
|
emits: ["update:modelValue", "change", "close"],
|
|
15837
15972
|
setup(props, { emit }) {
|
|
15838
|
-
const label = (0,
|
|
15973
|
+
const label = (0, import_vue61.computed)(() => t("pageTabs.label"));
|
|
15839
15974
|
function canClose(tab) {
|
|
15840
15975
|
return tab.closable === void 0 ? props.closable : tab.closable;
|
|
15841
15976
|
}
|
|
@@ -15945,8 +16080,8 @@ function moveRows(rows, dragIndex, dropIndex, position = "before") {
|
|
|
15945
16080
|
}
|
|
15946
16081
|
|
|
15947
16082
|
// src/utils/permission.js
|
|
15948
|
-
var
|
|
15949
|
-
var state2 = (0,
|
|
16083
|
+
var import_vue62 = require("vue");
|
|
16084
|
+
var state2 = (0, import_vue62.reactive)({
|
|
15950
16085
|
codes: /* @__PURE__ */ new Set()
|
|
15951
16086
|
});
|
|
15952
16087
|
function setPermissions(list) {
|
|
@@ -16088,7 +16223,7 @@ var components = [
|
|
|
16088
16223
|
org_chart_default,
|
|
16089
16224
|
page_tabs_default
|
|
16090
16225
|
];
|
|
16091
|
-
var version = "0.
|
|
16226
|
+
var version = "0.73.0";
|
|
16092
16227
|
function install(app, options = {}) {
|
|
16093
16228
|
if (options.locale) setLocale(options.locale);
|
|
16094
16229
|
components.forEach((component) => app.component(component.name, component));
|
|
@@ -16210,6 +16345,7 @@ var index_default = { install, version };
|
|
|
16210
16345
|
djmMessage,
|
|
16211
16346
|
djmMessages,
|
|
16212
16347
|
getLocale,
|
|
16348
|
+
glass,
|
|
16213
16349
|
hasPermission,
|
|
16214
16350
|
initTheme,
|
|
16215
16351
|
install,
|
|
@@ -16219,6 +16355,7 @@ var index_default = { install, version };
|
|
|
16219
16355
|
primaryColor,
|
|
16220
16356
|
resetPrimaryColor,
|
|
16221
16357
|
sanitizeHtml,
|
|
16358
|
+
setGlass,
|
|
16222
16359
|
setLocale,
|
|
16223
16360
|
setPermissions,
|
|
16224
16361
|
setPrimaryColor,
|