@silver-formily/element-plus 2.2.0 → 2.4.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.
Files changed (205) hide show
  1. package/LICENSE +21 -21
  2. package/README.en-US.md +2 -2
  3. package/README.md +2 -2
  4. package/esm/__builtins__/configs/index.mjs.map +1 -1
  5. package/esm/__builtins__/index.mjs +18 -21
  6. package/esm/__builtins__/index.mjs.map +1 -1
  7. package/esm/__builtins__/shared/index.d.ts +0 -1
  8. package/esm/__builtins__/shared/index.mjs +18 -21
  9. package/esm/__builtins__/shared/index.mjs.map +1 -1
  10. package/esm/__builtins__/shared/loading.mjs +5 -5
  11. package/esm/__builtins__/shared/loading.mjs.map +1 -1
  12. package/esm/__builtins__/shared/simple-version-compare.mjs.map +1 -1
  13. package/esm/__builtins__/shared/transform-component.mjs.map +1 -1
  14. package/esm/__builtins__/shared/use-enter-submit.d.ts +9 -0
  15. package/esm/__builtins__/shared/use-enter-submit.mjs +25 -0
  16. package/esm/__builtins__/shared/use-enter-submit.mjs.map +1 -0
  17. package/esm/__builtins__/shared/utils.d.ts +1 -0
  18. package/esm/__builtins__/shared/utils.mjs +23 -17
  19. package/esm/__builtins__/shared/utils.mjs.map +1 -1
  20. package/esm/array-base/index.mjs +56 -52
  21. package/esm/array-base/index.mjs.map +1 -1
  22. package/esm/array-base/symbols.mjs.map +1 -1
  23. package/esm/array-base/utils.d.ts +0 -1
  24. package/esm/array-base/utils.mjs +45 -46
  25. package/esm/array-base/utils.mjs.map +1 -1
  26. package/esm/array-cards/index.mjs +36 -33
  27. package/esm/array-cards/index.mjs.map +1 -1
  28. package/esm/array-collapse/index.mjs +39 -37
  29. package/esm/array-collapse/index.mjs.map +1 -1
  30. package/esm/array-collapse/utils.mjs +9 -2
  31. package/esm/array-collapse/utils.mjs.map +1 -1
  32. package/esm/array-items/index.mjs +38 -34
  33. package/esm/array-items/index.mjs.map +1 -1
  34. package/esm/array-list-tabs/index.mjs +38 -36
  35. package/esm/array-list-tabs/index.mjs.map +1 -1
  36. package/esm/array-list-tabs/utils.mjs +12 -5
  37. package/esm/array-list-tabs/utils.mjs.map +1 -1
  38. package/esm/array-table/index.mjs +63 -60
  39. package/esm/array-table/index.mjs.map +1 -1
  40. package/esm/array-table/utils.mjs +18 -11
  41. package/esm/array-table/utils.mjs.map +1 -1
  42. package/esm/array-tabs/index.mjs +28 -25
  43. package/esm/array-tabs/index.mjs.map +1 -1
  44. package/esm/autocomplete/autocomplete.d.ts +1222 -0
  45. package/esm/autocomplete/index.d.ts +639 -0
  46. package/esm/autocomplete/index.mjs +116 -0
  47. package/esm/autocomplete/index.mjs.map +1 -0
  48. package/esm/cascader/index.mjs +22 -18
  49. package/esm/cascader/index.mjs.map +1 -1
  50. package/esm/checkbox/index.d.ts +42 -42
  51. package/esm/checkbox/index.mjs +20 -16
  52. package/esm/checkbox/index.mjs.map +1 -1
  53. package/esm/color-picker/index.d.ts +210 -0
  54. package/esm/color-picker/index.mjs +17 -0
  55. package/esm/color-picker/index.mjs.map +1 -0
  56. package/esm/color-picker-panel/index.d.ts +129 -0
  57. package/esm/color-picker-panel/index.mjs +25 -0
  58. package/esm/color-picker-panel/index.mjs.map +1 -0
  59. package/esm/date-picker/index.mjs +18 -37
  60. package/esm/date-picker/index.mjs.map +1 -1
  61. package/esm/date-picker/utils.d.ts +4 -0
  62. package/esm/date-picker/utils.mjs +27 -0
  63. package/esm/date-picker/utils.mjs.map +1 -0
  64. package/esm/date-picker-panel/index.d.ts +143 -0
  65. package/esm/date-picker-panel/index.mjs +30 -0
  66. package/esm/date-picker-panel/index.mjs.map +1 -0
  67. package/esm/editable/editable.d.ts +2 -0
  68. package/esm/editable/index.d.ts +1 -0
  69. package/esm/editable/index.mjs +71 -66
  70. package/esm/editable/index.mjs.map +1 -1
  71. package/esm/env.d.mjs +2 -0
  72. package/esm/env.d.mjs.map +1 -0
  73. package/esm/form/form.mjs +6 -6
  74. package/esm/form/form.mjs.map +1 -1
  75. package/esm/form-button-group/form-button-group.d.ts +10 -1
  76. package/esm/form-button-group/index.d.ts +18 -3
  77. package/esm/form-button-group/index.mjs +47 -28
  78. package/esm/form-button-group/index.mjs.map +1 -1
  79. package/esm/form-button-group/utils.mjs +9 -2
  80. package/esm/form-button-group/utils.mjs.map +1 -1
  81. package/esm/form-collapse/index.mjs +21 -18
  82. package/esm/form-collapse/index.mjs.map +1 -1
  83. package/esm/form-collapse/utils.mjs.map +1 -1
  84. package/esm/form-dialog/dialog-content.d.ts +789 -3
  85. package/esm/form-dialog/index.mjs +97 -86
  86. package/esm/form-dialog/index.mjs.map +1 -1
  87. package/esm/form-dialog/types.d.ts +1 -0
  88. package/esm/form-drawer/drawer-content.d.ts +919 -3
  89. package/esm/form-drawer/index.mjs +92 -82
  90. package/esm/form-drawer/index.mjs.map +1 -1
  91. package/esm/form-drawer/types.d.ts +1 -0
  92. package/esm/form-grid/hooks.mjs.map +1 -1
  93. package/esm/form-grid/index.mjs +26 -22
  94. package/esm/form-grid/index.mjs.map +1 -1
  95. package/esm/form-item/index.d.ts +1 -0
  96. package/esm/form-item/index.mjs +102 -99
  97. package/esm/form-item/index.mjs.map +1 -1
  98. package/esm/form-item/types.d.ts +4 -0
  99. package/esm/form-item/utils.mjs.map +1 -1
  100. package/esm/form-layout/form-layout.mjs +18 -14
  101. package/esm/form-layout/form-layout.mjs.map +1 -1
  102. package/esm/form-layout/utils.mjs +23 -23
  103. package/esm/form-layout/utils.mjs.map +1 -1
  104. package/esm/form-step/index.mjs +30 -27
  105. package/esm/form-step/index.mjs.map +1 -1
  106. package/esm/form-step/utils.mjs.map +1 -1
  107. package/esm/form-tab/hooks.mjs.map +1 -1
  108. package/esm/form-tab/index.mjs +24 -22
  109. package/esm/form-tab/index.mjs.map +1 -1
  110. package/esm/form-tab/utils.mjs.map +1 -1
  111. package/esm/index.d.ts +8 -0
  112. package/esm/index.mjs +90 -74
  113. package/esm/index.mjs.map +1 -1
  114. package/esm/input/index.mjs +30 -26
  115. package/esm/input/index.mjs.map +1 -1
  116. package/esm/input-number/index.d.ts +21 -21
  117. package/esm/input-number/index.mjs +11 -8
  118. package/esm/input-number/index.mjs.map +1 -1
  119. package/esm/input-tag/index.d.ts +32 -0
  120. package/esm/input-tag/index.mjs +50 -0
  121. package/esm/input-tag/index.mjs.map +1 -0
  122. package/esm/input-tag/input-tag.d.ts +32 -0
  123. package/esm/mention/index.d.ts +50 -0
  124. package/esm/mention/index.mjs +97 -0
  125. package/esm/mention/index.mjs.map +1 -0
  126. package/esm/mention/mention.d.ts +51 -0
  127. package/esm/pagination/components/jumper.mjs.map +1 -1
  128. package/esm/pagination/components/next.mjs.map +1 -1
  129. package/esm/pagination/components/pager.mjs.map +1 -1
  130. package/esm/pagination/components/prev.mjs.map +1 -1
  131. package/esm/pagination/components/total.mjs.map +1 -1
  132. package/esm/pagination/pagination.mjs.map +1 -1
  133. package/esm/password/index.mjs.map +1 -1
  134. package/esm/preview-text/color-picker.d.ts +5 -0
  135. package/esm/preview-text/index.d.ts +5 -0
  136. package/esm/preview-text/index.mjs +184 -145
  137. package/esm/preview-text/index.mjs.map +1 -1
  138. package/esm/preview-text/utils.mjs.map +1 -1
  139. package/esm/query-form/default-components.d.ts +5 -0
  140. package/esm/query-form/default-components.mjs +47 -0
  141. package/esm/query-form/default-components.mjs.map +1 -0
  142. package/esm/query-form/hooks.d.ts +25 -0
  143. package/esm/query-form/hooks.mjs +29 -0
  144. package/esm/query-form/hooks.mjs.map +1 -0
  145. package/esm/query-form/index.d.ts +117 -0
  146. package/esm/query-form/index.mjs +337 -0
  147. package/esm/query-form/index.mjs.map +1 -0
  148. package/esm/query-form/query-form-light.d.ts +27 -0
  149. package/esm/query-form/query-form.d.ts +52 -0
  150. package/esm/query-form/types.d.ts +44 -0
  151. package/esm/query-form/types.mjs +2 -0
  152. package/esm/query-form/types.mjs.map +1 -0
  153. package/esm/query-form-item/index.d.ts +151 -0
  154. package/esm/query-form-item/index.mjs +188 -0
  155. package/esm/query-form-item/index.mjs.map +1 -0
  156. package/esm/query-form-item/query-form-item.d.ts +96 -0
  157. package/esm/query-form-item/types.d.ts +46 -0
  158. package/esm/query-form-item/types.mjs +2 -0
  159. package/esm/query-form-item/types.mjs.map +1 -0
  160. package/esm/radio/index.d.ts +36 -36
  161. package/esm/radio/index.mjs +29 -25
  162. package/esm/radio/index.mjs.map +1 -1
  163. package/esm/rate/index.mjs +13 -10
  164. package/esm/rate/index.mjs.map +1 -1
  165. package/esm/reset/index.mjs.map +1 -1
  166. package/esm/segmented/index.mjs +16 -12
  167. package/esm/segmented/index.mjs.map +1 -1
  168. package/esm/select/index.mjs +26 -22
  169. package/esm/select/index.mjs.map +1 -1
  170. package/esm/select-table/index.mjs +36 -33
  171. package/esm/select-table/index.mjs.map +1 -1
  172. package/esm/shared/overlay-elements.d.ts +6 -0
  173. package/esm/shared/overlay-elements.mjs +19 -0
  174. package/esm/shared/overlay-elements.mjs.map +1 -0
  175. package/esm/slider/index.mjs +13 -10
  176. package/esm/slider/index.mjs.map +1 -1
  177. package/esm/styles/form-button-group/index.css +1 -1
  178. package/esm/styles/form-item/index.css +1 -1
  179. package/esm/styles/preview-text/index.css +1 -1
  180. package/esm/styles/query-form/index.css +1 -0
  181. package/esm/styles/query-form-item/index.css +1 -0
  182. package/esm/submit/index.mjs.map +1 -1
  183. package/esm/switch/index.d.ts +12 -12
  184. package/esm/switch/index.mjs.map +1 -1
  185. package/esm/time-picker/index.mjs +9 -6
  186. package/esm/time-picker/index.mjs.map +1 -1
  187. package/esm/time-select/index.mjs +9 -6
  188. package/esm/time-select/index.mjs.map +1 -1
  189. package/esm/transfer/index.mjs.map +1 -1
  190. package/esm/tree/index.mjs +33 -29
  191. package/esm/tree/index.mjs.map +1 -1
  192. package/esm/tree/utils.mjs.map +1 -1
  193. package/esm/tree-select/index.mjs +18 -14
  194. package/esm/tree-select/index.mjs.map +1 -1
  195. package/esm/upload/index.d.ts +1 -1
  196. package/esm/upload/index.mjs +10 -7
  197. package/esm/upload/index.mjs.map +1 -1
  198. package/esm/upload/upload.d.ts +2 -2
  199. package/esm/vendor/lodash.mjs +751 -663
  200. package/esm/vendor/lodash.mjs.map +1 -1
  201. package/esm/vendor/sizes.mjs.map +1 -1
  202. package/package.json +115 -113
  203. package/esm/__builtins__/shared/hooks.d.ts +0 -7
  204. package/esm/__builtins__/shared/hooks.mjs +0 -59
  205. package/esm/__builtins__/shared/hooks.mjs.map +0 -1
@@ -1,16 +1,18 @@
1
- import { createForm as T } from "@formily/core";
2
- import { toJS as V } from "@formily/reactive";
3
- import { isFn as u, isArr as $, isStr as h, pascalCase as j, applyMiddleware as g, isValid as q } from "@formily/shared";
4
- import { observer as z } from "@silver-formily/reactive-vue";
5
- import { defineComponent as N, useSlots as O, createBlock as A, openBlock as k, unref as n, mergeProps as C, createSlots as I, withCtx as f, createElementVNode as J, normalizeClass as R, renderSlot as w, createElementBlock as U, Fragment as G, createVNode as b, createTextVNode as x, toDisplayString as M, normalizeProps as H, guardReactiveProps as K, ref as L, h as D, createApp as Q } from "vue";
6
- import { FormProvider as W } from "@silver-formily/vue";
7
- import { ElDialog as X, ElButton as E, ElConfigProvider as Y } from "element-plus";
8
- import { loadElConfigProvider as Z } from "../__builtins__/shared/load-config-provider.mjs";
9
- import { o as _, c as F } from "../vendor/lodash.mjs";
10
- import { useDebonceSubmitting as ee, loading as S, getTransitionDuration as oe } from "../__builtins__/shared/loading.mjs";
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 g, 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 i, mergeProps as C, createSlots as J, withCtx as c, createElementVNode as U, normalizeClass as G, renderSlot as w, 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 { ElDialog as X, ElButton as M, ElConfigProvider as Y } from "element-plus";
7
+ import { useDebonceSubmitting as Z, loading as F, getTransitionDuration as _ } from "../__builtins__/shared/loading.mjs";
8
+ import { FormProvider as ee } from "@silver-formily/vue";
9
+ import { isVueOptions as oe } from "../__builtins__/shared/utils.mjs";
11
10
  import { stylePrefix as re } from "../__builtins__/configs/index.mjs";
12
- import { isVueOptions as te } from "../__builtins__/shared/utils.mjs";
13
- const ne = /* @__PURE__ */ N({
11
+ import { loadElConfigProvider as te } from "../__builtins__/shared/load-config-provider.mjs";
12
+ import { useEnterSubmit as ne } from "../__builtins__/shared/use-enter-submit.mjs";
13
+ import { resolveDialogElement as ie } from "../shared/overlay-elements.mjs";
14
+ import { o as le, c as B } from "../vendor/lodash.mjs";
15
+ const se = /* @__PURE__ */ R({
14
16
  name: "FormDialogContent",
15
17
  __name: "dialog-content",
16
18
  props: {
@@ -36,28 +38,37 @@ const ne = /* @__PURE__ */ N({
36
38
  }
37
39
  },
38
40
  setup(r) {
39
- const l = r, a = O(), e = `${re}-form-dialog`, c = Z(), s = _(l.dialogProps, [
41
+ const t = r, f = A(), e = `${re}-form-dialog`, u = te(), m = le(t.dialogProps, [
40
42
  "modelValue",
41
43
  "onUpdate:modelValue",
42
- "beforeClose"
43
- ]), { internalSubmitting: p } = ee(l.form);
44
- return (i, o) => (k(), A(n(X), C({
44
+ "beforeClose",
45
+ "enterSubmit"
46
+ ]), { internalSubmitting: d } = Z(t.form), s = T(null), o = k(() => t.dialogProps.enterSubmit !== !1);
47
+ return ne({
48
+ visible: k(() => t.visible),
49
+ resolve: () => t.resolve(),
50
+ submitting: d,
51
+ getContainer: () => ie(s.value),
52
+ enabled: o
53
+ }), (n, l) => (h(), I(i(X), C({
54
+ ref_key: "dialogRef",
55
+ ref: s,
45
56
  class: e,
46
- "z-index": n(c).zIndex
47
- }, n(s), {
57
+ "z-index": i(u).zIndex
58
+ }, i(m), {
48
59
  "model-value": r.visible,
49
- "before-close": (t) => {
50
- r.reject(), n(u)(l.dialogProps.beforeClose) ? l.dialogProps.beforeClose(t) : t();
60
+ "before-close": (a) => {
61
+ r.reject(), i(p)(t.dialogProps.beforeClose) ? t.dialogProps.beforeClose(a) : a();
51
62
  }
52
- }), I({
53
- default: f(() => [
54
- b(n(W), {
55
- form: l.form
63
+ }), J({
64
+ default: c(() => [
65
+ b(i(ee), {
66
+ form: t.form
56
67
  }, {
57
- default: f(() => [
58
- b(n(Y), H(K(n(c))), {
59
- default: f(() => [
60
- w(i.$slots, "default", {
68
+ default: c(() => [
69
+ b(i(Y), L(Q(i(u))), {
70
+ default: c(() => [
71
+ w(n.$slots, "default", {
61
72
  resolve: r.resolve,
62
73
  reject: r.reject,
63
74
  form: r.form
@@ -69,30 +80,30 @@ const ne = /* @__PURE__ */ N({
69
80
  _: 3
70
81
  }, 8, ["form"])
71
82
  ]),
72
- footer: f(() => [
73
- J("div", {
74
- class: R(`${e}-footer`)
83
+ footer: c(() => [
84
+ U("div", {
85
+ class: G(`${e}-footer`)
75
86
  }, [
76
- a.footer ? w(i.$slots, "footer", {
87
+ f.footer ? w(n.$slots, "footer", {
77
88
  key: 0,
78
89
  resolve: r.resolve,
79
90
  reject: r.reject,
80
91
  form: r.form
81
- }) : (k(), U(G, { key: 1 }, [
82
- b(n(E), C(n(s).cancelButtonProps, {
83
- onClick: o[0] || (o[0] = (t) => l.reject())
92
+ }) : (h(), H(K, { key: 1 }, [
93
+ b(i(M), C(i(m).cancelButtonProps, {
94
+ onClick: l[0] || (l[0] = (a) => t.reject())
84
95
  }), {
85
- default: f(() => [
86
- x(M(n(s).cancelText || "取消"), 1)
96
+ default: c(() => [
97
+ j(x(i(m).cancelText || "取消"), 1)
87
98
  ]),
88
99
  _: 1
89
100
  }, 16),
90
- b(n(E), C({ type: "primary" }, n(s).okButtonProps, {
91
- loading: n(p),
92
- onClick: o[1] || (o[1] = (t) => l.resolve())
101
+ b(i(M), C({ type: "primary" }, i(m).okButtonProps, {
102
+ loading: i(d),
103
+ onClick: l[1] || (l[1] = (a) => t.resolve())
93
104
  }), {
94
- default: f(() => [
95
- x(M(n(s).okText || "确定"), 1)
105
+ default: c(() => [
106
+ j(x(i(m).okText || "确定"), 1)
96
107
  ]),
97
108
  _: 1
98
109
  }, 16, ["loading"])
@@ -101,10 +112,10 @@ const ne = /* @__PURE__ */ N({
101
112
  ]),
102
113
  _: 2
103
114
  }, [
104
- a.header ? {
115
+ f.header ? {
105
116
  name: "header",
106
- fn: f(() => [
107
- w(i.$slots, "header", {
117
+ fn: c(() => [
118
+ w(n.$slots, "header", {
108
119
  resolve: r.resolve,
109
120
  reject: r.reject,
110
121
  form: r.form
@@ -115,7 +126,7 @@ const ne = /* @__PURE__ */ N({
115
126
  ]), 1040, ["z-index", "model-value", "before-close"]));
116
127
  }
117
128
  });
118
- function be(r, l, a) {
129
+ function Ee(r, t, f) {
119
130
  const e = {
120
131
  root: document.createElement("div"),
121
132
  form: null,
@@ -126,83 +137,83 @@ function be(r, l, a) {
126
137
  confirmMiddlewares: [],
127
138
  cancelMiddlewares: []
128
139
  };
129
- if ($(a))
130
- for (const o of a) {
140
+ if (E(f))
141
+ for (const o of f) {
131
142
  /* istanbul ignore if -- @preserve */
132
- if (!h(o))
143
+ if (!S(o))
133
144
  return;
134
- const t = F(o);
145
+ const n = B(o);
135
146
  /* istanbul ignore if -- @preserve */
136
- if (["open", "cancel", "confirm"].includes(t))
137
- throw new Error(`for${j(t)} is presved`);
138
- e[`${t}Middlewares`] = [];
147
+ if (["open", "cancel", "confirm"].includes(n))
148
+ throw new Error(`for${$(n)} is presved`);
149
+ e[`${n}Middlewares`] = [];
139
150
  }
140
151
  document.body.append(e.root);
141
- const c = h(r) ? { title: r } : r;
142
- function s(o, t, m) {
143
- const d = te(l) ? { default: () => D(l) } : l;
152
+ const u = S(r) ? { title: r } : r;
153
+ function m(o, n, l) {
154
+ const a = oe(t) ? { default: () => D(t) } : t;
144
155
  if (!e.instance) {
145
- const v = z({
146
- setup(P, { expose: B }) {
147
- const y = L(!1);
148
- return B({
156
+ const v = O({
157
+ setup(P, { expose: V }) {
158
+ const y = T(!1);
159
+ return V({
149
160
  visible: y
150
- }), () => D(ne, {
151
- dialogProps: c,
161
+ }), () => D(se, {
162
+ dialogProps: u,
152
163
  form: e.form,
153
- resolve: t,
154
- reject: m,
164
+ resolve: n,
165
+ reject: l,
155
166
  visible: y.value
156
- }, d);
167
+ }, a);
157
168
  }
158
169
  });
159
- e.app = Q(v), e.instance = e.app.mount(e.root);
170
+ e.app = W(v), e.instance = e.app.mount(e.root);
160
171
  }
161
172
  e.instance.visible = o;
162
173
  }
163
- function p() {
164
- const o = oe();
174
+ function d() {
175
+ const o = _();
165
176
  setTimeout(() => {
166
177
  e.app?.unmount?.(), e.app = null, e.instance = null, e.root?.remove(), e.root = void 0;
167
178
  }, o);
168
179
  }
169
- const i = {
170
- forOpen: (o) => (u(o) && e.openMiddlewares.push(o), i),
171
- forConfirm: (o) => (u(o) && e.confirmMiddlewares.push(o), i),
172
- forCancel: (o) => (u(o) && e.cancelMiddlewares.push(o), i),
180
+ const s = {
181
+ forOpen: (o) => (p(o) && e.openMiddlewares.push(o), s),
182
+ forConfirm: (o) => (p(o) && e.confirmMiddlewares.push(o), s),
183
+ forCancel: (o) => (p(o) && e.cancelMiddlewares.push(o), s),
173
184
  open: (o) => {
174
185
  /* istanbul ignore if -- @preserve */
175
- return e.promise || (e.promise = new Promise((t, m) => {
176
- S(c.loadingText, () => g(o, e.openMiddlewares)).then((d) => {
177
- e.form = e.form || T(d), s(!0, (v) => {
186
+ return e.promise || (e.promise = new Promise((n, l) => {
187
+ F(u.loadingText, () => g(o, e.openMiddlewares)).then((a) => {
188
+ e.form = e.form || q(a), m(!0, (v) => {
178
189
  e.form.submit(async () => {
179
- await (q(v) ? g(e.form, e[`${v}Middlewares`]) : g(e.form, e.confirmMiddlewares)), t(V(e.form.values)), i.close(), p();
190
+ await (N(v) ? g(e.form, e[`${v}Middlewares`]) : g(e.form, e.confirmMiddlewares)), n(z(e.form.values)), s.close(), d();
180
191
  }).catch((P) => {
181
192
  console.warn(P);
182
193
  });
183
194
  }, async () => {
184
- await S(c.loadingText, () => g(e.form, e.cancelMiddlewares)), i.close(), p(), m(new Error("cancel"));
195
+ await F(u.loadingText, () => g(e.form, e.cancelMiddlewares)), s.close(), d(), l(new Error("cancel"));
185
196
  });
186
197
  }).catch(
187
198
  /* istanbul ignore next -- @preserve */
188
- (d) => m(d)
199
+ (a) => l(a)
189
200
  );
190
201
  })), e.promise;
191
202
  },
192
203
  close: () => {
193
204
  /* istanbul ignore if -- @preserve */
194
- e.root && s(!1);
205
+ e.root && m(!1);
195
206
  }
196
207
  };
197
- if ($(a))
198
- for (const o of a) {
199
- const t = F(o);
200
- i[`for${j(t)}`] = (m) => (u(m) && e[`${t}Middlewares`].push(m), i);
208
+ if (E(f))
209
+ for (const o of f) {
210
+ const n = B(o);
211
+ s[`for${$(n)}`] = (l) => (p(l) && e[`${n}Middlewares`].push(l), s);
201
212
  }
202
- return i;
213
+ return s;
203
214
  }
204
215
  export {
205
- be as FormDialog,
206
- be as default
216
+ Ee as FormDialog,
217
+ Ee as default
207
218
  };
208
219
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/form-dialog/dialog-content.vue","../../src/form-dialog/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { Form } from '@formily/core'\r\nimport type { PropType } from 'vue'\r\nimport type { FormDialogSlots, IFormDialogProps } from './types'\r\nimport { isFn } from '@formily/shared'\r\nimport { FormProvider } from '@silver-formily/vue'\r\nimport { ElButton, ElConfigProvider, ElDialog } from 'element-plus'\r\nimport { omit } from 'lodash-es'\r\nimport { loadElConfigProvider, stylePrefix, useDebonceSubmitting } from '../__builtins__'\r\n\r\ndefineOptions({\r\n name: 'FormDialogContent',\r\n})\r\nconst props = defineProps({\r\n dialogProps: {\r\n type: Object as PropType<IFormDialogProps>,\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<() => 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\n\r\nconst slots = defineSlots<FormDialogSlots>()\r\nconst prefixCls = `${stylePrefix}-form-dialog`\r\nconst elConfig = loadElConfigProvider()\r\nconst _dialogProps = omit(props.dialogProps, [\r\n 'modelValue',\r\n 'onUpdate:modelValue',\r\n 'beforeClose',\r\n])\r\nconst { internalSubmitting } = useDebonceSubmitting(props.form)\r\n</script>\r\n\r\n<template>\r\n <ElDialog\r\n :class=\"prefixCls\"\r\n :z-index=\"elConfig.zIndex\"\r\n v-bind=\"_dialogProps\"\r\n :model-value=\"visible\"\r\n :before-close=\"(done) => {\r\n reject()\r\n if (isFn(props.dialogProps.beforeClose)) {\r\n props.dialogProps.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=\"props.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=\"_dialogProps.cancelButtonProps\"\r\n @click=\"props.reject()\"\r\n >\r\n {{ _dialogProps.cancelText || '取消' }}\r\n </ElButton>\r\n <ElButton\r\n type=\"primary\"\r\n v-bind=\"_dialogProps.okButtonProps\"\r\n :loading=\"internalSubmitting\"\r\n @click=\"props.resolve()\"\r\n >\r\n {{ _dialogProps.okText || '确定' }}\r\n </ElButton>\r\n </template>\r\n </div>\r\n </template>\r\n </ElDialog>\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 { FormDialogSlotContent, IFormDialog, IFormDialogProps } 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 DialogContent from './dialog-content.vue'\r\n\r\nexport function FormDialog<T extends object = any>(\r\n title: IFormDialogProps | string,\r\n content?: Component | FormDialogSlotContent,\r\n dynamicMiddlewareNames?: string[],\r\n): IFormDialog<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 IFormDialogProps\r\n\r\n function render(visible: boolean, resolve?: (type?: string) => any, reject?: () => any) {\r\n const _content = isVueOptions(content)\r\n ? { default: () => h(content) }\r\n : 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(DialogContent, {\r\n dialogProps: 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 disposeDialog() {\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 formDialog = {\r\n forOpen: (middleware: IMiddleware<IFormProps<T>>) => {\r\n isFn(middleware) && env.openMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n forConfirm: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n forCancel: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\r\n return formDialog\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 formDialog.close()\r\n disposeDialog()\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 formDialog.close()\r\n disposeDialog()\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 if (isArr(dynamicMiddlewareNames)) {\r\n for (const middlewareName of dynamicMiddlewareNames) {\r\n const _middlewareName = camelCase(middlewareName)\r\n formDialog[`for${pascalCase(_middlewareName)}`] = (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env[`${_middlewareName}Middlewares`].push(middleware)\r\n return formDialog\r\n }\r\n }\r\n }\r\n\r\n return formDialog as IFormDialog<T>\r\n}\r\n\r\nexport default FormDialog\r\n"],"names":["props","__props","slots","_useSlots","prefixCls","stylePrefix","elConfig","loadElConfigProvider","_dialogProps","omit","internalSubmitting","useDebonceSubmitting","_openBlock","_createBlock","_unref","_mergeProps","done","isFn","_createVNode","FormProvider","_renderSlot","_ctx","_createElementVNode","_createElementBlock","_Fragment","ElButton","_cache","$event","_createTextVNode","_toDisplayString","FormDialog","title","content","dynamicMiddlewareNames","env","isArr","middlewareName","isStr","_middlewareName","camelCase","pascalCase","render","visible","resolve","reject","_content","isVueOptions","h","ComponentConstructor","observer","_","expose","ref","DialogContent","createApp","disposeDialog","animationDuration","getTransitionDuration","formDialog","middleware","payload","res","rej","loading","applyMiddleware","resPayload","createForm","type","isValid","toJS","error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,UAAMA,IAAQC,GAuBRC,IAAQC,EAAA,GACRC,IAAY,GAAGC,EAAW,gBAC1BC,IAAWC,EAAA,GACXC,IAAeC,EAAKT,EAAM,aAAa;AAAA,MAC3C;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD,GACK,EAAE,oBAAAU,EAAA,IAAuBC,GAAqBX,EAAM,IAAI;sBAI5DY,KAAAC,EAkDWC,MAlDXC,EAkDW;AAAA,MAjDR,OAAOX;AAAA,MACP,WAASU,EAAAR,CAAA,EAAS;AAAA,IAAA,GACXQ,EAAAN,CAAA,GAAY;AAAA,MACnB,eAAaP,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;AAAA,UAJA,MAAMnB,EAAM;AAAA,QAAA;qBACzB,MAEmB;AAAA,YAFnBkB,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,EAICN,CAAA,EAJY,mBAAiB;AAAA,cACrC,SAAKkB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAE3B,EAAM,OAAA;AAAA,YAAM;yBAEpB,MAAqC;AAAA,gBAAlC4B,EAAAC,EAAAf,EAAAN,CAAA,EAAa,cAAU,IAAA,GAAA,CAAA;AAAA,cAAA;;;YAE5BU,EAOWJ,EAAAW,CAAA,GAPXV,EAOW,EANT,MAAK,aACGD,EAAAN,CAAA,EAAa,eAAa;AAAA,cACjC,SAASM,EAAAJ,CAAA;AAAA,cACT,SAAKgB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAE3B,EAAM,QAAA;AAAA,YAAO;yBAErB,MAAiC;AAAA,gBAA9B4B,EAAAC,EAAAf,EAAAN,CAAA,EAAa,UAAM,IAAA,GAAA,CAAA;AAAA,cAAA;;;;;;;;MA9BdN,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;;;;;;;ACnD9D,SAAS6B,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,QAAMlC,IAASqC,EAAMN,CAAK,IAAK,EAAE,OAAAA,MAAWA;AAE5C,WAASU,EAAOC,GAAkBC,GAAkCC,GAAoB;AACtF,UAAMC,IAAWC,GAAad,CAAO,IACjC,EAAE,SAAS,MAAMe,EAAEf,CAAO,EAAA,IAC1BA;AACJ,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,aAAarD;AAAA,YACb,MAAMkC,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,OACR1C,EAAK0C,CAAU,KAAKzB,EAAI,gBAAgB,KAAKyB,CAAU,GAChDD;AAAA,IAET,YAAY,CAACC,OACX1C,EAAK0C,CAAU,KAAKzB,EAAI,mBAAmB,KAAKyB,CAAU,GACnDD;AAAA,IAET,WAAW,CAACC,OACV1C,EAAK0C,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,EAAQ/D,EAAM,aAAa,MAAMgE,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,EAAQ/D,EAAM,aAAa,MAC/BgE,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;AAEF,MAAIN,EAAMF,CAAsB;AAC9B,eAAWG,KAAkBH,GAAwB;AACnD,YAAMK,IAAkBC,EAAUH,CAAc;AAChD,MAAAsB,EAAW,MAAMlB,EAAWF,CAAe,CAAC,EAAE,IAAI,CAACqB,OACjD1C,EAAK0C,CAAU,KAAKzB,EAAI,GAAGI,CAAe,aAAa,EAAE,KAAKqB,CAAU,GACjED;AAAA,IAEX;AAGF,SAAOA;AACT;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/form-dialog/dialog-content.vue","../../src/form-dialog/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Form } from '@formily/core'\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { FormDialogSlots, IFormDialogProps } from './types'\nimport { isFn } from '@formily/shared'\nimport { FormProvider } from '@silver-formily/vue'\nimport { ElButton, ElConfigProvider, ElDialog } from 'element-plus'\nimport { omit } from 'lodash-es'\nimport { computed, ref } from 'vue'\nimport { loadElConfigProvider, stylePrefix, useDebonceSubmitting } from '../__builtins__'\nimport { useEnterSubmit } from '../__builtins__/shared/use-enter-submit'\nimport { resolveDialogElement } from '../shared/overlay-elements'\n\ndefineOptions({\n name: 'FormDialogContent',\n})\nconst props = defineProps({\n dialogProps: {\n type: Object as PropType<IFormDialogProps>,\n required: true,\n },\n visible: {\n type: Boolean,\n required: true,\n },\n form: {\n type: Object as PropType<Form>,\n required: true,\n },\n resolve: {\n type: Function as PropType<() => void>,\n required: true,\n },\n reject: {\n type: Function as PropType<() => void>,\n required: true,\n },\n})\n\nconst slots = defineSlots<FormDialogSlots>()\nconst prefixCls = `${stylePrefix}-form-dialog`\nconst elConfig = loadElConfigProvider()\nconst _dialogProps = omit(props.dialogProps, [\n 'modelValue',\n 'onUpdate:modelValue',\n 'beforeClose',\n 'enterSubmit',\n])\nconst { internalSubmitting } = useDebonceSubmitting(props.form)\nconst dialogRef = ref<ComponentPublicInstance | null>(null)\nconst enableEnterSubmit = computed(() => props.dialogProps.enterSubmit !== false)\n\nuseEnterSubmit({\n visible: computed(() => props.visible),\n resolve: () => props.resolve(),\n submitting: internalSubmitting,\n getContainer: () => resolveDialogElement(dialogRef.value),\n enabled: enableEnterSubmit,\n})\n</script>\n\n<template>\n <ElDialog\n ref=\"dialogRef\"\n :class=\"prefixCls\"\n :z-index=\"elConfig.zIndex\"\n v-bind=\"_dialogProps\"\n :model-value=\"visible\"\n :before-close=\"(done) => {\n reject()\n if (isFn(props.dialogProps.beforeClose)) {\n props.dialogProps.beforeClose(done)\n }\n else {\n done()\n }\n }\"\n >\n <template v-if=\"slots.header\" #header>\n <slot name=\"header\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\n </template>\n\n <template #default>\n <FormProvider :form=\"props.form\">\n <ElConfigProvider v-bind=\"elConfig\">\n <slot :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\n </ElConfigProvider>\n </FormProvider>\n </template>\n\n <template #footer>\n <div :class=\"`${prefixCls}-footer`\">\n <template v-if=\"slots.footer\">\n <slot name=\"footer\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\n </template>\n <template v-else>\n <ElButton\n v-bind=\"_dialogProps.cancelButtonProps\"\n @click=\"props.reject()\"\n >\n {{ _dialogProps.cancelText || '取消' }}\n </ElButton>\n <ElButton\n type=\"primary\"\n v-bind=\"_dialogProps.okButtonProps\"\n :loading=\"internalSubmitting\"\n @click=\"props.resolve()\"\n >\n {{ _dialogProps.okText || '确定' }}\n </ElButton>\n </template>\n </div>\n </template>\n </ElDialog>\n</template>\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 { FormDialogSlotContent, IFormDialog, IFormDialogProps } 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 DialogContent from './dialog-content.vue'\r\n\r\nexport function FormDialog<T extends object = any>(\r\n title: IFormDialogProps | string,\r\n content?: Component | FormDialogSlotContent,\r\n dynamicMiddlewareNames?: string[],\r\n): IFormDialog<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 IFormDialogProps\r\n\r\n function render(visible: boolean, resolve?: (type?: string) => any, reject?: () => any) {\r\n const _content = isVueOptions(content)\r\n ? { default: () => h(content) }\r\n : 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(DialogContent, {\r\n dialogProps: 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 disposeDialog() {\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 formDialog = {\r\n forOpen: (middleware: IMiddleware<IFormProps<T>>) => {\r\n isFn(middleware) && env.openMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n forConfirm: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n forCancel: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\r\n return formDialog\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 formDialog.close()\r\n disposeDialog()\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 formDialog.close()\r\n disposeDialog()\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 if (isArr(dynamicMiddlewareNames)) {\r\n for (const middlewareName of dynamicMiddlewareNames) {\r\n const _middlewareName = camelCase(middlewareName)\r\n formDialog[`for${pascalCase(_middlewareName)}`] = (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env[`${_middlewareName}Middlewares`].push(middleware)\r\n return formDialog\r\n }\r\n }\r\n }\r\n\r\n return formDialog as IFormDialog<T>\r\n}\r\n\r\nexport default FormDialog\r\n"],"names":["props","__props","slots","_useSlots","prefixCls","stylePrefix","elConfig","loadElConfigProvider","_dialogProps","omit","internalSubmitting","useDebonceSubmitting","dialogRef","ref","enableEnterSubmit","computed","useEnterSubmit","resolveDialogElement","_openBlock","_createBlock","_unref","_mergeProps","done","isFn","_createVNode","FormProvider","_renderSlot","_ctx","_createElementVNode","_createElementBlock","_Fragment","ElButton","_cache","$event","_createTextVNode","_toDisplayString","FormDialog","title","content","dynamicMiddlewareNames","env","isArr","middlewareName","isStr","_middlewareName","camelCase","pascalCase","render","visible","resolve","reject","_content","isVueOptions","h","ComponentConstructor","observer","_","expose","DialogContent","createApp","disposeDialog","animationDuration","getTransitionDuration","formDialog","middleware","payload","res","rej","loading","applyMiddleware","resPayload","createForm","type","isValid","toJS","error"],"mappings":"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"}
@@ -8,6 +8,7 @@ export type IFormDialogProps = Partial<DialogProps> & {
8
8
  okText?: string;
9
9
  okButtonProps?: ButtonProps;
10
10
  loadingText?: string;
11
+ enterSubmit?: boolean;
11
12
  };
12
13
  export interface FormDialogSlotProps {
13
14
  resolve: (type?: string) => void;