@bit.rhplus/ag-grid 0.0.32 → 0.0.33
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/dist/index.js +119 -26
- package/dist/index.js.map +1 -1
- package/index.jsx +127 -26
- package/package.json +2 -2
- /package/dist/{preview-1755777309104.js → preview-1756735815679.js} +0 -0
package/dist/index.js
CHANGED
|
@@ -17,51 +17,87 @@ import ButtonRenderer from './Renderers/ButtonRenderer';
|
|
|
17
17
|
import CountrySelectRenderer from './Renderers/CountrySelectRenderer';
|
|
18
18
|
const AgGrid = React.forwardRef((props, ref) => {
|
|
19
19
|
const internalRef = React.useRef();
|
|
20
|
-
const { rowData = [], newRowFlash = true, onGridReady } = props;
|
|
20
|
+
const { rowData = [], newRowFlash = true, updatedRowFlash = false, onGridReady } = props;
|
|
21
21
|
const [, setIsGridReady] = React.useState(false);
|
|
22
22
|
const previousRowDataRef = React.useRef(rowData);
|
|
23
23
|
const findNewRows = (oldData, newData) => {
|
|
24
24
|
const oldIds = new Set(oldData.map((row) => row.id));
|
|
25
25
|
return newData.filter((row) => !oldIds.has(row.id));
|
|
26
26
|
};
|
|
27
|
+
const findUpdatedRows = (oldData, newData) => {
|
|
28
|
+
const oldDataMap = new Map(oldData.map((row) => [row.id, row]));
|
|
29
|
+
return newData.filter((newRow) => {
|
|
30
|
+
const oldRow = oldDataMap.get(newRow.id);
|
|
31
|
+
if (!oldRow)
|
|
32
|
+
return false; // Nový řádek, ne aktualizovaný
|
|
33
|
+
// Porovnáme pouze základní vlastnosti pro rychlost
|
|
34
|
+
return JSON.stringify(oldRow) !== JSON.stringify(newRow);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
27
37
|
React.useImperativeHandle(ref, () => internalRef.current, [internalRef]);
|
|
28
38
|
React.useEffect(() => {
|
|
29
|
-
if (!newRowFlash)
|
|
39
|
+
if (!newRowFlash && !updatedRowFlash)
|
|
30
40
|
return;
|
|
31
41
|
const previousRowData = previousRowDataRef.current;
|
|
32
|
-
const addedRows = findNewRows(previousRowData, rowData);
|
|
33
|
-
|
|
42
|
+
const addedRows = newRowFlash ? findNewRows(previousRowData, rowData) : [];
|
|
43
|
+
const updatedRows = updatedRowFlash ? findUpdatedRows(previousRowData, rowData) : [];
|
|
44
|
+
if (addedRows.length > 0 || updatedRows.length > 0) {
|
|
34
45
|
setTimeout(() => {
|
|
35
46
|
try {
|
|
36
47
|
// Bezpečnostní kontrola API dostupnosti
|
|
37
48
|
if (!internalRef.current?.api || internalRef.current.api.isDestroyed?.()) {
|
|
38
49
|
return;
|
|
39
50
|
}
|
|
40
|
-
const newRowNodes = [];
|
|
41
|
-
internalRef.current.api.forEachNode((node) => {
|
|
42
|
-
if (addedRows.some((row) => row.id === node.data.id)) {
|
|
43
|
-
newRowNodes.push(node);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
// Kontrola, že máme platné row nodes
|
|
47
|
-
if (newRowNodes.length === 0) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
51
|
// Modern AG-Grid (33+): getColumnState() moved to main api
|
|
51
52
|
const columnApi = internalRef.current?.columnApi || internalRef.current?.api;
|
|
52
|
-
if (columnApi?.getColumnState) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
if (!columnApi?.getColumnState) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const columnStates = columnApi.getColumnState();
|
|
57
|
+
const allColumns = columnStates
|
|
58
|
+
.filter(colState => colState.colId) // Filtrujeme pouze platné colId
|
|
59
|
+
.map((colState) => colState.colId);
|
|
60
|
+
// Kontrola, že máme platné sloupce
|
|
61
|
+
if (allColumns.length === 0) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Flash efekt pro nové řádky (používá defaultní zelená barva AG Grid)
|
|
65
|
+
if (addedRows.length > 0) {
|
|
66
|
+
const newRowNodes = [];
|
|
67
|
+
internalRef.current.api.forEachNode((node) => {
|
|
68
|
+
if (addedRows.some((row) => row.id === node.data.id)) {
|
|
69
|
+
newRowNodes.push(node);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
if (newRowNodes.length > 0) {
|
|
73
|
+
internalRef.current.api.flashCells({
|
|
74
|
+
rowNodes: newRowNodes,
|
|
75
|
+
columns: allColumns,
|
|
76
|
+
flashDelay: 0,
|
|
77
|
+
fadeDelay: 1000,
|
|
78
|
+
});
|
|
60
79
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
80
|
+
}
|
|
81
|
+
// Flash efekt pro aktualizované řádky (modrá barva)
|
|
82
|
+
if (updatedRows.length > 0) {
|
|
83
|
+
const updatedRowNodes = [];
|
|
84
|
+
internalRef.current.api.forEachNode((node) => {
|
|
85
|
+
if (updatedRows.some((row) => row.id === node.data.id)) {
|
|
86
|
+
updatedRowNodes.push(node);
|
|
87
|
+
}
|
|
64
88
|
});
|
|
89
|
+
if (updatedRowNodes.length > 0) {
|
|
90
|
+
// Použijeme vlastní CSS animaci pro modrou flash
|
|
91
|
+
updatedRowNodes.forEach(node => {
|
|
92
|
+
const rowElement = node.eGridRow || document.querySelector(`[row-id="${node.data.id}"]`);
|
|
93
|
+
if (rowElement) {
|
|
94
|
+
rowElement.classList.add('ag-row-flash-updated');
|
|
95
|
+
setTimeout(() => {
|
|
96
|
+
rowElement.classList.remove('ag-row-flash-updated');
|
|
97
|
+
}, 1000);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
65
101
|
}
|
|
66
102
|
}
|
|
67
103
|
catch (error) {
|
|
@@ -70,7 +106,7 @@ const AgGrid = React.forwardRef((props, ref) => {
|
|
|
70
106
|
}, 100); // Zvýšený timeout pro stabilizaci gridu
|
|
71
107
|
}
|
|
72
108
|
previousRowDataRef.current = rowData;
|
|
73
|
-
}, [rowData, newRowFlash]);
|
|
109
|
+
}, [rowData, newRowFlash, updatedRowFlash]);
|
|
74
110
|
const RhPlusRangeSelectionChanged = React.useCallback(() => {
|
|
75
111
|
// Zakomentovaná funkcionalita pro budoucí použití
|
|
76
112
|
// if (internalRef && !!internalRef.current && enableNotification) {
|
|
@@ -100,6 +136,63 @@ const AgGrid = React.forwardRef((props, ref) => {
|
|
|
100
136
|
internalRef.current.api = event.api;
|
|
101
137
|
internalRef.current.columnApi = event.columnApi || event.api; // fallback for modern AG-Grid
|
|
102
138
|
}
|
|
139
|
+
// Registruj callback pro AG Grid transactions (SignalR optimalizace)
|
|
140
|
+
if (event.api && !window.agGridTransactionCallback) {
|
|
141
|
+
window.agGridTransactionCallback = (transactionData) => {
|
|
142
|
+
try {
|
|
143
|
+
if (!event.api || event.api.isDestroyed?.())
|
|
144
|
+
return;
|
|
145
|
+
const { operation, records } = transactionData;
|
|
146
|
+
switch (operation) {
|
|
147
|
+
case 'add':
|
|
148
|
+
event.api.applyTransaction({ add: records });
|
|
149
|
+
// Flash efekt pro nové řádky
|
|
150
|
+
setTimeout(() => {
|
|
151
|
+
records.forEach(record => {
|
|
152
|
+
const rowNode = event.api.getRowNode(record.id);
|
|
153
|
+
if (rowNode && rowNode.rowElement) {
|
|
154
|
+
rowNode.rowElement.classList.add('ag-row-flash-created');
|
|
155
|
+
setTimeout(() => {
|
|
156
|
+
rowNode.rowElement.classList.remove('ag-row-flash-created');
|
|
157
|
+
}, 1000);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}, 100);
|
|
161
|
+
break;
|
|
162
|
+
case 'update':
|
|
163
|
+
event.api.applyTransaction({ update: records });
|
|
164
|
+
// Flash efekt pro aktualizované řádky
|
|
165
|
+
setTimeout(() => {
|
|
166
|
+
records.forEach(record => {
|
|
167
|
+
const rowNode = event.api.getRowNode(record.id);
|
|
168
|
+
if (rowNode && rowNode.rowElement) {
|
|
169
|
+
rowNode.rowElement.classList.add('ag-row-flash-updated');
|
|
170
|
+
setTimeout(() => {
|
|
171
|
+
rowNode.rowElement.classList.remove('ag-row-flash-updated');
|
|
172
|
+
}, 1000);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}, 100);
|
|
176
|
+
break;
|
|
177
|
+
case 'remove':
|
|
178
|
+
// Flash efekt před smazáním
|
|
179
|
+
records.forEach(record => {
|
|
180
|
+
const rowNode = event.api.getRowNode(record.id);
|
|
181
|
+
if (rowNode && rowNode.rowElement) {
|
|
182
|
+
rowNode.rowElement.classList.add('ag-row-flash-deleted');
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
setTimeout(() => {
|
|
186
|
+
event.api.applyTransaction({ remove: records });
|
|
187
|
+
}, 500); // Krátké zpoždění pro zobrazení flash efektu
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
// Ignorujeme chyby
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
103
196
|
// Pak zavoláme parent onGridReady handler, pokud existuje
|
|
104
197
|
// Toto je kritické pro správné fungování bit/ui/grid a GridLayout
|
|
105
198
|
if (options.onGridReady) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAC5D,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAC1D,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AAGtE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IACnC,MAAM,EACJ,OAAO,GAAG,EAAE,EACZ,WAAW,GAAG,IAAI,EAClB,WAAW,EACZ,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAEzE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,WAAW;YAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":"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"}
|
package/index.jsx
CHANGED
|
@@ -21,6 +21,7 @@ const AgGrid = React.forwardRef((props, ref) => {
|
|
|
21
21
|
const {
|
|
22
22
|
rowData = [],
|
|
23
23
|
newRowFlash = true,
|
|
24
|
+
updatedRowFlash = false,
|
|
24
25
|
onGridReady
|
|
25
26
|
} = props;
|
|
26
27
|
const [, setIsGridReady] = React.useState(false);
|
|
@@ -31,15 +32,27 @@ const AgGrid = React.forwardRef((props, ref) => {
|
|
|
31
32
|
return newData.filter((row) => !oldIds.has(row.id));
|
|
32
33
|
};
|
|
33
34
|
|
|
35
|
+
const findUpdatedRows = (oldData, newData) => {
|
|
36
|
+
const oldDataMap = new Map(oldData.map((row) => [row.id, row]));
|
|
37
|
+
return newData.filter((newRow) => {
|
|
38
|
+
const oldRow = oldDataMap.get(newRow.id);
|
|
39
|
+
if (!oldRow) return false; // Nový řádek, ne aktualizovaný
|
|
40
|
+
|
|
41
|
+
// Porovnáme pouze základní vlastnosti pro rychlost
|
|
42
|
+
return JSON.stringify(oldRow) !== JSON.stringify(newRow);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
34
46
|
React.useImperativeHandle(ref, () => internalRef.current, [internalRef]);
|
|
35
47
|
|
|
36
48
|
React.useEffect(() => {
|
|
37
|
-
if (!newRowFlash) return;
|
|
49
|
+
if (!newRowFlash && !updatedRowFlash) return;
|
|
38
50
|
|
|
39
51
|
const previousRowData = previousRowDataRef.current;
|
|
40
|
-
const addedRows = findNewRows(previousRowData, rowData);
|
|
52
|
+
const addedRows = newRowFlash ? findNewRows(previousRowData, rowData) : [];
|
|
53
|
+
const updatedRows = updatedRowFlash ? findUpdatedRows(previousRowData, rowData) : [];
|
|
41
54
|
|
|
42
|
-
if (addedRows.length > 0) {
|
|
55
|
+
if (addedRows.length > 0 || updatedRows.length > 0) {
|
|
43
56
|
setTimeout(() => {
|
|
44
57
|
try {
|
|
45
58
|
// Bezpečnostní kontrola API dostupnosti
|
|
@@ -47,35 +60,62 @@ const AgGrid = React.forwardRef((props, ref) => {
|
|
|
47
60
|
return;
|
|
48
61
|
}
|
|
49
62
|
|
|
50
|
-
|
|
51
|
-
internalRef.current.api
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
// Modern AG-Grid (33+): getColumnState() moved to main api
|
|
64
|
+
const columnApi = internalRef.current?.columnApi || internalRef.current?.api;
|
|
65
|
+
if (!columnApi?.getColumnState) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const columnStates = columnApi.getColumnState();
|
|
70
|
+
const allColumns = columnStates
|
|
71
|
+
.filter(colState => colState.colId) // Filtrujeme pouze platné colId
|
|
72
|
+
.map((colState) => colState.colId);
|
|
56
73
|
|
|
57
|
-
// Kontrola, že máme platné
|
|
58
|
-
if (
|
|
74
|
+
// Kontrola, že máme platné sloupce
|
|
75
|
+
if (allColumns.length === 0) {
|
|
59
76
|
return;
|
|
60
77
|
}
|
|
61
78
|
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (
|
|
72
|
-
|
|
79
|
+
// Flash efekt pro nové řádky (používá defaultní zelená barva AG Grid)
|
|
80
|
+
if (addedRows.length > 0) {
|
|
81
|
+
const newRowNodes = [];
|
|
82
|
+
internalRef.current.api.forEachNode((node) => {
|
|
83
|
+
if (addedRows.some((row) => row.id === node.data.id)) {
|
|
84
|
+
newRowNodes.push(node);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
if (newRowNodes.length > 0) {
|
|
89
|
+
internalRef.current.api.flashCells({
|
|
90
|
+
rowNodes: newRowNodes,
|
|
91
|
+
columns: allColumns,
|
|
92
|
+
flashDelay: 0,
|
|
93
|
+
fadeDelay: 1000,
|
|
94
|
+
});
|
|
73
95
|
}
|
|
96
|
+
}
|
|
74
97
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
98
|
+
// Flash efekt pro aktualizované řádky (modrá barva)
|
|
99
|
+
if (updatedRows.length > 0) {
|
|
100
|
+
const updatedRowNodes = [];
|
|
101
|
+
internalRef.current.api.forEachNode((node) => {
|
|
102
|
+
if (updatedRows.some((row) => row.id === node.data.id)) {
|
|
103
|
+
updatedRowNodes.push(node);
|
|
104
|
+
}
|
|
78
105
|
});
|
|
106
|
+
|
|
107
|
+
if (updatedRowNodes.length > 0) {
|
|
108
|
+
// Použijeme vlastní CSS animaci pro modrou flash
|
|
109
|
+
updatedRowNodes.forEach(node => {
|
|
110
|
+
const rowElement = node.eGridRow || document.querySelector(`[row-id="${node.data.id}"]`);
|
|
111
|
+
if (rowElement) {
|
|
112
|
+
rowElement.classList.add('ag-row-flash-updated');
|
|
113
|
+
setTimeout(() => {
|
|
114
|
+
rowElement.classList.remove('ag-row-flash-updated');
|
|
115
|
+
}, 1000);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
79
119
|
}
|
|
80
120
|
} catch (error) {
|
|
81
121
|
// Ignorujeme chybu a pokračujeme bez crash aplikace
|
|
@@ -84,7 +124,7 @@ const AgGrid = React.forwardRef((props, ref) => {
|
|
|
84
124
|
}
|
|
85
125
|
|
|
86
126
|
previousRowDataRef.current = rowData;
|
|
87
|
-
}, [rowData, newRowFlash]);
|
|
127
|
+
}, [rowData, newRowFlash, updatedRowFlash]);
|
|
88
128
|
|
|
89
129
|
const RhPlusRangeSelectionChanged = React.useCallback(
|
|
90
130
|
() => {
|
|
@@ -121,6 +161,67 @@ const AgGrid = React.forwardRef((props, ref) => {
|
|
|
121
161
|
internalRef.current.columnApi = event.columnApi || event.api; // fallback for modern AG-Grid
|
|
122
162
|
}
|
|
123
163
|
|
|
164
|
+
// Registruj callback pro AG Grid transactions (SignalR optimalizace)
|
|
165
|
+
if (event.api && !window.agGridTransactionCallback) {
|
|
166
|
+
window.agGridTransactionCallback = (transactionData) => {
|
|
167
|
+
try {
|
|
168
|
+
if (!event.api || event.api.isDestroyed?.()) return;
|
|
169
|
+
|
|
170
|
+
const { operation, records } = transactionData;
|
|
171
|
+
|
|
172
|
+
switch (operation) {
|
|
173
|
+
case 'add':
|
|
174
|
+
event.api.applyTransaction({ add: records });
|
|
175
|
+
// Flash efekt pro nové řádky
|
|
176
|
+
setTimeout(() => {
|
|
177
|
+
records.forEach(record => {
|
|
178
|
+
const rowNode = event.api.getRowNode(record.id);
|
|
179
|
+
if (rowNode && rowNode.rowElement) {
|
|
180
|
+
rowNode.rowElement.classList.add('ag-row-flash-created');
|
|
181
|
+
setTimeout(() => {
|
|
182
|
+
rowNode.rowElement.classList.remove('ag-row-flash-created');
|
|
183
|
+
}, 1000);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}, 100);
|
|
187
|
+
break;
|
|
188
|
+
|
|
189
|
+
case 'update':
|
|
190
|
+
event.api.applyTransaction({ update: records });
|
|
191
|
+
// Flash efekt pro aktualizované řádky
|
|
192
|
+
setTimeout(() => {
|
|
193
|
+
records.forEach(record => {
|
|
194
|
+
const rowNode = event.api.getRowNode(record.id);
|
|
195
|
+
if (rowNode && rowNode.rowElement) {
|
|
196
|
+
rowNode.rowElement.classList.add('ag-row-flash-updated');
|
|
197
|
+
setTimeout(() => {
|
|
198
|
+
rowNode.rowElement.classList.remove('ag-row-flash-updated');
|
|
199
|
+
}, 1000);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}, 100);
|
|
203
|
+
break;
|
|
204
|
+
|
|
205
|
+
case 'remove':
|
|
206
|
+
// Flash efekt před smazáním
|
|
207
|
+
records.forEach(record => {
|
|
208
|
+
const rowNode = event.api.getRowNode(record.id);
|
|
209
|
+
if (rowNode && rowNode.rowElement) {
|
|
210
|
+
rowNode.rowElement.classList.add('ag-row-flash-deleted');
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
setTimeout(() => {
|
|
215
|
+
event.api.applyTransaction({ remove: records });
|
|
216
|
+
}, 500); // Krátké zpoždění pro zobrazení flash efektu
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
} catch (error) {
|
|
220
|
+
// Ignorujeme chyby
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
|
|
124
225
|
// Pak zavoláme parent onGridReady handler, pokud existuje
|
|
125
226
|
// Toto je kritické pro správné fungování bit/ui/grid a GridLayout
|
|
126
227
|
if (options.onGridReady) {
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bit.rhplus/ag-grid",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.33",
|
|
4
4
|
"homepage": "https://bit.cloud/remote-scope/ag-grid",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "remote-scope",
|
|
8
8
|
"name": "ag-grid",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.33"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"linq": "^4.0.3",
|
|
File without changes
|