@tipolox/litgrid-react 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.
@@ -0,0 +1,67 @@
1
+ import '@tipolox/litgrid-web';
2
+ import type { BestFitColumnWidth, ColumnReorderDetail, ColumnStateChangeDetail, ColumnVisibilityChangeDetail, DataGridElement, GridColumn, GridColumnState, GridConfig, GridFilter, GridPaginationState, GridSelection, GridTheme, SelectionIntent } from '@tipolox/litgrid-web';
3
+ export type DataGridProps = {
4
+ data: unknown[];
5
+ columns?: GridColumn[];
6
+ config?: GridConfig;
7
+ theme?: GridTheme;
8
+ ariaLabel?: string;
9
+ ariaDescription?: string;
10
+ screenReaderAnnouncements?: boolean;
11
+ height?: number;
12
+ rowHeight?: number;
13
+ overscan?: number;
14
+ columnOverscan?: number;
15
+ bestFitSampleSize?: number;
16
+ quickSearchDebounceThreshold?: number;
17
+ quickSearchDebounceMs?: number;
18
+ columnStateStorageKey?: string;
19
+ onColumnStateChange?: (detail: ColumnStateChangeDetail) => void;
20
+ onColumnReorder?: (detail: ColumnReorderDetail) => void;
21
+ onColumnVisibilityChange?: (detail: ColumnVisibilityChangeDetail) => void;
22
+ };
23
+ export type DataGridRef = {
24
+ readonly gridElement: DataGridElement | null;
25
+ getRowHeight(rowIndex: number): number;
26
+ getColumnWidth(column: GridColumn): number;
27
+ setRowHeight(rowIndex: number, height: number): void;
28
+ resetRowHeight(rowIndex: number): void;
29
+ resetAllRowHeights(): void;
30
+ setColumnWidth(columnKey: string, width: number): void;
31
+ resetColumnWidth(columnKey: string): void;
32
+ resetAllColumnWidths(): void;
33
+ moveColumn(columnKey: string, targetIndex: number): void;
34
+ getColumnOrder(): string[];
35
+ setColumnOrder(columnKeys: string[]): void;
36
+ resetColumnOrder(): void;
37
+ setColumnVisible(columnKey: string, visible: boolean): void;
38
+ isColumnVisible(columnKey: string): boolean;
39
+ getVisibleColumnKeys(): string[];
40
+ resetColumnVisibility(): void;
41
+ getColumnState(): GridColumnState;
42
+ setColumnState(state: GridColumnState): void;
43
+ resetColumnState(): void;
44
+ bestFitColumn(columnKey: string): number | null;
45
+ bestFitAllColumns(): BestFitColumnWidth[];
46
+ copySelectedCells(): Promise<boolean>;
47
+ copySelectedRows(): Promise<boolean>;
48
+ setQuickSearch(query: string): void;
49
+ clearQuickSearch(): void;
50
+ getQuickSearch(): string;
51
+ setFilter(filter: GridFilter): void;
52
+ clearFilter(columnKey?: string): void;
53
+ getFilters(): GridFilter[];
54
+ setPage(pageIndex: number): void;
55
+ setPageSize(pageSize: number): void;
56
+ getPagination(): GridPaginationState;
57
+ getTotalRowCount(): number;
58
+ selectRow(rowIndex: number, intent?: SelectionIntent): void;
59
+ selectAllRows(): void;
60
+ clearSelection(): void;
61
+ getSelection(): GridSelection;
62
+ isRowSelected(rowIndex: number): boolean;
63
+ isCellSelected(rowIndex: number, columnKey: string): boolean;
64
+ };
65
+ export type DataGridInstance = DataGridRef;
66
+ export declare const DataGrid: import("react").ForwardRefExoticComponent<DataGridProps & import("react").RefAttributes<DataGridRef>>;
67
+ //# sourceMappingURL=DataGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../src/DataGrid.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import '@tipolox/litgrid-web';
3
+ import { forwardRef, useEffect, useImperativeHandle, useRef } from 'react';
4
+ import { syncGridInputs } from './gridBindings.js';
5
+ const GRID_UNAVAILABLE_MESSAGE = 'LitGrid is not available before the React component is mounted.';
6
+ export const DataGrid = forwardRef(function DataGrid({ data, columns = [], config = {}, theme = 'light', ariaLabel = 'Data grid', ariaDescription = '', screenReaderAnnouncements = true, height = 320, rowHeight = 36, overscan = 4, columnOverscan = 2, bestFitSampleSize = 10, quickSearchDebounceThreshold = 10000, quickSearchDebounceMs = 150, columnStateStorageKey, onColumnStateChange, onColumnReorder, onColumnVisibilityChange }, forwardedRef) {
7
+ const gridRef = useRef(null);
8
+ const requireGridElement = () => {
9
+ if (!gridRef.current)
10
+ throw new Error(GRID_UNAVAILABLE_MESSAGE);
11
+ return gridRef.current;
12
+ };
13
+ useImperativeHandle(forwardedRef, () => ({
14
+ get gridElement() {
15
+ return gridRef.current;
16
+ },
17
+ getRowHeight: (rowIndex) => requireGridElement().getRowHeight(rowIndex),
18
+ getColumnWidth: (column) => requireGridElement().getColumnWidth(column),
19
+ setRowHeight: (rowIndex, heightVal) => requireGridElement().setRowHeight(rowIndex, heightVal),
20
+ resetRowHeight: (rowIndex) => requireGridElement().resetRowHeight(rowIndex),
21
+ resetAllRowHeights: () => requireGridElement().resetAllRowHeights(),
22
+ setColumnWidth: (columnKey, width) => requireGridElement().setColumnWidth(columnKey, width),
23
+ resetColumnWidth: (columnKey) => requireGridElement().resetColumnWidth(columnKey),
24
+ resetAllColumnWidths: () => requireGridElement().resetAllColumnWidths(),
25
+ moveColumn: (columnKey, targetIndex) => requireGridElement().moveColumn(columnKey, targetIndex),
26
+ getColumnOrder: () => requireGridElement().getColumnOrder(),
27
+ setColumnOrder: (columnKeys) => requireGridElement().setColumnOrder(columnKeys),
28
+ resetColumnOrder: () => requireGridElement().resetColumnOrder(),
29
+ setColumnVisible: (columnKey, visible) => requireGridElement().setColumnVisible(columnKey, visible),
30
+ isColumnVisible: (columnKey) => requireGridElement().isColumnVisible(columnKey),
31
+ getVisibleColumnKeys: () => requireGridElement().getVisibleColumnKeys(),
32
+ resetColumnVisibility: () => requireGridElement().resetColumnVisibility(),
33
+ getColumnState: () => requireGridElement().getColumnState(),
34
+ setColumnState: (state) => requireGridElement().setColumnState(state),
35
+ resetColumnState: () => requireGridElement().resetColumnState(),
36
+ bestFitColumn: (columnKey) => requireGridElement().bestFitColumn(columnKey),
37
+ bestFitAllColumns: () => requireGridElement().bestFitAllColumns(),
38
+ copySelectedCells: () => requireGridElement().copySelectedCells(),
39
+ copySelectedRows: () => requireGridElement().copySelectedRows(),
40
+ setQuickSearch: (query) => requireGridElement().setQuickSearch(query),
41
+ clearQuickSearch: () => requireGridElement().clearQuickSearch(),
42
+ getQuickSearch: () => requireGridElement().getQuickSearch(),
43
+ setFilter: (filter) => requireGridElement().setFilter(filter),
44
+ clearFilter: (columnKey) => requireGridElement().clearFilter(columnKey),
45
+ getFilters: () => requireGridElement().getFilters(),
46
+ setPage: (pageIndex) => requireGridElement().setPage(pageIndex),
47
+ setPageSize: (pageSize) => requireGridElement().setPageSize(pageSize),
48
+ getPagination: () => requireGridElement().getPagination(),
49
+ getTotalRowCount: () => requireGridElement().getTotalRowCount(),
50
+ selectRow: (rowIndex, intent) => requireGridElement().selectRow(rowIndex, intent),
51
+ selectAllRows: () => requireGridElement().selectAllRows(),
52
+ clearSelection: () => requireGridElement().clearSelection(),
53
+ getSelection: () => requireGridElement().getSelection(),
54
+ isRowSelected(rowIndex) {
55
+ return requireGridElement().isRowSelected(rowIndex);
56
+ },
57
+ isCellSelected(rowIndex, columnKey) {
58
+ return requireGridElement().isCellSelected(rowIndex, columnKey);
59
+ }
60
+ }), []);
61
+ useEffect(() => {
62
+ const grid = gridRef.current;
63
+ if (!grid)
64
+ return;
65
+ syncGridInputs(grid, {
66
+ data,
67
+ columns,
68
+ config,
69
+ theme,
70
+ ariaLabel,
71
+ ariaDescription,
72
+ screenReaderAnnouncements,
73
+ height,
74
+ rowHeight,
75
+ overscan,
76
+ columnOverscan,
77
+ bestFitSampleSize,
78
+ quickSearchDebounceThreshold,
79
+ quickSearchDebounceMs,
80
+ columnStateStorageKey
81
+ });
82
+ }, [
83
+ data,
84
+ columns,
85
+ config,
86
+ theme,
87
+ ariaLabel,
88
+ ariaDescription,
89
+ screenReaderAnnouncements,
90
+ height,
91
+ rowHeight,
92
+ overscan,
93
+ columnOverscan,
94
+ bestFitSampleSize,
95
+ quickSearchDebounceThreshold,
96
+ quickSearchDebounceMs,
97
+ columnStateStorageKey
98
+ ]);
99
+ useEffect(() => {
100
+ const element = gridRef.current;
101
+ if (!element || !onColumnStateChange)
102
+ return;
103
+ const handleColumnStateChange = (event) => {
104
+ onColumnStateChange(event.detail);
105
+ };
106
+ element.addEventListener('column-state-change', handleColumnStateChange);
107
+ return () => element.removeEventListener('column-state-change', handleColumnStateChange);
108
+ }, [onColumnStateChange]);
109
+ useEffect(() => {
110
+ const element = gridRef.current;
111
+ if (!element || !onColumnReorder)
112
+ return;
113
+ const handleColumnReorder = (event) => {
114
+ onColumnReorder(event.detail);
115
+ };
116
+ element.addEventListener('column-reorder', handleColumnReorder);
117
+ return () => element.removeEventListener('column-reorder', handleColumnReorder);
118
+ }, [onColumnReorder]);
119
+ useEffect(() => {
120
+ const element = gridRef.current;
121
+ if (!element || !onColumnVisibilityChange)
122
+ return;
123
+ const handleColumnVisibilityChange = (event) => {
124
+ onColumnVisibilityChange(event.detail);
125
+ };
126
+ element.addEventListener('column-visibility-change', handleColumnVisibilityChange);
127
+ return () => element.removeEventListener('column-visibility-change', handleColumnVisibilityChange);
128
+ }, [onColumnVisibilityChange]);
129
+ return _jsx("yc-grid", { ref: gridRef });
130
+ });
131
+ //# sourceMappingURL=DataGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGrid.js","sourceRoot":"","sources":["../src/DataGrid.tsx"],"names":[],"mappings":"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"}
package/dist/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Tipolox
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,20 @@
1
+ import type { DataGridElement, GridColumn, GridConfig, GridTheme } from '@tipolox/litgrid-web';
2
+ export type ReactGridInputs = {
3
+ data: unknown[];
4
+ columns: GridColumn[];
5
+ config: GridConfig;
6
+ theme: GridTheme;
7
+ ariaLabel: string;
8
+ ariaDescription: string;
9
+ screenReaderAnnouncements: boolean;
10
+ height: number;
11
+ rowHeight: number;
12
+ overscan: number;
13
+ columnOverscan: number;
14
+ bestFitSampleSize: number;
15
+ quickSearchDebounceThreshold: number;
16
+ quickSearchDebounceMs: number;
17
+ columnStateStorageKey?: string;
18
+ };
19
+ export declare function syncGridInputs(grid: DataGridElement, inputs: ReactGridInputs): void;
20
+ //# sourceMappingURL=gridBindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridBindings.d.ts","sourceRoot":"","sources":["../src/gridBindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,EACV,MAAM,sBAAsB,CAAA;AAE7B,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,SAAS,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,yBAAyB,EAAE,OAAO,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,4BAA4B,EAAE,MAAM,CAAA;IACpC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B,CAAA;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,eAAe,GACtB,IAAI,CAgBN"}
@@ -0,0 +1,18 @@
1
+ export function syncGridInputs(grid, inputs) {
2
+ grid.data = inputs.data;
3
+ grid.columns = inputs.columns;
4
+ grid.config = inputs.config;
5
+ grid.theme = inputs.theme;
6
+ grid.ariaLabel = inputs.ariaLabel;
7
+ grid.ariaDescription = inputs.ariaDescription;
8
+ grid.screenReaderAnnouncements = inputs.screenReaderAnnouncements;
9
+ grid.viewportHeight = inputs.height;
10
+ grid.virtualRowHeight = inputs.rowHeight;
11
+ grid.overscanCount = inputs.overscan;
12
+ grid.columnOverscanCount = inputs.columnOverscan;
13
+ grid.bestFitSampleSize = inputs.bestFitSampleSize;
14
+ grid.quickSearchDebounceThreshold = inputs.quickSearchDebounceThreshold;
15
+ grid.quickSearchDebounceMs = inputs.quickSearchDebounceMs;
16
+ grid.columnStateStorageKey = inputs.columnStateStorageKey ?? null;
17
+ }
18
+ //# sourceMappingURL=gridBindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridBindings.js","sourceRoot":"","sources":["../src/gridBindings.ts"],"names":[],"mappings":"AAyBA,MAAM,UAAU,cAAc,CAC5B,IAAqB,EACrB,MAAuB;IAEvB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;IACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;IACzB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;IACjC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAA;IAC7C,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAA;IACjE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAA;IACnC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAA;IACxC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAA;IACpC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,cAAc,CAAA;IAChD,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACjD,IAAI,CAAC,4BAA4B,GAAG,MAAM,CAAC,4BAA4B,CAAA;IACvE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAA;IACzD,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,IAAI,IAAI,CAAA;AACnE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { DataGrid } from './DataGrid.js';
2
+ export type { DataGridInstance, DataGridProps, DataGridRef } from './DataGrid.js';
3
+ export type { BestFitColumnWidth, ColumnReorderDetail, ColumnStateChangeDetail, ColumnVisibilityChangeDetail, DataGridElement, GridColumn, GridColumnState, GridConfig, GridFilter, GridPaginationState, GridSelection, GridTheme, SelectionIntent } from '@tipolox/litgrid-web';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACjF,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,eAAe,EACf,UAAU,EACV,eAAe,EACf,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,eAAe,EAChB,MAAM,sBAAsB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { DataGrid } from './DataGrid.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@tipolox/litgrid-react",
3
+ "version": "1.0.0",
4
+ "description": "React integration for LitGrid.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./package.json": "./package.json"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "keywords": [
21
+ "data-grid",
22
+ "grid",
23
+ "react",
24
+ "web-components"
25
+ ],
26
+ "author": "",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/tipolox/litgrid.git",
31
+ "directory": "packages/grid-react"
32
+ },
33
+ "homepage": "https://github.com/tipolox/litgrid#readme",
34
+ "bugs": {
35
+ "url": "https://github.com/tipolox/litgrid/issues"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "dependencies": {
41
+ "@tipolox/litgrid-web": "^1.0.0"
42
+ },
43
+ "peerDependencies": {
44
+ "react": "^19.2.5",
45
+ "react-dom": "^19.2.5"
46
+ },
47
+ "devDependencies": {
48
+ "@types/react": "^19.2.14",
49
+ "@types/react-dom": "^19.2.3",
50
+ "react": "^19.2.5",
51
+ "react-dom": "^19.2.5"
52
+ },
53
+ "scripts": {
54
+ "prebuild": "node -e \"const fs=require('node:fs'); fs.rmSync('dist',{recursive:true,force:true}); fs.mkdirSync('dist',{recursive:true}); fs.copyFileSync('../../LICENSE','dist/LICENSE')\"",
55
+ "build": "tsc -p tsconfig.build.json",
56
+ "test": "echo \"Error: no test specified\" && exit 1"
57
+ }
58
+ }