@stella-source/stellasource-dsl 5.2.0 → 5.3.0
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/README.md +13 -0
- package/dist/cjs/index.js +45 -16
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/Table/types.d.ts +0 -1
- package/dist/cjs/types/components/Table/useTableState.d.ts +2 -1
- package/dist/esm/index.esm.js +45 -16
- package/dist/esm/index.esm.js.map +1 -1
- package/dist/esm/types/components/Table/types.d.ts +0 -1
- package/dist/esm/types/components/Table/useTableState.d.ts +2 -1
- package/dist/index.d.ts +0 -1
- package/package.json +2 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { ColumnSizingState, SortingState, VisibilityState } from "@tanstack/react-table";
|
|
1
|
+
import { ColumnFiltersState, ColumnSizingState, SortingState, VisibilityState } from "@tanstack/react-table";
|
|
2
2
|
type PersistedTableState = {
|
|
3
3
|
columnVisibility: VisibilityState;
|
|
4
4
|
columnSizing: ColumnSizingState;
|
|
5
5
|
sorting: SortingState;
|
|
6
|
+
columnFilters: ColumnFiltersState;
|
|
6
7
|
};
|
|
7
8
|
export declare function loadTableState(tableId: string): Partial<PersistedTableState>;
|
|
8
9
|
export declare function usePersistTableState(tableId: string, state: Partial<PersistedTableState>, sizingDebounceMs?: number): void;
|
package/dist/esm/index.esm.js
CHANGED
|
@@ -21841,14 +21841,15 @@ function usePersistTableState(tableId, state, sizingDebounceMs = 300) {
|
|
|
21841
21841
|
useEffect(() => {
|
|
21842
21842
|
latestSizing.current = state.columnSizing;
|
|
21843
21843
|
}, [state.columnSizing]);
|
|
21844
|
-
// Persist visibility and
|
|
21844
|
+
// Persist visibility, sorting, and filters immediately
|
|
21845
21845
|
useEffect(() => {
|
|
21846
21846
|
saveTableState(tableId, {
|
|
21847
21847
|
columnVisibility: state.columnVisibility,
|
|
21848
21848
|
columnSizing: latestSizing.current,
|
|
21849
21849
|
sorting: state.sorting,
|
|
21850
|
+
columnFilters: state.columnFilters,
|
|
21850
21851
|
});
|
|
21851
|
-
}, [tableId, state.columnVisibility, state.sorting]);
|
|
21852
|
+
}, [tableId, state.columnVisibility, state.sorting, state.columnFilters]);
|
|
21852
21853
|
// Persist sizing debounced
|
|
21853
21854
|
useEffect(() => {
|
|
21854
21855
|
if (debounceTimer.current)
|
|
@@ -21858,6 +21859,7 @@ function usePersistTableState(tableId, state, sizingDebounceMs = 300) {
|
|
|
21858
21859
|
columnVisibility: state.columnVisibility,
|
|
21859
21860
|
columnSizing: latestSizing.current,
|
|
21860
21861
|
sorting: state.sorting,
|
|
21862
|
+
columnFilters: state.columnFilters,
|
|
21861
21863
|
});
|
|
21862
21864
|
}, sizingDebounceMs);
|
|
21863
21865
|
return () => {
|
|
@@ -22521,7 +22523,9 @@ const TableHeaderCell = ({ header, serverSide, filters, sorting, scrollPosition,
|
|
|
22521
22523
|
}, 300);
|
|
22522
22524
|
const displayOptions = serverSide
|
|
22523
22525
|
? filterOptions
|
|
22524
|
-
:
|
|
22526
|
+
: header.column.getCanFilter()
|
|
22527
|
+
? normalizeOptions(Array.from(header.column.getFacetedUniqueValues().keys()))
|
|
22528
|
+
: [];
|
|
22525
22529
|
useEffect(() => {
|
|
22526
22530
|
setFilterOptions(normalizeOptions(meta?.filterOptions || []));
|
|
22527
22531
|
}, [meta]);
|
|
@@ -22657,7 +22661,6 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22657
22661
|
const [localColumns, setLocalColumns] = useState(columns);
|
|
22658
22662
|
const [totalData, setTotalData] = useState(paginationDetails?.totalRows);
|
|
22659
22663
|
const [sorting, setSorting] = useState(() => loadTableState(id).sorting ?? []);
|
|
22660
|
-
const [filters, setFilters] = useState({});
|
|
22661
22664
|
const [rowState, setRowState] = useState({});
|
|
22662
22665
|
const [columnVisibility, setColumnVisibility] = useState(() => {
|
|
22663
22666
|
const persisted = loadTableState(id);
|
|
@@ -22671,7 +22674,8 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22671
22674
|
]));
|
|
22672
22675
|
});
|
|
22673
22676
|
const [columnFilters, setColumnFilters] = useState(() => {
|
|
22674
|
-
const
|
|
22677
|
+
const persisted = loadTableState(id);
|
|
22678
|
+
const base = persisted.columnFilters ?? defaultFilters ?? [];
|
|
22675
22679
|
if (!staticFilters?.length)
|
|
22676
22680
|
return base;
|
|
22677
22681
|
const merged = [...base];
|
|
@@ -22690,6 +22694,11 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22690
22694
|
});
|
|
22691
22695
|
return merged;
|
|
22692
22696
|
});
|
|
22697
|
+
const filters = useMemo$1(() => {
|
|
22698
|
+
const map = {};
|
|
22699
|
+
columnFilters.forEach((f) => (map[f.id] = f.value));
|
|
22700
|
+
return map;
|
|
22701
|
+
}, [columnFilters]);
|
|
22693
22702
|
const [columnPinning, setColumnPinning] = useState({ left: ["select"], right: ["options"] });
|
|
22694
22703
|
const scrollRef = useRef(null);
|
|
22695
22704
|
const visibilityButtonRef = useRef(null);
|
|
@@ -22726,7 +22735,13 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22726
22735
|
setLocalData(data);
|
|
22727
22736
|
if (paginationDetails && paginationDetails.startingPage !== pageIndex)
|
|
22728
22737
|
setPageIndex(paginationDetails?.startingPage);
|
|
22729
|
-
}, [
|
|
22738
|
+
}, [
|
|
22739
|
+
paginationDetails?.totalRows,
|
|
22740
|
+
paginationDetails?.startingPage,
|
|
22741
|
+
paginationDetails?.rowsPerPage,
|
|
22742
|
+
data,
|
|
22743
|
+
columns,
|
|
22744
|
+
]);
|
|
22730
22745
|
useEffect(() => {
|
|
22731
22746
|
if (!showVisibilityMenu)
|
|
22732
22747
|
return;
|
|
@@ -22806,7 +22821,7 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22806
22821
|
!table.getIsAllPageRowsSelected();
|
|
22807
22822
|
return (a__default.createElement(IndeterminateCheckbox, { isIndeterminate: isIndeterminate, isChecked: table.getIsAllPageRowsSelected(), onChange: table.getToggleAllPageRowsSelectedHandler() }));
|
|
22808
22823
|
},
|
|
22809
|
-
cell: ({ row }) => (a__default.createElement(Checkbox, { checked: row.getIsSelected(), onChange: row.getToggleSelectedHandler() })),
|
|
22824
|
+
cell: ({ row }) => (a__default.createElement(Checkbox, { checked: row.getIsSelected(), onChange: row.getToggleSelectedHandler(), onClick: (e) => e.stopPropagation() })),
|
|
22810
22825
|
size: 20,
|
|
22811
22826
|
});
|
|
22812
22827
|
}
|
|
@@ -22892,9 +22907,6 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22892
22907
|
});
|
|
22893
22908
|
}
|
|
22894
22909
|
setColumnFilters(next);
|
|
22895
|
-
const map = {};
|
|
22896
|
-
next.forEach((f) => (map[f.id] = f.value));
|
|
22897
|
-
setFilters(map);
|
|
22898
22910
|
onFilterChange?.(next);
|
|
22899
22911
|
},
|
|
22900
22912
|
filterFns: {
|
|
@@ -22905,7 +22917,7 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22905
22917
|
},
|
|
22906
22918
|
},
|
|
22907
22919
|
});
|
|
22908
|
-
usePersistTableState(id, { columnVisibility, sorting });
|
|
22920
|
+
usePersistTableState(id, { columnVisibility, sorting, columnFilters });
|
|
22909
22921
|
useEffect(() => {
|
|
22910
22922
|
if (onRowSelect) {
|
|
22911
22923
|
const selectedData = table
|
|
@@ -22914,6 +22926,12 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22914
22926
|
onRowSelect?.(selectedData);
|
|
22915
22927
|
}
|
|
22916
22928
|
}, [rowSelection]);
|
|
22929
|
+
const initialColumnFilters = useRef(columnFilters);
|
|
22930
|
+
useEffect(() => {
|
|
22931
|
+
if (initialColumnFilters.current.length > 0) {
|
|
22932
|
+
onFilterChange?.(initialColumnFilters.current);
|
|
22933
|
+
}
|
|
22934
|
+
}, []);
|
|
22917
22935
|
const isMounted = useRef(false);
|
|
22918
22936
|
useEffect(() => {
|
|
22919
22937
|
if (!isMounted.current) {
|
|
@@ -22923,8 +22941,9 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22923
22941
|
resetTable();
|
|
22924
22942
|
}, [resetTrigger]);
|
|
22925
22943
|
const resetTable = () => {
|
|
22926
|
-
|
|
22927
|
-
|
|
22944
|
+
const resetFilters = staticFilters ?? [];
|
|
22945
|
+
setColumnFilters(resetFilters);
|
|
22946
|
+
onFilterChange?.(resetFilters);
|
|
22928
22947
|
setSorting([]);
|
|
22929
22948
|
setPageIndex(1);
|
|
22930
22949
|
setPagination({
|
|
@@ -22933,6 +22952,8 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22933
22952
|
});
|
|
22934
22953
|
table.toggleAllRowsSelected(false);
|
|
22935
22954
|
};
|
|
22955
|
+
const hasActiveFilters = Object.keys(filters).length > (staticFilters?.length ?? 0) &&
|
|
22956
|
+
Object.values(filters).some((v) => v?.length);
|
|
22936
22957
|
return (a__default.createElement(a__default.Fragment, null,
|
|
22937
22958
|
!isLoading && (a__default.createElement(ActionBar, null,
|
|
22938
22959
|
a__default.createElement(GlobalActionWrapper, null, globalActions?.(table)),
|
|
@@ -22997,7 +23018,8 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22997
23018
|
}, key: index + "loading-row" }, Array.from({
|
|
22998
23019
|
length: 10,
|
|
22999
23020
|
}).map((_, i) => (a__default.createElement(LoadingShimmer, { key: `${i}-loading`, "$width": "110px", "$height": "25px" }))))))))) : (a__default.createElement(StyledTable, { id: `${id}-table`, ...htmlProps },
|
|
23000
|
-
a__default.createElement("thead", null, table.getHeaderGroups().map((headerGroup) => (a__default.createElement(HeaderRow, { key: headerGroup.id, "$isEmpty": table.
|
|
23021
|
+
a__default.createElement("thead", null, table.getHeaderGroups().map((headerGroup) => (a__default.createElement(HeaderRow, { key: headerGroup.id, "$isEmpty": table.getCoreRowModel().rows.length === 0 &&
|
|
23022
|
+
!hasActiveFilters }, headerGroup.headers.map((header, i) => {
|
|
23001
23023
|
return (a__default.createElement(TableHeaderCell, { key: header.id, serverSide: serverSide, header: header, filters: filters, sorting: sorting, scrollPosition: scrollState, onFilterMenuInteraction: (id, active) => {
|
|
23002
23024
|
setFilterMenuOpen((prev) => ({
|
|
23003
23025
|
...prev,
|
|
@@ -23012,14 +23034,21 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
23012
23034
|
} }));
|
|
23013
23035
|
}))))),
|
|
23014
23036
|
a__default.createElement("tbody", null,
|
|
23015
|
-
table.getRowModel().rows.length === 0 && (a__default.createElement(EmptyTableState, { header:
|
|
23037
|
+
table.getRowModel().rows.length === 0 && (a__default.createElement(EmptyTableState, { header: hasActiveFilters
|
|
23038
|
+
? "No results found."
|
|
23039
|
+
: emptyTableState?.header || "No data available.", subHeader: !hasActiveFilters ? emptyTableState?.subHeader : undefined, showClearFilterButton: hasActiveFilters, onClearFilters: () => {
|
|
23040
|
+
resetTable();
|
|
23041
|
+
emptyTableState?.onClearFilters?.();
|
|
23042
|
+
}, colSpan: table.getVisibleLeafColumns().length, size: "large" })),
|
|
23016
23043
|
table.getRowModel().rows.map((row) => (a__default.createElement(a__default.Fragment, { key: row.id },
|
|
23017
23044
|
a__default.createElement(CellRow, { onClick: () => {
|
|
23045
|
+
if (showSelection)
|
|
23046
|
+
row.toggleSelected();
|
|
23018
23047
|
if (!showExpandedRowToggle &&
|
|
23019
23048
|
!!renderExpandedRow?.(row))
|
|
23020
23049
|
toggleRowExpanded(row.id);
|
|
23021
23050
|
onRowClick?.(row.original);
|
|
23022
|
-
}, "$isClickable": !!onRowClick }, row.getVisibleCells().map((cell) => {
|
|
23051
|
+
}, "$isClickable": !!onRowClick || showSelection }, row.getVisibleCells().map((cell) => {
|
|
23023
23052
|
const value = flexRender(cell.column.columnDef.cell, {
|
|
23024
23053
|
...cell.getContext(),
|
|
23025
23054
|
localValue: rowState[row.id]?.[cell.column.id],
|