@bit.rhplus/ui.grid 0.0.24 → 0.0.26
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/AgGridColumns.js +2 -0
- package/ColumnBuilder.jsx +172 -97
- package/dist/AgGridColumns.js +2 -0
- package/dist/AgGridColumns.js.map +1 -1
- package/dist/ColumnBuilder.js +155 -83
- package/dist/ColumnBuilder.js.map +1 -1
- package/dist/functions.d.ts +13 -0
- package/dist/functions.js +45 -0
- package/dist/functions.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +40 -29
- package/dist/index.js.map +1 -1
- package/dist/style.css +0 -0
- package/dist/utils.d.ts +1 -13
- package/dist/utils.js +24 -42
- package/dist/utils.js.map +1 -1
- package/index.jsx +117 -94
- package/package.json +4 -4
- package/style.css +0 -0
- package/utils.jsx +35 -0
- /package/dist/{preview-1748952580414.js → preview-1750330600954.js} +0 -0
- /package/{utils.js → functions.js} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable */
|
|
2
3
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
3
4
|
import AgGrid from '@bit.rhplus/ag-grid';
|
|
4
5
|
import classnames from 'classnames';
|
|
@@ -6,10 +7,8 @@ import { OperationType, useSharedGrid } from '@bit.rhplus/shared-grid-form';
|
|
|
6
7
|
import { AgGridColumns } from './AgGridColumns';
|
|
7
8
|
const Grid = (props) => {
|
|
8
9
|
const gridRef = React.useRef(null);
|
|
9
|
-
const { appearance = 'ag-theme-alpine', columnDefs, height = '100%', defaultColDef, gridOptions, rowClassRules, editableDefault = true,
|
|
10
|
-
|
|
11
|
-
} = props;
|
|
12
|
-
const { items, onGridReady, addItem, updateItem, deleteItem, pendingChanges = [], isCellEditable } = useSharedGrid();
|
|
10
|
+
const { appearance = 'ag-theme-alpine', columnDefs, height = '100%', defaultColDef, gridOptions, rowClassRules, editableDefault = true, onRowDoubleClicked, } = props;
|
|
11
|
+
const { items, onGridReady, addItem, updateItem, deleteItem, pendingChanges = [], isCellEditable, } = useSharedGrid();
|
|
13
12
|
const [gridApi, setGridApi] = useState(null);
|
|
14
13
|
// Handler pro připravení gridu
|
|
15
14
|
const handleGridReady = useCallback((params) => {
|
|
@@ -25,7 +24,7 @@ const Grid = (props) => {
|
|
|
25
24
|
const changes = { [colDef.field]: newValue };
|
|
26
25
|
updateItem(data.id, changes);
|
|
27
26
|
}, [updateItem]);
|
|
28
|
-
// Handler pro dvojklik na buňku
|
|
27
|
+
// Handler pro dvojklik na buňku
|
|
29
28
|
// const handleCellDoubleClicked = useCallback((params) => {
|
|
30
29
|
// const { colDef } = params;
|
|
31
30
|
// // Pokud je buňka needitovatelná, vyvoláme událost onRowDoubleClicked
|
|
@@ -82,23 +81,20 @@ const Grid = (props) => {
|
|
|
82
81
|
// Vlastní CSS třídy pro řádky s čekajícími změnami
|
|
83
82
|
const defaultRowClassRules = {
|
|
84
83
|
'row-pending-add': (params) => {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
pendingChanges[data.id].operation === OperationType.ADD;
|
|
84
|
+
return (pendingChanges[params.data.id] &&
|
|
85
|
+
pendingChanges[params.data.id].operation === OperationType.ADD);
|
|
88
86
|
},
|
|
89
87
|
'row-pending-update': (params) => {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
pendingChanges[data.id].operation === OperationType.UPDATE;
|
|
88
|
+
return (pendingChanges[params.data.id] &&
|
|
89
|
+
pendingChanges[params.data.id].operation === OperationType.UPDATE);
|
|
93
90
|
},
|
|
94
91
|
'row-pending-delete': (params) => {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
92
|
+
return (pendingChanges[params.data.id] &&
|
|
93
|
+
pendingChanges[params.data.id].operation === OperationType.DELETE);
|
|
94
|
+
},
|
|
99
95
|
};
|
|
100
|
-
// Kombinované rowClassRules
|
|
101
|
-
|
|
96
|
+
// Kombinované rowClassRules
|
|
97
|
+
const combinedRowClassRules = { ...defaultRowClassRules, ...rowClassRules };
|
|
102
98
|
// Exportovat metody pro přidání/odstranění řádků
|
|
103
99
|
useEffect(() => {
|
|
104
100
|
if (gridApi) {
|
|
@@ -107,21 +103,36 @@ const Grid = (props) => {
|
|
|
107
103
|
gridApi.deleteRow = handleDeleteRow;
|
|
108
104
|
}
|
|
109
105
|
}, [gridApi, handleAddRow, handleDeleteRow]);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
106
|
+
const allGridProps = {
|
|
107
|
+
rowData: items,
|
|
108
|
+
defaultColDef: {
|
|
109
|
+
enableCellChangeFlash: true,
|
|
110
|
+
editable: editableDefault,
|
|
111
|
+
resizable: true,
|
|
112
|
+
...defaultColDef,
|
|
113
|
+
},
|
|
114
|
+
isRowSelectable: (params) => {
|
|
115
|
+
return (!pendingChanges[params.data.id] ||
|
|
116
|
+
pendingChanges[params.data.id].operation !== OperationType.DELETE);
|
|
117
|
+
},
|
|
118
|
+
isEditable: isCellEditable,
|
|
119
|
+
onGridReady: handleGridReady,
|
|
120
|
+
onCellValueChanged: handleCellValueChanged,
|
|
121
|
+
getRowId: (params) => params.data.id,
|
|
122
|
+
...gridOptions,
|
|
123
|
+
context: {
|
|
124
|
+
componentParent: this,
|
|
125
|
+
},
|
|
126
|
+
...props,
|
|
127
|
+
ref: gridRef,
|
|
128
|
+
columnDefs: AgGridColumns(columnDefs, props),
|
|
129
|
+
};
|
|
130
|
+
console.log(allGridProps);
|
|
131
|
+
return (_jsx("div", { className: classnames(appearance), style: { height }, children: _jsx(AgGrid, { ...allGridProps }) }));
|
|
122
132
|
};
|
|
123
133
|
export default Grid;
|
|
124
134
|
export * from './enums';
|
|
125
135
|
export { default as ColumnBuilder } from './ColumnBuilder';
|
|
126
136
|
export { default as ContextBuilder } from './ContextBuilder';
|
|
137
|
+
export * as utils from './utils';
|
|
127
138
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EACJ,UAAU,GAAG,iBAAiB,EAC9B,UAAU,EACV,MAAM,GAAG,MAAM,EACf,aAAa,EACb,WAAW,EACX,aAAa,EACb,eAAe,GAAG,IAAI
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EACJ,UAAU,GAAG,iBAAiB,EAC9B,UAAU,EACV,MAAM,GAAG,MAAM,EACf,aAAa,EACb,WAAW,EACX,aAAa,EACb,eAAe,GAAG,IAAI,EACtB,kBAAkB,GACnB,GAAG,KAAK,CAAC;IAEV,MAAM,EACJ,KAAK,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,EACV,cAAc,GAAG,EAAE,EACnB,cAAc,GACf,GAAG,aAAa,EAAE,CAAC;IAEpB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE7C,+BAA+B;IAC/B,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,MAAM,EAAE,EAAE;QACT,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,kCAAkC;IAClC,MAAM,sBAAsB,GAAG,WAAW,CACxC,CAAC,MAAM,EAAE,EAAE;QACT,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC1C,iCAAiC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,gCAAgC;IAChC,4DAA4D;IAC5D,+BAA+B;IAE/B,0EAA0E;IAC1E,2BAA2B;IAC3B,iDAAiD;IACjD,4CAA4C;IAC5C,uDAAuD;IACvD,oCAAoC;IACpC,aAAa;IACb,oCAAoC;IACpC,MAAM;IAEN,qFAAqF;IACrF,6CAA6C;IAC7C,+CAA+C;IAC/C,2BAA2B;IAC3B,mBAAmB;IACnB,iFAAiF;IACjF,yBAAyB;IACzB,2BAA2B;IAC3B,mCAAmC;IACnC,2BAA2B;IAC3B,4BAA4B;IAC5B,UAAU;IAEV,+EAA+E;IAC/E,0BAA0B;IAC1B,uCAAuC;IACvC,QAAQ;IACR,MAAM;IACN,6CAA6C;IAE7C,mCAAmC;IACnC,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE;QACf,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAEnC,gEAAgE;QAChE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAE1B,6CAA6C;YAC7C,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC9C,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAC1B,CAAC;IAEF,+BAA+B;IAC/B,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,EAAE,EAAE,EAAE;QACL,UAAU,CAAC,EAAE,CAAC,CAAC;QAEf,qCAAqC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,EACD,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAC7B,CAAC;IAEF,mDAAmD;IACnD,MAAM,oBAAoB,GAAG;QAC3B,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5B,OAAO,CACL,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,GAAG,CAC/D,CAAC;QACJ,CAAC;QACD,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,OAAO,CACL,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,MAAM,CAClE,CAAC;QACJ,CAAC;QACD,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,OAAO,CACL,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,MAAM,CAClE,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,4BAA4B;IAC5B,MAAM,qBAAqB,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,aAAa,EAAE,CAAC;IAE5E,iDAAiD;IACjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,CAAC;YACZ,8DAA8D;YAC9D,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC;YAC9B,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC;QACtC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,KAAK;QACd,aAAa,EAAE;YACb,qBAAqB,EAAE,IAAI;YAC3B,QAAQ,EAAE,eAAe;YACzB,SAAS,EAAE,IAAI;YACf,GAAG,aAAa;SACjB;QACD,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1B,OAAO,CACL,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,MAAM,CAClE,CAAC;QACJ,CAAC;QACD,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,eAAe;QAC5B,kBAAkB,EAAE,sBAAsB;QAC1C,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACpC,GAAG,WAAW;QACd,OAAO,EAAE;YACP,eAAe,EAAE,IAAI;SACtB;QACD,GAAG,KAAK;QACR,GAAG,EAAE,OAAO;QACZ,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;KAC7C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAG1B,OAAO,CACL,cAAK,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,YACvD,KAAC,MAAM,OAAK,YAAY,GAAI,GACxB,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC"}
|
package/dist/style.css
ADDED
|
File without changes
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,13 +1 @@
|
|
|
1
|
-
export function
|
|
2
|
-
export function prepareCellStyle({ cellAlign }: {
|
|
3
|
-
cellAlign: any;
|
|
4
|
-
}): {};
|
|
5
|
-
export function prepareColDef(intl: any, { cellAlign, intlId, headerName, ...restColDef }: {
|
|
6
|
-
[x: string]: any;
|
|
7
|
-
cellAlign: any;
|
|
8
|
-
intlId: any;
|
|
9
|
-
headerName: any;
|
|
10
|
-
}): {
|
|
11
|
-
headerName: any;
|
|
12
|
-
overrideCellStyle?: {} | undefined;
|
|
13
|
-
};
|
|
1
|
+
export function getSelectedRows(params: any): any[];
|
package/dist/utils.js
CHANGED
|
@@ -1,45 +1,27 @@
|
|
|
1
|
-
export const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
export const getSelectedRows = (params) => {
|
|
2
|
+
// Získání vybraných rozsahů buněk
|
|
3
|
+
const cellRanges = params.api.getCellRanges();
|
|
4
|
+
// Set pro uložení unikátních ID řádků
|
|
5
|
+
const uniqueRowIds = new Set();
|
|
6
|
+
const selectedRowsData = [];
|
|
7
|
+
if (cellRanges && cellRanges.length > 0) {
|
|
8
|
+
cellRanges.forEach((range) => {
|
|
9
|
+
// V AG-Grid 33.x struktura range objektu
|
|
10
|
+
const startRowIndex = Math.min(range.startRow.rowIndex, range.endRow.rowIndex);
|
|
11
|
+
const endRowIndex = Math.max(range.startRow.rowIndex, range.endRow.rowIndex);
|
|
12
|
+
// Projít všechny řádky v rozsahu
|
|
13
|
+
for (let i = startRowIndex; i <= endRowIndex; i += 1) {
|
|
14
|
+
const rowNode = params.api.getDisplayedRowAtIndex(i);
|
|
15
|
+
if (rowNode && rowNode.data && rowNode.data.id) {
|
|
16
|
+
// Přidat ID řádku do setu (automaticky zajistí unikátnost)
|
|
17
|
+
if (!uniqueRowIds.has(rowNode.data.id)) {
|
|
18
|
+
uniqueRowIds.add(rowNode.data.id);
|
|
19
|
+
selectedRowsData.push(rowNode.data);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
24
|
}
|
|
25
|
-
return
|
|
25
|
+
return selectedRowsData;
|
|
26
26
|
};
|
|
27
|
-
export const prepareColDef = (intl, { cellAlign, intlId, headerName, ...restColDef }) => {
|
|
28
|
-
let overrideCellStyle = {};
|
|
29
|
-
if (cellAlign) {
|
|
30
|
-
overrideCellStyle = prepareCellStyle({ cellAlign });
|
|
31
|
-
}
|
|
32
|
-
let intlName = null;
|
|
33
|
-
if (intl && !headerName && intlId) {
|
|
34
|
-
intlName = intl.formatMessage({ id: intlId });
|
|
35
|
-
}
|
|
36
|
-
return {
|
|
37
|
-
...restColDef,
|
|
38
|
-
...(Object.keys(overrideCellStyle).length > 0 && { overrideCellStyle }),
|
|
39
|
-
headerName: headerName || intlName,
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
export function getValueByPath(obj, path) {
|
|
43
|
-
return path.split('.').reduce((o, k) => (o && o[k] !== undefined) ? o[k] : null, obj);
|
|
44
|
-
}
|
|
45
27
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.jsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,EAAE;IACxC,kCAAkC;IAClC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAE9C,sCAAsC;IACtC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;IAC/B,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAE5B,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,yCAAyC;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,KAAK,CAAC,QAAQ,CAAC,QAAQ,EACvB,KAAK,CAAC,MAAM,CAAC,QAAQ,CACtB,CAAC;YACF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,KAAK,CAAC,QAAQ,CAAC,QAAQ,EACvB,KAAK,CAAC,MAAM,CAAC,QAAQ,CACtB,CAAC;YAEF,iCAAiC;YACjC,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC/C,2DAA2D;oBAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;wBACvC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAClC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC"}
|
package/index.jsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
1
2
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
3
|
import AgGrid from '@bit.rhplus/ag-grid';
|
|
3
4
|
import classnames from 'classnames';
|
|
@@ -6,17 +7,17 @@ import { AgGridColumns } from './AgGridColumns';
|
|
|
6
7
|
|
|
7
8
|
const Grid = (props) => {
|
|
8
9
|
const gridRef = React.useRef(null);
|
|
9
|
-
const {
|
|
10
|
-
appearance = 'ag-theme-alpine',
|
|
11
|
-
columnDefs,
|
|
10
|
+
const {
|
|
11
|
+
appearance = 'ag-theme-alpine',
|
|
12
|
+
columnDefs,
|
|
12
13
|
height = '100%',
|
|
13
14
|
defaultColDef,
|
|
14
15
|
gridOptions,
|
|
15
16
|
rowClassRules,
|
|
16
17
|
editableDefault = true,
|
|
17
|
-
|
|
18
|
+
onRowDoubleClicked,
|
|
18
19
|
} = props;
|
|
19
|
-
|
|
20
|
+
|
|
20
21
|
const {
|
|
21
22
|
items,
|
|
22
23
|
onGridReady,
|
|
@@ -24,31 +25,37 @@ const Grid = (props) => {
|
|
|
24
25
|
updateItem,
|
|
25
26
|
deleteItem,
|
|
26
27
|
pendingChanges = [],
|
|
27
|
-
isCellEditable
|
|
28
|
+
isCellEditable,
|
|
28
29
|
} = useSharedGrid();
|
|
29
30
|
|
|
30
31
|
const [gridApi, setGridApi] = useState(null);
|
|
31
|
-
|
|
32
|
+
|
|
32
33
|
// Handler pro připravení gridu
|
|
33
|
-
const handleGridReady = useCallback(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
onGridReady
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
const handleGridReady = useCallback(
|
|
35
|
+
(params) => {
|
|
36
|
+
setGridApi(params.api);
|
|
37
|
+
if (onGridReady) {
|
|
38
|
+
onGridReady(params);
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
[onGridReady]
|
|
42
|
+
);
|
|
43
|
+
|
|
40
44
|
// Handler pro změnu hodnoty buňky
|
|
41
|
-
const handleCellValueChanged = useCallback(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
const handleCellValueChanged = useCallback(
|
|
46
|
+
(params) => {
|
|
47
|
+
const { data, colDef, newValue } = params;
|
|
48
|
+
// Extrahujeme pouze změněné pole
|
|
49
|
+
const changes = { [colDef.field]: newValue };
|
|
50
|
+
updateItem(data.id, changes);
|
|
51
|
+
},
|
|
52
|
+
[updateItem]
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
// Handler pro dvojklik na buňku
|
|
49
56
|
// const handleCellDoubleClicked = useCallback((params) => {
|
|
50
57
|
// const { colDef } = params;
|
|
51
|
-
|
|
58
|
+
|
|
52
59
|
// // Pokud je buňka needitovatelná, vyvoláme událost onRowDoubleClicked
|
|
53
60
|
// let isEditable = true;
|
|
54
61
|
// if (typeof colDef.editable === 'function') {
|
|
@@ -58,7 +65,7 @@ const Grid = (props) => {
|
|
|
58
65
|
// } else {
|
|
59
66
|
// isEditable = editableDefault;
|
|
60
67
|
// }
|
|
61
|
-
|
|
68
|
+
|
|
62
69
|
// // Pokud buňka není editovatelná a máme definován callback pro dvojklik na řádek
|
|
63
70
|
// if (!isEditable && onRowDoubleClicked) {
|
|
64
71
|
// // Simulujeme událost dvojkliku na řádek
|
|
@@ -71,65 +78,74 @@ const Grid = (props) => {
|
|
|
71
78
|
// data: params.data,
|
|
72
79
|
// event: params.event
|
|
73
80
|
// });
|
|
74
|
-
|
|
81
|
+
|
|
75
82
|
// // Zastavíme výchozí zpracování událostí, aby se nezobrazil editor buňky
|
|
76
83
|
// if (params.event) {
|
|
77
84
|
// params.event.preventDefault();
|
|
78
85
|
// }
|
|
79
86
|
// }
|
|
80
87
|
// }, [onRowDoubleClicked, editableDefault]);
|
|
81
|
-
|
|
88
|
+
|
|
82
89
|
// Handler pro přidání nového řádku
|
|
83
|
-
const handleAddRow = useCallback(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
gridApi
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
90
|
+
const handleAddRow = useCallback(
|
|
91
|
+
(rowData = {}) => {
|
|
92
|
+
const newItemId = addItem(rowData);
|
|
93
|
+
|
|
94
|
+
// Může být potřeba aktualizovat grid pro zobrazení nového řádku
|
|
95
|
+
if (gridApi) {
|
|
96
|
+
gridApi.setRowData(items);
|
|
97
|
+
|
|
98
|
+
// Volitelně: přejít na nově přidanou položku
|
|
99
|
+
setTimeout(() => {
|
|
100
|
+
const rowNode = gridApi.getRowNode(newItemId);
|
|
101
|
+
if (rowNode) {
|
|
102
|
+
gridApi.ensureNodeVisible(rowNode);
|
|
103
|
+
}
|
|
104
|
+
}, 100);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return newItemId;
|
|
108
|
+
},
|
|
109
|
+
[addItem, gridApi, items]
|
|
110
|
+
);
|
|
111
|
+
|
|
102
112
|
// Handler pro odstranění řádku
|
|
103
|
-
const handleDeleteRow = useCallback(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
gridApi
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
const handleDeleteRow = useCallback(
|
|
114
|
+
(id) => {
|
|
115
|
+
deleteItem(id);
|
|
116
|
+
|
|
117
|
+
// Může být potřeba aktualizovat grid
|
|
118
|
+
if (gridApi) {
|
|
119
|
+
gridApi.setRowData(items);
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
[deleteItem, gridApi, items]
|
|
123
|
+
);
|
|
124
|
+
|
|
112
125
|
// Vlastní CSS třídy pro řádky s čekajícími změnami
|
|
113
126
|
const defaultRowClassRules = {
|
|
114
127
|
'row-pending-add': (params) => {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
128
|
+
return (
|
|
129
|
+
pendingChanges[params.data.id] &&
|
|
130
|
+
pendingChanges[params.data.id].operation === OperationType.ADD
|
|
131
|
+
);
|
|
118
132
|
},
|
|
119
133
|
'row-pending-update': (params) => {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
134
|
+
return (
|
|
135
|
+
pendingChanges[params.data.id] &&
|
|
136
|
+
pendingChanges[params.data.id].operation === OperationType.UPDATE
|
|
137
|
+
);
|
|
123
138
|
},
|
|
124
139
|
'row-pending-delete': (params) => {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
140
|
+
return (
|
|
141
|
+
pendingChanges[params.data.id] &&
|
|
142
|
+
pendingChanges[params.data.id].operation === OperationType.DELETE
|
|
143
|
+
);
|
|
144
|
+
},
|
|
129
145
|
};
|
|
130
|
-
|
|
131
|
-
// Kombinované rowClassRules
|
|
132
|
-
|
|
146
|
+
|
|
147
|
+
// Kombinované rowClassRules
|
|
148
|
+
const combinedRowClassRules = { ...defaultRowClassRules, ...rowClassRules };
|
|
133
149
|
|
|
134
150
|
// Exportovat metody pro přidání/odstranění řádků
|
|
135
151
|
useEffect(() => {
|
|
@@ -140,34 +156,38 @@ const Grid = (props) => {
|
|
|
140
156
|
}
|
|
141
157
|
}, [gridApi, handleAddRow, handleDeleteRow]);
|
|
142
158
|
|
|
159
|
+
const allGridProps = {
|
|
160
|
+
rowData: items,
|
|
161
|
+
defaultColDef: {
|
|
162
|
+
enableCellChangeFlash: true,
|
|
163
|
+
editable: editableDefault,
|
|
164
|
+
resizable: true,
|
|
165
|
+
...defaultColDef,
|
|
166
|
+
},
|
|
167
|
+
isRowSelectable: (params) => {
|
|
168
|
+
return (
|
|
169
|
+
!pendingChanges[params.data.id] ||
|
|
170
|
+
pendingChanges[params.data.id].operation !== OperationType.DELETE
|
|
171
|
+
);
|
|
172
|
+
},
|
|
173
|
+
isEditable: isCellEditable,
|
|
174
|
+
onGridReady: handleGridReady,
|
|
175
|
+
onCellValueChanged: handleCellValueChanged,
|
|
176
|
+
getRowId: (params) => params.data.id,
|
|
177
|
+
...gridOptions,
|
|
178
|
+
context: {
|
|
179
|
+
componentParent: this,
|
|
180
|
+
},
|
|
181
|
+
...props,
|
|
182
|
+
ref: gridRef,
|
|
183
|
+
columnDefs: AgGridColumns(columnDefs, props),
|
|
184
|
+
};
|
|
185
|
+
console.log(allGridProps);
|
|
186
|
+
|
|
187
|
+
|
|
143
188
|
return (
|
|
144
189
|
<div className={classnames(appearance)} style={{ height }}>
|
|
145
|
-
<AgGrid
|
|
146
|
-
rowData={items}
|
|
147
|
-
defaultColDef={{
|
|
148
|
-
enableCellChangeFlash: true,
|
|
149
|
-
editable: editableDefault,
|
|
150
|
-
resizable: true,
|
|
151
|
-
...defaultColDef,
|
|
152
|
-
}}
|
|
153
|
-
isRowSelectable={(params) => {
|
|
154
|
-
const { data } = params;
|
|
155
|
-
return !pendingChanges[data.id] ||
|
|
156
|
-
pendingChanges[data.id].operation !== OperationType.DELETE;
|
|
157
|
-
}}
|
|
158
|
-
isEditable={isCellEditable}
|
|
159
|
-
onGridReady={handleGridReady}
|
|
160
|
-
onCellValueChanged={handleCellValueChanged}
|
|
161
|
-
rowClassRules={{ ...defaultRowClassRules, ...rowClassRules }}
|
|
162
|
-
getRowId={(params) => params.data.id}
|
|
163
|
-
{...gridOptions}
|
|
164
|
-
context={{
|
|
165
|
-
componentParent: this,
|
|
166
|
-
}}
|
|
167
|
-
{...props}
|
|
168
|
-
ref={gridRef}
|
|
169
|
-
columnDefs={AgGridColumns(columnDefs, props)}
|
|
170
|
-
/>
|
|
190
|
+
<AgGrid {...allGridProps} />
|
|
171
191
|
</div>
|
|
172
192
|
);
|
|
173
193
|
};
|
|
@@ -175,4 +195,7 @@ const Grid = (props) => {
|
|
|
175
195
|
export default Grid;
|
|
176
196
|
export * from './enums';
|
|
177
197
|
export { default as ColumnBuilder } from './ColumnBuilder';
|
|
178
|
-
export { default as ContextBuilder } from './ContextBuilder';
|
|
198
|
+
export { default as ContextBuilder } from './ContextBuilder';
|
|
199
|
+
export * as utils from './utils';
|
|
200
|
+
|
|
201
|
+
/* eslint-enable */
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bit.rhplus/ui.grid",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.26",
|
|
4
4
|
"homepage": "https://bit.cloud/remote-scope/ui/grid",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "remote-scope",
|
|
8
8
|
"name": "ui/grid",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.26"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"antd": "^5.20.6",
|
|
13
13
|
"classnames": "^2.5.1",
|
|
14
|
-
"@bit.rhplus/
|
|
15
|
-
"@bit.rhplus/
|
|
14
|
+
"@bit.rhplus/shared-grid-form": "0.0.2",
|
|
15
|
+
"@bit.rhplus/ag-grid": "0.0.20"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@teambit/react.react-env": "1.0.129"
|
package/style.css
ADDED
|
File without changes
|
package/utils.jsx
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const getSelectedRows = (params) => {
|
|
2
|
+
// Získání vybraných rozsahů buněk
|
|
3
|
+
const cellRanges = params.api.getCellRanges();
|
|
4
|
+
|
|
5
|
+
// Set pro uložení unikátních ID řádků
|
|
6
|
+
const uniqueRowIds = new Set();
|
|
7
|
+
const selectedRowsData = [];
|
|
8
|
+
|
|
9
|
+
if (cellRanges && cellRanges.length > 0) {
|
|
10
|
+
cellRanges.forEach((range) => {
|
|
11
|
+
// V AG-Grid 33.x struktura range objektu
|
|
12
|
+
const startRowIndex = Math.min(
|
|
13
|
+
range.startRow.rowIndex,
|
|
14
|
+
range.endRow.rowIndex
|
|
15
|
+
);
|
|
16
|
+
const endRowIndex = Math.max(
|
|
17
|
+
range.startRow.rowIndex,
|
|
18
|
+
range.endRow.rowIndex
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
// Projít všechny řádky v rozsahu
|
|
22
|
+
for (let i = startRowIndex; i <= endRowIndex; i += 1) {
|
|
23
|
+
const rowNode = params.api.getDisplayedRowAtIndex(i);
|
|
24
|
+
if (rowNode && rowNode.data && rowNode.data.id) {
|
|
25
|
+
// Přidat ID řádku do setu (automaticky zajistí unikátnost)
|
|
26
|
+
if (!uniqueRowIds.has(rowNode.data.id)) {
|
|
27
|
+
uniqueRowIds.add(rowNode.data.id);
|
|
28
|
+
selectedRowsData.push(rowNode.data);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return selectedRowsData;
|
|
35
|
+
};
|
|
File without changes
|
|
File without changes
|