@ackplus/mui-tanstack-data-grid 1.0.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/README.md +22 -0
- package/dist/components/data-table.d.ts +4 -0
- package/dist/components/data-table.d.ts.map +1 -0
- package/dist/components/data-table.js +24 -0
- package/dist/components/filters/filter-value-input.d.ts +10 -0
- package/dist/components/filters/filter-value-input.d.ts.map +1 -0
- package/dist/components/filters/filter-value-input.js +39 -0
- package/dist/components/filters/index.d.ts +3 -0
- package/dist/components/filters/index.d.ts.map +1 -0
- package/dist/components/filters/index.js +18 -0
- package/dist/components/filters/operators.d.ts +93 -0
- package/dist/components/filters/operators.d.ts.map +1 -0
- package/dist/components/filters/operators.js +42 -0
- package/dist/components/grid/grid-view.d.ts +8 -0
- package/dist/components/grid/grid-view.d.ts.map +1 -0
- package/dist/components/grid/grid-view.js +151 -0
- package/dist/components/grid/styled.d.ts +17 -0
- package/dist/components/grid/styled.d.ts.map +1 -0
- package/dist/components/grid/styled.js +68 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +23 -0
- package/dist/components/toolbar/bulk-actions-toolbar.d.ts +10 -0
- package/dist/components/toolbar/bulk-actions-toolbar.d.ts.map +1 -0
- package/dist/components/toolbar/bulk-actions-toolbar.js +20 -0
- package/dist/components/toolbar/column-filter-control.d.ts +8 -0
- package/dist/components/toolbar/column-filter-control.d.ts.map +1 -0
- package/dist/components/toolbar/column-filter-control.js +93 -0
- package/dist/components/toolbar/data-table-toolbar.d.ts +16 -0
- package/dist/components/toolbar/data-table-toolbar.d.ts.map +1 -0
- package/dist/components/toolbar/data-table-toolbar.js +44 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +17 -0
- package/dist/core/use-data-table.d.ts +83 -0
- package/dist/core/use-data-table.d.ts.map +1 -0
- package/dist/core/use-data-table.js +1081 -0
- package/dist/features/column-filter.feature.d.ts +48 -0
- package/dist/features/column-filter.feature.d.ts.map +1 -0
- package/dist/features/column-filter.feature.js +270 -0
- package/dist/features/index.d.ts +3 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +18 -0
- package/dist/features/selection.feature.d.ts +49 -0
- package/dist/features/selection.feature.d.ts.map +1 -0
- package/dist/features/selection.feature.js +159 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/theme/create-data-table-theme.d.ts +16 -0
- package/dist/theme/create-data-table-theme.d.ts.map +1 -0
- package/dist/theme/create-data-table-theme.js +18 -0
- package/dist/theme/index.d.ts +7 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +22 -0
- package/dist/theme/mui-augmentation.d.ts +40 -0
- package/dist/theme/mui-augmentation.d.ts.map +1 -0
- package/dist/theme/mui-augmentation.js +2 -0
- package/dist/theme/palette.d.ts +24 -0
- package/dist/theme/palette.d.ts.map +1 -0
- package/dist/theme/palette.js +23 -0
- package/dist/theme/tokens.d.ts +43 -0
- package/dist/theme/tokens.d.ts.map +1 -0
- package/dist/theme/tokens.js +40 -0
- package/dist/theme/use-data-table-tokens.d.ts +4 -0
- package/dist/theme/use-data-table-tokens.d.ts.map +1 -0
- package/dist/theme/use-data-table-tokens.js +42 -0
- package/dist/types/api.types.d.ts +156 -0
- package/dist/types/api.types.d.ts.map +1 -0
- package/dist/types/api.types.js +2 -0
- package/dist/types/column.types.d.ts +60 -0
- package/dist/types/column.types.d.ts.map +1 -0
- package/dist/types/column.types.js +7 -0
- package/dist/types/data-table.types.d.ts +161 -0
- package/dist/types/data-table.types.d.ts.map +1 -0
- package/dist/types/data-table.types.js +2 -0
- package/dist/types/export.types.d.ts +32 -0
- package/dist/types/export.types.d.ts.map +1 -0
- package/dist/types/export.types.js +2 -0
- package/dist/types/filter.types.d.ts +15 -0
- package/dist/types/filter.types.d.ts.map +1 -0
- package/dist/types/filter.types.js +2 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +25 -0
- package/dist/types/logging.types.d.ts +23 -0
- package/dist/types/logging.types.d.ts.map +1 -0
- package/dist/types/logging.types.js +2 -0
- package/dist/types/selection.types.d.ts +7 -0
- package/dist/types/selection.types.d.ts.map +1 -0
- package/dist/types/selection.types.js +2 -0
- package/dist/types/slots.types.d.ts +41 -0
- package/dist/types/slots.types.d.ts.map +1 -0
- package/dist/types/slots.types.js +2 -0
- package/dist/types/state.types.d.ts +46 -0
- package/dist/types/state.types.d.ts.map +1 -0
- package/dist/types/state.types.js +2 -0
- package/dist/utils/column-helpers.d.ts +9 -0
- package/dist/utils/column-helpers.d.ts.map +1 -0
- package/dist/utils/column-helpers.js +46 -0
- package/dist/utils/debounced-fetch.utils.d.ts +22 -0
- package/dist/utils/debounced-fetch.utils.d.ts.map +1 -0
- package/dist/utils/debounced-fetch.utils.js +85 -0
- package/dist/utils/export-utils.d.ts +49 -0
- package/dist/utils/export-utils.d.ts.map +1 -0
- package/dist/utils/export-utils.js +372 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +22 -0
- package/dist/utils/logger.d.ts +24 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +107 -0
- package/dist/utils/special-columns.d.ts +9 -0
- package/dist/utils/special-columns.d.ts.map +1 -0
- package/dist/utils/special-columns.js +80 -0
- package/dist/utils/table-helpers.d.ts +16 -0
- package/dist/utils/table-helpers.d.ts.map +1 -0
- package/dist/utils/table-helpers.js +50 -0
- package/package.json +74 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './mui-augmentation';
|
|
2
|
+
export * from './tokens';
|
|
3
|
+
export * from './palette';
|
|
4
|
+
export * from './use-data-table-tokens';
|
|
5
|
+
export * from './create-data-table-theme';
|
|
6
|
+
export type { DataTableClassKey } from './mui-augmentation';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,CAAC;AAE5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Side-effect import ensures the MUI module augmentation is included.
|
|
18
|
+
require("./mui-augmentation");
|
|
19
|
+
__exportStar(require("./tokens"), exports);
|
|
20
|
+
__exportStar(require("./palette"), exports);
|
|
21
|
+
__exportStar(require("./use-data-table-tokens"), exports);
|
|
22
|
+
__exportStar(require("./create-data-table-theme"), exports);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers the grid as a first-class MUI themeable component, so consumers
|
|
3
|
+
* override it with the SAME standard patterns as `MuiButton` / `MuiDataGrid`:
|
|
4
|
+
*
|
|
5
|
+
* createTheme({
|
|
6
|
+
* palette: { tanstackDataGrid: { headerBg: '#eaeff5' } },
|
|
7
|
+
* components: {
|
|
8
|
+
* MuiTanstackDataGrid: {
|
|
9
|
+
* defaultProps: { density: 'compact' },
|
|
10
|
+
* styleOverrides: { root: { '--dt-border-color': '#e3e8ef' }, cell: { paddingInline: 12 } },
|
|
11
|
+
* },
|
|
12
|
+
* },
|
|
13
|
+
* })
|
|
14
|
+
*/
|
|
15
|
+
import type { ComponentsOverrides } from '@mui/material/styles';
|
|
16
|
+
import type { TanstackDataGridPalette } from './palette';
|
|
17
|
+
import type { DataTableProps } from '../types/data-table.types';
|
|
18
|
+
/** styleOverrides slot keys (the grid's themeable parts). */
|
|
19
|
+
export type DataTableClassKey = 'root' | 'scroller' | 'grid' | 'toolbar' | 'header' | 'headerRow' | 'headerCell' | 'body' | 'row' | 'cell' | 'detailPanel' | 'footer' | 'pagination' | 'loadingOverlay' | 'noRowsOverlay';
|
|
20
|
+
declare module '@mui/material/styles' {
|
|
21
|
+
interface ComponentNameToClassKey {
|
|
22
|
+
MuiTanstackDataGrid: DataTableClassKey;
|
|
23
|
+
}
|
|
24
|
+
interface ComponentsPropsList {
|
|
25
|
+
MuiTanstackDataGrid: Partial<DataTableProps<any>>;
|
|
26
|
+
}
|
|
27
|
+
interface Components<Theme = unknown> {
|
|
28
|
+
MuiTanstackDataGrid?: {
|
|
29
|
+
defaultProps?: ComponentsPropsList['MuiTanstackDataGrid'];
|
|
30
|
+
styleOverrides?: ComponentsOverrides<Theme>['MuiTanstackDataGrid'];
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
interface Palette {
|
|
34
|
+
tanstackDataGrid: TanstackDataGridPalette;
|
|
35
|
+
}
|
|
36
|
+
interface PaletteOptions {
|
|
37
|
+
tanstackDataGrid?: Partial<TanstackDataGridPalette>;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=mui-augmentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mui-augmentation.d.ts","sourceRoot":"","sources":["../../src/theme/mui-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GACvB,MAAM,GACN,UAAU,GACV,MAAM,GACN,SAAS,GACT,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,MAAM,GACN,KAAK,GACL,MAAM,GACN,aAAa,GACb,QAAQ,GACR,YAAY,GACZ,gBAAgB,GAChB,eAAe,CAAC;AAEtB,OAAO,QAAQ,sBAAsB,CAAC;IAElC,UAAU,uBAAuB;QAC7B,mBAAmB,EAAE,iBAAiB,CAAC;KAC1C;IAGD,UAAU,mBAAmB;QACzB,mBAAmB,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;KACrD;IAGD,UAAU,UAAU,CAAC,KAAK,GAAG,OAAO;QAChC,mBAAmB,CAAC,EAAE;YAClB,YAAY,CAAC,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;YAC1D,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;SACtE,CAAC;KACL;IAGD,UAAU,OAAO;QACb,gBAAgB,EAAE,uBAAuB,CAAC;KAC7C;IACD,UAAU,cAAc;QACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;KACvD;CACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grid palette namespace — the "set colours once, in the theme" path.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors MUI X DataGrid's `palette.DataGrid`. Every key DEFAULTS from the base
|
|
5
|
+
* MUI palette, so it is never a second source of truth: set `palette.divider`
|
|
6
|
+
* (or `palette.tanstackDataGrid.borderColor`) once and the grid follows.
|
|
7
|
+
*/
|
|
8
|
+
import type { Theme } from '@mui/material/styles';
|
|
9
|
+
export interface TanstackDataGridPalette {
|
|
10
|
+
headerBg: string;
|
|
11
|
+
headerColor: string;
|
|
12
|
+
borderColor: string;
|
|
13
|
+
pinnedBg: string;
|
|
14
|
+
rowHoverBg: string;
|
|
15
|
+
selectedBg: string;
|
|
16
|
+
stripeBg: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the effective grid palette: user overrides
|
|
20
|
+
* (`theme.palette.tanstackDataGrid`) layered on defaults derived from the base
|
|
21
|
+
* MUI palette.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveDataGridPalette(theme: Theme): TanstackDataGridPalette;
|
|
24
|
+
//# sourceMappingURL=palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/theme/palette.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,uBAAuB,CAa5E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveDataGridPalette = resolveDataGridPalette;
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the effective grid palette: user overrides
|
|
6
|
+
* (`theme.palette.tanstackDataGrid`) layered on defaults derived from the base
|
|
7
|
+
* MUI palette.
|
|
8
|
+
*/
|
|
9
|
+
function resolveDataGridPalette(theme) {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
11
|
+
const p = theme.palette;
|
|
12
|
+
const user = (_a = p.tanstackDataGrid) !== null && _a !== void 0 ? _a : {};
|
|
13
|
+
const dark = p.mode === 'dark';
|
|
14
|
+
return {
|
|
15
|
+
headerBg: (_b = user.headerBg) !== null && _b !== void 0 ? _b : (dark ? p.grey[900] : p.grey[100]),
|
|
16
|
+
headerColor: (_c = user.headerColor) !== null && _c !== void 0 ? _c : p.text.secondary,
|
|
17
|
+
borderColor: (_d = user.borderColor) !== null && _d !== void 0 ? _d : p.divider,
|
|
18
|
+
pinnedBg: (_e = user.pinnedBg) !== null && _e !== void 0 ? _e : p.background.paper,
|
|
19
|
+
rowHoverBg: (_f = user.rowHoverBg) !== null && _f !== void 0 ? _f : p.action.hover,
|
|
20
|
+
selectedBg: (_g = user.selectedBg) !== null && _g !== void 0 ? _g : p.action.selected,
|
|
21
|
+
stripeBg: (_h = user.stripeBg) !== null && _h !== void 0 ? _h : (dark ? 'rgba(255,255,255,0.03)' : 'rgba(0,0,0,0.02)'),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design tokens for the data grid.
|
|
3
|
+
*
|
|
4
|
+
* Tokens are CSS custom properties whose DEFAULTS derive from the MUI theme
|
|
5
|
+
* (see `use-data-table-tokens.ts`). They are an optional override surface — the
|
|
6
|
+
* MUI theme remains the single source of truth. This mirrors how MUI X DataGrid
|
|
7
|
+
* exposes `--DataGrid-*` variables that default from `palette.DataGrid`.
|
|
8
|
+
*/
|
|
9
|
+
export type DataTableDensity = 'compact' | 'standard' | 'comfortable';
|
|
10
|
+
export interface DensityTokens {
|
|
11
|
+
rowHeight: number;
|
|
12
|
+
headerHeight: number;
|
|
13
|
+
cellPaddingX: number;
|
|
14
|
+
cellPaddingY: number;
|
|
15
|
+
fontSize: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const DENSITY_PRESETS: Record<DataTableDensity, DensityTokens>;
|
|
18
|
+
/**
|
|
19
|
+
* The themeable CSS-variable names. Keep this the single registry of token names
|
|
20
|
+
* so render components and the resolver never drift.
|
|
21
|
+
*/
|
|
22
|
+
export declare const DT_VARS: {
|
|
23
|
+
readonly borderColor: "--dt-border-color";
|
|
24
|
+
readonly headerBg: "--dt-header-bg";
|
|
25
|
+
readonly headerColor: "--dt-header-color";
|
|
26
|
+
readonly rowBg: "--dt-row-bg";
|
|
27
|
+
readonly rowBgHover: "--dt-row-bg-hover";
|
|
28
|
+
readonly rowBgSelected: "--dt-row-bg-selected";
|
|
29
|
+
readonly rowBgStripe: "--dt-row-bg-stripe";
|
|
30
|
+
readonly pinnedBg: "--dt-pinned-bg";
|
|
31
|
+
readonly pinnedShadow: "--dt-pinned-shadow";
|
|
32
|
+
readonly resizeHandle: "--dt-resize-handle";
|
|
33
|
+
readonly rowHeight: "--dt-row-height";
|
|
34
|
+
readonly headerHeight: "--dt-header-height";
|
|
35
|
+
readonly cellPaddingX: "--dt-cell-padding-x";
|
|
36
|
+
readonly cellPaddingY: "--dt-cell-padding-y";
|
|
37
|
+
readonly fontSize: "--dt-font-size";
|
|
38
|
+
readonly radius: "--dt-radius";
|
|
39
|
+
readonly zHeader: "--dt-z-header";
|
|
40
|
+
readonly zPinned: "--dt-z-pinned";
|
|
41
|
+
};
|
|
42
|
+
export type DataTableVarName = (typeof DT_VARS)[keyof typeof DT_VARS];
|
|
43
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAInE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;CAmBV,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Design tokens for the data grid.
|
|
4
|
+
*
|
|
5
|
+
* Tokens are CSS custom properties whose DEFAULTS derive from the MUI theme
|
|
6
|
+
* (see `use-data-table-tokens.ts`). They are an optional override surface — the
|
|
7
|
+
* MUI theme remains the single source of truth. This mirrors how MUI X DataGrid
|
|
8
|
+
* exposes `--DataGrid-*` variables that default from `palette.DataGrid`.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.DT_VARS = exports.DENSITY_PRESETS = void 0;
|
|
12
|
+
exports.DENSITY_PRESETS = {
|
|
13
|
+
compact: { rowHeight: 36, headerHeight: 40, cellPaddingX: 8, cellPaddingY: 4, fontSize: '0.8125rem' },
|
|
14
|
+
standard: { rowHeight: 48, headerHeight: 52, cellPaddingX: 12, cellPaddingY: 8, fontSize: '0.875rem' },
|
|
15
|
+
comfortable: { rowHeight: 60, headerHeight: 64, cellPaddingX: 16, cellPaddingY: 12, fontSize: '0.9375rem' },
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The themeable CSS-variable names. Keep this the single registry of token names
|
|
19
|
+
* so render components and the resolver never drift.
|
|
20
|
+
*/
|
|
21
|
+
exports.DT_VARS = {
|
|
22
|
+
borderColor: '--dt-border-color',
|
|
23
|
+
headerBg: '--dt-header-bg',
|
|
24
|
+
headerColor: '--dt-header-color',
|
|
25
|
+
rowBg: '--dt-row-bg',
|
|
26
|
+
rowBgHover: '--dt-row-bg-hover',
|
|
27
|
+
rowBgSelected: '--dt-row-bg-selected',
|
|
28
|
+
rowBgStripe: '--dt-row-bg-stripe',
|
|
29
|
+
pinnedBg: '--dt-pinned-bg',
|
|
30
|
+
pinnedShadow: '--dt-pinned-shadow',
|
|
31
|
+
resizeHandle: '--dt-resize-handle',
|
|
32
|
+
rowHeight: '--dt-row-height',
|
|
33
|
+
headerHeight: '--dt-header-height',
|
|
34
|
+
cellPaddingX: '--dt-cell-padding-x',
|
|
35
|
+
cellPaddingY: '--dt-cell-padding-y',
|
|
36
|
+
fontSize: '--dt-font-size',
|
|
37
|
+
radius: '--dt-radius',
|
|
38
|
+
zHeader: '--dt-z-header',
|
|
39
|
+
zPinned: '--dt-z-pinned',
|
|
40
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-data-table-tokens.d.ts","sourceRoot":"","sources":["../../src/theme/use-data-table-tokens.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG3E,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,gBAA6B,GAAG,aAAa,CA2BxF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useDataTableTokens = useDataTableTokens;
|
|
4
|
+
/**
|
|
5
|
+
* Resolves the full set of `--dt-*` CSS variables from the MUI theme + density.
|
|
6
|
+
* Apply the returned object to the grid root's `style`; every cell/row/header
|
|
7
|
+
* then reads its visuals from `var(--dt-*)`, so a theme change restyles the grid
|
|
8
|
+
* with no per-cell work.
|
|
9
|
+
*/
|
|
10
|
+
const styles_1 = require("@mui/material/styles");
|
|
11
|
+
const react_1 = require("react");
|
|
12
|
+
const tokens_1 = require("./tokens");
|
|
13
|
+
const palette_1 = require("./palette");
|
|
14
|
+
function useDataTableTokens(density = 'standard') {
|
|
15
|
+
const theme = (0, styles_1.useTheme)();
|
|
16
|
+
return (0, react_1.useMemo)(() => {
|
|
17
|
+
var _a;
|
|
18
|
+
const pal = (0, palette_1.resolveDataGridPalette)(theme);
|
|
19
|
+
const d = (_a = tokens_1.DENSITY_PRESETS[density]) !== null && _a !== void 0 ? _a : tokens_1.DENSITY_PRESETS.standard;
|
|
20
|
+
const vars = {
|
|
21
|
+
[tokens_1.DT_VARS.borderColor]: pal.borderColor,
|
|
22
|
+
[tokens_1.DT_VARS.headerBg]: pal.headerBg,
|
|
23
|
+
[tokens_1.DT_VARS.headerColor]: pal.headerColor,
|
|
24
|
+
[tokens_1.DT_VARS.rowBg]: theme.palette.background.paper,
|
|
25
|
+
[tokens_1.DT_VARS.rowBgHover]: pal.rowHoverBg,
|
|
26
|
+
[tokens_1.DT_VARS.rowBgSelected]: pal.selectedBg,
|
|
27
|
+
[tokens_1.DT_VARS.rowBgStripe]: pal.stripeBg,
|
|
28
|
+
[tokens_1.DT_VARS.pinnedBg]: pal.pinnedBg,
|
|
29
|
+
[tokens_1.DT_VARS.pinnedShadow]: theme.palette.mode === 'dark' ? 'rgba(0,0,0,0.5)' : 'rgba(0,0,0,0.18)',
|
|
30
|
+
[tokens_1.DT_VARS.resizeHandle]: theme.palette.primary.main,
|
|
31
|
+
[tokens_1.DT_VARS.rowHeight]: `${d.rowHeight}px`,
|
|
32
|
+
[tokens_1.DT_VARS.headerHeight]: `${d.headerHeight}px`,
|
|
33
|
+
[tokens_1.DT_VARS.cellPaddingX]: `${d.cellPaddingX}px`,
|
|
34
|
+
[tokens_1.DT_VARS.cellPaddingY]: `${d.cellPaddingY}px`,
|
|
35
|
+
[tokens_1.DT_VARS.fontSize]: d.fontSize,
|
|
36
|
+
[tokens_1.DT_VARS.radius]: `${theme.shape.borderRadius}px`,
|
|
37
|
+
[tokens_1.DT_VARS.zHeader]: 3,
|
|
38
|
+
[tokens_1.DT_VARS.zPinned]: 2,
|
|
39
|
+
};
|
|
40
|
+
return vars;
|
|
41
|
+
}, [theme, density]);
|
|
42
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { ColumnPinningState, SortingState, ColumnOrderState, Row, Table } from '@tanstack/react-table';
|
|
2
|
+
import type { ColumnFilterState } from './filter.types';
|
|
3
|
+
import type { SelectionState } from './selection.types';
|
|
4
|
+
import type { ServerExportResult } from './export.types';
|
|
5
|
+
import type { TableState, TableFilters, PaginationModel } from './state.types';
|
|
6
|
+
export interface DataRefreshApiOptions {
|
|
7
|
+
resetPagination?: boolean;
|
|
8
|
+
force?: boolean;
|
|
9
|
+
reason?: string;
|
|
10
|
+
}
|
|
11
|
+
export type DataRefreshApiInput = boolean | DataRefreshApiOptions;
|
|
12
|
+
export interface DataTableExportApiOptions {
|
|
13
|
+
filename?: string;
|
|
14
|
+
onlyVisibleColumns?: boolean;
|
|
15
|
+
onlySelectedRows?: boolean;
|
|
16
|
+
includeHeaders?: boolean;
|
|
17
|
+
chunkSize?: number;
|
|
18
|
+
strictTotalCheck?: boolean;
|
|
19
|
+
sanitizeCSV?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** Serializable layout snapshot returned by `api.layout.saveLayout()`. */
|
|
22
|
+
export interface SavedLayout {
|
|
23
|
+
columnVisibility: Record<string, boolean>;
|
|
24
|
+
columnOrder: string[];
|
|
25
|
+
columnSizing: Record<string, number>;
|
|
26
|
+
columnPinning: ColumnPinningState;
|
|
27
|
+
pagination?: PaginationModel;
|
|
28
|
+
globalFilter?: string;
|
|
29
|
+
columnFilter?: ColumnFilterState;
|
|
30
|
+
}
|
|
31
|
+
/** Imperative handle exposed via `apiRef`. */
|
|
32
|
+
export interface DataTableApi<T = any> {
|
|
33
|
+
table: {
|
|
34
|
+
getTable: () => Table<T>;
|
|
35
|
+
};
|
|
36
|
+
columnVisibility: {
|
|
37
|
+
showColumn: (columnId: string) => void;
|
|
38
|
+
hideColumn: (columnId: string) => void;
|
|
39
|
+
toggleColumn: (columnId: string) => void;
|
|
40
|
+
showAllColumns: () => void;
|
|
41
|
+
hideAllColumns: () => void;
|
|
42
|
+
resetColumnVisibility: () => void;
|
|
43
|
+
};
|
|
44
|
+
columnOrdering: {
|
|
45
|
+
setColumnOrder: (columnOrder: ColumnOrderState) => void;
|
|
46
|
+
moveColumn: (columnId: string, toIndex: number) => void;
|
|
47
|
+
resetColumnOrder: () => void;
|
|
48
|
+
};
|
|
49
|
+
columnPinning: {
|
|
50
|
+
pinColumnLeft: (columnId: string) => void;
|
|
51
|
+
pinColumnRight: (columnId: string) => void;
|
|
52
|
+
unpinColumn: (columnId: string) => void;
|
|
53
|
+
setPinning: (pinning: ColumnPinningState) => void;
|
|
54
|
+
resetColumnPinning: () => void;
|
|
55
|
+
};
|
|
56
|
+
columnResizing: {
|
|
57
|
+
resizeColumn: (columnId: string, width: number) => void;
|
|
58
|
+
autoSizeColumn: (columnId: string) => void;
|
|
59
|
+
autoSizeAllColumns: () => void;
|
|
60
|
+
resetColumnSizing: () => void;
|
|
61
|
+
};
|
|
62
|
+
filtering: {
|
|
63
|
+
setGlobalFilter: (filter: string) => void;
|
|
64
|
+
clearGlobalFilter: () => void;
|
|
65
|
+
setColumnFilters: (filters: ColumnFilterState, isApply?: boolean) => void;
|
|
66
|
+
addColumnFilter: (columnId: string, operator: string, value: any) => void;
|
|
67
|
+
removeColumnFilter: (filterId: string) => void;
|
|
68
|
+
clearAllFilters: () => void;
|
|
69
|
+
resetFilters: () => void;
|
|
70
|
+
};
|
|
71
|
+
sorting: {
|
|
72
|
+
setSorting: (sorting: SortingState) => void;
|
|
73
|
+
sortColumn: (columnId: string, direction: 'asc' | 'desc' | false) => void;
|
|
74
|
+
clearSorting: () => void;
|
|
75
|
+
resetSorting: () => void;
|
|
76
|
+
};
|
|
77
|
+
pagination: {
|
|
78
|
+
goToPage: (pageIndex: number) => void;
|
|
79
|
+
nextPage: () => void;
|
|
80
|
+
previousPage: () => void;
|
|
81
|
+
setPageSize: (pageSize: number) => void;
|
|
82
|
+
goToFirstPage: () => void;
|
|
83
|
+
goToLastPage: () => void;
|
|
84
|
+
resetPagination?: () => void;
|
|
85
|
+
};
|
|
86
|
+
selection: {
|
|
87
|
+
selectRow: (rowId: string) => void;
|
|
88
|
+
deselectRow: (rowId: string) => void;
|
|
89
|
+
toggleRowSelection: (rowId: string) => void;
|
|
90
|
+
selectAll: () => void;
|
|
91
|
+
deselectAll: () => void;
|
|
92
|
+
toggleSelectAll: () => void;
|
|
93
|
+
getSelectionState: () => SelectionState;
|
|
94
|
+
getSelectedCount: () => number;
|
|
95
|
+
getSelectedRows: () => Row<T>[];
|
|
96
|
+
isRowSelected: (rowId: string) => boolean;
|
|
97
|
+
};
|
|
98
|
+
data: {
|
|
99
|
+
refresh: (options?: DataRefreshApiInput) => void;
|
|
100
|
+
reload: (options?: DataRefreshApiOptions) => void;
|
|
101
|
+
resetAll: () => void;
|
|
102
|
+
getAllData: () => T[];
|
|
103
|
+
getRowData: (rowId: string) => T | undefined;
|
|
104
|
+
getRowByIndex: (index: number) => T | undefined;
|
|
105
|
+
updateRow: (rowId: string, updates: Partial<T>) => void;
|
|
106
|
+
updateRowByIndex: (index: number, updates: Partial<T>) => void;
|
|
107
|
+
insertRow: (newRow: T, index?: number) => void;
|
|
108
|
+
deleteRow: (rowId: string) => void;
|
|
109
|
+
deleteRowByIndex: (index: number) => void;
|
|
110
|
+
deleteSelectedRows: () => void;
|
|
111
|
+
replaceAllData: (newData: T[]) => void;
|
|
112
|
+
updateMultipleRows: (updates: Array<{
|
|
113
|
+
rowId: string;
|
|
114
|
+
data: Partial<T>;
|
|
115
|
+
}>) => void;
|
|
116
|
+
insertMultipleRows: (newRows: T[], startIndex?: number) => void;
|
|
117
|
+
deleteMultipleRows: (rowIds: string[]) => void;
|
|
118
|
+
updateField: (rowId: string, fieldName: keyof T, value: any) => void;
|
|
119
|
+
updateFieldByIndex: (index: number, fieldName: keyof T, value: any) => void;
|
|
120
|
+
findRows: (predicate: (row: T) => boolean) => T[];
|
|
121
|
+
findRowIndex: (predicate: (row: T) => boolean) => number;
|
|
122
|
+
getDataCount: () => number;
|
|
123
|
+
getFilteredDataCount: () => number;
|
|
124
|
+
};
|
|
125
|
+
layout: {
|
|
126
|
+
resetLayout: () => void;
|
|
127
|
+
resetAll: () => void;
|
|
128
|
+
saveLayout: () => SavedLayout;
|
|
129
|
+
restoreLayout: (layout: Partial<SavedLayout>) => void;
|
|
130
|
+
};
|
|
131
|
+
state: {
|
|
132
|
+
getTableState: () => Partial<TableState>;
|
|
133
|
+
getCurrentFilters: () => ColumnFilterState;
|
|
134
|
+
getCurrentSorting: () => SortingState;
|
|
135
|
+
getCurrentPagination: () => PaginationModel;
|
|
136
|
+
getCurrentSelection: () => SelectionState;
|
|
137
|
+
getGlobalFilter: () => string;
|
|
138
|
+
};
|
|
139
|
+
export: {
|
|
140
|
+
exportCSV: (options?: DataTableExportApiOptions) => Promise<void>;
|
|
141
|
+
exportExcel: (options?: DataTableExportApiOptions) => Promise<void>;
|
|
142
|
+
exportServerData: (options: {
|
|
143
|
+
format: 'csv' | 'excel';
|
|
144
|
+
filename?: string;
|
|
145
|
+
fetchData: (filters?: Partial<TableFilters>, selection?: SelectionState, signal?: AbortSignal) => Promise<ServerExportResult<T>>;
|
|
146
|
+
pageSize?: number;
|
|
147
|
+
includeHeaders?: boolean;
|
|
148
|
+
chunkSize?: number;
|
|
149
|
+
strictTotalCheck?: boolean;
|
|
150
|
+
sanitizeCSV?: boolean;
|
|
151
|
+
}) => Promise<void>;
|
|
152
|
+
isExporting: () => boolean;
|
|
153
|
+
cancelExport: () => void;
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=api.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.types.d.ts","sourceRoot":"","sources":["../../src/types/api.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ColumnDef, ColumnDefBase, RowData, Column } from '@tanstack/react-table';
|
|
2
|
+
import type { ComponentType } from 'react';
|
|
3
|
+
import type { ColumnFilterRule } from './filter.types';
|
|
4
|
+
export declare const DEFAULT_SELECTION_COLUMN_ID = "_selection";
|
|
5
|
+
export declare const DEFAULT_EXPAND_COLUMN_ID = "_expanding";
|
|
6
|
+
interface ColumnExportContext<TData, TValue> {
|
|
7
|
+
value: any;
|
|
8
|
+
row: TData;
|
|
9
|
+
rowIndex: number;
|
|
10
|
+
columnId: string;
|
|
11
|
+
columnDef: ColumnDefBase<TData, TValue>;
|
|
12
|
+
}
|
|
13
|
+
interface ColumnInputProps<TData extends RowData, TValue> {
|
|
14
|
+
value: any;
|
|
15
|
+
onChange: (value: any) => void;
|
|
16
|
+
filter: ColumnFilterRule;
|
|
17
|
+
column: Column<TData, TValue>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Extra column-definition options, augmented onto every TanStack `ColumnDef`.
|
|
21
|
+
* (TanStack's own `size`, `minSize`, `maxSize`, `enableResizing`, `enableSorting`,
|
|
22
|
+
* `header`, `cell` remain available too.)
|
|
23
|
+
*/
|
|
24
|
+
declare module '@tanstack/react-table' {
|
|
25
|
+
interface ColumnDefBase<TData extends RowData, TValue> {
|
|
26
|
+
/** Data type — drives default filter operators/inputs. */
|
|
27
|
+
type?: 'boolean' | 'number' | 'date' | 'select' | 'text';
|
|
28
|
+
/** Options for `type: 'select'` columns. */
|
|
29
|
+
options?: {
|
|
30
|
+
label: string;
|
|
31
|
+
value: string;
|
|
32
|
+
}[];
|
|
33
|
+
/** Cell + header text alignment. */
|
|
34
|
+
align?: 'left' | 'center' | 'right';
|
|
35
|
+
/** Mark the column as filterable in the column-filter UI. */
|
|
36
|
+
filterable?: boolean;
|
|
37
|
+
/** Wrap cell text instead of truncating with an ellipsis (default: false). */
|
|
38
|
+
wrapText?: boolean;
|
|
39
|
+
/** Conditional class for body cells (DataGrid-style). */
|
|
40
|
+
cellClassName?: string | ((context: {
|
|
41
|
+
value: any;
|
|
42
|
+
row: TData;
|
|
43
|
+
}) => string);
|
|
44
|
+
/** Conditional class for the header cell. */
|
|
45
|
+
headerClassName?: string;
|
|
46
|
+
hideInExport?: boolean;
|
|
47
|
+
exportHeader?: string | ((context: {
|
|
48
|
+
columnId: string;
|
|
49
|
+
defaultHeader: string;
|
|
50
|
+
columnDef: ColumnDefBase<TData, TValue>;
|
|
51
|
+
}) => string);
|
|
52
|
+
exportValue?: (context: ColumnExportContext<TData, TValue>) => any;
|
|
53
|
+
exportFormat?: 'auto' | 'string' | 'number' | 'boolean' | 'json' | 'date' | ((context: ColumnExportContext<TData, TValue>) => any);
|
|
54
|
+
editComponent?: ComponentType<ColumnInputProps<TData, TValue>>;
|
|
55
|
+
filterComponent?: ComponentType<ColumnInputProps<TData, TValue>>;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export type DataTableColumn<TData extends RowData, TValue = unknown> = ColumnDef<TData, TValue>;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=column.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.types.d.ts","sourceRoot":"","sources":["../../src/types/column.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,eAAO,MAAM,2BAA2B,eAAe,CAAC;AACxD,eAAO,MAAM,wBAAwB,eAAe,CAAC;AAErD,UAAU,mBAAmB,CAAC,KAAK,EAAE,MAAM;IACvC,KAAK,EAAE,GAAG,CAAC;IACX,GAAG,EAAE,KAAK,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,UAAU,gBAAgB,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM;IACpD,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,OAAO,QAAQ,uBAAuB,CAAC;IACnC,UAAU,aAAa,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM;QACjD,0DAA0D;QAC1D,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;QACzD,4CAA4C;QAC5C,OAAO,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC7C,oCAAoC;QACpC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;QACpC,6DAA6D;QAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,8EAA8E;QAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,yDAAyD;QACzD,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE;YAAE,KAAK,EAAE,GAAG,CAAC;YAAC,GAAG,EAAE,KAAK,CAAA;SAAE,KAAK,MAAM,CAAC,CAAC;QAC3E,6CAA6C;QAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;QAEzB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;SAAE,KAAK,MAAM,CAAC,CAAC;QACpI,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC;QACnE,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAEnI,aAAa,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,eAAe,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;KACpE;CACJ;AAED,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_EXPAND_COLUMN_ID = exports.DEFAULT_SELECTION_COLUMN_ID = void 0;
|
|
4
|
+
// Values kept identical to v1 (`_selection` / `_expanding`) so persisted v1 layout
|
|
5
|
+
// snapshots (columnOrder/visibility/pinning) still resolve after upgrade.
|
|
6
|
+
exports.DEFAULT_SELECTION_COLUMN_ID = '_selection';
|
|
7
|
+
exports.DEFAULT_EXPAND_COLUMN_ID = '_expanding';
|