@silver-formily/element-plus 2.2.0 → 2.3.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/README.en-US.md +32 -32
- package/README.md +32 -32
- package/esm/__builtins__/index.mjs +19 -23
- package/esm/__builtins__/index.mjs.map +1 -1
- package/esm/__builtins__/shared/index.d.ts +0 -1
- package/esm/__builtins__/shared/index.mjs +17 -21
- package/esm/__builtins__/shared/index.mjs.map +1 -1
- package/esm/__builtins__/shared/loading.mjs +5 -5
- package/esm/__builtins__/shared/loading.mjs.map +1 -1
- package/esm/__builtins__/shared/use-enter-submit.d.ts +9 -0
- package/esm/__builtins__/shared/use-enter-submit.mjs +25 -0
- package/esm/__builtins__/shared/use-enter-submit.mjs.map +1 -0
- package/esm/autocomplete/autocomplete.d.ts +1222 -0
- package/esm/autocomplete/index.d.ts +639 -0
- package/esm/autocomplete/index.mjs +110 -0
- package/esm/autocomplete/index.mjs.map +1 -0
- package/esm/checkbox/index.d.ts +42 -42
- package/esm/color-picker/index.d.ts +210 -0
- package/esm/color-picker/index.mjs +14 -0
- package/esm/color-picker/index.mjs.map +1 -0
- package/esm/color-picker-panel/index.d.ts +129 -0
- package/esm/color-picker-panel/index.mjs +22 -0
- package/esm/color-picker-panel/index.mjs.map +1 -0
- package/esm/date-picker/index.mjs +12 -34
- package/esm/date-picker/index.mjs.map +1 -1
- package/esm/date-picker/utils.d.ts +4 -0
- package/esm/date-picker/utils.mjs +27 -0
- package/esm/date-picker/utils.mjs.map +1 -0
- package/esm/date-picker-panel/index.d.ts +143 -0
- package/esm/date-picker-panel/index.mjs +27 -0
- package/esm/date-picker-panel/index.mjs.map +1 -0
- package/esm/env.d.mjs +2 -0
- package/esm/env.d.mjs.map +1 -0
- package/esm/form-button-group/form-button-group.d.ts +1 -1
- package/esm/form-button-group/index.d.ts +3 -3
- package/esm/form-dialog/dialog-content.d.ts +789 -3
- package/esm/form-dialog/index.mjs +98 -87
- package/esm/form-dialog/index.mjs.map +1 -1
- package/esm/form-dialog/types.d.ts +1 -0
- package/esm/form-drawer/drawer-content.d.ts +919 -3
- package/esm/form-drawer/index.mjs +91 -81
- package/esm/form-drawer/index.mjs.map +1 -1
- package/esm/form-drawer/types.d.ts +1 -0
- package/esm/form-item/index.mjs +17 -17
- package/esm/form-item/index.mjs.map +1 -1
- package/esm/form-layout/form-layout.mjs +10 -10
- package/esm/form-layout/form-layout.mjs.map +1 -1
- package/esm/form-layout/utils.mjs +1 -1
- package/esm/form-layout/utils.mjs.map +1 -1
- package/esm/index.d.ts +6 -0
- package/esm/index.mjs +90 -78
- package/esm/index.mjs.map +1 -1
- package/esm/input-number/index.d.ts +21 -21
- package/esm/input-tag/index.d.ts +32 -0
- package/esm/input-tag/index.mjs +46 -0
- package/esm/input-tag/index.mjs.map +1 -0
- package/esm/input-tag/input-tag.d.ts +32 -0
- package/esm/mention/index.d.ts +50 -0
- package/esm/mention/index.mjs +93 -0
- package/esm/mention/index.mjs.map +1 -0
- package/esm/mention/mention.d.ts +51 -0
- package/esm/pagination/pagination.mjs.map +1 -1
- package/esm/preview-text/color-picker.d.ts +5 -0
- package/esm/preview-text/index.d.ts +5 -0
- package/esm/preview-text/index.mjs +180 -145
- package/esm/preview-text/index.mjs.map +1 -1
- package/esm/radio/index.d.ts +36 -36
- package/esm/rate/index.mjs.map +1 -1
- package/esm/segmented/index.mjs.map +1 -1
- package/esm/shared/overlay-elements.d.ts +6 -0
- package/esm/shared/overlay-elements.mjs +16 -0
- package/esm/shared/overlay-elements.mjs.map +1 -0
- package/esm/slider/index.mjs.map +1 -1
- package/esm/styles/preview-text/index.css +1 -1
- package/esm/switch/index.d.ts +12 -12
- package/esm/upload/index.d.ts +1 -1
- package/esm/upload/upload.d.ts +2 -2
- package/package.json +3 -1
- package/esm/__builtins__/shared/hooks.d.ts +0 -7
- package/esm/__builtins__/shared/hooks.mjs +0 -59
- package/esm/__builtins__/shared/hooks.mjs.map +0 -1
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { createForm as
|
|
2
|
-
import { toJS as
|
|
3
|
-
import { isFn as
|
|
4
|
-
import { observer as
|
|
5
|
-
import { defineComponent as
|
|
6
|
-
import { FormProvider as
|
|
7
|
-
import { ElDrawer as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
1
|
+
import { createForm as q } from "@formily/core";
|
|
2
|
+
import { toJS as z } from "@formily/reactive";
|
|
3
|
+
import { isFn as p, isArr as E, isStr as S, pascalCase as $, applyMiddleware as w, isValid as N } from "@formily/shared";
|
|
4
|
+
import { observer as O } from "@silver-formily/reactive-vue";
|
|
5
|
+
import { defineComponent as R, useSlots as A, ref as T, computed as k, createBlock as I, openBlock as h, unref as n, mergeProps as C, createSlots as J, withCtx as c, createElementVNode as U, normalizeClass as G, renderSlot as g, createElementBlock as H, Fragment as K, createVNode as b, createTextVNode as j, toDisplayString as x, normalizeProps as L, guardReactiveProps as Q, h as D, createApp as W } from "vue";
|
|
6
|
+
import { FormProvider as X } from "@silver-formily/vue";
|
|
7
|
+
import { ElDrawer as Y, ElButton as M, ElConfigProvider as Z } from "element-plus";
|
|
8
|
+
import { useEnterSubmit as _ } from "../__builtins__/shared/use-enter-submit.mjs";
|
|
9
|
+
import { resolveDrawerElement as ee } from "../shared/overlay-elements.mjs";
|
|
10
|
+
import { o as re, c as F } from "../vendor/lodash.mjs";
|
|
11
|
+
import { loadElConfigProvider as oe } from "../__builtins__/shared/load-config-provider.mjs";
|
|
12
|
+
import { useDebonceSubmitting as te, loading as B, getTransitionDuration as ne } from "../__builtins__/shared/loading.mjs";
|
|
13
|
+
import { stylePrefix as ie } from "../__builtins__/configs/index.mjs";
|
|
14
|
+
import { isVueOptions as se } from "../__builtins__/shared/utils.mjs";
|
|
15
|
+
const le = /* @__PURE__ */ R({
|
|
14
16
|
name: "FormDrawerContent",
|
|
15
17
|
__name: "drawer-content",
|
|
16
18
|
props: {
|
|
@@ -36,22 +38,30 @@ const ne = /* @__PURE__ */ N({
|
|
|
36
38
|
}
|
|
37
39
|
},
|
|
38
40
|
setup(o) {
|
|
39
|
-
const s = o,
|
|
40
|
-
return (
|
|
41
|
+
const s = o, f = A(), e = `${ie}-form-drawer`, u = oe(), { internalSubmitting: d } = te(s.form), m = re(s.drawerProps, ["modelValue", "onUpdate:modelValue", "beforeClose", "enterSubmit"]), l = T(null), r = k(() => s.drawerProps.enterSubmit !== !1);
|
|
42
|
+
return _({
|
|
43
|
+
visible: k(() => s.visible),
|
|
44
|
+
resolve: () => s.resolve(),
|
|
45
|
+
submitting: d,
|
|
46
|
+
getContainer: () => ee(l.value),
|
|
47
|
+
enabled: r
|
|
48
|
+
}), (t, i) => (h(), I(n(Y), C({
|
|
49
|
+
ref_key: "drawerRef",
|
|
50
|
+
ref: l,
|
|
41
51
|
class: e,
|
|
42
|
-
"z-index": n(
|
|
43
|
-
}, n(
|
|
52
|
+
"z-index": n(u).zIndex
|
|
53
|
+
}, n(m), {
|
|
44
54
|
"model-value": o.visible,
|
|
45
|
-
"before-close": (
|
|
46
|
-
o.reject(), n(
|
|
55
|
+
"before-close": (a) => {
|
|
56
|
+
o.reject(), n(p)(s.drawerProps.beforeClose) ? s.drawerProps.beforeClose(a) : a();
|
|
47
57
|
}
|
|
48
|
-
}),
|
|
49
|
-
default:
|
|
50
|
-
b(n(
|
|
51
|
-
default:
|
|
52
|
-
b(n(
|
|
53
|
-
default:
|
|
54
|
-
|
|
58
|
+
}), J({
|
|
59
|
+
default: c(() => [
|
|
60
|
+
b(n(X), { form: o.form }, {
|
|
61
|
+
default: c(() => [
|
|
62
|
+
b(n(Z), L(Q(n(u))), {
|
|
63
|
+
default: c(() => [
|
|
64
|
+
g(t.$slots, "default", {
|
|
55
65
|
resolve: o.resolve,
|
|
56
66
|
reject: o.reject,
|
|
57
67
|
form: o.form
|
|
@@ -63,30 +73,30 @@ const ne = /* @__PURE__ */ N({
|
|
|
63
73
|
_: 3
|
|
64
74
|
}, 8, ["form"])
|
|
65
75
|
]),
|
|
66
|
-
footer:
|
|
67
|
-
|
|
68
|
-
class:
|
|
76
|
+
footer: c(() => [
|
|
77
|
+
U("div", {
|
|
78
|
+
class: G(`${e}-footer`)
|
|
69
79
|
}, [
|
|
70
|
-
|
|
80
|
+
f.footer ? g(t.$slots, "footer", {
|
|
71
81
|
key: 0,
|
|
72
82
|
resolve: o.resolve,
|
|
73
83
|
reject: o.reject,
|
|
74
84
|
form: o.form
|
|
75
|
-
}) : (
|
|
76
|
-
b(n(
|
|
77
|
-
onClick:
|
|
85
|
+
}) : (h(), H(K, { key: 1 }, [
|
|
86
|
+
b(n(M), C(n(m).cancelButtonProps, {
|
|
87
|
+
onClick: i[0] || (i[0] = (a) => o.reject())
|
|
78
88
|
}), {
|
|
79
|
-
default:
|
|
80
|
-
x(
|
|
89
|
+
default: c(() => [
|
|
90
|
+
j(x(n(m).cancelText || "取消"), 1)
|
|
81
91
|
]),
|
|
82
92
|
_: 1
|
|
83
93
|
}, 16),
|
|
84
|
-
b(n(
|
|
85
|
-
loading: n(
|
|
86
|
-
onClick:
|
|
94
|
+
b(n(M), C({ type: "primary" }, n(m).okButtonProps, {
|
|
95
|
+
loading: n(d),
|
|
96
|
+
onClick: i[1] || (i[1] = (a) => o.resolve())
|
|
87
97
|
}), {
|
|
88
|
-
default:
|
|
89
|
-
x(
|
|
98
|
+
default: c(() => [
|
|
99
|
+
j(x(n(m).okText || "确定"), 1)
|
|
90
100
|
]),
|
|
91
101
|
_: 1
|
|
92
102
|
}, 16, ["loading"])
|
|
@@ -95,10 +105,10 @@ const ne = /* @__PURE__ */ N({
|
|
|
95
105
|
]),
|
|
96
106
|
_: 2
|
|
97
107
|
}, [
|
|
98
|
-
|
|
108
|
+
f.header ? {
|
|
99
109
|
name: "header",
|
|
100
|
-
fn:
|
|
101
|
-
|
|
110
|
+
fn: c(() => [
|
|
111
|
+
g(t.$slots, "header", {
|
|
102
112
|
resolve: o.resolve,
|
|
103
113
|
reject: o.reject,
|
|
104
114
|
form: o.form
|
|
@@ -109,7 +119,7 @@ const ne = /* @__PURE__ */ N({
|
|
|
109
119
|
]), 1040, ["z-index", "model-value", "before-close"]));
|
|
110
120
|
}
|
|
111
121
|
});
|
|
112
|
-
function
|
|
122
|
+
function Ee(o, s, f) {
|
|
113
123
|
const e = {
|
|
114
124
|
root: document.createElement("div"),
|
|
115
125
|
form: null,
|
|
@@ -120,83 +130,83 @@ function be(o, s, a) {
|
|
|
120
130
|
confirmMiddlewares: [],
|
|
121
131
|
cancelMiddlewares: []
|
|
122
132
|
};
|
|
123
|
-
if (
|
|
124
|
-
for (const r of
|
|
133
|
+
if (E(f))
|
|
134
|
+
for (const r of f) {
|
|
125
135
|
/* istanbul ignore if -- @preserve */
|
|
126
|
-
if (!
|
|
136
|
+
if (!S(r))
|
|
127
137
|
return;
|
|
128
138
|
const t = F(r);
|
|
129
139
|
/* istanbul ignore if -- @preserve */
|
|
130
140
|
if (["open", "cancel", "confirm"].includes(t))
|
|
131
|
-
throw new Error(`for${
|
|
141
|
+
throw new Error(`for${$(t)} is presved`);
|
|
132
142
|
e[`${t}Middlewares`] = [];
|
|
133
143
|
}
|
|
134
144
|
document.body.append(e.root);
|
|
135
|
-
const
|
|
136
|
-
function
|
|
137
|
-
const
|
|
145
|
+
const u = S(o) ? { title: o } : o;
|
|
146
|
+
function d(r, t, i) {
|
|
147
|
+
const a = se(s) ? { default: () => D(s) } : s;
|
|
138
148
|
if (!e.instance) {
|
|
139
|
-
const v =
|
|
140
|
-
setup(
|
|
141
|
-
const y =
|
|
142
|
-
return
|
|
149
|
+
const v = O({
|
|
150
|
+
setup(P, { expose: V }) {
|
|
151
|
+
const y = T(!1);
|
|
152
|
+
return V({
|
|
143
153
|
visible: y
|
|
144
|
-
}), () => D(
|
|
145
|
-
drawerProps:
|
|
154
|
+
}), () => D(le, {
|
|
155
|
+
drawerProps: u,
|
|
146
156
|
form: e.form,
|
|
147
157
|
resolve: t,
|
|
148
|
-
reject:
|
|
158
|
+
reject: i,
|
|
149
159
|
visible: y.value
|
|
150
|
-
},
|
|
160
|
+
}, a);
|
|
151
161
|
}
|
|
152
162
|
});
|
|
153
|
-
e.app =
|
|
163
|
+
e.app = W(v), e.instance = e.app.mount(e.root);
|
|
154
164
|
}
|
|
155
165
|
e.instance.visible = r;
|
|
156
166
|
}
|
|
157
|
-
function
|
|
158
|
-
const r =
|
|
167
|
+
function m() {
|
|
168
|
+
const r = ne();
|
|
159
169
|
setTimeout(() => {
|
|
160
170
|
e.app?.unmount?.(), e.app = null, e.instance = null, e.root?.remove(), e.root = void 0;
|
|
161
171
|
}, r);
|
|
162
172
|
}
|
|
163
|
-
const
|
|
164
|
-
forOpen: (r) => (
|
|
165
|
-
forConfirm: (r) => (
|
|
166
|
-
forCancel: (r) => (
|
|
173
|
+
const l = {
|
|
174
|
+
forOpen: (r) => (p(r) && e.openMiddlewares.push(r), l),
|
|
175
|
+
forConfirm: (r) => (p(r) && e.confirmMiddlewares.push(r), l),
|
|
176
|
+
forCancel: (r) => (p(r) && e.cancelMiddlewares.push(r), l),
|
|
167
177
|
open: (r) => {
|
|
168
178
|
/* istanbul ignore if -- @preserve */
|
|
169
|
-
return e.promise || (e.promise = new Promise((t,
|
|
170
|
-
|
|
171
|
-
e.form = e.form ||
|
|
179
|
+
return e.promise || (e.promise = new Promise((t, i) => {
|
|
180
|
+
B(u.loadingText, () => w(r, e.openMiddlewares)).then((a) => {
|
|
181
|
+
e.form = e.form || q(a), d(!0, (v) => {
|
|
172
182
|
e.form.submit(async () => {
|
|
173
|
-
await (
|
|
174
|
-
}).catch((
|
|
175
|
-
console.warn(
|
|
183
|
+
await (N(v) ? w(e.form, e[`${v}Middlewares`]) : w(e.form, e.confirmMiddlewares)), t(z(e.form.values)), l.close(), m();
|
|
184
|
+
}).catch((P) => {
|
|
185
|
+
console.warn(P);
|
|
176
186
|
});
|
|
177
187
|
}, async () => {
|
|
178
|
-
await
|
|
188
|
+
await B(u.loadingText, () => w(e.form, e.cancelMiddlewares)), l.close(), m(), i(new Error("cancel"));
|
|
179
189
|
});
|
|
180
190
|
}).catch(
|
|
181
191
|
/* istanbul ignore next -- @preserve */
|
|
182
|
-
(
|
|
192
|
+
(a) => i(a)
|
|
183
193
|
);
|
|
184
194
|
})), e.promise;
|
|
185
195
|
},
|
|
186
196
|
close: () => {
|
|
187
197
|
/* istanbul ignore if -- @preserve */
|
|
188
|
-
e.root &&
|
|
198
|
+
e.root && d(!1);
|
|
189
199
|
}
|
|
190
200
|
};
|
|
191
|
-
if (
|
|
192
|
-
for (const r of
|
|
201
|
+
if (E(f))
|
|
202
|
+
for (const r of f) {
|
|
193
203
|
const t = F(r);
|
|
194
|
-
|
|
204
|
+
l[`for${$(t)}`] = (i) => (p(i) && e[`${t}Middlewares`].push(i), l);
|
|
195
205
|
}
|
|
196
|
-
return
|
|
206
|
+
return l;
|
|
197
207
|
}
|
|
198
208
|
export {
|
|
199
|
-
|
|
200
|
-
|
|
209
|
+
Ee as FormDrawer,
|
|
210
|
+
Ee as default
|
|
201
211
|
};
|
|
202
212
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/form-drawer/drawer-content.vue","../../src/form-drawer/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { Form } from '@formily/core'\r\nimport type { PropType } from 'vue'\r\nimport type { FormDrawerSlots, IFormDrawerProps } from './types'\r\nimport { isFn } from '@formily/shared'\r\nimport { FormProvider } from '@silver-formily/vue'\r\nimport { ElButton, ElConfigProvider, ElDrawer } from 'element-plus'\r\nimport { omit } from 'lodash-es'\r\nimport { loadElConfigProvider, stylePrefix, useDebonceSubmitting } from '../__builtins__'\r\n\r\ndefineOptions({\r\n name: 'FormDrawerContent',\r\n})\r\n\r\nconst props = defineProps({\r\n drawerProps: {\r\n type: Object as PropType<IFormDrawerProps>,\r\n required: true,\r\n },\r\n visible: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n form: {\r\n type: Object as PropType<Form>,\r\n required: true,\r\n },\r\n resolve: {\r\n type: Function as PropType<(type?: string) => void>,\r\n required: true,\r\n },\r\n reject: {\r\n type: Function as PropType<() => void>,\r\n required: true,\r\n },\r\n})\r\nconst slots = defineSlots<FormDrawerSlots>()\r\nconst prefixCls = `${stylePrefix}-form-drawer`\r\nconst elConfig = loadElConfigProvider()\r\n\r\nconst { internalSubmitting } = useDebonceSubmitting(props.form)\r\nconst _drawerProps = omit(props.drawerProps, ['modelValue', 'onUpdate:modelValue', 'beforeClose'])\r\n</script>\r\n\r\n<template>\r\n <ElDrawer\r\n :class=\"prefixCls\"\r\n :z-index=\"elConfig.zIndex\"\r\n v-bind=\"_drawerProps\"\r\n :model-value=\"visible\"\r\n :before-close=\"(done) => {\r\n reject()\r\n if (isFn(props.drawerProps.beforeClose)) {\r\n props.drawerProps.beforeClose(done)\r\n }\r\n else {\r\n done()\r\n }\r\n }\"\r\n >\r\n <template v-if=\"slots.header\" #header>\r\n <slot name=\"header\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\r\n </template>\r\n\r\n <template #default>\r\n <FormProvider :form=\"form\">\r\n <ElConfigProvider v-bind=\"elConfig\">\r\n <slot :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\r\n </ElConfigProvider>\r\n </FormProvider>\r\n </template>\r\n\r\n <template #footer>\r\n <div :class=\"`${prefixCls}-footer`\">\r\n <template v-if=\"slots.footer\">\r\n <slot name=\"footer\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\r\n </template>\r\n <template v-else>\r\n <ElButton\r\n v-bind=\"_drawerProps.cancelButtonProps\"\r\n @click=\"reject()\"\r\n >\r\n {{ _drawerProps.cancelText || '取消' }}\r\n </ElButton>\r\n <ElButton\r\n type=\"primary\"\r\n v-bind=\"_drawerProps.okButtonProps\"\r\n :loading=\"internalSubmitting\"\r\n @click=\"resolve()\"\r\n >\r\n {{ _drawerProps.okText || '确定' }}\r\n </ElButton>\r\n </template>\r\n </div>\r\n </template>\r\n </ElDrawer>\r\n</template>\r\n","import type { Form, IFormProps } from '@formily/core'\r\nimport type { IMiddleware } from '@formily/shared'\r\nimport type { App, Component } from 'vue'\r\nimport type { FormDrawerSlotContent, IFormDrawer, IFormDrawerProps } from './types'\r\nimport { createForm } from '@formily/core'\r\nimport { toJS } from '@formily/reactive'\r\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@formily/shared'\r\nimport { observer } from '@silver-formily/reactive-vue'\r\nimport { camelCase } from 'lodash-es'\r\nimport { createApp, h, ref } from 'vue'\r\nimport { getTransitionDuration, isVueOptions, loading } from '../__builtins__'\r\nimport DrawerContent from './drawer-content.vue'\r\n\r\nexport function FormDrawer<T extends object = any>(\r\n title: IFormDrawerProps | string,\r\n content?: Component | FormDrawerSlotContent,\r\n dynamicMiddlewareNames?: string[],\r\n): IFormDrawer<T> {\r\n const env: {\r\n root?: HTMLElement\r\n form?: Form<T>\r\n promise?: Promise<any>\r\n instance?: any\r\n app?: App<Element>\r\n openMiddlewares: IMiddleware<IFormProps<T>>[]\r\n confirmMiddlewares: IMiddleware<Form<T>>[]\r\n cancelMiddlewares: IMiddleware<Form<T>>[]\r\n [key: `${string}Middlewares`]: IMiddleware<Form<T>>[] | IMiddleware<IFormProps<T>>[] | undefined\r\n } = {\r\n root: document.createElement('div'),\r\n form: null,\r\n promise: null,\r\n app: null,\r\n instance: null,\r\n openMiddlewares: [],\r\n confirmMiddlewares: [],\r\n cancelMiddlewares: [],\r\n }\r\n\r\n if (isArr(dynamicMiddlewareNames)) {\r\n for (const middlewareName of dynamicMiddlewareNames) {\r\n /* istanbul ignore if -- @preserve */\r\n if (!isStr(middlewareName))\r\n return\r\n const _middlewareName = camelCase(middlewareName)\r\n /* istanbul ignore if -- @preserve */\r\n if (['open', 'cancel', 'confirm'].includes(_middlewareName)) {\r\n throw new Error(`for${pascalCase(_middlewareName)} is presved`)\r\n }\r\n (env[`${_middlewareName}Middlewares`] = [])\r\n }\r\n }\r\n\r\n document.body.append(env.root)\r\n\r\n const props = (isStr(title) ? ({ title }) : title) as IFormDrawerProps\r\n\r\n function render(visible: boolean, resolve?: (type?: string) => any, reject?: () => any) {\r\n const _content = isVueOptions(content) ? { default: () => h(content) } : content\r\n if (!env.instance) {\r\n const ComponentConstructor = observer({\r\n setup(_, { expose }) {\r\n const visible = ref(false)\r\n expose({\r\n visible,\r\n })\r\n return () => h(DrawerContent, {\r\n drawerProps: props,\r\n form: env.form,\r\n resolve,\r\n reject,\r\n visible: visible.value,\r\n }, _content)\r\n },\r\n })\r\n env.app = createApp(ComponentConstructor)\r\n env.instance = env.app.mount(env.root)\r\n }\r\n env.instance.visible = visible\r\n }\r\n\r\n function disposeDrawer() {\r\n const animationDuration = getTransitionDuration()\r\n setTimeout(() => {\r\n env.app?.unmount?.()\r\n env.app = null\r\n env.instance = null\r\n env.root?.remove()\r\n env.root = undefined\r\n }, animationDuration)\r\n }\r\n\r\n const formDrawer = {\r\n forOpen: (middleware: IMiddleware<IFormProps<T>>) => {\r\n isFn(middleware) && env.openMiddlewares.push(middleware)\r\n return formDrawer\r\n },\r\n forConfirm: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\r\n return formDrawer\r\n },\r\n forCancel: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\r\n return formDrawer\r\n },\r\n open: (payload: IFormProps<T>) => {\r\n /* istanbul ignore if -- @preserve */\r\n if (env.promise)\r\n return env.promise\r\n\r\n env.promise = new Promise((res, rej) => {\r\n loading(props.loadingText, () => applyMiddleware(payload, env.openMiddlewares))\r\n .then((resPayload) => {\r\n env.form = env.form || createForm(resPayload as IFormProps<T>)\r\n render(true, (type: string) => {\r\n env.form.submit(async () => {\r\n await (isValid(type) ? applyMiddleware(env.form, env[`${type}Middlewares`]) : applyMiddleware(env.form, env.confirmMiddlewares))\r\n res(toJS(env.form.values))\r\n formDrawer.close()\r\n disposeDrawer()\r\n }).catch((error) => {\r\n console.warn(error)\r\n })\r\n }, async () => {\r\n await loading(props.loadingText, () =>\r\n applyMiddleware(env.form, env.cancelMiddlewares))\r\n formDrawer.close()\r\n disposeDrawer()\r\n rej(new Error('cancel'))\r\n })\r\n })\r\n .catch(/* istanbul ignore next -- @preserve */ error => rej(error))\r\n })\r\n return env.promise\r\n },\r\n close: () => {\r\n /* istanbul ignore if -- @preserve */\r\n if (!env.root)\r\n return\r\n render(false)\r\n },\r\n }\r\n\r\n if (isArr(dynamicMiddlewareNames)) {\r\n for (const middlewareName of dynamicMiddlewareNames) {\r\n const _middlewareName = camelCase(middlewareName)\r\n formDrawer[`for${pascalCase(_middlewareName)}`] = (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env[`${_middlewareName}Middlewares`].push(middleware)\r\n return formDrawer\r\n }\r\n }\r\n }\r\n\r\n return formDrawer as IFormDrawer<T>\r\n}\r\n\r\nexport default FormDrawer\r\n"],"names":["props","__props","slots","_useSlots","prefixCls","stylePrefix","elConfig","loadElConfigProvider","internalSubmitting","useDebonceSubmitting","_drawerProps","omit","_openBlock","_createBlock","_unref","_mergeProps","done","isFn","_createVNode","FormProvider","_renderSlot","_ctx","_createElementVNode","_createElementBlock","_Fragment","ElButton","_createTextVNode","_toDisplayString","FormDrawer","title","content","dynamicMiddlewareNames","env","isArr","middlewareName","isStr","_middlewareName","camelCase","pascalCase","render","visible","resolve","reject","_content","isVueOptions","h","ComponentConstructor","observer","_","expose","ref","DrawerContent","createApp","disposeDrawer","animationDuration","getTransitionDuration","formDrawer","middleware","payload","res","rej","loading","applyMiddleware","resPayload","createForm","type","isValid","toJS","error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,UAAMA,IAAQC,GAsBRC,IAAQC,EAAA,GACRC,IAAY,GAAGC,EAAW,gBAC1BC,IAAWC,EAAA,GAEX,EAAE,oBAAAC,EAAA,IAAuBC,GAAqBT,EAAM,IAAI,GACxDU,IAAeC,EAAKX,EAAM,aAAa,CAAC,cAAc,uBAAuB,aAAa,CAAC;sBAI/FY,KAAAC,EAkDWC,MAlDXC,EAkDW;AAAA,MAjDR,OAAOX;AAAA,MACP,WAASU,EAAAR,CAAA,EAAS;AAAA,IAAA,GACXQ,EAAAJ,CAAA,GAAY;AAAA,MACnB,eAAaT,EAAA;AAAA,MACb,iBAAee,MAAI;AAAc,QAAAf,EAAA,OAAA,GAAoBa,EAAAG,CAAA,EAAKjB,EAAM,YAAY,WAAW,IAAcA,EAAM,YAAY,YAAYgB,CAAI,IAAkCA,EAAA;AAAA;;MAc/J,WACT,MAIe;AAAA,QAJfE,EAIeJ,EAAAK,CAAA,GAAA,EAJA,MAAMlB,EAAA,QAAI;AAAA,qBACvB,MAEmB;AAAA,YAFnBiB,EAEmBJ,UAFOA,EAAAR,CAAA,CAAQ,CAAA,GAAA;AAAA,yBAChC,MAAyD;AAAA,gBAAzDc,EAAyDC,EAAA,QAAA,WAAA;AAAA,kBAAlD,SAASpB,EAAA;AAAA,kBAAU,QAAQA,EAAA;AAAA,kBAAS,MAAMA,EAAA;AAAA,gBAAA;;;;;;;;MAK5C,UACT,MAoBM;AAAA,QApBNqB,EAoBM,OAAA;AAAA,UApBA,YAAUlB,CAAS,SAAA;AAAA,QAAA;UACPF,EAAM,SACpBkB,EAAuEC,EAAA,QAAA,UAAA;AAAA;YAAlD,SAASpB,EAAA;AAAA,YAAU,QAAQA,EAAA;AAAA,YAAS,MAAMA,EAAA;AAAA,UAAA,WAEjEsB,EAeWC,GAAA,EAAA,KAAA,KAAA;AAAA,YAdTN,EAKWJ,EAAAW,CAAA,GALXV,EACUD,EAICJ,CAAA,EAJY,mBAAiB;AAAA,cACrC,gCAAOT,EAAA,OAAA;AAAA,YAAM;yBAEd,MAAqC;AAAA,gBAAlCyB,EAAAC,EAAAb,EAAAJ,CAAA,EAAa,cAAU,IAAA,GAAA,CAAA;AAAA,cAAA;;;YAE5BQ,EAOWJ,EAAAW,CAAA,GAPXV,EAOW,EANT,MAAK,aACGD,EAAAJ,CAAA,EAAa,eAAa;AAAA,cACjC,SAASI,EAAAN,CAAA;AAAA,cACT,gCAAOP,EAAA,QAAA;AAAA,YAAO;yBAEf,MAAiC;AAAA,gBAA9ByB,EAAAC,EAAAb,EAAAJ,CAAA,EAAa,UAAM,IAAA,GAAA,CAAA;AAAA,cAAA;;;;;;;;MA9BdR,EAAM;cAAS;AAAA,cAC7B,MAAuE;AAAA,UAAvEkB,EAAuEC,EAAA,QAAA,UAAA;AAAA,YAAlD,SAASpB,EAAA;AAAA,YAAU,QAAQA,EAAA;AAAA,YAAS,MAAMA,EAAA;AAAA,UAAA;;;;;;;AChD9D,SAAS2B,GACdC,GACAC,GACAC,GACgB;AAChB,QAAMC,IAUF;AAAA,IACF,MAAM,SAAS,cAAc,KAAK;AAAA,IAClC,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,iBAAiB,CAAA;AAAA,IACjB,oBAAoB,CAAA;AAAA,IACpB,mBAAmB,CAAA;AAAA,EAAC;AAGtB,MAAIC,EAAMF,CAAsB;AAC9B,eAAWG,KAAkBH,GAAwB;AAAA,MAAA;AAEnD,UAAI,CAACI,EAAMD,CAAc;AACvB;AACF,YAAME,IAAkBC,EAAUH,CAAc;AAAA,MAAA;AAEhD,UAAI,CAAC,QAAQ,UAAU,SAAS,EAAE,SAASE,CAAe;AACxD,cAAM,IAAI,MAAM,MAAME,EAAWF,CAAe,CAAC,aAAa;AAE/D,MAAAJ,EAAI,GAAGI,CAAe,aAAa,IAAI,CAAA;AAAA,IAC1C;AAGF,WAAS,KAAK,OAAOJ,EAAI,IAAI;AAE7B,QAAMhC,IAASmC,EAAMN,CAAK,IAAK,EAAE,OAAAA,MAAWA;AAE5C,WAASU,EAAOC,GAAkBC,GAAkCC,GAAoB;AACtF,UAAMC,IAAWC,GAAad,CAAO,IAAI,EAAE,SAAS,MAAMe,EAAEf,CAAO,EAAA,IAAMA;AACzE,QAAI,CAACE,EAAI,UAAU;AACjB,YAAMc,IAAuBC,EAAS;AAAA,QACpC,MAAMC,GAAG,EAAE,QAAAC,KAAU;AACnB,gBAAMT,IAAUU,EAAI,EAAK;AACzB,iBAAAD,EAAO;AAAA,YACL,SAAAT;AAAAA,UAAA,CACD,GACM,MAAMK,EAAEM,IAAe;AAAA,YAC5B,aAAanD;AAAA,YACb,MAAMgC,EAAI;AAAA,YACV,SAAAS;AAAA,YACA,QAAAC;AAAA,YACA,SAASF,EAAQ;AAAA,UAAA,GAChBG,CAAQ;AAAA,QACb;AAAA,MAAA,CACD;AACD,MAAAX,EAAI,MAAMoB,EAAUN,CAAoB,GACxCd,EAAI,WAAWA,EAAI,IAAI,MAAMA,EAAI,IAAI;AAAA,IACvC;AACA,IAAAA,EAAI,SAAS,UAAUQ;AAAA,EACzB;AAEA,WAASa,IAAgB;AACvB,UAAMC,IAAoBC,GAAA;AAC1B,eAAW,MAAM;AACf,MAAAvB,EAAI,KAAK,UAAA,GACTA,EAAI,MAAM,MACVA,EAAI,WAAW,MACfA,EAAI,MAAM,OAAA,GACVA,EAAI,OAAO;AAAA,IACb,GAAGsB,CAAiB;AAAA,EACtB;AAEA,QAAME,IAAa;AAAA,IACjB,SAAS,CAACC,OACRxC,EAAKwC,CAAU,KAAKzB,EAAI,gBAAgB,KAAKyB,CAAU,GAChDD;AAAA,IAET,YAAY,CAACC,OACXxC,EAAKwC,CAAU,KAAKzB,EAAI,mBAAmB,KAAKyB,CAAU,GACnDD;AAAA,IAET,WAAW,CAACC,OACVxC,EAAKwC,CAAU,KAAKzB,EAAI,kBAAkB,KAAKyB,CAAU,GAClDD;AAAA,IAET,MAAM,CAACE,MAA2B;AAAA,MAAA;AAEhC,aAAI1B,EAAI,YAGRA,EAAI,UAAU,IAAI,QAAQ,CAAC2B,GAAKC,MAAQ;AACtC,QAAAC,EAAQ7D,EAAM,aAAa,MAAM8D,EAAgBJ,GAAS1B,EAAI,eAAe,CAAC,EAC3E,KAAK,CAAC+B,MAAe;AACpB,UAAA/B,EAAI,OAAOA,EAAI,QAAQgC,EAAWD,CAA2B,GAC7DxB,EAAO,IAAM,CAAC0B,MAAiB;AAC7B,YAAAjC,EAAI,KAAK,OAAO,YAAY;AAC1B,qBAAOkC,EAAQD,CAAI,IAAIH,EAAgB9B,EAAI,MAAMA,EAAI,GAAGiC,CAAI,aAAa,CAAC,IAAIH,EAAgB9B,EAAI,MAAMA,EAAI,kBAAkB,IAC9H2B,EAAIQ,EAAKnC,EAAI,KAAK,MAAM,CAAC,GACzBwB,EAAW,MAAA,GACXH,EAAA;AAAA,YACF,CAAC,EAAE,MAAM,CAACe,MAAU;AAClB,sBAAQ,KAAKA,CAAK;AAAA,YACpB,CAAC;AAAA,UACH,GAAG,YAAY;AACb,kBAAMP,EAAQ7D,EAAM,aAAa,MAC/B8D,EAAgB9B,EAAI,MAAMA,EAAI,iBAAiB,CAAC,GAClDwB,EAAW,MAAA,GACXH,EAAA,GACAO,EAAI,IAAI,MAAM,QAAQ,CAAC;AAAA,UACzB,CAAC;AAAA,QACH,CAAC,EACA;AAAA;AAAA,UAA8C,CAAAQ,MAASR,EAAIQ,CAAK;AAAA,QAAA;AAAA,MACrE,CAAC,IACMpC,EAAI;AAAA,IACb;AAAA,IACA,OAAO,MAAM;AAAA,MAAA;AAEX,MAAKA,EAAI,QAETO,EAAO,EAAK;AAAA,IACd;AAAA,EAAA;AAGF,MAAIN,EAAMF,CAAsB;AAC9B,eAAWG,KAAkBH,GAAwB;AACnD,YAAMK,IAAkBC,EAAUH,CAAc;AAChD,MAAAsB,EAAW,MAAMlB,EAAWF,CAAe,CAAC,EAAE,IAAI,CAACqB,OACjDxC,EAAKwC,CAAU,KAAKzB,EAAI,GAAGI,CAAe,aAAa,EAAE,KAAKqB,CAAU,GACjED;AAAA,IAEX;AAGF,SAAOA;AACT;"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/form-drawer/drawer-content.vue","../../src/form-drawer/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { Form } from '@formily/core'\r\nimport type { ComponentPublicInstance, PropType } from 'vue'\r\nimport type { FormDrawerSlots, IFormDrawerProps } from './types'\r\nimport { isFn } from '@formily/shared'\r\nimport { FormProvider } from '@silver-formily/vue'\r\nimport { ElButton, ElConfigProvider, ElDrawer } from 'element-plus'\r\nimport { omit } from 'lodash-es'\r\nimport { computed, ref } from 'vue'\r\nimport { loadElConfigProvider, stylePrefix, useDebonceSubmitting } from '../__builtins__'\r\nimport { useEnterSubmit } from '../__builtins__/shared/use-enter-submit'\r\nimport { resolveDrawerElement } from '../shared/overlay-elements'\r\n\r\ndefineOptions({\r\n name: 'FormDrawerContent',\r\n})\r\n\r\nconst props = defineProps({\r\n drawerProps: {\r\n type: Object as PropType<IFormDrawerProps>,\r\n required: true,\r\n },\r\n visible: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n form: {\r\n type: Object as PropType<Form>,\r\n required: true,\r\n },\r\n resolve: {\r\n type: Function as PropType<(type?: string) => void>,\r\n required: true,\r\n },\r\n reject: {\r\n type: Function as PropType<() => void>,\r\n required: true,\r\n },\r\n})\r\nconst slots = defineSlots<FormDrawerSlots>()\r\nconst prefixCls = `${stylePrefix}-form-drawer`\r\nconst elConfig = loadElConfigProvider()\r\n\r\nconst { internalSubmitting } = useDebonceSubmitting(props.form)\r\nconst _drawerProps = omit(props.drawerProps, ['modelValue', 'onUpdate:modelValue', 'beforeClose', 'enterSubmit'])\r\nconst drawerRef = ref<ComponentPublicInstance | null>(null)\r\nconst enableEnterSubmit = computed(() => props.drawerProps.enterSubmit !== false)\r\n\r\nuseEnterSubmit({\r\n visible: computed(() => props.visible),\r\n resolve: () => props.resolve(),\r\n submitting: internalSubmitting,\r\n getContainer: () => resolveDrawerElement(drawerRef.value),\r\n enabled: enableEnterSubmit,\r\n})\r\n</script>\r\n\r\n<template>\r\n <ElDrawer\r\n ref=\"drawerRef\"\r\n :class=\"prefixCls\"\r\n :z-index=\"elConfig.zIndex\"\r\n v-bind=\"_drawerProps\"\r\n :model-value=\"visible\"\r\n :before-close=\"(done) => {\r\n reject()\r\n if (isFn(props.drawerProps.beforeClose)) {\r\n props.drawerProps.beforeClose(done)\r\n }\r\n else {\r\n done()\r\n }\r\n }\"\r\n >\r\n <template v-if=\"slots.header\" #header>\r\n <slot name=\"header\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\r\n </template>\r\n\r\n <template #default>\r\n <FormProvider :form=\"form\">\r\n <ElConfigProvider v-bind=\"elConfig\">\r\n <slot :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\r\n </ElConfigProvider>\r\n </FormProvider>\r\n </template>\r\n\r\n <template #footer>\r\n <div :class=\"`${prefixCls}-footer`\">\r\n <template v-if=\"slots.footer\">\r\n <slot name=\"footer\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\r\n </template>\r\n <template v-else>\r\n <ElButton\r\n v-bind=\"_drawerProps.cancelButtonProps\"\r\n @click=\"reject()\"\r\n >\r\n {{ _drawerProps.cancelText || '取消' }}\r\n </ElButton>\r\n <ElButton\r\n type=\"primary\"\r\n v-bind=\"_drawerProps.okButtonProps\"\r\n :loading=\"internalSubmitting\"\r\n @click=\"resolve()\"\r\n >\r\n {{ _drawerProps.okText || '确定' }}\r\n </ElButton>\r\n </template>\r\n </div>\r\n </template>\r\n </ElDrawer>\r\n</template>\r\n","import type { Form, IFormProps } from '@formily/core'\r\nimport type { IMiddleware } from '@formily/shared'\r\nimport type { App, Component } from 'vue'\r\nimport type { FormDrawerSlotContent, IFormDrawer, IFormDrawerProps } from './types'\r\nimport { createForm } from '@formily/core'\r\nimport { toJS } from '@formily/reactive'\r\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@formily/shared'\r\nimport { observer } from '@silver-formily/reactive-vue'\r\nimport { camelCase } from 'lodash-es'\r\nimport { createApp, h, ref } from 'vue'\r\nimport { getTransitionDuration, isVueOptions, loading } from '../__builtins__'\r\nimport DrawerContent from './drawer-content.vue'\r\n\r\nexport function FormDrawer<T extends object = any>(\r\n title: IFormDrawerProps | string,\r\n content?: Component | FormDrawerSlotContent,\r\n dynamicMiddlewareNames?: string[],\r\n): IFormDrawer<T> {\r\n const env: {\r\n root?: HTMLElement\r\n form?: Form<T>\r\n promise?: Promise<any>\r\n instance?: any\r\n app?: App<Element>\r\n openMiddlewares: IMiddleware<IFormProps<T>>[]\r\n confirmMiddlewares: IMiddleware<Form<T>>[]\r\n cancelMiddlewares: IMiddleware<Form<T>>[]\r\n [key: `${string}Middlewares`]: IMiddleware<Form<T>>[] | IMiddleware<IFormProps<T>>[] | undefined\r\n } = {\r\n root: document.createElement('div'),\r\n form: null,\r\n promise: null,\r\n app: null,\r\n instance: null,\r\n openMiddlewares: [],\r\n confirmMiddlewares: [],\r\n cancelMiddlewares: [],\r\n }\r\n\r\n if (isArr(dynamicMiddlewareNames)) {\r\n for (const middlewareName of dynamicMiddlewareNames) {\r\n /* istanbul ignore if -- @preserve */\r\n if (!isStr(middlewareName))\r\n return\r\n const _middlewareName = camelCase(middlewareName)\r\n /* istanbul ignore if -- @preserve */\r\n if (['open', 'cancel', 'confirm'].includes(_middlewareName)) {\r\n throw new Error(`for${pascalCase(_middlewareName)} is presved`)\r\n }\r\n (env[`${_middlewareName}Middlewares`] = [])\r\n }\r\n }\r\n\r\n document.body.append(env.root)\r\n\r\n const props = (isStr(title) ? ({ title }) : title) as IFormDrawerProps\r\n\r\n function render(visible: boolean, resolve?: (type?: string) => any, reject?: () => any) {\r\n const _content = isVueOptions(content) ? { default: () => h(content) } : content\r\n if (!env.instance) {\r\n const ComponentConstructor = observer({\r\n setup(_, { expose }) {\r\n const visible = ref(false)\r\n expose({\r\n visible,\r\n })\r\n return () => h(DrawerContent, {\r\n drawerProps: props,\r\n form: env.form,\r\n resolve,\r\n reject,\r\n visible: visible.value,\r\n }, _content)\r\n },\r\n })\r\n env.app = createApp(ComponentConstructor)\r\n env.instance = env.app.mount(env.root)\r\n }\r\n env.instance.visible = visible\r\n }\r\n\r\n function disposeDrawer() {\r\n const animationDuration = getTransitionDuration()\r\n setTimeout(() => {\r\n env.app?.unmount?.()\r\n env.app = null\r\n env.instance = null\r\n env.root?.remove()\r\n env.root = undefined\r\n }, animationDuration)\r\n }\r\n\r\n const formDrawer = {\r\n forOpen: (middleware: IMiddleware<IFormProps<T>>) => {\r\n isFn(middleware) && env.openMiddlewares.push(middleware)\r\n return formDrawer\r\n },\r\n forConfirm: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\r\n return formDrawer\r\n },\r\n forCancel: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\r\n return formDrawer\r\n },\r\n open: (payload: IFormProps<T>) => {\r\n /* istanbul ignore if -- @preserve */\r\n if (env.promise)\r\n return env.promise\r\n\r\n env.promise = new Promise((res, rej) => {\r\n loading(props.loadingText, () => applyMiddleware(payload, env.openMiddlewares))\r\n .then((resPayload) => {\r\n env.form = env.form || createForm(resPayload as IFormProps<T>)\r\n render(true, (type: string) => {\r\n env.form.submit(async () => {\r\n await (isValid(type) ? applyMiddleware(env.form, env[`${type}Middlewares`]) : applyMiddleware(env.form, env.confirmMiddlewares))\r\n res(toJS(env.form.values))\r\n formDrawer.close()\r\n disposeDrawer()\r\n }).catch((error) => {\r\n console.warn(error)\r\n })\r\n }, async () => {\r\n await loading(props.loadingText, () =>\r\n applyMiddleware(env.form, env.cancelMiddlewares))\r\n formDrawer.close()\r\n disposeDrawer()\r\n rej(new Error('cancel'))\r\n })\r\n })\r\n .catch(/* istanbul ignore next -- @preserve */ error => rej(error))\r\n })\r\n return env.promise\r\n },\r\n close: () => {\r\n /* istanbul ignore if -- @preserve */\r\n if (!env.root)\r\n return\r\n render(false)\r\n },\r\n }\r\n\r\n if (isArr(dynamicMiddlewareNames)) {\r\n for (const middlewareName of dynamicMiddlewareNames) {\r\n const _middlewareName = camelCase(middlewareName)\r\n formDrawer[`for${pascalCase(_middlewareName)}`] = (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env[`${_middlewareName}Middlewares`].push(middleware)\r\n return formDrawer\r\n }\r\n }\r\n }\r\n\r\n return formDrawer as IFormDrawer<T>\r\n}\r\n\r\nexport default FormDrawer\r\n"],"names":["props","__props","slots","_useSlots","prefixCls","stylePrefix","elConfig","loadElConfigProvider","internalSubmitting","useDebonceSubmitting","_drawerProps","omit","drawerRef","ref","enableEnterSubmit","computed","useEnterSubmit","resolveDrawerElement","_openBlock","_createBlock","_unref","_mergeProps","done","isFn","_createVNode","FormProvider","_renderSlot","_ctx","_createElementVNode","_createElementBlock","_Fragment","ElButton","_createTextVNode","_toDisplayString","FormDrawer","title","content","dynamicMiddlewareNames","env","isArr","middlewareName","isStr","_middlewareName","camelCase","pascalCase","render","visible","resolve","reject","_content","isVueOptions","h","ComponentConstructor","observer","_","expose","DrawerContent","createApp","disposeDrawer","animationDuration","getTransitionDuration","formDrawer","middleware","payload","res","rej","loading","applyMiddleware","resPayload","createForm","type","isValid","toJS","error"],"mappings":"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"}
|
package/esm/form-item/index.mjs
CHANGED
|
@@ -3,23 +3,23 @@ import { useField as ce, connect as fe, mapProps as ve } from "@silver-formily/v
|
|
|
3
3
|
import { defineComponent as pe, useSlots as me, computed as i, ref as b, reactive as be, watch as ye, provide as D, createElementBlock as n, openBlock as a, unref as l, normalizeClass as u, createBlock as f, createCommentVNode as c, createElementVNode as h, resolveDynamicComponent as g, normalizeStyle as W, withCtx as m, isVNode as x, createVNode as _, toDisplayString as y, Fragment as C, createTextVNode as R, renderSlot as G, TransitionGroup as ke } from "vue";
|
|
4
4
|
import { InfoFilled as ge, CircleClose as Se, CircleCheck as he, Warning as xe } from "@element-plus/icons-vue";
|
|
5
5
|
import { isValid as v, isArr as _e } from "@formily/shared";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { i as Re } from "../vendor/
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
6
|
+
import { useResizeObserver as Ce } from "@vueuse/core";
|
|
7
|
+
import { useNamespace as Ie, useFormSize as $e, useId as we, formItemContextKey as We, ElTooltip as E, ElIcon as K } from "element-plus";
|
|
8
|
+
import { FORM_LAYOUT_PROPS_KEYS as Fe, useFormLayout as Ae, formLayoutShallowContext as Le } from "../form-layout/utils.mjs";
|
|
9
|
+
import { p as ze } from "../vendor/lodash.mjs";
|
|
10
|
+
import { i as Be, a as Te, d as Re } from "../vendor/types.mjs";
|
|
11
|
+
import { i as Ee } from "../vendor/shared.esm-bundler.mjs";
|
|
12
|
+
import { stylePrefix as Ve } from "../__builtins__/configs/index.mjs";
|
|
13
13
|
import { getFeedbackMessage as Pe, determineFeedbackStatus as Ne } from "./utils.mjs";
|
|
14
14
|
import { composeExport as Oe } from "../__builtins__/shared/utils.mjs";
|
|
15
15
|
import '../styles/form-item/index.css';const qe = "utils/dom/style";
|
|
16
16
|
function U(s, p = "px") {
|
|
17
17
|
if (!s && s !== 0) return "";
|
|
18
|
-
if (
|
|
18
|
+
if (Be(s) || Te(s))
|
|
19
19
|
return `${s}${p}`;
|
|
20
|
-
if (
|
|
20
|
+
if (Ee(s))
|
|
21
21
|
return s;
|
|
22
|
-
|
|
22
|
+
Re(qe, "binding value must be a string or number");
|
|
23
23
|
}
|
|
24
24
|
const Me = ["role", "aria-labelledby"], Y = /* @__PURE__ */ pe({
|
|
25
25
|
name: "FFormItem",
|
|
@@ -49,16 +49,16 @@ const Me = ["role", "aria-labelledby"], Y = /* @__PURE__ */ pe({
|
|
|
49
49
|
tooltipLayout: {}
|
|
50
50
|
},
|
|
51
51
|
setup(s, { expose: p }) {
|
|
52
|
-
const e = s, F = me(), o =
|
|
52
|
+
const e = s, F = me(), o = Ie("form-item"), d = `${Ve}-form-item`, H = i(
|
|
53
53
|
() => Object.fromEntries(
|
|
54
|
-
Object.entries(
|
|
54
|
+
Object.entries(ze(e, Fe)).filter(([r, w]) => v(w))
|
|
55
55
|
)
|
|
56
|
-
), J =
|
|
56
|
+
), J = Ae(), t = i(() => Object.assign({
|
|
57
57
|
colon: !0,
|
|
58
58
|
feedbackLayout: "loose",
|
|
59
59
|
fullness: !1,
|
|
60
60
|
labelWrap: !1
|
|
61
|
-
}, J.value, H.value)), V = ce(), Q =
|
|
61
|
+
}, J.value, H.value)), V = ce(), Q = $e(void 0, { formItem: !1 }), P = i(() => v(t.value.size) ? t.value.size : Q.value), A = we().value, k = b([]), N = b(""), O = b(), S = b(), q = b();
|
|
62
62
|
p({
|
|
63
63
|
feedbackTooltipRef: q
|
|
64
64
|
});
|
|
@@ -112,7 +112,7 @@ const Me = ["role", "aria-labelledby"], Y = /* @__PURE__ */ pe({
|
|
|
112
112
|
}, ne = (r) => {
|
|
113
113
|
k.value = k.value.filter((w) => w !== r);
|
|
114
114
|
}, j = b(!1);
|
|
115
|
-
|
|
115
|
+
Ce(S, () => {
|
|
116
116
|
j.value = S.value?.scrollWidth > S.value?.clientWidth;
|
|
117
117
|
});
|
|
118
118
|
const T = i(() => j.value && !t.value.labelWrap), ue = b(""), $ = be({
|
|
@@ -149,10 +149,10 @@ const Me = ["role", "aria-labelledby"], Y = /* @__PURE__ */ pe({
|
|
|
149
149
|
$.validateState = r;
|
|
150
150
|
}, {
|
|
151
151
|
immediate: !0
|
|
152
|
-
}), D(
|
|
152
|
+
}), D(Le, b({
|
|
153
153
|
...v(t.value.size) && { size: t.value.size },
|
|
154
154
|
...v(t.value.colon) && { colon: t.value.colon }
|
|
155
|
-
})), D(
|
|
155
|
+
})), D(We, $), (r, w) => (a(), n("div", {
|
|
156
156
|
ref_key: "formItemRef",
|
|
157
157
|
ref: O,
|
|
158
158
|
class: u([d, t.value.labelWrap && "is-warp", ...ae.value]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.22_typescript@5.9.3_/node_modules/element-plus/es/utils/dom/style.mjs","../../src/form-item/form-item.vue","../../src/form-item/index.ts"],"sourcesContent":["import { isNumber, isStringNumber } from '../types.mjs';\nimport { isClient } from '@vueuse/core';\nimport { isString, camelize, isObject } from '@vue/shared';\nimport { entriesOf, keysOf } from '../objects.mjs';\nimport { debugWarn } from '../error.mjs';\n\nconst SCOPE = \"utils/dom/style\";\nconst classNameToArray = (cls = \"\") => cls.split(\" \").filter((item) => !!item.trim());\nconst hasClass = (el, cls) => {\n if (!el || !cls) return false;\n if (cls.includes(\" \")) throw new Error(\"className should not contain space.\");\n return el.classList.contains(cls);\n};\nconst addClass = (el, cls) => {\n if (!el || !cls.trim()) return;\n el.classList.add(...classNameToArray(cls));\n};\nconst removeClass = (el, cls) => {\n if (!el || !cls.trim()) return;\n el.classList.remove(...classNameToArray(cls));\n};\nconst getStyle = (element, styleName) => {\n var _a;\n if (!isClient || !element || !styleName) return \"\";\n let key = camelize(styleName);\n if (key === \"float\") key = \"cssFloat\";\n try {\n const style = element.style[key];\n if (style) return style;\n const computed = (_a = document.defaultView) == null ? void 0 : _a.getComputedStyle(element, \"\");\n return computed ? computed[key] : \"\";\n } catch (e) {\n return element.style[key];\n }\n};\nconst setStyle = (element, styleName, value) => {\n if (!element || !styleName) return;\n if (isObject(styleName)) {\n entriesOf(styleName).forEach(\n ([prop, value2]) => setStyle(element, prop, value2)\n );\n } else {\n const key = camelize(styleName);\n element.style[key] = value;\n }\n};\nconst removeStyle = (element, style) => {\n if (!element || !style) return;\n if (isObject(style)) {\n keysOf(style).forEach((prop) => removeStyle(element, prop));\n } else {\n setStyle(element, style, \"\");\n }\n};\nfunction addUnit(value, defaultUnit = \"px\") {\n if (!value && value !== 0) return \"\";\n if (isNumber(value) || isStringNumber(value)) {\n return `${value}${defaultUnit}`;\n } else if (isString(value)) {\n return value;\n }\n debugWarn(SCOPE, \"binding value must be a string or number\");\n}\n\nexport { addClass, addUnit, classNameToArray, getStyle, hasClass, removeClass, removeStyle, setStyle };\n//# sourceMappingURL=style.mjs.map\n","<script lang=\"ts\" setup>\r\nimport type { Field } from '@formily/core'\r\nimport type {\r\n FormItemContext,\r\n FormItemValidateState,\r\n FormValidationResult,\r\n TooltipInstance,\r\n} from 'element-plus'\r\nimport type { ICalculatedFormLayoutProps } from 'src/form-layout/types'\r\nimport type { CSSProperties } from 'vue'\r\nimport type { IFormItemProps } from './types'\r\nimport { CircleCheck, CircleClose, InfoFilled, Warning } from '@element-plus/icons-vue'\r\nimport { isArr, isValid } from '@formily/shared'\r\nimport { useField } from '@silver-formily/vue'\r\nimport { ElIcon, ElTooltip, formItemContextKey, useFormSize, useId, useNamespace } from 'element-plus'\r\nimport { addUnit } from 'element-plus/es/utils/index'\r\nimport { pick } from 'lodash-es'\r\nimport { computed, isVNode, provide, reactive, ref, useSlots, watch } from 'vue'\r\nimport { stylePrefix, useResizeObserver } from '../__builtins__'\r\nimport { FORM_LAYOUT_PROPS_KEYS, formLayoutShallowContext, useFormLayout } from '../form-layout/utils'\r\n\r\ndefineOptions({\r\n name: 'FFormItem',\r\n})\r\nconst props = withDefaults(defineProps<IFormItemProps>(), {\r\n asterisk: undefined,\r\n colon: undefined,\r\n labelWrap: undefined,\r\n fullness: undefined,\r\n})\r\nconst slots = useSlots()\r\nconst ns = useNamespace('form-item')\r\nconst prefixCls = `${stylePrefix}-form-item`\r\nconst formItemConfig = computed<Partial<ICalculatedFormLayoutProps>>(() =>\r\n Object.fromEntries(\r\n Object.entries(pick(props, FORM_LAYOUT_PROPS_KEYS))\r\n .filter(([_, value]) => isValid(value)),\r\n ),\r\n)\r\nconst formlayoutConfig = useFormLayout()\r\nconst formlayout = computed(() => Object.assign({\r\n colon: true,\r\n feedbackLayout: 'loose',\r\n fullness: false,\r\n labelWrap: false,\r\n}, formlayoutConfig.value, formItemConfig.value))\r\nconst field = useField<Field>()\r\n\r\nconst inheritedSize = useFormSize(undefined, { formItem: false })\r\nconst formItemSize = computed(() => {\r\n if (isValid(formlayout.value.size)) {\r\n return formlayout.value.size\r\n }\r\n return inheritedSize.value\r\n})\r\n\r\nconst labelId = useId().value\r\nconst inputIds = ref<string[]>([])\r\n\r\nconst validateState = ref<FormItemValidateState>('')\r\nconst formItemRef = ref<HTMLDivElement>()\r\nconst labelRef = ref<HTMLElement>()\r\nconst feedbackTooltipRef = ref<TooltipInstance>()\r\ndefineExpose({\r\n feedbackTooltipRef,\r\n})\r\n\r\nconst labelPosition = computed(\r\n () => {\r\n if (formlayout.value.layout === 'vertical' || (isArr(formlayout.value.layout) && formlayout.value.layout.includes('vertical' as any))) {\r\n return 'top'\r\n }\r\n return formlayout.value.labelAlign ?? 'right'\r\n },\r\n)\r\n\r\nconst labelStyle = computed<CSSProperties>(() => {\r\n if (labelPosition.value === 'top') {\r\n return {}\r\n }\r\n\r\n const labelWidth = addUnit(formlayout.value.labelWidth || '')\r\n if (labelWidth)\r\n return { width: labelWidth }\r\n return {}\r\n})\r\n\r\nconst contentStyle = computed<CSSProperties>(() => {\r\n const contentWidth = addUnit(formlayout.value?.wrapperWidth || '')\r\n if (contentWidth)\r\n return { width: contentWidth, flex: 'unset' }\r\n return {}\r\n})\r\n\r\nconst contentWrapperStyle = computed<CSSProperties>(() => {\r\n return {\r\n justifyContent: formlayout.value?.wrapperAlign === 'right' && 'flex-end',\r\n }\r\n})\r\n\r\nconst isRequired = computed(() =>\r\n props.asterisk && field.value?.pattern !== 'readPretty',\r\n)\r\n\r\nconst formItemClasses = computed(() => [\r\n ns.b(),\r\n ns.m(formItemSize.value || 'default'),\r\n ns.is(props.feedbackStatus),\r\n ns.is('validating', validateState.value === 'validating'),\r\n ns.is('success', validateState.value === 'success'),\r\n ns.is('required', isRequired.value || props.asterisk),\r\n ns.is('no-asterisk', formlayout.value?.hideRequiredAsterisk),\r\n ns.is(formlayout.value.feedbackLayout),\r\n formlayout.value?.requireAsteriskPosition === 'right'\r\n ? 'asterisk-right'\r\n : 'asterisk-left',\r\n {\r\n [ns.m('feedback')]: formlayout.value?.statusIcon,\r\n [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\r\n },\r\n])\r\n\r\nconst validateClasses = computed(() => [\r\n `${prefixCls}-feedback`,\r\n ns.is(props.feedbackStatus),\r\n ns.is('loose', formlayout.value.feedbackLayout === 'loose'),\r\n])\r\n\r\nconst hasLabel = computed<boolean>(() => {\r\n return (props.label !== '' && isValid(props.label)) || isValid(slots.label)\r\n})\r\n\r\nconst labelFor = computed<string | undefined>(() => {\r\n return (\r\n props.for || (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\r\n )\r\n})\r\n\r\nconst isGroup = computed<boolean>(() => {\r\n return !labelFor.value && hasLabel.value\r\n})\r\n\r\nasync function validate(): FormValidationResult {\r\n return true\r\n}\r\n/* istanbul ignore next -- @preserve */\r\nconst clearValidate: FormItemContext['clearValidate'] = () => {}\r\n/* istanbul ignore next -- @preserve */\r\nconst resetField: FormItemContext['resetField'] = async () => {}\r\n/* istanbul ignore next -- @preserve */\r\nconst setInitialValue: FormItemContext['setInitialValue'] = () => {}\r\n\r\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\r\n /* istanbul ignore else -- @preserve */\r\n if (!inputIds.value.includes(id)) {\r\n inputIds.value.push(id)\r\n }\r\n}\r\n\r\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\r\n inputIds.value = inputIds.value.filter(listId => listId !== id)\r\n}\r\n\r\nconst isEllipsisActive = ref(false)\r\nuseResizeObserver(labelRef, () => {\r\n isEllipsisActive.value = labelRef.value?.scrollWidth > labelRef.value?.clientWidth\r\n})\r\nconst isEllipsis = computed(() => {\r\n return isEllipsisActive.value && !formlayout.value.labelWrap\r\n})\r\n\r\n// HACK computed无法监听到props.feedbackStatus的变化\r\nconst _validateState = ref<FormItemValidateState>('')\r\nconst context: FormItemContext = reactive({\r\n $el: formItemRef,\r\n labelWidth: formlayout.value?.labelWidth,\r\n size: formItemSize,\r\n validateState: _validateState.value,\r\n labelId,\r\n inputIds,\r\n isGroup,\r\n hasLabel,\r\n addInputId,\r\n removeInputId,\r\n resetField,\r\n clearValidate,\r\n validate,\r\n labelPosition,\r\n inlineMessage: true,\r\n showMessage: true,\r\n fieldValue: field.value?.value,\r\n validateMessage: '',\r\n propString: '',\r\n setInitialValue,\r\n})\r\nwatch(() => props.feedbackStatus, (val) => {\r\n if (val === 'pending') {\r\n context.validateState = 'validating'\r\n return\r\n }\r\n if (val === 'warning') {\r\n context.validateState = ''\r\n return\r\n }\r\n context.validateState = val\r\n}, {\r\n immediate: true,\r\n})\r\n\r\nprovide(formLayoutShallowContext, ref({\r\n ...(isValid(formlayout.value.size) && { size: formlayout.value.size }),\r\n ...(isValid(formlayout.value.colon) && { colon: formlayout.value.colon }),\r\n}))\r\nprovide(formItemContextKey, context)\r\n</script>\r\n\r\n<template>\r\n <div\r\n ref=\"formItemRef\" :class=\"[prefixCls, formlayout.labelWrap && 'is-warp', ...formItemClasses]\"\r\n :role=\"isGroup ? 'group' : undefined\" :aria-labelledby=\"isGroup ? labelId : undefined\"\r\n >\r\n <component\r\n :is=\"labelFor ? 'label' : 'div'\" v-if=\"hasLabel\" :id=\"labelId\" :for=\"labelFor\"\r\n :class=\"[ns.e('label'), isValid(formlayout.labelCol) && `${prefixCls}-col-${formlayout.labelCol}`]\"\r\n :style=\"labelStyle\"\r\n >\r\n <!-- label -->\r\n <template v-if=\"isVNode(props.label)\">\r\n <component :is=\"props.label\" />\r\n </template>\r\n <div v-else :class=\"`${prefixCls}-label__wrapper`\">\r\n <ElTooltip :disabled=\"!isEllipsis && formlayout.tooltipLayout !== 'text'\">\r\n <span\r\n :class=\"{\r\n [`${prefixCls}-label-content`]: true,\r\n ['is-tooltip']: isEllipsis || (props.tooltip && formlayout.tooltipLayout === 'text'),\r\n }\"\r\n >\r\n <span ref=\"labelRef\">{{ props.label }}</span>\r\n </span>\r\n <template #content>\r\n <template v-if=\"isVNode(props.tooltip)\">\r\n <component :is=\"props.tooltip\" />\r\n </template>\r\n <div v-else :style=\"`width: ${labelRef?.clientWidth ?? 0}px;`\">\r\n <template v-if=\"isEllipsis\">\r\n {{ props.label }}\r\n </template>\r\n <template v-if=\"formlayout.tooltipLayout === 'text'\">\r\n {{ props.tooltip }}\r\n </template>\r\n </div>\r\n </template>\r\n </ElTooltip>\r\n <ElTooltip v-if=\"props.tooltip && formlayout.tooltipLayout !== 'text'\" :content=\"props.tooltip\">\r\n <ElIcon :class=\"`${prefixCls}-label-tooltip`\">\r\n <InfoFilled />\r\n </ElIcon>\r\n </ElTooltip>\r\n <span v-if=\"formlayout.colon\" :class=\"`${prefixCls}-colon`\">:</span>\r\n </div>\r\n </component>\r\n <!-- content -->\r\n <div\r\n :class=\"[\r\n `${prefixCls}-content__wrapper`,\r\n isValid(formlayout.wrapperCol) && `${prefixCls}-col-${formlayout.wrapperCol}`,\r\n ]\"\r\n :style=\"contentWrapperStyle\"\r\n >\r\n <template v-if=\"isValid(props.addonBefore)\">\r\n <template v-if=\"isVNode(props.addonBefore)\">\r\n <component :is=\"props.addonBefore\" />\r\n </template>\r\n <div v-else :class=\"`${prefixCls}-addon-before`\">\r\n {{ props.addonBefore }}\r\n </div>\r\n </template>\r\n <div\r\n :class=\"[\r\n ns.e('content'),\r\n formlayout.fullness && 'is-fullness',\r\n ns.is('addon-after', !!props.addonAfter),\r\n ]\" :style=\"contentStyle\"\r\n >\r\n <ElTooltip\r\n v-if=\"formlayout.feedbackLayout === 'popover'\"\r\n ref=\"feedbackTooltipRef\"\r\n :visible=\"!!props.feedbackText\"\r\n effect=\"light\"\r\n :offset=\"6\"\r\n >\r\n <template #default>\r\n <slot />\r\n </template>\r\n <template #content>\r\n <div :class=\"[...validateClasses, ns.is('tooltip')]\">\r\n <ElIcon>\r\n <CircleClose v-if=\"props.feedbackStatus === 'error'\" />\r\n <CircleCheck v-if=\"props.feedbackStatus === 'success'\" />\r\n <Warning v-if=\"props.feedbackStatus === 'warning'\" />\r\n </ElIcon>\r\n {{ props.feedbackText }}\r\n </div>\r\n </template>\r\n </ElTooltip>\r\n <slot v-else />\r\n <TransitionGroup :name=\"`${ns.namespace.value}-zoom-in-top`\">\r\n <div v-if=\"props.feedbackText && formlayout.feedbackLayout !== 'popover'\" :class=\"validateClasses\">\r\n {{ props.feedbackText }}\r\n </div>\r\n <template v-if=\"isValid(props.extra)\">\r\n <template v-if=\"isVNode(props.extra)\">\r\n <component :is=\"props.extra\" />\r\n </template>\r\n <div v-else :class=\"`${prefixCls}-extra`\">\r\n {{ props.extra }}\r\n </div>\r\n </template>\r\n </TransitionGroup>\r\n </div>\r\n <template v-if=\"isValid(props.addonAfter)\">\r\n <template v-if=\"isVNode(props.addonAfter)\">\r\n <component :is=\"props.addonAfter\" />\r\n </template>\r\n <div v-else :class=\"`${prefixCls}-addon-after`\">\r\n {{ props.addonAfter }}\r\n </div>\r\n </template>\r\n </div>\r\n </div>\r\n</template>\r\n","import { isVoidField } from '@formily/core'\r\nimport { connect, mapProps } from '@silver-formily/vue'\r\nimport { composeExport } from '../__builtins__'\r\nimport FormBaseItem from './form-item.vue'\r\nimport { determineFeedbackStatus, getFeedbackMessage } from './utils'\r\nimport './style.scss'\r\n\r\nexport function fieldFeedbackMapper(props, field) {\r\n if (isVoidField(field) || !field) {\r\n return props\r\n }\r\n\r\n const feedbackText = getFeedbackMessage(field)\r\n const feedbackStatus = determineFeedbackStatus(field)\r\n const asterisk = 'asterisk' in props\r\n ? props.asterisk\r\n : field.required && field.pattern !== 'readPretty'\r\n\r\n return {\r\n ...props,\r\n feedbackText,\r\n feedbackStatus,\r\n asterisk,\r\n }\r\n}\r\n\r\nconst Item = connect<typeof FormBaseItem>(\r\n FormBaseItem,\r\n mapProps(\r\n {\r\n validateStatus: true,\r\n title: 'label',\r\n required: true,\r\n description: 'extra',\r\n },\r\n fieldFeedbackMapper,\r\n ),\r\n)\r\n\r\nexport const FormItem = composeExport(Item, {\r\n BaseItem: FormBaseItem,\r\n})\r\n\r\nexport default FormItem\r\n\r\nexport { default as FormBaseItem } from './form-item.vue'\r\n"],"names":["SCOPE","addUnit","value","defaultUnit","isNumber","isStringNumber","isString","debugWarn","props","__props","slots","useSlots","ns","useNamespace","prefixCls","stylePrefix","formItemConfig","computed","pick","FORM_LAYOUT_PROPS_KEYS","_","isValid","formlayoutConfig","useFormLayout","formlayout","field","useField","inheritedSize","useFormSize","formItemSize","labelId","useId","inputIds","ref","validateState","formItemRef","labelRef","feedbackTooltipRef","__expose","labelPosition","isArr","labelStyle","labelWidth","contentStyle","contentWidth","contentWrapperStyle","isRequired","formItemClasses","validateClasses","hasLabel","labelFor","isGroup","validate","clearValidate","resetField","setInitialValue","addInputId","id","removeInputId","listId","isEllipsisActive","useResizeObserver","isEllipsis","_validateState","context","reactive","watch","val","provide","formLayoutShallowContext","formItemContextKey","_createElementBlock","_unref","_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","isVNode","_createVNode","ElTooltip","_normalizeStyle","_Fragment","_createTextVNode","_toDisplayString","_createElementVNode","ElIcon","InfoFilled","_renderSlot","_ctx","CircleClose","CircleCheck","Warning","_TransitionGroup","fieldFeedbackMapper","isVoidField","feedbackText","getFeedbackMessage","feedbackStatus","determineFeedbackStatus","asterisk","Item","connect","FormBaseItem","mapProps","FormItem","composeExport"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.22_typescript@5.9.3_/node_modules/element-plus/es/utils/dom/style.mjs","../../src/form-item/form-item.vue","../../src/form-item/index.ts"],"sourcesContent":["import { isNumber, isStringNumber } from '../types.mjs';\nimport { isClient } from '@vueuse/core';\nimport { isString, camelize, isObject } from '@vue/shared';\nimport { entriesOf, keysOf } from '../objects.mjs';\nimport { debugWarn } from '../error.mjs';\n\nconst SCOPE = \"utils/dom/style\";\nconst classNameToArray = (cls = \"\") => cls.split(\" \").filter((item) => !!item.trim());\nconst hasClass = (el, cls) => {\n if (!el || !cls) return false;\n if (cls.includes(\" \")) throw new Error(\"className should not contain space.\");\n return el.classList.contains(cls);\n};\nconst addClass = (el, cls) => {\n if (!el || !cls.trim()) return;\n el.classList.add(...classNameToArray(cls));\n};\nconst removeClass = (el, cls) => {\n if (!el || !cls.trim()) return;\n el.classList.remove(...classNameToArray(cls));\n};\nconst getStyle = (element, styleName) => {\n var _a;\n if (!isClient || !element || !styleName) return \"\";\n let key = camelize(styleName);\n if (key === \"float\") key = \"cssFloat\";\n try {\n const style = element.style[key];\n if (style) return style;\n const computed = (_a = document.defaultView) == null ? void 0 : _a.getComputedStyle(element, \"\");\n return computed ? computed[key] : \"\";\n } catch (e) {\n return element.style[key];\n }\n};\nconst setStyle = (element, styleName, value) => {\n if (!element || !styleName) return;\n if (isObject(styleName)) {\n entriesOf(styleName).forEach(\n ([prop, value2]) => setStyle(element, prop, value2)\n );\n } else {\n const key = camelize(styleName);\n element.style[key] = value;\n }\n};\nconst removeStyle = (element, style) => {\n if (!element || !style) return;\n if (isObject(style)) {\n keysOf(style).forEach((prop) => removeStyle(element, prop));\n } else {\n setStyle(element, style, \"\");\n }\n};\nfunction addUnit(value, defaultUnit = \"px\") {\n if (!value && value !== 0) return \"\";\n if (isNumber(value) || isStringNumber(value)) {\n return `${value}${defaultUnit}`;\n } else if (isString(value)) {\n return value;\n }\n debugWarn(SCOPE, \"binding value must be a string or number\");\n}\n\nexport { addClass, addUnit, classNameToArray, getStyle, hasClass, removeClass, removeStyle, setStyle };\n//# sourceMappingURL=style.mjs.map\n","<script lang=\"ts\" setup>\r\nimport type { Field } from '@formily/core'\r\nimport type {\r\n FormItemContext,\r\n FormItemValidateState,\r\n FormValidationResult,\r\n TooltipInstance,\r\n} from 'element-plus'\r\nimport type { ICalculatedFormLayoutProps } from 'src/form-layout/types'\r\nimport type { CSSProperties } from 'vue'\r\nimport type { IFormItemProps } from './types'\r\nimport { CircleCheck, CircleClose, InfoFilled, Warning } from '@element-plus/icons-vue'\r\nimport { isArr, isValid } from '@formily/shared'\r\nimport { useField } from '@silver-formily/vue'\r\nimport { useResizeObserver } from '@vueuse/core'\r\nimport { ElIcon, ElTooltip, formItemContextKey, useFormSize, useId, useNamespace } from 'element-plus'\r\nimport { addUnit } from 'element-plus/es/utils/index'\r\nimport { pick } from 'lodash-es'\r\nimport { computed, isVNode, provide, reactive, ref, useSlots, watch } from 'vue'\r\nimport { stylePrefix } from '../__builtins__'\r\nimport { FORM_LAYOUT_PROPS_KEYS, formLayoutShallowContext, useFormLayout } from '../form-layout/utils'\r\n\r\ndefineOptions({\r\n name: 'FFormItem',\r\n})\r\nconst props = withDefaults(defineProps<IFormItemProps>(), {\r\n asterisk: undefined,\r\n colon: undefined,\r\n labelWrap: undefined,\r\n fullness: undefined,\r\n})\r\nconst slots = useSlots()\r\nconst ns = useNamespace('form-item')\r\nconst prefixCls = `${stylePrefix}-form-item`\r\nconst formItemConfig = computed<Partial<ICalculatedFormLayoutProps>>(() =>\r\n Object.fromEntries(\r\n Object.entries(pick(props, FORM_LAYOUT_PROPS_KEYS))\r\n .filter(([_, value]) => isValid(value)),\r\n ),\r\n)\r\nconst formlayoutConfig = useFormLayout()\r\nconst formlayout = computed(() => Object.assign({\r\n colon: true,\r\n feedbackLayout: 'loose',\r\n fullness: false,\r\n labelWrap: false,\r\n}, formlayoutConfig.value, formItemConfig.value))\r\nconst field = useField<Field>()\r\n\r\nconst inheritedSize = useFormSize(undefined, { formItem: false })\r\nconst formItemSize = computed(() => {\r\n if (isValid(formlayout.value.size)) {\r\n return formlayout.value.size\r\n }\r\n return inheritedSize.value\r\n})\r\n\r\nconst labelId = useId().value\r\nconst inputIds = ref<string[]>([])\r\n\r\nconst validateState = ref<FormItemValidateState>('')\r\nconst formItemRef = ref<HTMLDivElement>()\r\nconst labelRef = ref<HTMLElement>()\r\nconst feedbackTooltipRef = ref<TooltipInstance>()\r\ndefineExpose({\r\n feedbackTooltipRef,\r\n})\r\n\r\nconst labelPosition = computed(\r\n () => {\r\n if (formlayout.value.layout === 'vertical' || (isArr(formlayout.value.layout) && formlayout.value.layout.includes('vertical' as any))) {\r\n return 'top'\r\n }\r\n return formlayout.value.labelAlign ?? 'right'\r\n },\r\n)\r\n\r\nconst labelStyle = computed<CSSProperties>(() => {\r\n if (labelPosition.value === 'top') {\r\n return {}\r\n }\r\n\r\n const labelWidth = addUnit(formlayout.value.labelWidth || '')\r\n if (labelWidth)\r\n return { width: labelWidth }\r\n return {}\r\n})\r\n\r\nconst contentStyle = computed<CSSProperties>(() => {\r\n const contentWidth = addUnit(formlayout.value?.wrapperWidth || '')\r\n if (contentWidth)\r\n return { width: contentWidth, flex: 'unset' }\r\n return {}\r\n})\r\n\r\nconst contentWrapperStyle = computed<CSSProperties>(() => {\r\n return {\r\n justifyContent: formlayout.value?.wrapperAlign === 'right' && 'flex-end',\r\n }\r\n})\r\n\r\nconst isRequired = computed(() =>\r\n props.asterisk && field.value?.pattern !== 'readPretty',\r\n)\r\n\r\nconst formItemClasses = computed(() => [\r\n ns.b(),\r\n ns.m(formItemSize.value || 'default'),\r\n ns.is(props.feedbackStatus),\r\n ns.is('validating', validateState.value === 'validating'),\r\n ns.is('success', validateState.value === 'success'),\r\n ns.is('required', isRequired.value || props.asterisk),\r\n ns.is('no-asterisk', formlayout.value?.hideRequiredAsterisk),\r\n ns.is(formlayout.value.feedbackLayout),\r\n formlayout.value?.requireAsteriskPosition === 'right'\r\n ? 'asterisk-right'\r\n : 'asterisk-left',\r\n {\r\n [ns.m('feedback')]: formlayout.value?.statusIcon,\r\n [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\r\n },\r\n])\r\n\r\nconst validateClasses = computed(() => [\r\n `${prefixCls}-feedback`,\r\n ns.is(props.feedbackStatus),\r\n ns.is('loose', formlayout.value.feedbackLayout === 'loose'),\r\n])\r\n\r\nconst hasLabel = computed<boolean>(() => {\r\n return (props.label !== '' && isValid(props.label)) || isValid(slots.label)\r\n})\r\n\r\nconst labelFor = computed<string | undefined>(() => {\r\n return (\r\n props.for || (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\r\n )\r\n})\r\n\r\nconst isGroup = computed<boolean>(() => {\r\n return !labelFor.value && hasLabel.value\r\n})\r\n\r\nasync function validate(): FormValidationResult {\r\n return true\r\n}\r\n/* istanbul ignore next -- @preserve */\r\nconst clearValidate: FormItemContext['clearValidate'] = () => {}\r\n/* istanbul ignore next -- @preserve */\r\nconst resetField: FormItemContext['resetField'] = async () => {}\r\n/* istanbul ignore next -- @preserve */\r\nconst setInitialValue: FormItemContext['setInitialValue'] = () => {}\r\n\r\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\r\n /* istanbul ignore else -- @preserve */\r\n if (!inputIds.value.includes(id)) {\r\n inputIds.value.push(id)\r\n }\r\n}\r\n\r\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\r\n inputIds.value = inputIds.value.filter(listId => listId !== id)\r\n}\r\n\r\nconst isEllipsisActive = ref(false)\r\nuseResizeObserver(labelRef, () => {\r\n isEllipsisActive.value = labelRef.value?.scrollWidth > labelRef.value?.clientWidth\r\n})\r\nconst isEllipsis = computed(() => {\r\n return isEllipsisActive.value && !formlayout.value.labelWrap\r\n})\r\n\r\n// HACK computed无法监听到props.feedbackStatus的变化\r\nconst _validateState = ref<FormItemValidateState>('')\r\nconst context: FormItemContext = reactive({\r\n $el: formItemRef,\r\n labelWidth: formlayout.value?.labelWidth,\r\n size: formItemSize,\r\n validateState: _validateState.value,\r\n labelId,\r\n inputIds,\r\n isGroup,\r\n hasLabel,\r\n addInputId,\r\n removeInputId,\r\n resetField,\r\n clearValidate,\r\n validate,\r\n labelPosition,\r\n inlineMessage: true,\r\n showMessage: true,\r\n fieldValue: field.value?.value,\r\n validateMessage: '',\r\n propString: '',\r\n setInitialValue,\r\n})\r\nwatch(() => props.feedbackStatus, (val) => {\r\n if (val === 'pending') {\r\n context.validateState = 'validating'\r\n return\r\n }\r\n if (val === 'warning') {\r\n context.validateState = ''\r\n return\r\n }\r\n context.validateState = val\r\n}, {\r\n immediate: true,\r\n})\r\n\r\nprovide(formLayoutShallowContext, ref({\r\n ...(isValid(formlayout.value.size) && { size: formlayout.value.size }),\r\n ...(isValid(formlayout.value.colon) && { colon: formlayout.value.colon }),\r\n}))\r\nprovide(formItemContextKey, context)\r\n</script>\r\n\r\n<template>\r\n <div\r\n ref=\"formItemRef\" :class=\"[prefixCls, formlayout.labelWrap && 'is-warp', ...formItemClasses]\"\r\n :role=\"isGroup ? 'group' : undefined\" :aria-labelledby=\"isGroup ? labelId : undefined\"\r\n >\r\n <component\r\n :is=\"labelFor ? 'label' : 'div'\" v-if=\"hasLabel\" :id=\"labelId\" :for=\"labelFor\"\r\n :class=\"[ns.e('label'), isValid(formlayout.labelCol) && `${prefixCls}-col-${formlayout.labelCol}`]\"\r\n :style=\"labelStyle\"\r\n >\r\n <!-- label -->\r\n <template v-if=\"isVNode(props.label)\">\r\n <component :is=\"props.label\" />\r\n </template>\r\n <div v-else :class=\"`${prefixCls}-label__wrapper`\">\r\n <ElTooltip :disabled=\"!isEllipsis && formlayout.tooltipLayout !== 'text'\">\r\n <span\r\n :class=\"{\r\n [`${prefixCls}-label-content`]: true,\r\n ['is-tooltip']: isEllipsis || (props.tooltip && formlayout.tooltipLayout === 'text'),\r\n }\"\r\n >\r\n <span ref=\"labelRef\">{{ props.label }}</span>\r\n </span>\r\n <template #content>\r\n <template v-if=\"isVNode(props.tooltip)\">\r\n <component :is=\"props.tooltip\" />\r\n </template>\r\n <div v-else :style=\"`width: ${labelRef?.clientWidth ?? 0}px;`\">\r\n <template v-if=\"isEllipsis\">\r\n {{ props.label }}\r\n </template>\r\n <template v-if=\"formlayout.tooltipLayout === 'text'\">\r\n {{ props.tooltip }}\r\n </template>\r\n </div>\r\n </template>\r\n </ElTooltip>\r\n <ElTooltip v-if=\"props.tooltip && formlayout.tooltipLayout !== 'text'\" :content=\"props.tooltip\">\r\n <ElIcon :class=\"`${prefixCls}-label-tooltip`\">\r\n <InfoFilled />\r\n </ElIcon>\r\n </ElTooltip>\r\n <span v-if=\"formlayout.colon\" :class=\"`${prefixCls}-colon`\">:</span>\r\n </div>\r\n </component>\r\n <!-- content -->\r\n <div\r\n :class=\"[\r\n `${prefixCls}-content__wrapper`,\r\n isValid(formlayout.wrapperCol) && `${prefixCls}-col-${formlayout.wrapperCol}`,\r\n ]\"\r\n :style=\"contentWrapperStyle\"\r\n >\r\n <template v-if=\"isValid(props.addonBefore)\">\r\n <template v-if=\"isVNode(props.addonBefore)\">\r\n <component :is=\"props.addonBefore\" />\r\n </template>\r\n <div v-else :class=\"`${prefixCls}-addon-before`\">\r\n {{ props.addonBefore }}\r\n </div>\r\n </template>\r\n <div\r\n :class=\"[\r\n ns.e('content'),\r\n formlayout.fullness && 'is-fullness',\r\n ns.is('addon-after', !!props.addonAfter),\r\n ]\" :style=\"contentStyle\"\r\n >\r\n <ElTooltip\r\n v-if=\"formlayout.feedbackLayout === 'popover'\"\r\n ref=\"feedbackTooltipRef\"\r\n :visible=\"!!props.feedbackText\"\r\n effect=\"light\"\r\n :offset=\"6\"\r\n >\r\n <template #default>\r\n <slot />\r\n </template>\r\n <template #content>\r\n <div :class=\"[...validateClasses, ns.is('tooltip')]\">\r\n <ElIcon>\r\n <CircleClose v-if=\"props.feedbackStatus === 'error'\" />\r\n <CircleCheck v-if=\"props.feedbackStatus === 'success'\" />\r\n <Warning v-if=\"props.feedbackStatus === 'warning'\" />\r\n </ElIcon>\r\n {{ props.feedbackText }}\r\n </div>\r\n </template>\r\n </ElTooltip>\r\n <slot v-else />\r\n <TransitionGroup :name=\"`${ns.namespace.value}-zoom-in-top`\">\r\n <div v-if=\"props.feedbackText && formlayout.feedbackLayout !== 'popover'\" :class=\"validateClasses\">\r\n {{ props.feedbackText }}\r\n </div>\r\n <template v-if=\"isValid(props.extra)\">\r\n <template v-if=\"isVNode(props.extra)\">\r\n <component :is=\"props.extra\" />\r\n </template>\r\n <div v-else :class=\"`${prefixCls}-extra`\">\r\n {{ props.extra }}\r\n </div>\r\n </template>\r\n </TransitionGroup>\r\n </div>\r\n <template v-if=\"isValid(props.addonAfter)\">\r\n <template v-if=\"isVNode(props.addonAfter)\">\r\n <component :is=\"props.addonAfter\" />\r\n </template>\r\n <div v-else :class=\"`${prefixCls}-addon-after`\">\r\n {{ props.addonAfter }}\r\n </div>\r\n </template>\r\n </div>\r\n </div>\r\n</template>\r\n","import { isVoidField } from '@formily/core'\r\nimport { connect, mapProps } from '@silver-formily/vue'\r\nimport { composeExport } from '../__builtins__'\r\nimport FormBaseItem from './form-item.vue'\r\nimport { determineFeedbackStatus, getFeedbackMessage } from './utils'\r\nimport './style.scss'\r\n\r\nexport function fieldFeedbackMapper(props, field) {\r\n if (isVoidField(field) || !field) {\r\n return props\r\n }\r\n\r\n const feedbackText = getFeedbackMessage(field)\r\n const feedbackStatus = determineFeedbackStatus(field)\r\n const asterisk = 'asterisk' in props\r\n ? props.asterisk\r\n : field.required && field.pattern !== 'readPretty'\r\n\r\n return {\r\n ...props,\r\n feedbackText,\r\n feedbackStatus,\r\n asterisk,\r\n }\r\n}\r\n\r\nconst Item = connect<typeof FormBaseItem>(\r\n FormBaseItem,\r\n mapProps(\r\n {\r\n validateStatus: true,\r\n title: 'label',\r\n required: true,\r\n description: 'extra',\r\n },\r\n fieldFeedbackMapper,\r\n ),\r\n)\r\n\r\nexport const FormItem = composeExport(Item, {\r\n BaseItem: FormBaseItem,\r\n})\r\n\r\nexport default FormItem\r\n\r\nexport { default as FormBaseItem } from './form-item.vue'\r\n"],"names":["SCOPE","addUnit","value","defaultUnit","isNumber","isStringNumber","isString","debugWarn","props","__props","slots","useSlots","ns","useNamespace","prefixCls","stylePrefix","formItemConfig","computed","pick","FORM_LAYOUT_PROPS_KEYS","_","isValid","formlayoutConfig","useFormLayout","formlayout","field","useField","inheritedSize","useFormSize","formItemSize","labelId","useId","inputIds","ref","validateState","formItemRef","labelRef","feedbackTooltipRef","__expose","labelPosition","isArr","labelStyle","labelWidth","contentStyle","contentWidth","contentWrapperStyle","isRequired","formItemClasses","validateClasses","hasLabel","labelFor","isGroup","validate","clearValidate","resetField","setInitialValue","addInputId","id","removeInputId","listId","isEllipsisActive","useResizeObserver","isEllipsis","_validateState","context","reactive","watch","val","provide","formLayoutShallowContext","formItemContextKey","_createElementBlock","_unref","_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","isVNode","_createVNode","ElTooltip","_normalizeStyle","_Fragment","_createTextVNode","_toDisplayString","_createElementVNode","ElIcon","InfoFilled","_renderSlot","_ctx","CircleClose","CircleCheck","Warning","_TransitionGroup","fieldFeedbackMapper","isVoidField","feedbackText","getFeedbackMessage","feedbackStatus","determineFeedbackStatus","asterisk","Item","connect","FormBaseItem","mapProps","FormItem","composeExport"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineComponent as A, ref as l, computed as d, provide as e, watch as x, reactive as B, toRef as t, createBlock as P, openBlock as g, resolveDynamicComponent as I, mergeProps as b, unref as F, withModifiers as R, withCtx as _, renderSlot as q } from "vue";
|
|
2
2
|
import { isValid as z, isEmpty as D } from "@formily/shared";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { useThrottleFn as T } from "@vueuse/core";
|
|
4
|
+
import { useId as M, formContextKey as S } from "element-plus";
|
|
5
|
+
import { formLayoutIdContext as W, useFormDeepLayout as $, useResponsiveFormLayout as H, filterValidFormLayoutProps as r, formLayoutDeepContext as V, formLayoutShallowContext as E } from "./utils.mjs";
|
|
6
6
|
import { useCleanAttrs as K } from "../__builtins__/shared/utils.mjs";
|
|
7
7
|
import { stylePrefix as j } from "../__builtins__/configs/index.mjs";
|
|
8
8
|
const Y = /* @__PURE__ */ A({
|
|
@@ -31,19 +31,19 @@ const Y = /* @__PURE__ */ A({
|
|
|
31
31
|
requireAsteriskPosition: {}
|
|
32
32
|
},
|
|
33
33
|
setup(c) {
|
|
34
|
-
const o = c, y = `${j}-form`, { props: s } = K(), n = l(), u = o.tag === "form", v =
|
|
35
|
-
u && e(
|
|
36
|
-
const h =
|
|
34
|
+
const o = c, y = `${j}-form`, { props: s } = K(), n = l(), u = o.tag === "form", v = M(), p = d(() => s.value.id ?? `formily-${v.value}`), L = d(() => u ? p.value : s.value.id);
|
|
35
|
+
u && e(W, p);
|
|
36
|
+
const h = $(), { props: a } = H(o, n), C = l({
|
|
37
37
|
...h.value,
|
|
38
38
|
...o.shallow ? {
|
|
39
39
|
size: o.size,
|
|
40
40
|
...z(o.colon) && { colon: o.colon }
|
|
41
41
|
} : r(o)
|
|
42
42
|
});
|
|
43
|
-
e(
|
|
43
|
+
e(V, C);
|
|
44
44
|
const f = l(o.shallow ? r(o) : {});
|
|
45
|
-
e(
|
|
46
|
-
const k =
|
|
45
|
+
e(E, f);
|
|
46
|
+
const k = T(() => {
|
|
47
47
|
if (!D(a.value)) {
|
|
48
48
|
const i = r(a.value);
|
|
49
49
|
f.value = r({ ...o, ...i });
|
|
@@ -59,7 +59,7 @@ const Y = /* @__PURE__ */ A({
|
|
|
59
59
|
hideRequiredAsterisk: t(o, "hideRequiredAsterisk"),
|
|
60
60
|
requireAsteriskPosition: t(o, "requireAsteriskPosition")
|
|
61
61
|
});
|
|
62
|
-
return e(
|
|
62
|
+
return e(S, w), (i, m) => (g(), P(I(o.tag), b({
|
|
63
63
|
id: L.value,
|
|
64
64
|
ref_key: "rootHTMLRef",
|
|
65
65
|
ref: n,
|