Skip to content

Commit 1115e62

Browse files
committed
Mutli sort added. sorting example added.
1 parent adbb75b commit 1115e62

File tree

7 files changed

+716
-8
lines changed

7 files changed

+716
-8
lines changed

.storybook/preview.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ const preview: Preview = {
2323
"Advanced",
2424
"Filtering",
2525
],
26+
"In Progress",
27+
["TableAdapter", ["Sorting"]],
28+
"TODO",
29+
["TableAdapter", ["Filtering"]],
2630
],
2731
},
2832
},

src/TableAdapter.tsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,18 @@ function TableHeader<TData>({
9090
? "cursor-pointer select-none"
9191
: ""
9292
}
93-
onClick={header.column.getToggleSortingHandler()}
93+
onClick={(e) => {
94+
console.log(
95+
"Header clicked:",
96+
header.column.id,
97+
"Event:",
98+
e
99+
);
100+
const handler = header.column.getToggleSortingHandler();
101+
if (handler) {
102+
handler(e);
103+
}
104+
}}
94105
role={
95106
enableSorting && header.column.getCanSort()
96107
? "button"
@@ -425,6 +436,10 @@ export function TableAdapter<TData extends object, TValue = unknown>(
425436
// Create a state to track what data is currently being used by the table
426437
const [tableData, setTableData] = useState<TData[]>(initialMemoizedData);
427438

439+
// Determine the multi-sort event handler: use prop if provided, otherwise default to Shift key
440+
const isMultiSortEvent =
441+
props.isMultiSortEvent ?? ((e: unknown) => !!(e && (e as any).shiftKey));
442+
428443
// Create the table instance with initial data
429444
const table = useReactTable({
430445
data: tableData,
@@ -440,6 +455,11 @@ export function TableAdapter<TData extends object, TValue = unknown>(
440455
enableColumnResizing: features.columnResizing,
441456
enableSortingRemoval: features.sortingRemoval,
442457

458+
// Advanced multi-sorting options
459+
isMultiSortEvent,
460+
maxMultiSortColCount: props.maxMultiSortColCount,
461+
enableMultiRemove: props.enableMultiRemove,
462+
443463
// State
444464
state: {
445465
sorting: currentSorting,

src/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,6 +1070,11 @@ export type TableAdapterProps<TData extends object, TValue = unknown> = {
10701070
enableGrouping?: boolean;
10711071
enableSortingRemoval?: boolean;
10721072

1073+
// Advanced multi-sorting props
1074+
isMultiSortEvent?: (e: unknown) => boolean;
1075+
maxMultiSortColCount?: number;
1076+
enableMultiRemove?: boolean;
1077+
10731078
className?: string;
10741079
classNames?: TableClassNames;
10751080
columnResizeMode?: ColumnResizeMode;

stories/Filtering.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { fuzzyFilter } from "../src/utils";
77
import { ColumnDef } from "@tanstack/react-table";
88

99
const meta: Meta<typeof TableAdapter<Person>> = {
10-
title: "In Progress/TableAdapter/Filtering",
10+
title: "TODO/TableAdapter/Filtering",
1111
component: TableAdapter,
1212
parameters: {
1313
layout: "centered",

0 commit comments

Comments
 (0)