Skip to content

Commit 80ee0b7

Browse files
committed
Add tooltip to disabled setup buttons
1 parent 4ec24e5 commit 80ee0b7

File tree

2 files changed

+60
-14
lines changed

2 files changed

+60
-14
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { EuiToolTip, PropsOf } from '@elastic/eui';
8+
import React from 'react';
9+
import {
10+
missingMlSetupPrivilegesDescription,
11+
missingMlSetupPrivilegesTitle,
12+
} from './missing_privileges_messages';
13+
14+
export const MissingSetupPrivilegesToolTip: React.FC<Omit<
15+
PropsOf<EuiToolTip>,
16+
'content' | 'title'
17+
>> = (props) => (
18+
<EuiToolTip
19+
{...props}
20+
content={missingMlSetupPrivilegesDescription}
21+
title={missingMlSetupPrivilegesTitle}
22+
/>
23+
);

x-pack/plugins/infra/public/components/logging/log_analysis_setup/setup_flyout/module_list_card.tsx

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
import { EuiCard, EuiIcon } from '@elastic/eui';
8-
import React from 'react';
9-
import { EuiButton } from '@elastic/eui';
7+
import { EuiButton, EuiCard, EuiIcon } from '@elastic/eui';
108
import { FormattedMessage } from '@kbn/i18n/react';
11-
import { RecreateJobButton } from '../../log_analysis_job_status';
9+
import React from 'react';
1210
import { SetupStatus } from '../../../../../common/log_analysis';
11+
import { RecreateJobButton } from '../../log_analysis_job_status';
12+
import { MissingSetupPrivilegesToolTip } from '../missing_setup_privileges_tooltip';
1313

1414
export const LogAnalysisModuleListCard: React.FC<{
1515
hasSetupCapabilities: boolean;
@@ -18,14 +18,38 @@ export const LogAnalysisModuleListCard: React.FC<{
1818
moduleStatus: SetupStatus;
1919
onViewSetup: () => void;
2020
}> = ({ hasSetupCapabilities, moduleDescription, moduleName, moduleStatus, onViewSetup }) => {
21-
const icon =
21+
const moduleIcon =
2222
moduleStatus.type === 'required' ? (
2323
<EuiIcon size="xxl" type="machineLearningApp" />
2424
) : (
2525
<EuiIcon color="secondary" size="xxl" type="check" />
2626
);
27-
const footerContent =
28-
moduleStatus.type === 'required' ? (
27+
28+
const moduleSetupButton = (
29+
<ModuleSetupButton
30+
hasSetupCapabilities={hasSetupCapabilities}
31+
onViewSetup={onViewSetup}
32+
setupType={moduleStatus.type === 'required' ? 'create' : 'recreate'}
33+
/>
34+
);
35+
36+
return (
37+
<EuiCard
38+
description={moduleDescription}
39+
footer={<div>{moduleSetupButton}</div>}
40+
icon={moduleIcon}
41+
title={moduleName}
42+
/>
43+
);
44+
};
45+
46+
const ModuleSetupButton: React.FC<{
47+
hasSetupCapabilities: boolean;
48+
onViewSetup: () => void;
49+
setupType: 'create' | 'recreate';
50+
}> = ({ hasSetupCapabilities, onViewSetup, setupType }) => {
51+
const moduleSetupButton =
52+
setupType === 'create' ? (
2953
<EuiButton disabled={!hasSetupCapabilities} onClick={onViewSetup}>
3054
<FormattedMessage
3155
id="xpack.infra.logs.analysis.enableAnomalyDetectionButtonLabel"
@@ -36,12 +60,11 @@ export const LogAnalysisModuleListCard: React.FC<{
3660
<RecreateJobButton disabled={!hasSetupCapabilities} onClick={onViewSetup} />
3761
);
3862

39-
return (
40-
<EuiCard
41-
description={moduleDescription}
42-
footer={<div>{footerContent}</div>}
43-
icon={icon}
44-
title={moduleName}
45-
/>
63+
return hasSetupCapabilities ? (
64+
moduleSetupButton
65+
) : (
66+
<MissingSetupPrivilegesToolTip position="bottom" delay="regular">
67+
{moduleSetupButton}
68+
</MissingSetupPrivilegesToolTip>
4669
);
4770
};

0 commit comments

Comments
 (0)