Skip to content

Commit b3d48e3

Browse files
Fix react ref types
1 parent a19269f commit b3d48e3

File tree

11 files changed

+35
-15
lines changed

11 files changed

+35
-15
lines changed

extensions/ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export const ModelAlertsResults = ({
7979
[modelAlerts.model],
8080
);
8181

82-
const ref = useRef<HTMLElement>();
82+
const ref = useRef<HTMLElement>(undefined);
8383

8484
useEffect(() => {
8585
if (

extensions/ql-vscode/src/view/model-editor/MethodRow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export type MethodRowProps = {
8585
export const MethodRow = (props: MethodRowProps) => {
8686
const { method, methodCanBeModeled, revealedMethodSignature } = props;
8787

88-
const ref = useRef<HTMLElement>();
88+
const ref = useRef<HTMLElement>(undefined);
8989

9090
useEffect(() => {
9191
if (method.signature === revealedMethodSignature) {

extensions/ql-vscode/src/view/results/AlertTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export function AlertTable({
4444
undefined,
4545
);
4646

47-
const selectedItemRef = useRef<HTMLTableRowElement>(null);
47+
const selectedItemRef = useRef<HTMLTableRowElement>(undefined);
4848
useScrollIntoView(selectedItem, selectedItemRef);
4949

5050
/**

extensions/ql-vscode/src/view/results/AlertTablePathNodeRow.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ interface Props {
1818
pathIndex: number;
1919
resultIndex: number;
2020
selectedItem: undefined | ResultKey;
21-
selectedItemRef: React.RefObject<HTMLTableRowElement>;
21+
selectedItemRef: React.RefObject<HTMLTableRowElement | undefined>;
2222
databaseUri: string;
2323
sourceLocationPrefix: string;
2424
run?: Run;
@@ -61,7 +61,11 @@ export function AlertTablePathNodeRow(props: Props) {
6161
const zebraIndex = resultIndex + stepIndex;
6262
return (
6363
<tr
64-
ref={isSelected ? selectedItemRef : undefined}
64+
ref={
65+
isSelected && selectedItemRef.current !== undefined
66+
? (selectedItemRef as React.RefObject<HTMLTableRowElement>)
67+
: undefined
68+
}
6569
className={isSelected ? "vscode-codeql__selected-path-node" : undefined}
6670
>
6771
<td className="vscode-codeql__icon-cell">

extensions/ql-vscode/src/view/results/AlertTablePathRow.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export interface Props {
1919
resultIndex: number;
2020
currentPathExpanded: boolean;
2121
selectedItem: undefined | ResultKey;
22-
selectedItemRef: React.RefObject<HTMLTableRowElement>;
22+
selectedItemRef: React.RefObject<HTMLTableRowElement | undefined>;
2323
databaseUri: string;
2424
sourceLocationPrefix: string;
2525
run?: Run;
@@ -55,7 +55,11 @@ export function AlertTablePathRow(props: Props) {
5555
return (
5656
<>
5757
<tr
58-
ref={isPathSpecificallySelected ? selectedItemRef : undefined}
58+
ref={
59+
isPathSpecificallySelected && selectedItemRef.current !== undefined
60+
? (selectedItemRef as React.RefObject<HTMLTableRowElement>)
61+
: undefined
62+
}
5963
{...selectableZebraStripe(isPathSpecificallySelected, resultIndex)}
6064
>
6165
<td className="vscode-codeql__icon-cell">

extensions/ql-vscode/src/view/results/AlertTableResultRow.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export interface Props {
2020
resultIndex: number;
2121
expanded: Set<string>;
2222
selectedItem: undefined | ResultKey;
23-
selectedItemRef: React.RefObject<HTMLTableRowElement>;
23+
selectedItemRef: React.RefObject<HTMLTableRowElement | undefined>;
2424
databaseUri: string;
2525
sourceLocationPrefix: string;
2626
run?: Run;
@@ -93,7 +93,11 @@ export function AlertTableResultRow(props: Props) {
9393
return (
9494
<>
9595
<tr
96-
ref={resultRowIsSelected ? selectedItemRef : undefined}
96+
ref={
97+
resultRowIsSelected && selectedItemRef.current !== undefined
98+
? (selectedItemRef as React.RefObject<HTMLTableRowElement>)
99+
: undefined
100+
}
97101
{...selectableZebraStripe(resultRowIsSelected, resultIndex)}
98102
>
99103
{result.codeFlows === undefined ? (

extensions/ql-vscode/src/view/results/RawTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export function RawTable({
3838
}: RawTableProps) {
3939
const [selectedItem, setSelectedItem] = useState<TableItem | undefined>();
4040

41-
const selectedItemRef = useRef<HTMLTableCellElement>(null);
41+
const selectedItemRef = useRef<HTMLTableCellElement>(undefined);
4242
useScrollIntoView(selectedItem, selectedItemRef);
4343

4444
const setSelection = useCallback((row: number, column: number): void => {

extensions/ql-vscode/src/view/results/RawTableRow.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ interface Props {
88
databaseUri: string;
99
className?: string;
1010
selectedColumn?: number;
11-
selectedItemRef?: React.Ref<HTMLTableCellElement>;
11+
selectedItemRef?: React.RefObject<HTMLTableCellElement | undefined>;
1212
onSelected?: (row: number, column: number) => void;
1313
}
1414

@@ -24,7 +24,11 @@ export default function RawTableRow(props: Props) {
2424
const isSelected = props.selectedColumn === columnIndex;
2525
return (
2626
<td
27-
ref={isSelected ? props.selectedItemRef : undefined}
27+
ref={
28+
isSelected && props.selectedItemRef?.current !== undefined
29+
? (props.selectedItemRef as React.RefObject<HTMLTableCellElement>)
30+
: undefined
31+
}
2832
key={columnIndex}
2933
{...(isSelected ? { className: selectedRowClassName } : {})}
3034
>

extensions/ql-vscode/src/view/results/__tests__/AlertTablePathRow.spec.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import { createMockResults } from "../../../../test/factories/results/mockresult
55

66
describe(AlertTablePathRow.name, () => {
77
const render = (props?: Props) => {
8-
const mockRef = { current: null } as React.RefObject<HTMLTableRowElement>;
8+
const mockRef = { current: undefined } as React.RefObject<
9+
HTMLTableRowElement | undefined
10+
>;
911
const results = createMockResults();
1012
const threadFlow = results[0]?.codeFlows?.[0]?.threadFlows?.[0];
1113

extensions/ql-vscode/src/view/results/__tests__/AlertTableResultRow.spec.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import { createMockResults } from "../../../../test/factories/results/mockresult
55

66
describe(AlertTableResultRow.name, () => {
77
const render = (props?: Props) => {
8-
const mockRef = { current: null } as React.RefObject<HTMLTableRowElement>;
8+
const mockRef = { current: undefined } as React.RefObject<
9+
HTMLTableRowElement | undefined
10+
>;
911
const results = createMockResults();
1012

1113
reactRender(

0 commit comments

Comments
 (0)