Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: [Obs Alerts > Rules][KEYBOARD]: Tooltips in the datagrid header must be keyboard accessible #183294

Merged
merged 4 commits into from
May 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import {
EuiDataGridCellPopoverElementProps,
useEuiTheme,
EuiToolTip,
EuiIconTip,
EuiText,
EuiIcon,
} from '@elastic/eui';
import {
IExecutionLog,
Expand Down Expand Up @@ -142,14 +142,18 @@ const columnsWithToolTipMap: Record<string, Record<string, string>> = {

export const ColumnHeaderWithToolTip = ({ id }: { id: string }) => {
return (
<EuiToolTip content={columnsWithToolTipMap[id].toolTip}>
<EuiFlexGroup gutterSize="xs" alignItems="center">
<EuiFlexItem>{columnsWithToolTipMap[id].display}</EuiFlexItem>
<EuiFlexItem>
<EuiIcon size="s" color="subdued" type="questionInCircle" className="eui-alignTop" />
</EuiFlexItem>
</EuiFlexGroup>
</EuiToolTip>
<EuiFlexGroup gutterSize="xs" alignItems="center">
<EuiFlexItem>{columnsWithToolTipMap[id].display}</EuiFlexItem>
<EuiFlexItem>
<EuiIconTip
content={columnsWithToolTipMap[id].toolTip}
size="s"
color="subdued"
type="questionInCircle"
className="eui-alignTop"
/>
</EuiFlexItem>
</EuiFlexGroup>
);
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1382,7 +1382,10 @@ describe('rules_list with show only capability', () => {
const rows = await screen.findAllByTestId('rule-row');
expect(rows[0].className).not.toContain('actRulesList__tableRowDisabled');
expect(rows[1].className).toContain('actRulesList__tableRowDisabled');
fireEvent.mouseOver(await screen.findByText('Info'));
const tooltips = await screen.findAllByText('Info');

fireEvent.mouseOver(tooltips[tooltips.length - 1]);

const tooltip = await screen.findByTestId('ruleDisabledByLicenseTooltip');
expect(tooltip).toHaveTextContent('This rule type requires a Platinum license.');
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import {
EuiTableSortingType,
EuiButtonIcon,
EuiSelectableOption,
EuiIcon,
EuiScreenReaderOnly,
EuiCheckbox,
RIGHT_ALIGNMENT,
Expand Down Expand Up @@ -237,7 +236,9 @@ export const RulesListTable = (props: RulesListTableProps) => {
const renderPercentileColumnName = useCallback(() => {
return (
<span data-test-subj={`rulesTable-${selectedPercentile}ColumnName`}>
<EuiToolTip
{selectedPercentile}
&nbsp;
<EuiIconTip
content={i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.ruleExecutionPercentileTooltip',
{
Expand All @@ -248,12 +249,11 @@ export const RulesListTable = (props: RulesListTableProps) => {
},
}
)}
>
<span>
{selectedPercentile}&nbsp;
<EuiIcon size="s" color="subdued" type="questionInCircle" className="eui-alignTop" />
</span>
</EuiToolTip>
size="s"
color="subdued"
type="questionInCircle"
className="eui-alignTop"
/>
<PercentileSelectablePopover
options={percentileOptions}
onOptionsChange={onPercentileOptionsChange}
Expand Down Expand Up @@ -422,23 +422,26 @@ export const RulesListTable = (props: RulesListTableProps) => {
{ defaultMessage: 'Last run' }
),
name: (
<EuiToolTip
data-test-subj="rulesTableCell-lastExecutionDateTooltip"
content={i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.lastRunTitleTooltip',
{
defaultMessage: 'Start time of the last run.',
}
<span>
{i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.lastRunTitle',
{ defaultMessage: 'Last run' }
)}
>
<span>
{i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.lastRunTitle',
{ defaultMessage: 'Last run' }
&nbsp;
<EuiIconTip
data-test-subj="rulesTableCell-lastExecutionDateTooltip"
content={i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.lastRunTitleTooltip',
{
defaultMessage: 'Start time of the last run.',
}
)}
<EuiIcon size="s" color="subdued" type="questionInCircle" className="eui-alignTop" />
</span>
</EuiToolTip>
size="s"
color="subdued"
type="questionInCircle"
className="eui-alignTop"
/>
</span>
),
sortable: true,
width: '20%',
Expand Down Expand Up @@ -469,26 +472,28 @@ export const RulesListTable = (props: RulesListTableProps) => {
{ defaultMessage: 'Notify' }
),
name: (
<EuiToolTip
data-test-subj="rulesTableCell-notifyTooltip"
content={i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.notifyTooltip',
<span>
{i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.notifyTitle',
{
defaultMessage: 'Snooze notifications for a rule.',
defaultMessage: 'Notify',
}
)}
>
<span>
{i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.notifyTitle',
&nbsp;
<EuiIconTip
data-test-subj="rulesTableCell-notifyTooltip"
content={i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.notifyTooltip',
{
defaultMessage: 'Notify',
defaultMessage: 'Snooze notifications for a rule.',
}
)}
&nbsp;
<EuiIcon size="s" color="subdued" type="questionInCircle" className="eui-alignTop" />
</span>
</EuiToolTip>
size="s"
color="subdued"
type="questionInCircle"
className="eui-alignTop"
/>
</span>
),
width: '14%',
'data-test-subj': 'rulesTableCell-rulesListNotify',
Expand Down Expand Up @@ -581,23 +586,26 @@ export const RulesListTable = (props: RulesListTableProps) => {
{ defaultMessage: 'Duration' }
),
name: (
<EuiToolTip
data-test-subj="rulesTableCell-durationTooltip"
content={i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.durationTitleTooltip',
{
defaultMessage: 'The length of time it took for the rule to run (mm:ss).',
}
<span>
{i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.durationTitle',
{ defaultMessage: 'Duration' }
)}
>
<span>
{i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.durationTitle',
{ defaultMessage: 'Duration' }
&nbsp;
<EuiIconTip
data-test-subj="rulesTableCell-durationTooltip"
content={i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.durationTitleTooltip',
{
defaultMessage: 'The length of time it took for the rule to run (mm:ss).',
}
)}
<EuiIcon size="s" color="subdued" type="questionInCircle" className="eui-alignTop" />
</span>
</EuiToolTip>
size="s"
color="subdued"
type="questionInCircle"
className="eui-alignTop"
/>
</span>
),
sortable: true,
truncateText: false,
Expand Down Expand Up @@ -654,23 +662,26 @@ export const RulesListTable = (props: RulesListTableProps) => {
{ defaultMessage: 'Success ratio' }
),
name: (
<EuiToolTip
data-test-subj="rulesTableCell-successRatioTooltip"
content={i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.successRatioTitleTooltip',
{
defaultMessage: 'How often this rule runs successfully.',
}
<span>
{i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.successRatioTitle',
{ defaultMessage: 'Success ratio' }
)}
>
<span>
{i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.successRatioTitle',
{ defaultMessage: 'Success ratio' }
&nbsp;
<EuiIconTip
data-test-subj="rulesTableCell-successRatioTooltip"
content={i18n.translate(
'xpack.triggersActionsUI.sections.rulesList.rulesListTable.columns.successRatioTitleTooltip',
{
defaultMessage: 'How often this rule runs successfully.',
}
)}
<EuiIcon size="s" color="subdued" type="questionInCircle" className="eui-alignTop" />
</span>
</EuiToolTip>
size="s"
color="subdued"
type="questionInCircle"
className="eui-alignTop"
/>
</span>
),
sortable: true,
truncateText: false,
Expand Down