workdesktop-ai 1.2.3 → 1.2.4
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/dist/api-button/index.mjs +1 -1
- package/dist/auto-complete/index.mjs +1 -1
- package/dist/checkbox-list/index.mjs +1 -1
- package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs → ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs} +2 -2
- package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs.map → ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs.map} +1 -1
- package/dist/chunks/{AutoComplete-C6Nxatvt.mjs → AutoComplete-DqyhsqiS.mjs} +2 -2
- package/dist/chunks/{AutoComplete-C6Nxatvt.mjs.map → AutoComplete-DqyhsqiS.mjs.map} +1 -1
- package/dist/chunks/{CheckboxList-5AEx33r5.mjs → CheckboxList-RxJGe-LQ.mjs} +2 -2
- package/dist/chunks/{CheckboxList-5AEx33r5.mjs.map → CheckboxList-RxJGe-LQ.mjs.map} +1 -1
- package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs → ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs} +2 -2
- package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs.map → ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs.map} +1 -1
- package/dist/chunks/{DataForm-C6VLTSOm.mjs → DataForm-DYMderSS.mjs} +8 -7
- package/dist/chunks/{DataForm-C6VLTSOm.mjs.map → DataForm-DYMderSS.mjs.map} +1 -1
- package/dist/chunks/{DataGrid-Dd7n5JM7.mjs → DataGrid-DWAhwLVk.mjs} +3 -3
- package/dist/chunks/{DataGrid-Dd7n5JM7.mjs.map → DataGrid-DWAhwLVk.mjs.map} +1 -1
- package/dist/chunks/{DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs → DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs} +2 -2
- package/dist/chunks/{DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs.map → DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs.map} +1 -1
- package/dist/chunks/{Drawer-ucXKUecL.mjs → Drawer-BzdohcBg.mjs} +96 -90
- package/dist/chunks/Drawer-BzdohcBg.mjs.map +1 -0
- package/dist/chunks/{DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs → DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs} +2 -2
- package/dist/chunks/{DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs.map → DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs.map} +1 -1
- package/dist/chunks/{EditableGrid-CDeeVkaX.mjs → EditableGrid-e3wwCaem.mjs} +6 -5
- package/dist/chunks/{EditableGrid-CDeeVkaX.mjs.map → EditableGrid-e3wwCaem.mjs.map} +1 -1
- package/dist/chunks/Guide-AWaWvQoq.mjs +347 -0
- package/dist/chunks/Guide-AWaWvQoq.mjs.map +1 -0
- package/dist/chunks/Iframe-DcFFi0S9.mjs +128 -0
- package/dist/chunks/Iframe-DcFFi0S9.mjs.map +1 -0
- package/dist/chunks/{ImageUpload-CQA9XQ7Q.mjs → ImageUpload-BK7tbU2o.mjs} +5 -4
- package/dist/chunks/{ImageUpload-CQA9XQ7Q.mjs.map → ImageUpload-BK7tbU2o.mjs.map} +1 -1
- package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs → PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs} +2 -2
- package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs.map → PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs.map} +1 -1
- package/dist/chunks/{RadioList-BUWcP_Pk.mjs → RadioList-DuEeHumw.mjs} +2 -2
- package/dist/chunks/{RadioList-BUWcP_Pk.mjs.map → RadioList-DuEeHumw.mjs.map} +1 -1
- package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs +63 -0
- package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs.map +1 -0
- package/dist/chunks/{Select-uvFy7_NU.mjs → Select-MD3taMJo.mjs} +2 -2
- package/dist/chunks/{Select-uvFy7_NU.mjs.map → Select-MD3taMJo.mjs.map} +1 -1
- package/dist/chunks/{Station-BTP0SbBg.mjs → Station-2m9uznh3.mjs} +2 -2
- package/dist/chunks/{Station-BTP0SbBg.mjs.map → Station-2m9uznh3.mjs.map} +1 -1
- package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs → Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs} +2 -2
- package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs.map → Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs.map} +1 -1
- package/dist/chunks/Tips-B_18E4mc.mjs +71 -0
- package/dist/chunks/Tips-B_18E4mc.mjs.map +1 -0
- package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs → Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs} +5 -4
- package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs.map → Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs.map} +1 -1
- package/dist/chunks/{Viewer-CjLSQTrw.mjs → Viewer-FSV6xObc.mjs} +2 -2
- package/dist/chunks/{Viewer-CjLSQTrw.mjs.map → Viewer-FSV6xObc.mjs.map} +1 -1
- package/dist/chunks/config-B6nWG5dv.mjs +1378 -0
- package/dist/chunks/config-B6nWG5dv.mjs.map +1 -0
- package/dist/chunks/http-BKKP0gEJ.mjs +2774 -0
- package/dist/chunks/http-BKKP0gEJ.mjs.map +1 -0
- package/dist/chunks/{useApiAction-DxVQWWxv.mjs → useApiAction-71XPKjlQ.mjs} +2 -2
- package/dist/chunks/{useApiAction-DxVQWWxv.mjs.map → useApiAction-71XPKjlQ.mjs.map} +1 -1
- package/dist/chunks/{useColumnSettings-BwG2V9xp.mjs → useColumnSettings-CbiWd27-.mjs} +22 -21
- package/dist/chunks/{useColumnSettings-BwG2V9xp.mjs.map → useColumnSettings-CbiWd27-.mjs.map} +1 -1
- package/dist/chunks/useConfig-CPioiLWJ.mjs +23 -0
- package/dist/chunks/useConfig-CPioiLWJ.mjs.map +1 -0
- package/dist/chunks/{useOptionsLoader-DEVCYhrp.mjs → useOptionsLoader-D4Jh4f1F.mjs} +2 -2
- package/dist/chunks/{useOptionsLoader-DEVCYhrp.mjs.map → useOptionsLoader-D4Jh4f1F.mjs.map} +1 -1
- package/dist/confirm-button/index.mjs +1 -1
- package/dist/data-form/index.mjs +1 -1
- package/dist/data-grid/index.mjs +1 -1
- package/dist/dialog-button/index.mjs +1 -1
- package/dist/drawer/index.mjs +1 -1
- package/dist/drawer/style.css +1 -1
- package/dist/drawer-button/index.mjs +1 -1
- package/dist/editable-grid/index.mjs +1 -1
- package/dist/guide/index.mjs +7 -0
- package/dist/guide/index.mjs.map +1 -0
- package/dist/guide/style.css +1 -0
- package/dist/iframe/index.mjs +1 -1
- package/dist/iframe/style.css +1 -1
- package/dist/image-upload/index.mjs +1 -1
- package/dist/index.esm.js +194 -189
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +25 -21
- package/dist/index.umd.js.map +1 -1
- package/dist/prompt-button/index.mjs +1 -1
- package/dist/radio-list/index.mjs +1 -1
- package/dist/requester/index.mjs +1 -1
- package/dist/select/index.mjs +1 -1
- package/dist/station/index.mjs +1 -1
- package/dist/station/style.css +1 -1
- package/dist/style.css +1 -1
- package/dist/switch/index.mjs +1 -1
- package/dist/tips/index.mjs +1 -1
- package/dist/tips/style.css +1 -1
- package/dist/types/src/components/buttons/ApiButton.vue.d.ts +3 -3
- package/dist/types/src/components/buttons/ConfirmButton.vue.d.ts +5 -5
- package/dist/types/src/components/buttons/DialogButton.vue.d.ts +3 -3
- package/dist/types/src/components/buttons/DrawerButton.vue.d.ts +4 -4
- package/dist/types/src/components/buttons/PopconfirmButton.vue.d.ts +6 -6
- package/dist/types/src/components/buttons/PromptButton.vue.d.ts +5 -5
- package/dist/types/src/components/buttons/RouteButton.vue.d.ts +1 -1
- package/dist/types/src/components/buttons/TipsButton.vue.d.ts +1 -1
- package/dist/types/src/components/containers/Drawer.vue.d.ts +4 -4
- package/dist/types/src/components/containers/Iframe.vue.d.ts +42 -0
- package/dist/types/src/components/data/datagrid/DataGrid.vue.d.ts +5 -5
- package/dist/types/src/components/data/editable-grid/EditableGrid.vue.d.ts +7 -7
- package/dist/types/src/components/data/viewer/Viewer.vue.d.ts +1 -1
- package/dist/types/src/components/form/FormItem.vue.d.ts +1 -1
- package/dist/types/src/components/form/SearchItem.vue.d.ts +1 -1
- package/dist/types/src/components/form/data-form/DataForm.vue.d.ts +10 -10
- package/dist/types/src/components/guide/Guide.vue.d.ts +116 -0
- package/dist/types/src/components/index.d.ts +2 -1
- package/dist/types/src/components/inputs/AutoComplete.vue.d.ts +6 -6
- package/dist/types/src/components/inputs/CheckboxList.vue.d.ts +6 -6
- package/dist/types/src/components/inputs/RadioList.vue.d.ts +6 -6
- package/dist/types/src/components/inputs/Select.vue.d.ts +6 -6
- package/dist/types/src/components/inputs/Switch.vue.d.ts +9 -9
- package/dist/types/src/components/styles/Path.vue.d.ts +1 -1
- package/dist/types/src/components/styles/Tips.vue.d.ts +17 -0
- package/dist/types/src/components/upload/ImageUpload.vue.d.ts +5 -5
- package/dist/types/src/components/upload/Upload.vue.d.ts +5 -5
- package/dist/types/src/entries/guide.d.ts +9 -0
- package/dist/upload/index.mjs +1 -1
- package/dist/viewer/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunks/Drawer-ucXKUecL.mjs.map +0 -1
- package/dist/chunks/Iframe-CeSiMnvR.mjs +0 -65
- package/dist/chunks/Iframe-CeSiMnvR.mjs.map +0 -1
- package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs +0 -80
- package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs.map +0 -1
- package/dist/chunks/Tips-IWCZcR1K.mjs +0 -63
- package/dist/chunks/Tips-IWCZcR1K.mjs.map +0 -1
- package/dist/chunks/http-C06mNpwY.mjs +0 -4141
- package/dist/chunks/http-C06mNpwY.mjs.map +0 -1
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import { ref as
|
|
1
|
+
import { ref as M, watch as _, computed as I, onMounted as G, onBeforeUnmount as A, defineComponent as x, resolveComponent as E, openBlock as V, createBlock as L, mergeProps as U, unref as f, isRef as P, createSlots as T, withCtx as B, createElementBlock as W, renderSlot as R } from "vue";
|
|
2
2
|
import { ElMessageBox as K } from "element-plus";
|
|
3
3
|
import { r as N } from "./linkage-FbL1mcz3.mjs";
|
|
4
4
|
import { p as F } from "./containerContext-BgphFDeH.mjs";
|
|
5
5
|
import { h as H, f as J } from "./props-DAytpx7D.mjs";
|
|
6
6
|
import { _ as Q } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
|
|
7
|
-
function X(
|
|
8
|
-
const { props:
|
|
9
|
-
|
|
10
|
-
() =>
|
|
7
|
+
function X(s) {
|
|
8
|
+
const { props: r, emit: a } = s, t = M(!!r.modelValue);
|
|
9
|
+
_(
|
|
10
|
+
() => r.modelValue,
|
|
11
11
|
(e) => {
|
|
12
12
|
e !== t.value && (t.value = !!e);
|
|
13
13
|
}
|
|
14
|
-
),
|
|
15
|
-
|
|
14
|
+
), _(t, (e) => {
|
|
15
|
+
r.modelValue !== e && a("update:modelValue", e);
|
|
16
16
|
});
|
|
17
|
-
const
|
|
17
|
+
const g = /* @__PURE__ */ new Set();
|
|
18
18
|
function i(e) {
|
|
19
19
|
t.value = e, a("update:modelValue", e);
|
|
20
20
|
}
|
|
21
21
|
function h() {
|
|
22
|
-
i(!0), a("open"),
|
|
22
|
+
i(!0), a("open"), y(), a("open");
|
|
23
23
|
}
|
|
24
24
|
async function c(e = "request") {
|
|
25
|
-
e !== "submit" && !await C() || (i(!1),
|
|
25
|
+
e !== "submit" && !await C() || (i(!1), w(e));
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
return
|
|
27
|
+
function m(e) {
|
|
28
|
+
return g.add(e), () => g.delete(e);
|
|
29
29
|
}
|
|
30
30
|
async function C() {
|
|
31
|
-
for (const e of
|
|
31
|
+
for (const e of g)
|
|
32
32
|
if (!await e()) return !1;
|
|
33
33
|
return !0;
|
|
34
34
|
}
|
|
35
|
-
async function
|
|
35
|
+
async function $(e) {
|
|
36
36
|
if (await C()) {
|
|
37
|
-
if (
|
|
37
|
+
if (r.confirmMessage)
|
|
38
38
|
try {
|
|
39
|
-
await K.confirm(
|
|
39
|
+
await K.confirm(r.confirmMessage, "提示", {
|
|
40
40
|
confirmButtonText: "确定",
|
|
41
41
|
cancelButtonText: "取消",
|
|
42
42
|
type: "warning"
|
|
@@ -44,42 +44,42 @@ function X(l) {
|
|
|
44
44
|
} catch {
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
|
-
e(),
|
|
47
|
+
e(), w("manual");
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
function
|
|
50
|
+
function v() {
|
|
51
51
|
a("close");
|
|
52
52
|
}
|
|
53
|
-
function
|
|
54
|
-
a("confirm", { reason: e }),
|
|
53
|
+
function w(e) {
|
|
54
|
+
a("confirm", { reason: e }), r.headRefreshDatagrid && N(r.headRefreshDatagrid, r.filter);
|
|
55
55
|
}
|
|
56
56
|
let d = null;
|
|
57
|
-
const
|
|
58
|
-
if (
|
|
59
|
-
if (!
|
|
57
|
+
const p = I(() => {
|
|
58
|
+
if (r.origin) return r.origin;
|
|
59
|
+
if (!r.url) return window.location.origin;
|
|
60
60
|
try {
|
|
61
|
-
return new URL(
|
|
61
|
+
return new URL(r.url).origin;
|
|
62
62
|
} catch {
|
|
63
63
|
return window.location.origin;
|
|
64
64
|
}
|
|
65
65
|
});
|
|
66
|
-
function
|
|
67
|
-
return
|
|
66
|
+
function b(e) {
|
|
67
|
+
return p.value === "*" || e === p.value;
|
|
68
68
|
}
|
|
69
|
-
function
|
|
69
|
+
function o(e) {
|
|
70
70
|
d = e;
|
|
71
71
|
}
|
|
72
|
-
function
|
|
72
|
+
function l(e, n) {
|
|
73
73
|
if (!(d != null && d.contentWindow)) return;
|
|
74
74
|
const k = { type: e, payload: n };
|
|
75
|
-
d.contentWindow.postMessage(k,
|
|
75
|
+
d.contentWindow.postMessage(k, p.value);
|
|
76
76
|
}
|
|
77
|
-
function
|
|
78
|
-
|
|
77
|
+
function y() {
|
|
78
|
+
r.url && l("wd-container:init", { data: r.data });
|
|
79
79
|
}
|
|
80
|
-
function
|
|
80
|
+
function u(e) {
|
|
81
81
|
var k;
|
|
82
|
-
if (!
|
|
82
|
+
if (!b(e.origin)) return;
|
|
83
83
|
const n = e.data;
|
|
84
84
|
if (!(!n || typeof n != "object" || !n.type))
|
|
85
85
|
switch (a("iframe-message", n), n.type) {
|
|
@@ -90,38 +90,38 @@ function X(l) {
|
|
|
90
90
|
c("manual");
|
|
91
91
|
break;
|
|
92
92
|
case "wd-container:dirty":
|
|
93
|
-
a("iframe-dirty", n.payload), (k = n.payload) != null && k.dirty &&
|
|
93
|
+
a("iframe-dirty", n.payload), (k = n.payload) != null && k.dirty && m(async () => new Promise((j) => {
|
|
94
94
|
const O = Math.random().toString(36).slice(2), z = (S) => {
|
|
95
95
|
var D, q;
|
|
96
|
-
|
|
96
|
+
b(S.origin) && ((D = S.data) == null ? void 0 : D.type) === "wd-container:dirty-confirm-response" && ((q = S.data) == null ? void 0 : q.requestId) === O && (window.removeEventListener("message", z), j(!!S.data.payload.allowClose));
|
|
97
97
|
};
|
|
98
|
-
window.addEventListener("message", z),
|
|
98
|
+
window.addEventListener("message", z), l("wd-container:dirty-confirm", { requestId: O });
|
|
99
99
|
}));
|
|
100
100
|
break;
|
|
101
101
|
case "wd-container:ready":
|
|
102
|
-
a("iframe-ready", n.payload),
|
|
102
|
+
a("iframe-ready", n.payload), y();
|
|
103
103
|
break;
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
return G(() => {
|
|
107
|
-
window.addEventListener("message",
|
|
107
|
+
window.addEventListener("message", u);
|
|
108
108
|
}), A(() => {
|
|
109
|
-
window.removeEventListener("message",
|
|
109
|
+
window.removeEventListener("message", u);
|
|
110
110
|
}), F({
|
|
111
|
-
data:
|
|
111
|
+
data: r.data,
|
|
112
112
|
requestClose: c,
|
|
113
|
-
addBeforeClose:
|
|
113
|
+
addBeforeClose: m
|
|
114
114
|
}), {
|
|
115
115
|
visible: t,
|
|
116
116
|
open: h,
|
|
117
117
|
requestClose: c,
|
|
118
|
-
addBeforeClose:
|
|
119
|
-
handleBeforeClose:
|
|
120
|
-
onClosed:
|
|
118
|
+
addBeforeClose: m,
|
|
119
|
+
handleBeforeClose: $,
|
|
120
|
+
onClosed: v,
|
|
121
121
|
// iframe 桥接暴露
|
|
122
|
-
setIframeRef:
|
|
123
|
-
sendToIframe:
|
|
124
|
-
targetOrigin:
|
|
122
|
+
setIframeRef: o,
|
|
123
|
+
sendToIframe: l,
|
|
124
|
+
targetOrigin: p
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
127
|
const Y = ["src"], Z = ["src"], ee = /* @__PURE__ */ x({
|
|
@@ -161,99 +161,105 @@ const Y = ["src"], Z = ["src"], ee = /* @__PURE__ */ x({
|
|
|
161
161
|
"iframe-dirty",
|
|
162
162
|
"iframe-submit-success"
|
|
163
163
|
],
|
|
164
|
-
setup(
|
|
165
|
-
const t =
|
|
164
|
+
setup(s, { expose: r, emit: a }) {
|
|
165
|
+
const t = s, g = a, {
|
|
166
166
|
visible: i,
|
|
167
167
|
requestClose: h,
|
|
168
168
|
handleBeforeClose: c,
|
|
169
|
-
onClosed:
|
|
169
|
+
onClosed: m,
|
|
170
170
|
setIframeRef: C,
|
|
171
|
-
sendToIframe:
|
|
172
|
-
} = X({ props: t, emit:
|
|
173
|
-
|
|
171
|
+
sendToIframe: $
|
|
172
|
+
} = X({ props: t, emit: g }), v = M(null), w = M(0);
|
|
173
|
+
_(
|
|
174
174
|
() => i.value,
|
|
175
|
-
(
|
|
176
|
-
|
|
175
|
+
(o) => {
|
|
176
|
+
o && t.reloadOnOpen && t.url && (w.value += 1);
|
|
177
177
|
}
|
|
178
|
-
),
|
|
179
|
-
C(
|
|
178
|
+
), _(v, (o) => {
|
|
179
|
+
C(o);
|
|
180
180
|
});
|
|
181
|
-
const d =
|
|
181
|
+
const d = I(() => typeof t.size == "number" ? `${t.size}px` : t.size), p = I(() => ({
|
|
182
|
+
"wd-drawer--titled": t.title.trim().length > 0,
|
|
183
|
+
"wd-drawer--iframe": !!t.url
|
|
184
|
+
})), b = I(() => {
|
|
182
185
|
if (!t.url) return "";
|
|
183
186
|
if (!t.data) return t.url;
|
|
184
|
-
const
|
|
185
|
-
Object.entries(t.data).reduce((
|
|
187
|
+
const o = new URLSearchParams(
|
|
188
|
+
Object.entries(t.data).reduce((l, [y, u]) => (u != null && (l[y] = String(u)), l), {})
|
|
186
189
|
).toString();
|
|
187
|
-
return
|
|
190
|
+
return o ? t.url + (t.url.includes("?") ? "&" : "?") + o : t.url;
|
|
188
191
|
});
|
|
189
|
-
return
|
|
192
|
+
return r({
|
|
190
193
|
open: () => i.value = !0,
|
|
191
194
|
/** 向 iframe 内发送指令(如 wd-container:submit 触发表单提交) */
|
|
192
|
-
sendToIframe:
|
|
193
|
-
}), (
|
|
194
|
-
const
|
|
195
|
-
return
|
|
195
|
+
sendToIframe: $
|
|
196
|
+
}), (o, l) => {
|
|
197
|
+
const y = E("el-drawer"), u = E("el-dialog");
|
|
198
|
+
return s.mode === "drawer" ? (V(), L(y, U({
|
|
196
199
|
key: 0,
|
|
197
200
|
modelValue: f(i),
|
|
198
|
-
"onUpdate:modelValue":
|
|
201
|
+
"onUpdate:modelValue": l[0] || (l[0] = (e) => P(i) ? i.value = e : null),
|
|
199
202
|
"append-to-body": "",
|
|
200
|
-
title:
|
|
203
|
+
title: s.title,
|
|
201
204
|
size: d.value,
|
|
202
|
-
direction:
|
|
205
|
+
direction: s.direction,
|
|
203
206
|
"before-close": f(c)
|
|
204
|
-
},
|
|
207
|
+
}, o.$attrs, {
|
|
208
|
+
class: p.value,
|
|
209
|
+
onClosed: f(m)
|
|
210
|
+
}), T({
|
|
205
211
|
default: B(() => [
|
|
206
|
-
|
|
212
|
+
s.url ? (V(), W("iframe", {
|
|
207
213
|
ref_key: "iframeRef",
|
|
208
|
-
ref:
|
|
209
|
-
key:
|
|
210
|
-
src:
|
|
214
|
+
ref: v,
|
|
215
|
+
key: w.value,
|
|
216
|
+
src: b.value,
|
|
211
217
|
class: "wd-container__iframe wd-container__iframe--drawer",
|
|
212
218
|
frameborder: "0"
|
|
213
|
-
}, null, 8, Y)) : R(
|
|
219
|
+
}, null, 8, Y)) : R(o.$slots, "default", {}, void 0, !0, 1)
|
|
214
220
|
]),
|
|
215
221
|
_: 2
|
|
216
222
|
}, [
|
|
217
|
-
|
|
223
|
+
o.$slots.footer ? {
|
|
218
224
|
name: "footer",
|
|
219
225
|
fn: B(() => [
|
|
220
|
-
R(
|
|
226
|
+
R(o.$slots, "footer", { close: f(h) }, void 0, !0)
|
|
221
227
|
]),
|
|
222
228
|
key: "0"
|
|
223
229
|
} : void 0
|
|
224
|
-
]), 1040, ["modelValue", "title", "size", "direction", "before-close", "onClosed"])) : (V(), L(u, U({
|
|
230
|
+
]), 1040, ["modelValue", "title", "size", "direction", "before-close", "class", "onClosed"])) : (V(), L(u, U({
|
|
225
231
|
key: 1,
|
|
226
232
|
modelValue: f(i),
|
|
227
|
-
"onUpdate:modelValue":
|
|
233
|
+
"onUpdate:modelValue": l[1] || (l[1] = (e) => P(i) ? i.value = e : null),
|
|
228
234
|
"append-to-body": "",
|
|
229
|
-
title:
|
|
235
|
+
title: s.title,
|
|
230
236
|
width: d.value,
|
|
231
237
|
"before-close": f(c)
|
|
232
|
-
},
|
|
238
|
+
}, o.$attrs, { onClosed: f(m) }), T({
|
|
233
239
|
default: B(() => [
|
|
234
|
-
|
|
240
|
+
s.url ? (V(), W("iframe", {
|
|
235
241
|
ref_key: "iframeRef",
|
|
236
|
-
ref:
|
|
237
|
-
key:
|
|
238
|
-
src:
|
|
242
|
+
ref: v,
|
|
243
|
+
key: w.value,
|
|
244
|
+
src: b.value,
|
|
239
245
|
class: "wd-container__iframe wd-container__iframe--dialog",
|
|
240
246
|
frameborder: "0"
|
|
241
|
-
}, null, 8, Z)) : R(
|
|
247
|
+
}, null, 8, Z)) : R(o.$slots, "default", {}, void 0, !0, 1)
|
|
242
248
|
]),
|
|
243
249
|
_: 2
|
|
244
250
|
}, [
|
|
245
|
-
|
|
251
|
+
o.$slots.footer ? {
|
|
246
252
|
name: "footer",
|
|
247
253
|
fn: B(() => [
|
|
248
|
-
R(
|
|
254
|
+
R(o.$slots, "footer", { close: f(h) }, void 0, !0)
|
|
249
255
|
]),
|
|
250
256
|
key: "0"
|
|
251
257
|
} : void 0
|
|
252
258
|
]), 1040, ["modelValue", "title", "width", "before-close", "onClosed"]));
|
|
253
259
|
};
|
|
254
260
|
}
|
|
255
|
-
}), le = /* @__PURE__ */ Q(ee, [["__scopeId", "data-v-
|
|
261
|
+
}), le = /* @__PURE__ */ Q(ee, [["__scopeId", "data-v-90c81a70"]]);
|
|
256
262
|
export {
|
|
257
263
|
le as W
|
|
258
264
|
};
|
|
259
|
-
//# sourceMappingURL=Drawer-
|
|
265
|
+
//# sourceMappingURL=Drawer-BzdohcBg.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer-BzdohcBg.mjs","sources":["../../src/components/containers/useContainerController.ts","../../src/components/containers/Drawer.vue"],"sourcesContent":["/**\r\n * 容器组件(Dialog/Drawer)共享逻辑:\r\n * 显隐、iframe/内容渲染、关闭前拦截(confirmMessage + 内容注册的 beforeClose 守卫)、关闭后联动刷新\r\n */\r\nimport { ref, watch, provide, onMounted, onBeforeUnmount, computed } from 'vue'\r\nimport { ElMessageBox } from 'element-plus'\r\nimport { refreshDataGrid } from '../../lib/core/linkage'\r\nimport { provideContainer, type ContainerContext } from './containerContext'\r\n\r\ntype BridgeMessage = {\r\n type: string\r\n payload?: any\r\n}\r\n\r\nexport function useContainerController(options: {\r\n props: {\r\n modelValue?: boolean\r\n url?: string\r\n title?: string\r\n confirmMessage?: string\r\n headRefreshDatagrid?: boolean | string\r\n filter?: string\r\n data?: Record<string, any>\r\n origin?: string\r\n [key: string]: any\r\n }\r\n emit: (event: any, ...args: any[]) => void\r\n}) {\r\n const { props, emit } = options\r\n const visible = ref(!!props.modelValue)\r\n\r\n // 受控模式:外部 v-model 变化时同步显隐。\r\n // 容器可能「挂载后再置 true」(如 DrawerButton 懒挂载两段式打开),必须监听后续变化,\r\n // 否则 modelValue 只在挂载时生效一次,弹层永远无法打开。\r\n watch(\r\n () => props.modelValue,\r\n (val) => {\r\n if (val !== visible.value) visible.value = !!val\r\n }\r\n )\r\n\r\n // 反向同步:弹层被 X/遮罩/ESC 关闭后(el-dialog/drawer 内部把 visible 置 false,不经过 syncVisible),\r\n // 需把实际状态回写外部,否则父级 v-model 仍为 true,下次打开会失效。\r\n watch(visible, (val) => {\r\n if (props.modelValue !== val) emit('update:modelValue', val)\r\n })\r\n\r\n /** 关闭前守卫集合(内部 DataForm 的 confirmLeave 等,含 iframe 上报) */\r\n const beforeCloseGuards = new Set<() => Promise<boolean>>()\r\n\r\n function syncVisible(val: boolean) {\r\n visible.value = val\r\n emit('update:modelValue', val)\r\n }\r\n\r\n function open() {\r\n syncVisible(true)\r\n emit('open')\r\n sendInitToIframe()\r\n emit('open')\r\n }\r\n\r\n /**\r\n * 供内部内容主动请求关闭(DataForm headCloseDrawer)\r\n * @param reason 'submit'=提交成功,直接关闭;其余先走过渡守卫(未保存确认)\r\n */\r\n async function requestClose(reason = 'request') {\r\n if (reason !== 'submit') {\r\n const allowed = await runGuards()\r\n if (!allowed) return\r\n }\r\n syncVisible(false)\r\n afterClosed(reason)\r\n }\r\n\r\n function addBeforeClose(guard: () => Promise<boolean>) {\r\n beforeCloseGuards.add(guard)\r\n return () => beforeCloseGuards.delete(guard)\r\n }\r\n\r\n /** 执行全部内容守卫,任一返回 false 则中止 */\r\n async function runGuards(): Promise<boolean> {\r\n for (const guard of beforeCloseGuards) {\r\n const ok = await guard()\r\n if (!ok) return false\r\n }\r\n return true\r\n }\r\n\r\n /** el-dialog/el-drawer 关闭拦截入口(X 按钮 / 遮罩 / ESC) */\r\n async function handleBeforeClose(done: () => void) {\r\n // 1. 内容守卫(DataForm 未保存确认,含 iframe)\r\n const allowed = await runGuards()\r\n if (!allowed) return\r\n // 2. 容器自身确认\r\n if (props.confirmMessage) {\r\n try {\r\n await ElMessageBox.confirm(props.confirmMessage, '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n } catch {\r\n return\r\n }\r\n }\r\n done()\r\n afterClosed('manual')\r\n }\r\n\r\n function onClosed() {\r\n emit('close')\r\n }\r\n\r\n function afterClosed(reason: string) {\r\n emit('confirm', { reason })\r\n // 关闭后声明式联动刷新 DataGrid\r\n if (props.headRefreshDatagrid) {\r\n refreshDataGrid(props.headRefreshDatagrid, props.filter)\r\n }\r\n }\r\n\r\n // ================= iframe 跨上下文桥接 =================\r\n let iframeRef: HTMLIFrameElement | null = null\r\n const targetOrigin = computed(() => {\r\n if (props.origin) return props.origin\r\n if (!props.url) return window.location.origin\r\n try {\r\n return new URL(props.url).origin\r\n } catch {\r\n return window.location.origin\r\n }\r\n })\r\n\r\n /** 消息来源校验:targetOrigin='*' 时放行(与 postMessage 通配语义一致) */\r\n function isAllowedOrigin(eventOrigin: string) {\r\n return targetOrigin.value === '*' || eventOrigin === targetOrigin.value\r\n }\r\n\r\n function setIframeRef(el: HTMLIFrameElement | null) {\r\n iframeRef = el\r\n }\r\n\r\n function sendToIframe(type: string, payload?: any) {\r\n if (!iframeRef?.contentWindow) return\r\n const msg: BridgeMessage = { type, payload }\r\n iframeRef.contentWindow.postMessage(msg, targetOrigin.value)\r\n }\r\n\r\n /** 发送初始化数据给 iframe(代替 query 参数,支持复杂对象) */\r\n function sendInitToIframe() {\r\n if (!props.url) return\r\n sendToIframe('wd-container:init', { data: props.data })\r\n }\r\n\r\n /**\r\n * 处理 iframe 发来的消息:\r\n * 1. 以 emit 透传给外部(iframe-message 原始透传 + iframe-xxx 语义化事件)\r\n * 2. 保留默认联动行为(提交成功自动关闭、脏状态自动注册守卫、就绪自动下发数据)\r\n */\r\n function onBridgeMessage(event: MessageEvent) {\r\n // 安全校验:来源必须匹配目标 origin(* 通配放行)\r\n if (!isAllowedOrigin(event.origin)) return\r\n const data = event.data\r\n if (!data || typeof data !== 'object' || !data.type) return\r\n\r\n // 透传原始消息,外部可用 @iframe-message 统一监听\r\n emit('iframe-message', data)\r\n\r\n switch (data.type) {\r\n // 提交成功:关闭容器并刷新\r\n case 'wd-container:submit-success':\r\n emit('iframe-submit-success', data.payload)\r\n requestClose('submit')\r\n break\r\n // 子页面主动请求关闭(DataForm「关闭」按钮 / 业务主动触发)\r\n case 'wd-container:close':\r\n requestClose('manual')\r\n break\r\n // 注册/注销未保存守卫\r\n case 'wd-container:dirty':\r\n emit('iframe-dirty', data.payload)\r\n if (data.payload?.dirty) {\r\n addBeforeClose(async () => {\r\n return new Promise((resolve) => {\r\n const requestId = Math.random().toString(36).slice(2)\r\n const handler = (e: MessageEvent) => {\r\n if (!isAllowedOrigin(e.origin)) return\r\n if (e.data?.type === 'wd-container:dirty-confirm-response' && e.data?.requestId === requestId) {\r\n window.removeEventListener('message', handler)\r\n resolve(!!e.data.payload.allowClose)\r\n }\r\n }\r\n window.addEventListener('message', handler)\r\n sendToIframe('wd-container:dirty-confirm', { requestId })\r\n })\r\n })\r\n }\r\n break\r\n case 'wd-container:ready':\r\n emit('iframe-ready', data.payload)\r\n sendInitToIframe()\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n window.addEventListener('message', onBridgeMessage)\r\n })\r\n\r\n onBeforeUnmount(() => {\r\n window.removeEventListener('message', onBridgeMessage)\r\n })\r\n\r\n // 向内部内容(非 iframe 的 Vue 插槽内容)提供容器上下文\r\n provideContainer({\r\n data: props.data,\r\n requestClose,\r\n addBeforeClose\r\n } as ContainerContext)\r\n\r\n return {\r\n visible,\r\n open,\r\n requestClose,\r\n addBeforeClose,\r\n handleBeforeClose,\r\n onClosed,\r\n // iframe 桥接暴露\r\n setIframeRef,\r\n sendToIframe,\r\n targetOrigin\r\n }\r\n}\r\n","<template>\r\n <el-drawer\r\n v-if=\"mode === 'drawer'\"\r\n v-model=\"visible\"\r\n append-to-body\r\n :title=\"title\"\r\n :size=\"resolvedSize\"\r\n :direction=\"direction\"\r\n :before-close=\"handleBeforeClose\"\r\n v-bind=\"$attrs\"\r\n :class=\"drawerClass\"\r\n @closed=\"onClosed\"\r\n >\r\n <iframe\r\n v-if=\"url\"\r\n ref=\"iframeRef\"\r\n :key=\"iframeKey\"\r\n :src=\"resolvedUrl\"\r\n class=\"wd-container__iframe wd-container__iframe--drawer\"\r\n frameborder=\"0\"\r\n />\r\n <slot v-else />\r\n <template v-if=\"$slots.footer\" #footer>\r\n <slot name=\"footer\" :close=\"requestClose\" />\r\n </template>\r\n </el-drawer>\r\n\r\n <el-dialog\r\n v-else\r\n v-model=\"visible\"\r\n append-to-body\r\n :title=\"title\"\r\n :width=\"resolvedSize\"\r\n :before-close=\"handleBeforeClose\"\r\n v-bind=\"$attrs\"\r\n @closed=\"onClosed\"\r\n >\r\n <iframe\r\n v-if=\"url\"\r\n ref=\"iframeRef\"\r\n :key=\"iframeKey\"\r\n :src=\"resolvedUrl\"\r\n class=\"wd-container__iframe wd-container__iframe--dialog\"\r\n frameborder=\"0\"\r\n />\r\n <slot v-else />\r\n <template v-if=\"$slots.footer\" #footer>\r\n <slot name=\"footer\" :close=\"requestClose\" />\r\n </template>\r\n </el-dialog>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, watch, onMounted, type PropType } from 'vue'\r\nimport { useContainerController } from './useContainerController'\r\nimport { filterProp, headRefreshDatagridProp } from '../common/props'\r\n\r\ndefineOptions({ name: 'WdDrawer', inheritAttrs: false })\r\n\r\nconst props = defineProps({\r\n ...filterProp,\r\n ...headRefreshDatagridProp,\r\n modelValue: { type: Boolean, default: undefined },\r\n title: { type: String, default: '' },\r\n /** iframe 地址(设置后容器内以 iframe 加载) */\r\n url: { type: String, default: '' },\r\n /** 安全校验:允许的消息来源 origin */\r\n origin: { type: String, default: '' },\r\n /** 弹出形式:drawer 抽屉(默认)/ dialog 对话框 */\r\n mode: { type: String as PropType<'drawer' | 'dialog'>, default: 'drawer' },\r\n /** 尺寸(抽屉宽度/高度,对话框宽度;数字按 px) */\r\n size: { type: [String, Number], default: '50%' },\r\n /** 抽屉弹出方向 rtl/ltr/ttb/btt(仅 mode=drawer 生效) */\r\n direction: { type: String as PropType<'rtl' | 'ltr' | 'ttb' | 'btt'>, default: 'rtl' },\r\n /** 关闭前确认文案(设置后关闭弹确认) */\r\n confirmMessage: { type: String, default: '' },\r\n /** 容器携带数据(传给内部表单) */\r\n data: { type: Object as PropType<Record<string, any>>, default: undefined },\r\n /** 每次打开时重新加载 iframe 内容(url 模式生效;默认 false 保留上次内容) */\r\n reloadOnOpen: { type: Boolean, default: false }\r\n})\r\n\r\nconst emit = defineEmits([\r\n 'update:modelValue',\r\n 'open',\r\n 'close',\r\n 'confirm',\r\n // iframe 联动事件(子页面 postMessage 透传)\r\n 'iframe-message',\r\n 'iframe-ready',\r\n 'iframe-dirty',\r\n 'iframe-submit-success'\r\n])\r\n\r\nconst {\r\n visible,\r\n requestClose,\r\n handleBeforeClose,\r\n onClosed,\r\n setIframeRef,\r\n sendToIframe,\r\n targetOrigin\r\n} = useContainerController({ props, emit })\r\n\r\nconst iframeRef = ref<HTMLIFrameElement | null>(null)\r\n\r\n/** iframe 重建 key:reloadOnOpen 时每次打开自增,强制重新加载 iframe */\r\nconst iframeKey = ref(0)\r\nwatch(\r\n () => visible.value,\r\n (val) => {\r\n if (val && props.reloadOnOpen && props.url) {\r\n iframeKey.value += 1\r\n }\r\n }\r\n)\r\n\r\n// 同步 ref 到 controller\r\nwatch(iframeRef, (newRef) => {\r\n setIframeRef(newRef)\r\n})\r\n\r\nconst resolvedSize = computed(() => (typeof props.size === 'number' ? `${props.size}px` : props.size))\n\n/** 抽屉样式类:有标题时套用标题区样式;iframe 模式让内容占满 body */\nconst drawerClass = computed(() => ({\n 'wd-drawer--titled': props.title.trim().length > 0,\n 'wd-drawer--iframe': !!props.url\n}))\r\n\r\n/** iframe 地址:data 作为 query 追加(保持兼容现有实现) */\r\nconst resolvedUrl = computed(() => {\r\n if (!props.url) return ''\r\n if (!props.data) return props.url\r\n const qs = new URLSearchParams(\r\n Object.entries(props.data).reduce((acc, [k, v]) => {\r\n if (v !== undefined && v !== null) acc[k] = String(v)\r\n return acc\r\n }, {} as Record<string, string>)\r\n ).toString()\r\n if (!qs) return props.url\r\n return props.url + (props.url.includes('?') ? '&' : '?') + qs\r\n})\r\n\r\ndefineExpose({\r\n open: () => (visible.value = true),\r\n /** 向 iframe 内发送指令(如 wd-container:submit 触发表单提交) */\r\n sendToIframe\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n.wd-container__iframe {\r\n width: 100%;\r\n border: 0;\r\n display: block;\r\n}\r\n.wd-container__iframe--drawer {\r\n height: 100%;\r\n}\r\n.wd-container__iframe--dialog {\r\n height: 60vh;\r\n}\r\n</style>\r\n\r\n<!-- el-drawer 内容 append-to-body,scoped 无法作用,故标题区用全局样式 -->\r\n<style>\r\n.wd-drawer--titled .el-drawer__header {\r\n box-sizing: border-box;\r\n height: auto;\r\n margin-bottom: 0;\r\n padding-top: 12px;\r\n padding-bottom: 12px;\r\n align-items: center;\r\n}\r\n.wd-drawer--titled .el-drawer__header > :first-child {\r\n margin: 0;\r\n display: flex;\r\n align-items: center;\r\n}\r\n/* iframe 模式:清空 body 内边距,让 iframe 占满标题以下的剩余空间 */\r\n.wd-drawer--iframe .el-drawer__body {\r\n padding: 0;\r\n}\r\n</style>\r\n"],"names":["useContainerController","options","props","emit","visible","ref","watch","val","beforeCloseGuards","syncVisible","open","sendInitToIframe","requestClose","reason","runGuards","afterClosed","addBeforeClose","guard","handleBeforeClose","done","ElMessageBox","onClosed","refreshDataGrid","iframeRef","targetOrigin","computed","isAllowedOrigin","eventOrigin","setIframeRef","el","sendToIframe","type","payload","msg","onBridgeMessage","event","data","_a","resolve","requestId","handler","e","_b","onMounted","onBeforeUnmount","provideContainer","__props","__emit","iframeKey","newRef","resolvedSize","drawerClass","resolvedUrl","qs","acc","k","v","__expose","_openBlock","_createBlock","_component_el_drawer","_mergeProps","_unref","$event","$attrs","_createElementBlock","_renderSlot","_ctx","$slots","_component_el_dialog","_createSlots"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent as C, ref as c, resolveComponent as p, openBlock as n, createElementBlock as P, Fragment as V, createBlock as d, withCtx as o, createVNode as $, mergeProps as y, renderSlot as l, createTextVNode as g, toDisplayString as b, createSlots as w, normalizeProps as B, guardReactiveProps as D, createCommentVNode as O, nextTick as N } from "vue";
|
|
2
|
-
import { W as R } from "./Drawer-
|
|
2
|
+
import { W as R } from "./Drawer-BzdohcBg.mjs";
|
|
3
3
|
import { t as T, h as W, f as j } from "./props-DAytpx7D.mjs";
|
|
4
4
|
const U = /* @__PURE__ */ C({
|
|
5
5
|
name: "WdDrawerButton",
|
|
@@ -122,4 +122,4 @@ const U = /* @__PURE__ */ C({
|
|
|
122
122
|
export {
|
|
123
123
|
U as _
|
|
124
124
|
};
|
|
125
|
-
//# sourceMappingURL=DrawerButton.vue_vue_type_script_setup_true_lang-
|
|
125
|
+
//# sourceMappingURL=DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerButton.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
{"version":3,"file":"DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs","sources":["../../src/components/buttons/DrawerButton.vue"],"sourcesContent":["<template>\r\n <el-tooltip\r\n v-if=\"tips\"\r\n :content=\"tips\"\r\n :effect=\"tipsType\"\r\n :placement=\"placement\"\r\n >\r\n <el-button v-bind=\"$attrs\" :size=\"buttonSize || undefined\" @click=\"openPanel\">\r\n <slot name=\"button\">{{ label }}</slot>\r\n </el-button>\r\n </el-tooltip>\r\n <el-button v-else v-bind=\"$attrs\" :size=\"buttonSize || undefined\" @click=\"openPanel\">\r\n <slot name=\"button\">{{ label }}</slot>\r\n </el-button>\r\n\r\n <wd-drawer\r\n v-if=\"rendered\"\r\n v-model=\"panelVisible\"\r\n :mode=\"mode\"\r\n :title=\"title\"\r\n :size=\"size\"\r\n :direction=\"direction\"\r\n :url=\"url\"\r\n :data=\"data\"\r\n :filter=\"filter\"\r\n :head-refresh-datagrid=\"headRefreshDatagrid\"\r\n :reload-on-open=\"reloadOnOpen\"\r\n @close=\"onClose\"\r\n @confirm=\"onConfirm\"\r\n >\r\n <slot :data=\"data\" :close=\"closePanel\" />\r\n <template v-if=\"$slots.footer\" #footer=\"footerProps\">\r\n <slot name=\"footer\" v-bind=\"footerProps\" />\r\n </template>\r\n </wd-drawer>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, nextTick, type PropType } from 'vue'\r\nimport WdDrawer from '../containers/Drawer.vue'\r\nimport { filterProp, headRefreshDatagridProp, tipsProp } from '../common/props'\r\n\r\ndefineOptions({ name: 'WdDrawerButton', inheritAttrs: false })\r\n\r\ndefineProps({\r\n ...filterProp,\r\n ...headRefreshDatagridProp,\r\n ...tipsProp,\r\n /** 按钮文案(也可用 #button 插槽;el-button 原生 text 走 $attrs 透传) */\r\n label: { type: String, default: '' },\r\n /**\r\n * 按钮尺寸(el-button size)。\r\n * 注意:DrawerButton 的 size 被「弹层尺寸」占用,按钮尺寸请用 buttonSize,否则两属性冲突。\r\n */\r\n buttonSize: {\r\n type: String as PropType<'large' | 'default' | 'small' | ''>,\r\n default: ''\r\n },\r\n /** 弹出层形式:drawer 抽屉 / dialog 对话框 */\r\n mode: { type: String as PropType<'drawer' | 'dialog'>, default: 'drawer' },\r\n /** 弹出层标题 */\r\n title: { type: String, default: '' },\r\n /** iframe 地址(设置后弹层内以 iframe 加载,否则渲染默认插槽) */\r\n url: { type: String, default: '' },\r\n /** 传给内部表单/iframe 的数据 */\r\n data: { type: Object as PropType<Record<string, any>>, default: () => ({}) },\r\n /** 弹出层尺寸(抽屉宽度/高度,对话框宽度) */\r\n size: { type: [String, Number], default: '50%' },\r\n /** 抽屉弹出方向(仅 mode=drawer 生效) */\r\n direction: { type: String as PropType<'rtl' | 'ltr' | 'ttb' | 'btt'>, default: 'rtl' },\r\n /** 每次打开弹层时重新加载 iframe 内容(url 模式生效) */\r\n reloadOnOpen: { type: Boolean, default: false }\r\n})\r\n\r\nconst emit = defineEmits(['open', 'close', 'confirm'])\r\n\r\n/** 内容懒挂载:首次打开才渲染弹层内容,避免内部 DataForm 提前请求 */\r\nconst rendered = ref(false)\r\nconst panelVisible = ref(false)\r\n\r\nasync function openPanel() {\r\n rendered.value = true\r\n await nextTick()\r\n panelVisible.value = true\r\n emit('open')\r\n}\r\n\r\nfunction closePanel() {\r\n panelVisible.value = false\r\n}\r\n\r\nfunction onClose() {\r\n emit('close')\r\n}\r\n\r\nfunction onConfirm(payload: any) {\r\n emit('confirm', payload)\r\n}\r\n</script>\r\n"],"names":["emit","__emit","rendered","ref","panelVisible","openPanel","nextTick","closePanel","onClose","onConfirm","payload","tips","_createBlock","_component_el_tooltip","tipsType","placement","_createVNode","_component_el_button","_mergeProps","_ctx","__props","_renderSlot","$attrs","WdDrawer","$event","filter","headRefreshDatagrid","$slots","_withCtx","footerProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EA,UAAMA,IAAOC,GAGPC,IAAWC,EAAI,EAAK,GACpBC,IAAeD,EAAI,EAAK;AAE9B,mBAAeE,IAAY;AACzB,MAAAH,EAAS,QAAQ,IACjB,MAAMI,EAAA,GACNF,EAAa,QAAQ,IACrBJ,EAAK,MAAM;AAAA,IACb;AAEA,aAASO,IAAa;AACpB,MAAAH,EAAa,QAAQ;AAAA,IACvB;AAEA,aAASI,IAAU;AACjB,MAAAR,EAAK,OAAO;AAAA,IACd;AAEA,aAASS,EAAUC,GAAc;AAC/B,MAAAV,EAAK,WAAWU,CAAO;AAAA,IACzB;;;;QA/FUC,EAAAA,aADRC,EASaC,GAAA;AAAA;UAPV,SAASF,EAAAA;AAAAA,UACT,QAAQG,EAAAA;AAAAA,UACR,WAAWC,EAAAA;AAAAA,QAAAA;qBAEZ,MAEY;AAAA,YAFZC,EAEYC,GAFZC,EAEYC,EAAA,QAFa;AAAA,cAAG,MAAMC,EAAA,cAAc;AAAA,cAAY,SAAOf;AAAA,YAAA;yBACjE,MAAsC;AAAA,gBAAtCgB,EAAsCF,wBAAtC,MAAsC;AAAA,sBAAfC,EAAA,KAAK,GAAA,CAAA;AAAA,gBAAA;;;;;;2DAGhCR,EAEYK,GAFZC,EAEY,EAAA,KAAA,EAAA,GAFcI,EAAAA,QAAM;AAAA,UAAG,MAAMF,EAAA,cAAc;AAAA,UAAY,SAAOf;AAAA,QAAA;qBACxE,MAAsC;AAAA,YAAtCgB,EAAsCF,wBAAtC,MAAsC;AAAA,kBAAfC,EAAA,KAAK,GAAA,CAAA;AAAA,YAAA;;;;QAItBlB,EAAA,cADRU,EAmBYW,GAAA;AAAA;sBAjBDnB,EAAA;AAAA,wDAAAA,EAAY,QAAAoB;AAAA,UACpB,MAAMJ,EAAA;AAAA,UACN,OAAOA,EAAA;AAAA,UACP,MAAMA,EAAA;AAAA,UACN,WAAWA,EAAA;AAAA,UACX,KAAKA,EAAA;AAAA,UACL,MAAMA,EAAA;AAAA,UACN,QAAQK,EAAAA;AAAAA,UACR,yBAAuBC,EAAAA;AAAAA,UACvB,kBAAgBN,EAAA;AAAA,UAChB,SAAAZ;AAAA,UACA,WAAAC;AAAA,QAAA;qBAED,MAAyC;AAAA,YAAzCY,EAAyCF,EAAA,QAAA,WAAA;AAAA,cAAlC,MAAMC,EAAA;AAAA,cAAO,OAAOb;AAAA,YAAA;;;;UACXoB,EAAAA,OAAO;kBAAS;AAAA,YAC9B,IAAAC,EAAA,CADsCC,MAAW;AAAA,cACjDR,EAA2CF,wBAAfU,CAAW,CAAA,CAAA;AAAA,YAAA;;;;;;;;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { defineComponent as yt, useSlots as pn, ref as oe, computed as X, reactive as ye, watch as Se, nextTick as mn, onMounted as gn, onBeforeUnmount as vn, resolveComponent as H, resolveDirective as yn, openBlock as v, createElementBlock as D, normalizeStyle as hn, normalizeClass as Te, createElementVNode as de, renderSlot as le, unref as E, createBlock as F, withCtx as _, createTextVNode as Z, toDisplayString as ae, createCommentVNode as L, createVNode as q, withDirectives as ht, Fragment as se, renderList as fe, isRef as wn } from "vue";
|
|
2
2
|
import { Plus as bn, Refresh as _n, ScaleToOriginal as Sn, Grid as kn, Menu as Cn, Setting as Vn, WarningFilled as wt } from "@element-plus/icons-vue";
|
|
3
3
|
import { ElMessage as he, ElMessageBox as qn } from "element-plus";
|
|
4
|
-
import { u as Fn, a as An, e as En } from "./useColumnSettings-
|
|
4
|
+
import { u as Fn, a as An, e as En } from "./useColumnSettings-CbiWd27-.mjs";
|
|
5
5
|
import { a as xn, r as On } from "./linkage-FbL1mcz3.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { c as Rn, a as Pn } from "./config-B6nWG5dv.mjs";
|
|
7
|
+
import { r as bt } from "./http-BKKP0gEJ.mjs";
|
|
7
8
|
import { h as Mn, f as zn } from "./props-DAytpx7D.mjs";
|
|
8
9
|
import { _ as jn } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
|
|
9
10
|
function ce() {
|
|
@@ -1773,8 +1774,8 @@ const mr = {
|
|
|
1773
1774
|
], 6);
|
|
1774
1775
|
};
|
|
1775
1776
|
}
|
|
1776
|
-
}),
|
|
1777
|
+
}), Tr = /* @__PURE__ */ jn(xr, [["__scopeId", "data-v-799e1582"]]);
|
|
1777
1778
|
export {
|
|
1778
|
-
|
|
1779
|
+
Tr as W
|
|
1779
1780
|
};
|
|
1780
|
-
//# sourceMappingURL=EditableGrid-
|
|
1781
|
+
//# sourceMappingURL=EditableGrid-e3wwCaem.mjs.map
|