Как сделать компонент Material UI Datagrid NoRowsOverlay интерактивным?
Я хотел бы переопределить компонент NoRowsOverlay в DataGrid с моим настраиваемыми один, который использует среагировать-Dropzone :
<GridOverlay
{...getRootProps()}
className={clsx(classes.zone, {
[classes.valid]: isDragAccept,
[classes.invalid]: isDragReject
})}
>
<input {...getInputProps()} />
{isDragActive
? (
<Typography variant='h6'>
{isDragAccept ? 'Drop the file here.' : 'Invalid file type.'}
</Typography>
)
: (
<Typography variant='h6'>
Drop CSV file here or click to upload.
</Typography>
)}
</GridOverlay>
Я переопределяю компонент так:
<DataGrid
autoHeight
columns={getColumns(classes)}
components={{
NoRowsOverlay: DropZone
}}
disableColumnMenu
disableSelectionOnClick
hideFooter
rows={devices}
/>
Я не могу понять, почему перетаскивание, а также нажатие на dropzone больше не работают. Замена
GridOverlay
с регулярным
div
тоже не работает. Компонент Dropzone работает до тех пор, пока отображается за пределами
DataGrid
. Любые идеи?
2 ответа
Недавно у меня была аналогичная проблема, когда я поместил кнопку в свой пользовательский оверлей, но на нее нельзя было нажимать.
Причина проблемы для меня заключалась в том, что DataGrid находился внутри модального окна, и из-за этого кнопка не нажималась, когда наложение было активным. Однако я исправил проблему, повысив уровень моего оверлея.
z-index
.
<GridOverlay {...getRootProps()}
style={{ zIndex: 5}}
//Or add it to your classes.zone styles
className={clsx(classes.zone, {
[classes.valid]: isDragAccept,
[classes.invalid]: isDragReject
})}
>
<input {...getInputProps()} />
{isDragActive
? (
<Typography variant='h6'>
{isDragAccept ? 'Drop the file here.' : 'Invalid file type.'}
</Typography>
)
: (
<Typography variant='h6'>
Drop CSV file here or click to upload.
</Typography>
)}
</GridOverlay>
Мне пришлось добавить классы z-index и pointer-events:
<GridOverlay style={{ zIndex: 5, pointerEvents: 'all' }}>
...
</GridOverlay>