Skip to content

Commit 8dda731

Browse files
fix(compass-connections-navigation): use updated reference of required props while rendering NavigationItem (#5955)
1 parent 4bd3129 commit 8dda731

File tree

4 files changed

+55
-9
lines changed

4 files changed

+55
-9
lines changed

packages/compass-connections-navigation/src/connections-navigation-tree.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,18 @@ const ConnectionsNavigationTree: React.FunctionComponent<
182182
height={height}
183183
itemHeight={ROW_HEIGHT}
184184
onDefaultAction={onDefaultAction}
185-
onExpandedChange={onItemExpand}
185+
onItemAction={onItemAction}
186+
onItemExpand={onItemExpand}
187+
getItemActions={getItemActions}
186188
getItemKey={(item) => item.id}
187-
renderItem={({ item, isActive, isFocused }) => {
189+
renderItem={({
190+
item,
191+
isActive,
192+
isFocused,
193+
onItemAction,
194+
onItemExpand,
195+
getItemActions,
196+
}) => {
188197
return (
189198
<NavigationItem
190199
item={item}

packages/compass-connections-navigation/src/navigation-item.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { PlaceholderItem } from './placeholder';
55
import StyledNavigationItem from './styled-navigation-item';
66
import { NavigationBaseItem } from './base-navigation-item';
77
import type { NavigationItemActions } from './item-actions';
8-
import type { OnExpandedChange } from './virtual-list/virtual-list';
98
import type { SidebarTreeItem, SidebarActionableItem } from './tree-data';
109
import { getTreeItemStyles } from './utils';
1110
import { ConnectionStatus } from '@mongodb-js/compass-connections/provider';
@@ -18,7 +17,7 @@ type NavigationItemProps = {
1817
isFocused: boolean;
1918
getItemActions: (item: SidebarTreeItem) => NavigationItemActions;
2019
onItemAction: (item: SidebarActionableItem, action: Actions) => void;
21-
onItemExpand: OnExpandedChange<SidebarActionableItem>;
20+
onItemExpand(item: SidebarActionableItem, isExpanded: boolean): void;
2221
};
2322

2423
export function NavigationItem({

packages/compass-connections-navigation/src/virtual-list/virtual-list.spec.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@ function NavigationTree({
9191
height={400}
9292
itemHeight={30}
9393
onDefaultAction={() => {}}
94-
onExpandedChange={onExpandedChange}
94+
onItemExpand={onExpandedChange}
95+
onItemAction={() => {}}
96+
getItemActions={() => []}
9597
width={100}
9698
renderItem={({ item }) => item.name}
9799
__TEST_OVER_SCAN_COUNT={Infinity}

packages/compass-connections-navigation/src/virtual-list/virtual-list.tsx

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ import {
1515
useFocusRing,
1616
useId,
1717
} from '@mongodb-js/compass-components';
18+
import { type SidebarActionableItem, type SidebarTreeItem } from '../tree-data';
19+
import { type Actions } from '../constants';
20+
import { type NavigationItemActions } from '../item-actions';
1821

1922
function useDefaultAction<T extends VirtualTreeItem>(
2023
item: T,
@@ -55,12 +58,18 @@ type RenderItem<T> = (props: {
5558
isActive: boolean;
5659
isFocused: boolean;
5760
item: T;
61+
onItemAction(this: void, item: SidebarActionableItem, action: Actions): void;
62+
onItemExpand(
63+
this: void,
64+
item: SidebarActionableItem,
65+
isExpanded: boolean
66+
): void;
67+
getItemActions(this: void, item: SidebarTreeItem): NavigationItemActions;
5868
}) => React.ReactNode;
5969
export type OnDefaultAction<T> = (
6070
item: T,
6171
evt: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>
6272
) => void;
63-
export type OnExpandedChange<T> = (item: T, expanded: boolean) => void;
6473

6574
type VirtualTreeProps<T extends VirtualItem> = {
6675
dataTestId?: string;
@@ -72,7 +81,13 @@ type VirtualTreeProps<T extends VirtualItem> = {
7281
renderItem: RenderItem<T>;
7382
getItemKey?: (item: T) => string;
7483
onDefaultAction: OnDefaultAction<NotPlaceholderTreeItem<T>>;
75-
onExpandedChange: OnExpandedChange<NotPlaceholderTreeItem<T>>;
84+
onItemExpand(
85+
this: void,
86+
item: SidebarActionableItem,
87+
isExpanded: boolean
88+
): void;
89+
onItemAction(this: void, item: SidebarActionableItem, action: Actions): void;
90+
getItemActions(this: void, item: SidebarTreeItem): NavigationItemActions;
7691

7792
__TEST_OVER_SCAN_COUNT?: number;
7893
};
@@ -99,7 +114,9 @@ export function VirtualTree<T extends VirtualItem>({
99114
getItemKey: _getItemKey,
100115
renderItem: _renderItem,
101116
onDefaultAction,
102-
onExpandedChange,
117+
onItemExpand,
118+
onItemAction,
119+
getItemActions,
103120
__TEST_OVER_SCAN_COUNT,
104121
}: VirtualTreeProps<T>) {
105122
const listRef = useRef<List | null>(null);
@@ -122,7 +139,7 @@ export function VirtualTree<T extends VirtualItem>({
122139
useVirtualNavigationTree<HTMLDivElement>({
123140
items,
124141
activeItemId,
125-
onExpandedChange,
142+
onExpandedChange: onItemExpand,
126143
onFocusMove,
127144
});
128145

@@ -136,6 +153,9 @@ export function VirtualTree<T extends VirtualItem>({
136153
activeItemId,
137154
renderItem,
138155
onDefaultAction,
156+
onItemAction,
157+
onItemExpand,
158+
getItemActions,
139159
};
140160
}, [
141161
items,
@@ -144,6 +164,9 @@ export function VirtualTree<T extends VirtualItem>({
144164
onDefaultAction,
145165
activeItemId,
146166
isTreeItemFocused,
167+
onItemAction,
168+
getItemActions,
169+
onItemExpand,
147170
]);
148171

149172
const getItemKey = useCallback(
@@ -187,6 +210,13 @@ type VirtualItemData<T extends VirtualItem> = {
187210
activeItemId?: string;
188211
renderItem: RenderItem<T>;
189212
onDefaultAction: OnDefaultAction<NotPlaceholderTreeItem<T>>;
213+
onItemAction(this: void, item: SidebarActionableItem, action: Actions): void;
214+
onItemExpand(
215+
this: void,
216+
item: SidebarActionableItem,
217+
isExpanded: boolean
218+
): void;
219+
getItemActions(this: void, item: SidebarTreeItem): NavigationItemActions;
190220
};
191221
function TreeItem<T extends VirtualItem>({
192222
index,
@@ -206,6 +236,9 @@ function TreeItem<T extends VirtualItem>({
206236
data.isTreeItemFocused &&
207237
!isPlaceholderItem(item) &&
208238
item.id === data.currentTabbable,
239+
onItemAction: data.onItemAction,
240+
onItemExpand: data.onItemExpand,
241+
getItemActions: data.getItemActions,
209242
});
210243
}, [
211244
renderItem,
@@ -214,6 +247,9 @@ function TreeItem<T extends VirtualItem>({
214247
activeItemId,
215248
data.currentTabbable,
216249
data.isTreeItemFocused,
250+
data.onItemAction,
251+
data.getItemActions,
252+
data.onItemExpand,
217253
]);
218254

219255
const actionProps = useDefaultAction(

0 commit comments

Comments
 (0)