@silver-formily/element-plus 2.0.1 → 2.1.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 (154) hide show
  1. package/LICENSE +21 -21
  2. package/README.en-US.md +32 -0
  3. package/README.md +32 -35
  4. package/esm/__builtins__/configs/index.mjs.map +1 -1
  5. package/esm/__builtins__/index.mjs +15 -16
  6. package/esm/__builtins__/shared/hooks.mjs.map +1 -1
  7. package/esm/__builtins__/shared/index.mjs +11 -12
  8. package/esm/__builtins__/shared/loading.mjs.map +1 -1
  9. package/esm/__builtins__/shared/simple-version-compare.mjs.map +1 -1
  10. package/esm/__builtins__/shared/transform-component.d.ts +2 -6
  11. package/esm/__builtins__/shared/transform-component.mjs +16 -33
  12. package/esm/__builtins__/shared/transform-component.mjs.map +1 -1
  13. package/esm/__builtins__/shared/utils.mjs +10 -10
  14. package/esm/__builtins__/shared/utils.mjs.map +1 -1
  15. package/esm/array-base/index.mjs +76 -73
  16. package/esm/array-base/index.mjs.map +1 -1
  17. package/esm/array-base/symbols.mjs.map +1 -1
  18. package/esm/array-base/utils.mjs +33 -29
  19. package/esm/array-base/utils.mjs.map +1 -1
  20. package/esm/array-cards/index.mjs +56 -54
  21. package/esm/array-cards/index.mjs.map +1 -1
  22. package/esm/array-collapse/index.mjs +64 -62
  23. package/esm/array-collapse/index.mjs.map +1 -1
  24. package/esm/array-collapse/utils.mjs +8 -2
  25. package/esm/array-collapse/utils.mjs.map +1 -1
  26. package/esm/array-items/index.mjs +53 -47
  27. package/esm/array-items/index.mjs.map +1 -1
  28. package/esm/array-list-tabs/index.mjs +36 -34
  29. package/esm/array-list-tabs/index.mjs.map +1 -1
  30. package/esm/array-list-tabs/utils.mjs +11 -5
  31. package/esm/array-list-tabs/utils.mjs.map +1 -1
  32. package/esm/array-table/array-table.d.ts +28 -0
  33. package/esm/array-table/index.d.ts +28 -0
  34. package/esm/array-table/index.mjs +126 -123
  35. package/esm/array-table/index.mjs.map +1 -1
  36. package/esm/array-table/types.d.ts +1 -0
  37. package/esm/array-table/utils.mjs +18 -12
  38. package/esm/array-table/utils.mjs.map +1 -1
  39. package/esm/array-tabs/index.mjs +19 -17
  40. package/esm/array-tabs/index.mjs.map +1 -1
  41. package/esm/cascader/index.mjs +26 -24
  42. package/esm/cascader/index.mjs.map +1 -1
  43. package/esm/checkbox/checkbox-group.d.ts +1 -4
  44. package/esm/checkbox/index.d.ts +442 -379
  45. package/esm/checkbox/index.mjs +19 -16
  46. package/esm/checkbox/index.mjs.map +1 -1
  47. package/esm/date-picker/index.mjs +14 -12
  48. package/esm/date-picker/index.mjs.map +1 -1
  49. package/esm/editable/editable.d.ts +16 -12
  50. package/esm/editable/index.d.ts +8 -6
  51. package/esm/editable/index.mjs +113 -113
  52. package/esm/editable/index.mjs.map +1 -1
  53. package/esm/form/form.mjs +6 -6
  54. package/esm/form/form.mjs.map +1 -1
  55. package/esm/form-button-group/index.mjs +33 -29
  56. package/esm/form-button-group/index.mjs.map +1 -1
  57. package/esm/form-button-group/utils.mjs +8 -2
  58. package/esm/form-button-group/utils.mjs.map +1 -1
  59. package/esm/form-collapse/index.mjs +43 -42
  60. package/esm/form-collapse/index.mjs.map +1 -1
  61. package/esm/form-collapse/utils.mjs.map +1 -1
  62. package/esm/form-dialog/index.d.ts +1 -1
  63. package/esm/form-dialog/index.mjs +22 -22
  64. package/esm/form-dialog/index.mjs.map +1 -1
  65. package/esm/form-dialog/types.d.ts +6 -6
  66. package/esm/form-drawer/index.d.ts +1 -1
  67. package/esm/form-drawer/index.mjs +21 -21
  68. package/esm/form-drawer/index.mjs.map +1 -1
  69. package/esm/form-drawer/types.d.ts +6 -6
  70. package/esm/form-grid/hooks.mjs.map +1 -1
  71. package/esm/form-grid/index.d.ts +1 -183
  72. package/esm/form-grid/index.mjs +23 -20
  73. package/esm/form-grid/index.mjs.map +1 -1
  74. package/esm/form-item/form-item.d.ts +2 -1
  75. package/esm/form-item/index.d.ts +12 -6
  76. package/esm/form-item/index.mjs +157 -151
  77. package/esm/form-item/index.mjs.map +1 -1
  78. package/esm/form-item/types.d.ts +0 -1
  79. package/esm/form-item/utils.mjs.map +1 -1
  80. package/esm/form-layout/form-layout.d.ts +0 -1
  81. package/esm/form-layout/form-layout.mjs +56 -51
  82. package/esm/form-layout/form-layout.mjs.map +1 -1
  83. package/esm/form-layout/types.d.ts +0 -2
  84. package/esm/form-layout/utils.d.ts +3 -3
  85. package/esm/form-layout/utils.mjs +55 -45
  86. package/esm/form-layout/utils.mjs.map +1 -1
  87. package/esm/form-step/index.mjs +38 -34
  88. package/esm/form-step/index.mjs.map +1 -1
  89. package/esm/form-step/utils.mjs.map +1 -1
  90. package/esm/form-tab/hooks.mjs.map +1 -1
  91. package/esm/form-tab/index.d.ts +1 -26
  92. package/esm/form-tab/index.mjs +36 -35
  93. package/esm/form-tab/index.mjs.map +1 -1
  94. package/esm/form-tab/utils.mjs.map +1 -1
  95. package/esm/index.mjs +58 -58
  96. package/esm/input/index.mjs +23 -20
  97. package/esm/input/index.mjs.map +1 -1
  98. package/esm/input-number/index.d.ts +258 -147
  99. package/esm/input-number/index.mjs +9 -7
  100. package/esm/input-number/index.mjs.map +1 -1
  101. package/esm/pagination/components/jumper.mjs.map +1 -1
  102. package/esm/pagination/components/next.mjs.map +1 -1
  103. package/esm/pagination/components/pager.mjs.map +1 -1
  104. package/esm/pagination/components/prev.mjs.map +1 -1
  105. package/esm/pagination/components/total.mjs.map +1 -1
  106. package/esm/pagination/pagination.mjs +109 -110
  107. package/esm/pagination/pagination.mjs.map +1 -1
  108. package/esm/password/index.mjs.map +1 -1
  109. package/esm/preview-text/index.mjs +35 -32
  110. package/esm/preview-text/index.mjs.map +1 -1
  111. package/esm/preview-text/utils.mjs.map +1 -1
  112. package/esm/radio/index.d.ts +344 -194
  113. package/esm/radio/index.mjs +28 -25
  114. package/esm/radio/index.mjs.map +1 -1
  115. package/esm/reset/index.d.ts +1 -62
  116. package/esm/reset/index.mjs +1 -1
  117. package/esm/reset/index.mjs.map +1 -1
  118. package/esm/select/index.mjs +23 -20
  119. package/esm/select/index.mjs.map +1 -1
  120. package/esm/select-table/index.d.ts +28 -0
  121. package/esm/select-table/index.mjs +59 -55
  122. package/esm/select-table/index.mjs.map +1 -1
  123. package/esm/select-table/select-table.d.ts +56 -0
  124. package/esm/submit/index.d.ts +1 -47
  125. package/esm/submit/index.mjs +1 -1
  126. package/esm/submit/index.mjs.map +1 -1
  127. package/esm/switch/index.d.ts +225 -189
  128. package/esm/switch/index.mjs.map +1 -1
  129. package/esm/time-picker/index.mjs +8 -6
  130. package/esm/time-picker/index.mjs.map +1 -1
  131. package/esm/time-select/index.d.ts +163 -103
  132. package/esm/time-select/index.mjs +8 -6
  133. package/esm/time-select/index.mjs.map +1 -1
  134. package/esm/transfer/index.d.ts +196 -115
  135. package/esm/transfer/index.mjs.map +1 -1
  136. package/esm/tree/index.mjs +43 -40
  137. package/esm/tree/index.mjs.map +1 -1
  138. package/esm/tree/utils.mjs.map +1 -1
  139. package/esm/tree-select/index.mjs +20 -17
  140. package/esm/tree-select/index.mjs.map +1 -1
  141. package/esm/upload/index.d.ts +404 -399
  142. package/esm/upload/index.mjs +9 -7
  143. package/esm/upload/index.mjs.map +1 -1
  144. package/esm/upload/upload.d.ts +800 -790
  145. package/esm/vendor/icon.mjs.map +1 -1
  146. package/esm/vendor/lodash.mjs +12 -20
  147. package/esm/vendor/lodash.mjs.map +1 -1
  148. package/esm/vendor/runtime.mjs +29 -24
  149. package/esm/vendor/runtime.mjs.map +1 -1
  150. package/esm/vendor/shared.esm-bundler.mjs +2 -2
  151. package/esm/vendor/sizes.mjs.map +1 -1
  152. package/esm/vendor/types.mjs +5 -5
  153. package/esm/vendor/types.mjs.map +1 -1
  154. package/package.json +113 -114
@@ -1,10 +1,13 @@
1
1
  import { useField as W, connect as z, mapProps as G } from "@silver-formily/vue";
2
- import { defineComponent as U, ref as g, computed as j, watch as R, nextTick as v, createElementBlock as S, openBlock as s, normalizeClass as A, unref as r, createCommentVNode as J, withDirectives as Q, createElementVNode as X, createVNode as V, toDisplayString as Y, withCtx as f, createTextVNode as C, createBlock as y, mergeProps as w, renderSlot as Z, Fragment as ee, renderList as le } from "vue";
2
+ import { defineComponent as U, ref as g, computed as j, watch as R, nextTick as v, createElementBlock as S, openBlock as c, normalizeClass as A, unref as n, createCommentVNode as J, withDirectives as Q, createElementVNode as X, createVNode as V, toDisplayString as Y, withCtx as f, createTextVNode as C, createBlock as y, mergeProps as w, renderSlot as Z, Fragment as ee, renderList as le } from "vue";
3
3
  import { isValid as te, isEqual as oe, isFn as ae } from "@formily/shared";
4
- import { useAttrs as ne, ElLink as re, version as E, ElTable as ue, ElTableColumn as b, ElRadioGroup as ie, ElRadio as se, vLoading as ce } from "element-plus";
5
- import { u as x, x as de, d as me, a as fe, r as pe } from "../vendor/lodash.mjs";
6
- import { stylePrefix as K } from "../__builtins__/configs/index.mjs";
7
- import { lt as L } from "../__builtins__/shared/simple-version-compare.mjs";
4
+ import { useAttrs as re, ElLink as ne, version as E, ElTable as ue, ElTableColumn as b, ElRadioGroup as ie, ElRadio as se, vLoading as ce } from "element-plus";
5
+ import { stylePrefix as x } from "../__builtins__/configs/index.mjs";
6
+ import "@formily/reactive";
7
+ import { lt as K } from "../__builtins__/shared/simple-version-compare.mjs";
8
+ import "@formily/core";
9
+ import "@silver-formily/reactive-vue";
10
+ import { u as L, x as de, d as me, a as fe, r as pe } from "../vendor/lodash.mjs";
8
11
  import '../styles/select-table/index.css';const ye = /* @__PURE__ */ U({
9
12
  name: "FSelectTable",
10
13
  inheritAttrs: !1,
@@ -16,21 +19,21 @@ import '../styles/select-table/index.css';const ye = /* @__PURE__ */ U({
16
19
  optionAsValue: { type: Boolean, default: !1 },
17
20
  valueType: { default: "all" },
18
21
  loading: { type: Boolean, default: !1 },
19
- rowKey: null,
22
+ rowKey: {},
20
23
  clickRowToSelect: { type: Boolean, default: !0 },
21
24
  showAlertToolbar: { type: Boolean, default: !0 },
22
- modelValue: null,
23
- data: null,
24
- selectable: { type: Function },
25
+ modelValue: {},
26
+ data: {},
27
+ selectable: {},
25
28
  ignoreSelectable: { type: Boolean, default: !0 }
26
29
  },
27
30
  emits: ["update:modelValue"],
28
31
  setup(B, { emit: D }) {
29
- const e = B, c = D, _ = ne(), q = W();
32
+ const e = B, d = D, _ = re(), q = W();
30
33
  function F(l) {
31
- return L(E, "2.6.0") ? { label: l } : { value: l };
34
+ return K(E, "2.6.0") ? { label: l } : { value: l };
32
35
  }
33
- const d = g(), t = e.rowKey;
36
+ const s = g(), t = e.rowKey;
34
37
  function M() {
35
38
  return e.mode === "multiple" ? e.modelValue?.map((l) => e.optionAsValue ? l : {
36
39
  [t]: l
@@ -42,12 +45,12 @@ import '../styles/select-table/index.css';const ye = /* @__PURE__ */ U({
42
45
  R(
43
46
  () => e.dataSource,
44
47
  async () => {
45
- const l = x(
48
+ const l = L(
46
49
  u.value.map((a) => a[t])
47
50
  );
48
- await v();
49
- for (const a of e.dataSource)
50
- l.includes(a[t]) && (e.mode === "multiple" ? d.value.toggleRowSelection(a, !0, e.ignoreSelectable) : (d.value.setCurrentRow(a), T(a))), await v(), p = d.value?.getSelectionRows();
51
+ if (await v(), !!s.value)
52
+ for (const a of e.dataSource)
53
+ l.includes(a[t]) && (e.mode === "multiple" ? s.value?.toggleRowSelection(a, !0, e.ignoreSelectable) : (s.value?.setCurrentRow(a), T(a))), await v(), p = s.value?.getSelectionRows();
51
54
  },
52
55
  { immediate: !0 }
53
56
  ), R(
@@ -57,17 +60,18 @@ import '../styles/select-table/index.css';const ye = /* @__PURE__ */ U({
57
60
  if (e.mode === "single")
58
61
  m.value = e.optionAsValue ? l[t] : l;
59
62
  else {
60
- await v();
61
- const n = d.value?.getSelectionRows().map((i) => i[t]), o = e.optionAsValue ? l?.map((i) => i[t]) : l ?? [];
63
+ if (await v(), !s.value)
64
+ return;
65
+ const r = s.value?.getSelectionRows().map((i) => i[t]), o = e.optionAsValue ? l?.map((i) => i[t]) : l ?? [];
62
66
  if (u.value = u.value.filter(
63
67
  (i) => o.includes(i[t])
64
- ), oe(o, n))
68
+ ), oe(o, r))
65
69
  return;
66
- const I = de(o, n);
70
+ const I = de(o, r);
67
71
  for (const i of e.dataSource)
68
72
  if (I.includes(i[t])) {
69
73
  const O = o.includes(i[t]);
70
- d.value.toggleRowSelection(i, O, e.ignoreSelectable);
74
+ s.value.toggleRowSelection(i, O, e.ignoreSelectable);
71
75
  }
72
76
  }
73
77
  },
@@ -82,54 +86,54 @@ import '../styles/select-table/index.css';const ye = /* @__PURE__ */ U({
82
86
  const a = p.length > l.length ? me(
83
87
  p,
84
88
  l,
85
- (n, o) => n[t] === o[t]
89
+ (r, o) => r[t] === o[t]
86
90
  ) : [];
87
91
  if (p = [...l], u.value = fe(
88
92
  [...u.value, ...l],
89
- (n, o) => n[t] === o[t]
93
+ (r, o) => r[t] === o[t]
90
94
  ), a.length > 0) {
91
- const n = x(a.map((o) => o[t]));
92
- pe(u.value, (o) => n.includes(o[t]));
95
+ const r = L(a.map((o) => o[t]));
96
+ pe(u.value, (o) => r.includes(o[t]));
93
97
  }
94
98
  if (e.optionAsValue)
95
- c("update:modelValue", u.value);
99
+ d("update:modelValue", u.value);
96
100
  else {
97
- const n = u.value.map(
101
+ const r = u.value.map(
98
102
  (o) => o[t]
99
103
  );
100
- c("update:modelValue", n);
104
+ d("update:modelValue", r);
101
105
  }
102
106
  }
103
107
  function T(l) {
104
- m.value = l[t], e.optionAsValue ? c("update:modelValue", l) : c("update:modelValue", l[t]);
108
+ m.value = l[t], e.optionAsValue ? d("update:modelValue", l) : d("update:modelValue", l[t]);
105
109
  }
106
- function P(l, a, n) {
110
+ function P(l, a, r) {
107
111
  if (e.clickRowToSelect)
108
112
  if (e.mode === "multiple") {
109
- const o = n.target.closest("tr").querySelector('input[type="checkbox"]');
113
+ const o = r.target.closest("tr").querySelector('input[type="checkbox"]');
110
114
  o instanceof HTMLElement && o.click();
111
115
  } else {
112
- const o = n.target.closest("tr").querySelector('input[type="radio"]');
116
+ const o = r.target.closest("tr").querySelector('input[type="radio"]');
113
117
  o instanceof HTMLElement && o.click();
114
118
  }
115
119
  }
116
120
  function $() {
117
- e.mode === "multiple" ? (c("update:modelValue", []), u.value = []) : (m.value = null, c("update:modelValue", null));
121
+ e.mode === "multiple" ? (d("update:modelValue", []), u.value = []) : (m.value = null, d("update:modelValue", null));
118
122
  }
119
123
  function H(l, a) {
120
124
  return e.selectable && ae(e.selectable) ? e.selectable(l, a, q.value) : !0;
121
125
  }
122
- return (l, a) => (s(), S("div", {
123
- class: A(`${r(K)}-select-table`)
126
+ return (l, a) => (c(), S("div", {
127
+ class: A(`${n(x)}-select-table`)
124
128
  }, [
125
- k.value > 0 && e.showAlertToolbar ? (s(), S("div", {
129
+ k.value > 0 && e.showAlertToolbar ? (c(), S("div", {
126
130
  key: 0,
127
- class: A(`${r(K)}-select-table-alert-container`)
131
+ class: A(`${n(x)}-select-table-alert-container`)
128
132
  }, [
129
133
  X("span", null, "已选择 " + Y(k.value) + " 项", 1),
130
- V(r(re), {
134
+ V(n(ne), {
131
135
  type: "primary",
132
- underline: r(L)(r(E), "2.9.9") ? !1 : "never",
136
+ underline: n(K)(n(E), "2.9.9") ? !1 : "never",
133
137
  style: { "margin-left": "8px" },
134
138
  onClick: $
135
139
  }, {
@@ -139,11 +143,11 @@ import '../styles/select-table/index.css';const ye = /* @__PURE__ */ U({
139
143
  _: 1
140
144
  }, 8, ["underline"])
141
145
  ], 2)) : J("", !0),
142
- Q((s(), y(r(ue), w({
146
+ Q((c(), y(n(ue), w({
143
147
  ref_key: "elTableRef",
144
- ref: d
145
- }, r(_), {
146
- "row-key": r(t),
148
+ ref: s
149
+ }, n(_), {
150
+ "row-key": n(t),
147
151
  "row-class-name": e.clickRowToSelect ? "--click-row-select" : "",
148
152
  data: e.dataSource,
149
153
  "highlight-current-row": e.mode === "single",
@@ -152,23 +156,23 @@ import '../styles/select-table/index.css';const ye = /* @__PURE__ */ U({
152
156
  onRowClick: P
153
157
  }), {
154
158
  default: f(() => [
155
- e.mode === "multiple" ? (s(), y(r(b), {
159
+ e.mode === "multiple" ? (c(), y(n(b), {
156
160
  key: 0,
157
161
  type: "selection",
158
162
  selectable: H
159
- })) : (s(), y(r(b), {
163
+ })) : (c(), y(n(b), {
160
164
  key: 1,
161
165
  width: "46"
162
166
  }, {
163
- default: f(({ row: n }) => [
164
- V(r(ie), {
167
+ default: f(({ row: r }) => [
168
+ V(n(ie), {
165
169
  modelValue: m.value,
166
170
  "onUpdate:modelValue": a[0] || (a[0] = (o) => m.value = o),
167
171
  style: { width: "100%" }
168
172
  }, {
169
173
  default: f(() => [
170
- V(r(se), w(F(n[r(t)]), {
171
- onChange: () => T(n)
174
+ V(n(se), w(F(r[n(t)]), {
175
+ onChange: () => T(r)
172
176
  }), {
173
177
  default: f(() => [...a[2] || (a[2] = [
174
178
  C("   ", -1)
@@ -181,22 +185,22 @@ import '../styles/select-table/index.css';const ye = /* @__PURE__ */ U({
181
185
  ]),
182
186
  _: 1
183
187
  })),
184
- e.columns.length === 0 ? Z(l.$slots, "default", { key: 2 }) : (s(!0), S(ee, { key: 3 }, le(e.columns, (n) => (s(), y(r(b), w({ ref_for: !0 }, n, {
185
- key: n.prop || n.type
188
+ e.columns.length === 0 ? Z(l.$slots, "default", { key: 2 }) : (c(!0), S(ee, { key: 3 }, le(e.columns, (r) => (c(), y(n(b), w({ ref_for: !0 }, r, {
189
+ key: r.prop || r.type
186
190
  }), null, 16))), 128))
187
191
  ]),
188
192
  _: 3
189
193
  }, 16, ["row-key", "row-class-name", "data", "highlight-current-row"])), [
190
- [r(ce), e.loading]
194
+ [n(ce), e.loading]
191
195
  ])
192
196
  ], 2));
193
197
  }
194
- }), he = z(
198
+ }), Ae = z(
195
199
  ye,
196
200
  G({ dataSource: "dataSource", loading: "loading" })
197
201
  );
198
202
  export {
199
- he as SelectTable,
200
- he as default
203
+ Ae as SelectTable,
204
+ Ae as default
201
205
  };
202
206
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/select-table/select-table.vue","../../src/select-table/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { TableInstance } from 'element-plus'\r\nimport type { ISelectTableProps } from './types'\r\nimport { isEqual, isFn, isValid } from '@formily/shared'\r\nimport { useField } from '@silver-formily/vue'\r\nimport {\r\n ElLink,\r\n ElRadio,\r\n ElRadioGroup,\r\n ElTable,\r\n ElTableColumn,\r\n useAttrs,\r\n version,\r\n vLoading,\r\n} from 'element-plus'\r\nimport { differenceWith, remove, uniq, uniqWith, xor } from 'lodash-es'\r\nimport { computed, nextTick, ref, watch } from 'vue'\r\nimport { lt, stylePrefix } from '../__builtins__'\r\n\r\ndefineOptions({\r\n name: 'FSelectTable',\r\n inheritAttrs: false,\r\n})\r\n\r\nconst props = defineProps({\n columns: { default: () => [] },\n mode: { default: 'multiple' },\n dataSource: { default: () => [] },\n optionAsValue: { type: Boolean, default: false },\n valueType: { default: 'all' },\n loading: { type: Boolean, default: false },\n rowKey: null,\n clickRowToSelect: { type: Boolean, default: true },\n showAlertToolbar: { type: Boolean, default: true },\n modelValue: null,\n data: null,\n selectable: { type: Function },\n ignoreSelectable: { type: Boolean, default: true }\n})\r\n\r\nconst emit = defineEmits(['update:modelValue'])\r\n\r\nconst elTableProps = useAttrs()\r\nconst field = useField()\r\n\r\nfunction compatibleRadioValue(key: string) {\r\n return lt(version, '2.6.0') ? { label: key } : { value: key }\r\n}\r\n\r\nconst elTableRef = ref<TableInstance>()\r\nconst rowKey = props.rowKey\r\nfunction getInitialSelectedList() {\r\n if (props.mode === 'multiple') {\r\n return props.modelValue?.map((item) => {\r\n if (!props.optionAsValue) {\r\n return {\r\n [rowKey]: item,\r\n }\r\n }\r\n return item\r\n }) ?? []\r\n }\r\n else {\r\n return props.optionAsValue ? [props.modelValue] : [{ [rowKey]: props.modelValue }]\r\n }\r\n}\r\nconst initialSelectedList = getInitialSelectedList()\r\nconst selectedFlatDataSource = ref(initialSelectedList)\r\n// 为了获取移除的项而缓存的当前页面的前一次选择。由于element-plus没有获取移除项的方法,需要通过这种方式移除field中移除的项\r\nlet prevSelection = []\r\n\r\nconst radioSelectedKey = ref()\r\n\r\nconst currentSelectLength = computed(() => {\r\n if (props.mode === 'multiple') {\r\n return Array.isArray(props.modelValue) ? props.modelValue.length : 0\r\n }\r\n else {\r\n return isValid(radioSelectedKey.value) ? 1 : 0\r\n }\r\n})\r\n\r\nwatch(\r\n () => props.dataSource,\r\n async () => {\r\n const selectedKeys = uniq(\r\n selectedFlatDataSource.value.map(item => item[rowKey]),\r\n )\r\n await nextTick()\r\n for (const item of props.dataSource) {\r\n if (selectedKeys.includes(item[rowKey])) {\r\n if (props.mode === 'multiple') {\r\n elTableRef.value.toggleRowSelection(item, true, props.ignoreSelectable)\r\n }\r\n else {\r\n elTableRef.value.setCurrentRow(item)\r\n onRadioClick(item)\r\n }\r\n }\r\n await nextTick()\r\n prevSelection = elTableRef.value?.getSelectionRows()\r\n }\r\n },\r\n { immediate: true },\r\n)\r\n\r\nwatch(\r\n () => [props.modelValue, props.loading],\r\n async ([value, loading]) => {\r\n if (loading) {\r\n return\r\n }\r\n if (props.mode === 'single') {\r\n radioSelectedKey.value = props.optionAsValue ? value[rowKey] : value\r\n }\r\n else {\r\n await nextTick()\r\n const currentDisplayDataKeys = elTableRef.value\r\n ?.getSelectionRows()\r\n .map(item => item[rowKey])\r\n const valueKeys = props.optionAsValue\r\n ? value?.map(item => item[rowKey])\r\n : value ?? []\r\n selectedFlatDataSource.value = selectedFlatDataSource.value.filter(\r\n item => valueKeys.includes(item[rowKey]),\r\n )\r\n if (isEqual(valueKeys, currentDisplayDataKeys)) {\r\n return\r\n }\r\n const diffItems = xor(valueKeys, currentDisplayDataKeys)\r\n for (const tableItem of props.dataSource) {\r\n if (diffItems.includes(tableItem[rowKey])) {\r\n const shouldSelect = valueKeys.includes(tableItem[rowKey])\r\n elTableRef.value.toggleRowSelection(tableItem, shouldSelect, props.ignoreSelectable)\r\n }\r\n }\r\n }\r\n },\r\n {\r\n immediate: true,\r\n },\r\n)\r\n\r\nfunction onSelect(newSelection: Record<string, any>[]) {\r\n /* istanbul ignore if -- @preserve */\r\n if (!rowKey) {\r\n throw new Error('rowKey is required')\r\n }\r\n\r\n const removedItemList\r\n = prevSelection.length > newSelection.length\r\n ? differenceWith(\r\n prevSelection,\r\n newSelection,\r\n (itemPrev, itemNext) => {\r\n return itemPrev[rowKey] === itemNext[rowKey]\r\n },\r\n )\r\n : []\r\n prevSelection = [...newSelection]\r\n selectedFlatDataSource.value = uniqWith(\r\n [...selectedFlatDataSource.value, ...newSelection],\r\n (itemPrev, itemNext) => {\r\n return itemPrev[rowKey] === itemNext[rowKey]\r\n },\r\n )\r\n if (removedItemList.length > 0) {\r\n const removedKeys = uniq(removedItemList.map(item => item[rowKey]))\r\n remove(selectedFlatDataSource.value, item =>\r\n removedKeys.includes(item[rowKey]))\r\n }\r\n\r\n if (props.optionAsValue) {\r\n emit('update:modelValue', selectedFlatDataSource.value)\r\n }\r\n else {\r\n const selectedKeys = selectedFlatDataSource.value.map(\r\n item => item[rowKey],\r\n )\r\n emit('update:modelValue', selectedKeys)\r\n }\r\n}\r\n\r\nfunction onRadioClick(item) {\r\n radioSelectedKey.value = item[rowKey]\r\n if (props.optionAsValue) {\r\n emit('update:modelValue', item)\r\n }\r\n else {\r\n emit('update:modelValue', item[rowKey])\r\n }\r\n}\r\n\r\nfunction onRowClick(row: Record<string, any>, _, event: Event) {\r\n if (!props.clickRowToSelect)\r\n return\r\n\r\n if (props.mode === 'multiple') {\r\n const checkboxDOM = (event.target as Element)\r\n .closest('tr')\r\n .querySelector('input[type=\"checkbox\"]')\r\n if (checkboxDOM instanceof HTMLElement) {\r\n checkboxDOM.click()\r\n }\r\n }\r\n else {\r\n const radioDOM = (event.target as Element)\r\n .closest('tr')\r\n .querySelector('input[type=\"radio\"]')\r\n if (radioDOM instanceof HTMLElement) {\r\n radioDOM.click()\r\n }\r\n }\r\n}\r\n\r\nfunction onClearSelectionClick() {\r\n if (props.mode === 'multiple') {\r\n emit('update:modelValue', [])\r\n selectedFlatDataSource.value = []\r\n }\r\n else {\r\n radioSelectedKey.value = null\r\n emit('update:modelValue', null)\r\n }\r\n}\r\n\r\nfunction selectable(row: Record<string, any>, index: number) {\r\n if (props.selectable && isFn(props.selectable)) {\r\n return props.selectable(row, index, field.value)\r\n }\r\n return true\r\n}\r\n</script>\r\n\r\n<template>\r\n <div :class=\"`${stylePrefix}-select-table`\">\r\n <div\r\n v-if=\"currentSelectLength > 0 && props.showAlertToolbar\"\r\n :class=\"`${stylePrefix}-select-table-alert-container`\"\r\n >\r\n <span>已选择 {{ currentSelectLength }} 项</span>\r\n <ElLink\r\n type=\"primary\"\r\n :underline=\"lt(version, '2.9.9') ? false : 'never'\"\r\n style=\"margin-left: 8px;\"\r\n @click=\"onClearSelectionClick\"\r\n >\r\n 取消选择\r\n </ElLink>\r\n </div>\r\n <ElTable\r\n ref=\"elTableRef\"\r\n v-loading=\"props.loading\"\r\n v-bind=\"elTableProps\"\r\n :row-key=\"rowKey\"\r\n :row-class-name=\"props.clickRowToSelect ? `--click-row-select` : ''\"\r\n :data=\"props.dataSource\"\r\n :highlight-current-row=\"props.mode === 'single'\"\r\n @select=\"onSelect\"\r\n @select-all=\"onSelect\"\r\n @row-click=\"onRowClick\"\r\n >\r\n <ElTableColumn\r\n v-if=\"props.mode === 'multiple'\"\r\n type=\"selection\"\r\n :selectable=\"selectable\"\r\n />\r\n <ElTableColumn\r\n v-else\r\n width=\"46\"\r\n >\r\n <template #default=\"{ row }\">\r\n <ElRadioGroup v-model=\"radioSelectedKey\" style=\"width: 100%;\">\r\n <ElRadio\r\n v-bind=\"compatibleRadioValue(row[rowKey])\"\r\n @change=\"() => onRadioClick(row)\"\r\n >\r\n &nbsp;\r\n </ElRadio>\r\n </ElRadioGroup>\r\n </template>\r\n </ElTableColumn>\r\n <template v-if=\"props.columns.length === 0\">\r\n <slot />\r\n </template>\r\n <template v-else>\r\n <ElTableColumn\r\n v-for=\"colItem of props.columns\"\r\n v-bind=\"colItem\"\r\n :key=\"colItem.prop || colItem.type\"\r\n />\r\n </template>\r\n </ElTable>\r\n </div>\r\n</template>\r\n","import { connect, mapProps } from '@silver-formily/vue'\r\nimport InnerSelectTable from './select-table.vue'\r\nimport './style.scss'\r\n\r\nconst SelectTable = connect(\r\n InnerSelectTable,\r\n mapProps({ dataSource: 'dataSource', loading: 'loading' }),\r\n)\r\n\r\nexport { SelectTable }\r\n\r\nexport default SelectTable\r\n"],"names":["props","__props","emit","__emit","elTableProps","useAttrs","field","useField","compatibleRadioValue","key","lt","version","elTableRef","ref","rowKey","getInitialSelectedList","item","initialSelectedList","selectedFlatDataSource","prevSelection","radioSelectedKey","currentSelectLength","computed","isValid","watch","selectedKeys","uniq","nextTick","onRadioClick","value","loading","currentDisplayDataKeys","valueKeys","isEqual","diffItems","xor","tableItem","shouldSelect","onSelect","newSelection","removedItemList","differenceWith","itemPrev","itemNext","uniqWith","removedKeys","remove","onRowClick","row","_","event","checkboxDOM","radioDOM","onClearSelectionClick","selectable","index","isFn","_createElementBlock","_unref","stylePrefix","_createElementVNode","_toDisplayString","_createVNode","ElLink","_cache","_withDirectives","_openBlock","_createBlock","_mergeProps","ElTableColumn","_withCtx","ElRadioGroup","$event","_renderSlot","_ctx","_Fragment","_renderList","colItem","vLoading","SelectTable","connect","InnerSelectTable","mapProps"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/select-table/select-table.vue","../../src/select-table/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { TableInstance } from 'element-plus'\nimport type { ISelectTableProps } from './types'\nimport { isEqual, isFn, isValid } from '@formily/shared'\nimport { useField } from '@silver-formily/vue'\nimport {\n ElLink,\n ElRadio,\n ElRadioGroup,\n ElTable,\n ElTableColumn,\n useAttrs,\n version,\n vLoading,\n} from 'element-plus'\nimport { differenceWith, remove, uniq, uniqWith, xor } from 'lodash-es'\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { lt, stylePrefix } from '../__builtins__'\n\ndefineOptions({\n name: 'FSelectTable',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ISelectTableProps>(), {\n columns: () => [],\n mode: 'multiple',\n dataSource: () => [],\n optionAsValue: false,\n valueType: 'all',\n loading: false,\n clickRowToSelect: true,\n showAlertToolbar: true,\n ignoreSelectable: true,\n})\n\nconst emit = defineEmits(['update:modelValue'])\n\nconst elTableProps = useAttrs()\nconst field = useField()\n\nfunction compatibleRadioValue(key: string) {\n return lt(version, '2.6.0') ? { label: key } : { value: key }\n}\n\nconst elTableRef = ref<TableInstance>()\nconst rowKey = props.rowKey\nfunction getInitialSelectedList() {\n if (props.mode === 'multiple') {\n return props.modelValue?.map((item) => {\n if (!props.optionAsValue) {\n return {\n [rowKey]: item,\n }\n }\n return item\n }) ?? []\n }\n else {\n return props.optionAsValue ? [props.modelValue] : [{ [rowKey]: props.modelValue }]\n }\n}\nconst initialSelectedList = getInitialSelectedList()\nconst selectedFlatDataSource = ref(initialSelectedList)\n// 为了获取移除的项而缓存的当前页面的前一次选择。由于element-plus没有获取移除项的方法,需要通过这种方式移除field中移除的项\nlet prevSelection = []\n\nconst radioSelectedKey = ref()\n\nconst currentSelectLength = computed(() => {\n if (props.mode === 'multiple') {\n return Array.isArray(props.modelValue) ? props.modelValue.length : 0\n }\n else {\n return isValid(radioSelectedKey.value) ? 1 : 0\n }\n})\n\nwatch(\n () => props.dataSource,\n async () => {\n const selectedKeys = uniq(\n selectedFlatDataSource.value.map(item => item[rowKey]),\n )\n await nextTick()\n if (!elTableRef.value) {\n return\n }\n for (const item of props.dataSource) {\n if (selectedKeys.includes(item[rowKey])) {\n if (props.mode === 'multiple') {\n elTableRef.value?.toggleRowSelection(item, true, props.ignoreSelectable)\n }\n else {\n elTableRef.value?.setCurrentRow(item)\n onRadioClick(item)\n }\n }\n await nextTick()\n prevSelection = elTableRef.value?.getSelectionRows()\n }\n },\n { immediate: true },\n)\n\nwatch(\n () => [props.modelValue, props.loading],\n async ([value, loading]) => {\n if (loading) {\n return\n }\n if (props.mode === 'single') {\n radioSelectedKey.value = props.optionAsValue ? value[rowKey] : value\n }\n else {\n await nextTick()\n if (!elTableRef.value) {\n return\n }\n const currentDisplayDataKeys = elTableRef.value\n ?.getSelectionRows()\n .map(item => item[rowKey])\n const valueKeys = props.optionAsValue\n ? value?.map(item => item[rowKey])\n : value ?? []\n selectedFlatDataSource.value = selectedFlatDataSource.value.filter(\n item => valueKeys.includes(item[rowKey]),\n )\n if (isEqual(valueKeys, currentDisplayDataKeys)) {\n return\n }\n const diffItems = xor(valueKeys, currentDisplayDataKeys)\n for (const tableItem of props.dataSource) {\n if (diffItems.includes(tableItem[rowKey])) {\n const shouldSelect = valueKeys.includes(tableItem[rowKey])\n elTableRef.value.toggleRowSelection(tableItem, shouldSelect, props.ignoreSelectable)\n }\n }\n }\n },\n {\n immediate: true,\n },\n)\n\nfunction onSelect(newSelection: Record<string, any>[]) {\n /* istanbul ignore if -- @preserve */\n if (!rowKey) {\n throw new Error('rowKey is required')\n }\n\n const removedItemList\n = prevSelection.length > newSelection.length\n ? differenceWith(\n prevSelection,\n newSelection,\n (itemPrev, itemNext) => {\n return itemPrev[rowKey] === itemNext[rowKey]\n },\n )\n : []\n prevSelection = [...newSelection]\n selectedFlatDataSource.value = uniqWith(\n [...selectedFlatDataSource.value, ...newSelection],\n (itemPrev, itemNext) => {\n return itemPrev[rowKey] === itemNext[rowKey]\n },\n )\n if (removedItemList.length > 0) {\n const removedKeys = uniq(removedItemList.map(item => item[rowKey]))\n remove(selectedFlatDataSource.value, item =>\n removedKeys.includes(item[rowKey]))\n }\n\n if (props.optionAsValue) {\n emit('update:modelValue', selectedFlatDataSource.value)\n }\n else {\n const selectedKeys = selectedFlatDataSource.value.map(\n item => item[rowKey],\n )\n emit('update:modelValue', selectedKeys)\n }\n}\n\nfunction onRadioClick(item) {\n radioSelectedKey.value = item[rowKey]\n if (props.optionAsValue) {\n emit('update:modelValue', item)\n }\n else {\n emit('update:modelValue', item[rowKey])\n }\n}\n\nfunction onRowClick(row: Record<string, any>, _, event: Event) {\n if (!props.clickRowToSelect)\n return\n\n if (props.mode === 'multiple') {\n const checkboxDOM = (event.target as Element)\n .closest('tr')\n .querySelector('input[type=\"checkbox\"]')\n if (checkboxDOM instanceof HTMLElement) {\n checkboxDOM.click()\n }\n }\n else {\n const radioDOM = (event.target as Element)\n .closest('tr')\n .querySelector('input[type=\"radio\"]')\n if (radioDOM instanceof HTMLElement) {\n radioDOM.click()\n }\n }\n}\n\nfunction onClearSelectionClick() {\n if (props.mode === 'multiple') {\n emit('update:modelValue', [])\n selectedFlatDataSource.value = []\n }\n else {\n radioSelectedKey.value = null\n emit('update:modelValue', null)\n }\n}\n\nfunction selectable(row: Record<string, any>, index: number) {\n if (props.selectable && isFn(props.selectable)) {\n return props.selectable(row, index, field.value)\n }\n return true\n}\n</script>\n\n<template>\n <div :class=\"`${stylePrefix}-select-table`\">\n <div\n v-if=\"currentSelectLength > 0 && props.showAlertToolbar\"\n :class=\"`${stylePrefix}-select-table-alert-container`\"\n >\n <span>已选择 {{ currentSelectLength }} 项</span>\n <ElLink\n type=\"primary\"\n :underline=\"lt(version, '2.9.9') ? false : 'never'\"\n style=\"margin-left: 8px;\"\n @click=\"onClearSelectionClick\"\n >\n 取消选择\n </ElLink>\n </div>\n <ElTable\n ref=\"elTableRef\"\n v-loading=\"props.loading\"\n v-bind=\"elTableProps\"\n :row-key=\"rowKey\"\n :row-class-name=\"props.clickRowToSelect ? `--click-row-select` : ''\"\n :data=\"props.dataSource\"\n :highlight-current-row=\"props.mode === 'single'\"\n @select=\"onSelect\"\n @select-all=\"onSelect\"\n @row-click=\"onRowClick\"\n >\n <ElTableColumn\n v-if=\"props.mode === 'multiple'\"\n type=\"selection\"\n :selectable=\"selectable\"\n />\n <ElTableColumn\n v-else\n width=\"46\"\n >\n <template #default=\"{ row }\">\n <ElRadioGroup v-model=\"radioSelectedKey\" style=\"width: 100%;\">\n <ElRadio\n v-bind=\"compatibleRadioValue(row[rowKey])\"\n @change=\"() => onRadioClick(row)\"\n >\n &nbsp;\n </ElRadio>\n </ElRadioGroup>\n </template>\n </ElTableColumn>\n <template v-if=\"props.columns.length === 0\">\n <slot />\n </template>\n <template v-else>\n <ElTableColumn\n v-for=\"colItem of props.columns\"\n v-bind=\"colItem\"\n :key=\"colItem.prop || colItem.type\"\n />\n </template>\n </ElTable>\n </div>\n</template>\n","import { connect, mapProps } from '@silver-formily/vue'\r\nimport InnerSelectTable from './select-table.vue'\r\nimport './style.scss'\r\n\r\nconst SelectTable = connect<typeof InnerSelectTable>(\n InnerSelectTable,\n mapProps({ dataSource: 'dataSource', loading: 'loading' }),\r\n)\r\n\r\nexport { SelectTable }\r\n\r\nexport default SelectTable\r\n"],"names":["props","__props","emit","__emit","elTableProps","useAttrs","field","useField","compatibleRadioValue","key","lt","version","elTableRef","ref","rowKey","getInitialSelectedList","item","initialSelectedList","selectedFlatDataSource","prevSelection","radioSelectedKey","currentSelectLength","computed","isValid","watch","selectedKeys","uniq","nextTick","onRadioClick","value","loading","currentDisplayDataKeys","valueKeys","isEqual","diffItems","xor","tableItem","shouldSelect","onSelect","newSelection","removedItemList","differenceWith","itemPrev","itemNext","uniqWith","removedKeys","remove","onRowClick","row","_","event","checkboxDOM","radioDOM","onClearSelectionClick","selectable","index","isFn","_createElementBlock","_unref","stylePrefix","_createElementVNode","_toDisplayString","_createVNode","ElLink","_cache","_withDirectives","_openBlock","_createBlock","_mergeProps","ElTableColumn","_withCtx","ElRadioGroup","$event","_renderSlot","_ctx","_Fragment","_renderList","colItem","vLoading","SelectTable","connect","InnerSelectTable","mapProps"],"mappings":"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"}