Skip to main content
Version: 3.xx.xxSwizzle Ready

Export

http://localhost:3000
Live previews only work with the latest documentation.
const { default: routerProvider } = RefineReactRouterV6
const { default: simpleRest } = RefineSimpleRest
setRefineProps({
routerProvider,
dataProvider: simpleRest('https://api.fake-rest.refine.dev'),
Layout: RefineChakra.Layout,
Sider: () => null,
catchAll: <RefineChakra.ErrorComponent />,
})

const Wrapper = ({ children }) => {
return (
<RefineChakra.ChakraProvider theme={RefineChakra.refineTheme}>
{children}
</RefineChakra.ChakraProvider>
)
}

<ExportButton> is an Chakra UI'ss <Button> with a default export icon and a default text with "Export". It only has presentational value.

http://localhost:3000
Live previews only work with the latest documentation.
import { useExport } from '@pankod/refine-core'
import {
List,
TableContainer,
Table,
Thead,
Tr,
Th,
Tbody,
Td,
ExportButton,
} from '@pankod/refine-chakra-ui'
import { useTable, ColumnDef, flexRender } from '@pankod/refine-react-table'

const PostList: React.FC = () => {
const columns = React.useMemo<ColumnDef<IPost>[]>(
() => [
{
id: 'id',
header: 'ID',
accessorKey: 'id',
},
{
id: 'title',
header: 'Title',
accessorKey: 'title',
},
],
[],
)

const {
getHeaderGroups,
getRowModel,
refineCore: { setCurrent, pageCount, current },
} = useTable({
columns,
})

const { triggerExport, isLoading: exportLoading } = useExport<IPost>({
mapData: (item) => {
return {
id: item.id,
post_title: item.title,
}
},
pageSize: 10,
maxItemCount: 50,
})

return (
<List
headerButtons={
<ExportButton loading={exportLoading} onClick={triggerExport} />
}
>
<TableContainer>
<Table variant="simple" whiteSpace="pre-line">
<Thead>
{getHeaderGroups().map((headerGroup) => (
<Tr key={headerGroup.id}>
{headerGroup.headers.map((header) => {
return (
<Th key={header.id}>
{!header.isPlaceholder &&
flexRender(
header.column.columnDef.header,
header.getContext(),
)}
</Th>
)
})}
</Tr>
))}
</Thead>
<Tbody>
{getRowModel().rows.map((row) => {
return (
<Tr key={row.id}>
{row.getVisibleCells().map((cell) => {
return (
<Td key={cell.id}>
{flexRender(
cell.column.columnDef.cell,
cell.getContext(),
)}
</Td>
)
})}
</Tr>
)
})}
</Tbody>
</Table>
</TableContainer>
</List>
)
}

interface IPost {
id: number
title: string
}
Swizzle

You can swizzle this component to customize it with the refine CLI

Properties

hideText

It is used to show and not show the text of the button. When true, only the button icon is visible.

http://localhost:3000
Live previews only work with the latest documentation.
import { ExportButton } from '@pankod/refine-chakra-ui'

const MyExportComponent = () => {
return <ExportButton colorScheme="black" hideText />
}

API Reference

Properties