@@ -20,16 +20,20 @@ import {
2020 ColumnLayout ,
2121 K8sResourceCommon ,
2222} from '@console/dynamic-plugin-sdk/src/extensions/console-types' ;
23+ import { EmptyBox } from '@console/shared/src/components/empty-state/EmptyBox' ;
24+ import { StatusBox } from '@console/shared/src/components/status/StatusBox' ;
2325import { createColumnManagementModal } from '@console/internal/components/modals' ;
2426import { TableColumn } from '@console/internal/module/k8s' ;
2527import { DataViewLabelFilter } from './DataViewLabelFilter' ;
26- import { ResourceFilters } from './types' ;
27- import { useResourceDataViewData , GetDataViewRows } from './useResourceDataViewData' ;
28+ import { ResourceFilters , GetDataViewRows } from './types' ;
29+ import { useResourceDataViewData } from './useResourceDataViewData' ;
2830import { useResourceDataViewFilters } from './useResourceDataViewFilters' ;
2931
3032export type ResourceDataViewProps < TData , TCustomRowData , TFilters > = {
33+ label ?: string ;
3134 data : TData [ ] ;
3235 loaded : boolean ;
36+ loadError ?: any ;
3337 columns : TableColumn < TData > [ ] ;
3438 columnLayout ?: ColumnLayout ;
3539 columnManagementID ?: string ;
@@ -42,6 +46,7 @@ export type ResourceDataViewProps<TData, TCustomRowData, TFilters> = {
4246 hideNameLabelFilters ?: boolean ;
4347 hideLabelFilter ?: boolean ;
4448 hideColumnManagement ?: boolean ;
49+ mock ?: boolean ;
4550} ;
4651
4752/**
@@ -52,8 +57,10 @@ export const ResourceDataView = <
5257 TCustomRowData = any ,
5358 TFilters extends ResourceFilters = ResourceFilters
5459> ( {
60+ label,
5561 data,
5662 loaded,
63+ loadError,
5764 columns,
5865 columnLayout,
5966 columnManagementID,
@@ -66,6 +73,7 @@ export const ResourceDataView = <
6673 hideNameLabelFilters,
6774 hideLabelFilter,
6875 hideColumnManagement,
76+ mock,
6977} : ResourceDataViewProps < TData , TCustomRowData , TFilters > ) => {
7078 const { t } = useTranslation ( ) ;
7179
@@ -136,48 +144,59 @@ export const ResourceDataView = <
136144 // eslint-disable-next-line react-hooks/exhaustive-deps
137145 } , [ additionalFilterNodes , t ] ) ;
138146
139- return (
140- < DataView activeState = { activeState } >
141- < DataViewToolbar
142- filters = {
143- < DataViewFilters values = { filters } onChange = { ( _e , values ) => onSetFilters ( values ) } >
144- { dataViewFiltersNodes }
145- </ DataViewFilters >
146- }
147- clearAllFilters = { clearAllFilters }
148- actions = {
149- ! hideColumnManagement && (
150- < ResponsiveActions breakpoint = "lg" >
151- < ResponsiveAction
152- isPersistent
153- variant = "plain"
154- onClick = { ( ) =>
155- createColumnManagementModal ( {
156- columnLayout,
157- noLimit : true ,
158- } )
159- }
160- aria-label = { t ( 'public~Column management' ) }
161- data-test = "manage-columns"
162- >
163- < Tooltip content = { t ( 'public~Manage columns' ) } trigger = "mouseenter" >
164- < ColumnsIcon />
165- </ Tooltip >
166- </ ResponsiveAction >
167- </ ResponsiveActions >
168- )
169- }
170- pagination = { < Pagination itemCount = { filteredData . length } { ...pagination } /> }
171- />
172- < InnerScrollContainer >
173- < DataViewTable
174- columns = { dataViewColumns }
175- rows = { dataViewRows }
176- bodyStates = { { empty : bodyEmpty , loading : bodyLoading } }
177- gridBreakPoint = ""
178- variant = "compact"
147+ return mock ? (
148+ < EmptyBox label = { label } />
149+ ) : (
150+ < StatusBox
151+ label = { label }
152+ data = { filteredData }
153+ unfilteredData = { data }
154+ loaded = { loaded }
155+ loadError = { loadError }
156+ skeleton = { < div className = "loading-skeleton--table" /> }
157+ >
158+ < DataView activeState = { activeState } >
159+ < DataViewToolbar
160+ filters = {
161+ < DataViewFilters values = { filters } onChange = { ( _e , values ) => onSetFilters ( values ) } >
162+ { dataViewFiltersNodes }
163+ </ DataViewFilters >
164+ }
165+ clearAllFilters = { clearAllFilters }
166+ actions = {
167+ ! hideColumnManagement && (
168+ < ResponsiveActions breakpoint = "lg" >
169+ < ResponsiveAction
170+ isPersistent
171+ variant = "plain"
172+ onClick = { ( ) =>
173+ createColumnManagementModal ( {
174+ columnLayout,
175+ noLimit : true ,
176+ } )
177+ }
178+ aria-label = { t ( 'public~Column management' ) }
179+ data-test = "manage-columns"
180+ >
181+ < Tooltip content = { t ( 'public~Manage columns' ) } trigger = "mouseenter" >
182+ < ColumnsIcon />
183+ </ Tooltip >
184+ </ ResponsiveAction >
185+ </ ResponsiveActions >
186+ )
187+ }
188+ pagination = { < Pagination itemCount = { filteredData . length } { ...pagination } /> }
179189 />
180- </ InnerScrollContainer >
181- </ DataView >
190+ < InnerScrollContainer >
191+ < DataViewTable
192+ columns = { dataViewColumns }
193+ rows = { dataViewRows }
194+ bodyStates = { { empty : bodyEmpty , loading : bodyLoading } }
195+ gridBreakPoint = ""
196+ variant = "compact"
197+ />
198+ </ InnerScrollContainer >
199+ </ DataView >
200+ </ StatusBox >
182201 ) ;
183202} ;
0 commit comments