@hzab/list-render 1.10.10 → 1.10.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # @hzab/list-render@1.10.11
2
+
3
+ fix: 行内编辑统一onEdit获取数据,单元格编辑支持传入其他参数
4
+
1
5
  # @hzab/list-render@1.10.10
2
6
 
3
7
  fix: 解决 FormModal 与 DetailModal 相互影响的问题
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/list-render",
3
- "version": "1.10.10",
3
+ "version": "1.10.11",
4
4
  "description": "",
5
5
  "main": "src",
6
6
  "scripts": {
@@ -27,7 +27,7 @@ export interface EditableCellProps extends React.HTMLAttributes<HTMLElement> {
27
27
  index: number;
28
28
  editable: boolean;
29
29
  onEdit: (record: Partial<Item> & { key: React.Key }, dataIndex: string, opt: Object) => void;
30
- onSave: () => void;
30
+ onSave: (field: { type: string; name: string }) => void;
31
31
  onCancel: () => void;
32
32
  topProps: {
33
33
  config: { hasEdit: boolean | Function };
@@ -100,7 +100,7 @@ export const EditableCell: React.FC<EditableCellProps> = ({
100
100
  />
101
101
  {editMode !== "line" ? (
102
102
  <div className="cell-editing-actions">
103
- <CheckOutlined className="table-cell-confirm-icon" onClick={onSave} />
103
+ <CheckOutlined className="table-cell-confirm-icon" onClick={() => onSave(field)} />
104
104
  <CloseOutlined className="table-cell-cancel-icon" onClick={onCancel} />
105
105
  </div>
106
106
  ) : null}
@@ -195,13 +195,20 @@ export const useEditTable = (props) => {
195
195
  const onEdit = async (record: Partial<Item> & { key: React.Key }, key, opt = { fieldRef: null }) => {
196
196
  const { fieldRef } = opt || {};
197
197
  editingFiledRef.current = fieldRef;
198
-
199
- // const value = await (props.onEdit && props.onEdit(record));
200
198
  formRender?.setValues(record);
201
199
  setEditingId(record[idKey]);
202
200
  setEditingKey(key);
203
201
  };
204
202
 
203
+ /**
204
+ * 点击编辑按钮
205
+ * @param record
206
+ */
207
+ const onEditAFetch = async (record: Partial<Item> & { key: React.Key }, ...args) => {
208
+ const value = await (props.onEdit && props.onEdit(record));
209
+ onEdit.call(this, value, ...args);
210
+ };
211
+
205
212
  const onCancel = () => {
206
213
  setEditingId("");
207
214
  setEditingKey("");
@@ -211,11 +218,11 @@ export const useEditTable = (props) => {
211
218
  /**
212
219
  * 保存数据
213
220
  */
214
- const onSave = async () => {
221
+ const onSave = async (field) => {
215
222
  try {
216
223
  // 点击保存,数据抛出
217
224
  (await formRender?.validate()) as Item;
218
- onEditSubmit && (await onEditSubmit(formRender.values));
225
+ onEditSubmit && (await onEditSubmit(formRender.values, { field } ));
219
226
  // 清除编辑目标
220
227
  setEditingId("");
221
228
  setEditingKey("");
@@ -246,7 +253,7 @@ export const useEditTable = (props) => {
246
253
  ? isEditing(record) && isEditingCell(col.dataIndex)
247
254
  : isEditing(record),
248
255
  topProps: props.topProps,
249
- onEdit,
256
+ onEdit: onEditAFetch,
250
257
  onSave,
251
258
  onCancel,
252
259
  }),
@@ -274,6 +281,7 @@ export const useEditTable = (props) => {
274
281
  });
275
282
 
276
283
  return {
284
+ onEditAFetch,
277
285
  onEdit,
278
286
  SchemaField,
279
287
  mergedColumns,
@@ -70,7 +70,6 @@ const ListRender = forwardRef(function (props, parentRef) {
70
70
  const [total, setTotal] = useState(0);
71
71
  const [list, setList] = useState([]);
72
72
  const [formState, setFormState] = useState("");
73
- const [rowId, setRowId] = useState(0);
74
73
  const [listLoading, setListLoading] = useState(false);
75
74
  const formModalRef = useRef();
76
75
  const detailModalRef = useRef();
@@ -329,14 +328,11 @@ const ListRender = forwardRef(function (props, parentRef) {
329
328
  }
330
329
 
331
330
  function handleDetail(data, id) {
332
- setRowId(id);
333
331
  let title = data[modalConf?.title?.detailKey] || modalConf?.title?.detailText || "详情";
334
332
  detailModalRef.current.show(data, title);
335
333
  }
336
334
 
337
335
  function onEdit(row, idx) {
338
- //编辑的时候提前存id和状态
339
- setRowId(row[idKey]);
340
336
  setFormState("edit");
341
337
 
342
338
  if (props.fetchOnEdit !== false) {
@@ -367,24 +363,27 @@ const ListRender = forwardRef(function (props, parentRef) {
367
363
 
368
364
  function handleEdit(data, id) {
369
365
  const { editMode = "modal" } = props;
370
- const isEditTable = editMode !== "modal";
371
- if (isEditTable) {
366
+ // 整行编辑的模式下列表数据回填
367
+ if (editMode == "line") {
372
368
  return tableRef.current.onEditByTable(data, id);
373
369
  }
374
- let title = data[modalConf?.title?.editKey] || modalConf?.title?.editText || "编辑";
375
- formModalRef.current.show(data, title, "edit");
370
+ if (editMode === "modal") {
371
+ let title = data[modalConf?.title?.editKey] || modalConf?.title?.editText || "编辑";
372
+ formModalRef.current.show(data, title, "edit");
373
+ }
376
374
  }
377
375
 
378
- async function onEditSubmit(data) {
376
+ async function onEditSubmit(data, opt) {
379
377
  let _data = data;
380
378
  if (isPatchUpdate) {
381
379
  if (model?.patchMap === "function") {
382
- _data = model.patchMap(data);
380
+ _data = model.patchMap(data, opt);
383
381
  }
384
382
  } else if (typeof model?.updateMap === "function") {
385
- _data = model.updateMap(data);
383
+ _data = model.updateMap(data, opt);
386
384
  }
387
385
 
386
+ // 行内编辑确认前的校验
388
387
  if (props.onEditReqVerify) {
389
388
  await props.onEditReqVerify(_data);
390
389
  }
@@ -394,7 +393,7 @@ const ListRender = forwardRef(function (props, parentRef) {
394
393
  }
395
394
  const request = isPatchUpdate ? model?.patch : model?.update;
396
395
  return request
397
- .bind(model)(_data, { id: rowId })
396
+ .bind(model)(_data, { id: data[idKey] })
398
397
  .then((res) => {
399
398
  getList();
400
399
  message.success(res?._message || "编辑成功");
@@ -283,10 +283,6 @@ const TableRender = forwardRef(function (props, tableRef) {
283
283
  <Button
284
284
  type="link"
285
285
  onClick={() => {
286
- // // 可编辑表格使用对应回调
287
- // if (isEditTable) {
288
- // return onEditByTable && onEditByTable(record, index);
289
- // }
290
286
  props.onEdit && props.onEdit(record, index);
291
287
  }}
292
288
  >