@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
package/README.md
CHANGED
|
@@ -48,6 +48,19 @@ To get started with the **Stella Source Design System**, visit our [documentatio
|
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
51
|
+
# NPM Commands
|
|
52
|
+
|
|
53
|
+
| Command | Description |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `npm run start` | Start Storybook dev server on port 6006 |
|
|
56
|
+
| `npm run build` | Build Storybook for production |
|
|
57
|
+
| `npm run package` | Build the component library with Rollup |
|
|
58
|
+
| `npm test` | Run tests in watch mode (Vitest) |
|
|
59
|
+
| `npm run test:coverage` | Run tests with coverage report |
|
|
60
|
+
| `npm run ngrok` | Expose local Storybook via ngrok (port 6006) |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
51
64
|
# Contributing to the DSL
|
|
52
65
|
|
|
53
66
|
Contributing Guide: https://dev.azure.com/stellasource/Stella%20Source/_wiki/wikis/SecturaSoft.wiki/543/Contributing-To-The-DSL
|
package/dist/cjs/index.js
CHANGED
|
@@ -21861,14 +21861,15 @@ function usePersistTableState(tableId, state, sizingDebounceMs = 300) {
|
|
|
21861
21861
|
a$n.useEffect(() => {
|
|
21862
21862
|
latestSizing.current = state.columnSizing;
|
|
21863
21863
|
}, [state.columnSizing]);
|
|
21864
|
-
// Persist visibility and
|
|
21864
|
+
// Persist visibility, sorting, and filters immediately
|
|
21865
21865
|
a$n.useEffect(() => {
|
|
21866
21866
|
saveTableState(tableId, {
|
|
21867
21867
|
columnVisibility: state.columnVisibility,
|
|
21868
21868
|
columnSizing: latestSizing.current,
|
|
21869
21869
|
sorting: state.sorting,
|
|
21870
|
+
columnFilters: state.columnFilters,
|
|
21870
21871
|
});
|
|
21871
|
-
}, [tableId, state.columnVisibility, state.sorting]);
|
|
21872
|
+
}, [tableId, state.columnVisibility, state.sorting, state.columnFilters]);
|
|
21872
21873
|
// Persist sizing debounced
|
|
21873
21874
|
a$n.useEffect(() => {
|
|
21874
21875
|
if (debounceTimer.current)
|
|
@@ -21878,6 +21879,7 @@ function usePersistTableState(tableId, state, sizingDebounceMs = 300) {
|
|
|
21878
21879
|
columnVisibility: state.columnVisibility,
|
|
21879
21880
|
columnSizing: latestSizing.current,
|
|
21880
21881
|
sorting: state.sorting,
|
|
21882
|
+
columnFilters: state.columnFilters,
|
|
21881
21883
|
});
|
|
21882
21884
|
}, sizingDebounceMs);
|
|
21883
21885
|
return () => {
|
|
@@ -22541,7 +22543,9 @@ const TableHeaderCell = ({ header, serverSide, filters, sorting, scrollPosition,
|
|
|
22541
22543
|
}, 300);
|
|
22542
22544
|
const displayOptions = serverSide
|
|
22543
22545
|
? filterOptions
|
|
22544
|
-
:
|
|
22546
|
+
: header.column.getCanFilter()
|
|
22547
|
+
? normalizeOptions(Array.from(header.column.getFacetedUniqueValues().keys()))
|
|
22548
|
+
: [];
|
|
22545
22549
|
a$n.useEffect(() => {
|
|
22546
22550
|
setFilterOptions(normalizeOptions(meta?.filterOptions || []));
|
|
22547
22551
|
}, [meta]);
|
|
@@ -22677,7 +22681,6 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22677
22681
|
const [localColumns, setLocalColumns] = a$n.useState(columns);
|
|
22678
22682
|
const [totalData, setTotalData] = a$n.useState(paginationDetails?.totalRows);
|
|
22679
22683
|
const [sorting, setSorting] = a$n.useState(() => loadTableState(id).sorting ?? []);
|
|
22680
|
-
const [filters, setFilters] = a$n.useState({});
|
|
22681
22684
|
const [rowState, setRowState] = a$n.useState({});
|
|
22682
22685
|
const [columnVisibility, setColumnVisibility] = a$n.useState(() => {
|
|
22683
22686
|
const persisted = loadTableState(id);
|
|
@@ -22691,7 +22694,8 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22691
22694
|
]));
|
|
22692
22695
|
});
|
|
22693
22696
|
const [columnFilters, setColumnFilters] = a$n.useState(() => {
|
|
22694
|
-
const
|
|
22697
|
+
const persisted = loadTableState(id);
|
|
22698
|
+
const base = persisted.columnFilters ?? defaultFilters ?? [];
|
|
22695
22699
|
if (!staticFilters?.length)
|
|
22696
22700
|
return base;
|
|
22697
22701
|
const merged = [...base];
|
|
@@ -22710,6 +22714,11 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22710
22714
|
});
|
|
22711
22715
|
return merged;
|
|
22712
22716
|
});
|
|
22717
|
+
const filters = a$n.useMemo(() => {
|
|
22718
|
+
const map = {};
|
|
22719
|
+
columnFilters.forEach((f) => (map[f.id] = f.value));
|
|
22720
|
+
return map;
|
|
22721
|
+
}, [columnFilters]);
|
|
22713
22722
|
const [columnPinning, setColumnPinning] = a$n.useState({ left: ["select"], right: ["options"] });
|
|
22714
22723
|
const scrollRef = a$n.useRef(null);
|
|
22715
22724
|
const visibilityButtonRef = a$n.useRef(null);
|
|
@@ -22746,7 +22755,13 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22746
22755
|
setLocalData(data);
|
|
22747
22756
|
if (paginationDetails && paginationDetails.startingPage !== pageIndex)
|
|
22748
22757
|
setPageIndex(paginationDetails?.startingPage);
|
|
22749
|
-
}, [
|
|
22758
|
+
}, [
|
|
22759
|
+
paginationDetails?.totalRows,
|
|
22760
|
+
paginationDetails?.startingPage,
|
|
22761
|
+
paginationDetails?.rowsPerPage,
|
|
22762
|
+
data,
|
|
22763
|
+
columns,
|
|
22764
|
+
]);
|
|
22750
22765
|
a$n.useEffect(() => {
|
|
22751
22766
|
if (!showVisibilityMenu)
|
|
22752
22767
|
return;
|
|
@@ -22826,7 +22841,7 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22826
22841
|
!table.getIsAllPageRowsSelected();
|
|
22827
22842
|
return (a$n.createElement(IndeterminateCheckbox, { isIndeterminate: isIndeterminate, isChecked: table.getIsAllPageRowsSelected(), onChange: table.getToggleAllPageRowsSelectedHandler() }));
|
|
22828
22843
|
},
|
|
22829
|
-
cell: ({ row }) => (a$n.createElement(Checkbox, { checked: row.getIsSelected(), onChange: row.getToggleSelectedHandler() })),
|
|
22844
|
+
cell: ({ row }) => (a$n.createElement(Checkbox, { checked: row.getIsSelected(), onChange: row.getToggleSelectedHandler(), onClick: (e) => e.stopPropagation() })),
|
|
22830
22845
|
size: 20,
|
|
22831
22846
|
});
|
|
22832
22847
|
}
|
|
@@ -22912,9 +22927,6 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22912
22927
|
});
|
|
22913
22928
|
}
|
|
22914
22929
|
setColumnFilters(next);
|
|
22915
|
-
const map = {};
|
|
22916
|
-
next.forEach((f) => (map[f.id] = f.value));
|
|
22917
|
-
setFilters(map);
|
|
22918
22930
|
onFilterChange?.(next);
|
|
22919
22931
|
},
|
|
22920
22932
|
filterFns: {
|
|
@@ -22925,7 +22937,7 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22925
22937
|
},
|
|
22926
22938
|
},
|
|
22927
22939
|
});
|
|
22928
|
-
usePersistTableState(id, { columnVisibility, sorting });
|
|
22940
|
+
usePersistTableState(id, { columnVisibility, sorting, columnFilters });
|
|
22929
22941
|
a$n.useEffect(() => {
|
|
22930
22942
|
if (onRowSelect) {
|
|
22931
22943
|
const selectedData = table
|
|
@@ -22934,6 +22946,12 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22934
22946
|
onRowSelect?.(selectedData);
|
|
22935
22947
|
}
|
|
22936
22948
|
}, [rowSelection]);
|
|
22949
|
+
const initialColumnFilters = a$n.useRef(columnFilters);
|
|
22950
|
+
a$n.useEffect(() => {
|
|
22951
|
+
if (initialColumnFilters.current.length > 0) {
|
|
22952
|
+
onFilterChange?.(initialColumnFilters.current);
|
|
22953
|
+
}
|
|
22954
|
+
}, []);
|
|
22937
22955
|
const isMounted = a$n.useRef(false);
|
|
22938
22956
|
a$n.useEffect(() => {
|
|
22939
22957
|
if (!isMounted.current) {
|
|
@@ -22943,8 +22961,9 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22943
22961
|
resetTable();
|
|
22944
22962
|
}, [resetTrigger]);
|
|
22945
22963
|
const resetTable = () => {
|
|
22946
|
-
|
|
22947
|
-
|
|
22964
|
+
const resetFilters = staticFilters ?? [];
|
|
22965
|
+
setColumnFilters(resetFilters);
|
|
22966
|
+
onFilterChange?.(resetFilters);
|
|
22948
22967
|
setSorting([]);
|
|
22949
22968
|
setPageIndex(1);
|
|
22950
22969
|
setPagination({
|
|
@@ -22953,6 +22972,8 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
22953
22972
|
});
|
|
22954
22973
|
table.toggleAllRowsSelected(false);
|
|
22955
22974
|
};
|
|
22975
|
+
const hasActiveFilters = Object.keys(filters).length > (staticFilters?.length ?? 0) &&
|
|
22976
|
+
Object.values(filters).some((v) => v?.length);
|
|
22956
22977
|
return (a$n.createElement(a$n.Fragment, null,
|
|
22957
22978
|
!isLoading && (a$n.createElement(ActionBar, null,
|
|
22958
22979
|
a$n.createElement(GlobalActionWrapper, null, globalActions?.(table)),
|
|
@@ -23017,7 +23038,8 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
23017
23038
|
}, key: index + "loading-row" }, Array.from({
|
|
23018
23039
|
length: 10,
|
|
23019
23040
|
}).map((_, i) => (a$n.createElement(LoadingShimmer, { key: `${i}-loading`, "$width": "110px", "$height": "25px" }))))))))) : (a$n.createElement(StyledTable, { id: `${id}-table`, ...htmlProps },
|
|
23020
|
-
a$n.createElement("thead", null, table.getHeaderGroups().map((headerGroup) => (a$n.createElement(HeaderRow, { key: headerGroup.id, "$isEmpty": table.
|
|
23041
|
+
a$n.createElement("thead", null, table.getHeaderGroups().map((headerGroup) => (a$n.createElement(HeaderRow, { key: headerGroup.id, "$isEmpty": table.getCoreRowModel().rows.length === 0 &&
|
|
23042
|
+
!hasActiveFilters }, headerGroup.headers.map((header, i) => {
|
|
23021
23043
|
return (a$n.createElement(TableHeaderCell, { key: header.id, serverSide: serverSide, header: header, filters: filters, sorting: sorting, scrollPosition: scrollState, onFilterMenuInteraction: (id, active) => {
|
|
23022
23044
|
setFilterMenuOpen((prev) => ({
|
|
23023
23045
|
...prev,
|
|
@@ -23032,14 +23054,21 @@ function Table({ columns, data, isLoading, serverSide = false, onPageChange, onS
|
|
|
23032
23054
|
} }));
|
|
23033
23055
|
}))))),
|
|
23034
23056
|
a$n.createElement("tbody", null,
|
|
23035
|
-
table.getRowModel().rows.length === 0 && (a$n.createElement(EmptyTableState, { header:
|
|
23057
|
+
table.getRowModel().rows.length === 0 && (a$n.createElement(EmptyTableState, { header: hasActiveFilters
|
|
23058
|
+
? "No results found."
|
|
23059
|
+
: emptyTableState?.header || "No data available.", subHeader: !hasActiveFilters ? emptyTableState?.subHeader : undefined, showClearFilterButton: hasActiveFilters, onClearFilters: () => {
|
|
23060
|
+
resetTable();
|
|
23061
|
+
emptyTableState?.onClearFilters?.();
|
|
23062
|
+
}, colSpan: table.getVisibleLeafColumns().length, size: "large" })),
|
|
23036
23063
|
table.getRowModel().rows.map((row) => (a$n.createElement(a$n.Fragment, { key: row.id },
|
|
23037
23064
|
a$n.createElement(CellRow, { onClick: () => {
|
|
23065
|
+
if (showSelection)
|
|
23066
|
+
row.toggleSelected();
|
|
23038
23067
|
if (!showExpandedRowToggle &&
|
|
23039
23068
|
!!renderExpandedRow?.(row))
|
|
23040
23069
|
toggleRowExpanded(row.id);
|
|
23041
23070
|
onRowClick?.(row.original);
|
|
23042
|
-
}, "$isClickable": !!onRowClick }, row.getVisibleCells().map((cell) => {
|
|
23071
|
+
}, "$isClickable": !!onRowClick || showSelection }, row.getVisibleCells().map((cell) => {
|
|
23043
23072
|
const value = flexRender(cell.column.columnDef.cell, {
|
|
23044
23073
|
...cell.getContext(),
|
|
23045
23074
|
localValue: rowState[row.id]?.[cell.column.id],
|