react-restyle-components 0.4.41 → 0.4.42

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.
@@ -6,8 +6,24 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
6
6
  * Reference: https://www.ag-grid.com/react-data-grid/getting-started/
7
7
  */
8
8
  import React, { forwardRef, useImperativeHandle, useMemo, useCallback, useState, useEffect, useRef, } from 'react';
9
- import { GridRoot, GridWrapper, GridToolbar, ToolbarGroup, ToolbarButton, QuickFilter, TableContainer, StyledTable, TableHead, HeaderRow, HeaderCell, HeaderCellContent, HeaderText, SortIndicator, FilterIndicator, ResizeHandle, GroupHeaderRow, GroupHeaderCell, FloatingFilterRow, FloatingFilterCell, TableBody, TableRow, TableCell, CellContent, Checkbox, CheckboxCell, ExpandButton, DragHandle, CellEditor, PaginationBar, PaginationInfo, PaginationControls, PageButton, PageSizeSelect, StatusBar, StatusItem, LoadingOverlay, Spinner, NoRowsOverlay, ContextMenu, ContextMenuItem, ContextMenuDivider, MobileCardContainer, MobileCard, MobileCardHeader, MobileCardRow, MobileCardLabel, MobileCardValue, SelectionBar, SelectionActions, getTheme, } from './elements';
10
- import { useSorting, useFiltering, usePagination, useRowSelection, useRowExpansion, useColumnState, useCellEditing, useContextMenu, useResponsive, useClipboard, getNestedValue, createRowNode, exportToCsv, } from './hooks';
9
+ import { GridRoot, GridWrapper, GridToolbar, ToolbarGroup, ToolbarButton, QuickFilter, TableContainer, StyledTable, TableHead, HeaderRow, HeaderCell, HeaderCellContent, HeaderText, SortIndicator, FilterIndicator, ResizeHandle, GroupHeaderRow, GroupHeaderCell, FloatingFilterRow, FloatingFilterCell, TableBody, TableRow, TableCell, CellContent, Checkbox, CheckboxCell, ExpandButton, DragHandle, CellEditor, PaginationBar, PaginationInfo, PaginationControls, PageButton, PageSizeSelect, StatusBar, StatusItem, LoadingOverlay, Spinner, NoRowsOverlay, ContextMenu, ContextMenuItem, ContextMenuDivider, MobileCardContainer, MobileCard, MobileCardHeader, MobileCardRow, MobileCardLabel, MobileCardValue, SelectionBar, SelectionActions, getTheme,
10
+ // New Side Panel Components
11
+ SidePanel, SidePanelTabs, SidePanelTab, SidePanelContent, SidePanelSearch, SidePanelSection, SidePanelSectionHeader, SidePanelColumnItem, SidePanelDragHandle, SidePanelGroupLabel,
12
+ // Row Groups
13
+ RowGroupsZone, RowGroupsLabel, RowGroupChip,
14
+ // Values Panel
15
+ ValuesPanel, ValueItem, ValueItemLabel, ValueItemRemove,
16
+ // Pivot Mode
17
+ PivotModeToggle, PivotModeLabel, ToggleSwitch,
18
+ // Column Menu
19
+ HeaderMenuButton, ColumnMenuPopup, ColumnMenuSection, ColumnMenuItem,
20
+ // Set Filter
21
+ SetFilterContainer, SetFilterHeader, SetFilterSearch, SetFilterList, SetFilterItem, SetFilterActions, SetFilterButton,
22
+ // Filter Panel
23
+ FilterPanelColumn, FilterPanelHeader, FilterPanelContent,
24
+ // Layout
25
+ GridLayout, GridMainArea, } from './elements';
26
+ import { useSorting, useFiltering, usePagination, useRowSelection, useRowExpansion, useColumnState, useCellEditing, useContextMenu, useResponsive, useClipboard, getNestedValue, createRowNode, exportToCsv, useAggregationPanel, useRowGroupingPanel, useColumnMenu, useSidePanel, usePivotMode, } from './hooks';
11
27
  // ============================================================================
12
28
  // Icons
13
29
  // ============================================================================
@@ -26,6 +42,18 @@ const MenuIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", strok
26
42
  const GripIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "currentColor", opacity: "0.5", children: [_jsx("circle", { cx: "9", cy: "5", r: "1.5" }), _jsx("circle", { cx: "9", cy: "12", r: "1.5" }), _jsx("circle", { cx: "9", cy: "19", r: "1.5" }), _jsx("circle", { cx: "15", cy: "5", r: "1.5" }), _jsx("circle", { cx: "15", cy: "12", r: "1.5" }), _jsx("circle", { cx: "15", cy: "19", r: "1.5" })] }));
27
43
  const EmptyIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("path", { d: "M3 9h18M9 3v18", strokeLinecap: "round" })] }));
28
44
  const CloseIcon = () => (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M18 6L6 18M6 6l12 12", strokeLinecap: "round", strokeLinejoin: "round" }) }));
45
+ const PinIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [_jsx("path", { d: "M12 2v10M12 22v-6M4 12h16", strokeLinecap: "round" }), _jsx("circle", { cx: "12", cy: "12", r: "3" })] }));
46
+ const PinLeftIcon = () => (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M4 4v16M8 12h12M15 7l5 5-5 5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
47
+ const PinRightIcon = () => (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M20 4v16M4 12h12M9 7l-5 5 5 5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
48
+ const NoPinIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [_jsx("path", { d: "M3 3l18 18M12 2v10M12 22v-6", strokeLinecap: "round" }), _jsx("circle", { cx: "12", cy: "12", r: "3" })] }));
49
+ const GroupIcon = () => (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M4 6h16M4 12h16M4 18h16", strokeLinecap: "round" }) }));
50
+ const AutosizeIcon = () => (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M4 12h16M9 7l-5 5 5 5M15 7l5 5-5 5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
51
+ const ResetIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [_jsx("path", { d: "M3 12a9 9 0 109-9 9.75 9.75 0 00-6.74 2.74L3 8", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M3 3v5h5", strokeLinecap: "round", strokeLinejoin: "round" })] }));
52
+ const SigmaIcon = () => (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M18 6H6l6 6-6 6h12", strokeLinecap: "round", strokeLinejoin: "round" }) }));
53
+ const EyeIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [_jsx("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), _jsx("circle", { cx: "12", cy: "12", r: "3" })] }));
54
+ const EyeOffIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [_jsx("path", { d: "M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24" }), _jsx("line", { x1: "1", y1: "1", x2: "23", y2: "23" })] }));
55
+ const CheckIcon = () => (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("polyline", { points: "20 6 9 17 4 12", strokeLinecap: "round", strokeLinejoin: "round" }) }));
56
+ const PanelRightIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("path", { d: "M15 3v18", strokeLinecap: "round" })] }));
29
57
  // ============================================================================
30
58
  // Helper Functions
31
59
  // ============================================================================
@@ -123,14 +151,44 @@ function AgGridInner(props, ref) {
123
151
  }
124
152
  }, [controlledQuickFilter, setQuickFilterText]);
125
153
  // ============================================================================
126
- // Processed Data (sort + filter)
154
+ // Set Filter State (for each column) - moved up for processedData dependency
155
+ // ============================================================================
156
+ const [setFilterStates, setSetFilterStates] = useState({});
157
+ // ============================================================================
158
+ // Processed Data (sort + filter + set filter)
127
159
  // ============================================================================
128
160
  const processedData = useMemo(() => {
129
161
  let data = [...rowData];
162
+ // Apply quick filter and column text filters
130
163
  data = filterData(data, visibleColumns);
164
+ // Apply set filters (filter by selected values)
165
+ Object.entries(setFilterStates).forEach(([field, selectedValues]) => {
166
+ // If no values selected or all values selected, skip filtering
167
+ const allValues = new Set();
168
+ rowData.forEach((row) => {
169
+ const value = getNestedValue(row, field);
170
+ if (value != null) {
171
+ allValues.add(String(value));
172
+ }
173
+ });
174
+ // Only apply filter if some values are deselected
175
+ if (selectedValues.size > 0 && selectedValues.size < allValues.size) {
176
+ data = data.filter((row) => {
177
+ const value = getNestedValue(row, field);
178
+ if (value == null)
179
+ return false;
180
+ return selectedValues.has(String(value));
181
+ });
182
+ }
183
+ else if (selectedValues.size === 0) {
184
+ // No values selected means filter out all
185
+ data = [];
186
+ }
187
+ });
188
+ // Apply sorting
131
189
  data = sortData(data, visibleColumns);
132
190
  return data;
133
- }, [rowData, filterData, sortData, visibleColumns]);
191
+ }, [rowData, filterData, sortData, visibleColumns, setFilterStates]);
134
192
  // ============================================================================
135
193
  // Pagination
136
194
  // ============================================================================
@@ -166,6 +224,143 @@ function AgGridInner(props, ref) {
166
224
  // ============================================================================
167
225
  const { isMobile } = useResponsive(mobileBreakpoint);
168
226
  // ============================================================================
227
+ // Side Panel
228
+ // ============================================================================
229
+ const { isOpen: isSidePanelOpen, activeTab: sidePanelTab, toggle: toggleSidePanel, switchTab: switchSidePanelTab, setIsOpen: setSidePanelOpen, } = useSidePanel(props.sideBar !== false, 'columns');
230
+ // ============================================================================
231
+ // Column Menu
232
+ // ============================================================================
233
+ const { menuState: columnMenuState, showColumnMenu, hideColumnMenu, filterDropdownState, showFilterDropdown, hideFilterDropdown, } = useColumnMenu();
234
+ // ============================================================================
235
+ // Row Grouping Panel
236
+ // ============================================================================
237
+ const { rowGroupColumns, addRowGroupColumn, removeRowGroupColumn, clearRowGroupColumns, groupableColumns, groupedColumnsInfo, } = useRowGroupingPanel(flatColumns);
238
+ // ============================================================================
239
+ // Aggregation Panel
240
+ // ============================================================================
241
+ const { valueColumns, addValueColumn, removeValueColumn, clearValueColumns, aggregatedValues, } = useAggregationPanel(processedData);
242
+ // ============================================================================
243
+ // Pivot Mode
244
+ // ============================================================================
245
+ const { isPivotMode, togglePivotMode, } = usePivotMode();
246
+ // ============================================================================
247
+ // Expanded Filter Panels State
248
+ // ============================================================================
249
+ const [expandedFilterPanels, setExpandedFilterPanels] = useState(new Set());
250
+ // ============================================================================
251
+ // Column Drag State (for reordering in side panel)
252
+ // ============================================================================
253
+ const [draggedColumnId, setDraggedColumnId] = useState(null);
254
+ const [dragOverColumnId, setDragOverColumnId] = useState(null);
255
+ const handleColumnDragStart = useCallback((e, colId) => {
256
+ setDraggedColumnId(colId);
257
+ e.dataTransfer.effectAllowed = 'move';
258
+ e.dataTransfer.setData('text/plain', colId);
259
+ }, []);
260
+ const handleColumnDragOver = useCallback((e, colId) => {
261
+ e.preventDefault();
262
+ e.dataTransfer.dropEffect = 'move';
263
+ if (colId !== draggedColumnId) {
264
+ setDragOverColumnId(colId);
265
+ }
266
+ }, [draggedColumnId]);
267
+ const handleColumnDragLeave = useCallback(() => {
268
+ setDragOverColumnId(null);
269
+ }, []);
270
+ const handleColumnDrop = useCallback((e, targetColId) => {
271
+ e.preventDefault();
272
+ if (draggedColumnId && draggedColumnId !== targetColId) {
273
+ // Find indices in columnState
274
+ const fromIndex = columnState.findIndex((s) => s.colId === draggedColumnId);
275
+ const toIndex = columnState.findIndex((s) => s.colId === targetColId);
276
+ if (fromIndex !== -1 && toIndex !== -1) {
277
+ moveColumn(draggedColumnId, toIndex);
278
+ }
279
+ }
280
+ setDraggedColumnId(null);
281
+ setDragOverColumnId(null);
282
+ }, [draggedColumnId, columnState, moveColumn]);
283
+ const handleColumnDragEnd = useCallback(() => {
284
+ setDraggedColumnId(null);
285
+ setDragOverColumnId(null);
286
+ }, []);
287
+ // Extract unique values for a field
288
+ const getUniqueValuesForField = useCallback((field) => {
289
+ const values = new Set();
290
+ rowData.forEach((row) => {
291
+ const value = getNestedValue(row, field);
292
+ if (value != null) {
293
+ values.add(String(value));
294
+ }
295
+ });
296
+ return Array.from(values).sort();
297
+ }, [rowData]);
298
+ // Toggle filter panel expansion
299
+ const toggleFilterPanel = useCallback((field) => {
300
+ setExpandedFilterPanels((prev) => {
301
+ const next = new Set(prev);
302
+ if (next.has(field)) {
303
+ next.delete(field);
304
+ }
305
+ else {
306
+ next.add(field);
307
+ }
308
+ return next;
309
+ });
310
+ }, []);
311
+ // Toggle value in set filter
312
+ const toggleSetFilterValue = useCallback((field, value) => {
313
+ setSetFilterStates((prev) => {
314
+ const currentValues = prev[field] || new Set(getUniqueValuesForField(field));
315
+ const next = new Set(currentValues);
316
+ if (next.has(value)) {
317
+ next.delete(value);
318
+ }
319
+ else {
320
+ next.add(value);
321
+ }
322
+ return { ...prev, [field]: next };
323
+ });
324
+ }, [getUniqueValuesForField]);
325
+ // Select/deselect all in set filter
326
+ const toggleSetFilterSelectAll = useCallback((field) => {
327
+ setSetFilterStates((prev) => {
328
+ const allValues = getUniqueValuesForField(field);
329
+ const currentValues = prev[field];
330
+ const isAllSelected = !currentValues || currentValues.size === allValues.length;
331
+ if (isAllSelected) {
332
+ return { ...prev, [field]: new Set() };
333
+ }
334
+ else {
335
+ return { ...prev, [field]: new Set(allValues) };
336
+ }
337
+ });
338
+ }, [getUniqueValuesForField]);
339
+ // Check if set filter has active filter
340
+ const isSetFilterActive = useCallback((field) => {
341
+ const state = setFilterStates[field];
342
+ if (!state)
343
+ return false;
344
+ const allValues = getUniqueValuesForField(field);
345
+ return state.size > 0 && state.size < allValues.length;
346
+ }, [setFilterStates, getUniqueValuesForField]);
347
+ // Check if any set filter is active
348
+ const hasActiveSetFilters = useMemo(() => {
349
+ return Object.entries(setFilterStates).some(([field, selectedValues]) => {
350
+ const allValues = getUniqueValuesForField(field);
351
+ return selectedValues.size > 0 && selectedValues.size < allValues.length;
352
+ });
353
+ }, [setFilterStates, getUniqueValuesForField]);
354
+ // Clear all set filters
355
+ const clearSetFilters = useCallback(() => {
356
+ setSetFilterStates({});
357
+ }, []);
358
+ // Clear all filters (including set filters)
359
+ const clearAllFilters = useCallback(() => {
360
+ clearFilters();
361
+ clearSetFilters();
362
+ }, [clearFilters, clearSetFilters]);
363
+ // ============================================================================
169
364
  // Refs
170
365
  // ============================================================================
171
366
  const containerRef = useRef(null);
@@ -510,7 +705,28 @@ function AgGridInner(props, ref) {
510
705
  const { sort: sortDir } = getSortForColumn(colId);
511
706
  const state = columnState.find((s) => s.colId === colId);
512
707
  const width = state?.width || col.width;
513
- return (_jsxs(HeaderCell, { "$theme": gridTheme, "$align": col.headerAlign || col.align, "$sortable": col.sortable !== false && sortable, "$sorted": !!sortDir, "$resizable": col.resizable !== false, "$pinned": col.pinned, "$width": width, "$minWidth": col.minWidth, "$maxWidth": col.maxWidth, onClick: (e) => handleHeaderClick(col, e), children: [_jsxs(HeaderCellContent, { children: [_jsx(HeaderText, { children: col.headerName || col.field }), col.sortable !== false && sortable && (_jsx(SortIndicator, { "$direction": sortDir, "$active": !!sortDir, children: sortDir === 'desc' ? _jsx(SortDescIcon, {}) : _jsx(SortAscIcon, {}) })), col.filter && (_jsx(FilterIndicator, { "$active": isFilterActive(col.field || ''), "$theme": gridTheme, children: _jsx(FilterIcon, {}) }))] }), col.resizable !== false && (_jsx(ResizeHandle, { "$theme": gridTheme, "$resizing": resizing?.colId === colId, onMouseDown: (e) => handleResizeStart(e, colId, width || 100) }))] }, colId));
708
+ return (_jsxs(HeaderCell, { "$theme": gridTheme, "$align": col.headerAlign || col.align, "$sortable": col.sortable !== false && sortable, "$sorted": !!sortDir, "$resizable": col.resizable !== false, "$pinned": col.pinned, "$width": width, "$minWidth": col.minWidth, "$maxWidth": col.maxWidth, onClick: (e) => handleHeaderClick(col, e), onMouseEnter: (e) => {
709
+ const target = e.currentTarget.querySelector('[data-menu-button]');
710
+ if (target)
711
+ target.style.opacity = '1';
712
+ }, onMouseLeave: (e) => {
713
+ const target = e.currentTarget.querySelector('[data-menu-button]');
714
+ if (target && columnMenuState.colId !== colId)
715
+ target.style.opacity = '0';
716
+ }, children: [_jsxs(HeaderCellContent, { children: [_jsx(HeaderText, { children: col.headerName || col.field }), col.sortable !== false && sortable && (_jsx(SortIndicator, { "$direction": sortDir, "$active": !!sortDir, children: sortDir === 'desc' ? _jsx(SortDescIcon, {}) : _jsx(SortAscIcon, {}) })), col.filter && (_jsx(FilterIndicator, { "$active": isFilterActive(col.field || '') || isSetFilterActive(col.field || ''), "$theme": gridTheme, onClick: (e) => {
717
+ e.stopPropagation();
718
+ const rect = e.target.getBoundingClientRect();
719
+ showFilterDropdown(colId, rect.left, rect.bottom + 4);
720
+ }, children: _jsx(FilterIcon, {}) })), !col.suppressMenu && (_jsx(HeaderMenuButton, { "data-menu-button": true, "$theme": gridTheme, "$active": columnMenuState.visible && columnMenuState.colId === colId, onClick: (e) => {
721
+ e.stopPropagation();
722
+ const rect = e.target.getBoundingClientRect();
723
+ if (columnMenuState.visible && columnMenuState.colId === colId) {
724
+ hideColumnMenu();
725
+ }
726
+ else {
727
+ showColumnMenu(colId, rect.left, rect.bottom + 4);
728
+ }
729
+ }, children: _jsx(MenuIcon, {}) }))] }), col.resizable !== false && (_jsx(ResizeHandle, { "$theme": gridTheme, "$resizing": resizing?.colId === colId, onMouseDown: (e) => handleResizeStart(e, colId, width || 100) }))] }, colId));
514
730
  })] }));
515
731
  // ============================================================================
516
732
  // Render Floating Filters
@@ -712,8 +928,116 @@ function AgGridInner(props, ref) {
712
928
  }) }));
713
929
  };
714
930
  // ============================================================================
931
+ // Render Column Menu Popup
932
+ // ============================================================================
933
+ const renderColumnMenuPopup = () => {
934
+ if (!columnMenuState.visible || !columnMenuState.colId)
935
+ return null;
936
+ const col = flatColumns.find((c) => c.colId === columnMenuState.colId);
937
+ if (!col)
938
+ return null;
939
+ const colId = columnMenuState.colId;
940
+ const { sort: sortDir } = getSortForColumn(colId);
941
+ return (_jsxs(ColumnMenuPopup, { "$theme": gridTheme, "$x": columnMenuState.x, "$y": columnMenuState.y, onClick: (e) => e.stopPropagation(), children: [_jsxs(ColumnMenuSection, { "$theme": gridTheme, children: [_jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
942
+ handleSort(colId, false);
943
+ if (sortDir !== 'asc') {
944
+ // Force asc
945
+ }
946
+ hideColumnMenu();
947
+ }, children: [_jsx(SortAscIcon, {}), _jsx("span", { children: "Sort Ascending" })] }), _jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
948
+ handleSort(colId, false);
949
+ hideColumnMenu();
950
+ }, children: [_jsx(SortDescIcon, {}), _jsx("span", { children: "Sort Descending" })] })] }), _jsxs(ColumnMenuSection, { "$theme": gridTheme, children: [_jsxs(ColumnMenuItem, { "$theme": gridTheme, "$hasSubmenu": true, onClick: () => { }, children: [_jsx(PinIcon, {}), _jsx("span", { children: "Pin Column" })] }), _jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
951
+ setColumnPinned(colId, 'left');
952
+ hideColumnMenu();
953
+ }, style: { paddingLeft: 36 }, children: [_jsx(PinLeftIcon, {}), _jsx("span", { children: "Pin Left" })] }), _jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
954
+ setColumnPinned(colId, 'right');
955
+ hideColumnMenu();
956
+ }, style: { paddingLeft: 36 }, children: [_jsx(PinRightIcon, {}), _jsx("span", { children: "Pin Right" })] }), _jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
957
+ setColumnPinned(colId, null);
958
+ hideColumnMenu();
959
+ }, style: { paddingLeft: 36 }, children: [_jsx(NoPinIcon, {}), _jsx("span", { children: "No Pin" })] })] }), _jsxs(ColumnMenuSection, { "$theme": gridTheme, children: [_jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
960
+ // Autosize this column (simplified)
961
+ hideColumnMenu();
962
+ }, children: [_jsx(AutosizeIcon, {}), _jsx("span", { children: "Autosize This Column" })] }), _jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
963
+ // Autosize all columns (simplified)
964
+ hideColumnMenu();
965
+ }, children: [_jsx(AutosizeIcon, {}), _jsx("span", { children: "Autosize All Columns" })] })] }), col.field && col.enableRowGroup !== false && (_jsx(ColumnMenuSection, { "$theme": gridTheme, children: _jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
966
+ addRowGroupColumn(col.field);
967
+ hideColumnMenu();
968
+ }, children: [_jsx(GroupIcon, {}), _jsxs("span", { children: ["Group by ", col.headerName || col.field] })] }) })), _jsxs(ColumnMenuSection, { "$theme": gridTheme, children: [_jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
969
+ setSidePanelOpen(true);
970
+ switchSidePanelTab('columns');
971
+ hideColumnMenu();
972
+ }, children: [_jsx(ColumnsIcon, {}), _jsx("span", { children: "Choose Columns" })] }), _jsxs(ColumnMenuItem, { "$theme": gridTheme, onClick: () => {
973
+ resetColumnState();
974
+ hideColumnMenu();
975
+ }, children: [_jsx(ResetIcon, {}), _jsx("span", { children: "Reset Columns" })] })] })] }));
976
+ };
977
+ // ============================================================================
978
+ // Render Set Filter Dropdown
979
+ // ============================================================================
980
+ const renderSetFilterDropdown = () => {
981
+ if (!filterDropdownState.visible || !filterDropdownState.colId)
982
+ return null;
983
+ const col = flatColumns.find((c) => c.colId === filterDropdownState.colId);
984
+ if (!col || !col.field)
985
+ return null;
986
+ const field = col.field;
987
+ const uniqueValues = getUniqueValuesForField(field);
988
+ const selectedValues = setFilterStates[field] || new Set(uniqueValues);
989
+ const isAllSelected = selectedValues.size === uniqueValues.length;
990
+ return (_jsxs(SetFilterContainer, { "$theme": gridTheme, style: {
991
+ position: 'fixed',
992
+ top: filterDropdownState.y,
993
+ left: filterDropdownState.x,
994
+ zIndex: 1000,
995
+ }, onClick: (e) => e.stopPropagation(), children: [_jsx(SetFilterHeader, { "$theme": gridTheme, children: "Text Filter" }), _jsx(SetFilterSearch, { "$theme": gridTheme, children: _jsx("input", { type: "text", placeholder: "Search...", autoFocus: true }) }), _jsxs(SetFilterList, { "$theme": gridTheme, children: [_jsxs(SetFilterItem, { "$theme": gridTheme, "$selectAll": true, children: [_jsx("input", { type: "checkbox", checked: isAllSelected, onChange: () => toggleSetFilterSelectAll(field) }), "(Select All)"] }), uniqueValues.map((value) => (_jsxs(SetFilterItem, { "$theme": gridTheme, children: [_jsx("input", { type: "checkbox", checked: selectedValues.has(value), onChange: () => toggleSetFilterValue(field, value) }), value] }, value)))] }), _jsxs(SetFilterActions, { "$theme": gridTheme, children: [_jsx(SetFilterButton, { "$theme": gridTheme, onClick: () => {
996
+ toggleSetFilterSelectAll(field);
997
+ }, children: "Reset" }), _jsx(SetFilterButton, { "$theme": gridTheme, "$primary": true, onClick: () => {
998
+ hideFilterDropdown();
999
+ }, children: "Apply" })] })] }));
1000
+ };
1001
+ // ============================================================================
1002
+ // Render Side Panel
1003
+ // ============================================================================
1004
+ const renderSidePanel = () => {
1005
+ if (props.sideBar === false)
1006
+ return null;
1007
+ return (_jsxs(SidePanel, { "$theme": gridTheme, "$open": isSidePanelOpen, children: [_jsx(SidePanelTabs, { "$theme": gridTheme, "$collapsed": !isSidePanelOpen, children: isSidePanelOpen ? (_jsxs(_Fragment, { children: [_jsxs(SidePanelTab, { "$theme": gridTheme, "$active": sidePanelTab === 'columns', onClick: () => switchSidePanelTab('columns'), children: [_jsx(ColumnsIcon, {}), "Columns"] }), _jsxs(SidePanelTab, { "$theme": gridTheme, "$active": sidePanelTab === 'filters', onClick: () => switchSidePanelTab('filters'), children: [_jsx(FilterIcon, {}), "Filters"] })] })) : (_jsxs(_Fragment, { children: [_jsx(SidePanelTab, { "$theme": gridTheme, "$collapsed": true, "$active": sidePanelTab === 'columns', onClick: () => { setSidePanelOpen(true); switchSidePanelTab('columns'); }, title: "Columns", children: _jsx(ColumnsIcon, {}) }), _jsx(SidePanelTab, { "$theme": gridTheme, "$collapsed": true, "$active": sidePanelTab === 'filters', onClick: () => { setSidePanelOpen(true); switchSidePanelTab('filters'); }, title: "Filters", children: _jsx(FilterIcon, {}) })] })) }), isSidePanelOpen && (_jsxs(SidePanelContent, { "$theme": gridTheme, children: [sidePanelTab === 'columns' && (_jsxs(_Fragment, { children: [_jsxs(PivotModeToggle, { "$theme": gridTheme, children: [_jsx(PivotModeLabel, { "$theme": gridTheme, children: "Pivot Mode" }), _jsxs(ToggleSwitch, { "$theme": gridTheme, children: [_jsx("input", { type: "checkbox", checked: isPivotMode, onChange: togglePivotMode }), _jsx("span", {})] })] }), _jsx(SidePanelSearch, { "$theme": gridTheme, children: _jsx("input", { type: "text", placeholder: "Search..." }) }), _jsxs(SidePanelSection, { "$theme": gridTheme, children: [_jsxs(SidePanelSectionHeader, { "$theme": gridTheme, children: [_jsx(ColumnsIcon, {}), "Columns"] }), processedColumns.map((col) => {
1008
+ const colId = col.colId;
1009
+ const isVisible = !col.hide;
1010
+ const isDragging = draggedColumnId === colId;
1011
+ const isDragOver = dragOverColumnId === colId;
1012
+ return (_jsxs(SidePanelColumnItem, { "$theme": gridTheme, "$dragging": isDragging, "$selected": isDragOver, draggable: true, onDragStart: (e) => handleColumnDragStart(e, colId), onDragOver: (e) => handleColumnDragOver(e, colId), onDragLeave: handleColumnDragLeave, onDrop: (e) => handleColumnDrop(e, colId), onDragEnd: handleColumnDragEnd, children: [_jsx(SidePanelDragHandle, { "$theme": gridTheme, children: _jsx(GripIcon, {}) }), _jsx(Checkbox, { type: "checkbox", "$theme": gridTheme, checked: isVisible, onChange: (e) => {
1013
+ // Toggle visibility: if checked, show (visible=true); if unchecked, hide (visible=false)
1014
+ setColumnVisible(colId, e.target.checked);
1015
+ } }), _jsx(SidePanelGroupLabel, { children: col.headerName || col.field })] }, colId));
1016
+ })] }), _jsxs(SidePanelSection, { "$theme": gridTheme, children: [_jsxs(SidePanelSectionHeader, { "$theme": gridTheme, children: [_jsx(GroupIcon, {}), "Row Groups"] }), _jsx(RowGroupsZone, { "$theme": gridTheme, "$hasItems": rowGroupColumns.length > 0, children: rowGroupColumns.length === 0 ? (_jsxs(RowGroupsLabel, { "$theme": gridTheme, children: [_jsx(GroupIcon, {}), "Drag here to set row groups"] })) : (groupedColumnsInfo.map(({ field, headerName }) => (_jsxs(RowGroupChip, { "$theme": gridTheme, children: [headerName, _jsx("button", { onClick: () => removeRowGroupColumn(field), children: _jsx(CloseIcon, {}) })] }, field)))) })] }), _jsxs(SidePanelSection, { "$theme": gridTheme, children: [_jsxs(SidePanelSectionHeader, { "$theme": gridTheme, children: [_jsx(SigmaIcon, {}), "Values"] }), _jsx(ValuesPanel, { "$theme": gridTheme, children: valueColumns.length === 0 ? (_jsx(RowGroupsZone, { "$theme": gridTheme, "$hasItems": false, children: _jsxs(RowGroupsLabel, { "$theme": gridTheme, children: [_jsx(SigmaIcon, {}), "Drag here to aggregate"] }) })) : (valueColumns.map(({ field, aggFunc, displayName }) => (_jsxs(ValueItem, { "$theme": gridTheme, children: [_jsxs(ValueItemLabel, { "$theme": gridTheme, children: [_jsx(SidePanelDragHandle, { "$theme": gridTheme, children: _jsx(GripIcon, {}) }), aggFunc, "(", displayName, ")"] }), _jsx(ValueItemRemove, { "$theme": gridTheme, onClick: () => removeValueColumn(field, aggFunc), children: _jsx(CloseIcon, {}) })] }, `${aggFunc}-${field}`)))) })] })] })), sidePanelTab === 'filters' && (_jsxs(_Fragment, { children: [_jsx(SidePanelSearch, { "$theme": gridTheme, children: _jsx("input", { type: "text", placeholder: "Search..." }) }), flatColumns
1017
+ .filter((col) => col.filter && col.field)
1018
+ .map((col) => {
1019
+ const field = col.field;
1020
+ const isExpanded = expandedFilterPanels.has(field);
1021
+ const hasFilter = isFilterActive(field) || isSetFilterActive(field);
1022
+ const uniqueValues = getUniqueValuesForField(field);
1023
+ const selectedValues = setFilterStates[field] || new Set(uniqueValues);
1024
+ return (_jsxs(FilterPanelColumn, { "$theme": gridTheme, children: [_jsxs(FilterPanelHeader, { "$theme": gridTheme, "$expanded": isExpanded, "$hasFilter": hasFilter, onClick: () => toggleFilterPanel(field), children: [_jsx(ChevronRightIcon, {}), col.headerName || col.field, hasFilter && _jsx(FilterIcon, {})] }), isExpanded && (_jsx(FilterPanelContent, { "$theme": gridTheme, "$expanded": isExpanded, children: _jsxs(SetFilterList, { "$theme": gridTheme, style: { maxHeight: 200, marginBottom: 8 }, children: [_jsxs(SetFilterItem, { "$theme": gridTheme, "$selectAll": true, children: [_jsx("input", { type: "checkbox", checked: selectedValues.size === uniqueValues.length, onChange: () => toggleSetFilterSelectAll(field) }), "(Select All)"] }), uniqueValues.slice(0, 20).map((value) => (_jsxs(SetFilterItem, { "$theme": gridTheme, children: [_jsx("input", { type: "checkbox", checked: selectedValues.has(value), onChange: () => toggleSetFilterValue(field, value) }), value] }, value))), uniqueValues.length > 20 && (_jsx(SetFilterItem, { "$theme": gridTheme, children: _jsxs("span", { style: { opacity: 0.6, fontSize: 12 }, children: ["...and ", uniqueValues.length - 20, " more"] }) }))] }) }))] }, col.colId));
1025
+ })] }))] }))] }));
1026
+ };
1027
+ // ============================================================================
715
1028
  // Main Render
716
1029
  // ============================================================================
1030
+ // Close menus on outside click
1031
+ useEffect(() => {
1032
+ const handleClickOutside = () => {
1033
+ if (columnMenuState.visible)
1034
+ hideColumnMenu();
1035
+ if (filterDropdownState.visible)
1036
+ hideFilterDropdown();
1037
+ };
1038
+ document.addEventListener('click', handleClickOutside);
1039
+ return () => document.removeEventListener('click', handleClickOutside);
1040
+ }, [columnMenuState.visible, filterDropdownState.visible, hideColumnMenu, hideFilterDropdown]);
717
1041
  return (_jsxs(GridRoot, { ref: containerRef, "$theme": gridTheme, "$responsive": responsive, style: containerStyle, className: containerClassName, onKeyDown: handleKeyDown, tabIndex: 0, dir: enableRtl ? 'rtl' : 'ltr', children: [_jsxs(GridToolbar, { "$theme": gridTheme, children: [_jsxs(ToolbarGroup, { children: [_jsxs(QuickFilter, { "$theme": gridTheme, children: [_jsx(SearchIcon, {}), _jsx("input", { type: "text", placeholder: "Search...", value: quickFilterText, onChange: (e) => {
718
1042
  setQuickFilterText(e.target.value);
719
1043
  onFilterChanged?.({
@@ -722,9 +1046,9 @@ function AgGridInner(props, ref) {
722
1046
  columnApi,
723
1047
  context,
724
1048
  });
725
- } })] }), hasActiveFilters && (_jsxs(ToolbarButton, { "$theme": gridTheme, onClick: clearFilters, children: [_jsx(CloseIcon, {}), "Clear Filters"] }))] }), _jsxs(ToolbarGroup, { children: [!suppressCsvExport && (_jsxs(ToolbarButton, { "$theme": gridTheme, onClick: () => exportToCsv(processedData, visibleColumns, 'export.csv'), children: [_jsx(DownloadIcon, {}), "Export"] })), _jsxs(ToolbarButton, { "$theme": gridTheme, onClick: resetColumnState, children: [_jsx(RefreshIcon, {}), "Reset"] })] })] }), selectedRows.length > 0 && (_jsxs(SelectionBar, { "$theme": gridTheme, "$visible": selectedRows.length > 0, children: [_jsxs("span", { children: [selectedRows.length, " row", selectedRows.length !== 1 ? 's' : '', " selected"] }), _jsx(SelectionActions, { children: _jsxs(ToolbarButton, { "$theme": gridTheme, style: { background: 'transparent', border: 'none', color: 'white' }, onClick: deselectAll, children: [_jsx(CloseIcon, {}), "Clear"] }) })] })), _jsx(GridWrapper, { children: _jsxs(TableContainer, { "$stickyHeader": true, "$maxHeight": domLayout === 'autoHeight' ? undefined : 'calc(100% - 100px)', children: [responsive && isMobile ? (displayData.length === 0 ? renderEmptyState() : renderMobileCards()) : (
726
- /* Desktop Table View */
727
- _jsxs(_Fragment, { children: [displayData.length === 0 && !isLoading && renderEmptyState(), displayData.length > 0 && (_jsxs(StyledTable, { ref: tableRef, "$theme": gridTheme, "$fixedLayout": true, children: [_jsxs(TableHead, { "$theme": gridTheme, "$sticky": true, children: [renderColumnGroups(), renderHeader(), renderFloatingFilters()] }), _jsx(TableBody, { "$theme": gridTheme, children: displayData.map((row, i) => renderRow(row, startRow + i)) })] }))] })), isLoading && renderLoadingState()] }) }), renderPagination(), statusBar && (_jsxs(StatusBar, { "$theme": gridTheme, children: [_jsxs(StatusItem, { children: [_jsx("strong", { children: "Total:" }), " ", processedData.length, " rows"] }), _jsxs(StatusItem, { children: [_jsx("strong", { children: "Selected:" }), " ", selectedRows.length] })] })), renderContextMenu()] }));
1049
+ } })] }), (hasActiveFilters || hasActiveSetFilters) && (_jsxs(ToolbarButton, { "$theme": gridTheme, onClick: clearAllFilters, children: [_jsx(CloseIcon, {}), "Clear Filters"] }))] }), _jsxs(ToolbarGroup, { children: [!suppressCsvExport && (_jsxs(ToolbarButton, { "$theme": gridTheme, onClick: () => exportToCsv(processedData, visibleColumns, 'export.csv'), children: [_jsx(DownloadIcon, {}), "Export"] })), _jsxs(ToolbarButton, { "$theme": gridTheme, onClick: resetColumnState, children: [_jsx(RefreshIcon, {}), "Reset"] }), props.sideBar !== false && (_jsx(ToolbarButton, { "$theme": gridTheme, "$active": isSidePanelOpen, onClick: toggleSidePanel, children: _jsx(PanelRightIcon, {}) }))] })] }), props.rowGroupPanelShow !== 'never' && rowGroupColumns.length > 0 && (_jsxs(RowGroupsZone, { "$theme": gridTheme, "$hasItems": true, children: [_jsx(RowGroupsLabel, { "$theme": gridTheme, children: _jsx(GroupIcon, {}) }), groupedColumnsInfo.map(({ field, headerName }) => (_jsxs(RowGroupChip, { "$theme": gridTheme, children: [headerName, _jsx("button", { onClick: () => removeRowGroupColumn(field), children: _jsx(CloseIcon, {}) })] }, field)))] })), selectedRows.length > 0 && (_jsxs(SelectionBar, { "$theme": gridTheme, "$visible": selectedRows.length > 0, children: [_jsxs("span", { children: [selectedRows.length, " row", selectedRows.length !== 1 ? 's' : '', " selected"] }), _jsx(SelectionActions, { children: _jsxs(ToolbarButton, { "$theme": gridTheme, style: { background: 'transparent', border: 'none', color: 'white' }, onClick: deselectAll, children: [_jsx(CloseIcon, {}), "Clear"] }) })] })), _jsxs(GridLayout, { children: [_jsxs(GridMainArea, { children: [_jsx(GridWrapper, { children: _jsxs(TableContainer, { "$stickyHeader": true, "$maxHeight": domLayout === 'autoHeight' ? undefined : 'calc(100% - 100px)', children: [responsive && isMobile ? (displayData.length === 0 ? renderEmptyState() : renderMobileCards()) : (
1050
+ /* Desktop Table View */
1051
+ _jsxs(_Fragment, { children: [displayData.length === 0 && !isLoading && renderEmptyState(), displayData.length > 0 && (_jsxs(StyledTable, { ref: tableRef, "$theme": gridTheme, "$fixedLayout": true, children: [_jsxs(TableHead, { "$theme": gridTheme, "$sticky": true, children: [renderColumnGroups(), renderHeader(), renderFloatingFilters()] }), _jsx(TableBody, { "$theme": gridTheme, children: displayData.map((row, i) => renderRow(row, startRow + i)) })] }))] })), isLoading && renderLoadingState()] }) }), renderPagination(), statusBar && (_jsxs(StatusBar, { "$theme": gridTheme, children: [_jsxs(StatusItem, { children: [_jsx("strong", { children: "Rows:" }), " ", processedData.length] }), _jsxs(StatusItem, { children: [_jsx("strong", { children: "Selected:" }), " ", selectedRows.length] })] }))] }), renderSidePanel()] }), renderContextMenu(), renderColumnMenuPopup(), renderSetFilterDropdown()] }));
728
1052
  }
729
1053
  // ============================================================================
730
1054
  // Exported Component with ForwardRef
@@ -104,6 +104,7 @@ export declare const TableCell: import("styled-components/dist/types").IStyledCo
104
104
  }>> & string;
105
105
  export declare const CellContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
106
106
  $wrapText?: boolean | undefined;
107
+ $theme?: AgGridTheme | undefined;
107
108
  }>> & string;
108
109
  export declare const Checkbox: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {
109
110
  $theme: AgGridTheme;
@@ -243,4 +244,139 @@ export declare const SelectionBar: import("styled-components/dist/types").IStyle
243
244
  $visible: boolean;
244
245
  }>> & string;
245
246
  export declare const SelectionActions: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
247
+ export declare const SidePanel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
248
+ $theme: AgGridTheme;
249
+ $open: boolean;
250
+ $width?: number | undefined;
251
+ }>> & string;
252
+ export declare const SidePanelTabs: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
253
+ $theme: AgGridTheme;
254
+ $collapsed?: boolean | undefined;
255
+ }>> & string;
256
+ export declare const SidePanelTab: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
257
+ $theme: AgGridTheme;
258
+ $active?: boolean | undefined;
259
+ $collapsed?: boolean | undefined;
260
+ }>> & string;
261
+ export declare const SidePanelContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
262
+ $theme: AgGridTheme;
263
+ }>> & string;
264
+ export declare const SidePanelSearch: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
265
+ $theme: AgGridTheme;
266
+ }>> & string;
267
+ export declare const SidePanelSection: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
268
+ $theme: AgGridTheme;
269
+ }>> & string;
270
+ export declare const SidePanelSectionHeader: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
271
+ $theme: AgGridTheme;
272
+ $collapsible?: boolean | undefined;
273
+ }>> & string;
274
+ export declare const SidePanelColumnItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
275
+ $theme: AgGridTheme;
276
+ $indent?: number | undefined;
277
+ $dragging?: boolean | undefined;
278
+ $selected?: boolean | undefined;
279
+ }>> & string;
280
+ export declare const SidePanelDragHandle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {
281
+ $theme: AgGridTheme;
282
+ }>> & string;
283
+ export declare const SidePanelGroupLabel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
284
+ export declare const RowGroupsZone: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
285
+ $theme: AgGridTheme;
286
+ $dragOver?: boolean | undefined;
287
+ $hasItems?: boolean | undefined;
288
+ }>> & string;
289
+ export declare const RowGroupsLabel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {
290
+ $theme: AgGridTheme;
291
+ }>> & string;
292
+ export declare const RowGroupChip: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
293
+ $theme: AgGridTheme;
294
+ }>> & string;
295
+ export declare const ValuesPanel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
296
+ $theme: AgGridTheme;
297
+ }>> & string;
298
+ export declare const ValueItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
299
+ $theme: AgGridTheme;
300
+ }>> & string;
301
+ export declare const ValueItemLabel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {
302
+ $theme: AgGridTheme;
303
+ }>> & string;
304
+ export declare const ValueItemRemove: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
305
+ $theme: AgGridTheme;
306
+ }>> & string;
307
+ export declare const PivotModeToggle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
308
+ $theme: AgGridTheme;
309
+ }>> & string;
310
+ export declare const PivotModeLabel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {
311
+ $theme: AgGridTheme;
312
+ }>> & string;
313
+ export declare const ToggleSwitch: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, {
314
+ $theme: AgGridTheme;
315
+ }>> & string;
316
+ export declare const HeaderMenuButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
317
+ $theme: AgGridTheme;
318
+ $active?: boolean | undefined;
319
+ }>> & string;
320
+ export declare const ColumnMenuPopup: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
321
+ $theme: AgGridTheme;
322
+ $x: number;
323
+ $y: number;
324
+ }>> & string;
325
+ export declare const ColumnMenuSection: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
326
+ $theme: AgGridTheme;
327
+ }>> & string;
328
+ export declare const ColumnMenuItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
329
+ $theme: AgGridTheme;
330
+ $disabled?: boolean | undefined;
331
+ $hasSubmenu?: boolean | undefined;
332
+ }>> & string;
333
+ export declare const ColumnMenuSubmenu: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
334
+ $theme: AgGridTheme;
335
+ }>> & string;
336
+ export declare const SetFilterContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
337
+ $theme: AgGridTheme;
338
+ }>> & string;
339
+ export declare const SetFilterHeader: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
340
+ $theme: AgGridTheme;
341
+ }>> & string;
342
+ export declare const SetFilterSearch: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
343
+ $theme: AgGridTheme;
344
+ }>> & string;
345
+ export declare const SetFilterList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
346
+ $theme: AgGridTheme;
347
+ }>> & string;
348
+ export declare const SetFilterItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, {
349
+ $theme: AgGridTheme;
350
+ $selectAll?: boolean | undefined;
351
+ }>> & string;
352
+ export declare const SetFilterActions: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
353
+ $theme: AgGridTheme;
354
+ }>> & string;
355
+ export declare const SetFilterButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
356
+ $theme: AgGridTheme;
357
+ $primary?: boolean | undefined;
358
+ }>> & string;
359
+ export declare const FilterPanelColumn: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
360
+ $theme: AgGridTheme;
361
+ }>> & string;
362
+ export declare const FilterPanelHeader: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
363
+ $theme: AgGridTheme;
364
+ $expanded?: boolean | undefined;
365
+ $hasFilter?: boolean | undefined;
366
+ }>> & string;
367
+ export declare const FilterPanelContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
368
+ $theme: AgGridTheme;
369
+ $expanded?: boolean | undefined;
370
+ }>> & string;
371
+ export declare const GridLayout: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
372
+ export declare const GridMainArea: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
373
+ export declare const ColumnVisibilityDropdown: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
374
+ $theme: AgGridTheme;
375
+ }>> & string;
376
+ export declare const ColumnVisibilityList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
377
+ $theme: AgGridTheme;
378
+ }>> & string;
379
+ export declare const ColumnVisibilityItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, {
380
+ $theme: AgGridTheme;
381
+ }>> & string;
246
382
  export { themes };