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.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! DJM UI v0.
|
|
1
|
+
/*! DJM UI v0.73.0 · MIT · 2026-10-26 */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __esm = (fn, res, err) => function __init() {
|
|
@@ -1722,7 +1722,7 @@ function t(key, params) {
|
|
|
1722
1722
|
// src/utils/panel.js
|
|
1723
1723
|
var PANEL_HIDDEN_STYLE = { position: "fixed", left: "0px", top: "0px", visibility: "hidden" };
|
|
1724
1724
|
function bindPanelListeners({ root, panel, onClose, onReposition, esc = true }) {
|
|
1725
|
-
const el = (
|
|
1725
|
+
const el = (ref51) => typeof ref51 === "function" ? ref51() : ref51;
|
|
1726
1726
|
function onDocumentMousedown(event) {
|
|
1727
1727
|
const rootEl = el(root);
|
|
1728
1728
|
const panelEl = el(panel);
|
|
@@ -4095,12 +4095,18 @@ var progress_default = {
|
|
|
4095
4095
|
name: "DjmProgress",
|
|
4096
4096
|
props: {
|
|
4097
4097
|
percent: { type: Number, default: 0 },
|
|
4098
|
+
// line 横向 / circle 环形
|
|
4099
|
+
type: { type: String, default: "line" },
|
|
4098
4100
|
// '' / success / error / warning
|
|
4099
4101
|
status: { type: String, default: "" },
|
|
4100
4102
|
showText: { type: Boolean, default: true },
|
|
4101
4103
|
strokeWidth: { type: Number, default: 6 },
|
|
4102
4104
|
// 自定义进度色,不传由状态决定
|
|
4103
|
-
color: { type: String, default: "" }
|
|
4105
|
+
color: { type: String, default: "" },
|
|
4106
|
+
// 环形直径(px)
|
|
4107
|
+
size: { type: Number, default: 96 },
|
|
4108
|
+
// 无障碍名称,默认「进度」
|
|
4109
|
+
label: { type: String, default: "" }
|
|
4104
4110
|
},
|
|
4105
4111
|
computed: {
|
|
4106
4112
|
safePercent() {
|
|
@@ -4113,10 +4119,72 @@ var progress_default = {
|
|
|
4113
4119
|
},
|
|
4114
4120
|
trackStyle() {
|
|
4115
4121
|
return { height: this.strokeWidth + "px" };
|
|
4122
|
+
},
|
|
4123
|
+
circleSize() {
|
|
4124
|
+
return Math.max(48, Number(this.size) || 96);
|
|
4125
|
+
},
|
|
4126
|
+
circleRadius() {
|
|
4127
|
+
return (this.circleSize - this.strokeWidth) / 2;
|
|
4128
|
+
},
|
|
4129
|
+
circleLength() {
|
|
4130
|
+
return 2 * Math.PI * this.circleRadius;
|
|
4131
|
+
},
|
|
4132
|
+
circleOffset() {
|
|
4133
|
+
return this.circleLength * (1 - this.safePercent / 100);
|
|
4134
|
+
},
|
|
4135
|
+
circleStyle() {
|
|
4136
|
+
return { width: this.circleSize + "px", height: this.circleSize + "px" };
|
|
4137
|
+
},
|
|
4138
|
+
circleLabelStyle() {
|
|
4139
|
+
return { fontSize: Math.max(12, Math.round(this.circleSize / 5)) + "px" };
|
|
4116
4140
|
}
|
|
4117
4141
|
},
|
|
4118
4142
|
template: `
|
|
4119
|
-
<div
|
|
4143
|
+
<div
|
|
4144
|
+
v-if="type === 'circle'"
|
|
4145
|
+
class="djm-progress-circle"
|
|
4146
|
+
:class="status ? 'djm-is-' + status : ''"
|
|
4147
|
+
:style="circleStyle"
|
|
4148
|
+
role="progressbar"
|
|
4149
|
+
:aria-label="label || '\u8FDB\u5EA6'"
|
|
4150
|
+
:aria-valuenow="safePercent"
|
|
4151
|
+
aria-valuemin="0"
|
|
4152
|
+
aria-valuemax="100"
|
|
4153
|
+
>
|
|
4154
|
+
<svg :viewBox="'0 0 ' + circleSize + ' ' + circleSize" aria-hidden="true">
|
|
4155
|
+
<circle
|
|
4156
|
+
class="djm-progress-circle-track"
|
|
4157
|
+
:cx="circleSize / 2"
|
|
4158
|
+
:cy="circleSize / 2"
|
|
4159
|
+
:r="circleRadius"
|
|
4160
|
+
:stroke-width="strokeWidth"
|
|
4161
|
+
fill="none"
|
|
4162
|
+
/>
|
|
4163
|
+
<circle
|
|
4164
|
+
class="djm-progress-circle-bar"
|
|
4165
|
+
:cx="circleSize / 2"
|
|
4166
|
+
:cy="circleSize / 2"
|
|
4167
|
+
:r="circleRadius"
|
|
4168
|
+
:stroke-width="strokeWidth"
|
|
4169
|
+
fill="none"
|
|
4170
|
+
stroke-linecap="round"
|
|
4171
|
+
:stroke-dasharray="circleLength"
|
|
4172
|
+
:stroke-dashoffset="circleOffset"
|
|
4173
|
+
:style="color ? { stroke: color } : null"
|
|
4174
|
+
/>
|
|
4175
|
+
</svg>
|
|
4176
|
+
<span v-if="showText" class="djm-progress-circle-label" :style="circleLabelStyle">{{ safePercent }}%</span>
|
|
4177
|
+
</div>
|
|
4178
|
+
<div
|
|
4179
|
+
v-else
|
|
4180
|
+
class="djm-progress-line"
|
|
4181
|
+
:class="status ? 'djm-is-' + status : ''"
|
|
4182
|
+
role="progressbar"
|
|
4183
|
+
:aria-label="label || '\u8FDB\u5EA6'"
|
|
4184
|
+
:aria-valuenow="safePercent"
|
|
4185
|
+
aria-valuemin="0"
|
|
4186
|
+
aria-valuemax="100"
|
|
4187
|
+
>
|
|
4120
4188
|
<div class="djm-progress" :style="trackStyle">
|
|
4121
4189
|
<div class="djm-progress-bar" :style="barStyle"></div>
|
|
4122
4190
|
</div>
|
|
@@ -5318,48 +5386,91 @@ var alert_default = {
|
|
|
5318
5386
|
};
|
|
5319
5387
|
|
|
5320
5388
|
// src/components/spin/index.js
|
|
5389
|
+
import { onBeforeUnmount as onBeforeUnmount4, ref as ref3, watch as watch3 } from "vue";
|
|
5321
5390
|
var spin_default = {
|
|
5322
5391
|
name: "DjmSpin",
|
|
5323
5392
|
props: {
|
|
5324
5393
|
spinning: { type: Boolean, default: true },
|
|
5325
|
-
size: { type: String, default: "md" },
|
|
5326
5394
|
// sm | md | lg
|
|
5327
|
-
|
|
5395
|
+
size: { type: String, default: "md" },
|
|
5396
|
+
// ring 环形 / dots 点状 / bars 柱状 / pulse 脉冲
|
|
5397
|
+
type: { type: String, default: "ring" },
|
|
5398
|
+
tip: { type: String, default: "" },
|
|
5399
|
+
// 延迟多少毫秒后显示,0 表示立即
|
|
5400
|
+
delay: { type: Number, default: 0 },
|
|
5401
|
+
// 全屏加载:遮罩铺满视口
|
|
5402
|
+
fullscreen: { type: Boolean, default: false },
|
|
5403
|
+
// 自定义指示器颜色,默认跟随品牌色
|
|
5404
|
+
color: { type: String, default: "" }
|
|
5405
|
+
},
|
|
5406
|
+
setup(props) {
|
|
5407
|
+
const visible = ref3(false);
|
|
5408
|
+
let timer = null;
|
|
5409
|
+
function sync() {
|
|
5410
|
+
window.clearTimeout(timer);
|
|
5411
|
+
timer = null;
|
|
5412
|
+
if (!props.spinning) {
|
|
5413
|
+
visible.value = false;
|
|
5414
|
+
return;
|
|
5415
|
+
}
|
|
5416
|
+
if (props.delay > 0) {
|
|
5417
|
+
timer = window.setTimeout(() => {
|
|
5418
|
+
visible.value = true;
|
|
5419
|
+
}, props.delay);
|
|
5420
|
+
} else {
|
|
5421
|
+
visible.value = true;
|
|
5422
|
+
}
|
|
5423
|
+
}
|
|
5424
|
+
watch3(() => [props.spinning, props.delay], sync, { immediate: true });
|
|
5425
|
+
onBeforeUnmount4(() => window.clearTimeout(timer));
|
|
5426
|
+
return { visible };
|
|
5328
5427
|
},
|
|
5329
5428
|
computed: {
|
|
5330
|
-
// 有默认插槽即为包裹模式
|
|
5331
5429
|
wrapped() {
|
|
5332
5430
|
return !!this.$slots.default;
|
|
5431
|
+
},
|
|
5432
|
+
rootClass() {
|
|
5433
|
+
return [
|
|
5434
|
+
"djm-spin",
|
|
5435
|
+
"djm-spin-" + this.size,
|
|
5436
|
+
{
|
|
5437
|
+
"djm-spin-wrap": this.wrapped && !this.fullscreen,
|
|
5438
|
+
"djm-spin-inline": !this.wrapped && !this.fullscreen,
|
|
5439
|
+
"djm-spin-fullscreen": this.fullscreen
|
|
5440
|
+
}
|
|
5441
|
+
];
|
|
5333
5442
|
}
|
|
5334
5443
|
},
|
|
5335
5444
|
template: `
|
|
5336
5445
|
<div
|
|
5337
|
-
v-if="wrapped"
|
|
5338
|
-
class="
|
|
5339
|
-
:
|
|
5340
|
-
:
|
|
5446
|
+
v-if="fullscreen || wrapped || visible"
|
|
5447
|
+
:class="rootClass"
|
|
5448
|
+
:aria-busy="String(visible)"
|
|
5449
|
+
:role="visible ? 'status' : undefined"
|
|
5450
|
+
:aria-label="!wrapped && !fullscreen && !tip && visible ? '\u52A0\u8F7D\u4E2D' : undefined"
|
|
5341
5451
|
>
|
|
5342
|
-
<slot />
|
|
5343
|
-
<div v-if="
|
|
5344
|
-
<span class="djm-
|
|
5452
|
+
<slot v-if="wrapped && !fullscreen" />
|
|
5453
|
+
<div v-if="visible" class="djm-spin-mask">
|
|
5454
|
+
<span class="djm-spin-indicator" :class="'djm-spin-' + type" :style="color ? { color } : null">
|
|
5455
|
+
<slot name="indicator">
|
|
5456
|
+
<i v-if="type === 'ring'" class="djm-spinner"></i>
|
|
5457
|
+
<template v-else-if="type === 'dots'">
|
|
5458
|
+
<i></i><i></i><i></i>
|
|
5459
|
+
</template>
|
|
5460
|
+
<template v-else-if="type === 'bars'">
|
|
5461
|
+
<i></i><i></i><i></i><i></i>
|
|
5462
|
+
</template>
|
|
5463
|
+
<i v-else class="djm-spin-core"></i>
|
|
5464
|
+
</slot>
|
|
5465
|
+
</span>
|
|
5345
5466
|
<span v-if="tip" class="djm-spin-tip">{{ tip }}</span>
|
|
5346
5467
|
</div>
|
|
5347
5468
|
</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
5469
|
`
|
|
5359
5470
|
};
|
|
5360
5471
|
|
|
5361
5472
|
// src/components/popconfirm/index.js
|
|
5362
|
-
import { nextTick as nextTick3, onBeforeUnmount as
|
|
5473
|
+
import { nextTick as nextTick3, onBeforeUnmount as onBeforeUnmount5, onMounted as onMounted3, ref as ref4, watch as watch4 } from "vue";
|
|
5363
5474
|
var popconfirm_default = {
|
|
5364
5475
|
name: "DjmPopconfirm",
|
|
5365
5476
|
components: { DjmIcon: icon_default },
|
|
@@ -5375,10 +5486,10 @@ var popconfirm_default = {
|
|
|
5375
5486
|
},
|
|
5376
5487
|
emits: ["confirm", "cancel", "visible-change"],
|
|
5377
5488
|
setup(props, { emit }) {
|
|
5378
|
-
const open =
|
|
5379
|
-
const root =
|
|
5380
|
-
const panelEl =
|
|
5381
|
-
const panelStyle =
|
|
5489
|
+
const open = ref4(false);
|
|
5490
|
+
const root = ref4(null);
|
|
5491
|
+
const panelEl = ref4(null);
|
|
5492
|
+
const panelStyle = ref4({});
|
|
5382
5493
|
const PANEL_WIDTH = 244;
|
|
5383
5494
|
let detachPanel = null;
|
|
5384
5495
|
function syncTriggerA11y() {
|
|
@@ -5394,7 +5505,7 @@ var popconfirm_default = {
|
|
|
5394
5505
|
target.setAttribute("aria-expanded", String(open.value));
|
|
5395
5506
|
}
|
|
5396
5507
|
onMounted3(() => nextTick3(syncTriggerA11y));
|
|
5397
|
-
|
|
5508
|
+
watch4(open, () => nextTick3(syncTriggerA11y));
|
|
5398
5509
|
function updatePosition() {
|
|
5399
5510
|
if (!open.value || !root.value) return;
|
|
5400
5511
|
const rect = root.value.getBoundingClientRect();
|
|
@@ -5453,7 +5564,7 @@ var popconfirm_default = {
|
|
|
5453
5564
|
emit("cancel");
|
|
5454
5565
|
close2();
|
|
5455
5566
|
}
|
|
5456
|
-
|
|
5567
|
+
onBeforeUnmount5(close2);
|
|
5457
5568
|
return { open, root, panelEl, panelStyle, toggle, close: close2, confirm, cancel };
|
|
5458
5569
|
},
|
|
5459
5570
|
template: `
|
|
@@ -5497,7 +5608,7 @@ var popconfirm_default = {
|
|
|
5497
5608
|
};
|
|
5498
5609
|
|
|
5499
5610
|
// src/components/anchor/index.js
|
|
5500
|
-
import { onBeforeUnmount as
|
|
5611
|
+
import { onBeforeUnmount as onBeforeUnmount6, onMounted as onMounted4, ref as ref5, watch as watch5 } from "vue";
|
|
5501
5612
|
var anchor_default = {
|
|
5502
5613
|
name: "DjmAnchor",
|
|
5503
5614
|
props: {
|
|
@@ -5510,8 +5621,8 @@ var anchor_default = {
|
|
|
5510
5621
|
},
|
|
5511
5622
|
emits: ["change"],
|
|
5512
5623
|
setup(props, { emit }) {
|
|
5513
|
-
const root =
|
|
5514
|
-
const activeKey =
|
|
5624
|
+
const root = ref5(null);
|
|
5625
|
+
const activeKey = ref5("");
|
|
5515
5626
|
let scrollEl = null;
|
|
5516
5627
|
let target = null;
|
|
5517
5628
|
function resolveContainer() {
|
|
@@ -5566,8 +5677,8 @@ var anchor_default = {
|
|
|
5566
5677
|
emit("change", item.href);
|
|
5567
5678
|
}
|
|
5568
5679
|
onMounted4(bind);
|
|
5569
|
-
|
|
5570
|
-
|
|
5680
|
+
watch5(() => props.container, bind);
|
|
5681
|
+
onBeforeUnmount6(unbind);
|
|
5571
5682
|
return { root, activeKey, go };
|
|
5572
5683
|
},
|
|
5573
5684
|
template: `
|
|
@@ -5589,7 +5700,7 @@ var anchor_default = {
|
|
|
5589
5700
|
};
|
|
5590
5701
|
|
|
5591
5702
|
// src/components/backtop/index.js
|
|
5592
|
-
import { onBeforeUnmount as
|
|
5703
|
+
import { onBeforeUnmount as onBeforeUnmount7, onMounted as onMounted5, ref as ref6 } from "vue";
|
|
5593
5704
|
var backtop_default = {
|
|
5594
5705
|
name: "DjmBacktop",
|
|
5595
5706
|
components: { DjmIcon: icon_default },
|
|
@@ -5602,8 +5713,8 @@ var backtop_default = {
|
|
|
5602
5713
|
},
|
|
5603
5714
|
emits: ["click"],
|
|
5604
5715
|
setup(props, { emit }) {
|
|
5605
|
-
const visible =
|
|
5606
|
-
const root =
|
|
5716
|
+
const visible = ref6(false);
|
|
5717
|
+
const root = ref6(null);
|
|
5607
5718
|
let target = null;
|
|
5608
5719
|
let scrollEl = null;
|
|
5609
5720
|
function resolveContainer() {
|
|
@@ -5637,7 +5748,7 @@ var backtop_default = {
|
|
|
5637
5748
|
emit("click");
|
|
5638
5749
|
}
|
|
5639
5750
|
onMounted5(bind);
|
|
5640
|
-
|
|
5751
|
+
onBeforeUnmount7(unbind);
|
|
5641
5752
|
return { visible, root, toTop };
|
|
5642
5753
|
},
|
|
5643
5754
|
template: `
|
|
@@ -5714,7 +5825,7 @@ var space_default = {
|
|
|
5714
5825
|
};
|
|
5715
5826
|
|
|
5716
5827
|
// src/components/affix/index.js
|
|
5717
|
-
import { onBeforeUnmount as
|
|
5828
|
+
import { onBeforeUnmount as onBeforeUnmount8, onMounted as onMounted6, ref as ref7 } from "vue";
|
|
5718
5829
|
var affix_default = {
|
|
5719
5830
|
name: "DjmAffix",
|
|
5720
5831
|
props: {
|
|
@@ -5725,10 +5836,10 @@ var affix_default = {
|
|
|
5725
5836
|
zIndex: { type: Number, default: 900 }
|
|
5726
5837
|
},
|
|
5727
5838
|
setup(props) {
|
|
5728
|
-
const root =
|
|
5729
|
-
const fixed =
|
|
5730
|
-
const affixStyle =
|
|
5731
|
-
const holderStyle =
|
|
5839
|
+
const root = ref7(null);
|
|
5840
|
+
const fixed = ref7(false);
|
|
5841
|
+
const affixStyle = ref7({});
|
|
5842
|
+
const holderStyle = ref7({});
|
|
5732
5843
|
let target = null;
|
|
5733
5844
|
let scrollEl = null;
|
|
5734
5845
|
function resolveContainer() {
|
|
@@ -5784,7 +5895,7 @@ var affix_default = {
|
|
|
5784
5895
|
target = null;
|
|
5785
5896
|
}
|
|
5786
5897
|
onMounted6(bind);
|
|
5787
|
-
|
|
5898
|
+
onBeforeUnmount8(unbind);
|
|
5788
5899
|
return { root, fixed, affixStyle, holderStyle };
|
|
5789
5900
|
},
|
|
5790
5901
|
template: `
|
|
@@ -5835,7 +5946,7 @@ var segmented_default = {
|
|
|
5835
5946
|
};
|
|
5836
5947
|
|
|
5837
5948
|
// src/components/image/index.js
|
|
5838
|
-
import { nextTick as nextTick4, onBeforeUnmount as
|
|
5949
|
+
import { nextTick as nextTick4, onBeforeUnmount as onBeforeUnmount9, ref as ref8, watch as watch6 } from "vue";
|
|
5839
5950
|
|
|
5840
5951
|
// src/utils/scroll-lock.js
|
|
5841
5952
|
var count = 0;
|
|
@@ -5882,11 +5993,11 @@ var image_default = {
|
|
|
5882
5993
|
preview: { type: Boolean, default: true }
|
|
5883
5994
|
},
|
|
5884
5995
|
setup(props) {
|
|
5885
|
-
const failed =
|
|
5886
|
-
const open =
|
|
5887
|
-
const zoomRef =
|
|
5888
|
-
const closeRef =
|
|
5889
|
-
|
|
5996
|
+
const failed = ref8(false);
|
|
5997
|
+
const open = ref8(false);
|
|
5998
|
+
const zoomRef = ref8(null);
|
|
5999
|
+
const closeRef = ref8(null);
|
|
6000
|
+
watch6(() => props.src, () => {
|
|
5890
6001
|
failed.value = false;
|
|
5891
6002
|
});
|
|
5892
6003
|
function toSize(value) {
|
|
@@ -5910,7 +6021,7 @@ var image_default = {
|
|
|
5910
6021
|
document.removeEventListener("keydown", onKeydown);
|
|
5911
6022
|
if (zoomRef.value) zoomRef.value.focus();
|
|
5912
6023
|
}
|
|
5913
|
-
|
|
6024
|
+
onBeforeUnmount9(closePreview);
|
|
5914
6025
|
return { failed, open, zoomRef, closeRef, toSize, openPreview, closePreview, t };
|
|
5915
6026
|
},
|
|
5916
6027
|
template: `
|
|
@@ -5965,13 +6076,15 @@ var image_default = {
|
|
|
5965
6076
|
};
|
|
5966
6077
|
|
|
5967
6078
|
// src/components/watermark/index.js
|
|
5968
|
-
import { computed as computed4, onBeforeUnmount as
|
|
6079
|
+
import { computed as computed4, onBeforeUnmount as onBeforeUnmount10, onMounted as onMounted7, ref as ref10, watch as watch7 } from "vue";
|
|
5969
6080
|
|
|
5970
6081
|
// src/theme/index.js
|
|
5971
|
-
import { ref as
|
|
6082
|
+
import { ref as ref9 } from "vue";
|
|
5972
6083
|
var KEY = "djm-theme";
|
|
5973
6084
|
var COLOR_KEY = "djm-primary";
|
|
5974
|
-
var
|
|
6085
|
+
var GLASS_KEY = "djm-glass";
|
|
6086
|
+
var theme = ref9("light");
|
|
6087
|
+
var glass = ref9(false);
|
|
5975
6088
|
var PRESET_COLORS = [
|
|
5976
6089
|
{ name: "\u9ED8\u8BA4\u84DD", value: "#1a6fc4" },
|
|
5977
6090
|
{ name: "\u79D1\u6280\u84DD", value: "#2563eb" },
|
|
@@ -5982,7 +6095,7 @@ var PRESET_COLORS = [
|
|
|
5982
6095
|
{ name: "\u6731\u7802\u7EA2", value: "#c0392b" },
|
|
5983
6096
|
{ name: "\u77F3\u58A8\u7070", value: "#4b5b6b" }
|
|
5984
6097
|
];
|
|
5985
|
-
var primaryColor =
|
|
6098
|
+
var primaryColor = ref9("");
|
|
5986
6099
|
var BRAND_VARS = [
|
|
5987
6100
|
"--djm-brand-50",
|
|
5988
6101
|
"--djm-brand-100",
|
|
@@ -6104,6 +6217,15 @@ function setTheme(name) {
|
|
|
6104
6217
|
function toggleTheme() {
|
|
6105
6218
|
setTheme(theme.value === "dark" ? "light" : "dark");
|
|
6106
6219
|
}
|
|
6220
|
+
function setGlass(enabled) {
|
|
6221
|
+
glass.value = !!enabled;
|
|
6222
|
+
document.documentElement.dataset.djmGlass = glass.value ? "on" : "";
|
|
6223
|
+
try {
|
|
6224
|
+
if (glass.value) localStorage.setItem(GLASS_KEY, "1");
|
|
6225
|
+
else localStorage.removeItem(GLASS_KEY);
|
|
6226
|
+
} catch (error) {
|
|
6227
|
+
}
|
|
6228
|
+
}
|
|
6107
6229
|
function initTheme() {
|
|
6108
6230
|
let saved = "";
|
|
6109
6231
|
try {
|
|
@@ -6123,9 +6245,16 @@ function initTheme() {
|
|
|
6123
6245
|
} catch (error) {
|
|
6124
6246
|
color = "";
|
|
6125
6247
|
}
|
|
6248
|
+
let glassSaved = false;
|
|
6249
|
+
try {
|
|
6250
|
+
glassSaved = localStorage.getItem(GLASS_KEY) === "1";
|
|
6251
|
+
} catch (error) {
|
|
6252
|
+
glassSaved = false;
|
|
6253
|
+
}
|
|
6126
6254
|
if (color) primaryColor.value = color;
|
|
6127
6255
|
const next = param === "dark" || param === "light" ? param : saved || "light";
|
|
6128
6256
|
setTheme(next);
|
|
6257
|
+
setGlass(glassSaved);
|
|
6129
6258
|
}
|
|
6130
6259
|
|
|
6131
6260
|
// src/components/watermark/index.js
|
|
@@ -6141,7 +6270,7 @@ var watermark_default = {
|
|
|
6141
6270
|
zIndex: { type: Number, default: 10 }
|
|
6142
6271
|
},
|
|
6143
6272
|
setup(props) {
|
|
6144
|
-
const dataUrl =
|
|
6273
|
+
const dataUrl = ref10("");
|
|
6145
6274
|
let canvasEl = null;
|
|
6146
6275
|
function build() {
|
|
6147
6276
|
const lines = (Array.isArray(props.content) ? props.content : [props.content]).filter(Boolean);
|
|
@@ -6183,8 +6312,8 @@ var watermark_default = {
|
|
|
6183
6312
|
zIndex: props.zIndex
|
|
6184
6313
|
}));
|
|
6185
6314
|
onMounted7(build);
|
|
6186
|
-
|
|
6187
|
-
|
|
6315
|
+
watch7(() => [props.content, props.gap, props.fontSize, props.color, props.rotate, theme.value], build, { deep: true });
|
|
6316
|
+
onBeforeUnmount10(() => {
|
|
6188
6317
|
canvasEl = null;
|
|
6189
6318
|
});
|
|
6190
6319
|
return { layerStyle };
|
|
@@ -6374,7 +6503,7 @@ var autocomplete_default = {
|
|
|
6374
6503
|
};
|
|
6375
6504
|
|
|
6376
6505
|
// src/components/splitter/index.js
|
|
6377
|
-
import { computed as computed5, onBeforeUnmount as
|
|
6506
|
+
import { computed as computed5, onBeforeUnmount as onBeforeUnmount11, ref as ref11 } from "vue";
|
|
6378
6507
|
var splitter_default = {
|
|
6379
6508
|
name: "DjmSplitter",
|
|
6380
6509
|
props: {
|
|
@@ -6387,8 +6516,8 @@ var splitter_default = {
|
|
|
6387
6516
|
},
|
|
6388
6517
|
emits: ["update:modelValue", "change"],
|
|
6389
6518
|
setup(props, { emit }) {
|
|
6390
|
-
const root =
|
|
6391
|
-
const dragging =
|
|
6519
|
+
const root = ref11(null);
|
|
6520
|
+
const dragging = ref11(false);
|
|
6392
6521
|
const ratio = computed5(() => {
|
|
6393
6522
|
const value = Number(props.modelValue);
|
|
6394
6523
|
const safe = Number.isFinite(value) ? value : 50;
|
|
@@ -6433,7 +6562,7 @@ var splitter_default = {
|
|
|
6433
6562
|
commit(ratio.value + step);
|
|
6434
6563
|
}
|
|
6435
6564
|
}
|
|
6436
|
-
|
|
6565
|
+
onBeforeUnmount11(stopDrag);
|
|
6437
6566
|
return { root, dragging, ratio, startDrag, onKeydown };
|
|
6438
6567
|
},
|
|
6439
6568
|
template: `
|
|
@@ -6470,7 +6599,7 @@ var splitter_default = {
|
|
|
6470
6599
|
};
|
|
6471
6600
|
|
|
6472
6601
|
// src/components/carousel/index.js
|
|
6473
|
-
import { onBeforeUnmount as
|
|
6602
|
+
import { onBeforeUnmount as onBeforeUnmount12, onMounted as onMounted8, ref as ref12, watch as watch8 } from "vue";
|
|
6474
6603
|
var carousel_default = {
|
|
6475
6604
|
name: "DjmCarousel",
|
|
6476
6605
|
components: { DjmIcon: icon_default },
|
|
@@ -6484,7 +6613,7 @@ var carousel_default = {
|
|
|
6484
6613
|
},
|
|
6485
6614
|
emits: ["change"],
|
|
6486
6615
|
setup(props, { emit }) {
|
|
6487
|
-
const index =
|
|
6616
|
+
const index = ref12(0);
|
|
6488
6617
|
let timer = null;
|
|
6489
6618
|
const boxStyle = () => ({
|
|
6490
6619
|
height: typeof props.height === "number" ? props.height + "px" : props.height
|
|
@@ -6522,14 +6651,14 @@ var carousel_default = {
|
|
|
6522
6651
|
}
|
|
6523
6652
|
}
|
|
6524
6653
|
onMounted8(start);
|
|
6525
|
-
|
|
6654
|
+
watch8(() => [props.autoplay, props.interval, props.items.length], start);
|
|
6526
6655
|
function pause() {
|
|
6527
6656
|
if (props.autoplay) stop();
|
|
6528
6657
|
}
|
|
6529
6658
|
function resume() {
|
|
6530
6659
|
if (props.autoplay) start();
|
|
6531
6660
|
}
|
|
6532
|
-
|
|
6661
|
+
onBeforeUnmount12(stop);
|
|
6533
6662
|
return { index, boxStyle, go, next, prev, onKeydown, pause, resume };
|
|
6534
6663
|
},
|
|
6535
6664
|
template: `
|
|
@@ -6589,7 +6718,7 @@ var carousel_default = {
|
|
|
6589
6718
|
};
|
|
6590
6719
|
|
|
6591
6720
|
// src/components/tour/index.js
|
|
6592
|
-
import { computed as computed6, nextTick as nextTick5, onBeforeUnmount as
|
|
6721
|
+
import { computed as computed6, nextTick as nextTick5, onBeforeUnmount as onBeforeUnmount13, onMounted as onMounted9, ref as ref13, watch as watch9 } from "vue";
|
|
6593
6722
|
var tour_default = {
|
|
6594
6723
|
name: "DjmTour",
|
|
6595
6724
|
components: { DjmIcon: icon_default },
|
|
@@ -6601,10 +6730,10 @@ var tour_default = {
|
|
|
6601
6730
|
},
|
|
6602
6731
|
emits: ["update:modelValue", "change", "finish"],
|
|
6603
6732
|
setup(props, { emit }) {
|
|
6604
|
-
const current =
|
|
6605
|
-
const highlight =
|
|
6606
|
-
const cardStyle =
|
|
6607
|
-
const card =
|
|
6733
|
+
const current = ref13(0);
|
|
6734
|
+
const highlight = ref13({ top: "0px", left: "0px", width: "0px", height: "0px" });
|
|
6735
|
+
const cardStyle = ref13({ position: "fixed", left: "0px", top: "0px", visibility: "hidden" });
|
|
6736
|
+
const card = ref13(null);
|
|
6608
6737
|
const step = computed6(() => props.steps[current.value] || null);
|
|
6609
6738
|
function update() {
|
|
6610
6739
|
const scene = step.value;
|
|
@@ -6665,14 +6794,14 @@ var tour_default = {
|
|
|
6665
6794
|
emit("change", current.value);
|
|
6666
6795
|
nextTick5(update);
|
|
6667
6796
|
}
|
|
6668
|
-
|
|
6797
|
+
watch9(() => props.modelValue, (value) => {
|
|
6669
6798
|
if (value) startScene();
|
|
6670
6799
|
else stopScene();
|
|
6671
6800
|
});
|
|
6672
6801
|
onMounted9(() => {
|
|
6673
6802
|
if (props.modelValue) startScene();
|
|
6674
6803
|
});
|
|
6675
|
-
|
|
6804
|
+
onBeforeUnmount13(stopScene);
|
|
6676
6805
|
return { current, step, highlight, cardStyle, card, close: close2, next, prev, t };
|
|
6677
6806
|
},
|
|
6678
6807
|
template: `
|
|
@@ -6710,7 +6839,7 @@ var tour_default = {
|
|
|
6710
6839
|
};
|
|
6711
6840
|
|
|
6712
6841
|
// src/components/calendar/index.js
|
|
6713
|
-
import { computed as computed7, ref as
|
|
6842
|
+
import { computed as computed7, ref as ref14, watch as watch10 } from "vue";
|
|
6714
6843
|
function pad2(num) {
|
|
6715
6844
|
return String(num).padStart(2, "0");
|
|
6716
6845
|
}
|
|
@@ -6740,8 +6869,8 @@ var calendar_default = {
|
|
|
6740
6869
|
const today = /* @__PURE__ */ new Date();
|
|
6741
6870
|
const todayKey = toKey(today.getFullYear(), today.getMonth(), today.getDate());
|
|
6742
6871
|
const initial = parse(props.modelValue);
|
|
6743
|
-
const viewYear =
|
|
6744
|
-
const viewMonth =
|
|
6872
|
+
const viewYear = ref14(initial ? initial.year : today.getFullYear());
|
|
6873
|
+
const viewMonth = ref14(initial ? initial.month : today.getMonth());
|
|
6745
6874
|
const weekNames = computed7(() => {
|
|
6746
6875
|
const base = ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"];
|
|
6747
6876
|
return base.slice(props.firstDay).concat(base.slice(0, props.firstDay));
|
|
@@ -6807,7 +6936,7 @@ var calendar_default = {
|
|
|
6807
6936
|
event.preventDefault();
|
|
6808
6937
|
list[next].focus();
|
|
6809
6938
|
}
|
|
6810
|
-
|
|
6939
|
+
watch10(() => props.modelValue, (value) => {
|
|
6811
6940
|
const parts = parse(value);
|
|
6812
6941
|
if (parts && (parts.year !== viewYear.value || parts.month !== viewMonth.value)) {
|
|
6813
6942
|
viewYear.value = parts.year;
|
|
@@ -6861,7 +6990,7 @@ var calendar_default = {
|
|
|
6861
6990
|
};
|
|
6862
6991
|
|
|
6863
6992
|
// src/components/float-button/index.js
|
|
6864
|
-
import { onBeforeUnmount as
|
|
6993
|
+
import { onBeforeUnmount as onBeforeUnmount14, ref as ref15 } from "vue";
|
|
6865
6994
|
var float_button_default = {
|
|
6866
6995
|
name: "DjmFloatButton",
|
|
6867
6996
|
components: { DjmIcon: icon_default },
|
|
@@ -6877,7 +7006,7 @@ var float_button_default = {
|
|
|
6877
7006
|
},
|
|
6878
7007
|
emits: ["click", "select"],
|
|
6879
7008
|
setup(props, { emit }) {
|
|
6880
|
-
const open =
|
|
7009
|
+
const open = ref15(false);
|
|
6881
7010
|
function onKeydown(event) {
|
|
6882
7011
|
if (event.key === "Escape") close2();
|
|
6883
7012
|
}
|
|
@@ -6912,7 +7041,7 @@ var float_button_default = {
|
|
|
6912
7041
|
emit("select", item);
|
|
6913
7042
|
if (typeof item.onClick === "function") item.onClick(item);
|
|
6914
7043
|
}
|
|
6915
|
-
|
|
7044
|
+
onBeforeUnmount14(close2);
|
|
6916
7045
|
return { open, onMainClick, choose };
|
|
6917
7046
|
},
|
|
6918
7047
|
template: `
|
|
@@ -6947,7 +7076,7 @@ var float_button_default = {
|
|
|
6947
7076
|
};
|
|
6948
7077
|
|
|
6949
7078
|
// src/components/mentions/index.js
|
|
6950
|
-
import { computed as computed8, nextTick as nextTick6, onBeforeUnmount as
|
|
7079
|
+
import { computed as computed8, nextTick as nextTick6, onBeforeUnmount as onBeforeUnmount15, ref as ref16, watch as watch11 } from "vue";
|
|
6951
7080
|
var uidSeed3 = 0;
|
|
6952
7081
|
var mentions_default = {
|
|
6953
7082
|
name: "DjmMentions",
|
|
@@ -6962,17 +7091,17 @@ var mentions_default = {
|
|
|
6962
7091
|
},
|
|
6963
7092
|
emits: ["update:modelValue", "input", "select"],
|
|
6964
7093
|
setup(props, { emit }) {
|
|
6965
|
-
const root =
|
|
6966
|
-
const input =
|
|
6967
|
-
const text =
|
|
6968
|
-
const open =
|
|
6969
|
-
const keyword =
|
|
6970
|
-
const activeIndex =
|
|
7094
|
+
const root = ref16(null);
|
|
7095
|
+
const input = ref16(null);
|
|
7096
|
+
const text = ref16(props.modelValue);
|
|
7097
|
+
const open = ref16(false);
|
|
7098
|
+
const keyword = ref16("");
|
|
7099
|
+
const activeIndex = ref16(-1);
|
|
6971
7100
|
const listId = "djm-mentions-" + ++uidSeed3;
|
|
6972
|
-
const panelStyle =
|
|
7101
|
+
const panelStyle = ref16({ ...PANEL_HIDDEN_STYLE });
|
|
6973
7102
|
let triggerIndex = -1;
|
|
6974
7103
|
let detachPanel = null;
|
|
6975
|
-
|
|
7104
|
+
watch11(() => props.modelValue, (value) => {
|
|
6976
7105
|
text.value = value;
|
|
6977
7106
|
});
|
|
6978
7107
|
const normalized = computed8(() => props.options.map((item) => typeof item === "string" ? { value: item, label: item } : item));
|
|
@@ -7065,7 +7194,7 @@ var mentions_default = {
|
|
|
7065
7194
|
input.value.setSelectionRange(pos, pos);
|
|
7066
7195
|
});
|
|
7067
7196
|
}
|
|
7068
|
-
|
|
7197
|
+
onBeforeUnmount15(closePanel);
|
|
7069
7198
|
return {
|
|
7070
7199
|
root,
|
|
7071
7200
|
input,
|
|
@@ -7339,7 +7468,7 @@ var input_tag_default = {
|
|
|
7339
7468
|
};
|
|
7340
7469
|
|
|
7341
7470
|
// src/components/password/index.js
|
|
7342
|
-
import { computed as computed9, ref as
|
|
7471
|
+
import { computed as computed9, ref as ref17 } from "vue";
|
|
7343
7472
|
var password_default = {
|
|
7344
7473
|
name: "DjmPassword",
|
|
7345
7474
|
components: { DjmIcon: icon_default },
|
|
@@ -7353,7 +7482,7 @@ var password_default = {
|
|
|
7353
7482
|
},
|
|
7354
7483
|
emits: ["update:modelValue", "input", "change", "enter", "focus", "blur"],
|
|
7355
7484
|
setup(props, { emit }) {
|
|
7356
|
-
const visible =
|
|
7485
|
+
const visible = ref17(false);
|
|
7357
7486
|
const score = computed9(() => {
|
|
7358
7487
|
const value = props.modelValue || "";
|
|
7359
7488
|
if (!value) return 0;
|
|
@@ -7419,7 +7548,7 @@ var password_default = {
|
|
|
7419
7548
|
};
|
|
7420
7549
|
|
|
7421
7550
|
// src/components/command-palette/index.js
|
|
7422
|
-
import { computed as computed10, nextTick as nextTick7, onBeforeUnmount as
|
|
7551
|
+
import { computed as computed10, nextTick as nextTick7, onBeforeUnmount as onBeforeUnmount16, onMounted as onMounted10, ref as ref18, watch as watch12 } from "vue";
|
|
7423
7552
|
|
|
7424
7553
|
// src/utils/focus-trap.js
|
|
7425
7554
|
var FOCUSABLE = [
|
|
@@ -7472,11 +7601,11 @@ var command_palette_default = {
|
|
|
7472
7601
|
},
|
|
7473
7602
|
emits: ["update:modelValue", "run"],
|
|
7474
7603
|
setup(props, { emit }) {
|
|
7475
|
-
const open =
|
|
7476
|
-
const keyword =
|
|
7477
|
-
const activeIndex =
|
|
7478
|
-
const searchInput =
|
|
7479
|
-
const panelEl =
|
|
7604
|
+
const open = ref18(false);
|
|
7605
|
+
const keyword = ref18("");
|
|
7606
|
+
const activeIndex = ref18(-1);
|
|
7607
|
+
const searchInput = ref18(null);
|
|
7608
|
+
const panelEl = ref18(null);
|
|
7480
7609
|
const listId = "djm-command-list-" + ++uidSeed4;
|
|
7481
7610
|
let releaseTrap = null;
|
|
7482
7611
|
const filtered = computed10(() => {
|
|
@@ -7559,12 +7688,12 @@ var command_palette_default = {
|
|
|
7559
7688
|
if (typeof item.run === "function") item.run(item);
|
|
7560
7689
|
hide();
|
|
7561
7690
|
}
|
|
7562
|
-
|
|
7691
|
+
watch12(() => props.modelValue, (value) => {
|
|
7563
7692
|
if (value) show();
|
|
7564
7693
|
else hide();
|
|
7565
7694
|
});
|
|
7566
7695
|
onMounted10(() => window.addEventListener("keydown", onGlobalKeydown));
|
|
7567
|
-
|
|
7696
|
+
onBeforeUnmount16(() => {
|
|
7568
7697
|
window.removeEventListener("keydown", onGlobalKeydown);
|
|
7569
7698
|
hide();
|
|
7570
7699
|
});
|
|
@@ -7616,7 +7745,7 @@ var command_palette_default = {
|
|
|
7616
7745
|
};
|
|
7617
7746
|
|
|
7618
7747
|
// src/components/qrcode/index.js
|
|
7619
|
-
import { onMounted as onMounted11, ref as
|
|
7748
|
+
import { onMounted as onMounted11, ref as ref19, watch as watch13 } from "vue";
|
|
7620
7749
|
var qrcode_default = {
|
|
7621
7750
|
name: "DjmQRCode",
|
|
7622
7751
|
props: {
|
|
@@ -7631,8 +7760,8 @@ var qrcode_default = {
|
|
|
7631
7760
|
alt: { type: String, default: "\u4E8C\u7EF4\u7801" }
|
|
7632
7761
|
},
|
|
7633
7762
|
setup(props) {
|
|
7634
|
-
const src =
|
|
7635
|
-
const error =
|
|
7763
|
+
const src = ref19("");
|
|
7764
|
+
const error = ref19("");
|
|
7636
7765
|
let lib = null;
|
|
7637
7766
|
let seq2 = 0;
|
|
7638
7767
|
async function ensureLib() {
|
|
@@ -7669,7 +7798,7 @@ var qrcode_default = {
|
|
|
7669
7798
|
}
|
|
7670
7799
|
}
|
|
7671
7800
|
onMounted11(render);
|
|
7672
|
-
|
|
7801
|
+
watch13(() => [props.value, props.size, props.level, props.margin, props.dark, props.light], render);
|
|
7673
7802
|
return { src, error };
|
|
7674
7803
|
},
|
|
7675
7804
|
template: `
|
|
@@ -7708,7 +7837,7 @@ var status_default = {
|
|
|
7708
7837
|
};
|
|
7709
7838
|
|
|
7710
7839
|
// src/components/tooltip/index.js
|
|
7711
|
-
import { ref as
|
|
7840
|
+
import { ref as ref20, nextTick as nextTick8, onBeforeUnmount as onBeforeUnmount17 } from "vue";
|
|
7712
7841
|
var uid2 = 0;
|
|
7713
7842
|
var tooltip_default = {
|
|
7714
7843
|
name: "DjmTooltip",
|
|
@@ -7719,11 +7848,11 @@ var tooltip_default = {
|
|
|
7719
7848
|
delay: { type: Number, default: 80 }
|
|
7720
7849
|
},
|
|
7721
7850
|
setup(props) {
|
|
7722
|
-
const visible =
|
|
7723
|
-
const rootRef =
|
|
7724
|
-
const contentRef =
|
|
7725
|
-
const actualPlacement =
|
|
7726
|
-
const panelStyle =
|
|
7851
|
+
const visible = ref20(false);
|
|
7852
|
+
const rootRef = ref20(null);
|
|
7853
|
+
const contentRef = ref20(null);
|
|
7854
|
+
const actualPlacement = ref20(props.placement);
|
|
7855
|
+
const panelStyle = ref20({});
|
|
7727
7856
|
const tipId = "djm-tooltip-" + ++uid2;
|
|
7728
7857
|
let timer = null;
|
|
7729
7858
|
function triggerEl() {
|
|
@@ -7794,7 +7923,7 @@ var tooltip_default = {
|
|
|
7794
7923
|
bindTrigger(false);
|
|
7795
7924
|
bindReposition(false);
|
|
7796
7925
|
}
|
|
7797
|
-
|
|
7926
|
+
onBeforeUnmount17(() => {
|
|
7798
7927
|
window.clearTimeout(timer);
|
|
7799
7928
|
bindReposition(false);
|
|
7800
7929
|
});
|
|
@@ -7819,7 +7948,7 @@ var tooltip_default = {
|
|
|
7819
7948
|
};
|
|
7820
7949
|
|
|
7821
7950
|
// src/components/dropdown/index.js
|
|
7822
|
-
import { nextTick as nextTick9, onBeforeUnmount as
|
|
7951
|
+
import { nextTick as nextTick9, onBeforeUnmount as onBeforeUnmount18, onMounted as onMounted12, ref as ref21, watch as watch14 } from "vue";
|
|
7823
7952
|
var dropdown_default = {
|
|
7824
7953
|
name: "DjmDropdown",
|
|
7825
7954
|
components: { DjmIcon: icon_default },
|
|
@@ -7836,10 +7965,10 @@ var dropdown_default = {
|
|
|
7836
7965
|
},
|
|
7837
7966
|
emits: ["select", "visible-change"],
|
|
7838
7967
|
setup(props, { emit }) {
|
|
7839
|
-
const open =
|
|
7840
|
-
const root =
|
|
7841
|
-
const menuEl =
|
|
7842
|
-
const panelStyle =
|
|
7968
|
+
const open = ref21(false);
|
|
7969
|
+
const root = ref21(null);
|
|
7970
|
+
const menuEl = ref21(null);
|
|
7971
|
+
const panelStyle = ref21({});
|
|
7843
7972
|
let detachPanel = null;
|
|
7844
7973
|
function syncTriggerA11y() {
|
|
7845
7974
|
const wrapper = root.value && root.value.querySelector(".djm-dropdown-trigger");
|
|
@@ -7853,7 +7982,7 @@ var dropdown_default = {
|
|
|
7853
7982
|
else target.removeAttribute("aria-disabled");
|
|
7854
7983
|
}
|
|
7855
7984
|
onMounted12(() => nextTick9(syncTriggerA11y));
|
|
7856
|
-
|
|
7985
|
+
watch14(open, () => nextTick9(syncTriggerA11y));
|
|
7857
7986
|
function updatePosition() {
|
|
7858
7987
|
if (!open.value || !root.value) return;
|
|
7859
7988
|
const rect = root.value.getBoundingClientRect();
|
|
@@ -7956,7 +8085,7 @@ var dropdown_default = {
|
|
|
7956
8085
|
emit("select", item);
|
|
7957
8086
|
if (props.closeOnSelect) close2();
|
|
7958
8087
|
}
|
|
7959
|
-
|
|
8088
|
+
onBeforeUnmount18(() => {
|
|
7960
8089
|
window.clearTimeout(hoverTimer);
|
|
7961
8090
|
close2();
|
|
7962
8091
|
});
|
|
@@ -8021,7 +8150,7 @@ var dropdown_default = {
|
|
|
8021
8150
|
};
|
|
8022
8151
|
|
|
8023
8152
|
// src/components/drawer/index.js
|
|
8024
|
-
import { ref as
|
|
8153
|
+
import { ref as ref22, nextTick as nextTick10, watch as watch15, onMounted as onMounted13, onBeforeUnmount as onBeforeUnmount19 } from "vue";
|
|
8025
8154
|
var uid3 = 0;
|
|
8026
8155
|
var drawer_default = {
|
|
8027
8156
|
name: "DjmDrawer",
|
|
@@ -8034,11 +8163,13 @@ var drawer_default = {
|
|
|
8034
8163
|
// 点击遮罩关闭
|
|
8035
8164
|
maskClosable: { type: Boolean, default: true },
|
|
8036
8165
|
showClose: { type: Boolean, default: true },
|
|
8037
|
-
closeOnEsc: { type: Boolean, default: true }
|
|
8166
|
+
closeOnEsc: { type: Boolean, default: true },
|
|
8167
|
+
// 毛玻璃底
|
|
8168
|
+
glass: { type: Boolean, default: false }
|
|
8038
8169
|
},
|
|
8039
8170
|
emits: ["update:modelValue", "open", "close"],
|
|
8040
8171
|
setup(props, { emit }) {
|
|
8041
|
-
const panelRef =
|
|
8172
|
+
const panelRef = ref22(null);
|
|
8042
8173
|
const titleId = `djm-drawer-title-${++uid3}`;
|
|
8043
8174
|
let locked = false;
|
|
8044
8175
|
let releaseTrap = null;
|
|
@@ -8071,14 +8202,14 @@ var drawer_default = {
|
|
|
8071
8202
|
}
|
|
8072
8203
|
emit("close");
|
|
8073
8204
|
}
|
|
8074
|
-
|
|
8205
|
+
watch15(() => props.modelValue, (open) => {
|
|
8075
8206
|
if (open) activate();
|
|
8076
8207
|
else deactivate();
|
|
8077
8208
|
});
|
|
8078
8209
|
onMounted13(() => {
|
|
8079
8210
|
if (props.modelValue) activate();
|
|
8080
8211
|
});
|
|
8081
|
-
|
|
8212
|
+
onBeforeUnmount19(() => {
|
|
8082
8213
|
document.removeEventListener("keydown", onKeydown);
|
|
8083
8214
|
release();
|
|
8084
8215
|
if (locked) unlockScroll();
|
|
@@ -8097,7 +8228,7 @@ var drawer_default = {
|
|
|
8097
8228
|
<aside
|
|
8098
8229
|
ref="panelRef"
|
|
8099
8230
|
class="djm-drawer"
|
|
8100
|
-
:class="'djm-drawer-' + placement"
|
|
8231
|
+
:class="['djm-drawer-' + placement, { 'djm-is-glass': glass }]"
|
|
8101
8232
|
:style="panelStyle"
|
|
8102
8233
|
role="dialog"
|
|
8103
8234
|
aria-modal="true"
|
|
@@ -8132,7 +8263,7 @@ var drawer_default = {
|
|
|
8132
8263
|
};
|
|
8133
8264
|
|
|
8134
8265
|
// src/components/modal/index.js
|
|
8135
|
-
import { ref as
|
|
8266
|
+
import { ref as ref23, nextTick as nextTick11, watch as watch16, computed as computed11, onMounted as onMounted14, onBeforeUnmount as onBeforeUnmount20 } from "vue";
|
|
8136
8267
|
var uid4 = 0;
|
|
8137
8268
|
var modal_default = {
|
|
8138
8269
|
name: "DjmModal",
|
|
@@ -8147,11 +8278,13 @@ var modal_default = {
|
|
|
8147
8278
|
// 是否允许 Esc 关闭
|
|
8148
8279
|
closeOnEsc: { type: Boolean, default: true },
|
|
8149
8280
|
// 全屏铺满,适合配置类大表单
|
|
8150
|
-
fullscreen: { type: Boolean, default: false }
|
|
8281
|
+
fullscreen: { type: Boolean, default: false },
|
|
8282
|
+
// 毛玻璃底:需要显示背后页面时使用
|
|
8283
|
+
glass: { type: Boolean, default: false }
|
|
8151
8284
|
},
|
|
8152
8285
|
emits: ["update:modelValue", "open", "close"],
|
|
8153
8286
|
setup(props, { emit }) {
|
|
8154
|
-
const dialogRef =
|
|
8287
|
+
const dialogRef = ref23(null);
|
|
8155
8288
|
const titleId = `djm-modal-title-${++uid4}`;
|
|
8156
8289
|
let locked = false;
|
|
8157
8290
|
let releaseTrap = null;
|
|
@@ -8184,14 +8317,14 @@ var modal_default = {
|
|
|
8184
8317
|
}
|
|
8185
8318
|
emit("close");
|
|
8186
8319
|
}
|
|
8187
|
-
|
|
8320
|
+
watch16(() => props.modelValue, (open) => {
|
|
8188
8321
|
if (open) activate();
|
|
8189
8322
|
else deactivate();
|
|
8190
8323
|
});
|
|
8191
8324
|
onMounted14(() => {
|
|
8192
8325
|
if (props.modelValue) activate();
|
|
8193
8326
|
});
|
|
8194
|
-
|
|
8327
|
+
onBeforeUnmount20(() => {
|
|
8195
8328
|
document.removeEventListener("keydown", onKey);
|
|
8196
8329
|
release();
|
|
8197
8330
|
if (locked) unlockScroll();
|
|
@@ -8213,7 +8346,7 @@ var modal_default = {
|
|
|
8213
8346
|
<div
|
|
8214
8347
|
ref="dialogRef"
|
|
8215
8348
|
class="djm-modal"
|
|
8216
|
-
:class="{ 'djm-is-fullscreen': fullscreen }"
|
|
8349
|
+
:class="{ 'djm-is-fullscreen': fullscreen, 'djm-is-glass': glass }"
|
|
8217
8350
|
:style="dialogStyle"
|
|
8218
8351
|
role="dialog"
|
|
8219
8352
|
aria-modal="true"
|
|
@@ -8311,7 +8444,7 @@ var confirm_dialog_default = {
|
|
|
8311
8444
|
};
|
|
8312
8445
|
|
|
8313
8446
|
// src/components/pagination/index.js
|
|
8314
|
-
import { computed as computed12, ref as
|
|
8447
|
+
import { computed as computed12, ref as ref24 } from "vue";
|
|
8315
8448
|
var pagination_default = {
|
|
8316
8449
|
name: "DjmPagination",
|
|
8317
8450
|
components: { Icon: icon_default },
|
|
@@ -8323,7 +8456,7 @@ var pagination_default = {
|
|
|
8323
8456
|
},
|
|
8324
8457
|
emits: ["update:page", "update:pageSize", "change"],
|
|
8325
8458
|
setup(props, { emit }) {
|
|
8326
|
-
const jumpText =
|
|
8459
|
+
const jumpText = ref24("");
|
|
8327
8460
|
const pageCount = computed12(() => Math.max(1, Math.ceil(props.total / Math.max(1, props.pageSize))));
|
|
8328
8461
|
const current = computed12(() => Math.min(Math.max(1, props.page), pageCount.value));
|
|
8329
8462
|
const pages = computed12(() => {
|
|
@@ -8543,7 +8676,7 @@ var tabs_default = {
|
|
|
8543
8676
|
};
|
|
8544
8677
|
|
|
8545
8678
|
// src/components/context-menu/index.js
|
|
8546
|
-
import { ref as
|
|
8679
|
+
import { ref as ref25, watch as watch17, nextTick as nextTick12, onBeforeUnmount as onBeforeUnmount21 } from "vue";
|
|
8547
8680
|
var context_menu_default = {
|
|
8548
8681
|
name: "DjmContextMenu",
|
|
8549
8682
|
components: { Icon: icon_default },
|
|
@@ -8555,8 +8688,8 @@ var context_menu_default = {
|
|
|
8555
8688
|
},
|
|
8556
8689
|
emits: ["update:modelValue", "select"],
|
|
8557
8690
|
setup(props, { emit }) {
|
|
8558
|
-
const menuRef =
|
|
8559
|
-
const pos =
|
|
8691
|
+
const menuRef = ref25(null);
|
|
8692
|
+
const pos = ref25({ left: 0, top: 0 });
|
|
8560
8693
|
const margin = 8;
|
|
8561
8694
|
function close2() {
|
|
8562
8695
|
emit("update:modelValue", false);
|
|
@@ -8618,7 +8751,7 @@ var context_menu_default = {
|
|
|
8618
8751
|
detach = null;
|
|
8619
8752
|
}
|
|
8620
8753
|
}
|
|
8621
|
-
|
|
8754
|
+
watch17(
|
|
8622
8755
|
() => props.modelValue,
|
|
8623
8756
|
(open) => {
|
|
8624
8757
|
if (open) {
|
|
@@ -8629,10 +8762,10 @@ var context_menu_default = {
|
|
|
8629
8762
|
}
|
|
8630
8763
|
}
|
|
8631
8764
|
);
|
|
8632
|
-
|
|
8765
|
+
watch17([() => props.x, () => props.y], () => {
|
|
8633
8766
|
if (props.modelValue) openAtCursor();
|
|
8634
8767
|
});
|
|
8635
|
-
|
|
8768
|
+
onBeforeUnmount21(unbind);
|
|
8636
8769
|
return { menuRef, pos, close: close2, onSelect, onKeydown, t };
|
|
8637
8770
|
},
|
|
8638
8771
|
template: `
|
|
@@ -8671,7 +8804,7 @@ var context_menu_default = {
|
|
|
8671
8804
|
};
|
|
8672
8805
|
|
|
8673
8806
|
// src/components/date-picker/index.js
|
|
8674
|
-
import { ref as
|
|
8807
|
+
import { ref as ref26, computed as computed14, onBeforeUnmount as onBeforeUnmount22, watch as watch18 } from "vue";
|
|
8675
8808
|
var uidSeed5 = 0;
|
|
8676
8809
|
function pad3(value) {
|
|
8677
8810
|
return String(value).padStart(2, "0");
|
|
@@ -8706,12 +8839,12 @@ var date_picker_default = {
|
|
|
8706
8839
|
},
|
|
8707
8840
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
8708
8841
|
setup(props, { emit }) {
|
|
8709
|
-
const open =
|
|
8710
|
-
|
|
8711
|
-
const root =
|
|
8712
|
-
const panel =
|
|
8842
|
+
const open = ref26(false);
|
|
8843
|
+
watch18(open, (value) => emit("visible-change", value));
|
|
8844
|
+
const root = ref26(null);
|
|
8845
|
+
const panel = ref26(null);
|
|
8713
8846
|
const panelId = "djm-date-panel-" + ++uidSeed5;
|
|
8714
|
-
const panelStyle =
|
|
8847
|
+
const panelStyle = ref26({ ...PANEL_HIDDEN_STYLE });
|
|
8715
8848
|
let detachPanel = null;
|
|
8716
8849
|
const today = /* @__PURE__ */ new Date();
|
|
8717
8850
|
const todayKey = toKey2(today.getFullYear(), today.getMonth(), today.getDate());
|
|
@@ -8726,16 +8859,16 @@ var date_picker_default = {
|
|
|
8726
8859
|
return end ? `${start} ~ ${end}` : `${start} ~ ${t("datePicker.rangeEnd")}`;
|
|
8727
8860
|
});
|
|
8728
8861
|
const initial = parse2(values.value[0]);
|
|
8729
|
-
const viewYear =
|
|
8730
|
-
const viewMonth =
|
|
8731
|
-
const pendingStart =
|
|
8732
|
-
const pendingEnd =
|
|
8862
|
+
const viewYear = ref26(initial ? initial.year : today.getFullYear());
|
|
8863
|
+
const viewMonth = ref26(initial ? initial.month : today.getMonth());
|
|
8864
|
+
const pendingStart = ref26(values.value[0] || "");
|
|
8865
|
+
const pendingEnd = ref26(values.value[1] || "");
|
|
8733
8866
|
const placeholderText = computed14(() => {
|
|
8734
8867
|
if (props.placeholder) return props.placeholder;
|
|
8735
8868
|
return t(props.range ? "datePicker.rangePlaceholder" : "datePicker.placeholder");
|
|
8736
8869
|
});
|
|
8737
8870
|
const weeks = computed14(() => t("datePicker.weeks").split(","));
|
|
8738
|
-
const narrow =
|
|
8871
|
+
const narrow = ref26(false);
|
|
8739
8872
|
let media = null;
|
|
8740
8873
|
const onMediaChange = (event) => {
|
|
8741
8874
|
narrow.value = event.matches;
|
|
@@ -8746,13 +8879,13 @@ var date_picker_default = {
|
|
|
8746
8879
|
if (media.addEventListener) media.addEventListener("change", onMediaChange);
|
|
8747
8880
|
else media.addListener(onMediaChange);
|
|
8748
8881
|
}
|
|
8749
|
-
|
|
8882
|
+
onBeforeUnmount22(() => {
|
|
8750
8883
|
if (!media) return;
|
|
8751
8884
|
if (media.removeEventListener) media.removeEventListener("change", onMediaChange);
|
|
8752
8885
|
else media.removeListener(onMediaChange);
|
|
8753
8886
|
});
|
|
8754
8887
|
const panelCount = computed14(() => props.range ? Math.min(narrow.value ? 1 : 2, Math.max(1, props.panels)) : 1);
|
|
8755
|
-
const hoverKey =
|
|
8888
|
+
const hoverKey = ref26("");
|
|
8756
8889
|
const hoverRange = computed14(() => {
|
|
8757
8890
|
if (!props.range || !pendingStart.value || pendingEnd.value || !hoverKey.value) return null;
|
|
8758
8891
|
const a = pendingStart.value;
|
|
@@ -8932,7 +9065,7 @@ var date_picker_default = {
|
|
|
8932
9065
|
pendingEnd.value = "";
|
|
8933
9066
|
closePanel();
|
|
8934
9067
|
}
|
|
8935
|
-
|
|
9068
|
+
onBeforeUnmount22(() => {
|
|
8936
9069
|
if (detachPanel) {
|
|
8937
9070
|
detachPanel();
|
|
8938
9071
|
detachPanel = null;
|
|
@@ -9061,7 +9194,7 @@ var date_picker_default = {
|
|
|
9061
9194
|
};
|
|
9062
9195
|
|
|
9063
9196
|
// src/components/tree-select/index.js
|
|
9064
|
-
import { ref as
|
|
9197
|
+
import { ref as ref27, computed as computed15, nextTick as nextTick13, onBeforeUnmount as onBeforeUnmount23, watch as watch19 } from "vue";
|
|
9065
9198
|
function collectLeaves(node, keyOf2, out = []) {
|
|
9066
9199
|
if (node.children && node.children.length) {
|
|
9067
9200
|
node.children.forEach((child) => collectLeaves(child, keyOf2, out));
|
|
@@ -9097,13 +9230,13 @@ var tree_select_default = {
|
|
|
9097
9230
|
},
|
|
9098
9231
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
9099
9232
|
setup(props, { emit }) {
|
|
9100
|
-
const open =
|
|
9101
|
-
const root =
|
|
9102
|
-
const panel =
|
|
9103
|
-
const searchInput =
|
|
9104
|
-
const search =
|
|
9105
|
-
const temp =
|
|
9106
|
-
const panelStyle =
|
|
9233
|
+
const open = ref27(false);
|
|
9234
|
+
const root = ref27(null);
|
|
9235
|
+
const panel = ref27(null);
|
|
9236
|
+
const searchInput = ref27(null);
|
|
9237
|
+
const search = ref27("");
|
|
9238
|
+
const temp = ref27([]);
|
|
9239
|
+
const panelStyle = ref27({ ...PANEL_HIDDEN_STYLE });
|
|
9107
9240
|
let detachPanel = null;
|
|
9108
9241
|
function keyOf2(node) {
|
|
9109
9242
|
return node ? node[props.nodeKey] : void 0;
|
|
@@ -9112,7 +9245,7 @@ var tree_select_default = {
|
|
|
9112
9245
|
const value = node ? node[props.labelKey] : "";
|
|
9113
9246
|
return value === null || value === void 0 ? "" : String(value);
|
|
9114
9247
|
}
|
|
9115
|
-
const expandedIds =
|
|
9248
|
+
const expandedIds = ref27(
|
|
9116
9249
|
new Set(
|
|
9117
9250
|
collectNodes(props.options).filter((node) => node.children && node.children.length).map((node) => keyOf2(node))
|
|
9118
9251
|
)
|
|
@@ -9122,7 +9255,7 @@ var tree_select_default = {
|
|
|
9122
9255
|
collectNodes(props.options).forEach((node) => map.set(keyOf2(node), node));
|
|
9123
9256
|
return map;
|
|
9124
9257
|
});
|
|
9125
|
-
|
|
9258
|
+
watch19(() => props.options, (options) => {
|
|
9126
9259
|
if (!options || !options.length || expandedIds.value.size) return;
|
|
9127
9260
|
expandedIds.value = new Set(
|
|
9128
9261
|
collectNodes(options).filter((node) => node.children && node.children.length).map((node) => keyOf2(node))
|
|
@@ -9281,7 +9414,7 @@ var tree_select_default = {
|
|
|
9281
9414
|
emit("change", []);
|
|
9282
9415
|
temp.value = [];
|
|
9283
9416
|
}
|
|
9284
|
-
|
|
9417
|
+
onBeforeUnmount23(() => {
|
|
9285
9418
|
if (detachPanel) {
|
|
9286
9419
|
detachPanel();
|
|
9287
9420
|
detachPanel = null;
|
|
@@ -9420,10 +9553,10 @@ var tree_select_default = {
|
|
|
9420
9553
|
};
|
|
9421
9554
|
|
|
9422
9555
|
// src/components/rich-editor/index.js
|
|
9423
|
-
import { ref as
|
|
9556
|
+
import { ref as ref29, computed as computed17, watch as watch21, onMounted as onMounted15, onBeforeUnmount as onBeforeUnmount24 } from "vue";
|
|
9424
9557
|
|
|
9425
9558
|
// src/components/media-picker/index.js
|
|
9426
|
-
import { computed as computed16, ref as
|
|
9559
|
+
import { computed as computed16, ref as ref28, watch as watch20 } from "vue";
|
|
9427
9560
|
var media_picker_default = {
|
|
9428
9561
|
name: "DjmMediaPicker",
|
|
9429
9562
|
components: { DjmModal: modal_default, DjmPagination: pagination_default, DjmIcon: icon_default },
|
|
@@ -9442,10 +9575,10 @@ var media_picker_default = {
|
|
|
9442
9575
|
},
|
|
9443
9576
|
emits: ["update:modelValue", "change"],
|
|
9444
9577
|
setup(props, { emit }) {
|
|
9445
|
-
const open =
|
|
9446
|
-
const keyword =
|
|
9447
|
-
const page =
|
|
9448
|
-
const temp =
|
|
9578
|
+
const open = ref28(false);
|
|
9579
|
+
const keyword = ref28("");
|
|
9580
|
+
const page = ref28(1);
|
|
9581
|
+
const temp = ref28([]);
|
|
9449
9582
|
const selectedIds = computed16(() => {
|
|
9450
9583
|
if (props.multiple) return Array.isArray(props.modelValue) ? props.modelValue : [];
|
|
9451
9584
|
if (props.modelValue === "" || props.modelValue === null || props.modelValue === void 0) return [];
|
|
@@ -9468,10 +9601,10 @@ var media_picker_default = {
|
|
|
9468
9601
|
const start = (page.value - 1) * props.pageSize;
|
|
9469
9602
|
return filtered.value.slice(start, start + props.pageSize);
|
|
9470
9603
|
});
|
|
9471
|
-
|
|
9604
|
+
watch20(keyword, () => {
|
|
9472
9605
|
page.value = 1;
|
|
9473
9606
|
});
|
|
9474
|
-
|
|
9607
|
+
watch20(
|
|
9475
9608
|
() => filtered.value.length,
|
|
9476
9609
|
() => {
|
|
9477
9610
|
const max = Math.max(1, Math.ceil(filtered.value.length / props.pageSize));
|
|
@@ -9805,18 +9938,18 @@ var rich_editor_default = {
|
|
|
9805
9938
|
},
|
|
9806
9939
|
emits: ["update:modelValue", "upload-error"],
|
|
9807
9940
|
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 =
|
|
9941
|
+
const editor = ref29(null);
|
|
9942
|
+
const fileInput = ref29(null);
|
|
9943
|
+
const sourceMode = ref29(false);
|
|
9944
|
+
const source = ref29(props.modelValue);
|
|
9945
|
+
const fullscreen = ref29(false);
|
|
9946
|
+
const panel = ref29("");
|
|
9947
|
+
const uploadCount = ref29(0);
|
|
9948
|
+
const textColor = ref29(COLORS[0]);
|
|
9949
|
+
const bgColor = ref29("#fdf3c4");
|
|
9950
|
+
const fontSize = ref29("");
|
|
9951
|
+
const count2 = ref29(0);
|
|
9952
|
+
const formats = ref29({
|
|
9820
9953
|
bold: false,
|
|
9821
9954
|
italic: false,
|
|
9822
9955
|
underline: false,
|
|
@@ -10210,7 +10343,7 @@ var rich_editor_default = {
|
|
|
10210
10343
|
panel.value = "";
|
|
10211
10344
|
}
|
|
10212
10345
|
}
|
|
10213
|
-
|
|
10346
|
+
watch21(
|
|
10214
10347
|
() => props.modelValue,
|
|
10215
10348
|
(value) => {
|
|
10216
10349
|
if (sourceMode.value) {
|
|
@@ -10229,7 +10362,7 @@ var rich_editor_default = {
|
|
|
10229
10362
|
document.addEventListener("click", onDocumentClick);
|
|
10230
10363
|
document.addEventListener("keydown", onKeydown);
|
|
10231
10364
|
});
|
|
10232
|
-
|
|
10365
|
+
onBeforeUnmount24(() => {
|
|
10233
10366
|
document.removeEventListener("selectionchange", syncFormats);
|
|
10234
10367
|
document.removeEventListener("click", onDocumentClick);
|
|
10235
10368
|
document.removeEventListener("keydown", onKeydown);
|
|
@@ -10532,7 +10665,7 @@ var rich_editor_default = {
|
|
|
10532
10665
|
};
|
|
10533
10666
|
|
|
10534
10667
|
// src/components/floating-window/index.js
|
|
10535
|
-
import { ref as
|
|
10668
|
+
import { ref as ref30, onBeforeUnmount as onBeforeUnmount25 } from "vue";
|
|
10536
10669
|
function clamp(value, min, max) {
|
|
10537
10670
|
return Math.min(Math.max(value, min), Math.max(min, max));
|
|
10538
10671
|
}
|
|
@@ -10550,12 +10683,12 @@ var floating_window_default = {
|
|
|
10550
10683
|
},
|
|
10551
10684
|
emits: ["close", "focus"],
|
|
10552
10685
|
setup(props, { emit }) {
|
|
10553
|
-
const root =
|
|
10554
|
-
const pos =
|
|
10555
|
-
const size =
|
|
10556
|
-
const minimized =
|
|
10557
|
-
const maximized =
|
|
10558
|
-
const saved =
|
|
10686
|
+
const root = ref30(null);
|
|
10687
|
+
const pos = ref30({ x: props.initialX, y: props.initialY });
|
|
10688
|
+
const size = ref30({ w: props.width, h: props.height });
|
|
10689
|
+
const minimized = ref30(false);
|
|
10690
|
+
const maximized = ref30(false);
|
|
10691
|
+
const saved = ref30(null);
|
|
10559
10692
|
let drag = null;
|
|
10560
10693
|
let resize = null;
|
|
10561
10694
|
function stage() {
|
|
@@ -10643,7 +10776,7 @@ var floating_window_default = {
|
|
|
10643
10776
|
}
|
|
10644
10777
|
emit("focus");
|
|
10645
10778
|
}
|
|
10646
|
-
|
|
10779
|
+
onBeforeUnmount25(() => {
|
|
10647
10780
|
window.removeEventListener("pointermove", onDrag);
|
|
10648
10781
|
window.removeEventListener("pointerup", endDrag);
|
|
10649
10782
|
window.removeEventListener("pointermove", onResize);
|
|
@@ -10691,7 +10824,7 @@ var floating_window_default = {
|
|
|
10691
10824
|
};
|
|
10692
10825
|
|
|
10693
10826
|
// src/components/upload/index.js
|
|
10694
|
-
import { reactive as reactive4, ref as
|
|
10827
|
+
import { reactive as reactive4, ref as ref31, watch as watch22, onBeforeUnmount as onBeforeUnmount26 } from "vue";
|
|
10695
10828
|
var uidSeed6 = 0;
|
|
10696
10829
|
function extension(name) {
|
|
10697
10830
|
const index = name.lastIndexOf(".");
|
|
@@ -10741,11 +10874,11 @@ var upload_default = {
|
|
|
10741
10874
|
},
|
|
10742
10875
|
emits: ["update:modelValue", "change", "success", "error", "remove", "exceed"],
|
|
10743
10876
|
setup(props, { emit }) {
|
|
10744
|
-
const files =
|
|
10745
|
-
const dragActive =
|
|
10746
|
-
const inputRef =
|
|
10877
|
+
const files = ref31([]);
|
|
10878
|
+
const dragActive = ref31(false);
|
|
10879
|
+
const inputRef = ref31(null);
|
|
10747
10880
|
const tasks = /* @__PURE__ */ new Map();
|
|
10748
|
-
|
|
10881
|
+
watch22(
|
|
10749
10882
|
() => props.modelValue,
|
|
10750
10883
|
(list) => {
|
|
10751
10884
|
const next = list || [];
|
|
@@ -10899,7 +11032,7 @@ var upload_default = {
|
|
|
10899
11032
|
files.value = [];
|
|
10900
11033
|
emitList();
|
|
10901
11034
|
}
|
|
10902
|
-
|
|
11035
|
+
onBeforeUnmount26(() => {
|
|
10903
11036
|
files.value.forEach((item) => {
|
|
10904
11037
|
if (item.url) URL.revokeObjectURL(item.url);
|
|
10905
11038
|
});
|
|
@@ -11047,7 +11180,7 @@ var upload_default = {
|
|
|
11047
11180
|
};
|
|
11048
11181
|
|
|
11049
11182
|
// src/components/tree/index.js
|
|
11050
|
-
import { computed as computed18, ref as
|
|
11183
|
+
import { computed as computed18, ref as ref32, watch as watch23 } from "vue";
|
|
11051
11184
|
var tree_default = {
|
|
11052
11185
|
name: "DjmTree",
|
|
11053
11186
|
components: { Icon: icon_default },
|
|
@@ -11079,17 +11212,17 @@ var tree_default = {
|
|
|
11079
11212
|
},
|
|
11080
11213
|
emits: ["update:checked", "update:expanded", "node-click", "check", "node-drop", "load-error"],
|
|
11081
11214
|
setup(props, { emit }) {
|
|
11082
|
-
const lazyChildren =
|
|
11083
|
-
const loadingKeys =
|
|
11084
|
-
const innerExpanded =
|
|
11085
|
-
const innerChecked =
|
|
11086
|
-
|
|
11215
|
+
const lazyChildren = ref32({});
|
|
11216
|
+
const loadingKeys = ref32([]);
|
|
11217
|
+
const innerExpanded = ref32([...props.expanded]);
|
|
11218
|
+
const innerChecked = ref32([...props.checked]);
|
|
11219
|
+
watch23(
|
|
11087
11220
|
() => props.expanded,
|
|
11088
11221
|
(value) => {
|
|
11089
11222
|
if (Array.isArray(value)) innerExpanded.value = value;
|
|
11090
11223
|
}
|
|
11091
11224
|
);
|
|
11092
|
-
|
|
11225
|
+
watch23(
|
|
11093
11226
|
() => props.checked,
|
|
11094
11227
|
(value) => {
|
|
11095
11228
|
if (Array.isArray(value)) innerChecked.value = value;
|
|
@@ -11127,7 +11260,7 @@ var tree_default = {
|
|
|
11127
11260
|
});
|
|
11128
11261
|
return out;
|
|
11129
11262
|
}
|
|
11130
|
-
|
|
11263
|
+
watch23(
|
|
11131
11264
|
() => props.data,
|
|
11132
11265
|
() => {
|
|
11133
11266
|
if (props.defaultExpandAll) innerExpanded.value = collectExpandable(props.data);
|
|
@@ -11215,8 +11348,8 @@ var tree_default = {
|
|
|
11215
11348
|
function isActive(node) {
|
|
11216
11349
|
return props.activeKey !== "" && node[props.nodeKey] === props.activeKey;
|
|
11217
11350
|
}
|
|
11218
|
-
const rootEl =
|
|
11219
|
-
const focusIndex =
|
|
11351
|
+
const rootEl = ref32(null);
|
|
11352
|
+
const focusIndex = ref32(-1);
|
|
11220
11353
|
function tabIndexOf(index) {
|
|
11221
11354
|
return (focusIndex.value === -1 ? 0 : focusIndex.value) === index ? 0 : -1;
|
|
11222
11355
|
}
|
|
@@ -11273,9 +11406,9 @@ var tree_default = {
|
|
|
11273
11406
|
function rowClassOf(node, level) {
|
|
11274
11407
|
return typeof props.rowClass === "function" ? props.rowClass(node, level) : props.rowClass;
|
|
11275
11408
|
}
|
|
11276
|
-
const dragKey =
|
|
11277
|
-
const dropKey =
|
|
11278
|
-
const dropPosition =
|
|
11409
|
+
const dragKey = ref32("");
|
|
11410
|
+
const dropKey = ref32("");
|
|
11411
|
+
const dropPosition = ref32("");
|
|
11279
11412
|
function findNodeByKey(key, nodes = props.data) {
|
|
11280
11413
|
for (const node of nodes) {
|
|
11281
11414
|
if (node[props.nodeKey] === key) return node;
|
|
@@ -11456,7 +11589,7 @@ var tree_default = {
|
|
|
11456
11589
|
};
|
|
11457
11590
|
|
|
11458
11591
|
// src/components/editable-table/index.js
|
|
11459
|
-
import { computed as computed19, nextTick as nextTick14, reactive as reactive5, ref as
|
|
11592
|
+
import { computed as computed19, nextTick as nextTick14, reactive as reactive5, ref as ref33, useSlots, watch as watch24 } from "vue";
|
|
11460
11593
|
var ACTIONS_KEY = "__editable_actions";
|
|
11461
11594
|
function isEmpty(value) {
|
|
11462
11595
|
if (value === "" || value === null || value === void 0) return true;
|
|
@@ -11480,10 +11613,10 @@ var editable_table_default = {
|
|
|
11480
11613
|
emits: ["edit", "save", "cancel"],
|
|
11481
11614
|
setup(props, { emit }) {
|
|
11482
11615
|
const slots = useSlots();
|
|
11483
|
-
const editingKey =
|
|
11616
|
+
const editingKey = ref33("");
|
|
11484
11617
|
const draft = reactive5({});
|
|
11485
11618
|
const errors = reactive5({});
|
|
11486
|
-
const tableRef =
|
|
11619
|
+
const tableRef = ref33(null);
|
|
11487
11620
|
const editableColumns = computed19(() => props.columns.filter((column) => column.editor));
|
|
11488
11621
|
const renderColumns = computed19(() => {
|
|
11489
11622
|
if (!props.showActions) return props.columns;
|
|
@@ -11592,7 +11725,7 @@ var editable_table_default = {
|
|
|
11592
11725
|
clearErrors();
|
|
11593
11726
|
return true;
|
|
11594
11727
|
}
|
|
11595
|
-
|
|
11728
|
+
watch24(
|
|
11596
11729
|
() => props.rows,
|
|
11597
11730
|
() => {
|
|
11598
11731
|
if (editingKey.value && !findRow(editingKey.value)) {
|
|
@@ -11774,7 +11907,7 @@ var message_default = {
|
|
|
11774
11907
|
};
|
|
11775
11908
|
|
|
11776
11909
|
// src/components/org-picker/index.js
|
|
11777
|
-
import { computed as computed20, onBeforeUnmount as
|
|
11910
|
+
import { computed as computed20, onBeforeUnmount as onBeforeUnmount27, ref as ref34, watch as watch25 } from "vue";
|
|
11778
11911
|
var org_picker_default = {
|
|
11779
11912
|
name: "DjmOrgPicker",
|
|
11780
11913
|
components: { DjmIcon: icon_default },
|
|
@@ -11793,13 +11926,13 @@ var org_picker_default = {
|
|
|
11793
11926
|
},
|
|
11794
11927
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
11795
11928
|
setup(props, { emit }) {
|
|
11796
|
-
const open =
|
|
11797
|
-
const root =
|
|
11798
|
-
const searchRef =
|
|
11799
|
-
const keyword =
|
|
11800
|
-
const activeDept =
|
|
11801
|
-
const temp =
|
|
11802
|
-
const expandedIds =
|
|
11929
|
+
const open = ref34(false);
|
|
11930
|
+
const root = ref34(null);
|
|
11931
|
+
const searchRef = ref34(null);
|
|
11932
|
+
const keyword = ref34("");
|
|
11933
|
+
const activeDept = ref34("");
|
|
11934
|
+
const temp = ref34([]);
|
|
11935
|
+
const expandedIds = ref34(/* @__PURE__ */ new Set());
|
|
11803
11936
|
let detachPanel = null;
|
|
11804
11937
|
function collectDeptIds(nodes, out = []) {
|
|
11805
11938
|
nodes.forEach((node) => {
|
|
@@ -11870,8 +12003,8 @@ var org_picker_default = {
|
|
|
11870
12003
|
const selectedCount = computed20(() => temp.value.length);
|
|
11871
12004
|
const placeholderText = computed20(() => props.placeholder || t("orgPicker.placeholder"));
|
|
11872
12005
|
const emptyLabel = computed20(() => props.emptyText || t("orgPicker.empty"));
|
|
11873
|
-
const panel =
|
|
11874
|
-
const panelStyle =
|
|
12006
|
+
const panel = ref34(null);
|
|
12007
|
+
const panelStyle = ref34({ ...PANEL_HIDDEN_STYLE });
|
|
11875
12008
|
const PANEL_HEIGHT = 342;
|
|
11876
12009
|
function updatePosition() {
|
|
11877
12010
|
if (!open.value || !root.value) return;
|
|
@@ -11888,7 +12021,7 @@ var org_picker_default = {
|
|
|
11888
12021
|
expandedIds.value = new Set(collectDeptIds(props.departments));
|
|
11889
12022
|
}
|
|
11890
12023
|
expandAll();
|
|
11891
|
-
|
|
12024
|
+
watch25(() => props.departments, () => {
|
|
11892
12025
|
expandedIds.value = /* @__PURE__ */ new Set([...expandedIds.value, ...collectDeptIds(props.departments)]);
|
|
11893
12026
|
});
|
|
11894
12027
|
function initialOf(item) {
|
|
@@ -11977,7 +12110,7 @@ var org_picker_default = {
|
|
|
11977
12110
|
function clearTemp() {
|
|
11978
12111
|
temp.value = [];
|
|
11979
12112
|
}
|
|
11980
|
-
|
|
12113
|
+
onBeforeUnmount27(() => {
|
|
11981
12114
|
if (detachPanel) {
|
|
11982
12115
|
detachPanel();
|
|
11983
12116
|
detachPanel = null;
|
|
@@ -12163,7 +12296,7 @@ var org_picker_default = {
|
|
|
12163
12296
|
};
|
|
12164
12297
|
|
|
12165
12298
|
// src/components/schema-form/index.js
|
|
12166
|
-
import { computed as computed21, reactive as reactive7, ref as
|
|
12299
|
+
import { computed as computed21, reactive as reactive7, ref as ref35, watch as watch26 } from "vue";
|
|
12167
12300
|
var CONTROL_MAP = {
|
|
12168
12301
|
input: input_default,
|
|
12169
12302
|
number: input_number_default,
|
|
@@ -12199,22 +12332,22 @@ var schema_form_default = {
|
|
|
12199
12332
|
},
|
|
12200
12333
|
emits: ["update:modelValue", "change"],
|
|
12201
12334
|
setup(props, { emit }) {
|
|
12202
|
-
const innerForm =
|
|
12335
|
+
const innerForm = ref35(null);
|
|
12203
12336
|
const model = reactive7({ ...props.modelValue });
|
|
12204
|
-
|
|
12337
|
+
watch26(() => props.fields, (fields) => {
|
|
12205
12338
|
fields.forEach((field) => {
|
|
12206
12339
|
if (model[field.key] === void 0 && field.default !== void 0) {
|
|
12207
12340
|
model[field.key] = typeof field.default === "function" ? field.default() : field.default;
|
|
12208
12341
|
}
|
|
12209
12342
|
});
|
|
12210
12343
|
}, { immediate: true, deep: true });
|
|
12211
|
-
|
|
12344
|
+
watch26(() => props.modelValue, (value) => {
|
|
12212
12345
|
if (!value) return;
|
|
12213
12346
|
Object.keys(value).forEach((key) => {
|
|
12214
12347
|
if (model[key] !== value[key]) model[key] = value[key];
|
|
12215
12348
|
});
|
|
12216
12349
|
}, { deep: true });
|
|
12217
|
-
|
|
12350
|
+
watch26(model, () => {
|
|
12218
12351
|
emit("update:modelValue", { ...model });
|
|
12219
12352
|
emit("change", { ...model });
|
|
12220
12353
|
}, { deep: true });
|
|
@@ -12425,7 +12558,7 @@ var approval_flow_default = {
|
|
|
12425
12558
|
};
|
|
12426
12559
|
|
|
12427
12560
|
// src/components/query-filter/index.js
|
|
12428
|
-
import { computed as computed22, reactive as reactive8, ref as
|
|
12561
|
+
import { computed as computed22, reactive as reactive8, ref as ref36, watch as watch27 } from "vue";
|
|
12429
12562
|
var CONTROL_MAP2 = {
|
|
12430
12563
|
input: input_default,
|
|
12431
12564
|
number: input_number_default,
|
|
@@ -12450,22 +12583,22 @@ var query_filter_default = {
|
|
|
12450
12583
|
},
|
|
12451
12584
|
emits: ["update:modelValue", "search", "reset"],
|
|
12452
12585
|
setup(props, { emit }) {
|
|
12453
|
-
const expanded =
|
|
12586
|
+
const expanded = ref36(false);
|
|
12454
12587
|
const model = reactive8({ ...props.modelValue });
|
|
12455
|
-
|
|
12588
|
+
watch27(() => props.fields, (fields) => {
|
|
12456
12589
|
fields.forEach((field) => {
|
|
12457
12590
|
if (model[field.key] === void 0 && field.default !== void 0) {
|
|
12458
12591
|
model[field.key] = typeof field.default === "function" ? field.default() : field.default;
|
|
12459
12592
|
}
|
|
12460
12593
|
});
|
|
12461
12594
|
}, { immediate: true, deep: true });
|
|
12462
|
-
|
|
12595
|
+
watch27(() => props.modelValue, (value) => {
|
|
12463
12596
|
if (!value) return;
|
|
12464
12597
|
Object.keys(value).forEach((key) => {
|
|
12465
12598
|
if (model[key] !== value[key]) model[key] = value[key];
|
|
12466
12599
|
});
|
|
12467
12600
|
}, { deep: true });
|
|
12468
|
-
|
|
12601
|
+
watch27(model, () => {
|
|
12469
12602
|
emit("update:modelValue", { ...model });
|
|
12470
12603
|
}, { deep: true });
|
|
12471
12604
|
const collapsible = computed22(() => props.fields.length > props.visibleCount);
|
|
@@ -12599,7 +12732,7 @@ var filter_tags_default = {
|
|
|
12599
12732
|
};
|
|
12600
12733
|
|
|
12601
12734
|
// src/components/kanban/index.js
|
|
12602
|
-
import { ref as
|
|
12735
|
+
import { ref as ref37, watch as watch28 } from "vue";
|
|
12603
12736
|
function cloneColumns(list) {
|
|
12604
12737
|
return (list || []).map((col) => ({ ...col, cards: (col.cards || []).slice() }));
|
|
12605
12738
|
}
|
|
@@ -12616,15 +12749,15 @@ var kanban_default = {
|
|
|
12616
12749
|
},
|
|
12617
12750
|
emits: ["update:columns", "change", "card-move", "card-click", "card-add"],
|
|
12618
12751
|
setup(props, { emit }) {
|
|
12619
|
-
const inner =
|
|
12620
|
-
|
|
12752
|
+
const inner = ref37(cloneColumns(props.columns));
|
|
12753
|
+
watch28(
|
|
12621
12754
|
() => props.columns,
|
|
12622
12755
|
(list) => {
|
|
12623
12756
|
inner.value = cloneColumns(list);
|
|
12624
12757
|
}
|
|
12625
12758
|
);
|
|
12626
|
-
const dragCard =
|
|
12627
|
-
const dropTarget =
|
|
12759
|
+
const dragCard = ref37(null);
|
|
12760
|
+
const dropTarget = ref37(null);
|
|
12628
12761
|
function columnOf(key) {
|
|
12629
12762
|
return inner.value.find((col) => col.key === key);
|
|
12630
12763
|
}
|
|
@@ -12924,7 +13057,7 @@ var attachment_list_default = {
|
|
|
12924
13057
|
};
|
|
12925
13058
|
|
|
12926
13059
|
// src/components/notification/index.js
|
|
12927
|
-
import { computed as computed24, onBeforeUnmount as
|
|
13060
|
+
import { computed as computed24, onBeforeUnmount as onBeforeUnmount28, ref as ref38 } from "vue";
|
|
12928
13061
|
var TYPE_MAP = {
|
|
12929
13062
|
info: { icon: "info", cls: "djm-is-info" },
|
|
12930
13063
|
success: { icon: "check", cls: "djm-is-success" },
|
|
@@ -12956,7 +13089,7 @@ var notification_default = {
|
|
|
12956
13089
|
function onReadAll() {
|
|
12957
13090
|
emit("read-all");
|
|
12958
13091
|
}
|
|
12959
|
-
const clearing =
|
|
13092
|
+
const clearing = ref38(false);
|
|
12960
13093
|
let clearTimer = null;
|
|
12961
13094
|
function onClear() {
|
|
12962
13095
|
if (!clearing.value) {
|
|
@@ -12970,7 +13103,7 @@ var notification_default = {
|
|
|
12970
13103
|
clearing.value = false;
|
|
12971
13104
|
emit("clear");
|
|
12972
13105
|
}
|
|
12973
|
-
|
|
13106
|
+
onBeforeUnmount28(() => window.clearTimeout(clearTimer));
|
|
12974
13107
|
function onRemove(item) {
|
|
12975
13108
|
emit("remove", item);
|
|
12976
13109
|
}
|
|
@@ -13045,7 +13178,7 @@ var notification_default = {
|
|
|
13045
13178
|
};
|
|
13046
13179
|
|
|
13047
13180
|
// src/components/config-provider/index.js
|
|
13048
|
-
import { watch as
|
|
13181
|
+
import { watch as watch29 } from "vue";
|
|
13049
13182
|
var SIZE_HEIGHT = { xs: "24px", sm: "28px", md: "30px", lg: "34px" };
|
|
13050
13183
|
var config_provider_default = {
|
|
13051
13184
|
name: "DjmConfigProvider",
|
|
@@ -13055,7 +13188,7 @@ var config_provider_default = {
|
|
|
13055
13188
|
},
|
|
13056
13189
|
setup(props) {
|
|
13057
13190
|
if (props.locale) setLocale(props.locale);
|
|
13058
|
-
|
|
13191
|
+
watch29(
|
|
13059
13192
|
() => props.locale,
|
|
13060
13193
|
(code) => {
|
|
13061
13194
|
if (code) setLocale(code);
|
|
@@ -13077,7 +13210,7 @@ var config_provider_default = {
|
|
|
13077
13210
|
};
|
|
13078
13211
|
|
|
13079
13212
|
// src/components/date-time-picker/index.js
|
|
13080
|
-
import { ref as
|
|
13213
|
+
import { ref as ref39, computed as computed25, watch as watch30, onBeforeUnmount as onBeforeUnmount29 } from "vue";
|
|
13081
13214
|
var uidSeed7 = 0;
|
|
13082
13215
|
var pad4 = (value) => String(value).padStart(2, "0");
|
|
13083
13216
|
function toDateKey(year, month, day) {
|
|
@@ -13110,20 +13243,20 @@ var date_time_picker_default = {
|
|
|
13110
13243
|
},
|
|
13111
13244
|
emits: ["update:modelValue", "change", "visible-change"],
|
|
13112
13245
|
setup(props, { emit }) {
|
|
13113
|
-
const open =
|
|
13114
|
-
|
|
13115
|
-
const root =
|
|
13116
|
-
const panel =
|
|
13246
|
+
const open = ref39(false);
|
|
13247
|
+
watch30(open, (value) => emit("visible-change", value));
|
|
13248
|
+
const root = ref39(null);
|
|
13249
|
+
const panel = ref39(null);
|
|
13117
13250
|
const panelId = "djm-datetime-panel-" + ++uidSeed7;
|
|
13118
|
-
const panelStyle =
|
|
13251
|
+
const panelStyle = ref39({ ...PANEL_HIDDEN_STYLE });
|
|
13119
13252
|
let detachPanel = null;
|
|
13120
13253
|
const today = /* @__PURE__ */ new Date();
|
|
13121
13254
|
const todayKey = toDateKey(today.getFullYear(), today.getMonth(), today.getDate());
|
|
13122
13255
|
const hasSeconds = computed25(() => props.format.indexOf("ss") > -1);
|
|
13123
|
-
const draft =
|
|
13256
|
+
const draft = ref39({ date: "", h: "00", m: "00", s: "00" });
|
|
13124
13257
|
const initial = parseDate(parseValue(props.modelValue).date);
|
|
13125
|
-
const viewYear =
|
|
13126
|
-
const viewMonth =
|
|
13258
|
+
const viewYear = ref39(initial ? initial.year : today.getFullYear());
|
|
13259
|
+
const viewMonth = ref39(initial ? initial.month : today.getMonth());
|
|
13127
13260
|
const displayText = computed25(() => props.modelValue || "");
|
|
13128
13261
|
const placeholderText = computed25(() => props.placeholder || t("dateTimePicker.placeholder"));
|
|
13129
13262
|
const weeks = computed25(() => t("datePicker.weeks").split(","));
|
|
@@ -13279,7 +13412,7 @@ var date_time_picker_default = {
|
|
|
13279
13412
|
emit("change", "");
|
|
13280
13413
|
closePanel();
|
|
13281
13414
|
}
|
|
13282
|
-
|
|
13415
|
+
onBeforeUnmount29(() => {
|
|
13283
13416
|
if (detachPanel) {
|
|
13284
13417
|
detachPanel();
|
|
13285
13418
|
detachPanel = null;
|
|
@@ -13404,7 +13537,7 @@ var date_time_picker_default = {
|
|
|
13404
13537
|
};
|
|
13405
13538
|
|
|
13406
13539
|
// src/components/virtual-list/index.js
|
|
13407
|
-
import { ref as
|
|
13540
|
+
import { ref as ref40, computed as computed26, watch as watch31, onMounted as onMounted16, onBeforeUnmount as onBeforeUnmount30 } from "vue";
|
|
13408
13541
|
var virtual_list_default = {
|
|
13409
13542
|
name: "DjmVirtualList",
|
|
13410
13543
|
props: {
|
|
@@ -13421,9 +13554,9 @@ var virtual_list_default = {
|
|
|
13421
13554
|
},
|
|
13422
13555
|
emits: ["scroll", "reach-bottom", "item-click"],
|
|
13423
13556
|
setup(props, { emit, expose }) {
|
|
13424
|
-
const viewport =
|
|
13425
|
-
const scrollTop =
|
|
13426
|
-
const viewHeight =
|
|
13557
|
+
const viewport = ref40(null);
|
|
13558
|
+
const scrollTop = ref40(0);
|
|
13559
|
+
const viewHeight = ref40(typeof props.height === "number" ? props.height : 320);
|
|
13427
13560
|
let bottomFired = false;
|
|
13428
13561
|
function rowHeight(item, index) {
|
|
13429
13562
|
return typeof props.itemHeight === "function" ? Math.max(1, Number(props.itemHeight(item, index)) || 1) : Math.max(1, props.itemHeight);
|
|
@@ -13493,7 +13626,7 @@ var virtual_list_default = {
|
|
|
13493
13626
|
else if (start < el.scrollTop) el.scrollTop = start;
|
|
13494
13627
|
else if (end > el.scrollTop + el.clientHeight) el.scrollTop = end - el.clientHeight;
|
|
13495
13628
|
}
|
|
13496
|
-
|
|
13629
|
+
watch31(
|
|
13497
13630
|
() => props.height,
|
|
13498
13631
|
() => {
|
|
13499
13632
|
if (viewport.value) viewHeight.value = viewport.value.clientHeight;
|
|
@@ -13510,7 +13643,7 @@ var virtual_list_default = {
|
|
|
13510
13643
|
resizeObserver.observe(viewport.value);
|
|
13511
13644
|
}
|
|
13512
13645
|
});
|
|
13513
|
-
|
|
13646
|
+
onBeforeUnmount30(() => {
|
|
13514
13647
|
if (resizeObserver) resizeObserver.disconnect();
|
|
13515
13648
|
});
|
|
13516
13649
|
function onItemClick(row) {
|
|
@@ -13599,7 +13732,7 @@ var batch_bar_default = {
|
|
|
13599
13732
|
};
|
|
13600
13733
|
|
|
13601
13734
|
// src/components/import-wizard/index.js
|
|
13602
|
-
import { ref as
|
|
13735
|
+
import { ref as ref41, computed as computed28, watch as watch32 } from "vue";
|
|
13603
13736
|
function matchAccept2(name, accept) {
|
|
13604
13737
|
if (!accept) return true;
|
|
13605
13738
|
const ext = "." + String(name).split(".").pop().toLowerCase();
|
|
@@ -13626,19 +13759,19 @@ var import_wizard_default = {
|
|
|
13626
13759
|
},
|
|
13627
13760
|
emits: ["update:step", "update:mapping", "file-change", "submit", "retry"],
|
|
13628
13761
|
setup(props, { emit }) {
|
|
13629
|
-
const innerStep =
|
|
13630
|
-
|
|
13762
|
+
const innerStep = ref41(props.step || 1);
|
|
13763
|
+
watch32(
|
|
13631
13764
|
() => props.step,
|
|
13632
13765
|
(value) => {
|
|
13633
13766
|
if (value) innerStep.value = value;
|
|
13634
13767
|
}
|
|
13635
13768
|
);
|
|
13636
|
-
const file =
|
|
13637
|
-
const fileError =
|
|
13638
|
-
const mappingError =
|
|
13639
|
-
const fileInput =
|
|
13640
|
-
const innerMapping =
|
|
13641
|
-
|
|
13769
|
+
const file = ref41(null);
|
|
13770
|
+
const fileError = ref41("");
|
|
13771
|
+
const mappingError = ref41("");
|
|
13772
|
+
const fileInput = ref41(null);
|
|
13773
|
+
const innerMapping = ref41({ ...props.mapping });
|
|
13774
|
+
watch32(
|
|
13642
13775
|
() => props.mapping,
|
|
13643
13776
|
(value) => {
|
|
13644
13777
|
innerMapping.value = { ...value };
|
|
@@ -13703,7 +13836,7 @@ var import_wizard_default = {
|
|
|
13703
13836
|
}
|
|
13704
13837
|
emit("submit", { ...innerMapping.value });
|
|
13705
13838
|
}
|
|
13706
|
-
|
|
13839
|
+
watch32(
|
|
13707
13840
|
() => props.result,
|
|
13708
13841
|
(value) => {
|
|
13709
13842
|
if (value && (value.total || value.success || value.failed || value.errors && value.errors.length)) {
|
|
@@ -13870,7 +14003,7 @@ var import_wizard_default = {
|
|
|
13870
14003
|
};
|
|
13871
14004
|
|
|
13872
14005
|
// src/components/diff/index.js
|
|
13873
|
-
import { ref as
|
|
14006
|
+
import { ref as ref42, computed as computed29 } from "vue";
|
|
13874
14007
|
|
|
13875
14008
|
// src/utils/text-diff.js
|
|
13876
14009
|
var MAX_CELLS = 1e6;
|
|
@@ -13944,7 +14077,7 @@ var diff_default = {
|
|
|
13944
14077
|
});
|
|
13945
14078
|
return { add, remove };
|
|
13946
14079
|
});
|
|
13947
|
-
const expandedBlocks =
|
|
14080
|
+
const expandedBlocks = ref42([]);
|
|
13948
14081
|
function expand(index) {
|
|
13949
14082
|
expandedBlocks.value = expandedBlocks.value.concat(index);
|
|
13950
14083
|
}
|
|
@@ -14071,7 +14204,7 @@ var diff_default = {
|
|
|
14071
14204
|
};
|
|
14072
14205
|
|
|
14073
14206
|
// src/components/tree-table/index.js
|
|
14074
|
-
import { ref as
|
|
14207
|
+
import { ref as ref43, computed as computed30, watch as watch33 } from "vue";
|
|
14075
14208
|
function keyOf(row, rowKey) {
|
|
14076
14209
|
return row && row[rowKey] !== void 0 ? row[rowKey] : row && row.id;
|
|
14077
14210
|
}
|
|
@@ -14110,17 +14243,17 @@ var tree_table_default = {
|
|
|
14110
14243
|
eachNode(props.data, (row) => keys.push(keyOf(row, props.rowKey)));
|
|
14111
14244
|
return keys;
|
|
14112
14245
|
}
|
|
14113
|
-
const innerExpanded =
|
|
14246
|
+
const innerExpanded = ref43(
|
|
14114
14247
|
props.expandedKeys ? props.expandedKeys.slice() : props.defaultExpandAll ? allKeys() : []
|
|
14115
14248
|
);
|
|
14116
|
-
|
|
14249
|
+
watch33(
|
|
14117
14250
|
() => props.expandedKeys,
|
|
14118
14251
|
(value) => {
|
|
14119
14252
|
if (value) innerExpanded.value = value.slice();
|
|
14120
14253
|
}
|
|
14121
14254
|
);
|
|
14122
|
-
const innerChecked =
|
|
14123
|
-
|
|
14255
|
+
const innerChecked = ref43(props.checkedKeys ? props.checkedKeys.slice() : []);
|
|
14256
|
+
watch33(
|
|
14124
14257
|
() => props.checkedKeys,
|
|
14125
14258
|
(value) => {
|
|
14126
14259
|
if (value) innerChecked.value = value.slice();
|
|
@@ -14352,7 +14485,7 @@ var tree_table_default = {
|
|
|
14352
14485
|
};
|
|
14353
14486
|
|
|
14354
14487
|
// src/components/schedule/index.js
|
|
14355
|
-
import { ref as
|
|
14488
|
+
import { ref as ref44, computed as computed31, watch as watch34, onBeforeUnmount as onBeforeUnmount31 } from "vue";
|
|
14356
14489
|
var pad5 = (value) => String(value).padStart(2, "0");
|
|
14357
14490
|
function toKey3(date) {
|
|
14358
14491
|
return `${date.getFullYear()}-${pad5(date.getMonth() + 1)}-${pad5(date.getDate())}`;
|
|
@@ -14384,13 +14517,13 @@ var schedule_default = {
|
|
|
14384
14517
|
emits: ["update:modelValue", "event-click", "slot-click", "week-change"],
|
|
14385
14518
|
setup(props, { emit }) {
|
|
14386
14519
|
const todayKey = toKey3(/* @__PURE__ */ new Date());
|
|
14387
|
-
const nowMinutes =
|
|
14520
|
+
const nowMinutes = ref44((/* @__PURE__ */ new Date()).getHours() * 60 + (/* @__PURE__ */ new Date()).getMinutes());
|
|
14388
14521
|
const timer = window.setInterval(() => {
|
|
14389
14522
|
const now = /* @__PURE__ */ new Date();
|
|
14390
14523
|
nowMinutes.value = now.getHours() * 60 + now.getMinutes();
|
|
14391
14524
|
}, 6e4);
|
|
14392
|
-
const anchor =
|
|
14393
|
-
|
|
14525
|
+
const anchor = ref44(props.modelValue || todayKey);
|
|
14526
|
+
watch34(
|
|
14394
14527
|
() => props.modelValue,
|
|
14395
14528
|
(value) => {
|
|
14396
14529
|
if (value) anchor.value = value;
|
|
@@ -14497,7 +14630,7 @@ var schedule_default = {
|
|
|
14497
14630
|
const minute = minutes % 60;
|
|
14498
14631
|
emit("slot-click", { date: day.key, time: `${pad5(hour)}:${pad5(minute)}` });
|
|
14499
14632
|
}
|
|
14500
|
-
|
|
14633
|
+
onBeforeUnmount31(() => window.clearInterval(timer));
|
|
14501
14634
|
return {
|
|
14502
14635
|
days,
|
|
14503
14636
|
hours,
|
|
@@ -14597,7 +14730,7 @@ var schedule_default = {
|
|
|
14597
14730
|
};
|
|
14598
14731
|
|
|
14599
14732
|
// src/components/comment/index.js
|
|
14600
|
-
import { ref as
|
|
14733
|
+
import { ref as ref45, computed as computed32 } from "vue";
|
|
14601
14734
|
var comment_default = {
|
|
14602
14735
|
name: "DjmComment",
|
|
14603
14736
|
components: { DjmAvatar: avatar_default, DjmIcon: icon_default },
|
|
@@ -14614,8 +14747,8 @@ var comment_default = {
|
|
|
14614
14747
|
},
|
|
14615
14748
|
emits: ["submit", "reply", "remove"],
|
|
14616
14749
|
setup(props, { emit }) {
|
|
14617
|
-
const content =
|
|
14618
|
-
const replyTarget =
|
|
14750
|
+
const content = ref45("");
|
|
14751
|
+
const replyTarget = ref45(null);
|
|
14619
14752
|
const placeholderText = computed32(() => {
|
|
14620
14753
|
if (replyTarget.value) return t("comment.replyPlaceholder", { name: replyTarget.value.author });
|
|
14621
14754
|
return props.placeholder || t("comment.placeholder");
|
|
@@ -14728,7 +14861,7 @@ var comment_default = {
|
|
|
14728
14861
|
};
|
|
14729
14862
|
|
|
14730
14863
|
// src/components/signature/index.js
|
|
14731
|
-
import { ref as
|
|
14864
|
+
import { ref as ref46, onMounted as onMounted17, onBeforeUnmount as onBeforeUnmount32, watch as watch35 } from "vue";
|
|
14732
14865
|
var signature_default = {
|
|
14733
14866
|
name: "DjmSignature",
|
|
14734
14867
|
props: {
|
|
@@ -14742,10 +14875,10 @@ var signature_default = {
|
|
|
14742
14875
|
},
|
|
14743
14876
|
emits: ["update:modelValue", "change", "start", "end", "clear"],
|
|
14744
14877
|
setup(props, { emit }) {
|
|
14745
|
-
const canvas =
|
|
14746
|
-
const root =
|
|
14747
|
-
const strokes =
|
|
14748
|
-
const hasImage =
|
|
14878
|
+
const canvas = ref46(null);
|
|
14879
|
+
const root = ref46(null);
|
|
14880
|
+
const strokes = ref46([]);
|
|
14881
|
+
const hasImage = ref46(false);
|
|
14749
14882
|
let imageCache = null;
|
|
14750
14883
|
let drawing = false;
|
|
14751
14884
|
let current = null;
|
|
@@ -14860,7 +14993,7 @@ var signature_default = {
|
|
|
14860
14993
|
return canvas.value ? canvas.value.toDataURL("image/png") : "";
|
|
14861
14994
|
}
|
|
14862
14995
|
const isEmpty2 = () => strokes.value.length === 0 && !hasImage.value;
|
|
14863
|
-
|
|
14996
|
+
watch35(
|
|
14864
14997
|
() => props.modelValue,
|
|
14865
14998
|
(value) => {
|
|
14866
14999
|
if (value === lastEmitted) return;
|
|
@@ -14898,7 +15031,7 @@ var signature_default = {
|
|
|
14898
15031
|
if (root.value) observer.observe(root.value);
|
|
14899
15032
|
}
|
|
14900
15033
|
});
|
|
14901
|
-
|
|
15034
|
+
onBeforeUnmount32(() => {
|
|
14902
15035
|
if (observer) observer.disconnect();
|
|
14903
15036
|
});
|
|
14904
15037
|
return {
|
|
@@ -14938,7 +15071,7 @@ var signature_default = {
|
|
|
14938
15071
|
};
|
|
14939
15072
|
|
|
14940
15073
|
// src/components/print/index.js
|
|
14941
|
-
import { ref as
|
|
15074
|
+
import { ref as ref47, computed as computed33 } from "vue";
|
|
14942
15075
|
function escapeHtml(text) {
|
|
14943
15076
|
return String(text).replace(/[&<>"]/g, (ch) => ({ "&": "&", "<": "<", ">": ">", '"': """ })[ch]);
|
|
14944
15077
|
}
|
|
@@ -14954,7 +15087,7 @@ var print_default = {
|
|
|
14954
15087
|
},
|
|
14955
15088
|
emits: ["before-print", "after-print"],
|
|
14956
15089
|
setup(props, { emit }) {
|
|
14957
|
-
const content =
|
|
15090
|
+
const content = ref47(null);
|
|
14958
15091
|
const label = computed33(() => props.buttonText || t("print.button"));
|
|
14959
15092
|
function collectStyles() {
|
|
14960
15093
|
return Array.from(document.querySelectorAll('link[rel="stylesheet"], style')).map((el) => el.outerHTML).join("");
|
|
@@ -15175,7 +15308,7 @@ var gantt_default = {
|
|
|
15175
15308
|
};
|
|
15176
15309
|
|
|
15177
15310
|
// src/components/field-list/index.js
|
|
15178
|
-
import { ref as
|
|
15311
|
+
import { ref as ref48, computed as computed35, watch as watch36 } from "vue";
|
|
15179
15312
|
var uidSeed8 = 0;
|
|
15180
15313
|
var field_list_default = {
|
|
15181
15314
|
name: "DjmFieldList",
|
|
@@ -15195,7 +15328,7 @@ var field_list_default = {
|
|
|
15195
15328
|
},
|
|
15196
15329
|
emits: ["update:modelValue", "add", "remove", "change"],
|
|
15197
15330
|
setup(props, { emit }) {
|
|
15198
|
-
const uids =
|
|
15331
|
+
const uids = ref48([]);
|
|
15199
15332
|
function syncUids() {
|
|
15200
15333
|
const length = props.modelValue.length;
|
|
15201
15334
|
if (uids.value.length === length) return;
|
|
@@ -15204,8 +15337,8 @@ var field_list_default = {
|
|
|
15204
15337
|
uids.value = next;
|
|
15205
15338
|
}
|
|
15206
15339
|
syncUids();
|
|
15207
|
-
|
|
15208
|
-
const errors =
|
|
15340
|
+
watch36(() => props.modelValue.length, syncUids);
|
|
15341
|
+
const errors = ref48({});
|
|
15209
15342
|
const addLabel = computed35(() => props.addText || t("fieldList.add"));
|
|
15210
15343
|
const emptyLabel = computed35(() => props.emptyText || t("fieldList.empty"));
|
|
15211
15344
|
const canAdd = computed35(() => !props.disabled && (!props.max || props.modelValue.length < props.max));
|
|
@@ -15371,7 +15504,7 @@ var field_list_default = {
|
|
|
15371
15504
|
};
|
|
15372
15505
|
|
|
15373
15506
|
// src/components/chat/index.js
|
|
15374
|
-
import { ref as
|
|
15507
|
+
import { ref as ref49, computed as computed36, watch as watch37, nextTick as nextTick15 } from "vue";
|
|
15375
15508
|
var chat_default = {
|
|
15376
15509
|
name: "DjmChat",
|
|
15377
15510
|
components: { DjmAvatar: avatar_default },
|
|
@@ -15388,8 +15521,8 @@ var chat_default = {
|
|
|
15388
15521
|
},
|
|
15389
15522
|
emits: ["submit"],
|
|
15390
15523
|
setup(props, { emit }) {
|
|
15391
|
-
const content =
|
|
15392
|
-
const listRef =
|
|
15524
|
+
const content = ref49("");
|
|
15525
|
+
const listRef = ref49(null);
|
|
15393
15526
|
const placeholderText = computed36(() => props.placeholder || t("chat.placeholder"));
|
|
15394
15527
|
const sendLabel = computed36(() => props.sendText || t("chat.send"));
|
|
15395
15528
|
const emptyLabel = computed36(() => props.emptyText || t("chat.empty"));
|
|
@@ -15398,7 +15531,7 @@ var chat_default = {
|
|
|
15398
15531
|
const el = listRef.value;
|
|
15399
15532
|
if (el) el.scrollTop = el.scrollHeight;
|
|
15400
15533
|
}
|
|
15401
|
-
|
|
15534
|
+
watch37(
|
|
15402
15535
|
() => props.messages.length,
|
|
15403
15536
|
() => nextTick15(scrollToBottom)
|
|
15404
15537
|
);
|
|
@@ -15511,7 +15644,7 @@ var chat_default = {
|
|
|
15511
15644
|
};
|
|
15512
15645
|
|
|
15513
15646
|
// src/components/org-chart/index.js
|
|
15514
|
-
import { ref as
|
|
15647
|
+
import { ref as ref50, computed as computed37, watch as watch38 } from "vue";
|
|
15515
15648
|
var org_chart_default = {
|
|
15516
15649
|
name: "DjmOrgChart",
|
|
15517
15650
|
components: { DjmAvatar: avatar_default, DjmIcon: icon_default },
|
|
@@ -15544,8 +15677,8 @@ var org_chart_default = {
|
|
|
15544
15677
|
walk(node);
|
|
15545
15678
|
return keys;
|
|
15546
15679
|
}
|
|
15547
|
-
const collapsed =
|
|
15548
|
-
|
|
15680
|
+
const collapsed = ref50(props.defaultExpandAll ? [] : collapsedByDefault(props.data));
|
|
15681
|
+
watch38(() => props.data, (data) => {
|
|
15549
15682
|
collapsed.value = props.defaultExpandAll ? [] : collapsedByDefault(data);
|
|
15550
15683
|
});
|
|
15551
15684
|
const layout = computed37(() => {
|
|
@@ -15938,7 +16071,7 @@ var components = [
|
|
|
15938
16071
|
org_chart_default,
|
|
15939
16072
|
page_tabs_default
|
|
15940
16073
|
];
|
|
15941
|
-
var version = "0.
|
|
16074
|
+
var version = "0.73.0";
|
|
15942
16075
|
function install(app, options = {}) {
|
|
15943
16076
|
if (options.locale) setLocale(options.locale);
|
|
15944
16077
|
components.forEach((component) => app.component(component.name, component));
|
|
@@ -16060,6 +16193,7 @@ export {
|
|
|
16060
16193
|
djmMessage,
|
|
16061
16194
|
djmMessages,
|
|
16062
16195
|
getLocale,
|
|
16196
|
+
glass,
|
|
16063
16197
|
hasPermission,
|
|
16064
16198
|
initTheme,
|
|
16065
16199
|
install,
|
|
@@ -16069,6 +16203,7 @@ export {
|
|
|
16069
16203
|
primaryColor,
|
|
16070
16204
|
resetPrimaryColor,
|
|
16071
16205
|
sanitizeHtml,
|
|
16206
|
+
setGlass,
|
|
16072
16207
|
setLocale,
|
|
16073
16208
|
setPermissions,
|
|
16074
16209
|
setPrimaryColor,
|