@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 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
- " active"
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-20", children: [
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: clearAllFilters,
4274
+ onClearFilters: clearAllFiltersWithReset,
4251
4275
  filters,
4252
4276
  columns,
4253
- onClearFilter: (columnId) => handleFilterChange(columnId, void 0),
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) => handleFilterChange(column.id, filter),
4419
+ onFilterChange: (filter) => handleFilterChangeWithReset(
4420
+ column.id,
4421
+ filter
4422
+ ),
4396
4423
  onClose: () => setActiveFilterColumn(null)
4397
4424
  }
4398
4425
  )