mirror of
https://github.com/argoproj/argo-cd
synced 2026-05-24 09:50:08 +00:00
This commit is contained in:
parent
f6545cd56a
commit
c2dce9c981
3 changed files with 19 additions and 5 deletions
|
|
@ -105,4 +105,12 @@
|
|||
line-height: normal;
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
&__action-menu {
|
||||
text-transform: capitalize;
|
||||
|
||||
&.disabled {
|
||||
cursor: default !important;
|
||||
color: $argo-color-gray-3 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ const jsonMergePatch = require('json-merge-patch');
|
|||
|
||||
require('./application-details.scss');
|
||||
|
||||
type ActionMenuItem = MenuItem & { disabled?: boolean };
|
||||
|
||||
export class ApplicationDetails extends React.Component<RouteComponentProps<{ name: string; }>, {page: number}> {
|
||||
|
||||
public static contextTypes = {
|
||||
|
|
@ -481,7 +483,7 @@ export class ApplicationDetails extends React.Component<RouteComponentProps<{ na
|
|||
}
|
||||
|
||||
private renderResourceMenu(resource: ResourceTreeNode, application: appModels.Application): React.ReactNode {
|
||||
let menuItems: Observable<MenuItem[]>;
|
||||
let menuItems: Observable<ActionMenuItem[]>;
|
||||
if (AppUtils.isAppNode(resource) && resource.name === application.metadata.name) {
|
||||
menuItems = Observable.from([this.getApplicationActionMenu(application)]);
|
||||
} else {
|
||||
|
|
@ -520,6 +522,7 @@ export class ApplicationDetails extends React.Component<RouteComponentProps<{ na
|
|||
const resourceActions = services.applications.getResourceActions(application.metadata.name, resource)
|
||||
.then((actions) => items.concat(actions.map((action) => ({
|
||||
title: action.name,
|
||||
disabled: !action.available,
|
||||
action: async () => {
|
||||
try {
|
||||
const confirmed = await this.appContext.apis.popup.confirm(
|
||||
|
|
@ -544,10 +547,12 @@ export class ApplicationDetails extends React.Component<RouteComponentProps<{ na
|
|||
{(items) => (
|
||||
<ul>
|
||||
{items.map((item, i) => (
|
||||
<li style={{ textTransform: 'capitalize' }} key={i} onClick={(e) => {
|
||||
<li className={classNames('application-details__action-menu', { disabled: item.disabled })} key={i} onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
item.action();
|
||||
document.body.click(); // hack, trigger body click to make sure that dropdown
|
||||
if (!item.disabled) {
|
||||
item.action();
|
||||
document.body.click(); // hack, trigger body click to make sure that dropdown closed
|
||||
}
|
||||
}}>{item.iconClassName && <i className={item.iconClassName}/>} {item.title}</li>
|
||||
))}
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -585,6 +585,7 @@ export interface ResourceActionParam {
|
|||
export interface ResourceAction {
|
||||
name: string;
|
||||
params: ResourceActionParam[];
|
||||
available: boolean;
|
||||
}
|
||||
|
||||
export interface SyncWindowsState {
|
||||
|
|
|
|||
Loading…
Reference in a new issue