Skip to content

Commit 00f0fd2

Browse files
committed
Remove kebab factory uses from default-resouce list and details pages
1 parent 1fe9940 commit 00f0fd2

File tree

3 files changed

+38
-16
lines changed

3 files changed

+38
-16
lines changed

frontend/packages/console-shared/src/components/actions/menu/ActionMenu.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type ActionMenuProps = {
1414
variant?: ActionMenuVariant;
1515
label?: string;
1616
className?: string;
17+
appendTo?: HTMLElement | (() => HTMLElement) | 'inline';
1718
};
1819

1920
const ActionMenu: React.FC<ActionMenuProps> = ({
@@ -23,6 +24,7 @@ const ActionMenu: React.FC<ActionMenuProps> = ({
2324
variant = ActionMenuVariant.KEBAB,
2425
label,
2526
className,
27+
appendTo,
2628
}) => {
2729
const isKebabVariant = variant === ActionMenuVariant.KEBAB;
2830
const [isVisible, setVisible] = useSafetyFirst(isKebabVariant);
@@ -103,7 +105,7 @@ const ActionMenu: React.FC<ActionMenuProps> = ({
103105
popper={menu}
104106
placement="bottom-end"
105107
isVisible={isOpen}
106-
appendTo={containerRef.current}
108+
appendTo={appendTo || containerRef.current}
107109
/>
108110
</div>
109111
)

frontend/packages/metal3-plugin/src/components/modals/PowerOffHostModal.tsx

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -167,14 +167,6 @@ const isPowerOffSafe = (status: string) => {
167167
return safeStates.includes(status);
168168
};
169169

170-
export type PowerOffHostModalProps1 = {
171-
host: BareMetalHostKind;
172-
nodeName: string;
173-
status: StatusProps;
174-
cancel?: () => void;
175-
close?: () => void;
176-
};
177-
178170
export type PowerOffHostModalProps = {
179171
host: BareMetalHostKind;
180172
nodeName: string;

frontend/public/components/default-resource.tsx

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import {
2121
ExtensionK8sGroupModel,
2222
} from '../module/k8s';
2323
import { DetailsItem } from './utils/details-item';
24-
import { Kebab, ResourceKebab } from './utils/kebab';
2524
import { kindObj } from './utils/inject';
2625
import { navFactory } from './utils/horizontal-nav';
2726
import { ResourceLink } from './utils/resource-link';
@@ -51,8 +50,10 @@ import {
5150
ResolvedExtension,
5251
} from '@console/dynamic-plugin-sdk';
5352
import 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

5758
const 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+
8091
const 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

376390
export 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
};
382410
DefaultDetailsPage.displayName = 'DefaultDetailsPage';
383411

0 commit comments

Comments
 (0)