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:
@@ -0,0 +1,48 @@
|
||||
import type { Table } from '@tanstack/react-table'
|
||||
|
||||
import { ActionIcon, Checkbox, Menu, Stack } from '@mantine/core'
|
||||
import { IconColumns } from '@tabler/icons-react'
|
||||
|
||||
interface ColumnVisibilityMenuProps<T> {
|
||||
table: Table<T>
|
||||
}
|
||||
|
||||
export function ColumnVisibilityMenu<T>({ table }: ColumnVisibilityMenuProps<T>) {
|
||||
const columns = table.getAllColumns().filter(col =>
|
||||
col.id !== '_selection' && col.getCanHide()
|
||||
)
|
||||
|
||||
if (columns.length === 0) {
|
||||
return null
|
||||
}
|
||||
|
||||
return (
|
||||
<Menu position="bottom-end" shadow="md" width={200}>
|
||||
<Menu.Target>
|
||||
<ActionIcon aria-label="Toggle columns" size="sm" variant="subtle">
|
||||
<IconColumns size={16} />
|
||||
</ActionIcon>
|
||||
</Menu.Target>
|
||||
|
||||
<Menu.Dropdown>
|
||||
<Menu.Label>Toggle Columns</Menu.Label>
|
||||
<Stack gap="xs" p="xs">
|
||||
{columns.map(column => {
|
||||
const header = column.columnDef.header
|
||||
const label = typeof header === 'string' ? header : column.id
|
||||
|
||||
return (
|
||||
<Checkbox
|
||||
checked={column.getIsVisible()}
|
||||
key={column.id}
|
||||
label={label}
|
||||
onChange={column.getToggleVisibilityHandler()}
|
||||
size="xs"
|
||||
/>
|
||||
)
|
||||
})}
|
||||
</Stack>
|
||||
</Menu.Dropdown>
|
||||
</Menu>
|
||||
)
|
||||
}
|
||||
1
src/Griddy/features/columnVisibility/index.ts
Normal file
1
src/Griddy/features/columnVisibility/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export { ColumnVisibilityMenu } from './ColumnVisibilityMenu'
|
||||
Reference in New Issue
Block a user