es-grid-template 1.9.91 → 1.9.93
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/es/ali-table/InternalTable.js +1 -1
- package/es/ali-table/pipeline/features/columnCustom.js +6 -0
- package/es/grid-component/GridRefreshButton.css +9 -9
- package/es/grid-component/hooks/utils.js +1 -0
- package/es/group-component/hook/utils.d.ts +3 -3
- package/es/group-component/hook/utils.js +1 -0
- package/es/group-component/table/Grid.js +1 -1
- package/es/table-component/body/TableBodyCellEdit.js +5 -4
- package/es/table-component/hook/utils.js +1 -0
- package/es/table-component/style.js +1 -1
- package/es/table-component/style.scss +6 -2
- package/es/table-component/table/Grid.js +1 -1
- package/es/table-virtuoso/hook/utils.js +1 -0
- package/es/table-virtuoso/table/Grid.js +1 -1
- package/lib/ali-table/InternalTable.js +1 -1
- package/lib/ali-table/pipeline/features/columnCustom.js +6 -0
- package/lib/grid-component/GridRefreshButton.css +9 -9
- package/lib/grid-component/hooks/utils.js +1 -0
- package/lib/group-component/hook/utils.d.ts +9 -9
- package/lib/group-component/hook/utils.js +1 -0
- package/lib/group-component/table/Grid.js +1 -1
- package/lib/table-component/body/TableBodyCellEdit.js +5 -4
- package/lib/table-component/hook/utils.js +1 -0
- package/lib/table-component/style.js +1 -1
- package/lib/table-component/style.scss +6 -2
- package/lib/table-component/table/Grid.js +1 -1
- package/lib/table-virtuoso/hook/utils.js +1 -0
- package/lib/table-virtuoso/table/Grid.js +1 -1
- package/package.json +1 -1
|
@@ -338,6 +338,9 @@ export function columnCustom(opts) {
|
|
|
338
338
|
// Chức năng edit
|
|
339
339
|
|
|
340
340
|
const handleEdit = (e, record, col, editType, isKeyDown, isHeader) => {
|
|
341
|
+
if (!isHeader && (!isEditable(col, record) || rowEditable?.(record) === false)) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
341
344
|
reset?.();
|
|
342
345
|
const cell = e.currentTarget;
|
|
343
346
|
pipeline.setStateAtKey(stateKeyIsEditing, {
|
|
@@ -550,6 +553,9 @@ export function columnCustom(opts) {
|
|
|
550
553
|
// Không vượt quá số cột
|
|
551
554
|
return;
|
|
552
555
|
}
|
|
556
|
+
if (!isEditable(leafColumns[targetCol], newData[targetRow])) {
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
553
559
|
const columnKey = leafColumns[targetCol].field;
|
|
554
560
|
newData[targetRow] = {
|
|
555
561
|
...newData[targetRow],
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
.ui-rc-grid-refresh-spin {
|
|
2
|
-
transform-origin: center;
|
|
3
|
-
transform-box: fill-box;
|
|
4
|
-
animation: ui-rc-grid-refresh-spin 0.8s linear infinite;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
@keyframes ui-rc-grid-refresh-spin {
|
|
8
|
-
to { transform: rotate(360deg); }
|
|
9
|
-
}
|
|
1
|
+
.ui-rc-grid-refresh-spin {
|
|
2
|
+
transform-origin: center;
|
|
3
|
+
transform-box: fill-box;
|
|
4
|
+
animation: ui-rc-grid-refresh-spin 0.8s linear infinite;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
@keyframes ui-rc-grid-refresh-spin {
|
|
8
|
+
to { transform: rotate(360deg); }
|
|
9
|
+
}
|
|
@@ -2414,6 +2414,7 @@ export function groupArrayByColumns(data, columns) {
|
|
|
2414
2414
|
rowId: newGuid(),
|
|
2415
2415
|
parentId: !isEmpty(item[columns[index - 1]]) ? item[columns[index - 1]] : null,
|
|
2416
2416
|
// tự tính tổng rồi điền thuộc tính vào
|
|
2417
|
+
isGroupRow: true,
|
|
2417
2418
|
children: []
|
|
2418
2419
|
};
|
|
2419
2420
|
currentLevel.push(newItem);
|
|
@@ -196,10 +196,10 @@ export declare const fixColumnsLeft: <RecordType>(columns: ColumnTable<RecordTyp
|
|
|
196
196
|
value: any;
|
|
197
197
|
rowData: RecordType;
|
|
198
198
|
}) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | import("react").ReactNode);
|
|
199
|
-
onCellStyles?: Omit<CSSProperties, "
|
|
200
|
-
onCellHeaderStyles?: Omit<CSSProperties, "
|
|
199
|
+
onCellStyles?: Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width"> | ((cellValue: any, cell: import("@tanstack/react-table").Cell<RecordType, unknown>) => Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width">);
|
|
200
|
+
onCellHeaderStyles?: Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width"> | ((cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width">);
|
|
201
201
|
onCell?: (rowData: RecordType, index: number) => import("react").TdHTMLAttributes<HTMLTableCellElement>;
|
|
202
|
-
onCellFooterStyles?: Omit<CSSProperties, "
|
|
202
|
+
onCellFooterStyles?: Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width"> | ((cellValue: any, cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width">);
|
|
203
203
|
getValue?: (row: any, rowIndex: number) => any;
|
|
204
204
|
getCellProps?: (value: any, row: any, rowIndex: number) => import("./../../grid-component/type").CellProps;
|
|
205
205
|
headerCellProps?: import("./../../grid-component/type").CellProps;
|
|
@@ -238,6 +238,7 @@ export function groupArrayByColumns(arr, columns) {
|
|
|
238
238
|
parentId: !isEmpty(item[columns[index - 1]]) ? item[columns[index - 1]] : null,
|
|
239
239
|
// parentId: item.rowId[index - 1],
|
|
240
240
|
// indent: index,
|
|
241
|
+
isGroupRow: true,
|
|
241
242
|
children: []
|
|
242
243
|
};
|
|
243
244
|
currentLevel.push(newItem);
|
|
@@ -197,7 +197,7 @@ const Grid = props => {
|
|
|
197
197
|
rowSelected?.({
|
|
198
198
|
type: isSelectionChange.type,
|
|
199
199
|
rowData: isSelectionChange.rowData,
|
|
200
|
-
selected: rs
|
|
200
|
+
selected: rs.filter(x => !x.isGroupRow)
|
|
201
201
|
});
|
|
202
202
|
}
|
|
203
203
|
}, [isSelectionChange, rowSelection, table.getState().rowSelection]);
|
|
@@ -269,6 +269,7 @@ const TableBodyCellEdit = props => {
|
|
|
269
269
|
return selectRowIds.includes(cell.row.id) && colIdss.includes(cell.column.id);
|
|
270
270
|
}, [cell.column.id, cell.row.id, endCell, selectRowIds, startCell, table]);
|
|
271
271
|
const editType = typeof columnMeta.editType === 'function' ? columnMeta.editType(record) : columnMeta.editType;
|
|
272
|
+
const isSelectCell = ['select', 'selectTable', 'asyncSelect', 'treeSelect'].includes(editType ?? 'text');
|
|
272
273
|
const {
|
|
273
274
|
rowRange,
|
|
274
275
|
colRange,
|
|
@@ -1453,7 +1454,7 @@ const TableBodyCellEdit = props => {
|
|
|
1453
1454
|
}, cellContent)))
|
|
1454
1455
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1455
1456
|
className: classNames('ui-rc_cell-content', {
|
|
1456
|
-
'select-cell':
|
|
1457
|
+
'select-cell': isSelectCell
|
|
1457
1458
|
})
|
|
1458
1459
|
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
|
|
1459
1460
|
className: "ui-rc-table-row-expand-trigger",
|
|
@@ -1491,14 +1492,14 @@ const TableBodyCellEdit = props => {
|
|
|
1491
1492
|
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
|
|
1492
1493
|
})) : /*#__PURE__*/React.createElement("span", {
|
|
1493
1494
|
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
|
|
1494
|
-
}))), cellContent,
|
|
1495
|
+
}))), cellContent, isSelectCell && canEdit && /*#__PURE__*/React.createElement("span", {
|
|
1495
1496
|
className: 'caret-down',
|
|
1496
1497
|
onClick: e => {
|
|
1497
1498
|
handleEdit(e);
|
|
1498
1499
|
}
|
|
1499
1500
|
})))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
1500
1501
|
className: classNames('ui-rc_cell-content', {
|
|
1501
|
-
'select-cell':
|
|
1502
|
+
'select-cell': isSelectCell
|
|
1502
1503
|
})
|
|
1503
1504
|
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/React.createElement("div", {
|
|
1504
1505
|
className: "ui-rc-table-row-expand-trigger",
|
|
@@ -1536,7 +1537,7 @@ const TableBodyCellEdit = props => {
|
|
|
1536
1537
|
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
|
|
1537
1538
|
})) : /*#__PURE__*/React.createElement("span", {
|
|
1538
1539
|
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
|
|
1539
|
-
}))), cellContent,
|
|
1540
|
+
}))), cellContent, isSelectCell && canEdit && /*#__PURE__*/React.createElement("span", {
|
|
1540
1541
|
className: 'caret-down',
|
|
1541
1542
|
onClick: e => {
|
|
1542
1543
|
handleEdit(e);
|
|
@@ -303,6 +303,7 @@ export function groupArrayByColumns(arr, columns) {
|
|
|
303
303
|
parentId: !isEmpty(item[columns[index - 1]]) ? item[columns[index - 1]] : null,
|
|
304
304
|
// parentId: item.rowId[index - 1],
|
|
305
305
|
// indent: index,
|
|
306
|
+
isGroupRow: true,
|
|
306
307
|
children: []
|
|
307
308
|
};
|
|
308
309
|
currentLevel.push(newItem);
|
|
@@ -48,4 +48,4 @@ const colorDark = '#e6e4f3e6 ';
|
|
|
48
48
|
export const GridStyle = styled.div.withConfig({
|
|
49
49
|
displayName: "GridStyle",
|
|
50
50
|
componentId: "es-grid-template__sc-hdqm5k-0"
|
|
51
|
-
})(["--row-height:34px;--color:#333;--bgcolor:white;--body-hover-bgcolor:#f5f5f5;--body-hover-color:#333;--hover-bgcolor:var(--body-hover-bgcolor);--hover-color:var(--body-hover-color);--highlight-bgcolor:#eee;--header-row-height:34px;--header-color:#000000de;--header-bgcolor:#ffffff;--header-hover-bgcolor:#ddd;--header-highlight-bgcolor:#e4e8ed;--cell-padding:7px 8px;--font-size:13px;--line-height:1.28571;--lock-shadow:rgba(152,152,152,0.5) 0 0 6px 2px;--border-color:#dfe3e8;--border-color-select:#eb4619;--cell-border:1px solid var(--border-color);--cell-border-select:1px solid var(--border-color-select);--cell-border-horizontal:var(--cell-border);--cell-border-vertical:var(--cell-border);--header-cell-border:1px solid var(--border-color);--header-cell-border-horizontal:var(--header-cell-border);--header-cell-border-vertical:var(--header-cell-border);--footer-bgcolor:#fafafa;&.", "-grid{color:", ";font-size:", ";background-color:var(--bgcolor);font-family:", ";&.", "-grid-editable{.", "-grid-container{.", "-grid-tbody{.", "-grid-row{background-color:", ";color:", ";&.", "-grid-row-parent{background-color:#ffffff;font-weight:500;}}}}}table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", ";border-right:0;&::after{position:absolute;top:0px;right:0;z-index:1;height:100%;border-right:1px solid ", ";content:'';pointer-events:none;}.", "-grid-cell{padding:5px 8px;&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-right{justify-content:flex-end;text-align:right;}&.", "-grid-cell-link{text-decoration:underline;color:#336cc9;&:has(textarea){text-decoration:none;}}&.editable{.ui-rc_cell-content{height:100
|
|
51
|
+
})(["--row-height:34px;--color:#333;--bgcolor:white;--body-hover-bgcolor:#f5f5f5;--body-hover-color:#333;--hover-bgcolor:var(--body-hover-bgcolor);--hover-color:var(--body-hover-color);--highlight-bgcolor:#eee;--header-row-height:34px;--header-color:#000000de;--header-bgcolor:#ffffff;--header-hover-bgcolor:#ddd;--header-highlight-bgcolor:#e4e8ed;--cell-padding:7px 8px;--font-size:13px;--line-height:1.28571;--lock-shadow:rgba(152,152,152,0.5) 0 0 6px 2px;--border-color:#dfe3e8;--border-color-select:#eb4619;--cell-border:1px solid var(--border-color);--cell-border-select:1px solid var(--border-color-select);--cell-border-horizontal:var(--cell-border);--cell-border-vertical:var(--cell-border);--header-cell-border:1px solid var(--border-color);--header-cell-border-horizontal:var(--header-cell-border);--header-cell-border-vertical:var(--header-cell-border);--footer-bgcolor:#fafafa;&.", "-grid{color:", ";font-size:", ";background-color:var(--bgcolor);font-family:", ";&.", "-grid-editable{.", "-grid-container{.", "-grid-tbody{.", "-grid-row{background-color:", ";color:", ";&.", "-grid-row-parent{background-color:#ffffff;font-weight:500;}}}}}table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", ";border-right:0;&::after{position:absolute;top:0px;right:0;z-index:1;height:100%;border-right:1px solid ", ";content:'';pointer-events:none;}.", "-grid-cell{padding:5px 8px;&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-right{justify-content:flex-end;text-align:right;}&.", "-grid-cell-link{text-decoration:underline;color:#336cc9;&:has(textarea){text-decoration:none;}}&.editable{.ui-rc_cell-content{height:100%;}.ui-rc_cell-content.select-cell{--cell-dropdown-width:18px;box-sizing:border-box;width:100%;padding-inline-end:calc(var(--cell-dropdown-width) + 4px);position:relative;.caret-down{position:absolute;inset-inline-end:0;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:var(--cell-dropdown-width);height:16px;cursor:pointer;&::before{content:'';width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #6f7777;}}}}&.", "-grid-cell-ellipsis{.ui-rc_cell-content{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}&.", "-grid-cell-wrap{white-space:normal;text-overflow:ellipsis;word-break:break-word;}.", "-grid-header-text-wrap{white-space:normal;overflow:hidden;text-overflow:ellipsis;word-break:break-word;}}.", "-grid-thead{background-color:var(--header-bgcolor);font-weight:", ";.", "-grid-cell{font-weight:inherit;color:", ";background-color:inherit;border-inline-end:1px solid ", ";border-bottom:1px solid ", ";&.ui-rc-grid-cell-ellipsis{.ui-rc-table-column-title,.", "-grid-cell-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}&.ui-rc-grid-cell-wrap{.ui-rc-table-column-title,.", "-grid-cell-text-wrap{white-space:normal;word-break:break-word;overflow:hidden;}}&:hover{.ui-rc-header-trigger{.ui-rc-table-column-sorter-cancel{opacity:1;}}}.", "-grid-filter-column{display:flex;justify-content:space-between;width:100%;align-items:center;position:relative;z-index:3;}.ui-rc-header-trigger{padding-left:6px;display:flex;align-items:center;.ui-rc-table-column-sorter-cancel{opacity:0;}}.resizer{cursor:col-resize;height:100%;position:absolute;right:0;top:0;z-index:3;touch-action:none;user-select:none;width:5px;}.resizer.isResizing{opacity:1;}}}.", "-grid-tbody{.", "-grid-row{font-weight:", ";background-color:var(--bgcolor);color:", ";&.", "-grid-row-odd{background-color:#f9f8fd;}&.", "-grid-row-even{}&.", "-grid-row-parent{background-color:#f5f5f5;font-weight:500;}}}.", "-grid-tfoot{.", "-grid-footer-row{border-bottom-width:1px;border-bottom-color:", ";border-bottom-style:solid;border-top-width:1px;border-top-color:", ";border-top-style:solid;background-color:var(--footer-bgcolor);font-weight:600;}.", "-grid-cell{background-color:inherit;border-inline-end:1px solid ", ";}}}&.", "-grid-dark{background-color:", ";color:", ";.", "-grid-container{border-color:", ";&::after{border-right-color:", ";}}}.ui-rc-toolbar-bottom{border-right:1px solid #e0e0e0;border-left:1px solid #e0e0e0;.be-toolbar-item{.ui-rc-btn{font-size:12px;line-height:1.5}.toolbar-dropdown-button{font-size:12px;.ui-rc-btn.ui-rc-btn-default.ui-rc-btn-variant-outlined.ui-rc-btn-compact-item.ui-rc-btn-compact-first-item{border-color:#28c76f;}.ui-rc-btn.ui-rc-btn-default.ui-rc-btn-variant-outlined.ui-rc-btn-compact-item.ui-rc-btn-compact-last-item{border-color:#28c76f;.ui-rc-btn-icon{color:#28c76f;}}}}}.ui-rc-toolbar-bottom_border-bottom{border-bottom:1px solid #e0e0e0;}.ui-rc-toolbar-bottom{position:relative;padding:.15rem 0.5rem;background-color:#ffffff;.toolbar-button{border-radius:3px;}.ui-rc-btn{border-radius:3px;height:28px;&.ui-rc-btn-compact-item.ui-rc-btn-compact-last-item{border-start-start-radius:0;border-end-start-radius:0;}&.ui-rc-btn-compact-item.ui-rc-btn-compact-first-item{border-start-end-radius:0;border-end-end-radius:0;}}}}"], props => props.$prefix, color, fontSize, fontFamily, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : 'var(--bgcolor)'}`, props => `${props.$theme.color ? props.$theme.color : color}`, props => props.$prefix, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, fwHeader, props => props.$prefix, props => `${props.$theme.color ? props.$theme.color : color}`, tableBorderColor, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, fwBody, props => `${props.$theme.color ? props.$theme.color : color}`, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, tableBorderColor, props => props.$prefix, BgColorDark, colorDark, props => props.$prefix, tableBorderColorDark, tableBorderColorDark);
|
|
@@ -422,8 +422,12 @@ $cell-index-focus-bg-Dark: #E6EFFD !default;
|
|
|
422
422
|
}
|
|
423
423
|
|
|
424
424
|
&.disable {
|
|
425
|
-
padding:
|
|
425
|
+
padding: 5px 8px !important;
|
|
426
426
|
background-color: #f0f0f0;
|
|
427
|
+
|
|
428
|
+
.ui-rc_cell-content {
|
|
429
|
+
height: auto;
|
|
430
|
+
}
|
|
427
431
|
}
|
|
428
432
|
|
|
429
433
|
&.#{$prefix}-grid-cell-command {
|
|
@@ -1196,4 +1200,4 @@ $cell-index-focus-bg-Dark: #E6EFFD !default;
|
|
|
1196
1200
|
&:has(input:focus) span {
|
|
1197
1201
|
border-color: red;
|
|
1198
1202
|
}
|
|
1199
|
-
}
|
|
1203
|
+
}
|
|
@@ -269,7 +269,7 @@ const Grid = props => {
|
|
|
269
269
|
rowSelected?.({
|
|
270
270
|
type: isSelectionChange.type,
|
|
271
271
|
rowData: isSelectionChange.rowData,
|
|
272
|
-
selected: ssss
|
|
272
|
+
selected: ssss.filter(x => !x.isGroupRow)
|
|
273
273
|
});
|
|
274
274
|
}
|
|
275
275
|
}, [isSelectionChange, rowSelection, table.getState().rowSelection]);
|
|
@@ -85,7 +85,7 @@ const Grid = props => {
|
|
|
85
85
|
rowSelected?.({
|
|
86
86
|
type: isSelectionChange.type,
|
|
87
87
|
rowData: isSelectionChange.rowData,
|
|
88
|
-
selected: ssss
|
|
88
|
+
selected: ssss.filter(x => !x.isGroupRow)
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
91
|
}, [isSelectionChange, rowSelection, table.getState().rowSelection]);
|
|
@@ -334,6 +334,9 @@ function columnCustom(opts) {
|
|
|
334
334
|
// Chức năng edit
|
|
335
335
|
|
|
336
336
|
const handleEdit = (e, record, col, editType, isKeyDown, isHeader) => {
|
|
337
|
+
if (!isHeader && (!(0, _hooks.isEditable)(col, record) || rowEditable?.(record) === false)) {
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
337
340
|
reset?.();
|
|
338
341
|
const cell = e.currentTarget;
|
|
339
342
|
pipeline.setStateAtKey(_constants.stateKeyIsEditing, {
|
|
@@ -546,6 +549,9 @@ function columnCustom(opts) {
|
|
|
546
549
|
// Không vượt quá số cột
|
|
547
550
|
return;
|
|
548
551
|
}
|
|
552
|
+
if (!(0, _hooks.isEditable)(leafColumns[targetCol], newData[targetRow])) {
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
549
555
|
const columnKey = leafColumns[targetCol].field;
|
|
550
556
|
newData[targetRow] = {
|
|
551
557
|
...newData[targetRow],
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
.ui-rc-grid-refresh-spin {
|
|
2
|
-
transform-origin: center;
|
|
3
|
-
transform-box: fill-box;
|
|
4
|
-
animation: ui-rc-grid-refresh-spin 0.8s linear infinite;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
@keyframes ui-rc-grid-refresh-spin {
|
|
8
|
-
to { transform: rotate(360deg); }
|
|
9
|
-
}
|
|
1
|
+
.ui-rc-grid-refresh-spin {
|
|
2
|
+
transform-origin: center;
|
|
3
|
+
transform-box: fill-box;
|
|
4
|
+
animation: ui-rc-grid-refresh-spin 0.8s linear infinite;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
@keyframes ui-rc-grid-refresh-spin {
|
|
8
|
+
to { transform: rotate(360deg); }
|
|
9
|
+
}
|
|
@@ -2541,6 +2541,7 @@ function groupArrayByColumns(data, columns) {
|
|
|
2541
2541
|
rowId: newGuid(),
|
|
2542
2542
|
parentId: !isEmpty(item[columns[index - 1]]) ? item[columns[index - 1]] : null,
|
|
2543
2543
|
// tự tính tổng rồi điền thuộc tính vào
|
|
2544
|
+
isGroupRow: true,
|
|
2544
2545
|
children: []
|
|
2545
2546
|
};
|
|
2546
2547
|
currentLevel.push(newItem);
|
|
@@ -167,7 +167,7 @@ export declare const fixColumnsLeft: <RecordType>(columns: ColumnTable<RecordTyp
|
|
|
167
167
|
haveSum?: boolean;
|
|
168
168
|
isSummary?: boolean;
|
|
169
169
|
sumGroup?: boolean;
|
|
170
|
-
summaryTemplate?: (data: number, key: string) => import("react").
|
|
170
|
+
summaryTemplate?: (data: number, key: string) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
171
171
|
sorter?: boolean;
|
|
172
172
|
allowFiltering?: boolean;
|
|
173
173
|
allowSortering?: boolean;
|
|
@@ -179,27 +179,27 @@ export declare const fixColumnsLeft: <RecordType>(columns: ColumnTable<RecordTyp
|
|
|
179
179
|
showFilterSearch?: boolean;
|
|
180
180
|
hidden?: boolean;
|
|
181
181
|
visible?: boolean;
|
|
182
|
-
headerTooltip?: string | boolean | (() => import("react").
|
|
182
|
+
headerTooltip?: string | boolean | (() => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
|
|
183
183
|
columnGroupText?: string;
|
|
184
184
|
headerTextAlign?: import("./../../grid-component/type").ITextAlign;
|
|
185
|
-
headerTemplate?: import("react").
|
|
185
|
+
headerTemplate?: import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | ((column: ColumnTable<RecordType>) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
|
|
186
186
|
fixedType?: import("./../../grid-component/type").FixedType;
|
|
187
187
|
headerTextWrap?: boolean;
|
|
188
188
|
ellipsis?: boolean;
|
|
189
189
|
allowResizing?: boolean;
|
|
190
190
|
align?: import("./../../grid-component/type").ITextAlign;
|
|
191
191
|
textAlign?: import("./../../grid-component/type").ITextAlign;
|
|
192
|
-
template?: import("react").
|
|
193
|
-
linkTemplate?: import("react").
|
|
192
|
+
template?: import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | ((args: import("./../../grid-component/type").ColumnTemplate<RecordType>) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
|
|
193
|
+
linkTemplate?: import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | ((args: import("./../../grid-component/type").ColumnTemplate<RecordType>) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
|
|
194
194
|
showTooltip?: boolean;
|
|
195
195
|
tooltipDescription?: string | ((args: {
|
|
196
196
|
value: any;
|
|
197
197
|
rowData: RecordType;
|
|
198
|
-
}) => import("react").
|
|
199
|
-
onCellStyles?: Omit<CSSProperties, "
|
|
200
|
-
onCellHeaderStyles?: Omit<CSSProperties, "
|
|
198
|
+
}) => import("react").ReactNode | import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>);
|
|
199
|
+
onCellStyles?: Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width"> | ((cellValue: any, cell: import("@tanstack/react-table").Cell<RecordType, unknown>) => Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width">);
|
|
200
|
+
onCellHeaderStyles?: Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width"> | ((cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width">);
|
|
201
201
|
onCell?: (rowData: RecordType, index: number) => import("react").TdHTMLAttributes<HTMLTableCellElement>;
|
|
202
|
-
onCellFooterStyles?: Omit<CSSProperties, "
|
|
202
|
+
onCellFooterStyles?: Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width"> | ((cellValue: any, cell: import("@tanstack/react-table").Header<RecordType, unknown>) => Omit<CSSProperties, "left" | "right" | "display" | "minWidth" | "position" | "width">);
|
|
203
203
|
getValue?: (row: any, rowIndex: number) => any;
|
|
204
204
|
getCellProps?: (value: any, row: any, rowIndex: number) => import("./../../grid-component/type").CellProps;
|
|
205
205
|
headerCellProps?: import("./../../grid-component/type").CellProps;
|
|
@@ -315,6 +315,7 @@ function groupArrayByColumns(arr, columns) {
|
|
|
315
315
|
parentId: !isEmpty(item[columns[index - 1]]) ? item[columns[index - 1]] : null,
|
|
316
316
|
// parentId: item.rowId[index - 1],
|
|
317
317
|
// indent: index,
|
|
318
|
+
isGroupRow: true,
|
|
318
319
|
children: []
|
|
319
320
|
};
|
|
320
321
|
currentLevel.push(newItem);
|
|
@@ -203,7 +203,7 @@ const Grid = props => {
|
|
|
203
203
|
rowSelected?.({
|
|
204
204
|
type: isSelectionChange.type,
|
|
205
205
|
rowData: isSelectionChange.rowData,
|
|
206
|
-
selected: rs
|
|
206
|
+
selected: rs.filter(x => !x.isGroupRow)
|
|
207
207
|
});
|
|
208
208
|
}
|
|
209
209
|
}, [isSelectionChange, rowSelection, table.getState().rowSelection]);
|
|
@@ -274,6 +274,7 @@ const TableBodyCellEdit = props => {
|
|
|
274
274
|
return selectRowIds.includes(cell.row.id) && colIdss.includes(cell.column.id);
|
|
275
275
|
}, [cell.column.id, cell.row.id, endCell, selectRowIds, startCell, table]);
|
|
276
276
|
const editType = typeof columnMeta.editType === 'function' ? columnMeta.editType(record) : columnMeta.editType;
|
|
277
|
+
const isSelectCell = ['select', 'selectTable', 'asyncSelect', 'treeSelect'].includes(editType ?? 'text');
|
|
277
278
|
const {
|
|
278
279
|
rowRange,
|
|
279
280
|
colRange,
|
|
@@ -1458,7 +1459,7 @@ const TableBodyCellEdit = props => {
|
|
|
1458
1459
|
}, cellContent)))
|
|
1459
1460
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
1460
1461
|
className: (0, _classnames.default)('ui-rc_cell-content', {
|
|
1461
|
-
'select-cell':
|
|
1462
|
+
'select-cell': isSelectCell
|
|
1462
1463
|
})
|
|
1463
1464
|
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/_react.default.createElement("div", {
|
|
1464
1465
|
className: "ui-rc-table-row-expand-trigger",
|
|
@@ -1496,14 +1497,14 @@ const TableBodyCellEdit = props => {
|
|
|
1496
1497
|
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
|
|
1497
1498
|
})) : /*#__PURE__*/_react.default.createElement("span", {
|
|
1498
1499
|
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
|
|
1499
|
-
}))), cellContent,
|
|
1500
|
+
}))), cellContent, isSelectCell && canEdit && /*#__PURE__*/_react.default.createElement("span", {
|
|
1500
1501
|
className: 'caret-down',
|
|
1501
1502
|
onClick: e => {
|
|
1502
1503
|
handleEdit(e);
|
|
1503
1504
|
}
|
|
1504
1505
|
})))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
1505
1506
|
className: (0, _classnames.default)('ui-rc_cell-content', {
|
|
1506
|
-
'select-cell':
|
|
1507
|
+
'select-cell': isSelectCell
|
|
1507
1508
|
})
|
|
1508
1509
|
}, cell.column.getIndex() === expandIconColumnIndex && isDataTree && /*#__PURE__*/_react.default.createElement("div", {
|
|
1509
1510
|
className: "ui-rc-table-row-expand-trigger",
|
|
@@ -1541,7 +1542,7 @@ const TableBodyCellEdit = props => {
|
|
|
1541
1542
|
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed"
|
|
1542
1543
|
})) : /*#__PURE__*/_react.default.createElement("span", {
|
|
1543
1544
|
className: "ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced"
|
|
1544
|
-
}))), cellContent,
|
|
1545
|
+
}))), cellContent, isSelectCell && canEdit && /*#__PURE__*/_react.default.createElement("span", {
|
|
1545
1546
|
className: 'caret-down',
|
|
1546
1547
|
onClick: e => {
|
|
1547
1548
|
handleEdit(e);
|
|
@@ -399,6 +399,7 @@ function groupArrayByColumns(arr, columns) {
|
|
|
399
399
|
parentId: !isEmpty(item[columns[index - 1]]) ? item[columns[index - 1]] : null,
|
|
400
400
|
// parentId: item.rowId[index - 1],
|
|
401
401
|
// indent: index,
|
|
402
|
+
isGroupRow: true,
|
|
402
403
|
children: []
|
|
403
404
|
};
|
|
404
405
|
currentLevel.push(newItem);
|
|
@@ -55,4 +55,4 @@ const colorDark = '#e6e4f3e6 ';
|
|
|
55
55
|
const GridStyle = exports.GridStyle = _styledComponents.default.div.withConfig({
|
|
56
56
|
displayName: "GridStyle",
|
|
57
57
|
componentId: "es-grid-template__sc-hdqm5k-0"
|
|
58
|
-
})(["--row-height:34px;--color:#333;--bgcolor:white;--body-hover-bgcolor:#f5f5f5;--body-hover-color:#333;--hover-bgcolor:var(--body-hover-bgcolor);--hover-color:var(--body-hover-color);--highlight-bgcolor:#eee;--header-row-height:34px;--header-color:#000000de;--header-bgcolor:#ffffff;--header-hover-bgcolor:#ddd;--header-highlight-bgcolor:#e4e8ed;--cell-padding:7px 8px;--font-size:13px;--line-height:1.28571;--lock-shadow:rgba(152,152,152,0.5) 0 0 6px 2px;--border-color:#dfe3e8;--border-color-select:#eb4619;--cell-border:1px solid var(--border-color);--cell-border-select:1px solid var(--border-color-select);--cell-border-horizontal:var(--cell-border);--cell-border-vertical:var(--cell-border);--header-cell-border:1px solid var(--border-color);--header-cell-border-horizontal:var(--header-cell-border);--header-cell-border-vertical:var(--header-cell-border);--footer-bgcolor:#fafafa;&.", "-grid{color:", ";font-size:", ";background-color:var(--bgcolor);font-family:", ";&.", "-grid-editable{.", "-grid-container{.", "-grid-tbody{.", "-grid-row{background-color:", ";color:", ";&.", "-grid-row-parent{background-color:#ffffff;font-weight:500;}}}}}table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", ";border-right:0;&::after{position:absolute;top:0px;right:0;z-index:1;height:100%;border-right:1px solid ", ";content:'';pointer-events:none;}.", "-grid-cell{padding:5px 8px;&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-right{justify-content:flex-end;text-align:right;}&.", "-grid-cell-link{text-decoration:underline;color:#336cc9;&:has(textarea){text-decoration:none;}}&.editable{.ui-rc_cell-content{height:100
|
|
58
|
+
})(["--row-height:34px;--color:#333;--bgcolor:white;--body-hover-bgcolor:#f5f5f5;--body-hover-color:#333;--hover-bgcolor:var(--body-hover-bgcolor);--hover-color:var(--body-hover-color);--highlight-bgcolor:#eee;--header-row-height:34px;--header-color:#000000de;--header-bgcolor:#ffffff;--header-hover-bgcolor:#ddd;--header-highlight-bgcolor:#e4e8ed;--cell-padding:7px 8px;--font-size:13px;--line-height:1.28571;--lock-shadow:rgba(152,152,152,0.5) 0 0 6px 2px;--border-color:#dfe3e8;--border-color-select:#eb4619;--cell-border:1px solid var(--border-color);--cell-border-select:1px solid var(--border-color-select);--cell-border-horizontal:var(--cell-border);--cell-border-vertical:var(--cell-border);--header-cell-border:1px solid var(--border-color);--header-cell-border-horizontal:var(--header-cell-border);--header-cell-border-vertical:var(--header-cell-border);--footer-bgcolor:#fafafa;&.", "-grid{color:", ";font-size:", ";background-color:var(--bgcolor);font-family:", ";&.", "-grid-editable{.", "-grid-container{.", "-grid-tbody{.", "-grid-row{background-color:", ";color:", ";&.", "-grid-row-parent{background-color:#ffffff;font-weight:500;}}}}}table{table-layout:fixed;border-collapse:separate;border-spacing:0;}.", "-grid-container{border:1px solid ", ";border-right:0;&::after{position:absolute;top:0px;right:0;z-index:1;height:100%;border-right:1px solid ", ";content:'';pointer-events:none;}.", "-grid-cell{padding:5px 8px;&.", "-grid-cell-text-center{text-align:center;justify-content:center;}&.", "-grid-cell-text-right{justify-content:flex-end;text-align:right;}&.", "-grid-cell-link{text-decoration:underline;color:#336cc9;&:has(textarea){text-decoration:none;}}&.editable{.ui-rc_cell-content{height:100%;}.ui-rc_cell-content.select-cell{--cell-dropdown-width:18px;box-sizing:border-box;width:100%;padding-inline-end:calc(var(--cell-dropdown-width) + 4px);position:relative;.caret-down{position:absolute;inset-inline-end:0;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:var(--cell-dropdown-width);height:16px;cursor:pointer;&::before{content:'';width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #6f7777;}}}}&.", "-grid-cell-ellipsis{.ui-rc_cell-content{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}&.", "-grid-cell-wrap{white-space:normal;text-overflow:ellipsis;word-break:break-word;}.", "-grid-header-text-wrap{white-space:normal;overflow:hidden;text-overflow:ellipsis;word-break:break-word;}}.", "-grid-thead{background-color:var(--header-bgcolor);font-weight:", ";.", "-grid-cell{font-weight:inherit;color:", ";background-color:inherit;border-inline-end:1px solid ", ";border-bottom:1px solid ", ";&.ui-rc-grid-cell-ellipsis{.ui-rc-table-column-title,.", "-grid-cell-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all;}}&.ui-rc-grid-cell-wrap{.ui-rc-table-column-title,.", "-grid-cell-text-wrap{white-space:normal;word-break:break-word;overflow:hidden;}}&:hover{.ui-rc-header-trigger{.ui-rc-table-column-sorter-cancel{opacity:1;}}}.", "-grid-filter-column{display:flex;justify-content:space-between;width:100%;align-items:center;position:relative;z-index:3;}.ui-rc-header-trigger{padding-left:6px;display:flex;align-items:center;.ui-rc-table-column-sorter-cancel{opacity:0;}}.resizer{cursor:col-resize;height:100%;position:absolute;right:0;top:0;z-index:3;touch-action:none;user-select:none;width:5px;}.resizer.isResizing{opacity:1;}}}.", "-grid-tbody{.", "-grid-row{font-weight:", ";background-color:var(--bgcolor);color:", ";&.", "-grid-row-odd{background-color:#f9f8fd;}&.", "-grid-row-even{}&.", "-grid-row-parent{background-color:#f5f5f5;font-weight:500;}}}.", "-grid-tfoot{.", "-grid-footer-row{border-bottom-width:1px;border-bottom-color:", ";border-bottom-style:solid;border-top-width:1px;border-top-color:", ";border-top-style:solid;background-color:var(--footer-bgcolor);font-weight:600;}.", "-grid-cell{background-color:inherit;border-inline-end:1px solid ", ";}}}&.", "-grid-dark{background-color:", ";color:", ";.", "-grid-container{border-color:", ";&::after{border-right-color:", ";}}}.ui-rc-toolbar-bottom{border-right:1px solid #e0e0e0;border-left:1px solid #e0e0e0;.be-toolbar-item{.ui-rc-btn{font-size:12px;line-height:1.5}.toolbar-dropdown-button{font-size:12px;.ui-rc-btn.ui-rc-btn-default.ui-rc-btn-variant-outlined.ui-rc-btn-compact-item.ui-rc-btn-compact-first-item{border-color:#28c76f;}.ui-rc-btn.ui-rc-btn-default.ui-rc-btn-variant-outlined.ui-rc-btn-compact-item.ui-rc-btn-compact-last-item{border-color:#28c76f;.ui-rc-btn-icon{color:#28c76f;}}}}}.ui-rc-toolbar-bottom_border-bottom{border-bottom:1px solid #e0e0e0;}.ui-rc-toolbar-bottom{position:relative;padding:.15rem 0.5rem;background-color:#ffffff;.toolbar-button{border-radius:3px;}.ui-rc-btn{border-radius:3px;height:28px;&.ui-rc-btn-compact-item.ui-rc-btn-compact-last-item{border-start-start-radius:0;border-end-start-radius:0;}&.ui-rc-btn-compact-item.ui-rc-btn-compact-first-item{border-start-end-radius:0;border-end-end-radius:0;}}}}"], props => props.$prefix, color, fontSize, fontFamily, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => `${props.$theme.backgroundColor ? props.$theme.backgroundColor : 'var(--bgcolor)'}`, props => `${props.$theme.color ? props.$theme.color : color}`, props => props.$prefix, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, fwHeader, props => props.$prefix, props => `${props.$theme.color ? props.$theme.color : color}`, tableBorderColor, tableBorderColor, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, fwBody, props => `${props.$theme.color ? props.$theme.color : color}`, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, props => props.$prefix, tableBorderColor, tableBorderColor, props => props.$prefix, tableBorderColor, props => props.$prefix, BgColorDark, colorDark, props => props.$prefix, tableBorderColorDark, tableBorderColorDark);
|
|
@@ -422,8 +422,12 @@ $cell-index-focus-bg-Dark: #E6EFFD !default;
|
|
|
422
422
|
}
|
|
423
423
|
|
|
424
424
|
&.disable {
|
|
425
|
-
padding:
|
|
425
|
+
padding: 5px 8px !important;
|
|
426
426
|
background-color: #f0f0f0;
|
|
427
|
+
|
|
428
|
+
.ui-rc_cell-content {
|
|
429
|
+
height: auto;
|
|
430
|
+
}
|
|
427
431
|
}
|
|
428
432
|
|
|
429
433
|
&.#{$prefix}-grid-cell-command {
|
|
@@ -1196,4 +1200,4 @@ $cell-index-focus-bg-Dark: #E6EFFD !default;
|
|
|
1196
1200
|
&:has(input:focus) span {
|
|
1197
1201
|
border-color: red;
|
|
1198
1202
|
}
|
|
1199
|
-
}
|
|
1203
|
+
}
|
|
@@ -274,7 +274,7 @@ const Grid = props => {
|
|
|
274
274
|
rowSelected?.({
|
|
275
275
|
type: isSelectionChange.type,
|
|
276
276
|
rowData: isSelectionChange.rowData,
|
|
277
|
-
selected: ssss
|
|
277
|
+
selected: ssss.filter(x => !x.isGroupRow)
|
|
278
278
|
});
|
|
279
279
|
}
|
|
280
280
|
}, [isSelectionChange, rowSelection, table.getState().rowSelection]);
|
|
@@ -94,7 +94,7 @@ const Grid = props => {
|
|
|
94
94
|
rowSelected?.({
|
|
95
95
|
type: isSelectionChange.type,
|
|
96
96
|
rowData: isSelectionChange.rowData,
|
|
97
|
-
selected: ssss
|
|
97
|
+
selected: ssss.filter(x => !x.isGroupRow)
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
100
|
}, [isSelectionChange, rowSelection, table.getState().rowSelection]);
|