Skip to content

Commit 6cd87b0

Browse files
committed
Fixed hovering.
1 parent 6661caf commit 6cd87b0

File tree

4 files changed

+72
-60
lines changed

4 files changed

+72
-60
lines changed

src/components/tableV2/core/rows.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
import React, { useState, useEffect } from "react"
1+
import React, { useEffect } from "react"
22
import { useVirtualizer } from "@tanstack/react-virtual"
33
import { flexRender } from "@tanstack/react-table"
4+
import { useTableContext } from "../features/provider"
45
import Table from "./base-table"
56
import { CELL_HEIGHT } from "../constants"
67

78
const Rows = ({
89
disableClickRow,
910
getRowHandler = "getCenterVisibleCells",
10-
onHoverRow,
11-
hoveredRow,
1211
onClickRow,
1312
pinnedStyles,
1413
table,
@@ -20,6 +19,8 @@ const Rows = ({
2019
loading,
2120
loadMore,
2221
}) => {
22+
const { onHover, hoveredRow } = useTableContext()
23+
2324
const { rows } = table.getRowModel()
2425

2526
const virtualizer = useVirtualizer({
@@ -68,8 +69,8 @@ const Rows = ({
6869
disableClickRow={() =>
6970
disableClickRow?.({ data: row.original, table: table, fullRow: row })
7071
}
71-
onMouseEnter={() => onHoverRow(row.id)}
72-
onMouseLeave={() => onHoverRow(null)}
72+
onMouseEnter={() => onHover(row.id)}
73+
onMouseLeave={() => onHover(null)}
7374
isHovering={row.id === hoveredRow}
7475
background={virtualRow.index % 2 == 0 ? "mainBackground" : "tableRowBg"}
7576
>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import React, { useContext, createContext, useState, useCallback, useMemo } from "react"
2+
3+
const TableContext = createContext({})
4+
5+
export const useTableContext = () => useContext(TableContext)
6+
7+
const TableProvider = ({ onHoverRow, children }) => {
8+
const [state, setState] = useState({ hoveredRow: null })
9+
10+
const dispatch = useCallback(values => {
11+
setState(prev => ({
12+
...prev,
13+
...values,
14+
}))
15+
}, [])
16+
17+
const onHover = useCallback(
18+
id => {
19+
dispatch({ hoveredRow: id })
20+
onHoverRow?.(id)
21+
},
22+
[onHoverRow]
23+
)
24+
25+
const contextValue = useMemo(() => ({ ...state, dispatch, onHover }), [state, onHover])
26+
27+
return <TableContext.Provider value={contextValue}>{children}</TableContext.Provider>
28+
}
29+
30+
export default TableProvider

src/components/tableV2/features/useRowHover.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/components/tableV2/netdataTable.js

Lines changed: 36 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import makePagination from "./features/pagination"
1414
import useBulkActions from "./features/useBulkActions"
1515
import ColumnPinning from "./features/columnPinning"
1616
import GlobalControls from "./features/globalControls"
17-
import useRowHover from "./features/useRowHover"
17+
import TableProvider from "./features/provider"
1818

1919
import MainTable from "./features/mainTable"
2020

@@ -59,8 +59,6 @@ const NetdataTable = ({
5959
virtualizeOptions = {},
6060
...rest
6161
}) => {
62-
const [hoveredRow, setHoveredRow] = useRowHover(onHoverRow)
63-
6462
const [columnVisibility, setColumnVisibility] = useState(defaultColumnVisibility)
6563

6664
useEffect(() => {
@@ -174,53 +172,51 @@ const NetdataTable = ({
174172
})
175173

176174
return (
177-
<Flex height="100%" overflow="hidden" width="100%" column>
178-
{onGlobalSearchChange || hasBulkActions ? (
179-
<GlobalControls
180-
bulkActions={actions}
181-
dataGa={dataGa}
182-
handleSearch={onGlobalSearchChange ? onGlobalFilterChange : null}
183-
searchValue={globalFilter}
184-
/>
185-
) : null}
186-
<Flex ref={scrollParentRef} overflow="auto" width="100%" height="100%">
187-
{enableColumnPinning && (
188-
<ColumnPinning
175+
<TableProvider onHoverRow={onHoverRow}>
176+
<Flex height="100%" overflow="hidden" width="100%" column>
177+
{onGlobalSearchChange || hasBulkActions ? (
178+
<GlobalControls
179+
bulkActions={actions}
180+
dataGa={dataGa}
181+
handleSearch={onGlobalSearchChange ? onGlobalFilterChange : null}
182+
searchValue={globalFilter}
183+
/>
184+
) : null}
185+
<Flex ref={scrollParentRef} overflow="auto" width="100%" height="100%">
186+
{enableColumnPinning && (
187+
<ColumnPinning
188+
enableResize={enableResize}
189+
disableClickRow={disableClickRow}
190+
onClickRow={onClickRow}
191+
testPrefixCallback={testPrefixCallback}
192+
enableSorting={enableSorting}
193+
table={table}
194+
headers={table.getLeftFlatHeaders()}
195+
testPrefix={testPrefix}
196+
dataGa={dataGa}
197+
scrollParentRef={scrollParentRef}
198+
virtualizeOptions={virtualizeOptions}
199+
/>
200+
)}
201+
<MainTable
202+
scrollParentRef={scrollParentRef}
189203
enableResize={enableResize}
190204
disableClickRow={disableClickRow}
191205
onClickRow={onClickRow}
192206
testPrefixCallback={testPrefixCallback}
193207
enableSorting={enableSorting}
208+
enableColumnPinning={enableColumnPinning}
194209
table={table}
195-
headers={table.getLeftFlatHeaders()}
196-
testPrefix={testPrefix}
197210
dataGa={dataGa}
198-
onHoverRow={setHoveredRow}
199-
hoveredRow={hoveredRow}
200-
scrollParentRef={scrollParentRef}
211+
tableRef={tableRef}
212+
testPrefix={testPrefix}
201213
virtualizeOptions={virtualizeOptions}
214+
{...rest}
202215
/>
203-
)}
204-
<MainTable
205-
scrollParentRef={scrollParentRef}
206-
enableResize={enableResize}
207-
disableClickRow={disableClickRow}
208-
onClickRow={onClickRow}
209-
testPrefixCallback={testPrefixCallback}
210-
enableSorting={enableSorting}
211-
enableColumnPinning={enableColumnPinning}
212-
table={table}
213-
dataGa={dataGa}
214-
tableRef={tableRef}
215-
testPrefix={testPrefix}
216-
onHoverRow={setHoveredRow}
217-
hoveredRow={hoveredRow}
218-
virtualizeOptions={virtualizeOptions}
219-
{...rest}
220-
/>
216+
</Flex>
217+
{enablePagination && makePagination({ table })}
221218
</Flex>
222-
{enablePagination && makePagination({ table })}
223-
</Flex>
219+
</TableProvider>
224220
)
225221
}
226222

0 commit comments

Comments
 (0)