@hzab/list-render 1.10.21-alpha.2 → 1.10.21-alpha.4
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 +4 -0
- package/package.json +1 -1
- package/src/components/CellEditTable/Template/ExpandListTemplate/index.tsx +16 -7
- package/src/components/CellEditTable/Template/widthWrap.tsx +2 -3
- package/src/components/CellEditTable/index.tsx +3 -6
- package/src/components/Formily/FormilyEditTable.tsx +9 -4
- package/src/table-render/index.jsx +1 -1
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MinusSquareOutlined, PlusCircleOutlined } from "@ant-design/icons";
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
2
|
+
import { useEffect, useState, memo } from "react";
|
|
3
3
|
import "./index.less";
|
|
4
4
|
export const ExpandListTemplate = (props) => {
|
|
5
5
|
const [expand, setExpand] = useState<boolean>(false);
|
|
@@ -7,14 +7,18 @@ export const ExpandListTemplate = (props) => {
|
|
|
7
7
|
const { Slots, setExpandKeys, expandKeys }: any = item;
|
|
8
8
|
const onExpand = (isExpand) => {
|
|
9
9
|
item?.setNewDataSource((pre) => {
|
|
10
|
+
const tempPre = [...pre];
|
|
11
|
+
const childrenIds = props?.record?.children?.map((el) => el?.groupId);
|
|
10
12
|
if (isExpand) {
|
|
11
13
|
const findIndex = pre?.findIndex((el) => el?.groupId == props?.record?.groupId);
|
|
12
|
-
pre
|
|
13
|
-
|
|
14
|
+
const filterList = pre?.filter((el) => childrenIds?.includes(el?.groupId)) || [];
|
|
15
|
+
if (filterList?.length == 0) {
|
|
16
|
+
tempPre.splice(findIndex + 1, 0, ...(props?.record?.children || []));
|
|
17
|
+
}
|
|
18
|
+
return [...tempPre];
|
|
14
19
|
}
|
|
15
|
-
const childrenIds = props?.record?.children?.map((el) => el?.groupId);
|
|
16
20
|
|
|
17
|
-
return
|
|
21
|
+
return tempPre?.filter((el) => !childrenIds?.includes(el?.groupId));
|
|
18
22
|
});
|
|
19
23
|
};
|
|
20
24
|
useEffect(() => {
|
|
@@ -29,7 +33,6 @@ export const ExpandListTemplate = (props) => {
|
|
|
29
33
|
// setExpand(props?.record?.expand);
|
|
30
34
|
}, [props?.record]);
|
|
31
35
|
|
|
32
|
-
// console.log(props,"propspropsprops2",Slots[item?.columnId]);
|
|
33
36
|
const colRender = function (text, record) {
|
|
34
37
|
const Slot = Slots[item?.columnId];
|
|
35
38
|
const slotProps = {
|
|
@@ -51,7 +54,7 @@ export const ExpandListTemplate = (props) => {
|
|
|
51
54
|
props.record["expand"] = !expand;
|
|
52
55
|
setExpandKeys((preExpandKeys) => {
|
|
53
56
|
if (preExpandKeys?.includes(props?.record?.groupId)) {
|
|
54
|
-
return preExpandKeys?.filter((el) => el
|
|
57
|
+
return preExpandKeys?.filter((el) => el != props?.record?.groupId);
|
|
55
58
|
}
|
|
56
59
|
return [...preExpandKeys, props?.record?.groupId];
|
|
57
60
|
});
|
|
@@ -64,6 +67,12 @@ export const ExpandListTemplate = (props) => {
|
|
|
64
67
|
className="expandList-template-icon"
|
|
65
68
|
onClick={() => {
|
|
66
69
|
props.record["expand"] = !expand;
|
|
70
|
+
setExpandKeys((preExpandKeys) => {
|
|
71
|
+
if (preExpandKeys?.includes(props?.record?.groupId)) {
|
|
72
|
+
return preExpandKeys?.filter((el) => el != props?.record?.groupId);
|
|
73
|
+
}
|
|
74
|
+
return [...preExpandKeys, props?.record?.groupId];
|
|
75
|
+
});
|
|
67
76
|
setExpand(!expand);
|
|
68
77
|
onExpand(!expand);
|
|
69
78
|
}}
|
|
@@ -192,8 +192,8 @@ export const WidthWrap = (opt: any, edit = false) => {
|
|
|
192
192
|
}, [cell]);
|
|
193
193
|
|
|
194
194
|
const echoValue = useMemo(() => {
|
|
195
|
-
if(!cell?.getField){
|
|
196
|
-
return
|
|
195
|
+
if (!cell?.getField) {
|
|
196
|
+
return;
|
|
197
197
|
}
|
|
198
198
|
return getVal(
|
|
199
199
|
{ ...(cell?.getField && cell?.getField()), enum: cell?.getField()?.enum || cell?.values },
|
|
@@ -205,7 +205,6 @@ export const WidthWrap = (opt: any, edit = false) => {
|
|
|
205
205
|
<div
|
|
206
206
|
style={{ width: "100%", height: "100%", display: "flex", alignItems: "center" }}
|
|
207
207
|
onDoubleClick={(e) => {
|
|
208
|
-
console.log(cell,"c222ellcellcellcellcell");
|
|
209
208
|
if (cell?.nonEditable) {
|
|
210
209
|
return;
|
|
211
210
|
}
|
|
@@ -107,7 +107,7 @@ export default function CellEditTable(props: any) {
|
|
|
107
107
|
const columnsItem = tableColumns[ind];
|
|
108
108
|
const cellItem = item[el];
|
|
109
109
|
let type: any = columnsItem?.type ?? "text";
|
|
110
|
-
if (!rowSelection && ind == 0
|
|
110
|
+
if (!rowSelection && ind == 0) {
|
|
111
111
|
type = "ExpandListTemplate";
|
|
112
112
|
}
|
|
113
113
|
if (rowSelection && ind == 1) {
|
|
@@ -130,7 +130,7 @@ export default function CellEditTable(props: any) {
|
|
|
130
130
|
return {
|
|
131
131
|
...columnsItem,
|
|
132
132
|
record: item,
|
|
133
|
-
rowId: item
|
|
133
|
+
rowId: item[rowKey] || columnsItem?.type,
|
|
134
134
|
type: type,
|
|
135
135
|
nonEditable: columnsItem?.nonEditable,
|
|
136
136
|
text: String(cellItem || ""),
|
|
@@ -153,14 +153,11 @@ export default function CellEditTable(props: any) {
|
|
|
153
153
|
}),
|
|
154
154
|
};
|
|
155
155
|
});
|
|
156
|
-
setRows([...headerList, ...tempDataSource]);
|
|
156
|
+
setRows(_.uniqBy([...headerList, ...tempDataSource], "rowId"));
|
|
157
157
|
}, [newDataSource, tableColumns, rowSelection]);
|
|
158
|
-
console.log(rows, "rowsrows");
|
|
159
158
|
|
|
160
159
|
// 单元格编辑回调
|
|
161
160
|
const handleCellsChanged = (changes) => {
|
|
162
|
-
console.log(changes, "changeschangeschanges");
|
|
163
|
-
|
|
164
161
|
setRows((prevRows) => {
|
|
165
162
|
changes.forEach((change) => {
|
|
166
163
|
const changeRowIdx = prevRows.findIndex((el) => el.rowId == change.rowId);
|
|
@@ -30,8 +30,9 @@ export interface EditableCellProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
30
30
|
onSave: (field: { type: string; name: string }) => void;
|
|
31
31
|
onCancel: () => void;
|
|
32
32
|
topProps: {
|
|
33
|
-
|
|
33
|
+
tableConf: { hasEdit: boolean | Function };
|
|
34
34
|
editMode: "modal" | "line" | "line-cell" | "cell";
|
|
35
|
+
canEditCallback: (record: Partial<Item> & { key: React.Key }, field: { type: string; name: string }, dataIndex: string) => void;
|
|
35
36
|
};
|
|
36
37
|
children: React.ReactNode;
|
|
37
38
|
}
|
|
@@ -56,8 +57,8 @@ export const EditableCell: React.FC<EditableCellProps> = ({
|
|
|
56
57
|
const field = getField && getField();
|
|
57
58
|
const fPattern = field?.["x-pattern"];
|
|
58
59
|
const fDisplay = field?.["x-display"];
|
|
59
|
-
const { editMode = "modal" } = topProps || {};
|
|
60
|
-
const { hasEdit } = topProps?.
|
|
60
|
+
const { editMode = "modal", canEditCallback } = topProps || {};
|
|
61
|
+
const { hasEdit } = topProps?.tableConf || {};
|
|
61
62
|
const fieldRef = useRef();
|
|
62
63
|
|
|
63
64
|
// 弹窗编辑模式
|
|
@@ -66,7 +67,11 @@ export const EditableCell: React.FC<EditableCellProps> = ({
|
|
|
66
67
|
}
|
|
67
68
|
// 无编辑权限或禁止编辑
|
|
68
69
|
const _hasEdit = hasEdit && typeof hasEdit === "function" ? hasEdit(record, index) : hasEdit !== false;
|
|
69
|
-
let _editable =
|
|
70
|
+
let _editable =
|
|
71
|
+
_hasEdit &&
|
|
72
|
+
editable &&
|
|
73
|
+
!(fPattern === "disabled" || fPattern === "readOnly" || fDisplay === "none") &&
|
|
74
|
+
(canEditCallback ? canEditCallback(record, field, dataIndex) : true);
|
|
70
75
|
if (!_editable) {
|
|
71
76
|
return <td {...restProps}>{children}</td>;
|
|
72
77
|
}
|
|
@@ -361,7 +361,7 @@ const TableRender = forwardRef(function (props, tableRef) {
|
|
|
361
361
|
|
|
362
362
|
const tableProps = {
|
|
363
363
|
className: "table-render",
|
|
364
|
-
rowKey: props
|
|
364
|
+
rowKey: props?.idKey || "id",
|
|
365
365
|
rowSelection: config?.rowSelection,
|
|
366
366
|
columns: columns,
|
|
367
367
|
dataSource: props.list,
|