feat(toolbar): add column visibility and CSV export features

- Implemented GridToolbar component for column visibility and CSV export
- Added ColumnVisibilityMenu for toggling column visibility
- Created exportToCsv function for exporting visible data to CSV
- Updated Griddy component to integrate toolbar functionality
- Enhanced documentation with examples for new features
This commit is contained in:
2026-02-14 14:51:53 +02:00
parent 635da0ea18
commit ad325d94a9
14 changed files with 1088 additions and 16 deletions

View File

@@ -20,6 +20,7 @@ import type { GriddyProps, GriddyRef } from './types'
import { useKeyboardNavigation } from '../features/keyboard/useKeyboardNavigation'
import { PaginationControl } from '../features/pagination'
import { SearchOverlay } from '../features/search/SearchOverlay'
import { GridToolbar } from '../features/toolbar'
import { useGridVirtualizer } from '../rendering/hooks/useGridVirtualizer'
import { TableHeader } from '../rendering/TableHeader'
import { VirtualBody } from '../rendering/VirtualBody'
@@ -61,6 +62,8 @@ function GriddyInner<T>({ tableRef }: { tableRef: Ref<GriddyRef<T>> }) {
const height = useGriddyStore((s) => s.height)
const keyboardNavigation = useGriddyStore((s) => s.keyboardNavigation)
const className = useGriddyStore((s) => s.className)
const showToolbar = useGriddyStore((s) => s.showToolbar)
const exportFilename = useGriddyStore((s) => s.exportFilename)
const manualSorting = useGriddyStore((s) => s.manualSorting)
const manualFiltering = useGriddyStore((s) => s.manualFiltering)
const dataCount = useGriddyStore((s) => s.dataCount)
@@ -253,6 +256,12 @@ function GriddyInner<T>({ tableRef }: { tableRef: Ref<GriddyRef<T>> }) {
role="grid"
>
{search?.enabled && <SearchOverlay />}
{showToolbar && (
<GridToolbar
exportFilename={exportFilename}
table={table}
/>
)}
<div
className={styles[CSS.container]}
ref={scrollRef}