@xcelsior/ui-spreadsheets 1.1.15 → 1.1.17
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.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +32 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +32 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/Spreadsheet.tsx +39 -3
- package/src/components/SpreadsheetToolbar.tsx +212 -209
- package/src/types.ts +2 -0
package/dist/index.d.mts
CHANGED
|
@@ -293,6 +293,8 @@ interface SpreadsheetProps<T = any> {
|
|
|
293
293
|
onSortChange?: (sortConfig: SpreadsheetSortConfig | null) => void;
|
|
294
294
|
/** Callback when filters change */
|
|
295
295
|
onFilterChange?: (filters: Record<string, SpreadsheetColumnFilter>) => void;
|
|
296
|
+
/** Callback with filtered data after filters are applied */
|
|
297
|
+
afterFiltered?: (filteredData: T[]) => void;
|
|
296
298
|
/** Callback for row click */
|
|
297
299
|
onRowClick?: (row: T, rowIndex: number) => void;
|
|
298
300
|
/** Callback for row double click */
|
|
@@ -671,7 +673,7 @@ interface SpreadsheetColumnGroupHeaderProps {
|
|
|
671
673
|
* />
|
|
672
674
|
* ```
|
|
673
675
|
*/
|
|
674
|
-
declare function Spreadsheet<T extends Record<string, any>>({ data, columns, columnGroups, getRowId, onCellsEdit, onSelectionChange, onSortChange, onFilterChange, onRowClick, onRowDoubleClick, onAddCellComment, onToggleCommentResolved, onRowHighlight, onColumnHighlight, onCellHighlight, showToolbar, showPagination, enableRowSelection, enableCellEditing, enableComments, enableHighlighting, enableUndoRedo, pageSizeOptions, onSave, settings: initialSettings, onSettingsChange, isLoading, className, emptyMessage, rowHighlights: externalRowHighlights, columnHighlights: externalColumnHighlights, cellHighlights: externalCellHighlights, cellComments: externalCellComments, rowActions, rowContextMenuItems, toolbarMenuItems, serverSide, totalItems, currentPage: controlledCurrentPage, pageSize: controlledPageSize, sortConfig: controlledSortConfig, onPageChange, filters: controlledFilters, }: SpreadsheetProps<T>): react_jsx_runtime.JSX.Element;
|
|
676
|
+
declare function Spreadsheet<T extends Record<string, any>>({ data, columns, columnGroups, getRowId, onCellsEdit, onSelectionChange, onSortChange, onFilterChange, afterFiltered, onRowClick, onRowDoubleClick, onAddCellComment, onToggleCommentResolved, onRowHighlight, onColumnHighlight, onCellHighlight, showToolbar, showPagination, enableRowSelection, enableCellEditing, enableComments, enableHighlighting, enableUndoRedo, pageSizeOptions, onSave, settings: initialSettings, onSettingsChange, isLoading, className, emptyMessage, rowHighlights: externalRowHighlights, columnHighlights: externalColumnHighlights, cellHighlights: externalCellHighlights, cellComments: externalCellComments, rowActions, rowContextMenuItems, toolbarMenuItems, serverSide, totalItems, currentPage: controlledCurrentPage, pageSize: controlledPageSize, sortConfig: controlledSortConfig, onPageChange, filters: controlledFilters, }: SpreadsheetProps<T>): react_jsx_runtime.JSX.Element;
|
|
675
677
|
declare namespace Spreadsheet {
|
|
676
678
|
var displayName: string;
|
|
677
679
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -293,6 +293,8 @@ interface SpreadsheetProps<T = any> {
|
|
|
293
293
|
onSortChange?: (sortConfig: SpreadsheetSortConfig | null) => void;
|
|
294
294
|
/** Callback when filters change */
|
|
295
295
|
onFilterChange?: (filters: Record<string, SpreadsheetColumnFilter>) => void;
|
|
296
|
+
/** Callback with filtered data after filters are applied */
|
|
297
|
+
afterFiltered?: (filteredData: T[]) => void;
|
|
296
298
|
/** Callback for row click */
|
|
297
299
|
onRowClick?: (row: T, rowIndex: number) => void;
|
|
298
300
|
/** Callback for row double click */
|
|
@@ -671,7 +673,7 @@ interface SpreadsheetColumnGroupHeaderProps {
|
|
|
671
673
|
* />
|
|
672
674
|
* ```
|
|
673
675
|
*/
|
|
674
|
-
declare function Spreadsheet<T extends Record<string, any>>({ data, columns, columnGroups, getRowId, onCellsEdit, onSelectionChange, onSortChange, onFilterChange, onRowClick, onRowDoubleClick, onAddCellComment, onToggleCommentResolved, onRowHighlight, onColumnHighlight, onCellHighlight, showToolbar, showPagination, enableRowSelection, enableCellEditing, enableComments, enableHighlighting, enableUndoRedo, pageSizeOptions, onSave, settings: initialSettings, onSettingsChange, isLoading, className, emptyMessage, rowHighlights: externalRowHighlights, columnHighlights: externalColumnHighlights, cellHighlights: externalCellHighlights, cellComments: externalCellComments, rowActions, rowContextMenuItems, toolbarMenuItems, serverSide, totalItems, currentPage: controlledCurrentPage, pageSize: controlledPageSize, sortConfig: controlledSortConfig, onPageChange, filters: controlledFilters, }: SpreadsheetProps<T>): react_jsx_runtime.JSX.Element;
|
|
676
|
+
declare function Spreadsheet<T extends Record<string, any>>({ data, columns, columnGroups, getRowId, onCellsEdit, onSelectionChange, onSortChange, onFilterChange, afterFiltered, onRowClick, onRowDoubleClick, onAddCellComment, onToggleCommentResolved, onRowHighlight, onColumnHighlight, onCellHighlight, showToolbar, showPagination, enableRowSelection, enableCellEditing, enableComments, enableHighlighting, enableUndoRedo, pageSizeOptions, onSave, settings: initialSettings, onSettingsChange, isLoading, className, emptyMessage, rowHighlights: externalRowHighlights, columnHighlights: externalColumnHighlights, cellHighlights: externalCellHighlights, cellComments: externalCellComments, rowActions, rowContextMenuItems, toolbarMenuItems, serverSide, totalItems, currentPage: controlledCurrentPage, pageSize: controlledPageSize, sortConfig: controlledSortConfig, onPageChange, filters: controlledFilters, }: SpreadsheetProps<T>): react_jsx_runtime.JSX.Element;
|
|
675
677
|
declare namespace Spreadsheet {
|
|
676
678
|
var displayName: string;
|
|
677
679
|
}
|
package/dist/index.js
CHANGED
|
@@ -1365,7 +1365,8 @@ var SpreadsheetToolbar = ({
|
|
|
1365
1365
|
activeFilterCount,
|
|
1366
1366
|
" filter",
|
|
1367
1367
|
activeFilterCount !== 1 ? "s" : "",
|
|
1368
|
-
"
|
|
1368
|
+
" ",
|
|
1369
|
+
"active"
|
|
1369
1370
|
] }),
|
|
1370
1371
|
showFiltersPanel ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(HiChevronUp, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(HiChevronDown, { className: "h-3 w-3" })
|
|
1371
1372
|
]
|
|
@@ -1429,7 +1430,7 @@ var SpreadsheetToolbar = ({
|
|
|
1429
1430
|
]
|
|
1430
1431
|
}
|
|
1431
1432
|
),
|
|
1432
|
-
showMoreMenu && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "absolute right-0 top-full mt-1 bg-white border border-gray-200 shadow-lg rounded py-1 min-w-[180px] z-
|
|
1433
|
+
showMoreMenu && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "absolute right-0 top-full mt-1 bg-white border border-gray-200 shadow-lg rounded py-1 min-w-[180px] z-50", children: [
|
|
1433
1434
|
onSettings && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1434
1435
|
"button",
|
|
1435
1436
|
{
|
|
@@ -3667,6 +3668,7 @@ function Spreadsheet({
|
|
|
3667
3668
|
onSelectionChange,
|
|
3668
3669
|
onSortChange,
|
|
3669
3670
|
onFilterChange,
|
|
3671
|
+
afterFiltered,
|
|
3670
3672
|
onRowClick,
|
|
3671
3673
|
onRowDoubleClick,
|
|
3672
3674
|
onAddCellComment,
|
|
@@ -3835,6 +3837,23 @@ function Spreadsheet({
|
|
|
3835
3837
|
},
|
|
3836
3838
|
[controlledPageSize, controlledCurrentPage, onPageChange]
|
|
3837
3839
|
);
|
|
3840
|
+
const resetPaginationToFirstPage = (0, import_react17.useCallback)(() => {
|
|
3841
|
+
if (controlledCurrentPage === void 0) {
|
|
3842
|
+
setInternalCurrentPage(1);
|
|
3843
|
+
}
|
|
3844
|
+
onPageChange?.(1, pageSize);
|
|
3845
|
+
}, [controlledCurrentPage, onPageChange, pageSize]);
|
|
3846
|
+
const handleFilterChangeWithReset = (0, import_react17.useCallback)(
|
|
3847
|
+
(columnId, filter) => {
|
|
3848
|
+
handleFilterChange(columnId, filter);
|
|
3849
|
+
resetPaginationToFirstPage();
|
|
3850
|
+
},
|
|
3851
|
+
[handleFilterChange, resetPaginationToFirstPage]
|
|
3852
|
+
);
|
|
3853
|
+
const clearAllFiltersWithReset = (0, import_react17.useCallback)(() => {
|
|
3854
|
+
clearAllFilters();
|
|
3855
|
+
resetPaginationToFirstPage();
|
|
3856
|
+
}, [clearAllFilters, resetPaginationToFirstPage]);
|
|
3838
3857
|
(0, import_react17.useEffect)(() => {
|
|
3839
3858
|
setSpreadsheetSettings((prev) => ({
|
|
3840
3859
|
...prev,
|
|
@@ -4029,6 +4048,11 @@ function Spreadsheet({
|
|
|
4029
4048
|
setInternalCurrentPage(1);
|
|
4030
4049
|
}
|
|
4031
4050
|
}, [totalPages, currentPage, serverSide]);
|
|
4051
|
+
const afterFilteredRef = (0, import_react17.useRef)(afterFiltered);
|
|
4052
|
+
afterFilteredRef.current = afterFiltered;
|
|
4053
|
+
(0, import_react17.useEffect)(() => {
|
|
4054
|
+
afterFilteredRef.current?.(filteredData.toArray());
|
|
4055
|
+
}, [filteredData]);
|
|
4032
4056
|
const handleRowSelect = (0, import_react17.useCallback)(
|
|
4033
4057
|
(rowId, event) => {
|
|
4034
4058
|
if (!enableRowSelection) return;
|
|
@@ -4247,10 +4271,10 @@ function Spreadsheet({
|
|
|
4247
4271
|
saveStatus,
|
|
4248
4272
|
autoSave: spreadsheetSettings.autoSave,
|
|
4249
4273
|
hasActiveFilters,
|
|
4250
|
-
onClearFilters:
|
|
4274
|
+
onClearFilters: clearAllFiltersWithReset,
|
|
4251
4275
|
filters,
|
|
4252
4276
|
columns,
|
|
4253
|
-
onClearFilter: (columnId) =>
|
|
4277
|
+
onClearFilter: (columnId) => handleFilterChangeWithReset(columnId, void 0),
|
|
4254
4278
|
showFiltersPanel,
|
|
4255
4279
|
onToggleFiltersPanel: () => setShowFiltersPanel(!showFiltersPanel),
|
|
4256
4280
|
onZoomIn: () => setZoom((z) => Math.min(z + 10, 200)),
|
|
@@ -4392,7 +4416,10 @@ function Spreadsheet({
|
|
|
4392
4416
|
{
|
|
4393
4417
|
column,
|
|
4394
4418
|
filter: filters[column.id],
|
|
4395
|
-
onFilterChange: (filter) =>
|
|
4419
|
+
onFilterChange: (filter) => handleFilterChangeWithReset(
|
|
4420
|
+
column.id,
|
|
4421
|
+
filter
|
|
4422
|
+
),
|
|
4396
4423
|
onClose: () => setActiveFilterColumn(null)
|
|
4397
4424
|
}
|
|
4398
4425
|
)
|