@silver-formily/element-plus 2.0.1 → 2.2.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 (123) hide show
  1. package/README.en-US.md +32 -0
  2. package/README.md +32 -35
  3. package/esm/__builtins__/index.mjs +15 -16
  4. package/esm/__builtins__/shared/index.mjs +11 -12
  5. package/esm/__builtins__/shared/transform-component.d.ts +2 -6
  6. package/esm/__builtins__/shared/transform-component.mjs +16 -33
  7. package/esm/__builtins__/shared/transform-component.mjs.map +1 -1
  8. package/esm/__builtins__/shared/utils.mjs +10 -10
  9. package/esm/__builtins__/shared/utils.mjs.map +1 -1
  10. package/esm/array-base/index.mjs +58 -58
  11. package/esm/array-base/index.mjs.map +1 -1
  12. package/esm/array-cards/index.mjs +44 -44
  13. package/esm/array-cards/index.mjs.map +1 -1
  14. package/esm/array-collapse/index.mjs +59 -58
  15. package/esm/array-collapse/index.mjs.map +1 -1
  16. package/esm/array-items/index.mjs +46 -43
  17. package/esm/array-items/index.mjs.map +1 -1
  18. package/esm/array-list-tabs/index.mjs +15 -14
  19. package/esm/array-list-tabs/index.mjs.map +1 -1
  20. package/esm/array-table/array-table.d.ts +28 -0
  21. package/esm/array-table/index.d.ts +28 -0
  22. package/esm/array-table/index.mjs +113 -111
  23. package/esm/array-table/index.mjs.map +1 -1
  24. package/esm/array-table/types.d.ts +1 -0
  25. package/esm/cascader/index.mjs +19 -20
  26. package/esm/cascader/index.mjs.map +1 -1
  27. package/esm/checkbox/checkbox-group.d.ts +1 -4
  28. package/esm/checkbox/index.d.ts +442 -379
  29. package/esm/checkbox/index.mjs.map +1 -1
  30. package/esm/editable/editable.d.ts +16 -12
  31. package/esm/editable/index.d.ts +8 -6
  32. package/esm/editable/index.mjs +110 -112
  33. package/esm/editable/index.mjs.map +1 -1
  34. package/esm/form-button-group/index.mjs +29 -28
  35. package/esm/form-button-group/index.mjs.map +1 -1
  36. package/esm/form-collapse/index.mjs +42 -43
  37. package/esm/form-collapse/index.mjs.map +1 -1
  38. package/esm/form-dialog/index.d.ts +1 -1
  39. package/esm/form-dialog/index.mjs +4 -4
  40. package/esm/form-dialog/index.mjs.map +1 -1
  41. package/esm/form-dialog/types.d.ts +6 -6
  42. package/esm/form-drawer/index.d.ts +1 -1
  43. package/esm/form-drawer/index.mjs +4 -4
  44. package/esm/form-drawer/index.mjs.map +1 -1
  45. package/esm/form-drawer/types.d.ts +6 -6
  46. package/esm/form-grid/index.d.ts +1 -183
  47. package/esm/form-grid/index.mjs +1 -1
  48. package/esm/form-grid/index.mjs.map +1 -1
  49. package/esm/form-item/form-item.d.ts +2 -1
  50. package/esm/form-item/index.d.ts +12 -6
  51. package/esm/form-item/index.mjs +163 -155
  52. package/esm/form-item/index.mjs.map +1 -1
  53. package/esm/form-item/types.d.ts +0 -1
  54. package/esm/form-layout/form-layout.d.ts +0 -1
  55. package/esm/form-layout/form-layout.mjs +53 -52
  56. package/esm/form-layout/form-layout.mjs.map +1 -1
  57. package/esm/form-layout/types.d.ts +0 -2
  58. package/esm/form-layout/utils.d.ts +3 -3
  59. package/esm/form-layout/utils.mjs +48 -43
  60. package/esm/form-layout/utils.mjs.map +1 -1
  61. package/esm/form-step/index.mjs +27 -25
  62. package/esm/form-step/index.mjs.map +1 -1
  63. package/esm/form-tab/index.d.ts +1 -26
  64. package/esm/form-tab/index.mjs +30 -30
  65. package/esm/form-tab/index.mjs.map +1 -1
  66. package/esm/index.d.ts +3 -0
  67. package/esm/index.mjs +44 -38
  68. package/esm/index.mjs.map +1 -1
  69. package/esm/input/index.mjs.map +1 -1
  70. package/esm/input-number/index.d.ts +258 -147
  71. package/esm/pagination/pagination.mjs +109 -110
  72. package/esm/pagination/pagination.mjs.map +1 -1
  73. package/esm/password/index.mjs.map +1 -1
  74. package/esm/preview-text/index.d.ts +5 -0
  75. package/esm/preview-text/index.mjs +165 -141
  76. package/esm/preview-text/index.mjs.map +1 -1
  77. package/esm/preview-text/rate.d.ts +5 -0
  78. package/esm/preview-text/utils.d.ts +5 -5
  79. package/esm/preview-text/utils.mjs.map +1 -1
  80. package/esm/radio/index.d.ts +344 -194
  81. package/esm/radio/index.mjs.map +1 -1
  82. package/esm/rate/index.d.ts +187 -0
  83. package/esm/rate/index.mjs +14 -0
  84. package/esm/rate/index.mjs.map +1 -0
  85. package/esm/reset/index.d.ts +1 -62
  86. package/esm/reset/index.mjs +1 -1
  87. package/esm/reset/index.mjs.map +1 -1
  88. package/esm/segmented/index.d.ts +26 -0
  89. package/esm/segmented/index.mjs +37 -0
  90. package/esm/segmented/index.mjs.map +1 -0
  91. package/esm/segmented/segmented.d.ts +25 -0
  92. package/esm/select/index.mjs +8 -8
  93. package/esm/select/index.mjs.map +1 -1
  94. package/esm/select-table/index.d.ts +28 -0
  95. package/esm/select-table/index.mjs +48 -47
  96. package/esm/select-table/index.mjs.map +1 -1
  97. package/esm/select-table/select-table.d.ts +56 -0
  98. package/esm/slider/index.d.ts +177 -0
  99. package/esm/slider/index.mjs +14 -0
  100. package/esm/slider/index.mjs.map +1 -0
  101. package/esm/submit/index.d.ts +1 -47
  102. package/esm/submit/index.mjs +1 -1
  103. package/esm/submit/index.mjs.map +1 -1
  104. package/esm/switch/index.d.ts +225 -189
  105. package/esm/time-select/index.d.ts +163 -103
  106. package/esm/transfer/index.d.ts +196 -115
  107. package/esm/transfer/index.mjs.map +1 -1
  108. package/esm/tree/index.mjs +26 -26
  109. package/esm/tree/index.mjs.map +1 -1
  110. package/esm/tree-select/index.mjs.map +1 -1
  111. package/esm/upload/index.d.ts +404 -399
  112. package/esm/upload/index.mjs.map +1 -1
  113. package/esm/upload/upload.d.ts +800 -790
  114. package/esm/vendor/icon.mjs.map +1 -1
  115. package/esm/vendor/lodash.mjs +12 -20
  116. package/esm/vendor/lodash.mjs.map +1 -1
  117. package/esm/vendor/runtime.mjs +29 -24
  118. package/esm/vendor/runtime.mjs.map +1 -1
  119. package/esm/vendor/shared.esm-bundler.mjs +2 -2
  120. package/esm/vendor/sizes.mjs.map +1 -1
  121. package/esm/vendor/types.mjs +5 -5
  122. package/esm/vendor/types.mjs.map +1 -1
  123. package/package.json +8 -9
@@ -1,26 +1,27 @@
1
- import { defineComponent as u, createBlock as s, openBlock as l, unref as t, mergeProps as a, withCtx as r, renderSlot as n, createVNode as c } from "vue";
2
- import { useForm as d } from "@silver-formily/vue";
3
- import { useAttrs as g, ElAffix as _, ElSpace as p } from "element-plus";
1
+ import { defineComponent as p, computed as g, createBlock as a, openBlock as l, unref as e, mergeProps as n, withCtx as r, renderSlot as u, createVNode as y } from "vue";
2
+ import { useForm as _ } from "@silver-formily/vue";
3
+ import { useAttrs as $, ElAffix as v, ElSpace as m } from "element-plus";
4
+ import { useFormLayoutId as F } from "../form-layout/utils.mjs";
4
5
  import { prefixCls as i } from "./utils.mjs";
5
- import { FormItem as y } from "../form-item/index.mjs";
6
- import { composeExport as $ } from "../__builtins__/shared/utils.mjs";
7
- import '../styles/form-button-group/index.css';const k = /* @__PURE__ */ u({
6
+ import { FormItem as k } from "../form-item/index.mjs";
7
+ import { composeExport as h } from "../__builtins__/shared/utils.mjs";
8
+ import '../styles/form-button-group/index.css';const b = /* @__PURE__ */ p({
8
9
  __name: "form-button-group-sticky",
9
10
  setup(f) {
10
- const e = g(), o = d();
11
- return (m, h) => (l(), s(t(_), a({
12
- class: `${t(i)}__sticky`
13
- }, t(e), {
14
- position: t(e).position ?? "bottom",
15
- target: t(e).target ?? `#formily-${t(o)?.id}`
11
+ const t = $(), o = _(), s = F(), c = g(() => t.value.target ? t.value.target : s.value ? `#${s.value}` : o.value?.id ? `#formily-${o.value.id}` : void 0);
12
+ return (d, B) => (l(), a(e(v), n({
13
+ class: `${e(i)}__sticky`
14
+ }, e(t), {
15
+ position: e(t).position ?? "bottom",
16
+ target: c.value
16
17
  }), {
17
18
  default: r(() => [
18
- n(m.$slots, "default")
19
+ u(d.$slots, "default")
19
20
  ]),
20
21
  _: 3
21
22
  }, 16, ["class", "position", "target"]));
22
23
  }
23
- }), F = /* @__PURE__ */ u({
24
+ }), x = /* @__PURE__ */ p({
24
25
  name: "FFormButtonGroup",
25
26
  inheritAttrs: !1,
26
27
  __name: "form-button-group",
@@ -39,46 +40,46 @@ import '../styles/form-button-group/index.css';const k = /* @__PURE__ */ u({
39
40
  }
40
41
  },
41
42
  setup(f) {
42
- const e = f;
43
- return (o, m) => e.alignFormItem ? (l(), s(t(y), a({
43
+ const t = f;
44
+ return (o, s) => t.alignFormItem ? (l(), a(e(k), n({
44
45
  key: 0,
45
46
  colon: !1,
46
47
  label: " "
47
48
  }, o.$attrs, {
48
- class: t(i),
49
+ class: e(i),
49
50
  style: {
50
51
  width: "100%"
51
52
  }
52
53
  }), {
53
54
  default: r(() => [
54
- c(t(p), {
55
- size: e.gutter
55
+ y(e(m), {
56
+ size: t.gutter
56
57
  }, {
57
58
  default: r(() => [
58
- n(o.$slots, "default")
59
+ u(o.$slots, "default")
59
60
  ]),
60
61
  _: 3
61
62
  }, 8, ["size"])
62
63
  ]),
63
64
  _: 3
64
- }, 16, ["class"])) : (l(), s(t(p), a({ key: 1 }, o.$attrs, {
65
- class: t(i),
65
+ }, 16, ["class"])) : (l(), a(e(m), n({ key: 1 }, o.$attrs, {
66
+ class: e(i),
66
67
  style: {
67
- justifyContent: e.align === "left" ? "flex-start" : e.align === "right" ? "flex-end" : "center",
68
+ justifyContent: t.align === "left" ? "flex-start" : t.align === "right" ? "flex-end" : "center",
68
69
  display: "flex"
69
70
  },
70
- size: e.gutter
71
+ size: t.gutter
71
72
  }), {
72
73
  default: r(() => [
73
- n(o.$slots, "default")
74
+ u(o.$slots, "default")
74
75
  ]),
75
76
  _: 3
76
77
  }, 16, ["class", "style", "size"]));
77
78
  }
78
- }), A = $(F, {
79
- Sticky: k
79
+ }), G = h(x, {
80
+ Sticky: b
80
81
  });
81
82
  export {
82
- A as FormButtonGroup
83
+ G as FormButtonGroup
83
84
  };
84
85
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/form-button-group/form-button-group-sticky.vue","../../src/form-button-group/form-button-group.vue","../../src/form-button-group/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { AffixProps } from 'element-plus'\r\nimport type { ComputedRef } from 'vue'\r\nimport { useForm } from '@silver-formily/vue'\r\nimport { ElAffix, useAttrs } from 'element-plus'\r\nimport { prefixCls } from './utils'\r\n\r\nconst attrs = useAttrs() as ComputedRef<Partial<AffixProps>>\r\nconst formRef = useForm()\r\n</script>\r\n\r\n<template>\r\n <ElAffix\r\n :class=\"`${prefixCls}__sticky`\"\r\n v-bind=\"attrs\"\r\n :position=\"attrs.position ?? 'bottom'\"\r\n :target=\"attrs.target ?? `#formily-${formRef?.id}`\"\r\n >\r\n <slot />\r\n </ElAffix>\r\n</template>\r\n","<script lang=\"ts\" setup>\r\nimport { ElSpace } from 'element-plus'\r\nimport FormItem from '../form-item/index'\r\nimport { prefixCls } from './utils'\r\n\r\ndefineOptions({\r\n name: 'FFormButtonGroup',\r\n inheritAttrs: false,\r\n})\r\n\r\nconst props = defineProps({\r\n align: {\r\n type: String,\r\n default: 'left',\r\n },\r\n gutter: {\r\n type: Number,\r\n default: 8,\r\n },\r\n alignFormItem: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n})\r\n</script>\r\n\r\n<template>\r\n <FormItem\r\n v-if=\"props.alignFormItem\"\r\n :colon=\"false\"\r\n label=\" \"\r\n v-bind=\"$attrs\"\r\n :class=\"prefixCls\"\r\n :style=\"{\r\n width: '100%',\r\n }\"\r\n >\r\n <ElSpace :size=\"props.gutter\">\r\n <slot />\r\n </ElSpace>\r\n </FormItem>\r\n <ElSpace\r\n v-else\r\n v-bind=\"$attrs\"\r\n :class=\"prefixCls\"\r\n :style=\"{\r\n justifyContent: props.align === 'left'\r\n ? 'flex-start'\r\n : (props.align === 'right'\r\n ? 'flex-end'\r\n : 'center'),\r\n display: 'flex',\r\n }\"\r\n :size=\"props.gutter\"\r\n >\r\n <slot />\r\n </ElSpace>\r\n</template>\r\n","import { composeExport } from '../__builtins__/shared'\r\nimport FormButtonGroupSticky from './form-button-group-sticky.vue'\r\nimport FormButtonGroupInner from './form-button-group.vue'\r\nimport './style.scss'\r\n\r\nexport const FormButtonGroup = composeExport(FormButtonGroupInner, {\r\n Sticky: FormButtonGroupSticky,\r\n})\r\n"],"names":["attrs","useAttrs","formRef","useForm","_openBlock","_createBlock","_unref","_mergeProps","prefixCls","_renderSlot","_ctx","props","__props","$attrs","_createVNode","ElSpace","FormButtonGroup","composeExport","FormButtonGroupInner","FormButtonGroupSticky"],"mappings":";;;;;;;;;AAOA,UAAMA,IAAQC,EAAA,GACRC,IAAUC,EAAA;sBAIdC,KAAAC,EAOUC,MAPVC,EAOU;AAAA,MANP,UAAUD,EAAAE,CAAA,CAAS;AAAA,IAAA,GACZF,EAAAN,CAAA,GAAK;AAAA,MACZ,UAAUM,EAAAN,CAAA,EAAM,YAAQ;AAAA,MACxB,QAAQM,EAAAN,CAAA,EAAM,UAAM,YAAgBM,EAAAJ,CAAA,GAAS,EAAE;AAAA,IAAA;iBAEhD,MAAQ;AAAA,QAARO,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;ACRZ,UAAMC,IAAQC;qBAkBJD,EAAM,iBADdP,EAAA,GAAAC,EAaWC,MAbXC,EAaW;AAAA;MAXR,OAAO;AAAA,MACR,OAAM;AAAA,IAAA,GACEM,EAAAA,QAAM;AAAA,MACb,OAAOP,EAAAE,CAAA;AAAA,MACP,OAAO;AAAA;;IAEP;iBAED,MAEU;AAAA,QAFVM,EAEUR,EAAAS,CAAA,GAAA;AAAA,UAFA,MAAMJ,EAAM;AAAA,QAAA;qBACpB,MAAQ;AAAA,YAARF,EAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;;;;;+BAGZL,EAeUC,EAAAS,CAAA,GAfVR,EAeU,EAAA,KAAA,EAAA,GAbAM,EAAAA,QAAM;AAAA,MACb,OAAOP,EAAAE,CAAA;AAAA,MACP,OAAK;AAAA,QAA2B,gBAAAG,EAAM,UAAK,wBAAgDA,EAAM,UAAK;;;MAQtG,MAAMA,EAAM;AAAA,IAAA;iBAEb,MAAQ;AAAA,QAARF,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;IClDCM,IAAkBC,EAAcC,GAAsB;AAAA,EACjE,QAAQC;AACV,CAAC;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/form-button-group/form-button-group-sticky.vue","../../src/form-button-group/form-button-group.vue","../../src/form-button-group/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { AffixProps } from 'element-plus'\r\nimport type { ComputedRef } from 'vue'\r\nimport { useForm } from '@silver-formily/vue'\r\nimport { ElAffix, useAttrs } from 'element-plus'\r\nimport { computed } from 'vue'\r\nimport { useFormLayoutId } from '../form-layout/utils'\r\nimport { prefixCls } from './utils'\r\n\r\nconst attrs = useAttrs() as ComputedRef<Partial<AffixProps>>\r\nconst formRef = useForm()\r\nconst formLayoutId = useFormLayoutId()\r\n\r\nconst target = computed(() => {\r\n if (attrs.value.target) {\r\n return attrs.value.target\r\n }\r\n if (formLayoutId.value) {\r\n return `#${formLayoutId.value}`\r\n }\r\n return formRef.value?.id ? `#formily-${formRef.value.id}` : undefined\r\n})\r\n</script>\r\n\r\n<template>\r\n <ElAffix\r\n :class=\"`${prefixCls}__sticky`\"\r\n v-bind=\"attrs\"\r\n :position=\"attrs.position ?? 'bottom'\"\r\n :target=\"target\"\r\n >\r\n <slot />\r\n </ElAffix>\r\n</template>\r\n","<script lang=\"ts\" setup>\r\nimport { ElSpace } from 'element-plus'\r\nimport FormItem from '../form-item/index'\r\nimport { prefixCls } from './utils'\r\n\r\ndefineOptions({\r\n name: 'FFormButtonGroup',\r\n inheritAttrs: false,\r\n})\r\n\r\nconst props = defineProps({\r\n align: {\r\n type: String,\r\n default: 'left',\r\n },\r\n gutter: {\r\n type: Number,\r\n default: 8,\r\n },\r\n alignFormItem: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n})\r\n</script>\r\n\r\n<template>\r\n <FormItem\r\n v-if=\"props.alignFormItem\"\r\n :colon=\"false\"\r\n label=\" \"\r\n v-bind=\"$attrs\"\r\n :class=\"prefixCls\"\r\n :style=\"{\r\n width: '100%',\r\n }\"\r\n >\r\n <ElSpace :size=\"props.gutter\">\r\n <slot />\r\n </ElSpace>\r\n </FormItem>\r\n <ElSpace\r\n v-else\r\n v-bind=\"$attrs\"\r\n :class=\"prefixCls\"\r\n :style=\"{\r\n justifyContent: props.align === 'left'\r\n ? 'flex-start'\r\n : (props.align === 'right'\r\n ? 'flex-end'\r\n : 'center'),\r\n display: 'flex',\r\n }\"\r\n :size=\"props.gutter\"\r\n >\r\n <slot />\r\n </ElSpace>\r\n</template>\r\n","import { composeExport } from '../__builtins__/shared'\r\nimport FormButtonGroupSticky from './form-button-group-sticky.vue'\r\nimport FormButtonGroupInner from './form-button-group.vue'\r\nimport './style.scss'\r\n\r\nexport const FormButtonGroup = composeExport(FormButtonGroupInner, {\r\n Sticky: FormButtonGroupSticky,\r\n})\r\n"],"names":["attrs","useAttrs","formRef","useForm","formLayoutId","useFormLayoutId","target","computed","_openBlock","_createBlock","_unref","_mergeProps","prefixCls","_renderSlot","_ctx","props","__props","$attrs","_createVNode","ElSpace","FormButtonGroup","composeExport","FormButtonGroupInner","FormButtonGroupSticky"],"mappings":";;;;;;;;;;AASA,UAAMA,IAAQC,EAAA,GACRC,IAAUC,EAAA,GACVC,IAAeC,EAAA,GAEfC,IAASC,EAAS,MAClBP,EAAM,MAAM,SACPA,EAAM,MAAM,SAEjBI,EAAa,QACR,IAAIA,EAAa,KAAK,KAExBF,EAAQ,OAAO,KAAK,YAAYA,EAAQ,MAAM,EAAE,KAAK,MAC7D;sBAICM,KAAAC,EAOUC,MAPVC,EAOU;AAAA,MANP,UAAUD,EAAAE,CAAA,CAAS;AAAA,IAAA,GACZF,EAAAV,CAAA,GAAK;AAAA,MACZ,UAAUU,EAAAV,CAAA,EAAM,YAAQ;AAAA,MACxB,QAAQM,EAAA;AAAA,IAAA;iBAET,MAAQ;AAAA,QAARO,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;ACrBZ,UAAMC,IAAQC;qBAkBJD,EAAM,iBADdP,EAAA,GAAAC,EAaWC,MAbXC,EAaW;AAAA;MAXR,OAAO;AAAA,MACR,OAAM;AAAA,IAAA,GACEM,EAAAA,QAAM;AAAA,MACb,OAAOP,EAAAE,CAAA;AAAA,MACP,OAAO;AAAA;;IAEP;iBAED,MAEU;AAAA,QAFVM,EAEUR,EAAAS,CAAA,GAAA;AAAA,UAFA,MAAMJ,EAAM;AAAA,QAAA;qBACpB,MAAQ;AAAA,YAARF,EAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;;;;;+BAGZL,EAeUC,EAAAS,CAAA,GAfVR,EAeU,EAAA,KAAA,EAAA,GAbAM,EAAAA,QAAM;AAAA,MACb,OAAOP,EAAAE,CAAA;AAAA,MACP,OAAK;AAAA,QAA2B,gBAAAG,EAAM,UAAK,wBAAgDA,EAAM,UAAK;;;MAQtG,MAAMA,EAAM;AAAA,IAAA;iBAEb,MAAQ;AAAA,QAARF,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;IClDCM,IAAkBC,EAAcC,GAAsB;AAAA,EACjE,QAAQC;AACV,CAAC;"}
@@ -1,13 +1,12 @@
1
- import { observer as V } from "@formily/reactive-vue";
2
- import { defineComponent as b, computed as N, createBlock as s, openBlock as o, unref as e, mergeProps as F, withCtx as u, createElementBlock as c, Fragment as m, renderList as P, normalizeClass as $, resolveDynamicComponent as k, toDisplayString as _, createTextVNode as D, createVNode as R, h } from "vue";
3
- import { observable as g } from "@formily/reactive";
4
- import { isFn as E } from "@formily/shared";
5
- import { useField as j, useFieldSchema as q, RecursionField as w } from "@silver-formily/vue";
6
- import { ElCollapse as z, ElCollapseItem as L, ElBadge as O } from "element-plus";
7
- import { usePanels as T, createFormCollapse as K } from "./utils.mjs";
8
- import { useCleanAttrs as U, composeExport as G } from "../__builtins__/shared/utils.mjs";
9
- import { stylePrefix as H } from "../__builtins__/configs/index.mjs";
10
- import '../styles/form-collapse/index.css';const J = { key: 1 }, M = /* @__PURE__ */ b({
1
+ import { defineComponent as K, computed as V, createBlock as s, openBlock as o, unref as e, mergeProps as k, withCtx as c, createElementBlock as u, Fragment as m, renderList as N, normalizeClass as P, resolveDynamicComponent as F, toDisplayString as _, createTextVNode as $, createVNode as D, h as R } from "vue";
2
+ import { isFn as g } from "@formily/shared";
3
+ import { formilyComputed as E } from "@silver-formily/reactive-vue";
4
+ import { useField as h, useFieldSchema as j, RecursionField as q } from "@silver-formily/vue";
5
+ import { ElCollapse as w, ElCollapseItem as z, ElBadge as L } from "element-plus";
6
+ import { usePanels as O, createFormCollapse as A } from "./utils.mjs";
7
+ import { useCleanAttrs as T, composeExport as U } from "../__builtins__/shared/utils.mjs";
8
+ import { stylePrefix as G } from "../__builtins__/configs/index.mjs";
9
+ import '../styles/form-collapse/index.css';const H = { key: 1 }, J = /* @__PURE__ */ K({
11
10
  inheritAttrs: !1,
12
11
  __name: "form-collapse",
13
12
  props: {
@@ -17,48 +16,48 @@ import '../styles/form-collapse/index.css';const J = { key: 1 }, M = /* @__PURE_
17
16
  }
18
17
  },
19
18
  setup(C) {
20
- const r = C, x = `${H}-form-collapse`, { props: A } = U(["modelValue", "onUpdate:modelValue"]), i = j(), B = q(), f = g.computed(() => T(i.value, B.value)), v = N(
21
- () => r.formCollapse ?? K()
19
+ const r = C, x = `${G}-form-collapse`, { props: b } = T(["modelValue", "onUpdate:modelValue"]), i = h(), B = j(), f = E(() => O(i.value, B.value)), d = V(
20
+ () => r.formCollapse ?? A()
22
21
  );
23
22
  function I(a) {
24
- return r.activeKey ? r.activeKey : v.value?.activeKeys ? v.value?.activeKeys : a.map((l) => l.name);
23
+ return r.activeKey ? r.activeKey : d.value?.activeKeys ? d.value?.activeKeys : a.map((l) => l.name);
25
24
  }
26
- const n = g.computed(() => f.value.map((a) => i.value.form.queryFeedbacks({
25
+ const n = E(() => f.value.map((a) => i.value.form.queryFeedbacks({
27
26
  type: "error",
28
27
  address: `${i.value.address.concat(a.name)}.*`
29
28
  }).length));
30
- return (a, l) => (o(), s(e(z), F({
29
+ return (a, l) => (o(), s(e(w), k({
31
30
  class: x,
32
- "model-value": I(e(f).value)
33
- }, e(A), {
34
- onChange: l[0] || (l[0] = (d) => {
35
- v.value.setActiveKeys(d);
31
+ "model-value": I(e(f))
32
+ }, e(b), {
33
+ onChange: l[0] || (l[0] = (y) => {
34
+ d.value.setActiveKeys(y);
36
35
  })
37
36
  }), {
38
- default: u(() => [
39
- (o(!0), c(m, null, P(e(f).value, ({ props: d, schema: t, name: y }, p) => (o(), s(e(L), F({
40
- key: y,
37
+ default: c(() => [
38
+ (o(!0), u(m, null, N(e(f), ({ props: y, schema: t, name: v }, p) => (o(), s(e(z), k({
39
+ key: v,
41
40
  ref_for: !0
42
- }, d, { name: y }), {
43
- default: u(() => [
44
- R(e(w), {
41
+ }, y, { name: v }), {
42
+ default: c(() => [
43
+ D(e(q), {
45
44
  schema: t,
46
- name: y
45
+ name: v
47
46
  }, null, 8, ["schema", "name"])
48
47
  ]),
49
- title: u(() => [
50
- e(n).value[p] !== 0 ? (o(), s(e(O), {
48
+ title: c(() => [
49
+ e(n)[p] !== 0 ? (o(), s(e(L), {
51
50
  key: 0,
52
- class: $(`${x}-errors-badge`),
53
- value: e(n).value[p]
51
+ class: P(`${x}-errors-badge`),
52
+ value: e(n)[p]
54
53
  }, {
55
- default: u(() => [
56
- t["x-content"]?.title ? (o(), s(k(() => e(E)(t["x-content"]?.title) ? t["x-content"]?.title(e(n).value[p]) : t["x-content"]?.title), { key: 0 })) : (o(), c("span", J, _(t["x-component-props"]?.title), 1))
54
+ default: c(() => [
55
+ t["x-content"]?.title ? (o(), s(F(() => e(g)(t["x-content"]?.title) ? t["x-content"]?.title(e(n)[p]) : t["x-content"]?.title), { key: 0 })) : (o(), u("span", H, _(t["x-component-props"]?.title), 1))
57
56
  ]),
58
57
  _: 2
59
- }, 1032, ["class", "value"])) : (o(), c(m, { key: 1 }, [
60
- t["x-content"]?.title ? (o(), s(k(() => e(E)(t["x-content"]?.title) ? t["x-content"]?.title(e(n).value[p]) : t["x-content"]?.title), { key: 0 })) : (o(), c(m, { key: 1 }, [
61
- D(_(t["x-component-props"]?.title), 1)
58
+ }, 1032, ["class", "value"])) : (o(), u(m, { key: 1 }, [
59
+ t["x-content"]?.title ? (o(), s(F(() => e(g)(t["x-content"]?.title) ? t["x-content"]?.title(e(n)[p]) : t["x-content"]?.title), { key: 0 })) : (o(), u(m, { key: 1 }, [
60
+ $(_(t["x-component-props"]?.title), 1)
62
61
  ], 64))
63
62
  ], 64))
64
63
  ]),
@@ -68,19 +67,19 @@ import '../styles/form-collapse/index.css';const J = { key: 1 }, M = /* @__PURE_
68
67
  _: 1
69
68
  }, 16, ["model-value"]));
70
69
  }
71
- }), Q = V(M), W = b({
70
+ }), M = K({
72
71
  name: "FFormCollapseItem",
73
72
  inheritAttrs: !1,
74
73
  setup(C, { slots: r }) {
75
- return () => h(m, r.default?.());
74
+ return () => R(m, r.default?.());
76
75
  }
77
- }), se = G(Q, {
78
- Item: W,
79
- createFormCollapse: K
76
+ }), oe = U(J, {
77
+ Item: M,
78
+ createFormCollapse: A
80
79
  });
81
80
  export {
82
- se as FormCollapse,
83
- W as FormCollapseItem,
84
- se as default
81
+ oe as FormCollapse,
82
+ M as FormCollapseItem,
83
+ oe as default
85
84
  };
86
85
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/form-collapse/form-collapse.vue","../../src/form-collapse/index.ts"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport type { PropType } from 'vue'\r\nimport type { IFormCollapse } from './utils'\r\nimport { observable } from '@formily/reactive'\r\nimport { isFn } from '@formily/shared'\r\nimport { RecursionField, useField, useFieldSchema } from '@silver-formily/vue'\r\nimport { ElBadge, ElCollapse, ElCollapseItem } from 'element-plus'\r\nimport { computed } from 'vue'\r\nimport { stylePrefix, useCleanAttrs } from '../__builtins__'\r\nimport { createFormCollapse, usePanels } from './utils'\r\n\r\ndefineOptions({\r\n inheritAttrs: false,\r\n})\r\n\r\nconst props = defineProps({\r\n formCollapse: { type: Object as PropType<IFormCollapse> },\r\n activeKey: {\r\n type: [String, Number],\r\n },\r\n})\r\nconst prefixCls = `${stylePrefix}-form-collapse`\r\nconst { props: collapseAttrs } = useCleanAttrs(['modelValue', 'onUpdate:modelValue'])\r\n\r\nconst field = useField()\r\nconst schema = useFieldSchema()\r\nconst panels = observable.computed(() => usePanels(field.value, schema.value))\r\nconst formCollapseRef = computed(\r\n () => props.formCollapse ?? createFormCollapse(),\r\n)\r\n\r\nfunction takeActiveKeys(panelList) {\r\n if (props.activeKey)\r\n return props.activeKey\r\n if (formCollapseRef.value?.activeKeys)\r\n return formCollapseRef.value?.activeKeys\r\n return panelList.map(item => item.name)\r\n}\r\n\r\nconst panelErrorCounts = observable.computed(() => {\r\n return panels.value.map((item) => {\r\n const panelErrors = field.value.form.queryFeedbacks({\r\n type: 'error',\r\n address: `${field.value.address.concat(item.name)}.*`,\r\n })\r\n return panelErrors.length\r\n })\r\n})\r\n</script>\r\n\r\n<template>\r\n <ElCollapse\r\n :class=\"prefixCls\"\r\n :model-value=\"takeActiveKeys(panels.value)\"\r\n v-bind=\"collapseAttrs\"\r\n @change=\"(key) => {\r\n formCollapseRef.setActiveKeys(key)\r\n }\"\r\n >\r\n <template v-for=\"({ props: itemProps, schema: itemSchema, name }, index) of panels.value\" :key=\"name\">\r\n <ElCollapseItem v-bind=\"itemProps\" :name=\"name\">\r\n <template #default>\r\n <RecursionField :schema=\"itemSchema\" :name=\"name\" />\r\n </template>\r\n <template #title>\r\n <ElBadge\r\n v-if=\"panelErrorCounts.value[index] !== 0\"\r\n :class=\"`${prefixCls}-errors-badge`\"\r\n :value=\"panelErrorCounts.value[index]\"\r\n >\r\n <component\r\n :is=\"() => isFn(itemSchema['x-content']?.title)\r\n ? itemSchema['x-content']?.title(panelErrorCounts.value[index])\r\n : itemSchema['x-content']?.title\"\r\n v-if=\"itemSchema['x-content']?.title\"\r\n />\r\n <span v-else>{{ itemSchema['x-component-props']?.title }}</span>\r\n </ElBadge>\r\n <template v-else>\r\n <component\r\n :is=\"() => isFn(itemSchema['x-content']?.title)\r\n ? itemSchema['x-content']?.title(panelErrorCounts.value[index])\r\n : itemSchema['x-content']?.title\"\r\n v-if=\"itemSchema['x-content']?.title\"\r\n />\r\n <template v-else>\r\n {{ itemSchema['x-component-props']?.title }}\r\n </template>\r\n </template>\r\n </template>\r\n </ElCollapseItem>\r\n </template>\r\n </ElCollapse>\r\n</template>\r\n","import { observer } from '@formily/reactive-vue'\r\nimport { defineComponent, Fragment, h } from 'vue'\r\nimport { composeExport } from '../__builtins__'\r\nimport FFormCollapse from './form-collapse.vue'\r\nimport { createFormCollapse } from './utils'\r\nimport './style.scss'\r\n\r\nconst FormCollapse = observer(FFormCollapse)\r\n\r\nexport const FormCollapseItem = defineComponent({\r\n name: 'FFormCollapseItem',\r\n inheritAttrs: false,\r\n setup(_props, { slots }) {\r\n return () => h(Fragment, slots.default?.())\r\n },\r\n})\r\n\r\nconst composeFormCollapse = composeExport(FormCollapse, {\r\n Item: FormCollapseItem,\r\n createFormCollapse,\r\n})\r\n\r\nexport { composeFormCollapse as FormCollapse }\r\nexport default composeFormCollapse\r\n"],"names":["props","__props","prefixCls","stylePrefix","collapseAttrs","useCleanAttrs","field","useField","schema","useFieldSchema","panels","observable","usePanels","formCollapseRef","computed","createFormCollapse","takeActiveKeys","panelList","item","panelErrorCounts","_openBlock","_createBlock","_unref","_mergeProps","key","_createElementBlock","_Fragment","_renderList","itemProps","itemSchema","name","index","_createVNode","RecursionField","ElBadge","_resolveDynamicComponent","isFn","_hoisted_1","_toDisplayString","_createTextVNode","FormCollapse","observer","FFormCollapse","FormCollapseItem","defineComponent","_props","slots","Fragment","composeFormCollapse","composeExport"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/form-collapse/form-collapse.vue","../../src/form-collapse/index.ts"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport type { PropType } from 'vue'\r\nimport type { IFormCollapse } from './utils'\r\nimport { isFn } from '@formily/shared'\r\nimport { formilyComputed } from '@silver-formily/reactive-vue'\r\nimport { RecursionField, useField, useFieldSchema } from '@silver-formily/vue'\r\nimport { ElBadge, ElCollapse, ElCollapseItem } from 'element-plus'\r\nimport { computed } from 'vue'\r\nimport { stylePrefix, useCleanAttrs } from '../__builtins__'\r\nimport { createFormCollapse, usePanels } from './utils'\r\n\r\ndefineOptions({\r\n inheritAttrs: false,\r\n})\r\n\r\nconst props = defineProps({\r\n formCollapse: { type: Object as PropType<IFormCollapse> },\r\n activeKey: {\r\n type: [String, Number],\r\n },\r\n})\r\nconst prefixCls = `${stylePrefix}-form-collapse`\r\nconst { props: collapseAttrs } = useCleanAttrs(['modelValue', 'onUpdate:modelValue'])\r\n\r\nconst field = useField()\r\nconst schema = useFieldSchema()\r\nconst panels = formilyComputed(() => usePanels(field.value, schema.value))\r\nconst formCollapseRef = computed(\r\n () => props.formCollapse ?? createFormCollapse(),\r\n)\r\n\r\nfunction takeActiveKeys(panelList) {\r\n if (props.activeKey)\r\n return props.activeKey\r\n if (formCollapseRef.value?.activeKeys)\r\n return formCollapseRef.value?.activeKeys\r\n return panelList.map(item => item.name)\r\n}\r\n\r\nconst panelErrorCounts = formilyComputed(() => {\r\n return panels.value.map((item) => {\r\n const panelErrors = field.value.form.queryFeedbacks({\r\n type: 'error',\r\n address: `${field.value.address.concat(item.name)}.*`,\r\n })\r\n return panelErrors.length\r\n })\r\n})\r\n</script>\r\n\r\n<template>\r\n <ElCollapse\r\n :class=\"prefixCls\"\r\n :model-value=\"takeActiveKeys(panels)\"\r\n v-bind=\"collapseAttrs\"\r\n @change=\"(key) => {\r\n formCollapseRef.setActiveKeys(key)\r\n }\"\r\n >\r\n <template v-for=\"({ props: itemProps, schema: itemSchema, name }, index) of panels\" :key=\"name\">\r\n <ElCollapseItem v-bind=\"itemProps\" :name=\"name\">\r\n <template #default>\r\n <RecursionField :schema=\"itemSchema\" :name=\"name\" />\r\n </template>\r\n <template #title>\r\n <ElBadge\r\n v-if=\"panelErrorCounts[index] !== 0\"\r\n :class=\"`${prefixCls}-errors-badge`\"\r\n :value=\"panelErrorCounts[index]\"\r\n >\r\n <component\r\n :is=\"() => isFn(itemSchema['x-content']?.title)\r\n ? itemSchema['x-content']?.title(panelErrorCounts[index])\r\n : itemSchema['x-content']?.title\"\r\n v-if=\"itemSchema['x-content']?.title\"\r\n />\r\n <span v-else>{{ itemSchema['x-component-props']?.title }}</span>\r\n </ElBadge>\r\n <template v-else>\r\n <component\r\n :is=\"() => isFn(itemSchema['x-content']?.title)\r\n ? itemSchema['x-content']?.title(panelErrorCounts[index])\r\n : itemSchema['x-content']?.title\"\r\n v-if=\"itemSchema['x-content']?.title\"\r\n />\r\n <template v-else>\r\n {{ itemSchema['x-component-props']?.title }}\r\n </template>\r\n </template>\r\n </template>\r\n </ElCollapseItem>\r\n </template>\r\n </ElCollapse>\r\n</template>\r\n","import { defineComponent, Fragment, h } from 'vue'\r\nimport { composeExport } from '../__builtins__'\r\nimport FormCollapse from './form-collapse.vue'\r\nimport { createFormCollapse } from './utils'\r\nimport './style.scss'\r\n\r\nexport const FormCollapseItem = defineComponent({\r\n name: 'FFormCollapseItem',\r\n inheritAttrs: false,\r\n setup(_props, { slots }) {\r\n return () => h(Fragment, slots.default?.())\r\n },\r\n})\r\n\r\nconst composeFormCollapse = composeExport(FormCollapse, {\r\n Item: FormCollapseItem,\r\n createFormCollapse,\r\n})\r\n\r\nexport { composeFormCollapse as FormCollapse }\r\nexport default composeFormCollapse\r\n"],"names":["props","__props","prefixCls","stylePrefix","collapseAttrs","useCleanAttrs","field","useField","schema","useFieldSchema","panels","formilyComputed","usePanels","formCollapseRef","computed","createFormCollapse","takeActiveKeys","panelList","item","panelErrorCounts","_openBlock","_createBlock","_unref","_mergeProps","key","_createElementBlock","_Fragment","_renderList","itemProps","itemSchema","name","index","_createVNode","RecursionField","ElBadge","_resolveDynamicComponent","isFn","_hoisted_1","_toDisplayString","_createTextVNode","FormCollapseItem","defineComponent","_props","slots","h","Fragment","composeFormCollapse","composeExport","FormCollapse"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { Component } from 'vue';
2
2
  import { FormDialogSlotContent, IFormDialog, IFormDialogProps } from './types';
3
- export declare function FormDialog(title: IFormDialogProps | string, content?: Component | FormDialogSlotContent, dynamicMiddlewareNames?: string[]): IFormDialog;
3
+ export declare function FormDialog<T extends object = any>(title: IFormDialogProps | string, content?: Component | FormDialogSlotContent, dynamicMiddlewareNames?: string[]): IFormDialog<T>;
4
4
  export default FormDialog;
@@ -1,7 +1,7 @@
1
1
  import { createForm as T } from "@formily/core";
2
2
  import { toJS as V } from "@formily/reactive";
3
- import { observer as q } from "@formily/reactive-vue";
4
- import { isFn as u, isArr as $, isStr as h, pascalCase as j, applyMiddleware as g, isValid as z } from "@formily/shared";
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
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
6
  import { FormProvider as W } from "@silver-formily/vue";
7
7
  import { ElDialog as X, ElButton as E, ElConfigProvider as Y } from "element-plus";
@@ -142,7 +142,7 @@ function be(r, l, a) {
142
142
  function s(o, t, m) {
143
143
  const d = te(l) ? { default: () => D(l) } : l;
144
144
  if (!e.instance) {
145
- const v = q({
145
+ const v = z({
146
146
  setup(P, { expose: B }) {
147
147
  const y = L(!1);
148
148
  return B({
@@ -176,7 +176,7 @@ function be(r, l, a) {
176
176
  S(c.loadingText, () => g(o, e.openMiddlewares)).then((d) => {
177
177
  e.form = e.form || T(d), s(!0, (v) => {
178
178
  e.form.submit(async () => {
179
- await (z(v) ? g(e.form, e[`${v}Middlewares`]) : g(e.form, e.confirmMiddlewares)), t(V(e.form.values)), i.close(), p();
179
+ await (q(v) ? g(e.form, e[`${v}Middlewares`]) : g(e.form, e.confirmMiddlewares)), t(V(e.form.values)), i.close(), p();
180
180
  }).catch((P) => {
181
181
  console.warn(P);
182
182
  });
@@ -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 { observer } from '@formily/reactive-vue'\r\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@formily/shared'\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(\r\n title: IFormDialogProps | string,\r\n content?: Component | FormDialogSlotContent,\r\n dynamicMiddlewareNames?: string[],\r\n): IFormDialog {\r\n const env: {\r\n root?: HTMLElement\r\n form?: Form\r\n promise?: Promise<any>\r\n instance?: any\r\n app?: App<Element>\r\n openMiddlewares: IMiddleware<IFormProps>[]\r\n confirmMiddlewares: IMiddleware<Form>[]\r\n cancelMiddlewares: IMiddleware<Form>[]\r\n [key: `${string}Middlewares`]: IMiddleware<Form>[] | IMiddleware<IFormProps>[] | 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>) => {\r\n isFn(middleware) && env.openMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n forConfirm: (middleware: IMiddleware<Form>) => {\r\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n forCancel: (middleware: IMiddleware<Form>) => {\r\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n open: (payload: IFormProps) => {\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)\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>) => {\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 never\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":"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"}
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":"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"}
@@ -22,11 +22,11 @@ export interface FormDialogSlots {
22
22
  export type FormDialogSlotContent = SlotsType<FormDialogSlots> | {
23
23
  [key in keyof FormDialogSlots]?: FormDialogSlots[key];
24
24
  };
25
- export interface IFormDialog {
26
- forOpen: (middleware: IMiddleware<IFormProps>) => IFormDialog;
27
- forConfirm: (middleware: IMiddleware<IFormProps>) => IFormDialog;
28
- forCancel: (middleware: IMiddleware<IFormProps>) => IFormDialog;
29
- [key: `for${string}`]: (middleware: IMiddleware<IFormProps>) => IFormDialog;
30
- open: (props?: IFormProps) => Promise<any>;
25
+ export interface IFormDialog<T extends object = any> {
26
+ forOpen: (middleware: IMiddleware<IFormProps<T>>) => IFormDialog<T>;
27
+ forConfirm: (middleware: IMiddleware<Form<T>>) => IFormDialog<T>;
28
+ forCancel: (middleware: IMiddleware<Form<T>>) => IFormDialog<T>;
29
+ [key: `for${string}`]: (middleware: IMiddleware<IFormProps<T>> | IMiddleware<Form<T>>) => IFormDialog<T>;
30
+ open: (props?: IFormProps<T>) => Promise<any>;
31
31
  close: () => void;
32
32
  }
@@ -1,4 +1,4 @@
1
1
  import { Component } from 'vue';
2
2
  import { FormDrawerSlotContent, IFormDrawer, IFormDrawerProps } from './types';
3
- export declare function FormDrawer(title: IFormDrawerProps | string, content?: Component | FormDrawerSlotContent, dynamicMiddlewareNames?: string[]): IFormDrawer;
3
+ export declare function FormDrawer<T extends object = any>(title: IFormDrawerProps | string, content?: Component | FormDrawerSlotContent, dynamicMiddlewareNames?: string[]): IFormDrawer<T>;
4
4
  export default FormDrawer;
@@ -1,7 +1,7 @@
1
1
  import { createForm as T } from "@formily/core";
2
2
  import { toJS as V } from "@formily/reactive";
3
- import { observer as q } from "@formily/reactive-vue";
4
- import { isFn as u, isArr as $, isStr as h, pascalCase as j, applyMiddleware as w, isValid as z } from "@formily/shared";
3
+ import { isFn as u, isArr as $, isStr as h, pascalCase as j, applyMiddleware as w, isValid as q } from "@formily/shared";
4
+ import { observer as z } from "@silver-formily/reactive-vue";
5
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 P, 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
6
  import { FormProvider as W } from "@silver-formily/vue";
7
7
  import { ElDrawer as X, ElButton as E, ElConfigProvider as Y } from "element-plus";
@@ -136,7 +136,7 @@ function be(o, s, a) {
136
136
  function p(r, t, m) {
137
137
  const d = te(s) ? { default: () => D(s) } : s;
138
138
  if (!e.instance) {
139
- const v = q({
139
+ const v = z({
140
140
  setup(g, { expose: B }) {
141
141
  const y = L(!1);
142
142
  return B({
@@ -170,7 +170,7 @@ function be(o, s, a) {
170
170
  S(c.loadingText, () => w(r, e.openMiddlewares)).then((d) => {
171
171
  e.form = e.form || T(d), p(!0, (v) => {
172
172
  e.form.submit(async () => {
173
- await (z(v) ? w(e.form, e[`${v}Middlewares`]) : w(e.form, e.confirmMiddlewares)), t(V(e.form.values)), i.close(), l();
173
+ await (q(v) ? w(e.form, e[`${v}Middlewares`]) : w(e.form, e.confirmMiddlewares)), t(V(e.form.values)), i.close(), l();
174
174
  }).catch((g) => {
175
175
  console.warn(g);
176
176
  });
@@ -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 { observer } from '@formily/reactive-vue'\r\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@formily/shared'\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(\r\n title: IFormDrawerProps | string,\r\n content?: Component | FormDrawerSlotContent,\r\n dynamicMiddlewareNames?: string[],\r\n): IFormDrawer {\r\n const env: {\r\n root?: HTMLElement\r\n form?: Form\r\n promise?: Promise<any>\r\n instance?: any\r\n app?: App<Element>\r\n openMiddlewares: IMiddleware<IFormProps>[]\r\n confirmMiddlewares: IMiddleware<Form>[]\r\n cancelMiddlewares: IMiddleware<Form>[]\r\n [key: `${string}Middlewares`]: IMiddleware<Form>[] | IMiddleware<IFormProps>[] | 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>) => {\r\n isFn(middleware) && env.openMiddlewares.push(middleware)\r\n return formDrawer\r\n },\r\n forConfirm: (middleware: IMiddleware<Form>) => {\r\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\r\n return formDrawer\r\n },\r\n forCancel: (middleware: IMiddleware<Form>) => {\r\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\r\n return formDrawer\r\n },\r\n open: (payload: IFormProps) => {\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)\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>) => {\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 never\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":"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"}
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":"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"}
@@ -22,11 +22,11 @@ export interface FormDrawerSlots {
22
22
  export type FormDrawerSlotContent = SlotsType<FormDrawerSlots> | {
23
23
  [key in keyof FormDrawerSlots]?: FormDrawerSlots[key];
24
24
  };
25
- export interface IFormDrawer {
26
- forOpen: (middleware: IMiddleware<IFormProps>) => IFormDrawer;
27
- forConfirm: (middleware: IMiddleware<Form>) => IFormDrawer;
28
- forCancel: (middleware: IMiddleware<Form>) => IFormDrawer;
29
- [key: `for${string}`]: (middleware: IMiddleware<IFormProps>) => IFormDrawer;
30
- open: (props?: IFormProps) => Promise<any>;
25
+ export interface IFormDrawer<T extends object = any> {
26
+ forOpen: (middleware: IMiddleware<IFormProps<T>>) => IFormDrawer<T>;
27
+ forConfirm: (middleware: IMiddleware<Form<T>>) => IFormDrawer<T>;
28
+ forCancel: (middleware: IMiddleware<Form<T>>) => IFormDrawer<T>;
29
+ [key: `for${string}`]: (middleware: IMiddleware<IFormProps<T>> | IMiddleware<Form<T>>) => IFormDrawer<T>;
30
+ open: (props?: IFormProps<T>) => Promise<any>;
31
31
  close: () => void;
32
32
  }