@@ -21,7 +21,6 @@ import {
2121 ExtensionK8sGroupModel ,
2222} from '../module/k8s' ;
2323import { DetailsItem } from './utils/details-item' ;
24- import { Kebab , ResourceKebab } from './utils/kebab' ;
2524import { kindObj } from './utils/inject' ;
2625import { navFactory } from './utils/horizontal-nav' ;
2726import { ResourceLink } from './utils/resource-link' ;
@@ -51,8 +50,10 @@ import {
5150 ResolvedExtension ,
5251} from '@console/dynamic-plugin-sdk' ;
5352import LazyActionMenu from '@console/shared/src/components/actions/LazyActionMenu' ;
54-
55- const { common } = Kebab . factory ;
53+ import { useCommonResourceActions } from '@console/app/src/actions/hooks/useCommonResourceActions' ;
54+ import ActionMenu from '@console/shared/src/components/actions/menu/ActionMenu' ;
55+ import { ActionMenuVariant } from '@console/shared/src/components/actions/types' ;
56+ import { useK8sGet } from './utils/k8s-get-hook' ;
5657
5758const tableColumnInfo = [ { id : 'name' } , { id : 'namespace' } , { id : 'created' } , { id : 'actions' } ] ;
5859
@@ -77,6 +78,16 @@ const getAdditionaPrinterColumnID = (column: CRDAdditionalPrinterColumn) => {
7778 return `apc-${ column . name } ` ;
7879} ;
7980
81+ const ResourceActionsMenu : React . FC < {
82+ resource : K8sResourceKind ;
83+ variant : ActionMenuVariant ;
84+ appendTo ?: HTMLElement | ( ( ) => HTMLElement ) | 'inline' ;
85+ } > = ( { resource, variant, appendTo } ) => {
86+ const common = useCommonResourceActions ( kindObj ( referenceFor ( resource ) ) , resource ) ;
87+ const menuActions = [ ...common ] ;
88+ return < ActionMenu actions = { menuActions } variant = { variant } appendTo = { appendTo } /> ;
89+ } ;
90+
8091const NamespaceCell : React . FCC < NamespaceCellProps > = ( { namespace } ) => {
8192 const { t } = useTranslation ( ) ;
8293 return namespace ? < ResourceLink kind = "Namespace" name = { namespace } /> : < > { t ( 'public~None' ) } </ > ;
@@ -176,7 +187,6 @@ const getDataViewRows = (
176187 return data . map ( ( { obj } ) => {
177188 const { name, namespace, creationTimestamp } = obj . metadata ;
178189 const kind = referenceFor ( obj ) || kinds [ 0 ] ;
179- const menuActions = [ ...common ] ;
180190
181191 const hasExtensionActions =
182192 resourceProviderExtensionsResolved && resourceProviderExtensions ?. length > 0 ;
@@ -214,7 +224,11 @@ const getDataViewRows = (
214224 { hasExtensionActions ? (
215225 < LazyActionMenu context = { { [ kind ] : obj } } />
216226 ) : (
217- < ResourceKebab actions = { menuActions } kind = { kind } resource = { obj } />
227+ < ResourceActionsMenu
228+ resource = { obj }
229+ variant = { ActionMenuVariant . KEBAB }
230+ appendTo = { document . getElementById ( 'popper-container' ) }
231+ />
218232 ) }
219233 </ >
220234 ) ,
@@ -375,9 +389,23 @@ DefaultPage.displayName = 'DefaultPage';
375389
376390export const DefaultDetailsPage : React . FC < React . ComponentProps < typeof DetailsPage > > = ( props ) => {
377391 const pages = [ navFactory . details ( DetailsForKind ) , navFactory . editYaml ( ) ] ;
378- const menuActions = [ ...common ] ;
392+ const [ resource , resourceLoaded , resourceError ] = useK8sGet (
393+ kindObj ( props . kind ) ,
394+ props . name ,
395+ props . namespace ,
396+ ) ;
379397
380- return < DetailsPage { ...props } menuActions = { menuActions } pages = { pages } /> ;
398+ return (
399+ < DetailsPage
400+ { ...props }
401+ customActionMenu = {
402+ resourceLoaded && ! resourceError ? (
403+ < ResourceActionsMenu resource = { resource } variant = { ActionMenuVariant . DROPDOWN } />
404+ ) : null
405+ }
406+ pages = { pages }
407+ />
408+ ) ;
381409} ;
382410DefaultDetailsPage . displayName = 'DefaultDetailsPage' ;
383411
0 commit comments