@@ -13,6 +13,7 @@ import type { NamespaceItemCardProps } from './namespace-card';
1313import { useViewTypeControls } from './use-view-type' ;
1414import type { ViewType } from './use-view-type' ;
1515import { useCreateControls } from './use-create' ;
16+ import { useRefreshControls } from './use-refresh' ;
1617
1718const { track } = createLoggerAndTelemetry (
1819 'COMPASS-DATABASES-COLLECTIONS-LIST-UI'
@@ -43,7 +44,7 @@ const container = css({
4344const controls = css ( {
4445 display : 'flex' ,
4546 padding : spacing [ 3 ] ,
46- gap : spacing [ 3 ] ,
47+ gap : spacing [ 2 ] ,
4748 flex : 'none' ,
4849} ) ;
4950
@@ -86,6 +87,7 @@ type ItemsGridProps<T> = {
8687 onItemClick ( id : string ) : void ;
8788 onDeleteItemClick ?: ( id : string ) => void ;
8889 onCreateItemClick ?: ( ) => void ;
90+ onRefreshClick ?: ( ) => void ;
8991 renderItem : RenderItem < T > ;
9092} ;
9193
@@ -102,16 +104,18 @@ const pushRight = css({
102104// part of the list header and scroll up when the list is scrolled
103105const ControlsContext = React . createContext < {
104106 createControls : React . ReactElement | null ;
107+ refreshControls : React . ReactElement | null ;
105108 viewTypeControls : React . ReactElement | null ;
106109 sortControls : React . ReactElement | null ;
107110} > ( {
108111 createControls : null ,
112+ refreshControls : null ,
109113 viewTypeControls : null ,
110114 sortControls : null ,
111115} ) ;
112116
113117const GridControls = ( ) => {
114- const { createControls, viewTypeControls, sortControls } =
118+ const { createControls, refreshControls , viewTypeControls, sortControls } =
115119 useContext ( ControlsContext ) ;
116120
117121 return (
@@ -121,8 +125,13 @@ const GridControls = () => {
121125 { createControls }
122126 </ div >
123127 ) }
124- < div className = { control } > { viewTypeControls } </ div >
125- < div className = { cx ( control , pushRight ) } > { sortControls } </ div >
128+ { refreshControls && (
129+ < div className = { control } data-testid = "refresh-controls" >
130+ { refreshControls }
131+ </ div >
132+ ) }
133+ < div className = { cx ( control , pushRight ) } > { viewTypeControls } </ div >
134+ < div className = { control } > { sortControls } </ div >
126135 </ >
127136 ) ;
128137} ;
@@ -139,6 +148,7 @@ export const ItemsGrid = <T extends Item>({
139148 onItemClick,
140149 onDeleteItemClick,
141150 onCreateItemClick,
151+ onRefreshClick,
142152 renderItem : _renderItem ,
143153} : ItemsGridProps < T > ) : React . ReactElement => {
144154 const onViewTypeChange = useCallback (
@@ -152,6 +162,7 @@ export const ItemsGrid = <T extends Item>({
152162 itemType ,
153163 onCreateItemClick
154164 ) ;
165+ const refreshControls = useRefreshControls ( onRefreshClick ) ;
155166 const [ sortControls , sortState ] = useSortControls ( sortBy ) ;
156167 const [ viewTypeControls , viewType ] = useViewTypeControls ( {
157168 onChange : onViewTypeChange ,
@@ -182,6 +193,7 @@ export const ItemsGrid = <T extends Item>({
182193 < ControlsContext . Provider
183194 value = { {
184195 createControls,
196+ refreshControls,
185197 sortControls : shouldShowControls ? sortControls : null ,
186198 viewTypeControls : shouldShowControls ? viewTypeControls : null ,
187199 } }
0 commit comments