@geovi/the-datagrid 0.0.12 → 0.0.13
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/README.md +195 -40
- package/dist/base.css +1 -1
- package/dist/components.js +23 -23
- package/dist/grid/ReactDataGrid.d.ts.map +1 -1
- package/dist/grid/hooks/useGridColumnApi.d.ts +0 -5
- package/dist/grid/hooks/useGridColumnApi.d.ts.map +1 -1
- package/dist/grid/hooks/useGridToolbarBridge.d.ts +28 -0
- package/dist/grid/hooks/useGridToolbarBridge.d.ts.map +1 -0
- package/dist/grid/internalProps.d.ts +12 -5
- package/dist/grid/internalProps.d.ts.map +1 -1
- package/dist/index.cjs +9 -9
- package/dist/index.css +1 -1
- package/dist/index.js +6061 -5994
- package/dist/optional-target.d.ts +1 -1
- package/dist/optional-target.d.ts.map +1 -1
- package/dist/providers/index.d.ts +2 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/search/RDGSearchTarget.d.ts.map +1 -1
- package/dist/search.js +70 -70
- package/dist/style/theme/amber-dark/index.css +1 -1
- package/dist/style/theme/amber-light/index.css +1 -1
- package/dist/style/theme/blue-dark/index.css +1 -1
- package/dist/style/theme/blue-light/index.css +1 -1
- package/dist/style/theme/default-dark/index.css +1 -1
- package/dist/style/theme/default-light/index.css +1 -1
- package/dist/style/theme/green-dark/index.css +1 -1
- package/dist/style/theme/green-light/index.css +1 -1
- package/dist/style/theme/pink-dark/index.css +1 -1
- package/dist/style/theme/pink-light/index.css +1 -1
- package/dist/toolbar/RDGToolbar.d.ts +88 -0
- package/dist/toolbar/RDGToolbar.d.ts.map +1 -0
- package/dist/toolbar/RDGToolbarProvider.d.ts +6 -0
- package/dist/toolbar/RDGToolbarProvider.d.ts.map +1 -0
- package/dist/toolbar/RDGToolbarTarget.d.ts +7 -0
- package/dist/toolbar/RDGToolbarTarget.d.ts.map +1 -0
- package/dist/toolbar/controller.d.ts +29 -0
- package/dist/toolbar/controller.d.ts.map +1 -0
- package/dist/toolbar/export.d.ts +70 -0
- package/dist/toolbar/export.d.ts.map +1 -0
- package/dist/toolbar/icons.d.ts +22 -0
- package/dist/toolbar/icons.d.ts.map +1 -0
- package/dist/toolbar/index.d.ts +8 -0
- package/dist/toolbar/index.d.ts.map +1 -0
- package/dist/toolbar/runtime.d.ts.map +1 -0
- package/dist/toolbar/store.d.ts +20 -0
- package/dist/toolbar/store.d.ts.map +1 -0
- package/dist/toolbar/xlsx.d.ts +35 -0
- package/dist/toolbar/xlsx.d.ts.map +1 -0
- package/dist/toolbar.css +1 -0
- package/dist/toolbar.js +797 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +29 -11
- package/dist/column-visibility/RDGColumnVisibilityProvider.d.ts +0 -6
- package/dist/column-visibility/RDGColumnVisibilityProvider.d.ts.map +0 -1
- package/dist/column-visibility/RDGColumnVisibilityTarget.d.ts +0 -7
- package/dist/column-visibility/RDGColumnVisibilityTarget.d.ts.map +0 -1
- package/dist/column-visibility/RDGColumnVisibilityToolbar.d.ts +0 -9
- package/dist/column-visibility/RDGColumnVisibilityToolbar.d.ts.map +0 -1
- package/dist/column-visibility/controller.d.ts +0 -13
- package/dist/column-visibility/controller.d.ts.map +0 -1
- package/dist/column-visibility/index.d.ts +0 -7
- package/dist/column-visibility/index.d.ts.map +0 -1
- package/dist/column-visibility/runtime.d.ts.map +0 -1
- package/dist/column-visibility/store.d.ts +0 -20
- package/dist/column-visibility/store.d.ts.map +0 -1
- package/dist/column-visibility.css +0 -1
- package/dist/column-visibility.js +0 -426
- /package/dist/{column-visibility → toolbar}/runtime.d.ts +0 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { RDGToolbarExportFormat, RDGToolbarExportScope } from './export.js';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Every string the toolbar renders itself. Values are `ReactNode`, so a
|
|
5
|
+
* translation helper that returns an element works as well as one that returns
|
|
6
|
+
* a string; `filteringControlledHint` is the exception and is noted below.
|
|
7
|
+
*
|
|
8
|
+
* The four button labels are required, because a toolbar that renders a button
|
|
9
|
+
* needs a word for it. The rest refine text that already reads correctly on its
|
|
10
|
+
* own, so translating the buttons does not oblige you to name a format map you
|
|
11
|
+
* have no opinion about.
|
|
12
|
+
*/
|
|
13
|
+
export type RDGToolbarLabels = {
|
|
14
|
+
export: React.ReactNode;
|
|
15
|
+
showFilters: React.ReactNode;
|
|
16
|
+
hideFilters: React.ReactNode;
|
|
17
|
+
clearFilters: React.ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Export menu entry per format, defaulting to the format's own name. Naming
|
|
20
|
+
* one format leaves the rest untouched: `{ xlsx: t("excel") }`.
|
|
21
|
+
*/
|
|
22
|
+
exportFormats?: Partial<Record<RDGToolbarExportFormat, React.ReactNode>>;
|
|
23
|
+
/**
|
|
24
|
+
* Whole text of the export button when `exportFormats` offers exactly one
|
|
25
|
+
* format. The default joins `export` and the format name in that fixed order
|
|
26
|
+
* ("Export CSV"), which no translation file can reorder - set this where the
|
|
27
|
+
* verb trails the noun, as in "CSV exportieren".
|
|
28
|
+
*/
|
|
29
|
+
exportSingle?: Partial<Record<RDGToolbarExportFormat, React.ReactNode>>;
|
|
30
|
+
/**
|
|
31
|
+
* Tooltip on a filter toggle the grid owns through its own `enableFiltering`
|
|
32
|
+
* prop. Stays a `string`: it renders as a `title` attribute.
|
|
33
|
+
*/
|
|
34
|
+
filteringControlledHint?: string;
|
|
35
|
+
};
|
|
36
|
+
/** Describes one export, for `exportFileName` callbacks. */
|
|
37
|
+
export type RDGToolbarExportInfo = {
|
|
38
|
+
format: RDGToolbarExportFormat;
|
|
39
|
+
scope: RDGToolbarExportScope;
|
|
40
|
+
rowCount: number;
|
|
41
|
+
columnCount: number;
|
|
42
|
+
};
|
|
43
|
+
/** Describes a finished export, for `onExportSuccess`. */
|
|
44
|
+
export type RDGToolbarExportResult = RDGToolbarExportInfo & {
|
|
45
|
+
/** File name the browser was given, including the extension. */
|
|
46
|
+
fileName: string;
|
|
47
|
+
/** Size of the written file in bytes. */
|
|
48
|
+
byteLength: number;
|
|
49
|
+
};
|
|
50
|
+
export type RDGToolbarProps = {
|
|
51
|
+
children?: React.ReactNode;
|
|
52
|
+
ariaLabel?: string;
|
|
53
|
+
title?: React.ReactNode;
|
|
54
|
+
description?: React.ReactNode;
|
|
55
|
+
/** Column visibility toggles. */
|
|
56
|
+
showColumnToggles?: boolean;
|
|
57
|
+
/** Downloads the grid's rows in one of `exportFormats`. */
|
|
58
|
+
showExport?: boolean;
|
|
59
|
+
/** Shows or hides the grid's filter row. */
|
|
60
|
+
showFilterToggle?: boolean;
|
|
61
|
+
/** Clears every column filter value. */
|
|
62
|
+
showClearFilters?: boolean;
|
|
63
|
+
/** `"view"` exports the filtered, searched and sorted rows; `"all"` the whole data source. */
|
|
64
|
+
exportScope?: RDGToolbarExportScope;
|
|
65
|
+
/**
|
|
66
|
+
* Formats offered by the export control, in menu order. `"xlsx"` needs the
|
|
67
|
+
* optional `xlsx` peer dependency installed.
|
|
68
|
+
*/
|
|
69
|
+
exportFormats?: readonly RDGToolbarExportFormat[];
|
|
70
|
+
/**
|
|
71
|
+
* Downloaded file name without extension. A function is called per export, so
|
|
72
|
+
* a name that embeds the date or the chosen format stays accurate.
|
|
73
|
+
*/
|
|
74
|
+
exportFileName?: string | ((info: RDGToolbarExportInfo) => string);
|
|
75
|
+
/** Excel number format for date cells in spreadsheet exports. */
|
|
76
|
+
exportDateFormat?: string;
|
|
77
|
+
/** Worksheet name for spreadsheet exports. Defaults to the file name. */
|
|
78
|
+
exportSheetName?: string;
|
|
79
|
+
/** Called after an export has been handed to the browser. */
|
|
80
|
+
onExportSuccess?: (result: RDGToolbarExportResult) => void;
|
|
81
|
+
/** Called when an export fails, e.g. when the xlsx peer is missing. */
|
|
82
|
+
onExportError?: (error: unknown) => void;
|
|
83
|
+
labels?: Partial<RDGToolbarLabels>;
|
|
84
|
+
/** Appended to the toolbar root's class list, for scoped consumer styling. */
|
|
85
|
+
className?: string;
|
|
86
|
+
};
|
|
87
|
+
export declare function RDGToolbar(props: RDGToolbarProps): React.ReactElement;
|
|
88
|
+
//# sourceMappingURL=RDGToolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RDGToolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAML,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,UAAU,CAAC;AAIlB;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACzE;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACxE;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IAC1D,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8FAA8F;IAC9F,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAClD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,oBAAoB,KAAK,MAAM,CAAC,CAAC;IACnE,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC3D,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAkDF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAqPrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RDGToolbarProvider.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbarProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,GAC7B,KAAK,CAAC,YAAY,CAyBpB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TypeDataGridProps } from '../types.js';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export type RDGToolbarTargetProps = {
|
|
4
|
+
children: React.ReactElement<TypeDataGridProps>;
|
|
5
|
+
};
|
|
6
|
+
export declare function RDGToolbarTarget(props: RDGToolbarTargetProps): React.ReactElement;
|
|
7
|
+
//# sourceMappingURL=RDGToolbarTarget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RDGToolbarTarget.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbarTarget.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIlD,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;CACjD,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,qBAAqB,GAC3B,KAAK,CAAC,YAAY,CAoCpB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TypeColumn } from '../types.js';
|
|
2
|
+
export type RDGToolbarPublishedSnapshot = {
|
|
3
|
+
columns: readonly TypeColumn[];
|
|
4
|
+
columnOrder: readonly string[];
|
|
5
|
+
columnVisibilityMap: Readonly<Record<string, boolean>>;
|
|
6
|
+
theme: string;
|
|
7
|
+
setColumnVisible: (columnId: string, visible: boolean) => void;
|
|
8
|
+
/** Whether the grid currently renders its filter row. */
|
|
9
|
+
filteringEnabled: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* False while the grid owns `enableFiltering` as a controlled prop. The
|
|
12
|
+
* imperative setter is a no-op in that case, so the toolbar disables its
|
|
13
|
+
* filter toggle instead of pretending to own the state.
|
|
14
|
+
*/
|
|
15
|
+
canToggleFiltering: boolean;
|
|
16
|
+
setFilteringEnabled: (enabled: boolean) => void;
|
|
17
|
+
/** Whether at least one column filter holds a non-empty value. */
|
|
18
|
+
filtered: boolean;
|
|
19
|
+
clearAllFilters: () => void;
|
|
20
|
+
/** Rows the grid currently renders: filtered, searched and sorted. */
|
|
21
|
+
getViewRows: () => readonly unknown[];
|
|
22
|
+
/** Every row of the local data source, before filtering and searching. */
|
|
23
|
+
getAllRows: () => readonly unknown[];
|
|
24
|
+
};
|
|
25
|
+
/** Private bridge injected by RDGToolbarTarget. */
|
|
26
|
+
export type RDGToolbarController = {
|
|
27
|
+
publish: (snapshot: RDGToolbarPublishedSnapshot) => void;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/toolbar/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,yDAAyD;IACzD,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,sEAAsE;IACtE,WAAW,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;IACtC,0EAA0E;IAC1E,UAAU,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;CACtC,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,CAAC,QAAQ,EAAE,2BAA2B,KAAK,IAAI,CAAC;CAC1D,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { TypeColumn } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Formats the built-in toolbar export can write. Adding a format means adding
|
|
4
|
+
* an entry to `RDG_TOOLBAR_EXPORT_FORMATS`; the toolbar menu is generated from
|
|
5
|
+
* that registry.
|
|
6
|
+
*
|
|
7
|
+
* `"xlsx"` needs the optional `xlsx` peer dependency and is therefore not
|
|
8
|
+
* offered by default.
|
|
9
|
+
*/
|
|
10
|
+
export type RDGToolbarExportFormat = "csv" | "json" | "xlsx";
|
|
11
|
+
/** Rows the export reads: the current grid view, or the whole data source. */
|
|
12
|
+
export type RDGToolbarExportScope = "view" | "all";
|
|
13
|
+
export type RDGToolbarExportTable = {
|
|
14
|
+
/** Header labels, in export order. */
|
|
15
|
+
headers: string[];
|
|
16
|
+
/** Data field names, in export order. */
|
|
17
|
+
fields: string[];
|
|
18
|
+
/**
|
|
19
|
+
* Row-major cell values, already passed through `column.exportValue`.
|
|
20
|
+
*
|
|
21
|
+
* Values keep their JavaScript type. Text formats stringify them; the
|
|
22
|
+
* spreadsheet format maps them onto typed cells.
|
|
23
|
+
*/
|
|
24
|
+
rows: unknown[][];
|
|
25
|
+
};
|
|
26
|
+
/** Options a format may honour, threaded through from the toolbar props. */
|
|
27
|
+
export type RDGToolbarExportOptions = {
|
|
28
|
+
/** Excel number format for date cells. */
|
|
29
|
+
dateFormat?: string;
|
|
30
|
+
/** Worksheet name for spreadsheet formats. */
|
|
31
|
+
sheetName?: string;
|
|
32
|
+
};
|
|
33
|
+
export type RDGToolbarExportFormatDefinition = {
|
|
34
|
+
label: string;
|
|
35
|
+
extension: string;
|
|
36
|
+
mimeType: string;
|
|
37
|
+
/**
|
|
38
|
+
* Builds the file body. Asynchronous so a format can load its writer on
|
|
39
|
+
* demand instead of adding weight to this entry.
|
|
40
|
+
*/
|
|
41
|
+
createContent: (table: RDGToolbarExportTable, options: RDGToolbarExportOptions) => BlobPart | Promise<BlobPart>;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Export order follows the grid's column order. A column is exported when it
|
|
45
|
+
* is `exportable` (the default) and either visible or explicitly marked
|
|
46
|
+
* `exportWhenHidden`. `exportable: false` always wins.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveExportColumns(snapshot: {
|
|
49
|
+
columns: readonly TypeColumn[];
|
|
50
|
+
columnOrder: readonly string[];
|
|
51
|
+
columnVisibilityMap: Readonly<Record<string, boolean>>;
|
|
52
|
+
}): TypeColumn[];
|
|
53
|
+
/**
|
|
54
|
+
* `column.render` is deliberately ignored: it returns React nodes, which is
|
|
55
|
+
* exactly why `exportValue` exists. A throwing `exportValue` falls back to the
|
|
56
|
+
* raw value instead of failing the whole export.
|
|
57
|
+
*/
|
|
58
|
+
export declare function resolveExportValue(column: TypeColumn, row: unknown): unknown;
|
|
59
|
+
export declare function buildExportTable(columns: readonly TypeColumn[], rows: readonly unknown[]): RDGToolbarExportTable;
|
|
60
|
+
/**
|
|
61
|
+
* RFC 4180 line endings plus a BOM, so spreadsheet apps open the file as UTF-8
|
|
62
|
+
* instead of guessing a local codepage.
|
|
63
|
+
*/
|
|
64
|
+
export declare function serializeExportCsv(table: RDGToolbarExportTable): string;
|
|
65
|
+
export declare function serializeExportJson(table: RDGToolbarExportTable): string;
|
|
66
|
+
export declare const RDG_TOOLBAR_EXPORT_FORMATS: Record<RDGToolbarExportFormat, RDGToolbarExportFormatDefinition>;
|
|
67
|
+
export declare const DEFAULT_TOOLBAR_EXPORT_FORMATS: readonly RDGToolbarExportFormat[];
|
|
68
|
+
/** Returns the written size in bytes, or 0 when there is no document. */
|
|
69
|
+
export declare function downloadExportFile(filename: string, content: BlobPart, mimeType: string): number;
|
|
70
|
+
//# sourceMappingURL=export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/toolbar/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,8EAA8E;AAC9E,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAAG;IAClC,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yCAAyC;IACzC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;CACnB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,uBAAuB,GAAG;IACpC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,EAAE,CACb,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,uBAAuB,KAC7B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnC,CAAC;AAsBF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE;IAC7C,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACxD,GAAG,UAAU,EAAE,CAyBf;AAOD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAS5E;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,qBAAqB,CAQvB;AAiBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAMvE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAUxE;AAED,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAC7C,sBAAsB,EACtB,gCAAgC,CAoBjC,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,SAAS,sBAAsB,EAC3D,CAAC;AAElB,yEAAyE;AACzE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Inline glyphs for the built-in toolbar actions.
|
|
4
|
+
*
|
|
5
|
+
* The icon library the examples use is a dev dependency, and the optional
|
|
6
|
+
* toolbar entry may only depend on the core runtime, so these are drawn here in
|
|
7
|
+
* the same 24-unit, 2-stroke idiom the rest of the UI uses. They are decorative:
|
|
8
|
+
* every button keeps a text label, so each icon is aria-hidden.
|
|
9
|
+
*/
|
|
10
|
+
type ToolbarIconProps = {
|
|
11
|
+
className?: string;
|
|
12
|
+
};
|
|
13
|
+
/** Arrow into a tray: download. */
|
|
14
|
+
export declare function ExportIcon(props: ToolbarIconProps): React.ReactElement;
|
|
15
|
+
/** Funnel: the filter row is hidden and can be shown. */
|
|
16
|
+
export declare function FilterIcon(props: ToolbarIconProps): React.ReactElement;
|
|
17
|
+
/** Funnel with a cross: the filter row is visible and can be hidden. */
|
|
18
|
+
export declare function FilterOffIcon(props: ToolbarIconProps): React.ReactElement;
|
|
19
|
+
/** Counter-clockwise arrow: reset the filter values. */
|
|
20
|
+
export declare function ResetIcon(props: ToolbarIconProps): React.ReactElement;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/toolbar/icons.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;GAOG;AACH,KAAK,gBAAgB,GAAG;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAwBF,mCAAmC;AACnC,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAQtE;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAMtE;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAQzE;AAED,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAOrE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { RDGToolbar } from './RDGToolbar.js';
|
|
2
|
+
export { RDGToolbarProvider } from './RDGToolbarProvider.js';
|
|
3
|
+
export { RDGToolbarTarget } from './RDGToolbarTarget.js';
|
|
4
|
+
export type { RDGToolbarExportInfo, RDGToolbarExportResult, RDGToolbarLabels, RDGToolbarProps, } from './RDGToolbar.js';
|
|
5
|
+
export type { RDGToolbarProviderProps } from './RDGToolbarProvider.js';
|
|
6
|
+
export type { RDGToolbarTargetProps } from './RDGToolbarTarget.js';
|
|
7
|
+
export type { RDGToolbarExportFormat, RDGToolbarExportScope } from './export.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/toolbar/index.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/toolbar/runtime.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CASvD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RDGToolbarController, RDGToolbarPublishedSnapshot } from './controller.js';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export declare const EMPTY_TOOLBAR_SNAPSHOT: RDGToolbarPublishedSnapshot;
|
|
4
|
+
type TargetRegistration = {
|
|
5
|
+
attach: () => () => void;
|
|
6
|
+
controller: RDGToolbarController;
|
|
7
|
+
};
|
|
8
|
+
export type RDGToolbarStore = {
|
|
9
|
+
createTargetRegistration: () => TargetRegistration;
|
|
10
|
+
dispose: () => void;
|
|
11
|
+
getServerSnapshot: () => RDGToolbarPublishedSnapshot;
|
|
12
|
+
getSnapshot: () => RDGToolbarPublishedSnapshot;
|
|
13
|
+
subscribe: (listener: () => void) => () => void;
|
|
14
|
+
};
|
|
15
|
+
export declare function createRDGToolbarStore(): RDGToolbarStore;
|
|
16
|
+
export declare const RDGToolbarContext: React.Context<RDGToolbarStore | null>;
|
|
17
|
+
export declare function useRDGToolbarStore(): RDGToolbarStore;
|
|
18
|
+
export declare function useRDGToolbarSnapshot(): RDGToolbarPublishedSnapshot;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/toolbar/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAYtB,eAAO,MAAM,sBAAsB,EAAE,2BAapC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,MAAM,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,oBAAoB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;IACrD,WAAW,EAAE,MAAM,2BAA2B,CAAC;IAC/C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CACjD,CAAC;AAgDF,wBAAgB,qBAAqB,IAAI,eAAe,CA4DvD;AAED,eAAO,MAAM,iBAAiB,uCAE7B,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAED,wBAAgB,qBAAqB,IAAI,2BAA2B,CAOnE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { RDGToolbarExportTable } from './export.js';
|
|
2
|
+
export declare const XLSX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
3
|
+
/** Excel number format applied to date cells. */
|
|
4
|
+
export declare const DEFAULT_XLSX_DATE_FORMAT = "yyyy-mm-dd hh:mm";
|
|
5
|
+
export declare class MissingXlsxDependencyError extends Error {
|
|
6
|
+
constructor(cause: unknown);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The writer reports an invalid number format as `bad second format: .` or with
|
|
10
|
+
* no message at all, so the failure is restated here in terms of the prop that
|
|
11
|
+
* causes it. Notably SheetJS refuses dot separators that Excel itself accepts.
|
|
12
|
+
*/
|
|
13
|
+
export declare class XlsxWriteError extends Error {
|
|
14
|
+
constructor(dateFormat: string, cause: unknown);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Excel rejects sheet names that are empty, longer than 31 characters or
|
|
18
|
+
* contain `[ ] : * ? / \`, and `book_append_sheet` throws on them.
|
|
19
|
+
*/
|
|
20
|
+
export declare function toSheetName(name: string): string;
|
|
21
|
+
export type CreateXlsxContentOptions = {
|
|
22
|
+
/** Excel number format for date cells. */
|
|
23
|
+
dateFormat?: string;
|
|
24
|
+
sheetName?: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Builds a single-sheet workbook from the export table.
|
|
28
|
+
*
|
|
29
|
+
* Values keep their JavaScript type, so booleans become boolean cells, `Date`
|
|
30
|
+
* values become date cells carrying `dateFormat`, and numbers stay numeric and
|
|
31
|
+
* summable in a spreadsheet. Rows are written positionally from the table, so
|
|
32
|
+
* two columns sharing a header stay two distinct columns.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createXlsxContent(table: RDGToolbarExportTable, options?: CreateXlsxContentOptions): Promise<ArrayBuffer>;
|
|
35
|
+
//# sourceMappingURL=xlsx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xlsx.d.ts","sourceRoot":"","sources":["../../src/toolbar/xlsx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAoCtD,eAAO,MAAM,cAAc,sEAC0C,CAAC;AAEtE,iDAAiD;AACjD,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,KAAK,EAAE,OAAO;CAS3B;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAW/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGhD;AAUD,MAAM,MAAM,wBAAwB,GAAG;IACrC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,WAAW,CAAC,CAyBtB"}
|
package/dist/toolbar.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.tdg-toolbar-root, .tdg-toolbar-root *, .tdg-toolbar-root:before, .tdg-toolbar-root :before, .tdg-toolbar-root:after, .tdg-toolbar-root :after, .tdg-toolbar-root::backdrop, .tdg-toolbar-root ::backdrop{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer utilities{.tdg-toolbar-root.visible, .tdg-toolbar-root .visible{visibility:visible}.tdg-toolbar-root.fixed, .tdg-toolbar-root .fixed{position:fixed}.tdg-toolbar-root.container, .tdg-toolbar-root .container{width:100%}@media(min-width:40rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:40rem}}@media(min-width:48rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:48rem}}@media(min-width:64rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:64rem}}@media(min-width:80rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:80rem}}@media(min-width:96rem){.tdg-toolbar-root.container, .tdg-toolbar-root .container{max-width:96rem}}.tdg-toolbar-root.grid, .tdg-toolbar-root .grid{display:grid}.tdg-toolbar-root.hidden, .tdg-toolbar-root .hidden{display:none}.tdg-toolbar-root.table, .tdg-toolbar-root .table{display:table}.tdg-toolbar-root.filter, .tdg-toolbar-root .filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.tdg-toolbar-root, .tdg-toolbar-root:before, .tdg-toolbar-root:after, .tdg-toolbar-root *, .tdg-toolbar-root :before, .tdg-toolbar-root :after{box-sizing:border-box}.tdg-toolbar-root{--tdg-toolbar-host-background:var(--background);--tdg-toolbar-host-foreground:var(--foreground);--tdg-toolbar-host-card:var(--card);--tdg-toolbar-host-accent:var(--accent);--tdg-toolbar-host-accent-foreground:var(--accent-foreground);--tdg-toolbar-host-muted-foreground:var(--muted-foreground);--tdg-toolbar-host-border:var(--border);--tdg-toolbar-host-ring:var(--ring);--tdg-toolbar-host-input:var(--input);--tdg-toolbar-host-popover:var(--popover);--tdg-toolbar-host-popover-foreground:var(--popover-foreground);--tdg-toolbar-background-fallback:oklch(100% 0 0);--tdg-toolbar-foreground-fallback:oklch(14.5% 0 0);--tdg-toolbar-card-fallback:oklch(100% 0 0);--tdg-toolbar-accent-fallback:oklch(97% 0 0);--tdg-toolbar-accent-foreground-fallback:oklch(20.5% 0 0);--tdg-toolbar-muted-foreground-fallback:oklch(55.6% 0 0);--tdg-toolbar-border-fallback:oklch(92.2% 0 0);--tdg-toolbar-ring-fallback:oklch(70.8% 0 0);--tdg-toolbar-input-fallback:oklch(92.2% 0 0);--tdg-toolbar-popover-fallback:oklch(100% 0 0);--tdg-toolbar-popover-foreground-fallback:oklch(14.5% 0 0);--tdg-toolbar-background:var(--tdg-color-background,var(--tdg-toolbar-host-background,var(--tdg-toolbar-background-fallback)));--tdg-toolbar-foreground:var(--tdg-color-foreground,var(--tdg-toolbar-host-foreground,var(--tdg-toolbar-foreground-fallback)));--tdg-toolbar-card:var(--tdg-color-card,var(--tdg-toolbar-host-card,var(--tdg-toolbar-card-fallback)));--tdg-toolbar-accent:var(--tdg-color-accent,var(--tdg-toolbar-host-accent,var(--tdg-toolbar-accent-fallback)));--tdg-toolbar-accent-foreground:var(--tdg-color-accent-foreground,var(--tdg-toolbar-host-accent-foreground,var(--tdg-toolbar-accent-foreground-fallback)));--tdg-toolbar-muted-foreground:var(--tdg-color-muted-foreground,var(--tdg-toolbar-host-muted-foreground,var(--tdg-toolbar-muted-foreground-fallback)));--tdg-toolbar-border:var(--tdg-color-border,var(--tdg-toolbar-host-border,var(--tdg-toolbar-border-fallback)));--tdg-toolbar-ring:var(--tdg-color-ring,var(--tdg-toolbar-host-ring,var(--tdg-toolbar-ring-fallback)));--tdg-toolbar-input:var(--tdg-color-input,var(--tdg-toolbar-host-input,var(--tdg-toolbar-input-fallback)));--tdg-toolbar-popover:var(--tdg-color-popover,var(--tdg-toolbar-host-popover,var(--tdg-toolbar-popover-fallback)));--tdg-toolbar-popover-foreground:var(--tdg-color-popover-foreground,var(--tdg-toolbar-host-popover-foreground,var(--tdg-toolbar-popover-foreground-fallback)));--tdg-toolbar-surface-backdrop:transparent;--tdg-toolbar-surface:var(--tdg-toolbar-card)}@supports (color:color-mix(in lab,red,red)){.tdg-toolbar-root{--tdg-toolbar-surface:color-mix(in oklab,var(--tdg-toolbar-card)60%,var(--tdg-toolbar-surface-backdrop))}}.tdg-toolbar-root{--tdg-toolbar-color:var(--tdg-toolbar-foreground);--tdg-toolbar-padding:.75rem;--tdg-toolbar-gap:.75rem;--tdg-toolbar-radius:var(--tdg-radius-xl,var(--radius-xl,calc(var(--radius,.5rem) + 4px)));--tdg-toolbar-border-width:1px;--tdg-toolbar-border-color:var(--tdg-toolbar-border);--tdg-toolbar-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tdg-toolbar-title-font-size:.875rem;--tdg-toolbar-title-font-weight:500;--tdg-toolbar-title-color:inherit;--tdg-toolbar-description-font-size:.75rem;--tdg-toolbar-description-color:var(--tdg-toolbar-muted-foreground);--tdg-toolbar-body-gap:1.5rem;--tdg-toolbar-toggle-gap:.5rem;--tdg-toolbar-actions-gap:.5rem;--tdg-toolbar-control-height:2rem;--tdg-toolbar-control-padding:0 .75rem;--tdg-toolbar-control-radius:var(--tdg-radius-md,var(--radius-md,calc(var(--radius,.5rem) - 2px)));--tdg-toolbar-control-font-weight:500;--tdg-toolbar-control-gap:.5rem;--tdg-toolbar-control-cursor:default;--tdg-toolbar-control-border-width:1px;--tdg-toolbar-control-transition:.15s;--tdg-toolbar-control-disabled-opacity:.5;--tdg-toolbar-icon-size:1rem;--tdg-toolbar-action-fill:transparent;--tdg-toolbar-action-color:inherit;--tdg-toolbar-action-border-color:var(--tdg-toolbar-input);--tdg-toolbar-action-hover-fill:var(--tdg-toolbar-accent);--tdg-toolbar-action-hover-color:var(--tdg-toolbar-accent-foreground);--tdg-toolbar-toggle-off-fill:transparent;--tdg-toolbar-toggle-off-color:var(--tdg-toolbar-muted-foreground);--tdg-toolbar-toggle-off-border-color:transparent;--tdg-toolbar-toggle-off-hover-fill:var(--tdg-toolbar-accent);--tdg-toolbar-toggle-off-hover-color:var(--tdg-toolbar-accent-foreground);--tdg-toolbar-toggle-on-fill:var(--tdg-toolbar-card);--tdg-toolbar-toggle-on-color:var(--tdg-toolbar-foreground);--tdg-toolbar-toggle-on-border-color:var(--tdg-toolbar-input);--tdg-toolbar-toggle-on-hover-fill:var(--tdg-toolbar-accent);--tdg-toolbar-toggle-on-hover-color:var(--tdg-toolbar-accent-foreground);--tdg-toolbar-toggle-font-size:.875rem;--tdg-toolbar-action-font-size:.75rem;--tdg-toolbar-focus-ring-width:1px;--tdg-toolbar-focus-ring-color:var(--tdg-toolbar-ring);--tdg-toolbar-menu-fill:var(--tdg-toolbar-popover);--tdg-toolbar-menu-color:var(--tdg-toolbar-popover-foreground);--tdg-toolbar-menu-border-width:1px;--tdg-toolbar-menu-border-color:var(--tdg-toolbar-border);--tdg-toolbar-menu-radius:var(--tdg-toolbar-control-radius);--tdg-toolbar-menu-padding:.25rem;--tdg-toolbar-menu-min-width:8rem;--tdg-toolbar-menu-offset:.25rem;--tdg-toolbar-menu-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tdg-toolbar-menu-item-font-size:.875rem;--tdg-toolbar-menu-item-padding:.375rem .5rem;--tdg-toolbar-menu-item-radius:var(--tdg-radius-sm,var(--radius-sm,calc(var(--radius,.5rem) - 4px)));--tdg-toolbar-menu-item-hover-fill:var(--tdg-toolbar-accent);--tdg-toolbar-menu-item-hover-color:var(--tdg-toolbar-accent-foreground);color-scheme:light}.dark .tdg-toolbar-root[data-theme=default][data-theme-base=default], .tdg-toolbar-root[data-theme-base=dark]{--tdg-toolbar-background-fallback:oklch(14.5% 0 0);--tdg-toolbar-foreground-fallback:oklch(98.5% 0 0);--tdg-toolbar-card-fallback:oklch(20.5% 0 0);--tdg-toolbar-accent-fallback:oklch(26.9% 0 0);--tdg-toolbar-accent-foreground-fallback:oklch(98.5% 0 0);--tdg-toolbar-muted-foreground-fallback:oklch(70.8% 0 0);--tdg-toolbar-border-fallback:oklch(100% 0 0/.1);--tdg-toolbar-ring-fallback:oklch(55.6% 0 0);--tdg-toolbar-input-fallback:oklch(100% 0 0/.15);--tdg-toolbar-popover-fallback:oklch(20.5% 0 0);--tdg-toolbar-popover-foreground-fallback:oklch(98.5% 0 0);color-scheme:dark}.tdg-toolbar-root[data-theme-base=dark], .tdg-toolbar-root[data-theme-base=light]{--tdg-toolbar-host-background:initial;--tdg-toolbar-host-foreground:initial;--tdg-toolbar-host-card:initial;--tdg-toolbar-host-accent:initial;--tdg-toolbar-host-accent-foreground:initial;--tdg-toolbar-host-muted-foreground:initial;--tdg-toolbar-host-border:initial;--tdg-toolbar-host-ring:initial;--tdg-toolbar-host-input:initial;--tdg-toolbar-host-popover:initial;--tdg-toolbar-host-popover-foreground:initial;--tdg-toolbar-surface-backdrop:var(--tdg-toolbar-background)}:where(.tdg-toolbar-root){gap:var(--tdg-toolbar-gap);padding:var(--tdg-toolbar-padding);border:var(--tdg-toolbar-border-width)solid var(--tdg-toolbar-border-color);border-radius:var(--tdg-toolbar-radius);background:var(--tdg-toolbar-surface);box-shadow:var(--tdg-toolbar-shadow);color:var(--tdg-toolbar-color);flex-direction:column;display:flex}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-heading]{flex-direction:column;gap:.25rem;display:flex}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-title]{font-size:var(--tdg-toolbar-title-font-size);font-weight:var(--tdg-toolbar-title-font-weight);color:var(--tdg-toolbar-title-color);line-height:1.25rem}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-description]{font-size:var(--tdg-toolbar-description-font-size);color:var(--tdg-toolbar-description-color);line-height:1rem}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-body]{gap:var(--tdg-toolbar-body-gap);flex-direction:column-reverse;display:flex}@media(min-width:80rem){:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-body]{flex-direction:row;justify-content:space-between;align-items:flex-start}}:where(.tdg-toolbar-root) [data-slot=rdg-column-toggle-list]{gap:var(--tdg-toolbar-toggle-gap);flex-wrap:wrap;max-width:100%;display:flex}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-actions]{align-items:center;gap:var(--tdg-toolbar-actions-gap);flex-wrap:wrap;flex-shrink:0;display:flex}:where(.tdg-toolbar-root) [data-slot=rdg-column-toggle], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-filter-toggle], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-clear-filters]{height:var(--tdg-toolbar-control-height);justify-content:center;align-items:center;gap:var(--tdg-toolbar-control-gap);padding:var(--tdg-toolbar-control-padding);border:var(--tdg-toolbar-control-border-width)solid var(--tdg-toolbar-action-border-color);border-radius:var(--tdg-toolbar-control-radius);background:var(--tdg-toolbar-action-fill);color:var(--tdg-toolbar-action-color);font:inherit;font-weight:var(--tdg-toolbar-control-font-weight);white-space:nowrap;vertical-align:middle;appearance:none;cursor:var(--tdg-toolbar-control-cursor);-webkit-user-select:none;user-select:none;transition:color var(--tdg-toolbar-control-transition),background-color var(--tdg-toolbar-control-transition),border-color var(--tdg-toolbar-control-transition);outline:none;flex-shrink:0;line-height:1;display:inline-flex}:where(.tdg-toolbar-root) [data-slot=rdg-column-toggle]{font-size:var(--tdg-toolbar-toggle-font-size)}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-filter-toggle], :where(.tdg-toolbar-root) [data-slot=rdg-toolbar-clear-filters]{font-size:var(--tdg-toolbar-action-font-size)}:where(.tdg-toolbar-root) [data-state=off]:where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-filter-toggle]){border-color:var(--tdg-toolbar-toggle-off-border-color);background:var(--tdg-toolbar-toggle-off-fill);color:var(--tdg-toolbar-toggle-off-color)}:where(.tdg-toolbar-root) [data-state=on]:where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-export],[data-slot=rdg-toolbar-filter-toggle]){border-color:var(--tdg-toolbar-toggle-on-border-color);background:var(--tdg-toolbar-toggle-on-fill);color:var(--tdg-toolbar-toggle-on-color)}:where(.tdg-toolbar-root) :where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-export],[data-slot=rdg-toolbar-filter-toggle],[data-slot=rdg-toolbar-clear-filters]):where(:enabled):hover{background:var(--tdg-toolbar-action-hover-fill);color:var(--tdg-toolbar-action-hover-color)}:where(.tdg-toolbar-root) :where([data-state=off]):where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-filter-toggle]):where(:enabled):hover{background:var(--tdg-toolbar-toggle-off-hover-fill);color:var(--tdg-toolbar-toggle-off-hover-color)}:where(.tdg-toolbar-root) :where([data-state=on]):where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-export],[data-slot=rdg-toolbar-filter-toggle]):where(:enabled):hover{background:var(--tdg-toolbar-toggle-on-hover-fill);color:var(--tdg-toolbar-toggle-on-hover-color)}:where(.tdg-toolbar-root) :where([data-slot^=rdg-toolbar],[data-slot=rdg-column-toggle]):focus-visible{box-shadow:0 0 0 var(--tdg-toolbar-focus-ring-width) var(--tdg-toolbar-focus-ring-color)}:where(.tdg-toolbar-root) :where([data-slot=rdg-column-toggle],[data-slot=rdg-toolbar-export],[data-slot=rdg-toolbar-filter-toggle],[data-slot=rdg-toolbar-clear-filters]):disabled{pointer-events:none;opacity:var(--tdg-toolbar-control-disabled-opacity)}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export-wrapper]{display:inline-flex;position:relative}:where(.tdg-toolbar-root) svg{width:var(--tdg-toolbar-icon-size);height:var(--tdg-toolbar-icon-size);pointer-events:none;flex-shrink:0}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export-menu]{z-index:50;min-width:var(--tdg-toolbar-menu-min-width);margin-top:var(--tdg-toolbar-menu-offset);padding:var(--tdg-toolbar-menu-padding);border:var(--tdg-toolbar-menu-border-width)solid var(--tdg-toolbar-menu-border-color);border-radius:var(--tdg-toolbar-menu-radius);background:var(--tdg-toolbar-menu-fill);box-shadow:var(--tdg-toolbar-menu-shadow);color:var(--tdg-toolbar-menu-color);inset-inline-end:0;flex-direction:column;display:flex;position:absolute;top:100%;overflow:hidden}:where(.tdg-toolbar-root) [data-slot=rdg-toolbar-export-format]{align-items:center;gap:var(--tdg-toolbar-control-gap);padding:var(--tdg-toolbar-menu-item-padding);border-radius:var(--tdg-toolbar-menu-item-radius);color:inherit;font:inherit;font-size:var(--tdg-toolbar-menu-item-font-size);white-space:nowrap;text-align:start;cursor:var(--tdg-toolbar-control-cursor);-webkit-user-select:none;user-select:none;background:0 0;border:0;outline:none;display:flex}:where(.tdg-toolbar-root) :where([data-slot=rdg-toolbar-export-format]):is(:hover,:focus-visible){background:var(--tdg-toolbar-menu-item-hover-fill);color:var(--tdg-toolbar-menu-item-hover-color)}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|