@schemavaults/ui 0.67.0 → 0.69.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/layout/dashboard-layout/DashboardLayoutProps.d.ts +9 -0
- package/dist/components/layout/dashboard-layout/dashboard-layout-main-content-container.d.ts +8 -1
- package/dist/components/layout/dashboard-layout/dashboard-layout-main-content-container.js +7 -2
- package/dist/components/layout/dashboard-layout/dashboard-layout-main-content-container.js.map +1 -1
- package/dist/components/layout/dashboard-layout/dashboard-layout.d.ts +1 -1
- package/dist/components/layout/dashboard-layout/dashboard-layout.js +6 -2
- package/dist/components/layout/dashboard-layout/dashboard-layout.js.map +1 -1
- package/dist/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar.js +2 -2
- package/dist/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar.js.map +1 -1
- package/dist/components/ui/datatable/datatable.d.ts +33 -3
- package/dist/components/ui/datatable/datatable.js +42 -6
- package/dist/components/ui/datatable/datatable.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,4 +20,13 @@ export interface DashboardLayoutProps extends PropsWithChildren {
|
|
|
20
20
|
* changes. Pass the hook itself, not its return value.
|
|
21
21
|
*/
|
|
22
22
|
usePathname?: () => string;
|
|
23
|
+
/**
|
|
24
|
+
* When `true`, the dashboard "chrome" (the left sidebar and the top header
|
|
25
|
+
* bar) is hidden from printed output via `@media print`, so the system print
|
|
26
|
+
* dialog renders only the main page content. The on-screen layout is
|
|
27
|
+
* unaffected. The main content area also expands to the full page width when
|
|
28
|
+
* printing so it is not offset by the now-hidden sidebar. Defaults to
|
|
29
|
+
* `false`, preserving the previous print behaviour.
|
|
30
|
+
*/
|
|
31
|
+
printHidden?: boolean;
|
|
23
32
|
}
|
package/dist/components/layout/dashboard-layout/dashboard-layout-main-content-container.d.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import type { PropsWithChildren, ReactElement } from "react";
|
|
2
2
|
export interface DashboardLayoutMainContentContainerProps extends PropsWithChildren {
|
|
3
|
+
/**
|
|
4
|
+
* When `true`, the content area drops its sidebar-aware absolute positioning
|
|
5
|
+
* under `@media print` and fills the full page width. This pairs with the
|
|
6
|
+
* sidebar/header being hidden for print so the printed content is not offset
|
|
7
|
+
* by, or clipped to, the now-hidden chrome.
|
|
8
|
+
*/
|
|
9
|
+
printHidden?: boolean;
|
|
3
10
|
}
|
|
4
|
-
export declare function DashboardLayoutMainContentContainer({ children, }: DashboardLayoutMainContentContainerProps): ReactElement;
|
|
11
|
+
export declare function DashboardLayoutMainContentContainer({ children, printHidden, }: DashboardLayoutMainContentContainerProps): ReactElement;
|
|
5
12
|
export default DashboardLayoutMainContentContainer;
|
|
@@ -2,14 +2,19 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useDashboardSidebarSizing, useDashboardSidebarOpenState, } from "./dashboard-sidebar";
|
|
4
4
|
import { cn } from "../../../lib/utils";
|
|
5
|
-
export function DashboardLayoutMainContentContainer({ children, }) {
|
|
5
|
+
export function DashboardLayoutMainContentContainer({ children, printHidden = false, }) {
|
|
6
6
|
const openState = useDashboardSidebarOpenState();
|
|
7
7
|
const size = useDashboardSidebarSizing();
|
|
8
8
|
return (_jsx("div", { id: "dashboard-layout-main-content-container", className: cn("absolute", "h-full grow", "flex flex-col flex-nowrap justify-start items-stretch", "overflow-x-hidden overflow-y-scroll", "overscroll-none", "no-scrollbar", "max-md:w-full", "transition-[width,left] ease-linear will-change-[width]", openState.open
|
|
9
9
|
? size.content_container_desktop_sidebar_open_width_classname
|
|
10
10
|
: size.content_container_desktop_sidebar_closed_width_classname, "max-md:left-0", openState.open
|
|
11
11
|
? size.content_container_desktop_sidebar_open_left_classname
|
|
12
|
-
: size.content_container_desktop_sidebar_closed_left_classname
|
|
12
|
+
: size.content_container_desktop_sidebar_closed_left_classname,
|
|
13
|
+
// For print, expand to the full page (the sidebar/header are hidden)
|
|
14
|
+
// and allow content to flow across pages instead of scrolling within a
|
|
15
|
+
// viewport-height box.
|
|
16
|
+
printHidden &&
|
|
17
|
+
"print:static print:left-0 print:h-auto print:w-full print:overflow-visible"), children: children }));
|
|
13
18
|
}
|
|
14
19
|
export default DashboardLayoutMainContentContainer;
|
|
15
20
|
//# sourceMappingURL=dashboard-layout-main-content-container.js.map
|
package/dist/components/layout/dashboard-layout/dashboard-layout-main-content-container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-layout-main-content-container.js","sourceRoot":"","sources":["../../../../src/components/layout/dashboard-layout/dashboard-layout-main-content-container.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard-layout-main-content-container.js","sourceRoot":"","sources":["../../../../src/components/layout/dashboard-layout/dashboard-layout-main-content-container.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAajC,MAAM,UAAU,mCAAmC,CAAC,EAClD,QAAQ,EACR,WAAW,GAAG,KAAK,GACsB;IACzC,MAAM,SAAS,GAAG,4BAA4B,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;IAEzC,OAAO,CACL,cACE,EAAE,EAAC,yCAAyC,EAC5C,SAAS,EAAE,EAAE,CACX,UAAU,EACV,aAAa,EACb,uDAAuD,EACvD,qCAAqC,EACrC,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,yDAAyD,EACzD,SAAS,CAAC,IAAI;YACZ,CAAC,CAAC,IAAI,CAAC,sDAAsD;YAC7D,CAAC,CAAC,IAAI,CAAC,wDAAwD,EACjE,eAAe,EACf,SAAS,CAAC,IAAI;YACZ,CAAC,CAAC,IAAI,CAAC,qDAAqD;YAC5D,CAAC,CAAC,IAAI,CAAC,uDAAuD;QAChE,qEAAqE;QACrE,uEAAuE;QACvE,uBAAuB;QACvB,WAAW;YACT,4EAA4E,CAC/E,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,eAAe,mCAAmC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactElement } from "react";
|
|
2
2
|
import type { DashboardLayoutProps } from "./DashboardLayoutProps";
|
|
3
3
|
export type { DashboardLayoutProps };
|
|
4
|
-
export declare function DashboardLayout({ children, wordmark, logo, Link, brandHref, topBarTitle, usePathname, ...props }: DashboardLayoutProps): ReactElement;
|
|
4
|
+
export declare function DashboardLayout({ children, wordmark, logo, Link, brandHref, topBarTitle, usePathname, printHidden, ...props }: DashboardLayoutProps): ReactElement;
|
|
5
5
|
export default DashboardLayout;
|
|
@@ -18,7 +18,7 @@ function AutoCloseSidebarOnNavigation({ usePathname, }) {
|
|
|
18
18
|
useCloseDashboardSidebarOnRouteChange(usePathname);
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
21
|
-
export function DashboardLayout({ children, wordmark, logo, Link, brandHref, topBarTitle, usePathname, ...props }) {
|
|
21
|
+
export function DashboardLayout({ children, wordmark, logo, Link, brandHref, topBarTitle, usePathname, printHidden = false, ...props }) {
|
|
22
22
|
const size = useDashboardSidebarSizing();
|
|
23
23
|
function HeaderBarPageIdentifierComponent() {
|
|
24
24
|
if (typeof topBarTitle === "string") {
|
|
@@ -30,7 +30,11 @@ export function DashboardLayout({ children, wordmark, logo, Link, brandHref, top
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
const TopBarButtonsComponent = props.topBarButtons;
|
|
33
|
-
return (_jsxs(DashboardSidebarContextProvider, { sidebarItems: props.sidebarItems, sizing: props.sizing, onOpenSidebar: props.onOpenSidebar, onCloseSidebar: props.onCloseSidebar, children: [typeof usePathname === "function" && (_jsx(AutoCloseSidebarOnNavigation, { usePathname: usePathname })), _jsxs("div", { id: "dashboard-layout-container", className: "w-full h-dvh min-h-dvh",
|
|
33
|
+
return (_jsxs(DashboardSidebarContextProvider, { sidebarItems: props.sidebarItems, sizing: props.sizing, onOpenSidebar: props.onOpenSidebar, onCloseSidebar: props.onCloseSidebar, children: [typeof usePathname === "function" && (_jsx(AutoCloseSidebarOnNavigation, { usePathname: usePathname })), _jsxs("div", { id: "dashboard-layout-container", className: cn("w-full h-dvh min-h-dvh",
|
|
34
|
+
// When hiding chrome for print, let the container grow to fit all
|
|
35
|
+
// page content across printed pages instead of clamping to the
|
|
36
|
+
// on-screen viewport height.
|
|
37
|
+
printHidden && "print:h-auto print:min-h-0"), children: [_jsx(DashboardSidebar, { wordmark: wordmark, Link: Link, brandHref: brandHref, logo: logo, sidebarFooterContent: props.sidebarFooterContent, className: cn(printHidden && "print:hidden") }), _jsxs(DashboardLayoutMainContentContainer, { printHidden: printHidden, children: [_jsx("header", { id: "dashboard-layout-main-content-header", className: cn("sticky top-0", "flex shrink-0 items-center gap-2", "transition-[width,height] ease-linear", "bg-background", "border-b border-border", size.sidebar_and_header_z_index_classname, printHidden && "print:hidden"), style: {
|
|
34
38
|
height: size.header_height,
|
|
35
39
|
}, children: _jsxs("div", { className: "flex flex-row justify-between items-center gap-2 px-4 w-full", children: [_jsx(DashboardLayoutSidebarTrigger, {}), _jsx(Separator, { orientation: "vertical", className: "mr-2 data-[orientation=vertical]:h-4" }), _jsx(HeaderBarPageIdentifierComponent, {}), _jsx("div", { role: "none", className: "grow" }), typeof TopBarButtonsComponent === "function" && (_jsx(TopBarButtonsComponent, { useDashboardSidebarSizing: useDashboardSidebarSizing, useDashboardSidebarOpenState: useDashboardSidebarOpenState, Link: Link }))] }) }), children] })] })] }));
|
|
36
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-layout.js","sourceRoot":"","sources":["../../../../src/components/layout/dashboard-layout/dashboard-layout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,gBAAgB,EAAE,EACvB,6BAA6B,EAC7B,+BAA+B,EAC/B,qCAAqC,EACrC,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,mCAAmC,MAAM,2CAA2C,CAAC;AAE5F,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAIjC;;;;;GAKG;AACH,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,0DAA0D;AAC1D,SAAS,4BAA4B,CAAC,EACpC,WAAW,GAGZ;IACC,qCAAqC,CAAC,WAAW,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,WAAW,EACX,WAAW,EACX,GAAG,KAAK,EACa;IACrB,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;IAEzC,SAAS,gCAAgC;QACvC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,aAAI,SAAS,EAAC,mBAAmB,YAAE,WAAW,GAAM,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,MAAM,2BAA2B,GAAG,WAAW,CAAC;YAChD,OAAO,CACL,KAAC,2BAA2B,IAC1B,yBAAyB,EAAE,yBAAyB,EACpD,4BAA4B,EAAE,4BAA4B,EAC1D,IAAI,EAAE,IAAI,GACV,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,sBAAsB,GAEZ,KAAK,CAAC,aAAa,CAAC;IAEpC,OAAO,CACL,MAAC,+BAA+B,IAC9B,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,cAAc,EAAE,KAAK,CAAC,cAAc,aAEnC,OAAO,WAAW,KAAK,UAAU,IAAI,CACpC,KAAC,4BAA4B,IAAC,WAAW,EAAE,WAAW,GAAI,CAC3D,EACD,
|
|
1
|
+
{"version":3,"file":"dashboard-layout.js","sourceRoot":"","sources":["../../../../src/components/layout/dashboard-layout/dashboard-layout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,12 +15,12 @@ export function DashboardSidebar(props) {
|
|
|
15
15
|
if (openState.mobile) {
|
|
16
16
|
return (_jsx(Sheet, { open: openState.open, onOpenChange: (newOpenState) => {
|
|
17
17
|
setOpen(newOpenState);
|
|
18
|
-
}, children: _jsxs(SheetContent, { side: "left", className: cn(size.mobile_expanded_width_classname), style: {
|
|
18
|
+
}, children: _jsxs(SheetContent, { side: "left", className: cn(size.mobile_expanded_width_classname, props.className), style: {
|
|
19
19
|
zIndex: 1000,
|
|
20
20
|
}, children: [_jsx(VisuallyHidden, { children: _jsxs(SheetHeader, { children: [_jsx(SheetTitle, { children: "Sidebar Mobile Navigation Menu" }), _jsx(SheetDescription, { children: "This sidebar contains links for navigating to other pages within this application." })] }) }), _jsx(DashboardLayoutSidebarLayout, { logo: props.logo, wordmark: props.wordmark, Link: props.Link, brandHref: props.brandHref, sidebarFooterContent: props.sidebarFooterContent })] }) }));
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
|
-
return (_jsx(DashboardLayoutSidebarLayout, { logo: props.logo, wordmark: props.wordmark, Link: props.Link, brandHref: props.brandHref, sidebarFooterContent: props.sidebarFooterContent }));
|
|
23
|
+
return (_jsx(DashboardLayoutSidebarLayout, { logo: props.logo, wordmark: props.wordmark, Link: props.Link, brandHref: props.brandHref, sidebarFooterContent: props.sidebarFooterContent, className: props.className }));
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
export default DashboardSidebar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-sidebar.js","sourceRoot":"","sources":["../../../../../src/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAqB,UAAU,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,wCAAwC,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EACL,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,4BAEN,MAAM,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAE7D,MAAM,UAAU,gBAAgB,CAC9B,KAAwC;IAExC,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,4BAA4B,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,UAAU,CAAC,wCAAwC,CAAC,CAAC;IACrE,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,KAAK,IACJ,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,YAAY,EAAE,CAAC,YAAqB,EAAQ,EAAE;gBAC5C,OAAO,CAAC,YAAY,CAAC,CAAC;YACxB,CAAC,YAED,MAAC,YAAY,IACX,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,
|
|
1
|
+
{"version":3,"file":"dashboard-sidebar.js","sourceRoot":"","sources":["../../../../../src/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAqB,UAAU,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,wCAAwC,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EACL,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,4BAEN,MAAM,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAE7D,MAAM,UAAU,gBAAgB,CAC9B,KAAwC;IAExC,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,4BAA4B,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,UAAU,CAAC,wCAAwC,CAAC,CAAC;IACrE,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,KAAK,IACJ,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,YAAY,EAAE,CAAC,YAAqB,EAAQ,EAAE;gBAC5C,OAAO,CAAC,YAAY,CAAC,CAAC;YACxB,CAAC,YAED,MAAC,YAAY,IACX,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC,SAAS,CAAC,EACpE,KAAK,EAAE;oBACL,MAAM,EAAE,IAAI;iBACb,aAED,KAAC,cAAc,cACb,MAAC,WAAW,eACV,KAAC,UAAU,iDAA4C,EACvD,KAAC,gBAAgB,qGAGE,IACP,GACC,EACjB,KAAC,4BAA4B,IAC3B,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,GAChD,IACW,GACT,CACT,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CACL,KAAC,4BAA4B,IAC3B,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAChD,SAAS,EAAE,KAAK,CAAC,SAAS,GAC1B,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type ColumnDef, type VisibilityState, type Row, type CellContext, type Cell } from "@tanstack/react-table";
|
|
1
|
+
import { type ColumnDef, type VisibilityState, type Row, type CellContext, type Cell, type RowSelectionState } from "@tanstack/react-table";
|
|
2
2
|
import { type ReactElement, type FC } from "react";
|
|
3
|
-
export type { ColumnDef, ColumnDef as DatatableColumnDef, Row as DatatableRow, CellContext as DatatableCellContext, Cell as DatatableCell, };
|
|
3
|
+
export type { ColumnDef, ColumnDef as DatatableColumnDef, Row as DatatableRow, CellContext as DatatableCellContext, Cell as DatatableCell, RowSelectionState, RowSelectionState as DatatableRowSelectionState, };
|
|
4
4
|
export interface DatatableProps<TData extends object, TValue = unknown> {
|
|
5
5
|
data: TData[];
|
|
6
6
|
columns: ColumnDef<TData, TValue>[];
|
|
@@ -27,6 +27,36 @@ export interface DatatableProps<TData extends object, TValue = unknown> {
|
|
|
27
27
|
id: string;
|
|
28
28
|
desc: boolean;
|
|
29
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Renders a leading checkbox column (with a select-all checkbox in the header)
|
|
32
|
+
* so rows can be selected. Selection state is reflected by `row.getIsSelected()`
|
|
33
|
+
* and highlights the row. Defaults to false.
|
|
34
|
+
*
|
|
35
|
+
* Selection can be observed/controlled regardless of this flag via
|
|
36
|
+
* `selected` / `onSelectedChange`; this prop only toggles the built-in
|
|
37
|
+
* checkbox UI. Provide your own column if you want custom selection controls.
|
|
38
|
+
*/
|
|
39
|
+
enableRowSelection?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Controlled row-selection state, keyed by row id (see `getRowId`). When
|
|
42
|
+
* provided, the component becomes controlled and renders exactly this
|
|
43
|
+
* selection. Pair with `onSelectedChange` to update it. Omit for uncontrolled
|
|
44
|
+
* behavior with internally-managed selection.
|
|
45
|
+
*/
|
|
46
|
+
selected?: RowSelectionState;
|
|
47
|
+
/**
|
|
48
|
+
* Called with the next row-selection state whenever the selection changes
|
|
49
|
+
* (e.g. a checkbox is toggled). Receives a fully-resolved `RowSelectionState`
|
|
50
|
+
* — a `Record<rowId, boolean>` — so a `useState` setter can be passed directly.
|
|
51
|
+
*/
|
|
52
|
+
onSelectedChange?: (selected: RowSelectionState) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Resolves the unique id for a row, which becomes the key used in the
|
|
55
|
+
* selection state. Defaults to the row index. Provide this (e.g.
|
|
56
|
+
* `(user) => user.id`) so controlled selection keys map to your own ids
|
|
57
|
+
* and stay stable across sorting, filtering, and pagination.
|
|
58
|
+
*/
|
|
59
|
+
getRowId?: (originalRow: TData, index: number) => string;
|
|
30
60
|
}
|
|
31
|
-
export declare function Datatable<TData extends object, TValue = unknown>({ data, columns, initialVisibleColumns, datatypeLabel, searchColumn, enableGlobalFilter, HeaderButtons, defaultPageSize, pageSizeOptions, sortableColumns, defaultSort, }: DatatableProps<TData, TValue>): ReactElement;
|
|
61
|
+
export declare function Datatable<TData extends object, TValue = unknown>({ data, columns, initialVisibleColumns, datatypeLabel, searchColumn, enableGlobalFilter, HeaderButtons, defaultPageSize, pageSizeOptions, sortableColumns, defaultSort, enableRowSelection, selected, onSelectedChange, getRowId, }: DatatableProps<TData, TValue>): ReactElement;
|
|
32
62
|
export default Datatable;
|
|
@@ -3,20 +3,38 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, } from "@tanstack/react-table";
|
|
4
4
|
import { ArrowDown, ArrowUp, ArrowUpDown, ChevronDown } from "lucide-react";
|
|
5
5
|
import { Button } from "../../ui/button";
|
|
6
|
+
import { Checkbox } from "../../ui/checkbox";
|
|
6
7
|
import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuTrigger, } from "../../ui/dropdown-menu";
|
|
7
8
|
import { Input } from "../../ui/input";
|
|
8
9
|
import { PaginationControls } from "../../ui/pagination";
|
|
9
10
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../../ui/select";
|
|
10
11
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "../../ui/table";
|
|
11
|
-
import { useMemo, useState } from "react";
|
|
12
|
+
import { useCallback, useMemo, useState, } from "react";
|
|
12
13
|
/** Default page size options shown in the rows-per-page selector. */
|
|
13
14
|
const DEFAULT_PAGE_SIZE_OPTIONS = [10, 20, 50, 100];
|
|
14
|
-
|
|
15
|
+
/** Column id for the built-in checkbox selection column. */
|
|
16
|
+
const SELECTION_COLUMN_ID = "__select__";
|
|
17
|
+
export function Datatable({ data, columns, initialVisibleColumns, datatypeLabel, searchColumn, enableGlobalFilter = false, HeaderButtons, defaultPageSize = 10, pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS, sortableColumns, defaultSort, enableRowSelection = false, selected, onSelectedChange, getRowId, }) {
|
|
15
18
|
const [sorting, setSorting] = useState(defaultSort ? [defaultSort] : []);
|
|
16
19
|
const [columnFilters, setColumnFilters] = useState([]);
|
|
17
20
|
const [globalFilter, setGlobalFilter] = useState("");
|
|
18
21
|
const [columnVisibility, setColumnVisibility] = useState(initialVisibleColumns);
|
|
19
|
-
|
|
22
|
+
// Row selection supports both controlled (`selected` provided) and
|
|
23
|
+
// uncontrolled (internal state) usage. When controlled, `selected` is the
|
|
24
|
+
// source of truth; otherwise we manage it locally. Either way,
|
|
25
|
+
// `onSelectedChange` is notified with the fully-resolved next selection.
|
|
26
|
+
const [internalRowSelection, setInternalRowSelection] = useState({});
|
|
27
|
+
const isSelectionControlled = selected !== undefined;
|
|
28
|
+
const rowSelection = selected ?? internalRowSelection;
|
|
29
|
+
const handleRowSelectionChange = useCallback((updaterOrValue) => {
|
|
30
|
+
const nextSelection = typeof updaterOrValue === "function"
|
|
31
|
+
? updaterOrValue(rowSelection)
|
|
32
|
+
: updaterOrValue;
|
|
33
|
+
if (!isSelectionControlled) {
|
|
34
|
+
setInternalRowSelection(nextSelection);
|
|
35
|
+
}
|
|
36
|
+
onSelectedChange?.(nextSelection);
|
|
37
|
+
}, [isSelectionControlled, onSelectedChange, rowSelection]);
|
|
20
38
|
// Determine search mode
|
|
21
39
|
const tanstackGlobalSearchEnabled = enableGlobalFilter || Array.isArray(searchColumn);
|
|
22
40
|
const searchableColumns = Array.isArray(searchColumn)
|
|
@@ -45,9 +63,27 @@ export function Datatable({ data, columns, initialVisibleColumns, datatypeLabel,
|
|
|
45
63
|
enableSorting: colId ? sortableSet.has(colId) : false,
|
|
46
64
|
};
|
|
47
65
|
}), [columns, sortableSet]);
|
|
66
|
+
// Optionally prepend a checkbox column for row selection. The header holds a
|
|
67
|
+
// select-all checkbox (indeterminate when only some page rows are selected)
|
|
68
|
+
// and each cell toggles that row.
|
|
69
|
+
const tableColumns = useMemo(() => {
|
|
70
|
+
if (!enableRowSelection) {
|
|
71
|
+
return columnsWithSorting;
|
|
72
|
+
}
|
|
73
|
+
const selectionColumn = {
|
|
74
|
+
id: SELECTION_COLUMN_ID,
|
|
75
|
+
header: ({ table }) => (_jsx(Checkbox, { checked: table.getIsAllPageRowsSelected() ||
|
|
76
|
+
(table.getIsSomePageRowsSelected() && "indeterminate"), onCheckedChange: (value) => table.toggleAllPageRowsSelected(!!value), "aria-label": "Select all rows on this page" })),
|
|
77
|
+
cell: ({ row }) => (_jsx(Checkbox, { checked: row.getIsSelected(), disabled: !row.getCanSelect(), onCheckedChange: (value) => row.toggleSelected(!!value), "aria-label": "Select row" })),
|
|
78
|
+
enableSorting: false,
|
|
79
|
+
enableHiding: false,
|
|
80
|
+
};
|
|
81
|
+
return [selectionColumn, ...columnsWithSorting];
|
|
82
|
+
}, [enableRowSelection, columnsWithSorting]);
|
|
48
83
|
const table = useReactTable({
|
|
49
84
|
data,
|
|
50
|
-
columns:
|
|
85
|
+
columns: tableColumns,
|
|
86
|
+
...(getRowId && { getRowId }),
|
|
51
87
|
initialState: {
|
|
52
88
|
pagination: {
|
|
53
89
|
pageSize: defaultPageSize,
|
|
@@ -60,7 +96,7 @@ export function Datatable({ data, columns, initialVisibleColumns, datatypeLabel,
|
|
|
60
96
|
getSortedRowModel: getSortedRowModel(),
|
|
61
97
|
getFilteredRowModel: getFilteredRowModel(),
|
|
62
98
|
onColumnVisibilityChange: setColumnVisibility,
|
|
63
|
-
onRowSelectionChange:
|
|
99
|
+
onRowSelectionChange: handleRowSelectionChange,
|
|
64
100
|
...(tanstackGlobalSearchEnabled && {
|
|
65
101
|
globalFilterFn: searchableColumns
|
|
66
102
|
? multiColumnFilterFn
|
|
@@ -98,7 +134,7 @@ export function Datatable({ data, columns, initialVisibleColumns, datatypeLabel,
|
|
|
98
134
|
return (_jsx(DropdownMenuCheckboxItem, { className: "capitalize cursor-pointer", checked: column.getIsVisible(), onCheckedChange: (value) => column.toggleVisibility(!!value), children: column["id"].toUpperCase() }, column.id));
|
|
99
135
|
}) })] })] })] }), _jsx("div", { className: "rounded-md border w-full", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { children: headerGroup.headers.map((header) => {
|
|
100
136
|
return (_jsx(TableHead, { children: header.isPlaceholder ? null : header.column.getCanSort() ? (_jsxs(Button, { variant: "ghost", className: "-ml-4", onClick: () => header.column.toggleSorting(header.column.getIsSorted() === "asc"), children: [flexRender(header.column.columnDef.header, header.getContext()), header.column.getIsSorted() === "asc" ? (_jsx(ArrowUp, { className: "ml-2 h-4 w-4" })) : header.column.getIsSorted() === "desc" ? (_jsx(ArrowDown, { className: "ml-2 h-4 w-4" })) : (_jsx(ArrowUpDown, { className: "ml-2 h-4 w-4" }))] })) : (flexRender(header.column.columnDef.header, header.getContext())) }, header.id));
|
|
101
|
-
}) }, headerGroup.id))) }), _jsx(TableBody, { children: table.getRowModel().rows?.length ? (table.getRowModel().rows.map((row) => (_jsx(TableRow, { "data-state": row.getIsSelected() && "selected", children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id)))) : (_jsx(TableRow, { children: _jsx(TableCell, { colSpan:
|
|
137
|
+
}) }, headerGroup.id))) }), _jsx(TableBody, { children: table.getRowModel().rows?.length ? (table.getRowModel().rows.map((row) => (_jsx(TableRow, { "data-state": row.getIsSelected() && "selected", children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id)))) : (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: table.getVisibleLeafColumns().length, className: "h-24 text-center", children: "No results." }) })) })] }) }), _jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 py-4 w-full", children: [(enableRowSelection || isSelectionControlled) && (_jsxs("div", { className: "text-sm text-muted-foreground", children: [table.getFilteredSelectedRowModel().rows.length, " of", " ", table.getFilteredRowModel().rows.length, " row(s) selected."] })), _jsxs("div", { className: "flex flex-col sm:flex-row items-center gap-4 sm:ml-auto", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-muted-foreground whitespace-nowrap", children: "Rows per page" }), _jsxs(Select, { value: String(table.getState().pagination.pageSize), onValueChange: (value) => {
|
|
102
138
|
table.setPageSize(Number(value));
|
|
103
139
|
}, children: [_jsx(SelectTrigger, { size: "sm", className: "w-[70px]", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: pageSizeOptions.map((size) => (_jsx(SelectItem, { value: String(size), children: size }, size))) })] })] }), _jsx(PaginationControls, { className: "mx-0 w-auto justify-end", size: "sm", variant: "outline", page: table.getState().pagination.pageIndex + 1, totalPages: Math.max(1, table.getPageCount()), onPageChange: (nextPage) => {
|
|
104
140
|
table.setPageIndex(nextPage - 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatable.js","sourceRoot":"","sources":["../../../../src/components/ui/datatable/datatable.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EASL,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,
|
|
1
|
+
{"version":3,"file":"datatable.js","sourceRoot":"","sources":["../../../../src/components/ui/datatable/datatable.tsx"],"names":[],"mappings":"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"}
|