@tablecraft/table 0.1.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/auto/auto-columns.d.ts +9 -0
- package/dist/auto/auto-columns.d.ts.map +1 -0
- package/dist/auto/auto-columns.js +39 -0
- package/dist/auto/auto-columns.js.map +1 -0
- package/dist/auto/auto-filters.d.ts +22 -0
- package/dist/auto/auto-filters.d.ts.map +1 -0
- package/dist/auto/auto-filters.js +15 -0
- package/dist/auto/auto-filters.js.map +1 -0
- package/dist/auto/rest-adapter.d.ts +34 -0
- package/dist/auto/rest-adapter.d.ts.map +1 -0
- package/dist/auto/rest-adapter.js +31 -0
- package/dist/auto/rest-adapter.js.map +1 -0
- package/dist/auto/static-adapter.d.ts +21 -0
- package/dist/auto/static-adapter.d.ts.map +1 -0
- package/dist/auto/static-adapter.js +116 -0
- package/dist/auto/static-adapter.js.map +1 -0
- package/dist/auto/tablecraft-adapter.d.ts +26 -0
- package/dist/auto/tablecraft-adapter.d.ts.map +1 -0
- package/dist/auto/tablecraft-adapter.js +143 -0
- package/dist/auto/tablecraft-adapter.js.map +1 -0
- package/dist/auto/use-auto-columns.d.ts +13 -0
- package/dist/auto/use-auto-columns.d.ts.map +1 -0
- package/dist/auto/use-auto-columns.js +53 -0
- package/dist/auto/use-auto-columns.js.map +1 -0
- package/dist/column-header.d.ts +8 -0
- package/dist/column-header.d.ts.map +1 -0
- package/dist/column-header.js +33 -0
- package/dist/column-header.js.map +1 -0
- package/dist/components/button.d.ts +12 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +35 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar-date-picker.d.ts +21 -0
- package/dist/components/calendar-date-picker.d.ts.map +1 -0
- package/dist/components/calendar-date-picker.js +333 -0
- package/dist/components/calendar-date-picker.js.map +1 -0
- package/dist/components/calendar.d.ts +9 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +77 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/checkbox.d.ts +5 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +10 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/command.d.ts +79 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +26 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/popover.d.ts +11 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +27 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/select.d.ts +14 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +28 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/table-dropdown.d.ts +26 -0
- package/dist/components/table-dropdown.d.ts.map +1 -0
- package/dist/components/table-dropdown.js +52 -0
- package/dist/components/table-dropdown.js.map +1 -0
- package/dist/core/table-config.d.ts +12 -0
- package/dist/core/table-config.d.ts.map +1 -0
- package/dist/core/table-config.js +33 -0
- package/dist/core/table-config.js.map +1 -0
- package/dist/core/use-column-resize.d.ts +10 -0
- package/dist/core/use-column-resize.d.ts.map +1 -0
- package/dist/core/use-column-resize.js +83 -0
- package/dist/core/use-column-resize.js.map +1 -0
- package/dist/core/use-conditional-state.d.ts +14 -0
- package/dist/core/use-conditional-state.d.ts.map +1 -0
- package/dist/core/use-conditional-state.js +27 -0
- package/dist/core/use-conditional-state.js.map +1 -0
- package/dist/core/use-table-data.d.ts +64 -0
- package/dist/core/use-table-data.d.ts.map +1 -0
- package/dist/core/use-table-data.js +141 -0
- package/dist/core/use-table-data.js.map +1 -0
- package/dist/core/use-url-state.d.ts +14 -0
- package/dist/core/use-url-state.d.ts.map +1 -0
- package/dist/core/use-url-state.js +269 -0
- package/dist/core/use-url-state.js.map +1 -0
- package/dist/data-table.d.ts +3 -0
- package/dist/data-table.d.ts.map +1 -0
- package/dist/data-table.js +278 -0
- package/dist/data-table.js.map +1 -0
- package/dist/expand-icon.d.ts +9 -0
- package/dist/expand-icon.d.ts.map +1 -0
- package/dist/expand-icon.js +13 -0
- package/dist/expand-icon.js.map +1 -0
- package/dist/export.d.ts +13 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +122 -0
- package/dist/export.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/pagination.d.ts +11 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +49 -0
- package/dist/pagination.js.map +1 -0
- package/dist/renderers/actions.d.ts +8 -0
- package/dist/renderers/actions.d.ts.map +1 -0
- package/dist/renderers/actions.js +10 -0
- package/dist/renderers/actions.js.map +1 -0
- package/dist/renderers/badge.d.ts +3 -0
- package/dist/renderers/badge.d.ts.map +1 -0
- package/dist/renderers/badge.js +18 -0
- package/dist/renderers/badge.js.map +1 -0
- package/dist/renderers/boolean.d.ts +3 -0
- package/dist/renderers/boolean.d.ts.map +1 -0
- package/dist/renderers/boolean.js +10 -0
- package/dist/renderers/boolean.js.map +1 -0
- package/dist/renderers/date.d.ts +3 -0
- package/dist/renderers/date.d.ts.map +1 -0
- package/dist/renderers/date.js +56 -0
- package/dist/renderers/date.js.map +1 -0
- package/dist/renderers/image.d.ts +3 -0
- package/dist/renderers/image.d.ts.map +1 -0
- package/dist/renderers/image.js +18 -0
- package/dist/renderers/image.js.map +1 -0
- package/dist/renderers/index.d.ts +23 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +43 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/link.d.ts +3 -0
- package/dist/renderers/link.d.ts.map +1 -0
- package/dist/renderers/link.js +9 -0
- package/dist/renderers/link.js.map +1 -0
- package/dist/renderers/number.d.ts +3 -0
- package/dist/renderers/number.d.ts.map +1 -0
- package/dist/renderers/number.js +29 -0
- package/dist/renderers/number.js.map +1 -0
- package/dist/renderers/progress.d.ts +3 -0
- package/dist/renderers/progress.d.ts.map +1 -0
- package/dist/renderers/progress.js +10 -0
- package/dist/renderers/progress.js.map +1 -0
- package/dist/renderers/tags.d.ts +3 -0
- package/dist/renderers/tags.d.ts.map +1 -0
- package/dist/renderers/tags.js +28 -0
- package/dist/renderers/tags.js.map +1 -0
- package/dist/renderers/text.d.ts +3 -0
- package/dist/renderers/text.d.ts.map +1 -0
- package/dist/renderers/text.js +8 -0
- package/dist/renderers/text.js.map +1 -0
- package/dist/resizer.d.ts +6 -0
- package/dist/resizer.d.ts.map +1 -0
- package/dist/resizer.js +10 -0
- package/dist/resizer.js.map +1 -0
- package/dist/row-actions.d.ts +10 -0
- package/dist/row-actions.d.ts.map +1 -0
- package/dist/row-actions.js +36 -0
- package/dist/row-actions.js.map +1 -0
- package/dist/toolbar.d.ts +35 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +119 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/types.d.ts +230 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +6 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/column-sizing.d.ts +18 -0
- package/dist/utils/column-sizing.d.ts.map +1 -0
- package/dist/utils/column-sizing.js +78 -0
- package/dist/utils/column-sizing.js.map +1 -0
- package/dist/utils/date-format.d.ts +13 -0
- package/dist/utils/date-format.d.ts.map +1 -0
- package/dist/utils/date-format.js +30 -0
- package/dist/utils/date-format.js.map +1 -0
- package/dist/utils/deep-utils.d.ts +15 -0
- package/dist/utils/deep-utils.d.ts.map +1 -0
- package/dist/utils/deep-utils.js +111 -0
- package/dist/utils/deep-utils.js.map +1 -0
- package/dist/utils/export-utils.d.ts +25 -0
- package/dist/utils/export-utils.d.ts.map +1 -0
- package/dist/utils/export-utils.js +170 -0
- package/dist/utils/export-utils.js.map +1 -0
- package/dist/utils/history-sync.d.ts +11 -0
- package/dist/utils/history-sync.d.ts.map +1 -0
- package/dist/utils/history-sync.js +45 -0
- package/dist/utils/history-sync.js.map +1 -0
- package/dist/utils/keyboard-navigation.d.ts +11 -0
- package/dist/utils/keyboard-navigation.d.ts.map +1 -0
- package/dist/utils/keyboard-navigation.js +39 -0
- package/dist/utils/keyboard-navigation.js.map +1 -0
- package/dist/utils/search.d.ts +10 -0
- package/dist/utils/search.d.ts.map +1 -0
- package/dist/utils/search.js +33 -0
- package/dist/utils/search.js.map +1 -0
- package/dist/utils/size-variants.d.ts +15 -0
- package/dist/utils/size-variants.d.ts.map +1 -0
- package/dist/utils/size-variants.js +42 -0
- package/dist/utils/size-variants.js.map +1 -0
- package/dist/utils/url-events.d.ts +2 -0
- package/dist/utils/url-events.d.ts.map +1 -0
- package/dist/utils/url-events.js +4 -0
- package/dist/utils/url-events.js.map +1 -0
- package/dist/view-options.d.ts +10 -0
- package/dist/view-options.d.ts.map +1 -0
- package/dist/view-options.js +104 -0
- package/dist/view-options.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Table } from "@tanstack/react-table";
|
|
2
|
+
import type { TableConfig, ExportConfig, ExportableData } from "./types";
|
|
3
|
+
interface DataTableToolbarProps<TData extends ExportableData> {
|
|
4
|
+
table: Table<TData>;
|
|
5
|
+
search: string;
|
|
6
|
+
dateRange: {
|
|
7
|
+
from: string;
|
|
8
|
+
to: string;
|
|
9
|
+
};
|
|
10
|
+
setSearch: (value: string | ((prev: string) => string)) => void;
|
|
11
|
+
setDateRange: (value: {
|
|
12
|
+
from: string;
|
|
13
|
+
to: string;
|
|
14
|
+
} | ((prev: {
|
|
15
|
+
from: string;
|
|
16
|
+
to: string;
|
|
17
|
+
}) => {
|
|
18
|
+
from: string;
|
|
19
|
+
to: string;
|
|
20
|
+
})) => void;
|
|
21
|
+
totalSelectedItems: number;
|
|
22
|
+
clearSelection: () => void;
|
|
23
|
+
getSelectedItems?: () => Promise<TData[]>;
|
|
24
|
+
getAllItems: () => TData[];
|
|
25
|
+
config: TableConfig;
|
|
26
|
+
exportConfig?: ExportConfig<TData>;
|
|
27
|
+
resetColumnSizing?: () => void;
|
|
28
|
+
resetColumnOrder?: () => void;
|
|
29
|
+
columnMapping?: Record<string, string>;
|
|
30
|
+
customToolbarContent?: React.ReactNode;
|
|
31
|
+
startToolbarContent?: React.ReactNode;
|
|
32
|
+
}
|
|
33
|
+
export declare function DataTableToolbar<TData extends ExportableData>({ table, search, dateRange, setSearch, setDateRange, totalSelectedItems, clearSelection, getSelectedItems, getAllItems, config, exportConfig, resetColumnSizing, resetColumnOrder, columnMapping, customToolbarContent, startToolbarContent, }: DataTableToolbarProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../src/toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAmCzE,UAAU,qBAAqB,CAAC,KAAK,SAAS,cAAc;IAC1D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC;IAChE,YAAY,EAAE,CACZ,KAAK,EACD;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAC5B,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,KACvE,IAAI,CAAC;IACV,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,KAAK,EAAE,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,oBAAoB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACvC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,cAAc,EAAE,EAC7D,KAAK,EACL,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,GACpB,EAAE,qBAAqB,CAAC,KAAK,CAAC,2CA+P9B"}
|
package/dist/toolbar.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState, useRef } from "react";
|
|
3
|
+
import { X, Settings, Undo2, CheckSquare, MoveHorizontal, EyeOff, Search } from "lucide-react";
|
|
4
|
+
import { DataTableViewOptions } from "./view-options";
|
|
5
|
+
import { DataTableExport } from "./export";
|
|
6
|
+
import { Popover, PopoverContent, PopoverTrigger, } from "./components/popover";
|
|
7
|
+
import { CalendarDatePicker } from "./components/calendar-date-picker";
|
|
8
|
+
import { resetUrlState } from "./utils/deep-utils";
|
|
9
|
+
import { cn } from "./utils/cn";
|
|
10
|
+
const getInputSizeClass = (size) => {
|
|
11
|
+
switch (size) {
|
|
12
|
+
case "sm": return "h-8";
|
|
13
|
+
case "lg": return "h-10";
|
|
14
|
+
default: return "h-9";
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const getButtonSizeClass = (size, isIcon = false) => {
|
|
18
|
+
if (isIcon) {
|
|
19
|
+
switch (size) {
|
|
20
|
+
case "sm": return "h-8 w-8 p-0";
|
|
21
|
+
case "lg": return "h-10 w-10 p-0";
|
|
22
|
+
default: return "h-9 w-9 p-0";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
switch (size) {
|
|
26
|
+
case "sm": return "h-8 px-3";
|
|
27
|
+
case "lg": return "h-10 px-4";
|
|
28
|
+
default: return "h-9 px-3";
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
export function DataTableToolbar({ table, search, dateRange, setSearch, setDateRange, totalSelectedItems, clearSelection, getSelectedItems, getAllItems, config, exportConfig, resetColumnSizing, resetColumnOrder, columnMapping, customToolbarContent, startToolbarContent, }) {
|
|
32
|
+
const entityName = exportConfig?.entityName || "items";
|
|
33
|
+
// Local debounced search
|
|
34
|
+
const [localSearch, setLocalSearch] = useState(search);
|
|
35
|
+
const isLocallyUpdating = useRef(false);
|
|
36
|
+
const searchTimerRef = useRef(null);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (isLocallyUpdating.current)
|
|
39
|
+
return;
|
|
40
|
+
if (search !== localSearch)
|
|
41
|
+
setLocalSearch(search);
|
|
42
|
+
}, [search, localSearch]);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
return () => {
|
|
45
|
+
if (searchTimerRef.current)
|
|
46
|
+
clearTimeout(searchTimerRef.current);
|
|
47
|
+
};
|
|
48
|
+
}, []);
|
|
49
|
+
const handleSearchChange = (e) => {
|
|
50
|
+
const value = e.target.value;
|
|
51
|
+
isLocallyUpdating.current = true;
|
|
52
|
+
setLocalSearch(value);
|
|
53
|
+
if (searchTimerRef.current)
|
|
54
|
+
clearTimeout(searchTimerRef.current);
|
|
55
|
+
searchTimerRef.current = setTimeout(() => {
|
|
56
|
+
setSearch(value.trim());
|
|
57
|
+
searchTimerRef.current = null;
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
isLocallyUpdating.current = false;
|
|
60
|
+
}, 100);
|
|
61
|
+
}, 500);
|
|
62
|
+
};
|
|
63
|
+
// Date filter state
|
|
64
|
+
const parseDateFromUrl = (dateStr) => {
|
|
65
|
+
if (!dateStr)
|
|
66
|
+
return undefined;
|
|
67
|
+
const date = new Date(dateStr);
|
|
68
|
+
return isNaN(date.getTime()) ? undefined : date;
|
|
69
|
+
};
|
|
70
|
+
const [dates, setDates] = useState({
|
|
71
|
+
from: parseDateFromUrl(dateRange.from),
|
|
72
|
+
to: parseDateFromUrl(dateRange.to),
|
|
73
|
+
});
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
setDates({
|
|
76
|
+
from: parseDateFromUrl(dateRange.from),
|
|
77
|
+
to: parseDateFromUrl(dateRange.to),
|
|
78
|
+
});
|
|
79
|
+
}, [dateRange.from, dateRange.to]);
|
|
80
|
+
const datesModified = !!dateRange.from || !!dateRange.to;
|
|
81
|
+
const tableFiltered = table.getState().columnFilters.length > 0;
|
|
82
|
+
const isFiltered = tableFiltered || !!localSearch || datesModified;
|
|
83
|
+
const handleResetFilters = () => {
|
|
84
|
+
table.resetColumnFilters();
|
|
85
|
+
if (searchTimerRef.current) {
|
|
86
|
+
clearTimeout(searchTimerRef.current);
|
|
87
|
+
searchTimerRef.current = null;
|
|
88
|
+
}
|
|
89
|
+
isLocallyUpdating.current = false;
|
|
90
|
+
setLocalSearch("");
|
|
91
|
+
setSearch("");
|
|
92
|
+
setDates({ from: undefined, to: undefined });
|
|
93
|
+
setDateRange({ from: "", to: "" });
|
|
94
|
+
if (config.enableUrlState)
|
|
95
|
+
resetUrlState();
|
|
96
|
+
};
|
|
97
|
+
const allItems = getAllItems();
|
|
98
|
+
return (_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [_jsxs("div", { className: "flex flex-1 flex-wrap items-center gap-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [config.enableSearch && (_jsxs("div", { className: "relative", children: [_jsx(Search, { className: "absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx("input", { placeholder: config.searchPlaceholder || `Search ${entityName}...`, value: localSearch, onChange: handleSearchChange, className: cn("w-[150px] lg:w-[250px] rounded-md border border-input bg-background pl-9 pr-3 text-sm", "placeholder:text-muted-foreground", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", "transition-colors", getInputSizeClass(config.size)) })] })), startToolbarContent, config.enableDateFilter && (_jsx(CalendarDatePicker, { date: {
|
|
99
|
+
from: dates.from,
|
|
100
|
+
to: dates.to,
|
|
101
|
+
}, onDateSelect: (range) => {
|
|
102
|
+
setDates({ from: range.from, to: range.to });
|
|
103
|
+
setDateRange({
|
|
104
|
+
from: range.from.toISOString(),
|
|
105
|
+
to: range.to.toISOString(),
|
|
106
|
+
});
|
|
107
|
+
}, variant: "outline", className: getInputSizeClass(config.size) }))] }), isFiltered && (_jsxs("button", { onClick: handleResetFilters, className: cn(getButtonSizeClass(config.size), "inline-flex items-center justify-center rounded-md text-sm font-medium", "hover:bg-accent hover:text-accent-foreground transition-colors", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", "cursor-pointer"), children: ["Reset", _jsx(X, { className: "ml-2 h-4 w-4" })] }))] }), _jsxs("div", { className: "flex items-center gap-2", children: [customToolbarContent, config.enableExport && (_jsx(DataTableExport, { table: table, data: allItems, selectedCount: totalSelectedItems, getSelectedItems: getSelectedItems, exportConfig: exportConfig, tableConfig: config })), config.enableColumnVisibility && (_jsx(DataTableViewOptions, { table: table, columnMapping: columnMapping, size: config.size })), _jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { className: cn(getButtonSizeClass(config.size, true), "inline-flex items-center justify-center rounded-md border border-input bg-background", "hover:bg-accent hover:text-accent-foreground transition-colors", "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", "cursor-pointer"), title: "Table Settings", children: [_jsx(Settings, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: "Open table settings" })] }) }), _jsx(PopoverContent, { className: "w-60", align: "end", children: _jsxs("div", { className: "grid gap-4", children: [_jsx("div", { className: "space-y-2", children: _jsx("h4", { className: "font-medium leading-none", children: "Table Settings" }) }), _jsxs("div", { className: "grid gap-2", children: [config.enableColumnResizing && resetColumnSizing && (_jsxs("button", { className: cn("inline-flex items-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", "border border-input bg-background hover:bg-accent hover:text-accent-foreground", getButtonSizeClass(config.size), "justify-start w-full"), onClick: (e) => {
|
|
108
|
+
e.preventDefault();
|
|
109
|
+
resetColumnSizing();
|
|
110
|
+
}, children: [_jsx(Undo2, { className: "mr-2 h-4 w-4" }), "Reset Column Sizes"] })), resetColumnOrder && (_jsxs("button", { className: cn("inline-flex items-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", "border border-input bg-background hover:bg-accent hover:text-accent-foreground", getButtonSizeClass(config.size), "justify-start w-full"), onClick: (e) => {
|
|
111
|
+
e.preventDefault();
|
|
112
|
+
resetColumnOrder();
|
|
113
|
+
}, children: [_jsx(MoveHorizontal, { className: "mr-2 h-4 w-4" }), "Reset Column Order"] })), config.enableRowSelection && (_jsxs("button", { className: cn("inline-flex items-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", "border border-input bg-background hover:bg-accent hover:text-accent-foreground", getButtonSizeClass(config.size), "justify-start w-full"), onClick: (e) => {
|
|
114
|
+
e.preventDefault();
|
|
115
|
+
table.resetRowSelection();
|
|
116
|
+
clearSelection();
|
|
117
|
+
}, children: [_jsx(CheckSquare, { className: "mr-2 h-4 w-4" }), "Clear Selection"] })), !table.getIsAllColumnsVisible() && (_jsxs("button", { className: cn("inline-flex items-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", "border border-input bg-background hover:bg-accent hover:text-accent-foreground", getButtonSizeClass(config.size), "justify-start w-full"), onClick: () => table.resetColumnVisibility(), children: [_jsx(EyeOff, { className: "mr-2 h-4 w-4" }), "Show All Columns"] }))] })] }) })] })] })] }));
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../src/toolbar.tsx"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import type { ColumnDef } from "@tanstack/react-table";
|
|
2
|
+
export interface TableConfig {
|
|
3
|
+
/** Enable/disable row selection checkboxes */
|
|
4
|
+
enableRowSelection: boolean;
|
|
5
|
+
/** Enable/disable keyboard navigation (arrow keys) */
|
|
6
|
+
enableKeyboardNavigation: boolean;
|
|
7
|
+
/** Enable/disable clicking a row to select it */
|
|
8
|
+
enableClickRowSelect: boolean;
|
|
9
|
+
/** Enable/disable pagination controls */
|
|
10
|
+
enablePagination: boolean;
|
|
11
|
+
/** Enable/disable search input */
|
|
12
|
+
enableSearch: boolean;
|
|
13
|
+
/** Enable/disable date range filter */
|
|
14
|
+
enableDateFilter: boolean;
|
|
15
|
+
/** Enable/disable column visibility toggle */
|
|
16
|
+
enableColumnVisibility: boolean;
|
|
17
|
+
/** Enable/disable export dropdown */
|
|
18
|
+
enableExport: boolean;
|
|
19
|
+
/** Enable/disable URL state persistence */
|
|
20
|
+
enableUrlState: boolean;
|
|
21
|
+
/** Enable/disable column resizing */
|
|
22
|
+
enableColumnResizing: boolean;
|
|
23
|
+
/** Enable/disable toolbar */
|
|
24
|
+
enableToolbar: boolean;
|
|
25
|
+
/** Size variant for buttons/inputs: 'sm' | 'default' | 'lg' */
|
|
26
|
+
size: "sm" | "default" | "lg";
|
|
27
|
+
/** Unique ID for storing column sizing in localStorage */
|
|
28
|
+
columnResizingTableId?: string;
|
|
29
|
+
/** Custom placeholder text for search input */
|
|
30
|
+
searchPlaceholder?: string;
|
|
31
|
+
/** Default sort column (should match column accessorKey) */
|
|
32
|
+
defaultSortBy?: string;
|
|
33
|
+
/** Default sort direction */
|
|
34
|
+
defaultSortOrder?: "asc" | "desc";
|
|
35
|
+
/** Default page size */
|
|
36
|
+
defaultPageSize?: number;
|
|
37
|
+
/** Page size options for the selector */
|
|
38
|
+
pageSizeOptions?: number[];
|
|
39
|
+
/** Allow exporting new columns created by transform function */
|
|
40
|
+
allowExportNewColumns: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface QueryParams {
|
|
43
|
+
page: number;
|
|
44
|
+
pageSize: number;
|
|
45
|
+
search: string;
|
|
46
|
+
sort: string;
|
|
47
|
+
sortOrder: "asc" | "desc";
|
|
48
|
+
filters: Record<string, unknown>;
|
|
49
|
+
dateRange: {
|
|
50
|
+
from: string;
|
|
51
|
+
to: string;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export interface QueryResult<T = Record<string, unknown>> {
|
|
55
|
+
data: T[];
|
|
56
|
+
meta: {
|
|
57
|
+
total: number | null;
|
|
58
|
+
page: number;
|
|
59
|
+
pageSize: number;
|
|
60
|
+
totalPages: number | null;
|
|
61
|
+
countMode?: 'exact' | 'estimated';
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export interface DataAdapter<T = Record<string, unknown>> {
|
|
65
|
+
/** Fetch data given current table params */
|
|
66
|
+
query(params: QueryParams): Promise<QueryResult<T>>;
|
|
67
|
+
/** Fetch items by IDs (for cross-page selection/export) */
|
|
68
|
+
queryByIds?(ids: (string | number)[]): Promise<T[]>;
|
|
69
|
+
/** Fetch table metadata (enables auto-column generation) */
|
|
70
|
+
meta?(): Promise<TableMetadata>;
|
|
71
|
+
/** Export data in a format */
|
|
72
|
+
export?(format: "csv" | "json", params?: Partial<QueryParams>): Promise<string>;
|
|
73
|
+
}
|
|
74
|
+
export interface ColumnMetadata {
|
|
75
|
+
name: string;
|
|
76
|
+
type: string;
|
|
77
|
+
label: string;
|
|
78
|
+
hidden: boolean;
|
|
79
|
+
sortable: boolean;
|
|
80
|
+
filterable: boolean;
|
|
81
|
+
computed?: boolean;
|
|
82
|
+
source?: "base" | "join" | "computed" | "subquery";
|
|
83
|
+
joinTable?: string;
|
|
84
|
+
format?: string;
|
|
85
|
+
align?: string;
|
|
86
|
+
width?: number;
|
|
87
|
+
minWidth?: number;
|
|
88
|
+
maxWidth?: number;
|
|
89
|
+
options?: {
|
|
90
|
+
value: string | number | boolean;
|
|
91
|
+
label: string;
|
|
92
|
+
color?: string;
|
|
93
|
+
}[];
|
|
94
|
+
datePresets?: string[];
|
|
95
|
+
operators: string[];
|
|
96
|
+
}
|
|
97
|
+
export interface FilterMetadata {
|
|
98
|
+
field: string;
|
|
99
|
+
type: string;
|
|
100
|
+
label: string;
|
|
101
|
+
operators: string[];
|
|
102
|
+
options?: {
|
|
103
|
+
value: string | number | boolean;
|
|
104
|
+
label: string;
|
|
105
|
+
color?: string;
|
|
106
|
+
}[];
|
|
107
|
+
datePresets?: string[];
|
|
108
|
+
}
|
|
109
|
+
export interface AggregationMetadata {
|
|
110
|
+
alias: string;
|
|
111
|
+
type: "count" | "sum" | "avg" | "min" | "max";
|
|
112
|
+
field: string;
|
|
113
|
+
}
|
|
114
|
+
export interface IncludeMetadata {
|
|
115
|
+
as: string;
|
|
116
|
+
table: string;
|
|
117
|
+
columns?: string[];
|
|
118
|
+
nested?: IncludeMetadata[];
|
|
119
|
+
}
|
|
120
|
+
export interface TableMetadata {
|
|
121
|
+
name: string;
|
|
122
|
+
dateRangeColumn?: string | null;
|
|
123
|
+
dateColumns?: string[];
|
|
124
|
+
columns: ColumnMetadata[];
|
|
125
|
+
capabilities: {
|
|
126
|
+
search: boolean;
|
|
127
|
+
searchFields: string[];
|
|
128
|
+
export: boolean;
|
|
129
|
+
exportFormats: string[];
|
|
130
|
+
pagination: {
|
|
131
|
+
enabled: boolean;
|
|
132
|
+
defaultPageSize: number;
|
|
133
|
+
maxPageSize: number;
|
|
134
|
+
cursor: boolean;
|
|
135
|
+
};
|
|
136
|
+
sort: {
|
|
137
|
+
enabled: boolean;
|
|
138
|
+
defaultSort: {
|
|
139
|
+
field: string;
|
|
140
|
+
order: string;
|
|
141
|
+
}[];
|
|
142
|
+
};
|
|
143
|
+
groupBy: boolean;
|
|
144
|
+
groupByFields: string[];
|
|
145
|
+
recursive: boolean;
|
|
146
|
+
};
|
|
147
|
+
filters: FilterMetadata[];
|
|
148
|
+
aggregations: AggregationMetadata[];
|
|
149
|
+
includes: IncludeMetadata[];
|
|
150
|
+
staticFilters: string[];
|
|
151
|
+
}
|
|
152
|
+
export interface CellRendererProps<T = unknown> {
|
|
153
|
+
value: T;
|
|
154
|
+
row: Record<string, unknown>;
|
|
155
|
+
column: ColumnMetadataForRenderer;
|
|
156
|
+
}
|
|
157
|
+
export type CellRenderer<T = unknown> = React.ComponentType<CellRendererProps<T>>;
|
|
158
|
+
export interface ColumnMetadataForRenderer {
|
|
159
|
+
name: string;
|
|
160
|
+
type: string;
|
|
161
|
+
format?: string;
|
|
162
|
+
align?: string;
|
|
163
|
+
options?: {
|
|
164
|
+
value: string | number | boolean;
|
|
165
|
+
label: string;
|
|
166
|
+
color?: string;
|
|
167
|
+
}[];
|
|
168
|
+
}
|
|
169
|
+
export type DataTransformFunction<T> = (row: T) => Record<string, unknown>;
|
|
170
|
+
export interface ExportConfig<T = Record<string, unknown>> {
|
|
171
|
+
entityName: string;
|
|
172
|
+
columnMapping?: Record<string, string>;
|
|
173
|
+
columnWidths?: Array<{
|
|
174
|
+
wch: number;
|
|
175
|
+
}>;
|
|
176
|
+
headers?: string[];
|
|
177
|
+
transformFunction?: DataTransformFunction<T>;
|
|
178
|
+
enableCsv?: boolean;
|
|
179
|
+
enableExcel?: boolean;
|
|
180
|
+
}
|
|
181
|
+
export interface DataTableProps<T extends Record<string, unknown>> {
|
|
182
|
+
/** Data adapter — the bridge to your backend */
|
|
183
|
+
adapter: DataAdapter<T>;
|
|
184
|
+
/** Manual column definitions (skip auto-generation from metadata) */
|
|
185
|
+
columns?: ColumnDef<T, unknown>[];
|
|
186
|
+
/** Cell renderer overrides: columnType or columnName → Component */
|
|
187
|
+
renderers?: Record<string, CellRenderer>;
|
|
188
|
+
/** Table configuration overrides */
|
|
189
|
+
config?: Partial<TableConfig>;
|
|
190
|
+
/** Export configuration */
|
|
191
|
+
exportConfig?: ExportConfig<T>;
|
|
192
|
+
/** ID field for row tracking (default: 'id') */
|
|
193
|
+
idField?: keyof T;
|
|
194
|
+
/** Row click handler */
|
|
195
|
+
onRowClick?: (row: T, index: number) => void;
|
|
196
|
+
/** Custom toolbar content (rendered at the start of the toolbar) */
|
|
197
|
+
startToolbarContent?: React.ReactNode | ((ctx: ToolbarContext<T>) => React.ReactNode);
|
|
198
|
+
/** Custom toolbar content (rendered after built-in controls) */
|
|
199
|
+
toolbarContent?: React.ReactNode;
|
|
200
|
+
/** Render custom toolbar with selection context */
|
|
201
|
+
renderToolbar?: (ctx: ToolbarContext<T>) => React.ReactNode;
|
|
202
|
+
/** className for outer wrapper */
|
|
203
|
+
className?: string;
|
|
204
|
+
/** Custom page size options */
|
|
205
|
+
pageSizeOptions?: number[];
|
|
206
|
+
}
|
|
207
|
+
export interface ToolbarContext<T> {
|
|
208
|
+
selectedRows: T[];
|
|
209
|
+
selectedIds: string[];
|
|
210
|
+
totalSelected: number;
|
|
211
|
+
clearSelection: () => void;
|
|
212
|
+
search: string;
|
|
213
|
+
setSearch: (value: string | ((prev: string) => string)) => void;
|
|
214
|
+
dateRange: {
|
|
215
|
+
from: string;
|
|
216
|
+
to: string;
|
|
217
|
+
};
|
|
218
|
+
setDateRange: (value: {
|
|
219
|
+
from: string;
|
|
220
|
+
to: string;
|
|
221
|
+
} | ((prev: {
|
|
222
|
+
from: string;
|
|
223
|
+
to: string;
|
|
224
|
+
}) => {
|
|
225
|
+
from: string;
|
|
226
|
+
to: string;
|
|
227
|
+
})) => void;
|
|
228
|
+
}
|
|
229
|
+
export type ExportableData = Record<string, string | number | boolean | null | undefined>;
|
|
230
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMvD,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sDAAsD;IACtD,wBAAwB,EAAE,OAAO,CAAC;IAClC,iDAAiD;IACjD,oBAAoB,EAAE,OAAO,CAAC;IAC9B,yCAAyC;IACzC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kCAAkC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8CAA8C;IAC9C,sBAAsB,EAAE,OAAO,CAAC;IAChC,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;IACtB,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAC;IACxB,qCAAqC;IACrC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,6BAA6B;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,+DAA+D;IAC/D,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9B,0DAA0D;IAC1D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAClC,wBAAwB;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gEAAgE;IAChE,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAMD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;KACnC,CAAC;CACH;AAMD,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,4CAA4C;IAC5C,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,2DAA2D;IAC3D,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,4DAA4D;IAC5D,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,8BAA8B;IAC9B,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjF;AAMD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,YAAY,EAAE;QACZ,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,UAAU,EAAE;YACV,OAAO,EAAE,OAAO,CAAC;YACjB,eAAe,EAAE,MAAM,CAAC;YACxB,WAAW,EAAE,MAAM,CAAC;YACpB,MAAM,EAAE,OAAO,CAAC;SACjB,CAAC;QACF,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,CAAC;YACjB,WAAW,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;SACjD,CAAC;QACF,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAMD,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,KAAK,EAAE,CAAC,CAAC;IACT,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAElF,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjF;AAMD,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3E,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAMD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,gDAAgD;IAChD,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,qEAAqE;IACrE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;IAClC,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,2BAA2B;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAClB,wBAAwB;IACxB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACtF,gEAAgE;IAChE,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,mDAAmD;IACnD,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5D,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,YAAY,EAAE,CAAC,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC;IAChE,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,YAAY,EAAE,CACZ,KAAK,EACD;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAC5B,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,KACvE,IAAI,CAAC;CACX;AAMD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../src/utils/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
|
package/dist/utils/cn.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.js","sourceRoot":"","sources":["../../src/utils/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ColumnDef } from "@tanstack/react-table";
|
|
2
|
+
/**
|
|
3
|
+
* Extract default column sizes from column definitions.
|
|
4
|
+
*/
|
|
5
|
+
export declare function extractDefaultColumnSizes<TData>(columns: ColumnDef<TData, unknown>[]): Record<string, number>;
|
|
6
|
+
/**
|
|
7
|
+
* Initialize column sizes from localStorage or defaults.
|
|
8
|
+
*/
|
|
9
|
+
export declare function initializeColumnSizes<TData>(columns: ColumnDef<TData, unknown>[], tableId: string, setColumnSizing: (sizes: Record<string, number>) => void): void;
|
|
10
|
+
/**
|
|
11
|
+
* Track column resizing state in document body for styling purposes.
|
|
12
|
+
*/
|
|
13
|
+
export declare function trackColumnResizing(isResizing: boolean, attribute?: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Clean up column resizing tracking when component unmounts.
|
|
16
|
+
*/
|
|
17
|
+
export declare function cleanupColumnResizing(attribute?: string): void;
|
|
18
|
+
//# sourceMappingURL=column-sizing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-sizing.d.ts","sourceRoot":"","sources":["../../src/utils/column-sizing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAwBvD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAC7C,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AASD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EACzC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EACpC,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,GACvD,IAAI,CAqBN;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,OAAO,EACnB,SAAS,SAAkB,GAC1B,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,SAAkB,GAAG,IAAI,CAEvE"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
function hasIdAndSize(column) {
|
|
2
|
+
return ("id" in column &&
|
|
3
|
+
typeof column.id === "string" &&
|
|
4
|
+
"size" in column &&
|
|
5
|
+
typeof column.size === "number");
|
|
6
|
+
}
|
|
7
|
+
function hasAccessorKeyAndSize(column) {
|
|
8
|
+
return ("accessorKey" in column &&
|
|
9
|
+
typeof column.accessorKey === "string" &&
|
|
10
|
+
"size" in column &&
|
|
11
|
+
typeof column.size === "number");
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Extract default column sizes from column definitions.
|
|
15
|
+
*/
|
|
16
|
+
export function extractDefaultColumnSizes(columns) {
|
|
17
|
+
const defaultSizing = {};
|
|
18
|
+
columns.forEach((column) => {
|
|
19
|
+
if (hasIdAndSize(column)) {
|
|
20
|
+
defaultSizing[column.id] = column.size;
|
|
21
|
+
}
|
|
22
|
+
else if (hasAccessorKeyAndSize(column)) {
|
|
23
|
+
defaultSizing[column.accessorKey] = column.size;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return defaultSizing;
|
|
27
|
+
}
|
|
28
|
+
function isValidColumnSizing(value) {
|
|
29
|
+
if (!value || typeof value !== "object")
|
|
30
|
+
return false;
|
|
31
|
+
return Object.values(value).every((size) => typeof size === "number" && !Number.isNaN(size) && size > 0);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Initialize column sizes from localStorage or defaults.
|
|
35
|
+
*/
|
|
36
|
+
export function initializeColumnSizes(columns, tableId, setColumnSizing) {
|
|
37
|
+
if (columns.length === 0)
|
|
38
|
+
return;
|
|
39
|
+
const defaultSizing = extractDefaultColumnSizes(columns);
|
|
40
|
+
if (Object.keys(defaultSizing).length === 0)
|
|
41
|
+
return;
|
|
42
|
+
try {
|
|
43
|
+
const savedSizing = localStorage.getItem(`table-column-sizing-${tableId}`);
|
|
44
|
+
if (!savedSizing) {
|
|
45
|
+
setColumnSizing(defaultSizing);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const parsedSizing = JSON.parse(savedSizing);
|
|
49
|
+
if (isValidColumnSizing(parsedSizing)) {
|
|
50
|
+
setColumnSizing(parsedSizing);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
setColumnSizing(defaultSizing);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
setColumnSizing(defaultSizing);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Track column resizing state in document body for styling purposes.
|
|
63
|
+
*/
|
|
64
|
+
export function trackColumnResizing(isResizing, attribute = "data-resizing") {
|
|
65
|
+
if (isResizing) {
|
|
66
|
+
document.body.setAttribute(attribute, "true");
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
document.body.removeAttribute(attribute);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Clean up column resizing tracking when component unmounts.
|
|
74
|
+
*/
|
|
75
|
+
export function cleanupColumnResizing(attribute = "data-resizing") {
|
|
76
|
+
document.body.removeAttribute(attribute);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=column-sizing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-sizing.js","sourceRoot":"","sources":["../../src/utils/column-sizing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format date to YYYY-MM-DD using local date components.
|
|
3
|
+
*/
|
|
4
|
+
export declare function formatDate(date: Date): string;
|
|
5
|
+
/**
|
|
6
|
+
* Validate a YYYY-MM-DD date string.
|
|
7
|
+
*/
|
|
8
|
+
export declare function validateDateString(dateString: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Parse a YYYY-MM-DD string to a Date object.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseDateFromUrl(dateString: string): Date | undefined;
|
|
13
|
+
//# sourceMappingURL=date-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-format.d.ts","sourceRoot":"","sources":["../../src/utils/date-format.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAK7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAM9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAGrE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format date to YYYY-MM-DD using local date components.
|
|
3
|
+
*/
|
|
4
|
+
export function formatDate(date) {
|
|
5
|
+
const year = date.getFullYear();
|
|
6
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
7
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
8
|
+
return `${year}-${month}-${day}`;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Validate a YYYY-MM-DD date string.
|
|
12
|
+
*/
|
|
13
|
+
export function validateDateString(dateString) {
|
|
14
|
+
if (!dateString)
|
|
15
|
+
return false;
|
|
16
|
+
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
|
|
17
|
+
if (!dateRegex.test(dateString))
|
|
18
|
+
return false;
|
|
19
|
+
const date = new Date(dateString);
|
|
20
|
+
return !Number.isNaN(date.getTime());
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parse a YYYY-MM-DD string to a Date object.
|
|
24
|
+
*/
|
|
25
|
+
export function parseDateFromUrl(dateString) {
|
|
26
|
+
if (!validateDateString(dateString))
|
|
27
|
+
return undefined;
|
|
28
|
+
return new Date(dateString);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=date-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-format.js","sourceRoot":"","sources":["../../src/utils/date-format.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,SAAS,GAAG,qBAAqB,CAAC;IACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type Comparable = string | number | boolean | object | null | undefined | Date | RegExp | Set<unknown> | Map<unknown, unknown>;
|
|
2
|
+
/**
|
|
3
|
+
* Optimized deep equality check for objects and arrays.
|
|
4
|
+
*/
|
|
5
|
+
export declare function isDeepEqual(a: Comparable, b: Comparable): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a debounced function that delays invoking func until after wait ms.
|
|
8
|
+
*/
|
|
9
|
+
export declare function debounce<T extends (...args: unknown[]) => unknown>(func: T, wait: number): (...args: Parameters<T>) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Reset URL parameters by removing all query parameters.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resetUrlState(pathname?: string): void;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=deep-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-utils.d.ts","sourceRoot":"","sources":["../../src/utils/deep-utils.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/H;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CA4EjE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,MAAM,GACX,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAWlC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAUrD"}
|