react-restyle-components 0.4.40 → 0.4.41
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/lib/src/core-components/src/components/Table/Table.js +30 -5
- package/lib/src/core-components/src/components/ag-grid/AgGrid.d.ts +11 -0
- package/lib/src/core-components/src/components/ag-grid/AgGrid.js +733 -0
- package/lib/src/core-components/src/components/ag-grid/elements.d.ts +246 -0
- package/lib/src/core-components/src/components/ag-grid/elements.js +1156 -0
- package/lib/src/core-components/src/components/ag-grid/hooks.d.ts +196 -0
- package/lib/src/core-components/src/components/ag-grid/hooks.js +943 -0
- package/lib/src/core-components/src/components/ag-grid/index.d.ts +9 -0
- package/lib/src/core-components/src/components/ag-grid/index.js +13 -0
- package/lib/src/core-components/src/components/ag-grid/types.d.ts +1367 -0
- package/lib/src/core-components/src/components/ag-grid/types.js +6 -0
- package/lib/src/core-components/src/components/index.d.ts +1 -0
- package/lib/src/core-components/src/components/index.js +1 -0
- package/lib/src/core-components/src/tc.global.css +5 -3
- package/lib/src/core-components/src/tc.module.css +2 -2
- package/package.json +1 -1
|
@@ -151,9 +151,34 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
151
151
|
const [toggleDragOverColumn, setToggleDragOverColumn] = useState(null);
|
|
152
152
|
// Internal state for reordered columns (used in popup and for rendering)
|
|
153
153
|
const [reorderedColumns, setReorderedColumns] = useState(columns);
|
|
154
|
-
// Sync reorderedColumns when columns prop changes
|
|
154
|
+
// Sync reorderedColumns when columns prop structure changes (columns added/removed)
|
|
155
|
+
// We only reset when the actual column dataFields change, not on every reference change
|
|
155
156
|
useEffect(() => {
|
|
156
|
-
|
|
157
|
+
const currentDataFields = reorderedColumns
|
|
158
|
+
.map((c) => c.dataField)
|
|
159
|
+
.sort()
|
|
160
|
+
.join(',');
|
|
161
|
+
const newDataFields = columns
|
|
162
|
+
.map((c) => c.dataField)
|
|
163
|
+
.sort()
|
|
164
|
+
.join(',');
|
|
165
|
+
if (currentDataFields !== newDataFields) {
|
|
166
|
+
// Columns structure changed - merge new columns while preserving order where possible
|
|
167
|
+
const newColumnMap = new Map(columns.map((c) => [c.dataField, c]));
|
|
168
|
+
const existingDataFields = new Set(reorderedColumns.map((c) => c.dataField));
|
|
169
|
+
// Keep existing order for columns that still exist, update their data
|
|
170
|
+
const preserved = reorderedColumns
|
|
171
|
+
.filter((c) => newColumnMap.has(c.dataField))
|
|
172
|
+
.map((c) => newColumnMap.get(c.dataField));
|
|
173
|
+
// Add new columns at the end
|
|
174
|
+
const added = columns.filter((c) => !existingDataFields.has(c.dataField));
|
|
175
|
+
setReorderedColumns([...preserved, ...added]);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
// Same columns but maybe different data - update column data while preserving order
|
|
179
|
+
const columnMap = new Map(columns.map((c) => [c.dataField, c]));
|
|
180
|
+
setReorderedColumns(reorderedColumns.map((c) => columnMap.get(c.dataField) || c));
|
|
181
|
+
}
|
|
157
182
|
}, [columns]);
|
|
158
183
|
// Close column toggle panel on outside click
|
|
159
184
|
useEffect(() => {
|
|
@@ -703,11 +728,11 @@ export const Table = forwardRef(function TableComponent(props, ref) {
|
|
|
703
728
|
const result = toggleExpand(row);
|
|
704
729
|
expandable?.onExpandChange?.(result.expandedKeys, result.expanded, row);
|
|
705
730
|
}, [toggleExpand, expandable]);
|
|
706
|
-
// Filtered column list for toggle panel
|
|
731
|
+
// Filtered column list for toggle panel - use reorderedColumns to preserve reorder state
|
|
707
732
|
const filteredToggleColumns = useMemo(() => {
|
|
708
|
-
return
|
|
733
|
+
return reorderedColumns.filter((c) => c.dataField !== keyField &&
|
|
709
734
|
c.text.toLowerCase().includes(columnSearch.toLowerCase()));
|
|
710
|
-
}, [
|
|
735
|
+
}, [reorderedColumns, keyField, columnSearch]);
|
|
711
736
|
// Get row key
|
|
712
737
|
const getRowKey = useCallback((row) => row[keyField], [keyField]);
|
|
713
738
|
// Render cell content
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AG Grid Component
|
|
3
|
+
* A comprehensive, AG Grid-like data table with all enterprise features
|
|
4
|
+
* Reference: https://www.ag-grid.com/react-data-grid/getting-started/
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { AgGridProps, AgGridRef } from './types';
|
|
8
|
+
export declare const AgGrid: <T extends Record<string, any>>(props: AgGridProps<T> & {
|
|
9
|
+
ref?: React.ForwardedRef<AgGridRef<T>> | undefined;
|
|
10
|
+
}) => React.ReactElement;
|
|
11
|
+
export default AgGrid;
|