Skip to content

Commit faa0af3

Browse files
committed
Rollup configuration
1 parent 0b741d4 commit faa0af3

18 files changed

Lines changed: 467 additions & 43 deletions

.github/workflows/publish.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Publish to npm
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
jobs:
8+
build-and-publish:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Checkout repository
12+
uses: actions/checkout@v4
13+
14+
- name: Set up Node.js
15+
uses: actions/setup-node@v4
16+
with:
17+
node-version: 18
18+
registry-url: "https://registry.npmjs.org/"
19+
20+
- name: Install dependencies
21+
run: npm ci
22+
23+
- name: Build package
24+
run: npm run build
25+
26+
- name: Publish to npm
27+
run: npm publish --access public
28+
env:
29+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

dist/dts/TableAdapter.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { RowData } from "@tanstack/react-table";
2+
import { TableAdapterProps } from "./types";
3+
declare module "@tanstack/react-table" {
4+
interface TableMeta<TData extends RowData> {
5+
updateData?: (rowIndex: number, columnId: string, value: unknown) => void;
6+
}
7+
}
8+
export declare function TableAdapter<TData extends object>(props: TableAdapterProps<TData>): import("react/jsx-runtime").JSX.Element;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import React from "react";
2+
/**
3+
* TableWithLoadingStates - A wrapper component that manages loading states for TableAdapter
4+
* This separates loading UI concerns from the table component itself
5+
*/
6+
export declare function TableWithLoadingStates({ isInitialLoading, isPaginationLoading, loadingComponent, paginationLoadingComponent, children, }: {
7+
isInitialLoading?: boolean;
8+
isPaginationLoading?: boolean;
9+
loadingComponent?: React.ReactNode;
10+
paginationLoadingComponent?: React.ReactNode;
11+
children: React.ReactNode;
12+
}): import("react/jsx-runtime").JSX.Element;

dist/dts/components.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Table as TanStackTable } from "@tanstack/react-table";
2+
export declare const EnhancedLoadingComponent: () => import("react/jsx-runtime").JSX.Element;
3+
export declare const EnhancedPaginationLoadingComponent: () => import("react/jsx-runtime").JSX.Element;
4+
export declare const DefaultLoadingComponent: () => import("react/jsx-runtime").JSX.Element;
5+
export declare const DefaultPaginationLoadingComponent: () => import("react/jsx-runtime").JSX.Element;
6+
export declare const DefaultNoResultsComponent: () => import("react/jsx-runtime").JSX.Element;
7+
export declare const DefaultPaginationComponent: <TData extends object>({ table, totalRowCount, isLoading, pageSizeOptions, }: {
8+
table: TanStackTable<TData>;
9+
totalRowCount?: number;
10+
isLoading?: boolean;
11+
pageSizeOptions?: number[];
12+
}) => import("react/jsx-runtime").JSX.Element;

dist/dts/helpers.d.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Table as TanStackTable } from "@tanstack/react-table";
2+
export declare const GlobalFilterInput: ({ value, onChange, placeholder, className, }: {
3+
value: string;
4+
onChange: (value: string) => void;
5+
placeholder?: string;
6+
className?: string;
7+
}) => import("react/jsx-runtime").JSX.Element;
8+
export declare const ColumnVisibilityToggle: <TData extends object>({ table, className, }: {
9+
table: TanStackTable<TData>;
10+
className?: string;
11+
}) => import("react/jsx-runtime").JSX.Element;

dist/dts/index.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export { TableAdapter } from "./TableAdapter";
2+
export { TableWithLoadingStates } from "./TableWithLoadingStates";
3+
export { DefaultPaginationComponent } from "./components";
4+
export { GlobalFilterInput, ColumnVisibilityToggle } from "./helpers";
5+
export { exportToCSV, fuzzyFilter } from "./utils";
6+
export type { TableAdapterProps } from "./types";

dist/dts/types.d.ts

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
import React from "react";
2+
import { ColumnDef, ColumnFiltersState, SortingState, VisibilityState, Table as TanStackTable, RowSelectionState, ColumnResizeMode, PaginationState, ExpandedState, OnChangeFn, FilterFn, Row } from "@tanstack/react-table";
3+
export type TableFeatures = {
4+
pagination?: boolean;
5+
sorting?: boolean;
6+
multiSort?: boolean;
7+
columnFilters?: boolean;
8+
globalFilter?: boolean;
9+
columnResizing?: boolean;
10+
rowSelection?: boolean;
11+
expanding?: boolean;
12+
columnOrdering?: boolean;
13+
pinning?: boolean;
14+
stickyHeader?: boolean;
15+
grouping?: boolean;
16+
};
17+
export type TableStyling = {
18+
className?: string;
19+
tableClassName?: string;
20+
headerClassName?: string;
21+
bodyClassName?: string;
22+
rowClassName?: string | ((row: any) => string);
23+
cellClassName?: string | ((row: any, columnId: string) => string);
24+
columnResizeMode?: ColumnResizeMode;
25+
};
26+
export type TableLoading = {
27+
isLoading?: boolean;
28+
isPaginationLoading?: boolean;
29+
showOverlayLoading?: boolean;
30+
loadingComponent?: React.ReactNode;
31+
paginationLoadingComponent?: React.ReactNode;
32+
};
33+
export type TableServer = {
34+
manualPagination?: boolean;
35+
manualSorting?: boolean;
36+
manualFiltering?: boolean;
37+
manualGrouping?: boolean;
38+
pageCount?: number;
39+
autoResetPageIndex?: boolean;
40+
};
41+
export type TableAccessibility = {
42+
ariaLabel?: string;
43+
ariaLabelledBy?: string;
44+
ariaDescribedBy?: string;
45+
};
46+
export type TableRender<TData> = {
47+
tableHeader?: (table: TanStackTable<TData>) => React.ReactNode;
48+
tableFooter?: (table: TanStackTable<TData>) => React.ReactNode;
49+
pagination?: (props: {
50+
table: TanStackTable<TData>;
51+
totalRowCount?: number;
52+
isLoading?: boolean;
53+
pageSizeOptions?: number[];
54+
}) => React.ReactNode;
55+
noResults?: (table: TanStackTable<TData>) => React.ReactNode;
56+
expanded?: (row: Row<TData>) => React.ReactNode;
57+
rowSubComponent?: (row: Row<TData>) => React.ReactNode;
58+
groupedCell?: (info: {
59+
row: Row<TData>;
60+
cell: any;
61+
groupedByKey: string;
62+
}) => React.ReactNode;
63+
};
64+
export type TableAdapterProps<TData extends object> = {
65+
data: TData[];
66+
columns: ColumnDef<TData, any>[];
67+
totalRowCount?: number;
68+
id?: string;
69+
debugTable?: boolean;
70+
getRowId?: (row: TData, index: number, parent?: Row<TData>) => string;
71+
className?: string;
72+
tableClassName?: string;
73+
headerClassName?: string;
74+
bodyClassName?: string;
75+
rowClassName?: string | ((row: Row<TData>) => string);
76+
cellClassName?: string | ((row: Row<TData>, columnId: string) => string);
77+
columnResizeMode?: ColumnResizeMode;
78+
enablePagination?: boolean;
79+
enableSorting?: boolean;
80+
enableMultiSort?: boolean;
81+
enableColumnFilters?: boolean;
82+
enableGlobalFilter?: boolean;
83+
enableColumnResizing?: boolean;
84+
enableRowSelection?: boolean;
85+
enableExpanding?: boolean;
86+
enablePinning?: boolean;
87+
enableStickyHeader?: boolean;
88+
enableGrouping?: boolean;
89+
pageSize?: number;
90+
pageIndex?: number;
91+
sorting?: SortingState;
92+
columnFilters?: ColumnFiltersState;
93+
globalFilter?: string;
94+
columnVisibility?: VisibilityState;
95+
rowSelection?: RowSelectionState;
96+
expanded?: ExpandedState;
97+
columnOrder?: string[];
98+
columnPinning?: {
99+
left: string[];
100+
right: string[];
101+
};
102+
grouping?: string[];
103+
onPaginationChange?: OnChangeFn<PaginationState>;
104+
onSortingChange?: OnChangeFn<SortingState>;
105+
onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;
106+
onGlobalFilterChange?: OnChangeFn<string>;
107+
onColumnVisibilityChange?: OnChangeFn<VisibilityState>;
108+
onRowSelectionChange?: OnChangeFn<RowSelectionState>;
109+
onExpandedChange?: OnChangeFn<ExpandedState>;
110+
onColumnOrderChange?: OnChangeFn<string[]>;
111+
onColumnPinningChange?: OnChangeFn<{
112+
left: string[];
113+
right: string[];
114+
}>;
115+
onGroupingChange?: OnChangeFn<string[]>;
116+
manualPagination?: boolean;
117+
manualSorting?: boolean;
118+
manualFiltering?: boolean;
119+
manualGrouping?: boolean;
120+
pageCount?: number;
121+
autoResetPageIndex?: boolean;
122+
globalFilterFn?: FilterFn<TData>;
123+
renderTableHeader?: (table: TanStackTable<TData>) => React.ReactNode;
124+
renderTableFooter?: (table: TanStackTable<TData>) => React.ReactNode;
125+
renderPagination?: (props: {
126+
table: TanStackTable<TData>;
127+
totalRowCount?: number;
128+
isLoading?: boolean;
129+
pageSizeOptions?: number[];
130+
}) => React.ReactNode;
131+
renderNoResults?: (table: TanStackTable<TData>) => React.ReactNode;
132+
renderExpanded?: (row: Row<TData>) => React.ReactNode;
133+
renderRowSubComponent?: (row: Row<TData>) => React.ReactNode;
134+
renderGroupedCell?: (info: {
135+
row: Row<TData>;
136+
cell: any;
137+
groupedByKey: string;
138+
}) => React.ReactNode;
139+
onRowClick?: (row: Row<TData>) => void;
140+
onCellClick?: (row: Row<TData>, columnId: string) => void;
141+
onExportData?: (data: TData[]) => void;
142+
isLoading?: boolean;
143+
isPaginationLoading?: boolean;
144+
loadingComponent?: React.ReactNode;
145+
paginationLoadingComponent?: React.ReactNode;
146+
showOverlayLoading?: boolean;
147+
ariaLabel?: string;
148+
ariaLabelledBy?: string;
149+
ariaDescribedBy?: string;
150+
pageSizeOptions?: number[];
151+
renderSortIcon?: (direction: "asc" | "desc" | false) => React.ReactNode;
152+
enableSortingRemoval?: boolean;
153+
};

dist/dts/utils.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { ColumnDef, FilterFn } from "@tanstack/react-table";
2+
export declare const fuzzyFilter: FilterFn<any>;
3+
export declare const exportToCSV: <TData extends object>(data: TData[], columns: ColumnDef<TData, any>[], filename?: string) => void;
4+
export { fuzzyFilter as defaultFilterFn };

0 commit comments

Comments
 (0)