@aplus-frontend/ui 6.31.1 → 6.33.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 (176) hide show
  1. package/es/index.mjs +65 -61
  2. package/es/src/ag-grid/components/body-cell/index.vue2.mjs +14 -12
  3. package/es/src/ag-grid/editable/form-item.vue.d.ts +16 -0
  4. package/es/src/ag-grid/editable/form-item.vue.mjs +215 -0
  5. package/es/src/ag-grid/editable/form-item.vue2.mjs +4 -0
  6. package/es/src/ag-grid/editable/index.vue.d.ts +18 -0
  7. package/es/src/ag-grid/editable/index.vue.mjs +233 -0
  8. package/es/src/ag-grid/editable/index.vue2.mjs +4 -0
  9. package/es/src/ag-grid/editable/interface.d.ts +96 -0
  10. package/es/src/ag-grid/editable/interface.mjs +1 -0
  11. package/es/src/ag-grid/editable/style/css.d.ts +0 -0
  12. package/es/src/ag-grid/editable/style/css.js +1 -0
  13. package/es/src/ag-grid/editable/style/index.d.ts +0 -0
  14. package/es/src/ag-grid/editable/style/index.js +1 -0
  15. package/es/src/ag-grid/editable/utils.d.ts +5 -0
  16. package/es/src/ag-grid/editable/utils.mjs +23 -0
  17. package/es/src/ag-grid/hooks/use-editable-api.d.ts +15 -0
  18. package/es/src/ag-grid/hooks/use-editable-api.mjs +150 -0
  19. package/es/src/ag-grid/hooks/use-editable-columns.d.ts +6 -0
  20. package/es/src/ag-grid/hooks/use-editable-columns.mjs +96 -0
  21. package/es/src/ag-grid/hooks/use-editable-form-item-api.d.ts +15 -0
  22. package/es/src/ag-grid/hooks/use-editable-form-item-api.mjs +174 -0
  23. package/es/src/ag-grid/index.d.ts +4 -1
  24. package/es/src/ag-grid/index.mjs +3 -0
  25. package/es/src/ag-grid/index.vue.mjs +70 -66
  26. package/es/src/ag-grid/interface.d.ts +20 -1
  27. package/es/src/ag-grid/utils.d.ts +2 -0
  28. package/es/src/ag-grid/utils.mjs +12 -7
  29. package/es/src/ap-drawer/interface.d.ts +5 -0
  30. package/es/src/ap-drawer/utils/createDrawer.mjs +22 -19
  31. package/es/src/ap-field/date/index.vue.mjs +29 -28
  32. package/es/src/ap-field/radio/index.vue.d.ts +4 -0
  33. package/es/src/ap-field/radio/index.vue.mjs +9 -8
  34. package/es/src/ap-field/radio/read.vue2.mjs +5 -4
  35. package/es/src/ap-field/rate/index.vue.d.ts +20 -0
  36. package/es/src/ap-field/rate/index.vue.mjs +12 -11
  37. package/es/src/ap-form/interface.d.ts +4 -0
  38. package/es/src/ap-form/item/index.vue.mjs +41 -39
  39. package/es/src/ap-form/items/checkbox/index.vue.mjs +5 -5
  40. package/es/src/ap-form/items/date/index.vue.mjs +9 -9
  41. package/es/src/ap-form/items/date-range/index.vue.mjs +8 -8
  42. package/es/src/ap-form/items/number/index.vue.mjs +11 -11
  43. package/es/src/ap-form/items/radio/index.vue.d.ts +8 -0
  44. package/es/src/ap-form/items/radio/index.vue.mjs +6 -6
  45. package/es/src/ap-form/items/select/index.vue.mjs +3 -3
  46. package/es/src/ap-form/items/switch/index.vue.mjs +2 -2
  47. package/es/src/ap-form/items/text/index.vue2.mjs +12 -12
  48. package/es/src/ap-form/items/text/password.vue.mjs +2 -2
  49. package/es/src/ap-form/items/text-area/index.vue.d.ts +4 -4
  50. package/es/src/ap-form/items/text-area/index.vue.mjs +3 -3
  51. package/es/src/ap-form/items/tree-select/index.vue.mjs +6 -6
  52. package/es/src/ap-form/render/item.vue.mjs +6 -5
  53. package/es/src/ap-grid/utils/editable.d.ts +2 -1
  54. package/es/src/ap-modal/index.d.ts +1 -0
  55. package/es/src/ap-modal/index.mjs +29 -27
  56. package/es/src/ap-modal/interface.d.ts +5 -0
  57. package/es/src/ap-modal/utils/confirm.mjs +35 -34
  58. package/es/src/ap-modal/utils/createModal.mjs +39 -37
  59. package/es/src/ap-modal/utils/util.d.ts +3 -0
  60. package/es/src/ap-modal/utils/util.mjs +8 -2
  61. package/es/src/ap-table/constants.d.ts +4 -0
  62. package/es/src/ap-table/interface.d.ts +5 -0
  63. package/es/src/ap-table/utils.mjs +76 -71
  64. package/es/src/ap-upload/components/MultipleFile.vue.d.ts +10 -0
  65. package/es/src/business/ap-appendix/ap-appendix.vue2.mjs +67 -68
  66. package/es/src/business/ap-view/ap-view.vue2.mjs +20 -18
  67. package/es/src/business/ap-view/interface.d.ts +4 -0
  68. package/es/src/business/batch-input-group/form-item.vue.mjs +1 -1
  69. package/es/src/config-provider/config-provider.mjs +32 -24
  70. package/es/src/editable-table/utils.d.ts +3 -2
  71. package/es/src/index.mjs +57 -53
  72. package/es/src/version.d.ts +1 -1
  73. package/es/src/version.mjs +1 -1
  74. package/lib/index.js +1 -1
  75. package/lib/src/ag-grid/components/body-cell/index.vue2.js +1 -1
  76. package/lib/src/ag-grid/editable/form-item.vue.d.ts +16 -0
  77. package/lib/src/ag-grid/editable/form-item.vue.js +1 -0
  78. package/lib/src/ag-grid/editable/form-item.vue2.js +1 -0
  79. package/lib/src/ag-grid/editable/index.vue.d.ts +18 -0
  80. package/lib/src/ag-grid/editable/index.vue.js +1 -0
  81. package/lib/src/ag-grid/editable/index.vue2.js +1 -0
  82. package/lib/src/ag-grid/editable/interface.d.ts +96 -0
  83. package/lib/src/ag-grid/editable/interface.js +1 -0
  84. package/lib/src/ag-grid/editable/style/css.cjs +1 -0
  85. package/lib/src/ag-grid/editable/style/css.d.ts +0 -0
  86. package/lib/src/ag-grid/editable/style/index.cjs +1 -0
  87. package/lib/src/ag-grid/editable/style/index.d.ts +0 -0
  88. package/lib/src/ag-grid/editable/utils.d.ts +5 -0
  89. package/lib/src/ag-grid/editable/utils.js +1 -0
  90. package/lib/src/ag-grid/hooks/use-editable-api.d.ts +15 -0
  91. package/lib/src/ag-grid/hooks/use-editable-api.js +1 -0
  92. package/lib/src/ag-grid/hooks/use-editable-columns.d.ts +6 -0
  93. package/lib/src/ag-grid/hooks/use-editable-columns.js +1 -0
  94. package/lib/src/ag-grid/hooks/use-editable-form-item-api.d.ts +15 -0
  95. package/lib/src/ag-grid/hooks/use-editable-form-item-api.js +1 -0
  96. package/lib/src/ag-grid/index.d.ts +4 -1
  97. package/lib/src/ag-grid/index.js +1 -1
  98. package/lib/src/ag-grid/index.vue.js +1 -1
  99. package/lib/src/ag-grid/interface.d.ts +20 -1
  100. package/lib/src/ag-grid/utils.d.ts +2 -0
  101. package/lib/src/ag-grid/utils.js +1 -1
  102. package/lib/src/ap-drawer/interface.d.ts +5 -0
  103. package/lib/src/ap-drawer/utils/createDrawer.js +1 -1
  104. package/lib/src/ap-field/date/index.vue.js +1 -1
  105. package/lib/src/ap-field/radio/index.vue.d.ts +4 -0
  106. package/lib/src/ap-field/radio/index.vue.js +1 -1
  107. package/lib/src/ap-field/radio/read.vue2.js +1 -1
  108. package/lib/src/ap-field/rate/index.vue.d.ts +20 -0
  109. package/lib/src/ap-field/rate/index.vue.js +1 -1
  110. package/lib/src/ap-form/interface.d.ts +4 -0
  111. package/lib/src/ap-form/item/index.vue.js +1 -1
  112. package/lib/src/ap-form/items/checkbox/index.vue.js +1 -1
  113. package/lib/src/ap-form/items/date/index.vue.js +1 -1
  114. package/lib/src/ap-form/items/date-range/index.vue.js +1 -1
  115. package/lib/src/ap-form/items/number/index.vue.js +1 -1
  116. package/lib/src/ap-form/items/radio/index.vue.d.ts +8 -0
  117. package/lib/src/ap-form/items/radio/index.vue.js +1 -1
  118. package/lib/src/ap-form/items/select/index.vue.js +1 -1
  119. package/lib/src/ap-form/items/switch/index.vue.js +1 -1
  120. package/lib/src/ap-form/items/text/index.vue2.js +1 -1
  121. package/lib/src/ap-form/items/text/password.vue.js +1 -1
  122. package/lib/src/ap-form/items/text-area/index.vue.d.ts +4 -4
  123. package/lib/src/ap-form/items/text-area/index.vue.js +1 -1
  124. package/lib/src/ap-form/items/tree-select/index.vue.js +1 -1
  125. package/lib/src/ap-form/render/item.vue.js +1 -1
  126. package/lib/src/ap-grid/utils/editable.d.ts +2 -1
  127. package/lib/src/ap-modal/index.d.ts +1 -0
  128. package/lib/src/ap-modal/index.js +1 -1
  129. package/lib/src/ap-modal/interface.d.ts +5 -0
  130. package/lib/src/ap-modal/utils/confirm.js +1 -1
  131. package/lib/src/ap-modal/utils/createModal.js +1 -1
  132. package/lib/src/ap-modal/utils/util.d.ts +3 -0
  133. package/lib/src/ap-modal/utils/util.js +1 -1
  134. package/lib/src/ap-table/constants.d.ts +4 -0
  135. package/lib/src/ap-table/interface.d.ts +5 -0
  136. package/lib/src/ap-table/utils.js +1 -1
  137. package/lib/src/ap-upload/components/MultipleFile.vue.d.ts +10 -0
  138. package/lib/src/business/ap-appendix/ap-appendix.vue2.js +1 -1
  139. package/lib/src/business/ap-view/ap-view.vue2.js +1 -1
  140. package/lib/src/business/ap-view/interface.d.ts +4 -0
  141. package/lib/src/business/batch-input-group/form-item.vue.js +1 -1
  142. package/lib/src/config-provider/config-provider.js +1 -1
  143. package/lib/src/editable-table/utils.d.ts +3 -2
  144. package/lib/src/index.js +1 -1
  145. package/lib/src/version.d.ts +1 -1
  146. package/lib/src/version.js +1 -1
  147. package/package.json +3 -3
  148. package/theme/ag-grid/editable.css +52 -0
  149. package/theme/ag-grid/editable.less +11 -0
  150. package/theme/ag-grid/index.css +19 -0
  151. package/theme/ag-grid/index.less +2 -0
  152. package/theme/ap-appendix/ap-appendix.css +4 -13
  153. package/theme/ap-appendix/ap-appendix.less +5 -12
  154. package/theme/ap-form/ap-form-item.css +12 -0
  155. package/theme/ap-form/ap-form-item.less +12 -0
  156. package/theme/ap-form/index.css +12 -0
  157. package/theme/ap-form/search-form.css +12 -0
  158. package/theme/ap-grid/editable.css +1 -0
  159. package/theme/ap-grid/editable.less +1 -0
  160. package/theme/ap-grid/index.css +13 -0
  161. package/theme/ap-grid/index.less +1 -0
  162. package/theme/ap-table/ap-table.css +12 -0
  163. package/theme/ap-table-modal/index.css +12 -0
  164. package/theme/css-var.css +2 -0
  165. package/theme/css-var.less +4 -0
  166. package/theme/editable-table/index.css +13 -0
  167. package/theme/editable-table/index.less +1 -0
  168. package/theme/index.css +28 -13
  169. package/es/src/business/ap-appendix/icons/empty-admin-icon.vue.d.ts +0 -3
  170. package/es/src/business/ap-appendix/icons/empty-admin-icon.vue.mjs +0 -20
  171. package/es/src/business/ap-appendix/icons/empty-aplus-icon.vue.d.ts +0 -3
  172. package/es/src/business/ap-appendix/icons/empty-aplus-icon.vue.mjs +0 -20
  173. package/lib/src/business/ap-appendix/icons/empty-admin-icon.vue.d.ts +0 -3
  174. package/lib/src/business/ap-appendix/icons/empty-admin-icon.vue.js +0 -1
  175. package/lib/src/business/ap-appendix/icons/empty-aplus-icon.vue.d.ts +0 -3
  176. package/lib/src/business/ap-appendix/icons/empty-aplus-icon.vue.js +0 -1
@@ -0,0 +1,233 @@
1
+ import { defineComponent as G, useSlots as H, ref as f, watch as O, unref as n, createBlock as U, openBlock as W, withCtx as d, createVNode as y, mergeProps as M, createSlots as $, renderList as q, renderSlot as J, normalizeProps as Q, guardReactiveProps as X } from "vue";
2
+ import { ApForm as u } from "../../ap-form/index.mjs";
3
+ import { isEqual as Y, isArray as w, omit as Z } from "lodash-unified";
4
+ import "../../config-provider/index.mjs";
5
+ import "../../hooks/index.mjs";
6
+ import { useGetEditableColumns as ee } from "../hooks/use-editable-columns.mjs";
7
+ import "../index.vue2.mjs";
8
+ import { useEditableApi as oe } from "../hooks/use-editable-api.mjs";
9
+ import { arrayToObject as p } from "./utils.mjs";
10
+ import { useNamespace as ae } from "../../config-provider/hooks/use-namespace.mjs";
11
+ import { useControllableValue as te } from "../../hooks/useControllableValue.mjs";
12
+ import { useGlobalConfig as ne } from "../../config-provider/hooks/use-global-config.mjs";
13
+ import le from "../index.vue.mjs";
14
+ const be = /* @__PURE__ */ G({
15
+ name: "EditableGrid",
16
+ __name: "index",
17
+ props: {
18
+ dropdownPrefixCls: {},
19
+ bordered: {
20
+ type: Boolean
21
+ },
22
+ locale: {},
23
+ onResizeColumn: {},
24
+ getPopupContainer: {},
25
+ scroll: {},
26
+ sortDirections: {},
27
+ showSorterTooltip: {
28
+ type: [Boolean, Object]
29
+ },
30
+ prefixCls: {},
31
+ rowKey: {
32
+ type: [String, Function],
33
+ default: "key"
34
+ },
35
+ tableLayout: {},
36
+ title: {},
37
+ id: {},
38
+ showHeader: {
39
+ type: Boolean
40
+ },
41
+ components: {},
42
+ customRow: {},
43
+ customHeaderRow: {},
44
+ direction: {},
45
+ expandFixed: {
46
+ type: [String, Boolean]
47
+ },
48
+ expandColumnWidth: {},
49
+ expandedRowKeys: {},
50
+ defaultExpandedRowKeys: {},
51
+ expandedRowRender: {},
52
+ expandRowByClick: {
53
+ type: Boolean
54
+ },
55
+ expandIcon: {},
56
+ onExpand: {},
57
+ onExpandedRowsChange: {},
58
+ defaultExpandAllRows: {
59
+ type: Boolean
60
+ },
61
+ indentSize: {},
62
+ expandIconColumnIndex: {},
63
+ showExpandColumn: {
64
+ type: Boolean
65
+ },
66
+ expandedRowClassName: {},
67
+ childrenColumnName: {},
68
+ rowExpandable: {},
69
+ transformCellText: {},
70
+ rowSelection: {
71
+ type: Boolean
72
+ },
73
+ onLoadingChange: {},
74
+ onShownColumnsChange: {},
75
+ pagination: {
76
+ type: [Boolean, Object],
77
+ default: !1
78
+ },
79
+ searchFormWrapperStyle: {},
80
+ tableWrapperStyle: {},
81
+ wrapperStyle: {},
82
+ tableStyle: {},
83
+ adaptive: {
84
+ type: Boolean
85
+ },
86
+ columnResizable: {
87
+ type: Boolean,
88
+ default: !1
89
+ },
90
+ loading: {
91
+ type: Boolean,
92
+ default: void 0
93
+ },
94
+ summary: {},
95
+ rowHeight: {
96
+ default: 66
97
+ },
98
+ advanceRenderer: {
99
+ type: Boolean
100
+ },
101
+ browserTooltips: {
102
+ type: Boolean
103
+ },
104
+ virtual: {
105
+ type: [Boolean, Object],
106
+ default: void 0
107
+ },
108
+ onRowClicked: {},
109
+ onScrollEnd: {},
110
+ rowClassName: {},
111
+ rowClassRules: {},
112
+ autoHeight: {
113
+ type: Boolean
114
+ },
115
+ onUpdate: {},
116
+ columns: {},
117
+ value: {},
118
+ defaultValue: {},
119
+ "onUpdate:value": {},
120
+ onChange: {},
121
+ maxLength: {},
122
+ name: {
123
+ default: "ap-editable-table-inner-name"
124
+ },
125
+ onFieldChange: {}
126
+ },
127
+ emits: ["update:value"],
128
+ setup(g, {
129
+ expose: h,
130
+ emit: b
131
+ }) {
132
+ const v = H(), o = g, {
133
+ b: C
134
+ } = ae("editable-aggrid"), R = b, s = f(), {
135
+ value: r,
136
+ updateValue: m
137
+ } = te(o, R), l = f(), x = u.useWatch(o.name, l);
138
+ O(r, (e) => {
139
+ const a = p(e, o.rowKey);
140
+ Y(a, n(x)) || l.value?.setFieldValue(o.name, a);
141
+ }, {
142
+ deep: !0
143
+ });
144
+ const B = ne("valueTypeMap"), S = ee(o, B), {
145
+ add: _,
146
+ addMultiple: F,
147
+ remove: E,
148
+ removeByKey: T,
149
+ getRowData: N,
150
+ getRowsData: A,
151
+ setRowData: V,
152
+ clear: k,
153
+ refreshRowIds: i
154
+ } = oe(o, l, r, m);
155
+ function D() {
156
+ const e = s.value?._internalGridApi;
157
+ if (!i.value?.length || !e)
158
+ return;
159
+ const a = i.value.map((t) => e.getRowNode(t)).filter((t) => !!t);
160
+ e.refreshCells({
161
+ rowNodes: a,
162
+ force: !0
163
+ }), i.value = [];
164
+ }
165
+ function K() {
166
+ l.value?.resetFields();
167
+ }
168
+ function j(e) {
169
+ return e ? (w(e) ? e : [e]).map((t) => w(t) ? [o.name, ...t] : [o.name, t]) : void 0;
170
+ }
171
+ async function z(e, a) {
172
+ return (await l.value?.validateFields(j(e), a))?.[o.name];
173
+ }
174
+ function I(e) {
175
+ m(e);
176
+ const a = p(e, o.rowKey);
177
+ l.value?.setFieldValue(o.name, a);
178
+ }
179
+ function L(e) {
180
+ const a = e === "end" ? r.value.length - 1 : e;
181
+ s.value?.scrollToRow(a);
182
+ }
183
+ return h({
184
+ resetFields: K,
185
+ validateFields: z,
186
+ add: _,
187
+ addMultiple: F,
188
+ remove: E,
189
+ removeByKey: T,
190
+ getRowData: N,
191
+ getRowsData: A,
192
+ setRowData: V,
193
+ clear: k,
194
+ setTableData: I,
195
+ scrollTo: L
196
+ }), (e, a) => (W(), U(n(u), {
197
+ ref_key: "formRef",
198
+ ref: l,
199
+ "initial-values": {
200
+ [o.name]: n(p)(n(r), o.rowKey)
201
+ },
202
+ style: {
203
+ height: "100%"
204
+ }
205
+ }, {
206
+ default: d(() => [y(n(u).FormItem, {
207
+ name: e.name,
208
+ "no-style": ""
209
+ }, {
210
+ default: d(() => [y(le, M(n(Z)(o, ["name", "value", "onUpdate:value", "maxLength", "onChange", "defaultValue"]), {
211
+ ref_key: "tableRef",
212
+ ref: s,
213
+ class: n(C)(),
214
+ size: "mini",
215
+ columns: n(S),
216
+ "data-source": n(r),
217
+ "search-form": !1,
218
+ onUpdate: D
219
+ }), $({
220
+ _: 2
221
+ }, [q(v, (t, c) => ({
222
+ name: c,
223
+ fn: d((P) => [J(e.$slots, c, Q(X(P || {})))])
224
+ }))]), 1040, ["class", "columns", "data-source"])]),
225
+ _: 3
226
+ }, 8, ["name"])]),
227
+ _: 3
228
+ }, 8, ["initial-values"]));
229
+ }
230
+ });
231
+ export {
232
+ be as default
233
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./index.vue.mjs";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1,96 @@
1
+ import { Recordable } from '../../type';
2
+ import { ApTableValueFields, ApTableValueTypes, CommonFieldReturnType, FieldPropsType } from '../../ap-table/interface';
3
+ import { AgGridColumnType, AgGridProps } from '../interface';
4
+ import { VNode } from 'vue';
5
+ import { DataIndex } from '@aplus-frontend/antdv/es/vc-table/interface';
6
+ import { EditableTableExpose } from '../../editable-table';
7
+ import { NamePath } from '@aplus-frontend/antdv/es/form/interface';
8
+ import { ApFormItemProps } from '../../ap-form';
9
+ export type EditableAgGridColumnType<RecordType = any, ExtraValueType = 'text', ValueType extends ApTableValueTypes = ApTableValueTypes, MergedValueType extends ExtraValueType | ValueType = ExtraValueType | ValueType> = MergedValueType extends ExtraValueType | ValueType ? Omit<AgGridColumnType<RecordType, ExtraValueType, ValueType>, 'children' | 'customRender' | 'hideInSearch' | 'customRenderFormItem' | 'fieldProps'> & {
10
+ children?: EditableAgGridColumnType<RecordType, ExtraValueType, ValueType>[];
11
+ /**
12
+ * 是否可编辑
13
+ */
14
+ editable?: boolean | ((text: any, record: RecordType, index: number) => boolean);
15
+ /**
16
+ * 自定义表单,适用于内置`valueType`不满足的情况下使用
17
+ */
18
+ customRenderFormItem?: (config: EditableAgGridColumnType<RecordType>, fieldProps: Recordable, editable: boolean, record: RecordType) => any;
19
+ /**
20
+ * 指定值类型(将会用于普通列和可编辑表格的渲染)
21
+ */
22
+ valueType?: MergedValueType;
23
+ /**
24
+ * 值类型额外配置的参数(支持函数)
25
+ */
26
+ fieldProps?: FieldPropsType<Extract<MergedValueType, ValueType> extends never ? CommonFieldReturnType : ApTableValueFields[Extract<MergedValueType, ValueType>], RecordType, ExtraValueType, ValueType, MergedValueType>;
27
+ /**
28
+ * 自定义渲染,添加了`editable`以及`originalNode`
29
+ * @param opt
30
+ * @returns
31
+ */
32
+ customRender?: (opt: {
33
+ value: any;
34
+ text: any;
35
+ record: RecordType;
36
+ index: number;
37
+ renderIndex: number;
38
+ column: AgGridColumnType<RecordType>;
39
+ editable?: boolean;
40
+ originalNode?: VNode;
41
+ }) => any;
42
+ /**
43
+ * 是否渲染必填标记(只渲染标记不生成校验规则)
44
+ */
45
+ markRequired?: boolean;
46
+ } : never;
47
+ export type EditableAgGridProps<RecordType = any> = Omit<AgGridProps<RecordType>, 'columns' | 'dataSource' | 'onChange' | 'card' | 'request' | 'params' | 'defaultData' | 'searchForm' | 'beforeSearchSubmit' | 'manual' | 'size'> & {
48
+ /**
49
+ * 列配置
50
+ */
51
+ columns?: EditableAgGridColumnType<RecordType, any>[];
52
+ /**
53
+ * 表格数据v-model
54
+ */
55
+ value?: RecordType[];
56
+ /**
57
+ * 表格数据默认值(只生效一次,如果是异步数据,请使用`v-model`)
58
+ */
59
+ defaultValue?: RecordType[];
60
+ 'onUpdate:value'?: (value: RecordType[]) => void;
61
+ /**
62
+ * 数据修改时触发onChange(也包含数据的删除)
63
+ * @param value
64
+ * @returns
65
+ */
66
+ onChange?: (value: RecordType[]) => void;
67
+ /**
68
+ * 表格最大行数,超过行后将无法调用相关API新增
69
+ */
70
+ maxLength?: number;
71
+ /**
72
+ * 设置可编辑表格的名字,如果不传,将会使用默认值
73
+ */
74
+ name?: any;
75
+ /**
76
+ * 当字段值变更的时候触发(注意,向表单设置值并不会触发)
77
+ * @returns
78
+ */
79
+ onFieldChange?: (rowIndex: number, fieldName: DataIndex, newValue: any) => void;
80
+ };
81
+ export type EditableAgGridExpose<RecordType = any, ModelType = RecordType[]> = Omit<EditableTableExpose<ModelType, RecordType>, 'scrollTo' | 'remove'> & {
82
+ scrollTo: (index: number | 'end') => void;
83
+ remove: (data: RecordType | RecordType[]) => void;
84
+ };
85
+ export type EditableAgGridFormItemExpose<RecordType = any, ModelType = RecordType[]> = Omit<EditableAgGridExpose<RecordType, ModelType>, 'resetFields' | 'validateFields'>;
86
+ export type EditableAgGridFormItemProps<RecordType = any> = Omit<EditableAgGridProps<RecordType>, 'name' | 'value' | 'onUpdate:value'> & {
87
+ label?: string;
88
+ /**
89
+ * FormItem的name
90
+ */
91
+ name: NamePath;
92
+ /**
93
+ * 额外的表单项配置属性
94
+ */
95
+ formItem?: Partial<Omit<ApFormItemProps, 'name' | 'label'>>;
96
+ };
File without changes
@@ -0,0 +1 @@
1
+ import '@aplus-frontend/ui/theme/ag-grid/editable.css';
File without changes
@@ -0,0 +1 @@
1
+ import '@aplus-frontend/ui/theme/ag-grid/editable.less';
@@ -0,0 +1,5 @@
1
+ import { Recordable } from '../../type';
2
+ import { AgGridProps } from '../interface';
3
+ export declare function getRowKey(record: any, index: number | undefined, rowKey: AgGridProps['rowKey']): any;
4
+ export declare function arrayToObject(array: any[], rowKey: AgGridProps['rowKey']): Recordable;
5
+ export declare function updateArrItem(arr: any[], rowKey: AgGridProps['rowKey'], obj: Recordable): any[];
@@ -0,0 +1,23 @@
1
+ import { isString as a } from "lodash-unified";
2
+ function c(r, n, t) {
3
+ if (t)
4
+ return a(t) ? r[t] : t(r, n);
5
+ }
6
+ function s(r, n) {
7
+ const t = {};
8
+ return r.forEach((e, u) => {
9
+ const o = c(e, u, n);
10
+ t[o] = e;
11
+ }), t;
12
+ }
13
+ function g(r, n, t) {
14
+ return r.map((e, u) => {
15
+ const o = c(e, u, n);
16
+ return t[o] ?? e;
17
+ });
18
+ }
19
+ export {
20
+ s as arrayToObject,
21
+ c as getRowKey,
22
+ g as updateArrItem
23
+ };
@@ -0,0 +1,15 @@
1
+ import { Ref, ShallowRef } from 'vue';
2
+ import { ApFormInternalInstance, ApFormExpose } from '../../ap-form';
3
+ import { EditableAgGridProps } from '../editable/interface';
4
+ import { Key } from '@aplus-frontend/antdv/es/_util/type';
5
+ export declare const useEditableApi: <RecordType>(props: EditableAgGridProps<RecordType>, formApi: Ref<ApFormExpose | undefined> | ApFormInternalInstance | undefined, tableData: Ref<RecordType[]>, updateTableData?: (newData: RecordType[]) => void) => {
6
+ add: (defaultValue?: Partial<RecordType>, insertIndex?: number) => void;
7
+ addMultiple: (list: number | Partial<RecordType>[], insetIn?: "prefix" | "suffix") => void;
8
+ remove: (data: RecordType | RecordType[]) => void;
9
+ removeByKey: (key: Key | Key[]) => void;
10
+ getRowData: (index: number) => RecordType;
11
+ getRowsData: () => RecordType[];
12
+ setRowData: (index: string | number, payload: any, merge?: boolean) => void;
13
+ clear: () => void;
14
+ refreshRowIds: ShallowRef<string[], string[]>;
15
+ };
@@ -0,0 +1,150 @@
1
+ import { shallowRef as _, computed as S, unref as d, isRef as z } from "vue";
2
+ import { isDef as h } from "../../utils/index.mjs";
3
+ import { isFunction as x, isUndefined as A, isNumber as K, cloneDeep as E, isArray as I, isString as N } from "lodash-unified";
4
+ import { arrayToObject as U } from "../editable/utils.mjs";
5
+ let $ = 0;
6
+ function R() {
7
+ return `_ag_grid${$++}`;
8
+ }
9
+ const J = (n, m, i, g) => {
10
+ const w = _([]), y = S(() => z(m) ? d(m) : m);
11
+ function F(u, r) {
12
+ const l = d(i)?.length || 0;
13
+ if (h(n.maxLength) && l >= n.maxLength || !u && x(n.rowKey))
14
+ return;
15
+ const f = {
16
+ ...u || { [n.rowKey]: R() }
17
+ };
18
+ y.value?.setFieldValue?.(
19
+ n.name,
20
+ f,
21
+ !0,
22
+ (o, s) => {
23
+ const e = c(f, void 0, n.rowKey);
24
+ if (o[s] ? o[s][e] = f : o[s] = { [e]: f }, !i.value) {
25
+ i.value = [f];
26
+ return;
27
+ }
28
+ A(r) ? i.value.push(f) : (w.value = i.value.map(
29
+ (t, v) => v < r ? null : c(t, v, n.rowKey)
30
+ ).filter(Boolean), i.value.splice(r, 0, f));
31
+ }
32
+ );
33
+ }
34
+ function j(u, r = "suffix") {
35
+ const l = d(i)?.length || 0, f = K(u) ? u : u.length;
36
+ if (h(n.maxLength) && l + f > n.maxLength || K(u) && x(n.rowKey))
37
+ return;
38
+ const o = K(u) ? new Array(u).fill(0).map(() => ({ [n.rowKey]: R() })) : E(u), s = U(o, n.rowKey);
39
+ y.value?.setFieldValue?.(
40
+ n.name,
41
+ o,
42
+ !0,
43
+ (e, t) => {
44
+ if (e[t] ? Object.assign(e[t], s) : e[t] = s, !i.value) {
45
+ i.value = [...o];
46
+ return;
47
+ }
48
+ r === "suffix" ? i.value.push(...o) : (w.value = i.value.map(
49
+ (v, T) => c(v, T, n.rowKey)
50
+ ), i.value.unshift(...o));
51
+ }
52
+ );
53
+ }
54
+ function k(u) {
55
+ const r = I(u) ? u : [u];
56
+ y.value?.setFieldValue?.(
57
+ n.name,
58
+ void 0,
59
+ !0,
60
+ (l, f) => {
61
+ for (const e of r) {
62
+ const t = c(e, void 0, n.rowKey);
63
+ delete l[f][t];
64
+ }
65
+ const o = i.value.filter(
66
+ (e) => !r.includes(e)
67
+ ), s = i.value.findIndex(
68
+ (e) => r.includes(e)
69
+ );
70
+ w.value = i.value.map(
71
+ (e, t) => t <= s ? null : c(e, t, n.rowKey)
72
+ ).filter(Boolean), g?.(o);
73
+ }
74
+ );
75
+ }
76
+ function c(u, r, l) {
77
+ if (l)
78
+ return N(l) ? u[l] : l(u, r);
79
+ }
80
+ function L(u) {
81
+ const r = new Set(I(u) ? u : [u]);
82
+ r.size !== 0 && y.value?.setFieldValue?.(
83
+ n.name,
84
+ void 0,
85
+ !0,
86
+ (l, f) => {
87
+ for (const e of r)
88
+ delete l[f][e];
89
+ const o = i.value.filter(
90
+ (e, t) => !r.has(c(e, t, n.rowKey))
91
+ ), s = i.value.findIndex(
92
+ (e, t) => r.has(c(e, t, n.rowKey))
93
+ );
94
+ w.value = i.value.map(
95
+ (e, t) => t <= s ? null : c(e, t, n.rowKey)
96
+ ).filter(Boolean), g?.(o);
97
+ }
98
+ );
99
+ }
100
+ function O(u) {
101
+ return d(i)?.[u];
102
+ }
103
+ function V() {
104
+ return d(i);
105
+ }
106
+ function B(u, r, l = !0) {
107
+ y.value?.setFieldValue?.(
108
+ n.name,
109
+ void 0,
110
+ !0,
111
+ (f, o) => {
112
+ const s = i.value.findIndex(
113
+ (t, v) => u === v
114
+ );
115
+ if (!~s)
116
+ return;
117
+ const e = c(
118
+ i.value[s],
119
+ s,
120
+ n.rowKey
121
+ );
122
+ if (e && !(!f[o] || !f[o][e])) {
123
+ if (!l) {
124
+ const t = Object.keys(f[o][e]);
125
+ for (const v of t)
126
+ v !== n.rowKey && delete f[o][e][v];
127
+ }
128
+ Object.assign(f[o][e], { ...r });
129
+ }
130
+ }
131
+ );
132
+ }
133
+ function a() {
134
+ y.value?.setFieldValue?.(n.name, {}), g?.([]);
135
+ }
136
+ return {
137
+ add: F,
138
+ addMultiple: j,
139
+ remove: k,
140
+ removeByKey: L,
141
+ getRowData: O,
142
+ getRowsData: V,
143
+ setRowData: B,
144
+ clear: a,
145
+ refreshRowIds: w
146
+ };
147
+ };
148
+ export {
149
+ J as useEditableApi
150
+ };
@@ -0,0 +1,6 @@
1
+ import { ComputedRef, Ref } from 'vue';
2
+ import { EditableAgGridProps } from '../editable/interface';
3
+ import { ValueTypeRenderConfig } from '../../config-provider';
4
+ import { AgGridColumnType } from '../interface';
5
+ export declare const useGetEditableColumns: (props: EditableAgGridProps, extraValueTypes: Ref<Record<string, ValueTypeRenderConfig> | undefined>, shadowName?: string) => ComputedRef<AgGridColumnType[]>;
6
+ export default useGetEditableColumns;
@@ -0,0 +1,96 @@
1
+ import { unref as w, computed as E } from "vue";
2
+ import { isFunction as F, isArray as g } from "lodash-unified";
3
+ import { mergeClass as p, getColumnIsRequired as v } from "../../editable-table/utils.mjs";
4
+ import { updateFormProps as y, getFieldProps as q } from "../../ap-table/utils.mjs";
5
+ import { getFinalEditableNode as A } from "../../ap-grid/utils/editable.mjs";
6
+ import { isDef as K } from "../../utils/index.mjs";
7
+ import { getRowKey as M } from "../editable/utils.mjs";
8
+ function m(t, r, n) {
9
+ t.__skipNextRefresh ? t.__skipNextRefresh[r] = n : t.__skipNextRefresh = { [r]: n };
10
+ }
11
+ function D(t, r, n) {
12
+ t.__prevEditable ? t.__prevEditable[r] = n : t.__prevEditable = { [r]: n };
13
+ }
14
+ const J = (t, r, n) => {
15
+ function h(e) {
16
+ return !e.editable || e.children?.length ? {} : {
17
+ customRender({ value: f, originalNode: d, params: o, ...i }) {
18
+ const s = F(e.editable) ? e.editable(
19
+ i.text,
20
+ i.record,
21
+ i.rowIndex
22
+ ) : !!e.editable;
23
+ let c = d;
24
+ if (s) {
25
+ const u = y(
26
+ e,
27
+ q(e.fieldProps, {
28
+ value: f,
29
+ ...i
30
+ })
31
+ ), b = {};
32
+ t.onFieldChange && (b[`onUpdate:${u.valuePropName || "value"}`] = (k) => t.onFieldChange?.(
33
+ i.rowIndex,
34
+ e.dataIndex,
35
+ k
36
+ ));
37
+ const I = g(e.dataIndex) ? e.dataIndex : [e.dataIndex], C = n ? [n] : g(t.name) ? t.name : [t.name], R = M(
38
+ i.record,
39
+ i.rowIndex,
40
+ t.rowKey
41
+ ), N = {
42
+ name: [...C, String(R), ...I],
43
+ ...u || {},
44
+ field: {
45
+ style: "width: 100%",
46
+ ...u?.field || {},
47
+ ...b,
48
+ class: p("is-editable", u.class)
49
+ }
50
+ };
51
+ c = A(
52
+ e,
53
+ N,
54
+ i.record,
55
+ w(r)
56
+ );
57
+ }
58
+ e.customRender && (c = e.customRender({
59
+ value: f,
60
+ ...i,
61
+ editable: s,
62
+ originalNode: c,
63
+ index: i.rowIndex,
64
+ renderIndex: i.rowIndex
65
+ }));
66
+ const a = o.node, l = o.column.getColId(), _ = a.__prevEditable?.[l];
67
+ return !a.__skipNextRefresh?.[l] && K(_) && _ !== s && (m(a, l, !0), setTimeout(() => {
68
+ o?.api.refreshCells({
69
+ rowNodes: [o.node],
70
+ columns: [o.column.getColId()],
71
+ force: !0
72
+ }), m(a, l, !1);
73
+ }, 0)), D(a, l, s), c;
74
+ }
75
+ };
76
+ }
77
+ return E(() => {
78
+ const e = t.columns;
79
+ if (!e)
80
+ return [];
81
+ function x(f) {
82
+ return f.map((d) => ({
83
+ ...d,
84
+ _requireMark: v(d),
85
+ children: x(d.children || []),
86
+ // 处理可编辑/不可编辑下的单元格渲染
87
+ ...h(d)
88
+ }));
89
+ }
90
+ return x(e);
91
+ });
92
+ };
93
+ export {
94
+ J as default,
95
+ J as useGetEditableColumns
96
+ };
@@ -0,0 +1,15 @@
1
+ import { Ref, ShallowRef } from 'vue';
2
+ import { ApFormInternalInstance } from '../../ap-form';
3
+ import { EditableAgGridProps } from '../editable/interface';
4
+ import { Key } from '@aplus-frontend/antdv/es/_util/type';
5
+ export declare const useEditableFormItemApi: <RecordType>(props: EditableAgGridProps<RecordType>, formApi: ApFormInternalInstance | undefined, tableData: Ref<RecordType[]>, shadowName: string) => {
6
+ add: (defaultValue?: Partial<RecordType>, insertIndex?: number) => void;
7
+ addMultiple: (list: number | Partial<RecordType>[], insetIn?: "prefix" | "suffix") => void;
8
+ remove: (data: RecordType | RecordType[]) => void;
9
+ removeByKey: (key: Key | Key[]) => void;
10
+ getRowData: (index: number) => RecordType;
11
+ getRowsData: () => RecordType[];
12
+ setRowData: (index: number, payload: any, merge?: boolean) => void;
13
+ clear: () => void;
14
+ refreshRowIds: ShallowRef<string[], string[]>;
15
+ };