djm-ui 0.72.0 → 0.73.1
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 +25 -0
- package/README.md +6 -4
- package/dist/djm-ui.cjs +628 -487
- package/dist/djm-ui.cjs.map +3 -3
- package/dist/djm-ui.css +320 -5
- package/dist/djm-ui.esm.js +451 -312
- package/dist/djm-ui.esm.js.map +3 -3
- package/dist/djm-ui.esm.min.js +171 -121
- package/dist/djm-ui.min.cjs +176 -126
- package/dist/djm-ui.min.css +6 -2
- package/dist/djm-ui.umd.js +166 -28
- package/dist/djm-ui.umd.min.js +170 -120
- package/dist/mcp/manifest.json +122 -17
- package/dist/mcp/server.js +5 -0
- 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 +90 -0
- package/src/styles/components/layout.css +5 -0
- package/src/styles/components/spin.css +156 -4
- package/src/styles/index.css +1 -0
- package/src/styles/theme-dark.css +7 -0
- package/src/styles/tokens.css +13 -0
- package/src/theme/index.js +22 -0
- package/types/index.d.ts +9 -0
package/dist/djm-ui.esm.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
/*!
|
|
1
|
+
/*!
|
|
2
|
+
* DJM UI v0.73.1 · 企业级中后台 Vue 3 组件库
|
|
3
|
+
* Copyright (c) 2026 上海多聚米科技有限公司. All rights reserved.
|
|
4
|
+
* MIT License · https://ui.duojumi.com · Build 2026-10-26
|
|
5
|
+
*/
|
|
2
6
|
var __defProp = Object.defineProperty;
|
|
3
7
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
8
|
var __esm = (fn, res, err) => function __init() {
|
|
@@ -1722,7 +1726,7 @@ function t(key, params) {
|
|
|
1722
1726
|
// src/utils/panel.js
|
|
1723
1727
|
var PANEL_HIDDEN_STYLE = { position: "fixed", left: "0px", top: "0px", visibility: "hidden" };
|
|
1724
1728
|
function bindPanelListeners({ root, panel, onClose, onReposition, esc = true }) {
|
|
1725
|
-
const el = (
|
|
1729
|
+
const el = (ref51) => typeof ref51 === "function" ? ref51() : ref51;
|
|
1726
1730
|
function onDocumentMousedown(event) {
|
|
1727
1731
|
const rootEl = el(root);
|
|
1728
1732
|
const panelEl = el(panel);
|
|
@@ -4095,12 +4099,18 @@ var progress_default = {
|
|
|
4095
4099
|
name: "DjmProgress",
|
|
4096
4100
|
props: {
|
|
4097
4101
|
percent: { type: Number, default: 0 },
|
|
4102
|
+
// line 横向 / circle 环形
|
|
4103
|
+
type: { type: String, default: "line" },
|
|
4098
4104
|
// '' / success / error / warning
|
|
4099
4105
|
status: { type: String, default: "" },
|
|
4100
4106
|
showText: { type: Boolean, default: true },
|
|
4101
4107
|
strokeWidth: { type: Number, default: 6 },
|
|
4102
4108
|
// 自定义进度色,不传由状态决定
|
|
4103
|
-
color: { type: String, default: "" }
|
|
4109
|
+
color: { type: String, default: "" },
|
|
4110
|
+
// 环形直径(px)
|
|
4111
|
+
size: { type: Number, default: 96 },
|
|
4112
|
+
// 无障碍名称,默认「进度」
|
|
4113
|
+
label: { type: String, default: "" }
|
|
4104
4114
|
},
|
|
4105
4115
|
computed: {
|
|
4106
4116
|
safePercent() {
|
|
@@ -4113,10 +4123,72 @@ var progress_default = {
|
|
|
4113
4123
|
},
|
|
4114
4124
|
trackStyle() {
|
|
4115
4125
|
return { height: this.strokeWidth + "px" };
|
|
4126
|
+
},
|
|
4127
|
+
circleSize() {
|
|
4128
|
+
return Math.max(48, Number(this.size) || 96);
|
|
4129
|
+
},
|
|
4130
|
+
circleRadius() {
|
|
4131
|
+
return (this.circleSize - this.strokeWidth) / 2;
|
|
4132
|
+
},
|
|
4133
|
+
circleLength() {
|
|
4134
|
+
return 2 * Math.PI * this.circleRadius;
|
|
4135
|
+
},
|
|
4136
|
+
circleOffset() {
|
|
4137
|
+
return this.circleLength * (1 - this.safePercent / 100);
|
|
4138
|
+
},
|
|
4139
|
+
circleStyle() {
|
|
4140
|
+
return { width: this.circleSize + "px", height: this.circleSize + "px" };
|
|
4141
|
+
},
|
|
4142
|
+
circleLabelStyle() {
|
|
4143
|
+
return { fontSize: Math.max(12, Math.round(this.circleSize / 5)) + "px" };
|
|
4116
4144
|
}
|
|
4117
4145
|
},
|
|
4118
4146
|
template: `
|
|
4119
|
-
<div
|
|
4147
|
+
<div
|
|
4148
|
+
v-if="type === 'circle'"
|
|
4149
|
+
class="djm-progress-circle"
|
|
4150
|
+
:class="status ? 'djm-is-' + status : ''"
|
|
4151
|
+
:style="circleStyle"
|
|
4152
|
+
role="progressbar"
|
|
4153
|
+
:aria-label="label || '\u8FDB\u5EA6'"
|
|
4154
|
+
:aria-valuenow="safePercent"
|
|
4155
|
+
aria-valuemin="0"
|
|
4156
|
+
aria-valuemax="100"
|
|
4157
|
+
>
|
|
4158
|
+
<svg :viewBox="'0 0 ' + circleSize + ' ' + circleSize" aria-hidden="true">
|
|
4159
|
+
<circle
|
|
4160
|
+
class="djm-progress-circle-track"
|
|
4161
|
+
:cx="circleSize / 2"
|
|
4162
|
+
:cy="circleSize / 2"
|
|
4163
|
+
:r="circleRadius"
|
|
4164
|
+
:stroke-width="strokeWidth"
|
|
4165
|
+
fill="none"
|
|
4166
|
+
/>
|
|
4167
|
+
<circle
|
|
4168
|
+
class="djm-progress-circle-bar"
|
|
4169
|
+
:cx="circleSize / 2"
|
|
4170
|
+
:cy="circleSize / 2"
|
|
4171
|
+
:r="circleRadius"
|
|
4172
|
+
:stroke-width="strokeWidth"
|
|
4173
|
+
fill="none"
|
|
4174
|
+
stroke-linecap="round"
|
|
4175
|
+
:stroke-dasharray="circleLength"
|
|
4176
|
+
:stroke-dashoffset="circleOffset"
|
|
4177
|
+
:style="color ? { stroke: color } : null"
|
|
4178
|
+
/>
|
|
4179
|
+
</svg>
|
|
4180
|
+
<span v-if="showText" class="djm-progress-circle-label" :style="circleLabelStyle">{{ safePercent }}%</span>
|
|
4181
|
+
</div>
|
|
4182
|
+
<div
|
|
4183
|
+
v-else
|
|
4184
|
+
class="djm-progress-line"
|
|
4185
|
+
:class="status ? 'djm-is-' + status : ''"
|
|
4186
|
+
role="progressbar"
|
|
4187
|
+
:aria-label="label || '\u8FDB\u5EA6'"
|
|
4188
|
+
:aria-valuenow="safePercent"
|
|
4189
|
+
aria-valuemin="0"
|
|
4190
|
+
aria-valuemax="100"
|
|
4191
|
+
>
|
|
4120
4192
|
<div class="djm-progress" :style="trackStyle">
|
|
4121
4193
|
<div class="djm-progress-bar" :style="barStyle"></div>
|
|
4122
4194
|
</div>
|
|
@@ -5318,48 +5390,91 @@ var alert_default = {
|
|
|
5318
5390
|
};
|
|
5319
5391
|
|
|
5320
5392
|
// src/components/spin/index.js
|
|
5393
|
+
import { onBeforeUnmount as onBeforeUnmount4, ref as ref3, watch as watch3 } from "vue";
|
|
5321
5394
|
var spin_default = {
|
|
5322
5395
|
name: "DjmSpin",
|
|
5323
5396
|
props: {
|
|
5324
5397
|
spinning: { type: Boolean, default: true },
|
|
5325
|
-
size: { type: String, default: "md" },
|
|
5326
5398
|
// sm | md | lg
|
|
5327
|
-
|
|
5399
|
+
size: { type: String, default: "md" },
|
|
5400
|
+
// ring 环形 / dots 点状 / bars 柱状 / pulse 脉冲
|
|
5401
|
+
type: { type: String, default: "ring" },
|
|
5402
|
+
tip: { type: String, default: "" },
|
|
5403
|
+
// 延迟多少毫秒后显示,0 表示立即
|
|
5404
|
+
delay: { type: Number, default: 0 },
|
|
5405
|
+
// 全屏加载:遮罩铺满视口
|
|
5406
|
+
fullscreen: { type: Boolean, default: false },
|
|
5407
|
+
// 自定义指示器颜色,默认跟随品牌色
|
|
5408
|
+
color: { type: String, default: "" }
|
|
5409
|
+
},
|
|
5410
|
+
setup(props) {
|
|
5411
|
+
const visible = ref3(false);
|
|
5412
|
+
let timer = null;
|
|
5413
|
+
function sync() {
|
|
5414
|
+
window.clearTimeout(timer);
|
|
5415
|
+
timer = null;
|
|
5416
|
+
if (!props.spinning) {
|
|
5417
|
+
visible.value = false;
|
|
5418
|
+
return;
|
|
5419
|
+
}
|
|
5420
|
+
if (props.delay > 0) {
|
|
5421
|
+
timer = window.setTimeout(() => {
|
|
5422
|
+
visible.value = true;
|
|
5423
|
+
}, props.delay);
|
|
5424
|
+
} else {
|
|
5425
|
+
visible.value = true;
|
|
5426
|
+
}
|
|
5427
|
+
}
|
|
5428
|
+
watch3(() => [props.spinning, props.delay], sync, { immediate: true });
|
|
5429
|
+
onBeforeUnmount4(() => window.clearTimeout(timer));
|
|
5430
|
+
return { visible };
|
|
5328
5431
|
},
|
|
5329
5432
|
computed: {
|
|
5330
|
-
// 有默认插槽即为包裹模式
|
|
5331
5433
|
wrapped() {
|
|
5332
5434
|
return !!this.$slots.default;
|
|
5435
|
+
},
|
|
5436
|
+
rootClass() {
|
|
5437
|
+
return [
|
|
5438
|
+
"djm-spin",
|
|
5439
|
+
"djm-spin-" + this.size,
|
|
5440
|
+
{
|
|
5441
|
+
"djm-spin-wrap": this.wrapped && !this.fullscreen,
|
|
5442
|
+
"djm-spin-inline": !this.wrapped && !this.fullscreen,
|
|
5443
|
+
"djm-spin-fullscreen": this.fullscreen
|
|
5444
|
+
}
|
|
5445
|
+
];
|
|
5333
5446
|
}
|
|
5334
5447
|
},
|
|
5335
5448
|
template: `
|
|
5336
5449
|
<div
|
|
5337
|
-
v-if="wrapped"
|
|
5338
|
-
class="
|
|
5339
|
-
:
|
|
5340
|
-
:
|
|
5450
|
+
v-if="fullscreen || wrapped || visible"
|
|
5451
|
+
:class="rootClass"
|
|
5452
|
+
:aria-busy="String(visible)"
|
|
5453
|
+
:role="visible ? 'status' : undefined"
|
|
5454
|
+
:aria-label="!wrapped && !fullscreen && !tip && visible ? '\u52A0\u8F7D\u4E2D' : undefined"
|
|
5341
5455
|
>
|
|
5342
|
-
<slot />
|
|
5343
|
-
<div v-if="
|
|
5344
|
-
<span class="djm-
|
|
5456
|
+
<slot v-if="wrapped && !fullscreen" />
|
|
5457
|
+
<div v-if="visible" class="djm-spin-mask">
|
|
5458
|
+
<span class="djm-spin-indicator" :class="'djm-spin-' + type" :style="color ? { color } : null">
|
|
5459
|
+
<slot name="indicator">
|
|
5460
|
+
<i v-if="type === 'ring'" class="djm-spinner"></i>
|
|
5461
|
+
<template v-else-if="type === 'dots'">
|
|
5462
|
+
<i></i><i></i><i></i>
|
|
5463
|
+
</template>
|
|
5464
|
+
<template v-else-if="type === 'bars'">
|
|
5465
|
+
<i></i><i></i><i></i><i></i>
|
|
5466
|
+
</template>
|
|
5467
|
+
<i v-else class="djm-spin-core"></i>
|
|
5468
|
+
</slot>
|
|
5469
|
+
</span>
|
|
5345
5470
|
<span v-if="tip" class="djm-spin-tip">{{ tip }}</span>
|
|
5346
5471
|
</div>
|
|
5347
5472
|
</div>
|
|
5348
|
-
<span
|
|
5349
|
-
v-else
|
|
5350
|
-
class="djm-spin-inline"
|
|
5351
|
-
:class="'djm-spin-' + size"
|
|
5352
|
-
role="status"
|
|
5353
|
-
:aria-label="tip ? undefined : '\u52A0\u8F7D\u4E2D'"
|
|
5354
|
-
>
|
|
5355
|
-
<span class="djm-spinner"></span>
|
|
5356
|
-
<span v-if="tip" class="djm-spin-tip">{{ tip }}</span>
|
|
5357
|
-
</span>
|
|
5358
5473
|
`
|
|
5359
5474
|
};
|
|
5360
5475
|
|
|
5361
5476
|
// src/components/popconfirm/index.js
|
|
5362
|
-
import { nextTick as nextTick3, onBeforeUnmount as
|
|
5477
|
+
import { nextTick as nextTick3, onBeforeUnmount as onBeforeUnmount5, onMounted as onMounted3, ref as ref4, watch as watch4 } from "vue";
|
|
5363
5478
|
var popconfirm_default = {
|
|
5364
5479
|
name: "DjmPopconfirm",
|
|
5365
5480
|
components: { DjmIcon: icon_default },
|
|
@@ -5375,10 +5490,10 @@ var popconfirm_default = {
|
|
|
5375
5490
|
},
|
|
5376
5491
|
emits: ["confirm", "cancel", "visible-change"],
|
|
5377
5492
|
setup(props, { emit }) {
|
|
5378
|
-
const open =
|
|
5379
|
-
const root =
|
|
5380
|
-
const panelEl =
|
|
5381
|
-
const panelStyle =
|
|
5493
|
+
const open = ref4(false);
|
|
5494
|
+
const root = ref4(null);
|
|
5495
|
+
const panelEl = ref4(null);
|
|
5496
|
+
const panelStyle = ref4({});
|
|
5382
5497
|
const PANEL_WIDTH = 244;
|
|
5383
5498
|
let detachPanel = null;
|
|
5384
5499
|
function syncTriggerA11y() {
|
|
@@ -5394,7 +5509,7 @@ var popconfirm_default = {
|
|
|
5394
5509
|
target.setAttribute("aria-expanded", String(open.value));
|
|
5395
5510
|
}
|
|
5396
5511
|
onMounted3(() => nextTick3(syncTriggerA11y));
|
|
5397
|
-
|
|
5512
|
+
watch4(open, () => nextTick3(syncTriggerA11y));
|
|
5398
5513
|
function updatePosition() {
|
|
5399
5514
|
if (!open.value || !root.value) return;
|
|
5400
5515
|
const rect = root.value.getBoundingClientRect();
|
|
@@ -5453,7 +5568,7 @@ var popconfirm_default = {
|
|
|
5453
5568
|
emit("cancel");
|
|
5454
5569
|
close2();
|
|
5455
5570
|
}
|
|
5456
|
-
|
|
5571
|
+
onBeforeUnmount5(close2);
|
|
5457
5572
|
return { open, root, panelEl, panelStyle, toggle, close: close2, confirm, cancel };
|
|
5458
5573
|
},
|
|
5459
5574
|
template: `
|
|
@@ -5497,7 +5612,7 @@ var popconfirm_default = {
|
|
|
5497
5612
|
};
|
|
5498
5613
|
|
|
5499
5614
|
// src/components/anchor/index.js
|
|
5500
|
-
import { onBeforeUnmount as
|
|
5615
|
+
import { onBeforeUnmount as onBeforeUnmount6, onMounted as onMounted4, ref as ref5, watch as watch5 } from "vue";
|
|
5501
5616
|
var anchor_default = {
|
|
5502
5617
|
name: "DjmAnchor",
|
|
5503
5618
|
props: {
|
|
@@ -5510,8 +5625,8 @@ var anchor_default = {
|
|
|
5510
5625
|
},
|
|
5511
5626
|
emits: ["change"],
|
|
5512
5627
|
setup(props, { emit }) {
|
|
5513
|
-
const root =
|
|
5514
|
-
const activeKey =
|
|
5628
|
+
const root = ref5(null);
|
|
5629
|
+
const activeKey = ref5("");
|
|
5515
5630
|
let scrollEl = null;
|
|
5516
5631
|
let target = null;
|
|
5517
5632
|
function resolveContainer() {
|
|
@@ -5566,8 +5681,8 @@ var anchor_default = {
|
|
|
5566
5681
|
emit("change", item.href);
|
|
5567
5682
|
}
|
|
5568
5683
|
onMounted4(bind);
|
|
5569
|
-
|
|
5570
|
-
|
|
5684
|
+
watch5(() => props.container, bind);
|
|
5685
|
+
onBeforeUnmount6(unbind);
|
|
5571
5686
|
return { root, activeKey, go };
|
|
5572
5687
|
},
|
|
5573
5688
|
template: `
|
|
@@ -5589,7 +5704,7 @@ var anchor_default = {
|
|
|
5589
5704
|
};
|
|
5590
5705
|
|
|
5591
5706
|
// src/components/backtop/index.js
|
|
5592
|
-
import { onBeforeUnmount as
|
|
5707
|
+
import { onBeforeUnmount as onBeforeUnmount7, onMounted as onMounted5, ref as ref6 } from "vue";
|
|
5593
5708
|
var backtop_default = {
|
|
5594
5709
|
name: "DjmBacktop",
|
|
5595
5710
|
components: { DjmIcon: icon_default },
|
|
@@ -5602,8 +5717,8 @@ var backtop_default = {
|
|
|
5602
5717
|
},
|
|
5603
5718
|
emits: ["click"],
|
|
5604
5719
|
setup(props, { emit }) {
|
|
5605
|
-
const visible =
|
|
5606
|
-
const root =
|
|
5720
|
+
const visible = ref6(false);
|
|
5721
|
+
const root = ref6(null);
|
|
5607
5722
|
let target = null;
|
|
5608
5723
|
let scrollEl = null;
|
|
5609
5724
|
function resolveContainer() {
|
|
@@ -5637,7 +5752,7 @@ var backtop_default = {
|
|
|
5637
5752
|
emit("click");
|
|
5638
5753
|
}
|
|
5639
5754
|
onMounted5(bind);
|
|
5640
|
-
|
|
5755
|
+
onBeforeUnmount7(unbind);
|
|
5641
5756
|
return { visible, root, toTop };
|
|
5642
5757
|
},
|
|
5643
5758
|
template: `
|
|
@@ -5714,7 +5829,7 @@ var space_default = {
|
|
|
5714
5829
|
};
|
|
5715
5830
|
|
|
5716
5831
|
// src/components/affix/index.js
|
|
5717
|
-
import { onBeforeUnmount as
|
|
5832
|
+
import { onBeforeUnmount as onBeforeUnmount8, onMounted as onMounted6, ref as ref7 } from "vue";
|
|
5718
5833
|
var affix_default = {
|
|
5719
5834
|
name: "DjmAffix",
|
|
5720
5835
|
props: {
|
|
@@ -5725,10 +5840,10 @@ var affix_default = {
|
|
|
5725
5840
|
zIndex: { type: Number, default: 900 }
|
|
5726
5841
|
},
|
|
5727
5842
|
setup(props) {
|
|
5728
|
-
const root =
|
|
5729
|
-
const fixed =
|
|
5730
|
-
const affixStyle =
|
|
5731
|
-
const holderStyle =
|
|
5843
|
+
const root = ref7(null);
|
|
5844
|
+
const fixed = ref7(false);
|
|
5845
|
+
const affixStyle = ref7({});
|
|
5846
|
+
const holderStyle = ref7({});
|
|
5732
5847
|
let target = null;
|
|
5733
5848
|
let scrollEl = null;
|
|
5734
5849
|
function resolveContainer() {
|
|
@@ -5784,7 +5899,7 @@ var affix_default = {
|
|
|
5784
5899
|
target = null;
|
|
5785
5900
|
}
|
|
5786
5901
|
onMounted6(bind);
|
|
5787
|
-
|
|
5902
|
+
onBeforeUnmount8(unbind);
|
|
5788
5903
|
return { root, fixed, affixStyle, holderStyle };
|
|
5789
5904
|
},
|
|
5790
5905
|
template: `
|
|
@@ -5835,7 +5950,7 @@ var segmented_default = {
|
|
|
5835
5950
|
};
|
|
5836
5951
|
|
|
5837
5952
|
// src/components/image/index.js
|
|
5838
|
-
import { nextTick as nextTick4, onBeforeUnmount as
|
|
5953
|
+
import { nextTick as nextTick4, onBeforeUnmount as onBeforeUnmount9, ref as ref8, watch as watch6 } from "vue";
|
|
5839
5954
|
|
|
5840
5955
|
// src/utils/scroll-lock.js
|
|
5841
5956
|
var count = 0;
|
|
@@ -5882,11 +5997,11 @@ var image_default = {
|
|
|
5882
5997
|
preview: { type: Boolean, default: true }
|
|
5883
5998
|
},
|
|
5884
5999
|
setup(props) {
|
|
5885
|
-
const failed =
|
|
5886
|
-
const open =
|
|
5887
|
-
const zoomRef =
|
|
5888
|
-
const closeRef =
|
|
5889
|
-
|
|
6000
|
+
const failed = ref8(false);
|
|
6001
|
+
const open = ref8(false);
|
|
6002
|
+
const zoomRef = ref8(null);
|
|
6003
|
+
const closeRef = ref8(null);
|
|
6004
|
+
watch6(() => props.src, () => {
|
|
5890
6005
|
failed.value = false;
|
|
5891
6006
|
});
|
|
5892
6007
|
function toSize(value) {
|
|
@@ -5910,7 +6025,7 @@ var image_default = {
|
|
|
5910
6025
|
document.removeEventListener("keydown", onKeydown);
|
|
5911
6026
|
if (zoomRef.value) zoomRef.value.focus();
|
|
5912
6027
|
}
|
|
5913
|
-
|
|
6028
|
+
onBeforeUnmount9(closePreview);
|
|
5914
6029
|
return { failed, open, zoomRef, closeRef, toSize, openPreview, closePreview, t };
|
|
5915
6030
|
},
|
|
5916
6031
|
template: `
|
|
@@ -5965,13 +6080,15 @@ var image_default = {
|
|
|
5965
6080
|
};
|
|
5966
6081
|
|
|
5967
6082
|
// src/components/watermark/index.js
|
|
5968
|
-
import { computed as computed4, onBeforeUnmount as
|
|
6083
|
+
import { computed as computed4, onBeforeUnmount as onBeforeUnmount10, onMounted as onMounted7, ref as ref10, watch as watch7 } from "vue";
|
|
5969
6084
|
|
|
5970
6085
|
// src/theme/index.js
|
|
5971
|
-
import { ref as
|
|
6086
|
+
import { ref as ref9 } from "vue";
|
|
5972
6087
|
var KEY = "djm-theme";
|
|
5973
6088
|
var COLOR_KEY = "djm-primary";
|
|
5974
|
-
var
|
|
6089
|
+
var GLASS_KEY = "djm-glass";
|
|
6090
|
+
var theme = ref9("light");
|
|
6091
|
+
var glass = ref9(false);
|
|
5975
6092
|
var PRESET_COLORS = [
|
|
5976
6093
|
{ name: "\u9ED8\u8BA4\u84DD", value: "#1a6fc4" },
|
|
5977
6094
|
{ name: "\u79D1\u6280\u84DD", value: "#2563eb" },
|
|
@@ -5982,7 +6099,7 @@ var PRESET_COLORS = [
|
|
|
5982
6099
|
{ name: "\u6731\u7802\u7EA2", value: "#c0392b" },
|
|
5983
6100
|
{ name: "\u77F3\u58A8\u7070", value: "#4b5b6b" }
|
|
5984
6101
|
];
|
|
5985
|
-
var primaryColor =
|
|
6102
|
+
var primaryColor = ref9("");
|
|
5986
6103
|
var BRAND_VARS = [
|
|
5987
6104
|
"--djm-brand-50",
|
|
5988
6105
|
"--djm-brand-100",
|
|
@@ -6104,6 +6221,15 @@ function setTheme(name) {
|
|
|
6104
6221
|
function toggleTheme() {
|
|
6105
6222
|
setTheme(theme.value === "dark" ? "light" : "dark");
|
|
6106
6223
|
}
|
|
6224
|
+
function setGlass(enabled) {
|
|
6225
|
+
glass.value = !!enabled;
|
|
6226
|
+
document.documentElement.dataset.djmGlass = glass.value ? "on" : "";
|
|
6227
|
+
try {
|
|
6228
|
+
if (glass.value) localStorage.setItem(GLASS_KEY, "1");
|
|
6229
|
+
else localStorage.removeItem(GLASS_KEY);
|
|
6230
|
+
} catch (error) {
|
|
6231
|
+
}
|
|
6232
|
+
}
|
|
6107
6233
|
function initTheme() {
|
|
6108
6234
|
let saved = "";
|
|
6109
6235
|
try {
|
|
@@ -6123,9 +6249,16 @@ function initTheme() {
|
|
|
6123
6249
|
} catch (error) {
|
|
6124
6250
|
color = "";
|
|
6125
6251
|
}
|
|
6252
|
+
let glassSaved = false;
|
|
6253
|
+
try {
|
|
6254
|
+
glassSaved = localStorage.getItem(GLASS_KEY) === "1";
|
|
6255
|
+
} catch (error) {
|
|
6256
|
+
glassSaved = false;
|
|
6257
|
+
}
|
|
6126
6258
|
if (color) primaryColor.value = color;
|
|
6127
6259
|
const next = param === "dark" || param === "light" ? param : saved || "light";
|
|
6128
6260
|
setTheme(next);
|
|
6261
|
+
setGlass(glassSaved);
|
|
6129
6262
|
}
|
|
6130
6263
|
|
|
6131
6264
|
// src/components/watermark/index.js
|
|
@@ -6141,7 +6274,7 @@ var watermark_default = {
|
|
|
6141
6274
|
zIndex: { type: Number, default: 10 }
|
|
6142
6275
|
},
|
|
6143
6276
|
setup(props) {
|
|
6144
|
-
const dataUrl =
|
|
6277
|
+
const dataUrl = ref10("");
|
|
6145
6278
|
let canvasEl = null;
|
|
6146
6279
|
function build() {
|
|
6147
6280
|
const lines = (Array.isArray(props.content) ? props.content : [props.content]).filter(Boolean);
|
|
@@ -6183,8 +6316,8 @@ var watermark_default = {
|
|
|
6183
6316
|
zIndex: props.zIndex
|
|
6184
6317
|
}));
|
|
6185
6318
|
onMounted7(build);
|
|
6186
|
-
|
|
6187
|
-
|
|
6319
|
+
watch7(() => [props.content, props.gap, props.fontSize, props.color, props.rotate, theme.value], build, { deep: true });
|
|
6320
|
+
onBeforeUnmount10(() => {
|
|
6188
6321
|
canvasEl = null;
|
|
6189
6322
|
});
|
|
6190
6323
|
return { layerStyle };
|
|
@@ -6374,7 +6507,7 @@ var autocomplete_default = {
|
|
|
6374
6507
|
};
|
|
6375
6508
|
|
|
6376
6509
|
// src/components/splitter/index.js
|
|
6377
|
-
import { computed as computed5, onBeforeUnmount as
|
|
6510
|
+
import { computed as computed5, onBeforeUnmount as onBeforeUnmount11, ref as ref11 } from "vue";
|
|
6378
6511
|
var splitter_default = {
|
|
6379
6512
|
name: "DjmSplitter",
|
|
6380
6513
|
props: {
|
|
@@ -6387,8 +6520,8 @@ var splitter_default = {
|
|
|
6387
6520
|
},
|
|
6388
6521
|
emits: ["update:modelValue", "change"],
|
|
6389
6522
|
setup(props, { emit }) {
|
|
6390
|
-
const root =
|
|
6391
|
-
const dragging =
|
|
6523
|
+
const root = ref11(null);
|
|
6524
|
+
const dragging = ref11(false);
|
|
6392
6525
|
const ratio = computed5(() => {
|
|
6393
6526
|
const value = Number(props.modelValue);
|
|
6394
6527
|
const safe = Number.isFinite(value) ? value : 50;
|
|
@@ -6433,7 +6566,7 @@ var splitter_default = {
|
|
|
6433
6566
|
commit(ratio.value + step);
|
|
6434
6567
|
}
|
|
6435
6568
|
}
|
|
6436
|
-
|
|
6569
|
+
onBeforeUnmount11(stopDrag);
|
|
6437
6570
|
return { root, dragging, ratio, startDrag, onKeydown };
|
|
6438
6571
|
},
|
|
6439
6572
|
template: `
|
|
@@ -6470,7 +6603,7 @@ var splitter_default = {
|
|
|
6470
6603
|
};
|
|
6471
6604
|
|
|
6472
6605
|
// src/components/carousel/index.js
|
|
6473
|
-
import { onBeforeUnmount as
|
|
6606
|
+
import { onBeforeUnmount as onBeforeUnmount12, onMounted as onMounted8, ref as ref12, watch as watch8 } from "vue";
|
|
6474
6607
|
var carousel_default = {
|
|
6475
6608
|
name: "DjmCarousel",
|
|
6476
6609
|
components: { DjmIcon: icon_default },
|
|
@@ -6484,7 +6617,7 @@ var carousel_default = {
|
|
|
6484
6617
|
},
|
|
6485
6618
|
emits: ["change"],
|
|
6486
6619
|
setup(props, { emit }) {
|
|
6487
|
-
const index =
|
|
6620
|
+
const index = ref12(0);
|
|
6488
6621
|
let timer = null;
|
|
6489
6622
|
const boxStyle = () => ({
|
|
6490
6623
|
height: typeof props.height === "number" ? props.height + "px" : props.height
|
|
@@ -6522,14 +6655,14 @@ var carousel_default = {
|
|
|
6522
6655
|
}
|
|
6523
6656
|
}
|
|
6524
6657
|
onMounted8(start);
|
|
6525
|
-
|
|
6658
|
+
watch8(() => [props.autoplay, props.interval, props.items.length], start);
|
|
6526
6659
|
function pause() {
|
|
6527
6660
|
if (props.autoplay) stop();
|
|
6528
6661
|
}
|
|
6529
6662
|
function resume() {
|
|
6530
6663
|
if (props.autoplay) start();
|
|
6531
6664
|
}
|
|
6532
|
-
|
|
6665
|
+
onBeforeUnmount12(stop);
|
|
6533
6666
|
return { index, boxStyle, go, next, prev, onKeydown, pause, resume };
|
|
6534
6667
|
},
|
|
6535
6668
|
template: `
|
|
@@ -6589,7 +6722,7 @@ var carousel_default = {
|
|
|
6589
6722
|
};
|
|
6590
6723
|
|
|
6591
6724
|
// src/components/tour/index.js
|
|
6592
|
-
import { computed as computed6, nextTick as nextTick5, onBeforeUnmount as
|
|
6725
|
+
import { computed as computed6, nextTick as nextTick5, onBeforeUnmount as onBeforeUnmount13, onMounted as onMounted9, ref as ref13, watch as watch9 } from "vue";
|
|
6593
6726
|
var tour_default = {
|
|
6594
6727
|
name: "DjmTour",
|
|
6595
6728
|
components: { DjmIcon: icon_default },
|
|
@@ -6601,10 +6734,10 @@ var tour_default = {
|
|
|
6601
6734
|
},
|
|
6602
6735
|
emits: ["update:modelValue", "change", "finish"],
|
|
6603
6736
|
setup(props, { emit }) {
|
|
6604
|
-
const current =
|
|
6605
|
-
const highlight =
|
|
6606
|
-
const cardStyle =
|
|
6607
|
-
const card =
|
|
6737
|
+
const current = ref13(0);
|
|
6738
|
+
const highlight = ref13({ top: "0px", left: "0px", width: "0px", height: "0px" });
|
|
6739
|
+
const cardStyle = ref13({ position: "fixed", left: "0px", top: "0px", visibility: "hidden" });
|
|
6740
|
+
const card = ref13(null);
|
|
6608
6741
|
const step = computed6(() => props.steps[current.value] || null);
|
|
6609
6742
|
function update() {
|
|
6610
6743
|
const scene = step.value;
|
|
@@ -6665,14 +6798,14 @@ var tour_default = {
|
|
|
6665
6798
|
emit("change", current.value);
|
|
6666
6799
|
nextTick5(update);
|
|
6667
6800
|
}
|
|
6668
|
-
|
|
6801
|
+
watch9(() => props.modelValue, (value) => {
|
|
6669
6802
|
if (value) startScene();
|
|
6670
6803
|
else stopScene();
|
|
6671
6804
|
});
|
|
6672
6805
|
onMounted9(() => {
|
|
6673
6806
|
if (props.modelValue) startScene();
|
|
6674
6807
|
});
|
|
6675
|
-
|
|
6808
|
+
onBeforeUnmount13(stopScene);
|
|
6676
6809
|
return { current, step, highlight, cardStyle, card, close: close2, next, prev, t };
|
|
6677
6810
|
},
|
|
6678
6811
|
template: `
|
|
@@ -6710,7 +6843,7 @@ var tour_default = {
|
|
|
6710
6843
|
};
|
|
6711
6844
|
|
|
6712
6845
|
// src/components/calendar/index.js
|
|
6713
|
-
import { computed as computed7, ref as
|
|
6846
|
+
import { computed as computed7, ref as ref14, watch as watch10 } from "vue";
|
|
6714
6847
|
function pad2(num) {
|
|
6715
6848
|
return String(num).padStart(2, "0");
|
|
6716
6849
|
}
|
|
@@ -6740,8 +6873,8 @@ var calendar_default = {
|
|
|
6740
6873
|
const today = /* @__PURE__ */ new Date();
|
|
6741
6874
|
const todayKey = toKey(today.getFullYear(), today.getMonth(), today.getDate());
|
|
6742
6875
|
const initial = parse(props.modelValue);
|
|
6743
|
-
const viewYear =
|
|
6744
|
-
const viewMonth =
|
|
6876
|
+
const viewYear = ref14(initial ? initial.year : today.getFullYear());
|
|
6877
|
+
const viewMonth = ref14(initial ? initial.month : today.getMonth());
|
|
6745
6878
|
const weekNames = computed7(() => {
|
|
6746
6879
|
const base = ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"];
|
|
6747
6880
|
return base.slice(props.firstDay).concat(base.slice(0, props.firstDay));
|
|
@@ -6807,7 +6940,7 @@ var calendar_default = {
|
|
|
6807
6940
|
event.preventDefault();
|
|
6808
6941
|
list[next].focus();
|
|
6809
6942
|
}
|
|
6810
|
-
|
|
6943
|
+
watch10(() => props.modelValue, (value) => {
|
|
6811
6944
|
const parts = parse(value);
|
|
6812
6945
|
if (parts && (parts.year !== viewYear.value || parts.month !== viewMonth.value)) {
|
|
6813
6946
|
viewYear.value = parts.year;
|
|
@@ -6861,7 +6994,7 @@ var calendar_default = {
|
|
|
6861
6994
|
};
|
|
6862
6995
|
|
|
6863
6996
|
// src/components/float-button/index.js
|
|
6864
|
-
import { onBeforeUnmount as
|
|
6997
|
+
import { onBeforeUnmount as onBeforeUnmount14, ref as ref15 } from "vue";
|
|
6865
6998
|
var float_button_default = {
|
|
6866
6999
|
name: "DjmFloatButton",
|
|
6867
7000
|
components: { DjmIcon: icon_default },
|
|
@@ -6877,7 +7010,7 @@ var float_button_default = {
|
|
|
6877
7010
|
},
|
|
6878
7011
|
emits: ["click", "select"],
|
|
6879
7012
|
setup(props, { emit }) {
|
|
6880
|
-
const open =
|
|
7013
|
+
const open = ref15(false);
|
|
6881
7014
|
function onKeydown(event) {
|
|
6882
7015
|
if (event.key === "Escape") close2();
|
|
6883
7016
|
}
|
|
@@ -6912,7 +7045,7 @@ var float_button_default = {
|
|
|
6912
7045
|
emit("select", item);
|
|
6913
7046
|
if (typeof item.onClick === "function") item.onClick(item);
|
|
6914
7047
|
}
|
|
6915
|
-
|
|
7048
|
+
onBeforeUnmount14(close2);
|
|
6916
7049
|
return { open, onMainClick, choose };
|
|
6917
7050
|
},
|
|
6918
7051
|
template: `
|
|
@@ -6947,7 +7080,7 @@ var float_button_default = {
|
|
|
6947
7080
|
};
|
|
6948
7081
|
|
|
6949
7082
|
// src/components/mentions/index.js
|
|
6950
|
-
import { computed as computed8, nextTick as nextTick6, onBeforeUnmount as
|
|
7083
|
+
import { computed as computed8, nextTick as nextTick6, onBeforeUnmount as onBeforeUnmount15, ref as ref16, watch as watch11 } from "vue";
|
|
6951
7084
|
var uidSeed3 = 0;
|
|
6952
7085
|
var mentions_default = {
|
|
6953
7086
|
name: "DjmMentions",
|
|
@@ -6962,17 +7095,17 @@ var mentions_default = {
|
|
|
6962
7095
|
},
|
|
6963
7096
|
emits: ["update:modelValue", "input", "select"],
|
|
6964
7097
|
setup(props, { emit }) {
|
|
6965
|
-
const root =
|
|
6966
|
-
const input =
|
|
6967
|
-
const text =
|
|
6968
|
-
const open =
|
|
6969
|
-
const keyword =
|
|
6970
|
-
const activeIndex =
|
|
7098
|
+
const root = ref16(null);
|
|
7099
|
+
const input = ref16(null);
|
|
7100
|
+
const text = ref16(props.modelValue);
|
|
7101
|
+
const open = ref16(false);
|
|
7102
|
+
const keyword = ref16("");
|
|
7103
|
+
const activeIndex = ref16(-1);
|
|
6971
7104
|
const listId = "djm-mentions-" + ++uidSeed3;
|
|
6972
|
-
const panelStyle =
|
|
7105
|
+
const panelStyle = ref16({ ...PANEL_HIDDEN_STYLE });
|
|
6973
7106
|
let triggerIndex = -1;
|
|
6974
7107
|
let detachPanel = null;
|
|
6975
|
-
|
|
7108
|
+
watch11(() => props.modelValue, (value) => {
|
|
6976
7109
|
text.value = value;
|
|
6977
7110
|
});
|
|
6978
7111
|
const normalized = computed8(() => props.options.map((item) => typeof item === "string" ? { value: item, label: item } : item));
|
|
@@ -7065,7 +7198,7 @@ var mentions_default = {
|
|
|
7065
7198
|
input.value.setSelectionRange(pos, pos);
|
|
7066
7199
|
});
|
|
7067
7200
|
}
|
|
7068
|
-
|
|
7201
|
+
onBeforeUnmount15(closePanel);
|
|
7069
7202
|
return {
|
|
7070
7203
|
root,
|
|
7071
7204
|
input,
|
|
@@ -7339,7 +7472,7 @@ var input_tag_default = {
|
|
|
7339
7472
|
};
|
|
7340
7473
|
|
|
7341
7474
|
// src/components/password/index.js
|
|
7342
|
-
import { computed as computed9, ref as
|
|
7475
|
+
import { computed as computed9, ref as ref17 } from "vue";
|
|
7343
7476
|
var password_default = {
|
|
7344
7477
|
name: "DjmPassword",
|
|
7345
7478
|
components: { DjmIcon: icon_default },
|
|
@@ -7353,7 +7486,7 @@ var password_default = {
|
|
|
7353
7486
|
},
|
|
7354
7487
|
emits: ["update:modelValue", "input", "change", "enter", "focus", "blur"],
|
|
7355
7488
|
setup(props, { emit }) {
|
|
7356
|
-
const visible =
|
|
7489
|
+
const visible = ref17(false);
|
|
7357
7490
|
const score = computed9(() => {
|
|
7358
7491
|
const value = props.modelValue || "";
|
|
7359
7492
|
if (!value) return 0;
|
|
@@ -7419,7 +7552,7 @@ var password_default = {
|
|
|
7419
7552
|
};
|
|
7420
7553
|
|
|
7421
7554
|
// src/components/command-palette/index.js
|
|
7422
|
-
import { computed as computed10, nextTick as nextTick7, onBeforeUnmount as
|
|
7555
|
+
import { computed as computed10, nextTick as nextTick7, onBeforeUnmount as onBeforeUnmount16, onMounted as onMounted10, ref as ref18, watch as watch12 } from "vue";
|
|
7423
7556
|
|
|
7424
7557
|
// src/utils/focus-trap.js
|
|
7425
7558
|
var FOCUSABLE = [
|
|
@@ -7472,11 +7605,11 @@ var command_palette_default = {
|
|
|
7472
7605
|
},
|
|
7473
7606
|
emits: ["update:modelValue", "run"],
|
|
7474
7607
|
setup(props, { emit }) {
|
|
7475
|
-
const open =
|
|
7476
|
-
const keyword =
|
|
7477
|
-
const activeIndex =
|
|
7478
|
-
const searchInput =
|
|
7479
|
-
const panelEl =
|
|
7608
|
+
const open = ref18(false);
|
|
7609
|
+
const keyword = ref18("");
|
|
7610
|
+
const activeIndex = ref18(-1);
|
|
7611
|
+
const searchInput = ref18(null);
|
|
7612
|
+
const panelEl = ref18(null);
|
|
7480
7613
|
const listId = "djm-command-list-" + ++uidSeed4;
|
|
7481
7614
|
let releaseTrap = null;
|
|
7482
7615
|
const filtered = computed10(() => {
|
|
@@ -7559,12 +7692,12 @@ var command_palette_default = {
|
|
|
7559
7692
|
if (typeof item.run === "function") item.run(item);
|
|
7560
7693
|
hide();
|
|
7561
7694
|
}
|
|
7562
|
-
|
|
7695
|
+
watch12(() => props.modelValue, (value) => {
|
|
7563
7696
|
if (value) show();
|
|
7564
7697
|
else hide();
|
|
7565
7698
|
});
|
|
7566
7699
|
onMounted10(() => window.addEventListener("keydown", onGlobalKeydown));
|
|
7567
|
-
|
|
7700
|
+
onBeforeUnmount16(() => {
|
|
7568
7701
|
window.removeEventListener("keydown", onGlobalKeydown);
|
|
7569
7702
|
hide();
|
|
7570
7703
|
});
|
|
@@ -7616,7 +7749,7 @@ var command_palette_default = {
|
|
|
7616
7749
|
};
|
|
7617
7750
|
|
|
7618
7751
|
// src/components/qrcode/index.js
|
|
7619
|
-
import { onMounted as onMounted11, ref as
|
|
7752
|
+
import { onMounted as onMounted11, ref as ref19, watch as watch13 } from "vue";
|
|
7620
7753
|
var qrcode_default = {
|
|
7621
7754
|
name: "DjmQRCode",
|
|
7622
7755
|
props: {
|
|
@@ -7631,8 +7764,8 @@ var qrcode_default = {
|
|
|
7631
7764
|
alt: { type: String, default: "\u4E8C\u7EF4\u7801" }
|
|
7632
7765
|
},
|
|
7633
7766
|
setup(props) {
|
|
7634
|
-
const src =
|
|
7635
|
-
const error =
|
|
7767
|
+
const src = ref19("");
|
|
7768
|
+
const error = ref19("");
|
|
7636
7769
|
let lib = null;
|
|
7637
7770
|
let seq2 = 0;
|
|
7638
7771
|
async function ensureLib() {
|
|
@@ -7669,7 +7802,7 @@ var qrcode_default = {
|
|
|
7669
7802
|
}
|
|
7670
7803
|
}
|
|
7671
7804
|
onMounted11(render);
|
|
7672
|
-
|
|
7805
|
+
watch13(() => [props.value, props.size, props.level, props.margin, props.dark, props.light], render);
|
|
7673
7806
|
return { src, error };
|
|
7674
7807
|
},
|
|
7675
7808
|
template: `
|
|
@@ -7708,7 +7841,7 @@ var status_default = {
|
|
|
7708
7841
|
};
|
|
7709
7842
|
|
|
7710
7843
|
// src/components/tooltip/index.js
|
|
7711
|
-
import { ref as
|
|
7844
|
+
import { ref as ref20, nextTick as nextTick8, onBeforeUnmount as onBeforeUnmount17 } from "vue";
|
|
7712
7845
|
var uid2 = 0;
|
|
7713
7846
|
var tooltip_default = {
|
|
7714
7847
|
name: "DjmTooltip",
|
|
@@ -7719,11 +7852,11 @@ var tooltip_default = {
|
|
|
7719
7852
|
delay: { type: Number, default: 80 }
|
|
7720
7853
|
},
|
|
7721
7854
|
setup(props) {
|
|
7722
|
-
const visible =
|
|
7723
|
-
const rootRef =
|
|
7724
|
-
const contentRef =
|
|
7725
|
-
const actualPlacement =
|
|
7726
|
-
const panelStyle =
|
|
7855
|
+
const visible = ref20(false);
|
|
7856
|
+
const rootRef = ref20(null);
|
|
7857
|
+
const contentRef = ref20(null);
|
|
7858
|
+
const actualPlacement = ref20(props.placement);
|
|
7859
|
+
const panelStyle = ref20({});
|
|
7727
7860
|
const tipId = "djm-tooltip-" + ++uid2;
|
|
7728
7861
|
let timer = null;
|
|
7729
7862
|
function triggerEl() {
|
|
@@ -7794,7 +7927,7 @@ var tooltip_default = {
|
|
|
7794
7927
|
bindTrigger(false);
|
|
7795
7928
|
bindReposition(false);
|
|
7796
7929
|
}
|
|
7797
|
-
|
|
7930
|
+
onBeforeUnmount17(() => {
|
|
7798
7931
|
window.clearTimeout(timer);
|
|
7799
7932
|
bindReposition(false);
|
|
7800
7933
|
});
|
|
@@ -7819,7 +7952,7 @@ var tooltip_default = {
|
|
|
7819
7952
|
};
|
|
7820
7953
|
|
|
7821
7954
|
// src/components/dropdown/index.js
|
|
7822
|
-
import { nextTick as nextTick9, onBeforeUnmount as
|
|
7955
|
+
import { nextTick as nextTick9, onBeforeUnmount as onBeforeUnmount18, onMounted as onMounted12, ref as ref21, watch as watch14 } from "vue";
|
|
7823
7956
|
var dropdown_default = {
|
|
7824
7957
|
name: "DjmDropdown",
|
|
7825
7958
|
components: { DjmIcon: icon_default },
|
|
@@ -7836,10 +7969,10 @@ var dropdown_default = {
|
|
|
7836
7969
|
},
|
|
7837
7970
|
emits: ["select", "visible-change"],
|
|
7838
7971
|
setup(props, { emit }) {
|
|
7839
|
-
const open =
|
|
7840
|
-
const root =
|
|
7841
|
-
const menuEl =
|
|
7842
|
-
const panelStyle =
|
|
7972
|
+
const open = ref21(false);
|
|
7973
|
+
const root = ref21(null);
|
|
7974
|
+
const menuEl = ref21(null);
|
|
7975
|
+
const panelStyle = ref21({});
|
|
7843
7976
|
let detachPanel = null;
|
|
7844
7977
|
function syncTriggerA11y() {
|
|
7845
7978
|
const wrapper = root.value && root.value.querySelector(".djm-dropdown-trigger");
|
|
@@ -7853,7 +7986,7 @@ var dropdown_default = {
|
|
|
7853
7986
|
else target.removeAttribute("aria-disabled");
|
|
7854
7987
|
}
|
|
7855
7988
|
onMounted12(() => nextTick9(syncTriggerA11y));
|
|
7856
|
-
|
|
7989
|
+
watch14(open, () => nextTick9(syncTriggerA11y));
|
|
7857
7990
|
function updatePosition() {
|
|
7858
7991
|
if (!open.value || !root.value) return;
|
|
7859
7992
|
const rect = root.value.getBoundingClientRect();
|
|
@@ -7956,7 +8089,7 @@ var dropdown_default = {
|
|
|
7956
8089
|
emit("select", item);
|
|
7957
8090
|
if (props.closeOnSelect) close2();
|
|
7958
8091
|
}
|
|
7959
|
-
|
|
8092
|
+
onBeforeUnmount18(() => {
|
|
7960
8093
|
window.clearTimeout(hoverTimer);
|
|
7961
8094
|
close2();
|
|
7962
8095
|
});
|
|
@@ -8021,7 +8154,7 @@ var dropdown_default = {
|
|
|
8021
8154
|
};
|
|
8022
8155
|
|
|
8023
8156
|
// src/components/drawer/index.js
|
|
8024
|
-
import { ref as
|
|
8157
|
+
import { ref as ref22, nextTick as nextTick10, watch as watch15, onMounted as onMounted13, onBeforeUnmount as onBeforeUnmount19 } from "vue";
|
|
8025
8158
|
var uid3 = 0;
|
|
8026
8159
|
var drawer_default = {
|
|
8027
8160
|
name: "DjmDrawer",
|
|
@@ -8034,11 +8167,13 @@ var drawer_default = {
|
|
|
8034
8167
|
// 点击遮罩关闭
|
|
8035
8168
|
maskClosable: { type: Boolean, default: true },
|
|
8036
8169
|
showClose: { type: Boolean, default: true },
|
|
8037
|
-
closeOnEsc: { type: Boolean, default: true }
|
|
8170
|
+
closeOnEsc: { type: Boolean, default: true },
|
|
8171
|
+
// 毛玻璃底
|
|
8172
|
+
glass: { type: Boolean, default: false }
|
|
8038
8173
|
},
|
|
8039
8174
|
emits: ["update:modelValue", "open", "close"],
|
|
8040
8175
|
setup(props, { emit }) {
|
|
8041
|
-
const panelRef =
|
|
8176
|
+
const panelRef = ref22(null);
|
|
8042
8177
|
const titleId = `djm-drawer-title-${++uid3}`;
|
|
8043
8178
|
let locked = false;
|
|
8044
8179
|
let releaseTrap = null;
|
|
@@ -8071,14 +8206,14 @@ var drawer_default = {
|
|
|
8071
8206
|
}
|
|
8072
8207
|
emit("close");
|
|
8073
8208
|
}
|
|
8074
|
-
|
|
8209
|
+
watch15(() => props.modelValue, (open) => {
|
|
8075
8210
|
if (open) activate();
|
|
8076
8211
|
else deactivate();
|
|
8077
8212
|
});
|
|
8078
8213
|
onMounted13(() => {
|
|
8079
8214
|
if (props.modelValue) activate();
|
|
8080
8215
|
});
|
|
8081
|
-
|
|
8216
|
+
onBeforeUnmount19(() => {
|
|
8082
8217
|
document.removeEventListener("keydown", onKeydown);
|
|
8083
8218
|
release();
|
|
8084
8219
|
if (locked) unlockScroll();
|
|
@@ -8097,7 +8232,7 @@ var drawer_default = {
|
|
|
8097
8232
|
<aside
|
|
8098
8233
|
ref="panelRef"
|
|
8099
8234
|
class="djm-drawer"
|
|
8100
|
-
:class="'djm-drawer-' + placement"
|
|
8235
|
+
:class="['djm-drawer-' + placement, { 'djm-is-glass': glass }]"
|
|
8101
8236
|
:style="panelStyle"
|
|
8102
8237
|
role="dialog"
|
|
8103
8238
|
aria-modal="true"
|
|
@@ -8132,7 +8267,7 @@ var drawer_default = {
|
|
|
8132
8267
|
};
|
|
8133
8268
|
|
|
8134
8269
|
// src/components/modal/index.js
|
|
8135
|
-
import { ref as
|
|
8270
|
+
import { ref as ref23, nextTick as nextTick11, watch as watch16, computed as computed11, onMounted as onMounted14, onBeforeUnmount as onBeforeUnmount20 } from "vue";
|
|
8136
8271
|
var uid4 = 0;
|
|
8137
8272
|
var modal_default = {
|
|
8138
8273
|
name: "DjmModal",
|
|
@@ -8147,11 +8282,13 @@ var modal_default = {
|
|
|
8147
8282
|
// 是否允许 Esc 关闭
|
|
8148
8283
|
closeOnEsc: { type: Boolean, default: true },
|
|
8149
8284
|
// 全屏铺满,适合配置类大表单
|
|
8150
|
-
fullscreen: { type: Boolean, default: false }
|
|
8285
|
+
fullscreen: { type: Boolean, default: false },
|
|
8286
|
+
// 毛玻璃底:需要显示背后页面时使用
|
|
8287
|
+
glass: { type: Boolean, default: false }
|
|
8151
8288
|
},
|
|
8152
8289
|
emits: ["update:modelValue", "open", "close"],
|
|
8153
8290
|
setup(props, { emit }) {
|
|
8154
|
-
const dialogRef =
|
|
8291
|
+
const dialogRef = ref23(null);
|
|
8155
8292
|
const titleId = `djm-modal-title-${++uid4}`;
|
|
8156
8293
|
let locked = false;
|
|
8157
8294
|
let releaseTrap = null;
|
|
@@ -8184,14 +8321,14 @@ var modal_default = {
|
|
|
8184
8321
|
}
|
|
8185
8322
|
emit("close");
|
|
8186
8323
|
}
|
|
8187
|
-
|
|
8324
|
+
watch16(() => props.modelValue, (open) => {
|
|
8188
8325
|
if (open) activate();
|
|
8189
8326
|
else deactivate();
|
|
8190
8327
|
});
|
|
8191
8328
|
onMounted14(() => {
|
|
8192
8329
|
if (props.modelValue) activate();
|
|
8193
8330
|
});
|
|
8194
|
-
|
|
8331
|
+
onBeforeUnmount20(() => {
|
|
8195
8332
|
document.removeEventListener("keydown", onKey);
|
|
8196
8333
|
release();
|
|
8197
8334
|
if (locked) unlockScroll();
|
|
@@ -8213,7 +8350,7 @@ var modal_default = {
|
|
|
8213
8350
|
<div
|
|
8214
8351
|
ref="dialogRef"
|
|
8215
8352
|
class="djm-modal"
|
|
8216
|
-
:class="{ 'djm-is-fullscreen': fullscreen }"
|
|
8353
|
+
:class="{ 'djm-is-fullscreen': fullscreen, 'djm-is-glass': glass }"
|
|
8217
8354
|
:style="dialogStyle"
|
|
8218
8355
|
role="dialog"
|
|
8219
8356
|
aria-modal="true"
|
|
@@ -8311,7 +8448,7 @@ var confirm_dialog_default = {
|
|
|
8311
8448
|
};
|
|
8312
8449
|
|
|
8313
8450
|
// src/components/pagination/index.js
|
|
8314
|
-
import { computed as computed12, ref as
|
|
8451
|
+
import { computed as computed12, ref as ref24 } from "vue";
|
|
8315
8452
|
var pagination_default = {
|
|
8316
8453
|
name: "DjmPagination",
|
|
8317
8454
|
components: { Icon: icon_default },
|
|
@@ -8323,7 +8460,7 @@ var pagination_default = {
|
|
|
8323
8460
|
},
|
|
8324
8461
|
emits: ["update:page", "update:pageSize", "change"],
|
|
8325
8462
|
setup(props, { emit }) {
|
|
8326
|
-
const jumpText =
|
|
8463
|
+
const jumpText = ref24("");
|
|
8327
8464
|
const pageCount = computed12(() => Math.max(1, Math.ceil(props.total / Math.max(1, props.pageSize))));
|
|
8328
8465
|
const current = computed12(() => Math.min(Math.max(1, props.page), pageCount.value));
|
|
8329
8466
|
const pages = computed12(() => {
|
|
@@ -8543,7 +8680,7 @@ var tabs_default = {
|
|
|
8543
8680
|
};
|
|
8544
8681
|
|
|
8545
8682
|
// src/components/context-menu/index.js
|
|
8546
|
-
import { ref as
|
|
8683
|
+
import { ref as ref25, watch as watch17, nextTick as nextTick12, onBeforeUnmount as onBeforeUnmount21 } from "vue";
|
|
8547
8684
|
var context_menu_default = {
|
|
8548
8685
|
name: "DjmContextMenu",
|
|
8549
8686
|
components: { Icon: icon_default },
|
|
@@ -8555,8 +8692,8 @@ var context_menu_default = {
|
|
|
8555
8692
|
},
|
|
8556
8693
|
emits: ["update:modelValue", "select"],
|
|
8557
8694
|
setup(props, { emit }) {
|
|
8558
|
-
const menuRef =
|
|
8559
|
-
const pos =
|
|
8695
|
+
const menuRef = ref25(null);
|
|
8696
|
+
const pos = ref25({ left: 0, top: 0 });
|
|
8560
8697
|
const margin = 8;
|
|
8561
8698
|
function close2() {
|
|
8562
8699
|
emit("update:modelValue", false);
|
|
@@ -8618,7 +8755,7 @@ var context_menu_default = {
|
|
|
8618
8755
|
detach = null;
|
|
8619
8756
|
}
|
|
8620
8757
|
}
|
|
8621
|
-
|
|
8758
|
+
watch17(
|
|
8622
8759
|
() => props.modelValue,
|
|
8623
8760
|
(open) => {
|
|
8624
8761
|
if (open) {
|
|
@@ -8629,10 +8766,10 @@ var context_menu_default = {
|
|
|
8629
8766
|
}
|
|
8630
8767
|
}
|
|
8631
8768
|
);
|
|
8632
|
-
|
|
8769
|
+
watch17([() => props.x, () => props.y], () => {
|
|
8633
8770
|
if (props.modelValue) openAtCursor();
|
|
8634
8771
|
});
|
|
8635
|
-
|
|
8772
|
+
onBeforeUnmount21(unbind);
|
|
8636
8773
|
return { menuRef, pos, close: close2, onSelect, onKeydown, t };
|
|
8637
8774
|
},
|
|
8638
8775
|
template: `
|
|
@@ -8671,7 +8808,7 @@ var context_menu_default = {
|
|
|
8671
8808
|
};
|
|
8672
8809
|
|
|
8673
8810
|
// src/components/date-picker/index.js
|
|
8674
|
-
import { ref as
|
|
8811
|
+
import { ref as ref26, computed as computed14, onBeforeUnmount as onBeforeUnmount22, watch as watch18 } from "vue";
|
|
8675
8812
|
var uidSeed5 = 0;
|
|
8676
8813
|
function pad3(value) {
|
|
8677
8814
|
return String(value).padStart(2, "0");
|
|
@@ -8706,12 +8843,12 @@ var date_picker_default = {
|
|
|
8706
8843
|
},
|
|
8707
8844
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
8708
8845
|
setup(props, { emit }) {
|
|
8709
|
-
const open =
|
|
8710
|
-
|
|
8711
|
-
const root =
|
|
8712
|
-
const panel =
|
|
8846
|
+
const open = ref26(false);
|
|
8847
|
+
watch18(open, (value) => emit("visible-change", value));
|
|
8848
|
+
const root = ref26(null);
|
|
8849
|
+
const panel = ref26(null);
|
|
8713
8850
|
const panelId = "djm-date-panel-" + ++uidSeed5;
|
|
8714
|
-
const panelStyle =
|
|
8851
|
+
const panelStyle = ref26({ ...PANEL_HIDDEN_STYLE });
|
|
8715
8852
|
let detachPanel = null;
|
|
8716
8853
|
const today = /* @__PURE__ */ new Date();
|
|
8717
8854
|
const todayKey = toKey2(today.getFullYear(), today.getMonth(), today.getDate());
|
|
@@ -8726,16 +8863,16 @@ var date_picker_default = {
|
|
|
8726
8863
|
return end ? `${start} ~ ${end}` : `${start} ~ ${t("datePicker.rangeEnd")}`;
|
|
8727
8864
|
});
|
|
8728
8865
|
const initial = parse2(values.value[0]);
|
|
8729
|
-
const viewYear =
|
|
8730
|
-
const viewMonth =
|
|
8731
|
-
const pendingStart =
|
|
8732
|
-
const pendingEnd =
|
|
8866
|
+
const viewYear = ref26(initial ? initial.year : today.getFullYear());
|
|
8867
|
+
const viewMonth = ref26(initial ? initial.month : today.getMonth());
|
|
8868
|
+
const pendingStart = ref26(values.value[0] || "");
|
|
8869
|
+
const pendingEnd = ref26(values.value[1] || "");
|
|
8733
8870
|
const placeholderText = computed14(() => {
|
|
8734
8871
|
if (props.placeholder) return props.placeholder;
|
|
8735
8872
|
return t(props.range ? "datePicker.rangePlaceholder" : "datePicker.placeholder");
|
|
8736
8873
|
});
|
|
8737
8874
|
const weeks = computed14(() => t("datePicker.weeks").split(","));
|
|
8738
|
-
const narrow =
|
|
8875
|
+
const narrow = ref26(false);
|
|
8739
8876
|
let media = null;
|
|
8740
8877
|
const onMediaChange = (event) => {
|
|
8741
8878
|
narrow.value = event.matches;
|
|
@@ -8746,13 +8883,13 @@ var date_picker_default = {
|
|
|
8746
8883
|
if (media.addEventListener) media.addEventListener("change", onMediaChange);
|
|
8747
8884
|
else media.addListener(onMediaChange);
|
|
8748
8885
|
}
|
|
8749
|
-
|
|
8886
|
+
onBeforeUnmount22(() => {
|
|
8750
8887
|
if (!media) return;
|
|
8751
8888
|
if (media.removeEventListener) media.removeEventListener("change", onMediaChange);
|
|
8752
8889
|
else media.removeListener(onMediaChange);
|
|
8753
8890
|
});
|
|
8754
8891
|
const panelCount = computed14(() => props.range ? Math.min(narrow.value ? 1 : 2, Math.max(1, props.panels)) : 1);
|
|
8755
|
-
const hoverKey =
|
|
8892
|
+
const hoverKey = ref26("");
|
|
8756
8893
|
const hoverRange = computed14(() => {
|
|
8757
8894
|
if (!props.range || !pendingStart.value || pendingEnd.value || !hoverKey.value) return null;
|
|
8758
8895
|
const a = pendingStart.value;
|
|
@@ -8932,7 +9069,7 @@ var date_picker_default = {
|
|
|
8932
9069
|
pendingEnd.value = "";
|
|
8933
9070
|
closePanel();
|
|
8934
9071
|
}
|
|
8935
|
-
|
|
9072
|
+
onBeforeUnmount22(() => {
|
|
8936
9073
|
if (detachPanel) {
|
|
8937
9074
|
detachPanel();
|
|
8938
9075
|
detachPanel = null;
|
|
@@ -9061,7 +9198,7 @@ var date_picker_default = {
|
|
|
9061
9198
|
};
|
|
9062
9199
|
|
|
9063
9200
|
// src/components/tree-select/index.js
|
|
9064
|
-
import { ref as
|
|
9201
|
+
import { ref as ref27, computed as computed15, nextTick as nextTick13, onBeforeUnmount as onBeforeUnmount23, watch as watch19 } from "vue";
|
|
9065
9202
|
function collectLeaves(node, keyOf2, out = []) {
|
|
9066
9203
|
if (node.children && node.children.length) {
|
|
9067
9204
|
node.children.forEach((child) => collectLeaves(child, keyOf2, out));
|
|
@@ -9097,13 +9234,13 @@ var tree_select_default = {
|
|
|
9097
9234
|
},
|
|
9098
9235
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
9099
9236
|
setup(props, { emit }) {
|
|
9100
|
-
const open =
|
|
9101
|
-
const root =
|
|
9102
|
-
const panel =
|
|
9103
|
-
const searchInput =
|
|
9104
|
-
const search =
|
|
9105
|
-
const temp =
|
|
9106
|
-
const panelStyle =
|
|
9237
|
+
const open = ref27(false);
|
|
9238
|
+
const root = ref27(null);
|
|
9239
|
+
const panel = ref27(null);
|
|
9240
|
+
const searchInput = ref27(null);
|
|
9241
|
+
const search = ref27("");
|
|
9242
|
+
const temp = ref27([]);
|
|
9243
|
+
const panelStyle = ref27({ ...PANEL_HIDDEN_STYLE });
|
|
9107
9244
|
let detachPanel = null;
|
|
9108
9245
|
function keyOf2(node) {
|
|
9109
9246
|
return node ? node[props.nodeKey] : void 0;
|
|
@@ -9112,7 +9249,7 @@ var tree_select_default = {
|
|
|
9112
9249
|
const value = node ? node[props.labelKey] : "";
|
|
9113
9250
|
return value === null || value === void 0 ? "" : String(value);
|
|
9114
9251
|
}
|
|
9115
|
-
const expandedIds =
|
|
9252
|
+
const expandedIds = ref27(
|
|
9116
9253
|
new Set(
|
|
9117
9254
|
collectNodes(props.options).filter((node) => node.children && node.children.length).map((node) => keyOf2(node))
|
|
9118
9255
|
)
|
|
@@ -9122,7 +9259,7 @@ var tree_select_default = {
|
|
|
9122
9259
|
collectNodes(props.options).forEach((node) => map.set(keyOf2(node), node));
|
|
9123
9260
|
return map;
|
|
9124
9261
|
});
|
|
9125
|
-
|
|
9262
|
+
watch19(() => props.options, (options) => {
|
|
9126
9263
|
if (!options || !options.length || expandedIds.value.size) return;
|
|
9127
9264
|
expandedIds.value = new Set(
|
|
9128
9265
|
collectNodes(options).filter((node) => node.children && node.children.length).map((node) => keyOf2(node))
|
|
@@ -9281,7 +9418,7 @@ var tree_select_default = {
|
|
|
9281
9418
|
emit("change", []);
|
|
9282
9419
|
temp.value = [];
|
|
9283
9420
|
}
|
|
9284
|
-
|
|
9421
|
+
onBeforeUnmount23(() => {
|
|
9285
9422
|
if (detachPanel) {
|
|
9286
9423
|
detachPanel();
|
|
9287
9424
|
detachPanel = null;
|
|
@@ -9420,10 +9557,10 @@ var tree_select_default = {
|
|
|
9420
9557
|
};
|
|
9421
9558
|
|
|
9422
9559
|
// src/components/rich-editor/index.js
|
|
9423
|
-
import { ref as
|
|
9560
|
+
import { ref as ref29, computed as computed17, watch as watch21, onMounted as onMounted15, onBeforeUnmount as onBeforeUnmount24 } from "vue";
|
|
9424
9561
|
|
|
9425
9562
|
// src/components/media-picker/index.js
|
|
9426
|
-
import { computed as computed16, ref as
|
|
9563
|
+
import { computed as computed16, ref as ref28, watch as watch20 } from "vue";
|
|
9427
9564
|
var media_picker_default = {
|
|
9428
9565
|
name: "DjmMediaPicker",
|
|
9429
9566
|
components: { DjmModal: modal_default, DjmPagination: pagination_default, DjmIcon: icon_default },
|
|
@@ -9442,10 +9579,10 @@ var media_picker_default = {
|
|
|
9442
9579
|
},
|
|
9443
9580
|
emits: ["update:modelValue", "change"],
|
|
9444
9581
|
setup(props, { emit }) {
|
|
9445
|
-
const open =
|
|
9446
|
-
const keyword =
|
|
9447
|
-
const page =
|
|
9448
|
-
const temp =
|
|
9582
|
+
const open = ref28(false);
|
|
9583
|
+
const keyword = ref28("");
|
|
9584
|
+
const page = ref28(1);
|
|
9585
|
+
const temp = ref28([]);
|
|
9449
9586
|
const selectedIds = computed16(() => {
|
|
9450
9587
|
if (props.multiple) return Array.isArray(props.modelValue) ? props.modelValue : [];
|
|
9451
9588
|
if (props.modelValue === "" || props.modelValue === null || props.modelValue === void 0) return [];
|
|
@@ -9468,10 +9605,10 @@ var media_picker_default = {
|
|
|
9468
9605
|
const start = (page.value - 1) * props.pageSize;
|
|
9469
9606
|
return filtered.value.slice(start, start + props.pageSize);
|
|
9470
9607
|
});
|
|
9471
|
-
|
|
9608
|
+
watch20(keyword, () => {
|
|
9472
9609
|
page.value = 1;
|
|
9473
9610
|
});
|
|
9474
|
-
|
|
9611
|
+
watch20(
|
|
9475
9612
|
() => filtered.value.length,
|
|
9476
9613
|
() => {
|
|
9477
9614
|
const max = Math.max(1, Math.ceil(filtered.value.length / props.pageSize));
|
|
@@ -9805,18 +9942,18 @@ var rich_editor_default = {
|
|
|
9805
9942
|
},
|
|
9806
9943
|
emits: ["update:modelValue", "upload-error"],
|
|
9807
9944
|
setup(props, { emit }) {
|
|
9808
|
-
const editor =
|
|
9809
|
-
const fileInput =
|
|
9810
|
-
const sourceMode =
|
|
9811
|
-
const source =
|
|
9812
|
-
const fullscreen =
|
|
9813
|
-
const panel =
|
|
9814
|
-
const uploadCount =
|
|
9815
|
-
const textColor =
|
|
9816
|
-
const bgColor =
|
|
9817
|
-
const fontSize =
|
|
9818
|
-
const count2 =
|
|
9819
|
-
const formats =
|
|
9945
|
+
const editor = ref29(null);
|
|
9946
|
+
const fileInput = ref29(null);
|
|
9947
|
+
const sourceMode = ref29(false);
|
|
9948
|
+
const source = ref29(props.modelValue);
|
|
9949
|
+
const fullscreen = ref29(false);
|
|
9950
|
+
const panel = ref29("");
|
|
9951
|
+
const uploadCount = ref29(0);
|
|
9952
|
+
const textColor = ref29(COLORS[0]);
|
|
9953
|
+
const bgColor = ref29("#fdf3c4");
|
|
9954
|
+
const fontSize = ref29("");
|
|
9955
|
+
const count2 = ref29(0);
|
|
9956
|
+
const formats = ref29({
|
|
9820
9957
|
bold: false,
|
|
9821
9958
|
italic: false,
|
|
9822
9959
|
underline: false,
|
|
@@ -10210,7 +10347,7 @@ var rich_editor_default = {
|
|
|
10210
10347
|
panel.value = "";
|
|
10211
10348
|
}
|
|
10212
10349
|
}
|
|
10213
|
-
|
|
10350
|
+
watch21(
|
|
10214
10351
|
() => props.modelValue,
|
|
10215
10352
|
(value) => {
|
|
10216
10353
|
if (sourceMode.value) {
|
|
@@ -10229,7 +10366,7 @@ var rich_editor_default = {
|
|
|
10229
10366
|
document.addEventListener("click", onDocumentClick);
|
|
10230
10367
|
document.addEventListener("keydown", onKeydown);
|
|
10231
10368
|
});
|
|
10232
|
-
|
|
10369
|
+
onBeforeUnmount24(() => {
|
|
10233
10370
|
document.removeEventListener("selectionchange", syncFormats);
|
|
10234
10371
|
document.removeEventListener("click", onDocumentClick);
|
|
10235
10372
|
document.removeEventListener("keydown", onKeydown);
|
|
@@ -10532,7 +10669,7 @@ var rich_editor_default = {
|
|
|
10532
10669
|
};
|
|
10533
10670
|
|
|
10534
10671
|
// src/components/floating-window/index.js
|
|
10535
|
-
import { ref as
|
|
10672
|
+
import { ref as ref30, onBeforeUnmount as onBeforeUnmount25 } from "vue";
|
|
10536
10673
|
function clamp(value, min, max) {
|
|
10537
10674
|
return Math.min(Math.max(value, min), Math.max(min, max));
|
|
10538
10675
|
}
|
|
@@ -10550,12 +10687,12 @@ var floating_window_default = {
|
|
|
10550
10687
|
},
|
|
10551
10688
|
emits: ["close", "focus"],
|
|
10552
10689
|
setup(props, { emit }) {
|
|
10553
|
-
const root =
|
|
10554
|
-
const pos =
|
|
10555
|
-
const size =
|
|
10556
|
-
const minimized =
|
|
10557
|
-
const maximized =
|
|
10558
|
-
const saved =
|
|
10690
|
+
const root = ref30(null);
|
|
10691
|
+
const pos = ref30({ x: props.initialX, y: props.initialY });
|
|
10692
|
+
const size = ref30({ w: props.width, h: props.height });
|
|
10693
|
+
const minimized = ref30(false);
|
|
10694
|
+
const maximized = ref30(false);
|
|
10695
|
+
const saved = ref30(null);
|
|
10559
10696
|
let drag = null;
|
|
10560
10697
|
let resize = null;
|
|
10561
10698
|
function stage() {
|
|
@@ -10643,7 +10780,7 @@ var floating_window_default = {
|
|
|
10643
10780
|
}
|
|
10644
10781
|
emit("focus");
|
|
10645
10782
|
}
|
|
10646
|
-
|
|
10783
|
+
onBeforeUnmount25(() => {
|
|
10647
10784
|
window.removeEventListener("pointermove", onDrag);
|
|
10648
10785
|
window.removeEventListener("pointerup", endDrag);
|
|
10649
10786
|
window.removeEventListener("pointermove", onResize);
|
|
@@ -10691,7 +10828,7 @@ var floating_window_default = {
|
|
|
10691
10828
|
};
|
|
10692
10829
|
|
|
10693
10830
|
// src/components/upload/index.js
|
|
10694
|
-
import { reactive as reactive4, ref as
|
|
10831
|
+
import { reactive as reactive4, ref as ref31, watch as watch22, onBeforeUnmount as onBeforeUnmount26 } from "vue";
|
|
10695
10832
|
var uidSeed6 = 0;
|
|
10696
10833
|
function extension(name) {
|
|
10697
10834
|
const index = name.lastIndexOf(".");
|
|
@@ -10741,11 +10878,11 @@ var upload_default = {
|
|
|
10741
10878
|
},
|
|
10742
10879
|
emits: ["update:modelValue", "change", "success", "error", "remove", "exceed"],
|
|
10743
10880
|
setup(props, { emit }) {
|
|
10744
|
-
const files =
|
|
10745
|
-
const dragActive =
|
|
10746
|
-
const inputRef =
|
|
10881
|
+
const files = ref31([]);
|
|
10882
|
+
const dragActive = ref31(false);
|
|
10883
|
+
const inputRef = ref31(null);
|
|
10747
10884
|
const tasks = /* @__PURE__ */ new Map();
|
|
10748
|
-
|
|
10885
|
+
watch22(
|
|
10749
10886
|
() => props.modelValue,
|
|
10750
10887
|
(list) => {
|
|
10751
10888
|
const next = list || [];
|
|
@@ -10899,7 +11036,7 @@ var upload_default = {
|
|
|
10899
11036
|
files.value = [];
|
|
10900
11037
|
emitList();
|
|
10901
11038
|
}
|
|
10902
|
-
|
|
11039
|
+
onBeforeUnmount26(() => {
|
|
10903
11040
|
files.value.forEach((item) => {
|
|
10904
11041
|
if (item.url) URL.revokeObjectURL(item.url);
|
|
10905
11042
|
});
|
|
@@ -11047,7 +11184,7 @@ var upload_default = {
|
|
|
11047
11184
|
};
|
|
11048
11185
|
|
|
11049
11186
|
// src/components/tree/index.js
|
|
11050
|
-
import { computed as computed18, ref as
|
|
11187
|
+
import { computed as computed18, ref as ref32, watch as watch23 } from "vue";
|
|
11051
11188
|
var tree_default = {
|
|
11052
11189
|
name: "DjmTree",
|
|
11053
11190
|
components: { Icon: icon_default },
|
|
@@ -11079,17 +11216,17 @@ var tree_default = {
|
|
|
11079
11216
|
},
|
|
11080
11217
|
emits: ["update:checked", "update:expanded", "node-click", "check", "node-drop", "load-error"],
|
|
11081
11218
|
setup(props, { emit }) {
|
|
11082
|
-
const lazyChildren =
|
|
11083
|
-
const loadingKeys =
|
|
11084
|
-
const innerExpanded =
|
|
11085
|
-
const innerChecked =
|
|
11086
|
-
|
|
11219
|
+
const lazyChildren = ref32({});
|
|
11220
|
+
const loadingKeys = ref32([]);
|
|
11221
|
+
const innerExpanded = ref32([...props.expanded]);
|
|
11222
|
+
const innerChecked = ref32([...props.checked]);
|
|
11223
|
+
watch23(
|
|
11087
11224
|
() => props.expanded,
|
|
11088
11225
|
(value) => {
|
|
11089
11226
|
if (Array.isArray(value)) innerExpanded.value = value;
|
|
11090
11227
|
}
|
|
11091
11228
|
);
|
|
11092
|
-
|
|
11229
|
+
watch23(
|
|
11093
11230
|
() => props.checked,
|
|
11094
11231
|
(value) => {
|
|
11095
11232
|
if (Array.isArray(value)) innerChecked.value = value;
|
|
@@ -11127,7 +11264,7 @@ var tree_default = {
|
|
|
11127
11264
|
});
|
|
11128
11265
|
return out;
|
|
11129
11266
|
}
|
|
11130
|
-
|
|
11267
|
+
watch23(
|
|
11131
11268
|
() => props.data,
|
|
11132
11269
|
() => {
|
|
11133
11270
|
if (props.defaultExpandAll) innerExpanded.value = collectExpandable(props.data);
|
|
@@ -11215,8 +11352,8 @@ var tree_default = {
|
|
|
11215
11352
|
function isActive(node) {
|
|
11216
11353
|
return props.activeKey !== "" && node[props.nodeKey] === props.activeKey;
|
|
11217
11354
|
}
|
|
11218
|
-
const rootEl =
|
|
11219
|
-
const focusIndex =
|
|
11355
|
+
const rootEl = ref32(null);
|
|
11356
|
+
const focusIndex = ref32(-1);
|
|
11220
11357
|
function tabIndexOf(index) {
|
|
11221
11358
|
return (focusIndex.value === -1 ? 0 : focusIndex.value) === index ? 0 : -1;
|
|
11222
11359
|
}
|
|
@@ -11273,9 +11410,9 @@ var tree_default = {
|
|
|
11273
11410
|
function rowClassOf(node, level) {
|
|
11274
11411
|
return typeof props.rowClass === "function" ? props.rowClass(node, level) : props.rowClass;
|
|
11275
11412
|
}
|
|
11276
|
-
const dragKey =
|
|
11277
|
-
const dropKey =
|
|
11278
|
-
const dropPosition =
|
|
11413
|
+
const dragKey = ref32("");
|
|
11414
|
+
const dropKey = ref32("");
|
|
11415
|
+
const dropPosition = ref32("");
|
|
11279
11416
|
function findNodeByKey(key, nodes = props.data) {
|
|
11280
11417
|
for (const node of nodes) {
|
|
11281
11418
|
if (node[props.nodeKey] === key) return node;
|
|
@@ -11456,7 +11593,7 @@ var tree_default = {
|
|
|
11456
11593
|
};
|
|
11457
11594
|
|
|
11458
11595
|
// src/components/editable-table/index.js
|
|
11459
|
-
import { computed as computed19, nextTick as nextTick14, reactive as reactive5, ref as
|
|
11596
|
+
import { computed as computed19, nextTick as nextTick14, reactive as reactive5, ref as ref33, useSlots, watch as watch24 } from "vue";
|
|
11460
11597
|
var ACTIONS_KEY = "__editable_actions";
|
|
11461
11598
|
function isEmpty(value) {
|
|
11462
11599
|
if (value === "" || value === null || value === void 0) return true;
|
|
@@ -11480,10 +11617,10 @@ var editable_table_default = {
|
|
|
11480
11617
|
emits: ["edit", "save", "cancel"],
|
|
11481
11618
|
setup(props, { emit }) {
|
|
11482
11619
|
const slots = useSlots();
|
|
11483
|
-
const editingKey =
|
|
11620
|
+
const editingKey = ref33("");
|
|
11484
11621
|
const draft = reactive5({});
|
|
11485
11622
|
const errors = reactive5({});
|
|
11486
|
-
const tableRef =
|
|
11623
|
+
const tableRef = ref33(null);
|
|
11487
11624
|
const editableColumns = computed19(() => props.columns.filter((column) => column.editor));
|
|
11488
11625
|
const renderColumns = computed19(() => {
|
|
11489
11626
|
if (!props.showActions) return props.columns;
|
|
@@ -11592,7 +11729,7 @@ var editable_table_default = {
|
|
|
11592
11729
|
clearErrors();
|
|
11593
11730
|
return true;
|
|
11594
11731
|
}
|
|
11595
|
-
|
|
11732
|
+
watch24(
|
|
11596
11733
|
() => props.rows,
|
|
11597
11734
|
() => {
|
|
11598
11735
|
if (editingKey.value && !findRow(editingKey.value)) {
|
|
@@ -11774,7 +11911,7 @@ var message_default = {
|
|
|
11774
11911
|
};
|
|
11775
11912
|
|
|
11776
11913
|
// src/components/org-picker/index.js
|
|
11777
|
-
import { computed as computed20, onBeforeUnmount as
|
|
11914
|
+
import { computed as computed20, onBeforeUnmount as onBeforeUnmount27, ref as ref34, watch as watch25 } from "vue";
|
|
11778
11915
|
var org_picker_default = {
|
|
11779
11916
|
name: "DjmOrgPicker",
|
|
11780
11917
|
components: { DjmIcon: icon_default },
|
|
@@ -11793,13 +11930,13 @@ var org_picker_default = {
|
|
|
11793
11930
|
},
|
|
11794
11931
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
11795
11932
|
setup(props, { emit }) {
|
|
11796
|
-
const open =
|
|
11797
|
-
const root =
|
|
11798
|
-
const searchRef =
|
|
11799
|
-
const keyword =
|
|
11800
|
-
const activeDept =
|
|
11801
|
-
const temp =
|
|
11802
|
-
const expandedIds =
|
|
11933
|
+
const open = ref34(false);
|
|
11934
|
+
const root = ref34(null);
|
|
11935
|
+
const searchRef = ref34(null);
|
|
11936
|
+
const keyword = ref34("");
|
|
11937
|
+
const activeDept = ref34("");
|
|
11938
|
+
const temp = ref34([]);
|
|
11939
|
+
const expandedIds = ref34(/* @__PURE__ */ new Set());
|
|
11803
11940
|
let detachPanel = null;
|
|
11804
11941
|
function collectDeptIds(nodes, out = []) {
|
|
11805
11942
|
nodes.forEach((node) => {
|
|
@@ -11870,8 +12007,8 @@ var org_picker_default = {
|
|
|
11870
12007
|
const selectedCount = computed20(() => temp.value.length);
|
|
11871
12008
|
const placeholderText = computed20(() => props.placeholder || t("orgPicker.placeholder"));
|
|
11872
12009
|
const emptyLabel = computed20(() => props.emptyText || t("orgPicker.empty"));
|
|
11873
|
-
const panel =
|
|
11874
|
-
const panelStyle =
|
|
12010
|
+
const panel = ref34(null);
|
|
12011
|
+
const panelStyle = ref34({ ...PANEL_HIDDEN_STYLE });
|
|
11875
12012
|
const PANEL_HEIGHT = 342;
|
|
11876
12013
|
function updatePosition() {
|
|
11877
12014
|
if (!open.value || !root.value) return;
|
|
@@ -11888,7 +12025,7 @@ var org_picker_default = {
|
|
|
11888
12025
|
expandedIds.value = new Set(collectDeptIds(props.departments));
|
|
11889
12026
|
}
|
|
11890
12027
|
expandAll();
|
|
11891
|
-
|
|
12028
|
+
watch25(() => props.departments, () => {
|
|
11892
12029
|
expandedIds.value = /* @__PURE__ */ new Set([...expandedIds.value, ...collectDeptIds(props.departments)]);
|
|
11893
12030
|
});
|
|
11894
12031
|
function initialOf(item) {
|
|
@@ -11977,7 +12114,7 @@ var org_picker_default = {
|
|
|
11977
12114
|
function clearTemp() {
|
|
11978
12115
|
temp.value = [];
|
|
11979
12116
|
}
|
|
11980
|
-
|
|
12117
|
+
onBeforeUnmount27(() => {
|
|
11981
12118
|
if (detachPanel) {
|
|
11982
12119
|
detachPanel();
|
|
11983
12120
|
detachPanel = null;
|
|
@@ -12163,7 +12300,7 @@ var org_picker_default = {
|
|
|
12163
12300
|
};
|
|
12164
12301
|
|
|
12165
12302
|
// src/components/schema-form/index.js
|
|
12166
|
-
import { computed as computed21, reactive as reactive7, ref as
|
|
12303
|
+
import { computed as computed21, reactive as reactive7, ref as ref35, watch as watch26 } from "vue";
|
|
12167
12304
|
var CONTROL_MAP = {
|
|
12168
12305
|
input: input_default,
|
|
12169
12306
|
number: input_number_default,
|
|
@@ -12199,22 +12336,22 @@ var schema_form_default = {
|
|
|
12199
12336
|
},
|
|
12200
12337
|
emits: ["update:modelValue", "change"],
|
|
12201
12338
|
setup(props, { emit }) {
|
|
12202
|
-
const innerForm =
|
|
12339
|
+
const innerForm = ref35(null);
|
|
12203
12340
|
const model = reactive7({ ...props.modelValue });
|
|
12204
|
-
|
|
12341
|
+
watch26(() => props.fields, (fields) => {
|
|
12205
12342
|
fields.forEach((field) => {
|
|
12206
12343
|
if (model[field.key] === void 0 && field.default !== void 0) {
|
|
12207
12344
|
model[field.key] = typeof field.default === "function" ? field.default() : field.default;
|
|
12208
12345
|
}
|
|
12209
12346
|
});
|
|
12210
12347
|
}, { immediate: true, deep: true });
|
|
12211
|
-
|
|
12348
|
+
watch26(() => props.modelValue, (value) => {
|
|
12212
12349
|
if (!value) return;
|
|
12213
12350
|
Object.keys(value).forEach((key) => {
|
|
12214
12351
|
if (model[key] !== value[key]) model[key] = value[key];
|
|
12215
12352
|
});
|
|
12216
12353
|
}, { deep: true });
|
|
12217
|
-
|
|
12354
|
+
watch26(model, () => {
|
|
12218
12355
|
emit("update:modelValue", { ...model });
|
|
12219
12356
|
emit("change", { ...model });
|
|
12220
12357
|
}, { deep: true });
|
|
@@ -12425,7 +12562,7 @@ var approval_flow_default = {
|
|
|
12425
12562
|
};
|
|
12426
12563
|
|
|
12427
12564
|
// src/components/query-filter/index.js
|
|
12428
|
-
import { computed as computed22, reactive as reactive8, ref as
|
|
12565
|
+
import { computed as computed22, reactive as reactive8, ref as ref36, watch as watch27 } from "vue";
|
|
12429
12566
|
var CONTROL_MAP2 = {
|
|
12430
12567
|
input: input_default,
|
|
12431
12568
|
number: input_number_default,
|
|
@@ -12450,22 +12587,22 @@ var query_filter_default = {
|
|
|
12450
12587
|
},
|
|
12451
12588
|
emits: ["update:modelValue", "search", "reset"],
|
|
12452
12589
|
setup(props, { emit }) {
|
|
12453
|
-
const expanded =
|
|
12590
|
+
const expanded = ref36(false);
|
|
12454
12591
|
const model = reactive8({ ...props.modelValue });
|
|
12455
|
-
|
|
12592
|
+
watch27(() => props.fields, (fields) => {
|
|
12456
12593
|
fields.forEach((field) => {
|
|
12457
12594
|
if (model[field.key] === void 0 && field.default !== void 0) {
|
|
12458
12595
|
model[field.key] = typeof field.default === "function" ? field.default() : field.default;
|
|
12459
12596
|
}
|
|
12460
12597
|
});
|
|
12461
12598
|
}, { immediate: true, deep: true });
|
|
12462
|
-
|
|
12599
|
+
watch27(() => props.modelValue, (value) => {
|
|
12463
12600
|
if (!value) return;
|
|
12464
12601
|
Object.keys(value).forEach((key) => {
|
|
12465
12602
|
if (model[key] !== value[key]) model[key] = value[key];
|
|
12466
12603
|
});
|
|
12467
12604
|
}, { deep: true });
|
|
12468
|
-
|
|
12605
|
+
watch27(model, () => {
|
|
12469
12606
|
emit("update:modelValue", { ...model });
|
|
12470
12607
|
}, { deep: true });
|
|
12471
12608
|
const collapsible = computed22(() => props.fields.length > props.visibleCount);
|
|
@@ -12599,7 +12736,7 @@ var filter_tags_default = {
|
|
|
12599
12736
|
};
|
|
12600
12737
|
|
|
12601
12738
|
// src/components/kanban/index.js
|
|
12602
|
-
import { ref as
|
|
12739
|
+
import { ref as ref37, watch as watch28 } from "vue";
|
|
12603
12740
|
function cloneColumns(list) {
|
|
12604
12741
|
return (list || []).map((col) => ({ ...col, cards: (col.cards || []).slice() }));
|
|
12605
12742
|
}
|
|
@@ -12616,15 +12753,15 @@ var kanban_default = {
|
|
|
12616
12753
|
},
|
|
12617
12754
|
emits: ["update:columns", "change", "card-move", "card-click", "card-add"],
|
|
12618
12755
|
setup(props, { emit }) {
|
|
12619
|
-
const inner =
|
|
12620
|
-
|
|
12756
|
+
const inner = ref37(cloneColumns(props.columns));
|
|
12757
|
+
watch28(
|
|
12621
12758
|
() => props.columns,
|
|
12622
12759
|
(list) => {
|
|
12623
12760
|
inner.value = cloneColumns(list);
|
|
12624
12761
|
}
|
|
12625
12762
|
);
|
|
12626
|
-
const dragCard =
|
|
12627
|
-
const dropTarget =
|
|
12763
|
+
const dragCard = ref37(null);
|
|
12764
|
+
const dropTarget = ref37(null);
|
|
12628
12765
|
function columnOf(key) {
|
|
12629
12766
|
return inner.value.find((col) => col.key === key);
|
|
12630
12767
|
}
|
|
@@ -12924,7 +13061,7 @@ var attachment_list_default = {
|
|
|
12924
13061
|
};
|
|
12925
13062
|
|
|
12926
13063
|
// src/components/notification/index.js
|
|
12927
|
-
import { computed as computed24, onBeforeUnmount as
|
|
13064
|
+
import { computed as computed24, onBeforeUnmount as onBeforeUnmount28, ref as ref38 } from "vue";
|
|
12928
13065
|
var TYPE_MAP = {
|
|
12929
13066
|
info: { icon: "info", cls: "djm-is-info" },
|
|
12930
13067
|
success: { icon: "check", cls: "djm-is-success" },
|
|
@@ -12956,7 +13093,7 @@ var notification_default = {
|
|
|
12956
13093
|
function onReadAll() {
|
|
12957
13094
|
emit("read-all");
|
|
12958
13095
|
}
|
|
12959
|
-
const clearing =
|
|
13096
|
+
const clearing = ref38(false);
|
|
12960
13097
|
let clearTimer = null;
|
|
12961
13098
|
function onClear() {
|
|
12962
13099
|
if (!clearing.value) {
|
|
@@ -12970,7 +13107,7 @@ var notification_default = {
|
|
|
12970
13107
|
clearing.value = false;
|
|
12971
13108
|
emit("clear");
|
|
12972
13109
|
}
|
|
12973
|
-
|
|
13110
|
+
onBeforeUnmount28(() => window.clearTimeout(clearTimer));
|
|
12974
13111
|
function onRemove(item) {
|
|
12975
13112
|
emit("remove", item);
|
|
12976
13113
|
}
|
|
@@ -13045,7 +13182,7 @@ var notification_default = {
|
|
|
13045
13182
|
};
|
|
13046
13183
|
|
|
13047
13184
|
// src/components/config-provider/index.js
|
|
13048
|
-
import { watch as
|
|
13185
|
+
import { watch as watch29 } from "vue";
|
|
13049
13186
|
var SIZE_HEIGHT = { xs: "24px", sm: "28px", md: "30px", lg: "34px" };
|
|
13050
13187
|
var config_provider_default = {
|
|
13051
13188
|
name: "DjmConfigProvider",
|
|
@@ -13055,7 +13192,7 @@ var config_provider_default = {
|
|
|
13055
13192
|
},
|
|
13056
13193
|
setup(props) {
|
|
13057
13194
|
if (props.locale) setLocale(props.locale);
|
|
13058
|
-
|
|
13195
|
+
watch29(
|
|
13059
13196
|
() => props.locale,
|
|
13060
13197
|
(code) => {
|
|
13061
13198
|
if (code) setLocale(code);
|
|
@@ -13077,7 +13214,7 @@ var config_provider_default = {
|
|
|
13077
13214
|
};
|
|
13078
13215
|
|
|
13079
13216
|
// src/components/date-time-picker/index.js
|
|
13080
|
-
import { ref as
|
|
13217
|
+
import { ref as ref39, computed as computed25, watch as watch30, onBeforeUnmount as onBeforeUnmount29 } from "vue";
|
|
13081
13218
|
var uidSeed7 = 0;
|
|
13082
13219
|
var pad4 = (value) => String(value).padStart(2, "0");
|
|
13083
13220
|
function toDateKey(year, month, day) {
|
|
@@ -13110,20 +13247,20 @@ var date_time_picker_default = {
|
|
|
13110
13247
|
},
|
|
13111
13248
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
13112
13249
|
setup(props, { emit }) {
|
|
13113
|
-
const open =
|
|
13114
|
-
|
|
13115
|
-
const root =
|
|
13116
|
-
const panel =
|
|
13250
|
+
const open = ref39(false);
|
|
13251
|
+
watch30(open, (value) => emit("visible-change", value));
|
|
13252
|
+
const root = ref39(null);
|
|
13253
|
+
const panel = ref39(null);
|
|
13117
13254
|
const panelId = "djm-datetime-panel-" + ++uidSeed7;
|
|
13118
|
-
const panelStyle =
|
|
13255
|
+
const panelStyle = ref39({ ...PANEL_HIDDEN_STYLE });
|
|
13119
13256
|
let detachPanel = null;
|
|
13120
13257
|
const today = /* @__PURE__ */ new Date();
|
|
13121
13258
|
const todayKey = toDateKey(today.getFullYear(), today.getMonth(), today.getDate());
|
|
13122
13259
|
const hasSeconds = computed25(() => props.format.indexOf("ss") > -1);
|
|
13123
|
-
const draft =
|
|
13260
|
+
const draft = ref39({ date: "", h: "00", m: "00", s: "00" });
|
|
13124
13261
|
const initial = parseDate(parseValue(props.modelValue).date);
|
|
13125
|
-
const viewYear =
|
|
13126
|
-
const viewMonth =
|
|
13262
|
+
const viewYear = ref39(initial ? initial.year : today.getFullYear());
|
|
13263
|
+
const viewMonth = ref39(initial ? initial.month : today.getMonth());
|
|
13127
13264
|
const displayText = computed25(() => props.modelValue || "");
|
|
13128
13265
|
const placeholderText = computed25(() => props.placeholder || t("dateTimePicker.placeholder"));
|
|
13129
13266
|
const weeks = computed25(() => t("datePicker.weeks").split(","));
|
|
@@ -13279,7 +13416,7 @@ var date_time_picker_default = {
|
|
|
13279
13416
|
emit("change", "");
|
|
13280
13417
|
closePanel();
|
|
13281
13418
|
}
|
|
13282
|
-
|
|
13419
|
+
onBeforeUnmount29(() => {
|
|
13283
13420
|
if (detachPanel) {
|
|
13284
13421
|
detachPanel();
|
|
13285
13422
|
detachPanel = null;
|
|
@@ -13404,7 +13541,7 @@ var date_time_picker_default = {
|
|
|
13404
13541
|
};
|
|
13405
13542
|
|
|
13406
13543
|
// src/components/virtual-list/index.js
|
|
13407
|
-
import { ref as
|
|
13544
|
+
import { ref as ref40, computed as computed26, watch as watch31, onMounted as onMounted16, onBeforeUnmount as onBeforeUnmount30 } from "vue";
|
|
13408
13545
|
var virtual_list_default = {
|
|
13409
13546
|
name: "DjmVirtualList",
|
|
13410
13547
|
props: {
|
|
@@ -13421,9 +13558,9 @@ var virtual_list_default = {
|
|
|
13421
13558
|
},
|
|
13422
13559
|
emits: ["scroll", "reach-bottom", "item-click"],
|
|
13423
13560
|
setup(props, { emit, expose }) {
|
|
13424
|
-
const viewport =
|
|
13425
|
-
const scrollTop =
|
|
13426
|
-
const viewHeight =
|
|
13561
|
+
const viewport = ref40(null);
|
|
13562
|
+
const scrollTop = ref40(0);
|
|
13563
|
+
const viewHeight = ref40(typeof props.height === "number" ? props.height : 320);
|
|
13427
13564
|
let bottomFired = false;
|
|
13428
13565
|
function rowHeight(item, index) {
|
|
13429
13566
|
return typeof props.itemHeight === "function" ? Math.max(1, Number(props.itemHeight(item, index)) || 1) : Math.max(1, props.itemHeight);
|
|
@@ -13493,7 +13630,7 @@ var virtual_list_default = {
|
|
|
13493
13630
|
else if (start < el.scrollTop) el.scrollTop = start;
|
|
13494
13631
|
else if (end > el.scrollTop + el.clientHeight) el.scrollTop = end - el.clientHeight;
|
|
13495
13632
|
}
|
|
13496
|
-
|
|
13633
|
+
watch31(
|
|
13497
13634
|
() => props.height,
|
|
13498
13635
|
() => {
|
|
13499
13636
|
if (viewport.value) viewHeight.value = viewport.value.clientHeight;
|
|
@@ -13510,7 +13647,7 @@ var virtual_list_default = {
|
|
|
13510
13647
|
resizeObserver.observe(viewport.value);
|
|
13511
13648
|
}
|
|
13512
13649
|
});
|
|
13513
|
-
|
|
13650
|
+
onBeforeUnmount30(() => {
|
|
13514
13651
|
if (resizeObserver) resizeObserver.disconnect();
|
|
13515
13652
|
});
|
|
13516
13653
|
function onItemClick(row) {
|
|
@@ -13599,7 +13736,7 @@ var batch_bar_default = {
|
|
|
13599
13736
|
};
|
|
13600
13737
|
|
|
13601
13738
|
// src/components/import-wizard/index.js
|
|
13602
|
-
import { ref as
|
|
13739
|
+
import { ref as ref41, computed as computed28, watch as watch32 } from "vue";
|
|
13603
13740
|
function matchAccept2(name, accept) {
|
|
13604
13741
|
if (!accept) return true;
|
|
13605
13742
|
const ext = "." + String(name).split(".").pop().toLowerCase();
|
|
@@ -13626,19 +13763,19 @@ var import_wizard_default = {
|
|
|
13626
13763
|
},
|
|
13627
13764
|
emits: ["update:step", "update:mapping", "file-change", "submit", "retry"],
|
|
13628
13765
|
setup(props, { emit }) {
|
|
13629
|
-
const innerStep =
|
|
13630
|
-
|
|
13766
|
+
const innerStep = ref41(props.step || 1);
|
|
13767
|
+
watch32(
|
|
13631
13768
|
() => props.step,
|
|
13632
13769
|
(value) => {
|
|
13633
13770
|
if (value) innerStep.value = value;
|
|
13634
13771
|
}
|
|
13635
13772
|
);
|
|
13636
|
-
const file =
|
|
13637
|
-
const fileError =
|
|
13638
|
-
const mappingError =
|
|
13639
|
-
const fileInput =
|
|
13640
|
-
const innerMapping =
|
|
13641
|
-
|
|
13773
|
+
const file = ref41(null);
|
|
13774
|
+
const fileError = ref41("");
|
|
13775
|
+
const mappingError = ref41("");
|
|
13776
|
+
const fileInput = ref41(null);
|
|
13777
|
+
const innerMapping = ref41({ ...props.mapping });
|
|
13778
|
+
watch32(
|
|
13642
13779
|
() => props.mapping,
|
|
13643
13780
|
(value) => {
|
|
13644
13781
|
innerMapping.value = { ...value };
|
|
@@ -13703,7 +13840,7 @@ var import_wizard_default = {
|
|
|
13703
13840
|
}
|
|
13704
13841
|
emit("submit", { ...innerMapping.value });
|
|
13705
13842
|
}
|
|
13706
|
-
|
|
13843
|
+
watch32(
|
|
13707
13844
|
() => props.result,
|
|
13708
13845
|
(value) => {
|
|
13709
13846
|
if (value && (value.total || value.success || value.failed || value.errors && value.errors.length)) {
|
|
@@ -13870,7 +14007,7 @@ var import_wizard_default = {
|
|
|
13870
14007
|
};
|
|
13871
14008
|
|
|
13872
14009
|
// src/components/diff/index.js
|
|
13873
|
-
import { ref as
|
|
14010
|
+
import { ref as ref42, computed as computed29 } from "vue";
|
|
13874
14011
|
|
|
13875
14012
|
// src/utils/text-diff.js
|
|
13876
14013
|
var MAX_CELLS = 1e6;
|
|
@@ -13944,7 +14081,7 @@ var diff_default = {
|
|
|
13944
14081
|
});
|
|
13945
14082
|
return { add, remove };
|
|
13946
14083
|
});
|
|
13947
|
-
const expandedBlocks =
|
|
14084
|
+
const expandedBlocks = ref42([]);
|
|
13948
14085
|
function expand(index) {
|
|
13949
14086
|
expandedBlocks.value = expandedBlocks.value.concat(index);
|
|
13950
14087
|
}
|
|
@@ -14071,7 +14208,7 @@ var diff_default = {
|
|
|
14071
14208
|
};
|
|
14072
14209
|
|
|
14073
14210
|
// src/components/tree-table/index.js
|
|
14074
|
-
import { ref as
|
|
14211
|
+
import { ref as ref43, computed as computed30, watch as watch33 } from "vue";
|
|
14075
14212
|
function keyOf(row, rowKey) {
|
|
14076
14213
|
return row && row[rowKey] !== void 0 ? row[rowKey] : row && row.id;
|
|
14077
14214
|
}
|
|
@@ -14110,17 +14247,17 @@ var tree_table_default = {
|
|
|
14110
14247
|
eachNode(props.data, (row) => keys.push(keyOf(row, props.rowKey)));
|
|
14111
14248
|
return keys;
|
|
14112
14249
|
}
|
|
14113
|
-
const innerExpanded =
|
|
14250
|
+
const innerExpanded = ref43(
|
|
14114
14251
|
props.expandedKeys ? props.expandedKeys.slice() : props.defaultExpandAll ? allKeys() : []
|
|
14115
14252
|
);
|
|
14116
|
-
|
|
14253
|
+
watch33(
|
|
14117
14254
|
() => props.expandedKeys,
|
|
14118
14255
|
(value) => {
|
|
14119
14256
|
if (value) innerExpanded.value = value.slice();
|
|
14120
14257
|
}
|
|
14121
14258
|
);
|
|
14122
|
-
const innerChecked =
|
|
14123
|
-
|
|
14259
|
+
const innerChecked = ref43(props.checkedKeys ? props.checkedKeys.slice() : []);
|
|
14260
|
+
watch33(
|
|
14124
14261
|
() => props.checkedKeys,
|
|
14125
14262
|
(value) => {
|
|
14126
14263
|
if (value) innerChecked.value = value.slice();
|
|
@@ -14352,7 +14489,7 @@ var tree_table_default = {
|
|
|
14352
14489
|
};
|
|
14353
14490
|
|
|
14354
14491
|
// src/components/schedule/index.js
|
|
14355
|
-
import { ref as
|
|
14492
|
+
import { ref as ref44, computed as computed31, watch as watch34, onBeforeUnmount as onBeforeUnmount31 } from "vue";
|
|
14356
14493
|
var pad5 = (value) => String(value).padStart(2, "0");
|
|
14357
14494
|
function toKey3(date) {
|
|
14358
14495
|
return `${date.getFullYear()}-${pad5(date.getMonth() + 1)}-${pad5(date.getDate())}`;
|
|
@@ -14384,13 +14521,13 @@ var schedule_default = {
|
|
|
14384
14521
|
emits: ["update:modelValue", "event-click", "slot-click", "week-change"],
|
|
14385
14522
|
setup(props, { emit }) {
|
|
14386
14523
|
const todayKey = toKey3(/* @__PURE__ */ new Date());
|
|
14387
|
-
const nowMinutes =
|
|
14524
|
+
const nowMinutes = ref44((/* @__PURE__ */ new Date()).getHours() * 60 + (/* @__PURE__ */ new Date()).getMinutes());
|
|
14388
14525
|
const timer = window.setInterval(() => {
|
|
14389
14526
|
const now = /* @__PURE__ */ new Date();
|
|
14390
14527
|
nowMinutes.value = now.getHours() * 60 + now.getMinutes();
|
|
14391
14528
|
}, 6e4);
|
|
14392
|
-
const anchor =
|
|
14393
|
-
|
|
14529
|
+
const anchor = ref44(props.modelValue || todayKey);
|
|
14530
|
+
watch34(
|
|
14394
14531
|
() => props.modelValue,
|
|
14395
14532
|
(value) => {
|
|
14396
14533
|
if (value) anchor.value = value;
|
|
@@ -14497,7 +14634,7 @@ var schedule_default = {
|
|
|
14497
14634
|
const minute = minutes % 60;
|
|
14498
14635
|
emit("slot-click", { date: day.key, time: `${pad5(hour)}:${pad5(minute)}` });
|
|
14499
14636
|
}
|
|
14500
|
-
|
|
14637
|
+
onBeforeUnmount31(() => window.clearInterval(timer));
|
|
14501
14638
|
return {
|
|
14502
14639
|
days,
|
|
14503
14640
|
hours,
|
|
@@ -14597,7 +14734,7 @@ var schedule_default = {
|
|
|
14597
14734
|
};
|
|
14598
14735
|
|
|
14599
14736
|
// src/components/comment/index.js
|
|
14600
|
-
import { ref as
|
|
14737
|
+
import { ref as ref45, computed as computed32 } from "vue";
|
|
14601
14738
|
var comment_default = {
|
|
14602
14739
|
name: "DjmComment",
|
|
14603
14740
|
components: { DjmAvatar: avatar_default, DjmIcon: icon_default },
|
|
@@ -14614,8 +14751,8 @@ var comment_default = {
|
|
|
14614
14751
|
},
|
|
14615
14752
|
emits: ["submit", "reply", "remove"],
|
|
14616
14753
|
setup(props, { emit }) {
|
|
14617
|
-
const content =
|
|
14618
|
-
const replyTarget =
|
|
14754
|
+
const content = ref45("");
|
|
14755
|
+
const replyTarget = ref45(null);
|
|
14619
14756
|
const placeholderText = computed32(() => {
|
|
14620
14757
|
if (replyTarget.value) return t("comment.replyPlaceholder", { name: replyTarget.value.author });
|
|
14621
14758
|
return props.placeholder || t("comment.placeholder");
|
|
@@ -14728,7 +14865,7 @@ var comment_default = {
|
|
|
14728
14865
|
};
|
|
14729
14866
|
|
|
14730
14867
|
// src/components/signature/index.js
|
|
14731
|
-
import { ref as
|
|
14868
|
+
import { ref as ref46, onMounted as onMounted17, onBeforeUnmount as onBeforeUnmount32, watch as watch35 } from "vue";
|
|
14732
14869
|
var signature_default = {
|
|
14733
14870
|
name: "DjmSignature",
|
|
14734
14871
|
props: {
|
|
@@ -14742,10 +14879,10 @@ var signature_default = {
|
|
|
14742
14879
|
},
|
|
14743
14880
|
emits: ["update:modelValue", "change", "start", "end", "clear"],
|
|
14744
14881
|
setup(props, { emit }) {
|
|
14745
|
-
const canvas =
|
|
14746
|
-
const root =
|
|
14747
|
-
const strokes =
|
|
14748
|
-
const hasImage =
|
|
14882
|
+
const canvas = ref46(null);
|
|
14883
|
+
const root = ref46(null);
|
|
14884
|
+
const strokes = ref46([]);
|
|
14885
|
+
const hasImage = ref46(false);
|
|
14749
14886
|
let imageCache = null;
|
|
14750
14887
|
let drawing = false;
|
|
14751
14888
|
let current = null;
|
|
@@ -14860,7 +14997,7 @@ var signature_default = {
|
|
|
14860
14997
|
return canvas.value ? canvas.value.toDataURL("image/png") : "";
|
|
14861
14998
|
}
|
|
14862
14999
|
const isEmpty2 = () => strokes.value.length === 0 && !hasImage.value;
|
|
14863
|
-
|
|
15000
|
+
watch35(
|
|
14864
15001
|
() => props.modelValue,
|
|
14865
15002
|
(value) => {
|
|
14866
15003
|
if (value === lastEmitted) return;
|
|
@@ -14898,7 +15035,7 @@ var signature_default = {
|
|
|
14898
15035
|
if (root.value) observer.observe(root.value);
|
|
14899
15036
|
}
|
|
14900
15037
|
});
|
|
14901
|
-
|
|
15038
|
+
onBeforeUnmount32(() => {
|
|
14902
15039
|
if (observer) observer.disconnect();
|
|
14903
15040
|
});
|
|
14904
15041
|
return {
|
|
@@ -14938,7 +15075,7 @@ var signature_default = {
|
|
|
14938
15075
|
};
|
|
14939
15076
|
|
|
14940
15077
|
// src/components/print/index.js
|
|
14941
|
-
import { ref as
|
|
15078
|
+
import { ref as ref47, computed as computed33 } from "vue";
|
|
14942
15079
|
function escapeHtml(text) {
|
|
14943
15080
|
return String(text).replace(/[&<>"]/g, (ch) => ({ "&": "&", "<": "<", ">": ">", '"': """ })[ch]);
|
|
14944
15081
|
}
|
|
@@ -14954,7 +15091,7 @@ var print_default = {
|
|
|
14954
15091
|
},
|
|
14955
15092
|
emits: ["before-print", "after-print"],
|
|
14956
15093
|
setup(props, { emit }) {
|
|
14957
|
-
const content =
|
|
15094
|
+
const content = ref47(null);
|
|
14958
15095
|
const label = computed33(() => props.buttonText || t("print.button"));
|
|
14959
15096
|
function collectStyles() {
|
|
14960
15097
|
return Array.from(document.querySelectorAll('link[rel="stylesheet"], style')).map((el) => el.outerHTML).join("");
|
|
@@ -15175,7 +15312,7 @@ var gantt_default = {
|
|
|
15175
15312
|
};
|
|
15176
15313
|
|
|
15177
15314
|
// src/components/field-list/index.js
|
|
15178
|
-
import { ref as
|
|
15315
|
+
import { ref as ref48, computed as computed35, watch as watch36 } from "vue";
|
|
15179
15316
|
var uidSeed8 = 0;
|
|
15180
15317
|
var field_list_default = {
|
|
15181
15318
|
name: "DjmFieldList",
|
|
@@ -15195,7 +15332,7 @@ var field_list_default = {
|
|
|
15195
15332
|
},
|
|
15196
15333
|
emits: ["update:modelValue", "add", "remove", "change"],
|
|
15197
15334
|
setup(props, { emit }) {
|
|
15198
|
-
const uids =
|
|
15335
|
+
const uids = ref48([]);
|
|
15199
15336
|
function syncUids() {
|
|
15200
15337
|
const length = props.modelValue.length;
|
|
15201
15338
|
if (uids.value.length === length) return;
|
|
@@ -15204,8 +15341,8 @@ var field_list_default = {
|
|
|
15204
15341
|
uids.value = next;
|
|
15205
15342
|
}
|
|
15206
15343
|
syncUids();
|
|
15207
|
-
|
|
15208
|
-
const errors =
|
|
15344
|
+
watch36(() => props.modelValue.length, syncUids);
|
|
15345
|
+
const errors = ref48({});
|
|
15209
15346
|
const addLabel = computed35(() => props.addText || t("fieldList.add"));
|
|
15210
15347
|
const emptyLabel = computed35(() => props.emptyText || t("fieldList.empty"));
|
|
15211
15348
|
const canAdd = computed35(() => !props.disabled && (!props.max || props.modelValue.length < props.max));
|
|
@@ -15371,7 +15508,7 @@ var field_list_default = {
|
|
|
15371
15508
|
};
|
|
15372
15509
|
|
|
15373
15510
|
// src/components/chat/index.js
|
|
15374
|
-
import { ref as
|
|
15511
|
+
import { ref as ref49, computed as computed36, watch as watch37, nextTick as nextTick15 } from "vue";
|
|
15375
15512
|
var chat_default = {
|
|
15376
15513
|
name: "DjmChat",
|
|
15377
15514
|
components: { DjmAvatar: avatar_default },
|
|
@@ -15388,8 +15525,8 @@ var chat_default = {
|
|
|
15388
15525
|
},
|
|
15389
15526
|
emits: ["submit"],
|
|
15390
15527
|
setup(props, { emit }) {
|
|
15391
|
-
const content =
|
|
15392
|
-
const listRef =
|
|
15528
|
+
const content = ref49("");
|
|
15529
|
+
const listRef = ref49(null);
|
|
15393
15530
|
const placeholderText = computed36(() => props.placeholder || t("chat.placeholder"));
|
|
15394
15531
|
const sendLabel = computed36(() => props.sendText || t("chat.send"));
|
|
15395
15532
|
const emptyLabel = computed36(() => props.emptyText || t("chat.empty"));
|
|
@@ -15398,7 +15535,7 @@ var chat_default = {
|
|
|
15398
15535
|
const el = listRef.value;
|
|
15399
15536
|
if (el) el.scrollTop = el.scrollHeight;
|
|
15400
15537
|
}
|
|
15401
|
-
|
|
15538
|
+
watch37(
|
|
15402
15539
|
() => props.messages.length,
|
|
15403
15540
|
() => nextTick15(scrollToBottom)
|
|
15404
15541
|
);
|
|
@@ -15511,7 +15648,7 @@ var chat_default = {
|
|
|
15511
15648
|
};
|
|
15512
15649
|
|
|
15513
15650
|
// src/components/org-chart/index.js
|
|
15514
|
-
import { ref as
|
|
15651
|
+
import { ref as ref50, computed as computed37, watch as watch38 } from "vue";
|
|
15515
15652
|
var org_chart_default = {
|
|
15516
15653
|
name: "DjmOrgChart",
|
|
15517
15654
|
components: { DjmAvatar: avatar_default, DjmIcon: icon_default },
|
|
@@ -15544,8 +15681,8 @@ var org_chart_default = {
|
|
|
15544
15681
|
walk(node);
|
|
15545
15682
|
return keys;
|
|
15546
15683
|
}
|
|
15547
|
-
const collapsed =
|
|
15548
|
-
|
|
15684
|
+
const collapsed = ref50(props.defaultExpandAll ? [] : collapsedByDefault(props.data));
|
|
15685
|
+
watch38(() => props.data, (data) => {
|
|
15549
15686
|
collapsed.value = props.defaultExpandAll ? [] : collapsedByDefault(data);
|
|
15550
15687
|
});
|
|
15551
15688
|
const layout = computed37(() => {
|
|
@@ -15938,7 +16075,7 @@ var components = [
|
|
|
15938
16075
|
org_chart_default,
|
|
15939
16076
|
page_tabs_default
|
|
15940
16077
|
];
|
|
15941
|
-
var version = "0.
|
|
16078
|
+
var version = "0.73.1";
|
|
15942
16079
|
function install(app, options = {}) {
|
|
15943
16080
|
if (options.locale) setLocale(options.locale);
|
|
15944
16081
|
components.forEach((component) => app.component(component.name, component));
|
|
@@ -16060,6 +16197,7 @@ export {
|
|
|
16060
16197
|
djmMessage,
|
|
16061
16198
|
djmMessages,
|
|
16062
16199
|
getLocale,
|
|
16200
|
+
glass,
|
|
16063
16201
|
hasPermission,
|
|
16064
16202
|
initTheme,
|
|
16065
16203
|
install,
|
|
@@ -16069,6 +16207,7 @@ export {
|
|
|
16069
16207
|
primaryColor,
|
|
16070
16208
|
resetPrimaryColor,
|
|
16071
16209
|
sanitizeHtml,
|
|
16210
|
+
setGlass,
|
|
16072
16211
|
setLocale,
|
|
16073
16212
|
setPermissions,
|
|
16074
16213
|
setPrimaryColor,
|