@ehfuse/mui-virtual-data-table 1.0.1
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/LICENSE +21 -0
- package/README.md +141 -0
- package/dist/OverlayScrollbar.d.ts +81 -0
- package/dist/VirtualDataTable.d.ts +28 -0
- package/dist/VirtuosoScrollbar.d.ts +31 -0
- package/dist/components/Loading.d.ts +29 -0
- package/dist/components/Scrollbar.d.ts +39 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.esm.js +1887 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +1889 -0
- package/dist/index.js.map +1 -0
- package/dist/original/VirtualDataTable copy.d.ts +78 -0
- package/dist/original/VirtuosoScrollbar.d.ts +31 -0
- package/dist/types.d.ts +76 -0
- package/dist/utils/dragScrollUtils.d.ts +39 -0
- package/package.json +68 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 김영진 (Kim Young Jin)
|
|
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.
|
package/README.md
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# MUI Virtual Data Table
|
|
2
|
+
|
|
3
|
+
A high-performance virtual data table component for React with Material-UI integration, featuring virtualized rendering, infinite scroll, keyboard navigation, and customizable styling.
|
|
4
|
+
|
|
5
|
+
React와 Material-UI를 위한 고성능 가상화 데이터 테이블 컴포넌트입니다. 가상화 렌더링, 무한 스크롤, 키보드 탐색, 커스터마이징 가능한 스타일링을 제공합니다.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- 🚀 **High Performance**: Virtualized rendering with react-virtuoso for smooth scrolling with large datasets
|
|
10
|
+
- ♾️ **Infinite Scroll**: Built-in infinite scroll with automatic loading indicator
|
|
11
|
+
- ⌨️ **Keyboard Navigation**: Full keyboard support (Arrow keys, PageUp/Down, Home/End)
|
|
12
|
+
- 🎨 **Material-UI Integration**: Seamless integration with MUI components
|
|
13
|
+
- 🦓 **Zebra Striping**: Optional alternating row colors with custom color support
|
|
14
|
+
- 🔧 **TypeScript Support**: Full TypeScript support with comprehensive type definitions
|
|
15
|
+
- 🔄 **Sorting**: Built-in column sorting functionality
|
|
16
|
+
- 🎯 **Customizable**: Highly customizable columns, styling, and scrollbar options
|
|
17
|
+
- 📊 **Empty State**: Built-in empty state handling with custom message
|
|
18
|
+
- 🔍 **Loading State**: Smooth loading transitions with fade-out animation
|
|
19
|
+
- 📏 **Grouped Headers**: Support for grouped column headers with dynamic height calculation
|
|
20
|
+
- 🎨 **Custom Scrollbar**: Beautiful custom scrollbar with full customization options
|
|
21
|
+
|
|
22
|
+
## 주요 기능
|
|
23
|
+
|
|
24
|
+
- 🚀 **고성능**: react-virtuoso를 사용한 가상화 렌더링으로 대용량 데이터셋에서도 부드러운 스크롤
|
|
25
|
+
- ♾️ **무한 스크롤**: 자동 로딩 인디케이터가 포함된 무한 스크롤 기능
|
|
26
|
+
- ⌨️ **키보드 탐색**: 완전한 키보드 지원 (방향키, PageUp/Down, Home/End)
|
|
27
|
+
- 🎨 **Material-UI 통합**: MUI 컴포넌트와의 완벽한 통합
|
|
28
|
+
- 🦓 **얼룩말 줄무늬**: 사용자 지정 색상을 지원하는 선택적 행 교차 색상
|
|
29
|
+
- 🔧 **TypeScript 지원**: 포괄적인 타입 정의가 포함된 완전한 TypeScript 지원
|
|
30
|
+
- 🔄 **정렬**: 내장된 컬럼 정렬 기능
|
|
31
|
+
- 🎯 **커스터마이징**: 컬럼, 스타일링, 스크롤바 옵션의 높은 커스터마이징
|
|
32
|
+
- 📊 **빈 상태**: 커스텀 메시지를 지원하는 내장된 빈 상태 처리
|
|
33
|
+
- 🔍 **로딩 상태**: 페이드아웃 애니메이션이 적용된 부드러운 로딩 전환
|
|
34
|
+
- 📏 **그룹 헤더**: 동적 높이 계산을 지원하는 그룹화된 컬럼 헤더
|
|
35
|
+
- 🎨 **커스텀 스크롤바**: 완전한 커스터마이징 옵션을 갖춘 아름다운 커스텀 스크롤바
|
|
36
|
+
|
|
37
|
+
## Installation
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install @ehfuse/mui-virtual-data-table
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Peer Dependencies
|
|
44
|
+
|
|
45
|
+
This package requires the following peer dependencies:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm install react react-dom @mui/material react-virtuoso
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 📚 Documentation
|
|
52
|
+
|
|
53
|
+
For detailed API reference and usage examples:
|
|
54
|
+
|
|
55
|
+
- **[한국어 시작하기](./docs/ko/getting-started.md)** - API 설명 및 가이드
|
|
56
|
+
- **[한국어 예제 코드](./docs/ko/example.md)** - 다양한 사용 예제
|
|
57
|
+
- **[Getting Started (English)](./docs/en/getting-started.md)** - API reference and guide _(coming soon)_
|
|
58
|
+
|
|
59
|
+
## Quick Start
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
import { VirtualDataTable } from "@ehfuse/mui-virtual-data-table";
|
|
63
|
+
import type { DataColumn } from "@ehfuse/mui-virtual-data-table";
|
|
64
|
+
|
|
65
|
+
interface User {
|
|
66
|
+
id: number;
|
|
67
|
+
name: string;
|
|
68
|
+
email: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const columns: DataColumn<User>[] = [
|
|
72
|
+
{ id: "id", text: "ID", width: 80 },
|
|
73
|
+
{ id: "name", text: "Name", width: 200, sortable: true },
|
|
74
|
+
{ id: "email", text: "Email", width: 250 },
|
|
75
|
+
];
|
|
76
|
+
|
|
77
|
+
const data: User[] = [
|
|
78
|
+
{ id: 1, name: "John Doe", email: "john@example.com" },
|
|
79
|
+
{ id: 2, name: "Jane Smith", email: "jane@example.com" },
|
|
80
|
+
// ... more data
|
|
81
|
+
];
|
|
82
|
+
|
|
83
|
+
function App() {
|
|
84
|
+
return (
|
|
85
|
+
<VirtualDataTable
|
|
86
|
+
data={data}
|
|
87
|
+
columns={columns}
|
|
88
|
+
totalCount={data.length}
|
|
89
|
+
loading={false}
|
|
90
|
+
/>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Basic Props Signature
|
|
96
|
+
|
|
97
|
+
```tsx
|
|
98
|
+
<VirtualDataTable
|
|
99
|
+
// Required
|
|
100
|
+
data={T[]} // Data array
|
|
101
|
+
columns={DataColumn<T>[]} // Column definitions
|
|
102
|
+
totalCount={number} // Total data count
|
|
103
|
+
|
|
104
|
+
// Optional - Styling
|
|
105
|
+
striped={boolean | string} // Zebra striping (true: default gray (#f5f5f5), string: custom color, default: false)
|
|
106
|
+
rowDivider={boolean} // Show row borders (default: true)
|
|
107
|
+
rowHeight={number} // Row height in px (default: 50)
|
|
108
|
+
columnHeight={number} // Header height in px (default: 56, auto 2x for grouped headers)
|
|
109
|
+
showPaper={boolean} // Wrap in Paper component (default: true)
|
|
110
|
+
paddingX={string | number} // Horizontal padding (default: "1rem")
|
|
111
|
+
|
|
112
|
+
// Optional - Infinite Scroll
|
|
113
|
+
loading={boolean} // Loading state (default: false)
|
|
114
|
+
onLoadMore={(offset, limit) => void} // Load more callback (enables infinite scroll when provided)
|
|
115
|
+
|
|
116
|
+
// Optional - Sorting
|
|
117
|
+
sortBy={string} // Current sort field
|
|
118
|
+
sortDirection={"asc" | "desc"} // Current sort direction
|
|
119
|
+
onSort={(id, direction) => void} // Sort callback
|
|
120
|
+
|
|
121
|
+
// Optional - Interactions
|
|
122
|
+
onRowClick={(item, index) => void} // Row click handler
|
|
123
|
+
|
|
124
|
+
// Optional - Customization
|
|
125
|
+
emptyMessage={string | React.ReactNode} // Empty state message (default: "NO DATA")
|
|
126
|
+
scrollbars={VDTOverlayScrollbarProps} // Custom scrollbar options
|
|
127
|
+
LoadingComponent={React.ComponentType} // Custom loading component
|
|
128
|
+
/>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## License
|
|
132
|
+
|
|
133
|
+
MIT © KIM YOUNG JIN (ehfuse@gmail.com)
|
|
134
|
+
|
|
135
|
+
## Contributing
|
|
136
|
+
|
|
137
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
138
|
+
|
|
139
|
+
## Support
|
|
140
|
+
|
|
141
|
+
For support, email ehfuse@gmail.com or create an issue on GitHub.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OverlayScrollbar.tsx
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2025 KIM YOUNG JIN (ehfuse@gmail.com)
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
* copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
* SOFTWARE.
|
|
23
|
+
*/
|
|
24
|
+
import React, { ReactNode } from "react";
|
|
25
|
+
export interface ThumbConfig {
|
|
26
|
+
width?: number;
|
|
27
|
+
minHeight?: number;
|
|
28
|
+
radius?: number;
|
|
29
|
+
color?: string;
|
|
30
|
+
opacity?: number;
|
|
31
|
+
hoverColor?: string;
|
|
32
|
+
hoverOpacity?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface TrackConfig {
|
|
35
|
+
width?: number;
|
|
36
|
+
color?: string;
|
|
37
|
+
visible?: boolean;
|
|
38
|
+
alignment?: "center" | "right";
|
|
39
|
+
radius?: number;
|
|
40
|
+
margin?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ArrowsConfig {
|
|
43
|
+
visible?: boolean;
|
|
44
|
+
step?: number;
|
|
45
|
+
color?: string;
|
|
46
|
+
opacity?: number;
|
|
47
|
+
hoverColor?: string;
|
|
48
|
+
hoverOpacity?: number;
|
|
49
|
+
}
|
|
50
|
+
export interface DragScrollConfig {
|
|
51
|
+
enabled?: boolean;
|
|
52
|
+
excludeClasses?: string[];
|
|
53
|
+
excludeSelectors?: string[];
|
|
54
|
+
}
|
|
55
|
+
export interface AutoHideConfig {
|
|
56
|
+
enabled?: boolean;
|
|
57
|
+
delay?: number;
|
|
58
|
+
delayOnWheel?: number;
|
|
59
|
+
}
|
|
60
|
+
export interface OverlayScrollbarProps {
|
|
61
|
+
className?: string;
|
|
62
|
+
style?: React.CSSProperties;
|
|
63
|
+
children: ReactNode;
|
|
64
|
+
onScroll?: (event: Event) => void;
|
|
65
|
+
thumb?: ThumbConfig;
|
|
66
|
+
track?: TrackConfig;
|
|
67
|
+
arrows?: ArrowsConfig;
|
|
68
|
+
dragScroll?: DragScrollConfig;
|
|
69
|
+
autoHide?: AutoHideConfig;
|
|
70
|
+
showScrollbar?: boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface OverlayScrollbarRef {
|
|
73
|
+
getScrollContainer: () => HTMLDivElement | null;
|
|
74
|
+
scrollTo: (options: ScrollToOptions) => void;
|
|
75
|
+
scrollTop: number;
|
|
76
|
+
scrollHeight: number;
|
|
77
|
+
clientHeight: number;
|
|
78
|
+
}
|
|
79
|
+
declare const OverlayScrollbar: React.ForwardRefExoticComponent<OverlayScrollbarProps & React.RefAttributes<OverlayScrollbarRef>>;
|
|
80
|
+
export default OverlayScrollbar;
|
|
81
|
+
export { OverlayScrollbar };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VirtualDataTable.tsx
|
|
3
|
+
*
|
|
4
|
+
* MIT License
|
|
5
|
+
*
|
|
6
|
+
import { VirtuosoScrollbar } from './components/Scrollbar'; Copyright (c) 2025 KIM YOUNG JIN (ehfuse@gmail.com)
|
|
7
|
+
*
|
|
8
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
10
|
+
* in the Software without restriction, including without limitation the rights
|
|
11
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
13
|
+
* furnished to do so, subject to the following conditions:
|
|
14
|
+
*
|
|
15
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
16
|
+
* copies or substantial portions of the Software.
|
|
17
|
+
*
|
|
18
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
24
|
+
* SOFTWARE.
|
|
25
|
+
*/
|
|
26
|
+
import React from "react";
|
|
27
|
+
import type { VirtualDataTableProps } from "./types";
|
|
28
|
+
export declare const VirtualDataTable: <T>(props: VirtualDataTableProps<T>) => React.JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VirtuosoScrollbar.tsx
|
|
3
|
+
*
|
|
4
|
+
* @license Proprietary License (독점 라이선스)
|
|
5
|
+
* @copyright 2025 김영진 (Kim Young Jin)
|
|
6
|
+
* @author 김영진 (ehfuse@gmail.com)
|
|
7
|
+
* @contact 010-3094-9944
|
|
8
|
+
*
|
|
9
|
+
* IMPORTANT NOTICE (중요 공지):
|
|
10
|
+
* This code is the intellectual property of 김영진 (Kim Young Jin).
|
|
11
|
+
* All rights reserved. Unauthorized copying, modification, distribution,
|
|
12
|
+
* or use of this code is strictly prohibited without prior written
|
|
13
|
+
* permission from the copyright holder.
|
|
14
|
+
*
|
|
15
|
+
* 이 코드는 김영진의 지적재산권입니다.
|
|
16
|
+
* 모든 권리가 보호됩니다. 저작권자의 사전 서면 허가 없이
|
|
17
|
+
* 무단 복사, 수정, 배포 또는 사용을 엄격히 금지합니다.
|
|
18
|
+
*
|
|
19
|
+
* For licensing inquiries, please contact (라이선스 문의):
|
|
20
|
+
* Email: ehfuse@gmail.com
|
|
21
|
+
* Phone: 010-3094-9944
|
|
22
|
+
*/
|
|
23
|
+
import React, { ReactNode } from "react";
|
|
24
|
+
interface VirtuosoScrollbarProps {
|
|
25
|
+
children: ReactNode;
|
|
26
|
+
height?: string | number;
|
|
27
|
+
width?: string | number;
|
|
28
|
+
onScroll?: (event: Event) => void;
|
|
29
|
+
}
|
|
30
|
+
export declare const VirtuosoScrollbar: React.FC<VirtuosoScrollbarProps>;
|
|
31
|
+
export default VirtuosoScrollbar;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MIT License
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 KIM YOUNG JIN (ehfuse@gmail.com)
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
* copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
* SOFTWARE.
|
|
23
|
+
*/
|
|
24
|
+
interface LoadingProps {
|
|
25
|
+
visible?: boolean;
|
|
26
|
+
onComplete?: () => void;
|
|
27
|
+
}
|
|
28
|
+
export declare const Loading: ({ visible, onComplete }: LoadingProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MIT License
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 KIM YOUNG JIN (ehfuse@gmail.com)
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
* copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
* SOFTWARE.
|
|
23
|
+
*/
|
|
24
|
+
import React from "react";
|
|
25
|
+
import type { ReactNode } from "react";
|
|
26
|
+
export interface VirtuosoScrollbarProps {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
onScroll?: (event: Event) => void;
|
|
29
|
+
visible?: boolean;
|
|
30
|
+
hideDelay?: number;
|
|
31
|
+
hideDelayOnWheel?: number;
|
|
32
|
+
trackWidth?: number;
|
|
33
|
+
thumbWidth?: number;
|
|
34
|
+
trackColor?: string;
|
|
35
|
+
thumbColor?: string;
|
|
36
|
+
thumbHoverColor?: string;
|
|
37
|
+
thumbActiveColor?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare const VirtuosoScrollbar: React.FC<VirtuosoScrollbarProps>;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Virtual Data Table - A high-performance virtual data table component for React
|
|
3
|
+
*
|
|
4
|
+
* @license MIT
|
|
5
|
+
* @copyright 2025 김영진 (Kim Young Jin)
|
|
6
|
+
* @author 김영진 (ehfuse@gmail.com)
|
|
7
|
+
*/
|
|
8
|
+
export { VirtualDataTable } from "./VirtualDataTable";
|
|
9
|
+
export type { DataColumn, SortDirection, SortableFilter, VirtualDataTableProps, } from "./types";
|