@hzab/list-render 1.10.6 → 1.10.8
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 +8 -0
- package/README.md +1 -0
- package/package.json +1 -1
- package/src/common/utils.js +0 -2
- package/src/components/Formily/FormilyEditTable.tsx +3 -3
- package/src/list-render.jsx +13 -4
- package/src/table-render/index.jsx +10 -7
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -104,6 +104,7 @@ const listDM = useMemo(
|
|
|
104
104
|
| editMode | modal/line/line-cell/cell | 否 | modal | 编辑模式: modal 弹窗/抽屉编辑; line 编辑整行,编辑按钮在操作列; line-cell 编辑整行,操作按钮在单元格; cell 编辑指定单元格 |
|
|
105
105
|
| appendUrlQuery | boolean | 否 | true | 筛选条件改变时是否将参数(对象形式)设置到 url query 中 |
|
|
106
106
|
| appendUrlQueryKey | string | 否 | URL_PARAM_NAME = "defaultSearchParams" | 自定义设置 url query 对象参数的 key |
|
|
107
|
+
| onEditReqVerify | Function | 否 | - | 编辑态保存时额外的规则校验函数,返回Promise的resolve或reject用于继续执行或停止执行
|
|
107
108
|
|
|
108
109
|
- fetchOnEdit 展示编辑弹框时,是否会调用一次详情接口进行回填(某些场景下,列表接口只返回部分部分字段,只有详情接口会返回全部字段);若为 false,则会使用表格列表接口返回的 row 数据进行回填
|
|
109
110
|
|
package/package.json
CHANGED
package/src/common/utils.js
CHANGED
|
@@ -193,8 +193,8 @@ export const useEditTable = (props) => {
|
|
|
193
193
|
const { fieldRef } = opt || {};
|
|
194
194
|
editingFiledRef.current = fieldRef;
|
|
195
195
|
|
|
196
|
-
const value = await (props.onEdit && props.onEdit(record));
|
|
197
|
-
formRender?.setValues(
|
|
196
|
+
// const value = await (props.onEdit && props.onEdit(record));
|
|
197
|
+
formRender?.setValues(record);
|
|
198
198
|
setEditingId(record[idKey]);
|
|
199
199
|
setEditingKey(key);
|
|
200
200
|
};
|
|
@@ -212,7 +212,7 @@ export const useEditTable = (props) => {
|
|
|
212
212
|
try {
|
|
213
213
|
// 点击保存,数据抛出
|
|
214
214
|
(await formRender?.validate()) as Item;
|
|
215
|
-
onEditSubmit && onEditSubmit(formRender.values);
|
|
215
|
+
onEditSubmit && await onEditSubmit(formRender.values);
|
|
216
216
|
// 清除编辑目标
|
|
217
217
|
setEditingId("");
|
|
218
218
|
setEditingKey("");
|
package/src/list-render.jsx
CHANGED
|
@@ -81,6 +81,7 @@ const ListRender = forwardRef(function (props, parentRef) {
|
|
|
81
81
|
const useFormData = _useFormData ?? dialogConf.useFormData ?? modalConf?.useFormData;
|
|
82
82
|
const getListSourceRef = useRef();
|
|
83
83
|
const [showSearch, setShowSearch] = useState(true);
|
|
84
|
+
const tableRef = useRef({});
|
|
84
85
|
|
|
85
86
|
useImperativeHandle(parentRef, () => ({
|
|
86
87
|
getList,
|
|
@@ -334,8 +335,6 @@ const ListRender = forwardRef(function (props, parentRef) {
|
|
|
334
335
|
}
|
|
335
336
|
|
|
336
337
|
function onEdit(row, idx) {
|
|
337
|
-
const { editMode = "modal" } = props;
|
|
338
|
-
const isEditTable = editMode !== "modal";
|
|
339
338
|
//编辑的时候提前存id和状态
|
|
340
339
|
setRowId(row[idKey]);
|
|
341
340
|
setFormState("edit");
|
|
@@ -351,7 +350,7 @@ const ListRender = forwardRef(function (props, parentRef) {
|
|
|
351
350
|
.get(getQuery)
|
|
352
351
|
.then((res) => {
|
|
353
352
|
// 解决非弹窗编辑模式触发弹窗问题
|
|
354
|
-
|
|
353
|
+
handleEdit(res, row[idKey]);
|
|
355
354
|
return res;
|
|
356
355
|
})
|
|
357
356
|
.catch((err) => {
|
|
@@ -361,12 +360,17 @@ const ListRender = forwardRef(function (props, parentRef) {
|
|
|
361
360
|
});
|
|
362
361
|
} else {
|
|
363
362
|
// 解决非弹窗编辑模式触发弹窗问题
|
|
364
|
-
|
|
363
|
+
handleEdit(row, row[idKey]);
|
|
365
364
|
return Promise.resolve(row);
|
|
366
365
|
}
|
|
367
366
|
}
|
|
368
367
|
|
|
369
368
|
function handleEdit(data, id) {
|
|
369
|
+
const { editMode = "modal" } = props;
|
|
370
|
+
const isEditTable = editMode !== "modal";
|
|
371
|
+
if (isEditTable) {
|
|
372
|
+
return tableRef.current.onEditByTable(data, id);
|
|
373
|
+
}
|
|
370
374
|
let title = data[modalConf?.title?.editKey] || modalConf?.title?.editText || "编辑";
|
|
371
375
|
formModalRef.current.show(data, title, "edit");
|
|
372
376
|
}
|
|
@@ -381,6 +385,10 @@ const ListRender = forwardRef(function (props, parentRef) {
|
|
|
381
385
|
_data = model.updateMap(data);
|
|
382
386
|
}
|
|
383
387
|
|
|
388
|
+
if (props.onEditReqVerify) {
|
|
389
|
+
await props.onEditReqVerify(_data);
|
|
390
|
+
}
|
|
391
|
+
|
|
384
392
|
if (useFormData) {
|
|
385
393
|
_data = objToFormData(_data);
|
|
386
394
|
}
|
|
@@ -489,6 +497,7 @@ const ListRender = forwardRef(function (props, parentRef) {
|
|
|
489
497
|
{layout === "default" ? (
|
|
490
498
|
<TableRender
|
|
491
499
|
idKey={idKey}
|
|
500
|
+
ref={tableRef}
|
|
492
501
|
schema={schema?.schema}
|
|
493
502
|
list={list}
|
|
494
503
|
config={props.tableConf}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEffect, useState, useMemo, useRef } from "react";
|
|
1
|
+
import { useEffect, useState, useMemo, useRef, forwardRef, useImperativeHandle } from "react";
|
|
2
2
|
import { Form, Table, Button, Popconfirm, Tooltip, Checkbox, Popover } from "antd";
|
|
3
3
|
import { QuestionCircleOutlined, FilterOutlined, SettingOutlined, MenuOutlined } from "@ant-design/icons";
|
|
4
4
|
import { SortableContainer, SortableElement, SortableHandle } from "react-sortable-hoc";
|
|
@@ -22,7 +22,7 @@ import "./index.less";
|
|
|
22
22
|
|
|
23
23
|
const scenario = "table-render";
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
const TableRender = forwardRef(function (props, tableRef) {
|
|
26
26
|
const { topProps, config = {}, query = {}, i18n, setList } = props;
|
|
27
27
|
const { tableDel = "删除", tableEdit = "编辑", tableDelTip = "确认删除该项?", tableDetail = "详情" } = i18n || {};
|
|
28
28
|
const {
|
|
@@ -37,6 +37,9 @@ function TableRender(props) {
|
|
|
37
37
|
} = config || {};
|
|
38
38
|
const { editMode = "modal" } = topProps || {};
|
|
39
39
|
const isEditTable = editMode !== "modal";
|
|
40
|
+
useImperativeHandle(tableRef, () => ({
|
|
41
|
+
onEditByTable,
|
|
42
|
+
}));
|
|
40
43
|
|
|
41
44
|
const [columns, setColumns] = useState([]);
|
|
42
45
|
const [columnList, setColumnList] = useState([]);
|
|
@@ -280,10 +283,10 @@ function TableRender(props) {
|
|
|
280
283
|
<Button
|
|
281
284
|
type="link"
|
|
282
285
|
onClick={() => {
|
|
283
|
-
// 可编辑表格使用对应回调
|
|
284
|
-
if (isEditTable) {
|
|
285
|
-
|
|
286
|
-
}
|
|
286
|
+
// // 可编辑表格使用对应回调
|
|
287
|
+
// if (isEditTable) {
|
|
288
|
+
// return onEditByTable && onEditByTable(record, index);
|
|
289
|
+
// }
|
|
287
290
|
props.onEdit && props.onEdit(record, index);
|
|
288
291
|
}}
|
|
289
292
|
>
|
|
@@ -438,6 +441,6 @@ function TableRender(props) {
|
|
|
438
441
|
/>
|
|
439
442
|
</div>
|
|
440
443
|
);
|
|
441
|
-
}
|
|
444
|
+
});
|
|
442
445
|
|
|
443
446
|
export default TableRender;
|