@datum-cloud/datum-ui 1.0.0 → 1.2.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/dist/components/features/data-table/core/filter-engine.d.ts +5 -2
- package/dist/components/features/data-table/core/filter-engine.d.ts.map +1 -1
- package/dist/components/features/data-table/index.d.ts +4 -0
- package/dist/components/features/data-table/index.d.ts.map +1 -1
- package/dist/components/features/grouped-table/components/grouped-skeleton.d.ts +7 -0
- package/dist/components/features/grouped-table/components/grouped-skeleton.d.ts.map +1 -0
- package/dist/components/features/grouped-table/components/grouped-toolbar.d.ts +9 -0
- package/dist/components/features/grouped-table/components/grouped-toolbar.d.ts.map +1 -0
- package/dist/components/features/grouped-table/grouped-table.d.ts +3 -0
- package/dist/components/features/grouped-table/grouped-table.d.ts.map +1 -0
- package/dist/components/features/grouped-table/index.d.ts +3 -0
- package/dist/components/features/grouped-table/index.d.ts.map +1 -0
- package/dist/components/features/grouped-table/lib/bucket-rows.d.ts +14 -0
- package/dist/components/features/grouped-table/lib/bucket-rows.d.ts.map +1 -0
- package/dist/components/features/grouped-table/lib/compose-columns.d.ts +11 -0
- package/dist/components/features/grouped-table/lib/compose-columns.d.ts.map +1 -0
- package/dist/components/features/grouped-table/lib/sort-rows.d.ts +7 -0
- package/dist/components/features/grouped-table/lib/sort-rows.d.ts.map +1 -0
- package/dist/components/features/grouped-table/lib/use-controllable-state.d.ts +8 -0
- package/dist/components/features/grouped-table/lib/use-controllable-state.d.ts.map +1 -0
- package/dist/components/features/grouped-table/types.d.ts +74 -0
- package/dist/components/features/grouped-table/types.d.ts.map +1 -0
- package/dist/components/features/grouped-table/use-grouped-expansion.d.ts +10 -0
- package/dist/components/features/grouped-table/use-grouped-expansion.d.ts.map +1 -0
- package/dist/data-table/index.mjs +2 -1588
- package/dist/data-table-BTIxzB7O.mjs +1588 -0
- package/dist/grouped-table/index.mjs +352 -0
- package/package.json +8 -3
|
@@ -13,9 +13,12 @@ interface FilterStrategies {
|
|
|
13
13
|
[key: string]: FilterFn;
|
|
14
14
|
}
|
|
15
15
|
export declare const FILTER_STRATEGIES: FilterStrategies;
|
|
16
|
-
export
|
|
16
|
+
export interface SearchConfig<TData> {
|
|
17
17
|
searchFn?: (row: TData, query: string) => boolean;
|
|
18
18
|
searchableColumns?: string[];
|
|
19
|
-
}
|
|
19
|
+
}
|
|
20
|
+
/** True when a row matches a free-text query (custom fn → columns → all values). */
|
|
21
|
+
export declare function rowMatchesSearch<TData>(row: TData, search: string, config: SearchConfig<TData>): boolean;
|
|
22
|
+
export declare function applyFilters<TData>(data: TData[], filters: Record<string, unknown>, search: string, registeredFilters: Map<string, FilterStrategy>, customFilterFns: Record<string, FilterFn>, searchConfig: SearchConfig<TData>): TData[];
|
|
20
23
|
export {};
|
|
21
24
|
//# sourceMappingURL=filter-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-engine.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/data-table/core/filter-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C,KAAK,QAAQ,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,KAAK,OAAO,CAAA;AAErE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAW/D;AAED,UAAU,gBAAgB;IACxB,UAAU,EAAE,QAAQ,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,UAAU,EAAE,QAAQ,CAAA;IACpB,UAAU,EAAE,QAAQ,CAAA;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CACxB;AAED,eAAO,MAAM,iBAAiB,EAAE,gBAsC/B,CAAA;AAUD,
|
|
1
|
+
{"version":3,"file":"filter-engine.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/data-table/core/filter-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C,KAAK,QAAQ,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,KAAK,OAAO,CAAA;AAErE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAW/D;AAED,UAAU,gBAAgB;IACxB,UAAU,EAAE,QAAQ,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,UAAU,EAAE,QAAQ,CAAA;IACpB,UAAU,EAAE,QAAQ,CAAA;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CACxB;AAED,eAAO,MAAM,iBAAiB,EAAE,gBAsC/B,CAAA;AAUD,MAAM,WAAW,YAAY,CAAC,KAAK;IACjC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IACjD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC7B;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,KAAK,EACpC,GAAG,EAAE,KAAK,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,GAC1B,OAAO,CAgBT;AAED,wBAAgB,YAAY,CAAC,KAAK,EAChC,IAAI,EAAE,KAAK,EAAE,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAC9C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACzC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,GAChC,KAAK,EAAE,CA0BT"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
export { useNuqsAdapter } from './adapters/nuqs-adapter';
|
|
2
2
|
export type { UseNuqsAdapterOptions } from './adapters/nuqs-adapter';
|
|
3
3
|
export { createSelectionColumn } from './columns/selection-column';
|
|
4
|
+
export { DataTableColumnHeader } from './components/column-header';
|
|
5
|
+
export { DataTableRowActions } from './components/row-actions';
|
|
4
6
|
export { DEFAULT_DEBOUNCE_MS, DEFAULT_LOADING_ROWS, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, } from './constants';
|
|
7
|
+
export { resolvePath, rowMatchesSearch } from './core/filter-engine';
|
|
8
|
+
export type { SearchConfig } from './core/filter-engine';
|
|
5
9
|
export { createDataTableStore } from './core/store';
|
|
6
10
|
export { DataTable } from './data-table';
|
|
7
11
|
export { useDataTableFilters, useDataTableInlineContents, useDataTableLoading, useDataTablePagination, useDataTableRows, useDataTableSearch, useDataTableSelection, useDataTableSorting, } from './hooks/use-selectors';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/features/data-table/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAGlE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAG9B,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/features/data-table/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAG9D,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEpE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAG9B,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface GroupedSkeletonProps {
|
|
2
|
+
columns?: number;
|
|
3
|
+
groups?: number;
|
|
4
|
+
rowsPerGroup?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function GroupedSkeleton({ columns, groups, rowsPerGroup }: GroupedSkeletonProps): import("react").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=grouped-skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouped-skeleton.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/grouped-table/components/grouped-skeleton.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,eAAe,CAAC,EAAE,OAAW,EAAE,MAAU,EAAE,YAAgB,EAAE,EAAE,oBAAoB,+BA2BlG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface GroupedToolbarProps {
|
|
2
|
+
search: string;
|
|
3
|
+
onSearchChange: (value: string) => void;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
debounceMs?: number;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function GroupedToolbar({ search, onSearchChange, placeholder, debounceMs, className, }: GroupedToolbarProps): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=grouped-toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouped-toolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/grouped-table/components/grouped-toolbar.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,cAAc,EACd,WAAyB,EACzB,UAAgC,EAChC,SAAS,GACV,EAAE,mBAAmB,+BA0BrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouped-table.d.ts","sourceRoot":"","sources":["../../../../src/components/features/grouped-table/grouped-table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAoDhD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,+BAyLlE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/features/grouped-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Row } from '@tanstack/react-table';
|
|
2
|
+
interface GroupLike {
|
|
3
|
+
id: string;
|
|
4
|
+
rows: unknown[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Build per-group buckets of `filteredRows`, preserving the filtered order.
|
|
8
|
+
* `coreRows` are the unfiltered rows in group-concatenated order; we use their
|
|
9
|
+
* positions to learn which row id belongs to which group, so bucketing is correct
|
|
10
|
+
* regardless of a custom getRowId.
|
|
11
|
+
*/
|
|
12
|
+
export declare function bucketRows<TData>(groups: GroupLike[], coreRows: Row<TData>[], filteredRows: Row<TData>[]): Map<string, Row<TData>[]>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=bucket-rows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bucket-rows.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/grouped-table/lib/bucket-rows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAEhD,UAAU,SAAS;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE;AAEnD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAC9B,MAAM,EAAE,SAAS,EAAE,EACnB,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EACtB,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GACzB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAmB3B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ColumnDef } from '@tanstack/react-table';
|
|
2
|
+
import type { SelectionColumnOptions } from '../../data-table/types';
|
|
3
|
+
import type { ActionItem } from '../../more-actions/types';
|
|
4
|
+
export interface ComposeOptions<TData> {
|
|
5
|
+
enableRowSelection?: boolean | SelectionColumnOptions;
|
|
6
|
+
enableSorting?: boolean;
|
|
7
|
+
rowActions?: (row: TData) => ActionItem<TData>[];
|
|
8
|
+
rowActionsSheetTitle?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function composeColumns<TData>(columns: ColumnDef<TData, unknown>[], options: ComposeOptions<TData>): ColumnDef<TData, unknown>[];
|
|
11
|
+
//# sourceMappingURL=compose-columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-columns.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/grouped-table/lib/compose-columns.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1D,MAAM,WAAW,cAAc,CAAC,KAAK;IACnC,kBAAkB,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAA;IACrD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,CAAA;IAChD,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAgBD,wBAAgB,cAAc,CAAC,KAAK,EAClC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EACpC,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,GAC7B,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CA4B7B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Row, SortingState } from '@tanstack/react-table';
|
|
2
|
+
/**
|
|
3
|
+
* Sort a single group's rows by the active sort (first entry; v1 is single-sort).
|
|
4
|
+
* Returns the same reference when there is no sort, so React can skip re-renders.
|
|
5
|
+
*/
|
|
6
|
+
export declare function sortRows<TData>(rows: Row<TData>[], sorting: SortingState): Row<TData>[];
|
|
7
|
+
//# sourceMappingURL=sort-rows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-rows.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/grouped-table/lib/sort-rows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAc9D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAQvF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type Updater<T> = T | ((prev: T) => T);
|
|
2
|
+
/**
|
|
3
|
+
* Uncontrolled-by-default state with an optional controlled override.
|
|
4
|
+
* When `controlled` is undefined the hook owns the value; otherwise the prop wins.
|
|
5
|
+
* `onChange` always fires. Accepts TanStack-style updater functions.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useControllableState<T>(controlled: T | undefined, defaultValue: T, onChange?: (value: T) => void): readonly [T, (next: Updater<T>) => void];
|
|
8
|
+
//# sourceMappingURL=use-controllable-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-controllable-state.d.ts","sourceRoot":"","sources":["../../../../../src/components/features/grouped-table/lib/use-controllable-state.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AAE7C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,UAAU,EAAE,CAAC,GAAG,SAAS,EACzB,YAAY,EAAE,CAAC,EACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAC5B,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAiB1C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Cell, ColumnDef, Row, RowSelectionState, SortingState } from '@tanstack/react-table';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
import type { SelectionColumnOptions } from '../data-table/types';
|
|
4
|
+
import type { ActionItem } from '../more-actions/types';
|
|
5
|
+
export type DefaultExpanded = 'all' | 'none' | string[];
|
|
6
|
+
export interface GroupedTableGroup<TData> {
|
|
7
|
+
/** Stable key used for expand state. */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Group header label. */
|
|
10
|
+
title: ReactNode;
|
|
11
|
+
/** Right-aligned header slot — count, badges, actions. */
|
|
12
|
+
meta?: ReactNode;
|
|
13
|
+
rows: TData[];
|
|
14
|
+
/** Per-group override of the table-level default. */
|
|
15
|
+
defaultOpen?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface GroupedTableProps<TData> {
|
|
18
|
+
/** TanStack column defs. `size` (px) drives the shared grid template; unsized columns flex. */
|
|
19
|
+
columns: ColumnDef<TData, unknown>[];
|
|
20
|
+
groups: GroupedTableGroup<TData>[];
|
|
21
|
+
/** Uncontrolled initial state. Default `'all'`. A string[] opens exactly those ids. */
|
|
22
|
+
defaultExpanded?: DefaultExpanded;
|
|
23
|
+
/** Controlled open ids. When set, the component does not own expansion state. */
|
|
24
|
+
expanded?: string[];
|
|
25
|
+
onExpandedChange?: (openIds: string[]) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Stable row identity, passed through to TanStack. Supply this when consumers
|
|
28
|
+
* reorder rows or groups so React keys stay stable across renders instead of
|
|
29
|
+
* defaulting to the flattened row index.
|
|
30
|
+
*/
|
|
31
|
+
getRowId?: (row: TData, index: number) => string;
|
|
32
|
+
/** Prepend a checkbox column; pass options to customize. */
|
|
33
|
+
enableRowSelection?: boolean | SelectionColumnOptions;
|
|
34
|
+
rowSelection?: RowSelectionState;
|
|
35
|
+
onRowSelectionChange?: (selection: RowSelectionState) => void;
|
|
36
|
+
/** Append a "⋯" actions column. Receives the row to allow conditional actions. */
|
|
37
|
+
rowActions?: (row: TData) => ActionItem<TData>[];
|
|
38
|
+
rowActionsSheetTitle?: string;
|
|
39
|
+
/** Enable sortable headers; sorting is applied within each group. */
|
|
40
|
+
enableSorting?: boolean;
|
|
41
|
+
sorting?: SortingState;
|
|
42
|
+
onSortingChange?: (sorting: SortingState) => void;
|
|
43
|
+
/** Render a built-in debounced search input above the table. */
|
|
44
|
+
enableSearch?: boolean;
|
|
45
|
+
searchPlaceholder?: string;
|
|
46
|
+
searchableColumns?: string[];
|
|
47
|
+
searchFn?: (row: TData, query: string) => boolean;
|
|
48
|
+
search?: string;
|
|
49
|
+
onSearchChange?: (search: string) => void;
|
|
50
|
+
searchDebounceMs?: number;
|
|
51
|
+
/** Render a skeleton instead of rows. */
|
|
52
|
+
isLoading?: boolean;
|
|
53
|
+
/** Rendered when there are no groups, every group is empty, or search clears everything. */
|
|
54
|
+
empty?: ReactNode;
|
|
55
|
+
/** Root wrapper. */
|
|
56
|
+
className?: string;
|
|
57
|
+
/** Search toolbar wrapper (when `enableSearch`). */
|
|
58
|
+
toolbarClassName?: string;
|
|
59
|
+
/** Every `<table>` element (shared header + each group body). */
|
|
60
|
+
tableClassName?: string;
|
|
61
|
+
/** The column-header `<tr>`. */
|
|
62
|
+
headerRowClassName?: string;
|
|
63
|
+
/** Each column-header `<th>`. */
|
|
64
|
+
headerCellClassName?: string;
|
|
65
|
+
/** Each group's collapsible header band; receives the group for per-group styling. */
|
|
66
|
+
groupHeaderClassName?: string | ((group: GroupedTableGroup<TData>) => string);
|
|
67
|
+
/** Each group's `<tbody>`. */
|
|
68
|
+
bodyClassName?: string;
|
|
69
|
+
/** Each data `<tr>`; receives the row for per-row styling. */
|
|
70
|
+
rowClassName?: string | ((row: Row<TData>) => string);
|
|
71
|
+
/** Each data `<td>`; receives the cell for per-cell styling. */
|
|
72
|
+
cellClassName?: string | ((cell: Cell<TData, unknown>) => string);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/features/grouped-table/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DefaultExpanded, GroupedTableGroup } from './types';
|
|
2
|
+
export declare function useGroupedExpansion<TData>(groups: GroupedTableGroup<TData>[], opts: {
|
|
3
|
+
defaultExpanded?: DefaultExpanded;
|
|
4
|
+
expanded?: string[];
|
|
5
|
+
onExpandedChange?: (ids: string[]) => void;
|
|
6
|
+
}): {
|
|
7
|
+
isOpen: (id: string) => boolean;
|
|
8
|
+
toggle: (id: string) => void;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=use-grouped-expansion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-grouped-expansion.d.ts","sourceRoot":"","sources":["../../../../src/components/features/grouped-table/use-grouped-expansion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAajE,wBAAgB,mBAAmB,CAAC,KAAK,EACvC,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAClC,IAAI,EAAE;IAAE,eAAe,CAAC,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAAE;iBAQ5E,MAAM,KAAG,OAAO;iBAShB,MAAM;EASvC"}
|