Layouts: Ensure layout action buttons aren't greyed out when using keyboard nav (#106203)

* Layouts: Ensure layout action buttons aren't greyed out when using keyboard nav

* Lint
This commit is contained in:
kay delaney
2025-05-29 15:45:42 +01:00
committed by GitHub
parent abb885c585
commit 8dcd66e0e6
5 changed files with 15 additions and 22 deletions
@@ -95,8 +95,7 @@ export function getDashboardGridStyles(theme: GrafanaTheme2) {
opacity: 0.5, opacity: 0.5,
transition: theme.transitions.create('opacity'), transition: theme.transitions.create('opacity'),
filter: `grayscale(100%)`, filter: `grayscale(100%)`,
'&:hover,:focus-within': {
'&:hover': {
opacity: 1, opacity: 1,
filter: 'unset', filter: 'unset',
}, },
@@ -7,6 +7,7 @@ import { useStyles2 } from '@grafana/ui';
import { useHasClonedParents } from '../../utils/clone'; import { useHasClonedParents } from '../../utils/clone';
import { useDashboardState } from '../../utils/utils'; import { useDashboardState } from '../../utils/utils';
import { CanvasGridAddActions } from '../layouts-shared/CanvasGridAddActions'; import { CanvasGridAddActions } from '../layouts-shared/CanvasGridAddActions';
import { dashboardCanvasAddButtonHoverStyles } from '../layouts-shared/styles';
import { AutoGridLayout, AutoGridLayoutState } from './AutoGridLayout'; import { AutoGridLayout, AutoGridLayoutState } from './AutoGridLayout';
import { AutoGridLayoutManager } from './AutoGridLayoutManager'; import { AutoGridLayoutManager } from './AutoGridLayoutManager';
@@ -68,12 +69,7 @@ const getStyles = (theme: GrafanaTheme2, state: AutoGridLayoutState) => ({
} }
: undefined, : undefined,
// Show add action when hovering over the grid // Show add action when hovering over the grid
'&:hover': { ...dashboardCanvasAddButtonHoverStyles,
'.dashboard-canvas-add-button': {
opacity: 1,
filter: 'unset',
},
},
}), }),
containerFillScreen: css({ containerFillScreen: css({
flexGrow: 1, flexGrow: 1,
@@ -43,6 +43,7 @@ import {
import { AutoGridItem } from '../layout-auto-grid/AutoGridItem'; import { AutoGridItem } from '../layout-auto-grid/AutoGridItem';
import { CanvasGridAddActions } from '../layouts-shared/CanvasGridAddActions'; import { CanvasGridAddActions } from '../layouts-shared/CanvasGridAddActions';
import { clearClipboard, getDashboardGridItemFromClipboard } from '../layouts-shared/paste'; import { clearClipboard, getDashboardGridItemFromClipboard } from '../layouts-shared/paste';
import { dashboardCanvasAddButtonHoverStyles } from '../layouts-shared/styles';
import { DashboardLayoutManager } from '../types/DashboardLayoutManager'; import { DashboardLayoutManager } from '../types/DashboardLayoutManager';
import { LayoutRegistryItem } from '../types/LayoutRegistryItem'; import { LayoutRegistryItem } from '../types/LayoutRegistryItem';
@@ -589,12 +590,7 @@ function getStyles(theme: GrafanaTheme2) {
flexGrow: `0 !important`, flexGrow: `0 !important`,
minHeight: '250px', minHeight: '250px',
}, },
'&:hover': { ...dashboardCanvasAddButtonHoverStyles,
'.dashboard-canvas-add-button': {
opacity: 1,
filter: 'unset',
},
},
}), }),
actionsWrapper: css({ actionsWrapper: css({
position: 'relative', position: 'relative',
@@ -9,6 +9,7 @@ import { Button, TabContent, TabsBar, useStyles2 } from '@grafana/ui';
import { useIsConditionallyHidden } from '../../conditional-rendering/useIsConditionallyHidden'; import { useIsConditionallyHidden } from '../../conditional-rendering/useIsConditionallyHidden';
import { getDashboardSceneFor } from '../../utils/utils'; import { getDashboardSceneFor } from '../../utils/utils';
import { dashboardCanvasAddButtonHoverStyles } from '../layouts-shared/styles';
import { useClipboardState } from '../layouts-shared/useClipboardState'; import { useClipboardState } from '../layouts-shared/useClipboardState';
import { TabsLayoutManager } from './TabsLayoutManager'; import { TabsLayoutManager } from './TabsLayoutManager';
@@ -102,14 +103,7 @@ const getStyles = (theme: GrafanaTheme2) => ({
flexDirection: 'column', flexDirection: 'column',
flex: '1 1 auto', flex: '1 1 auto',
}), }),
tabsBar: css({ tabsBar: css(dashboardCanvasAddButtonHoverStyles),
'&:hover': {
'.dashboard-canvas-add-button': {
filter: 'unset',
opacity: 1,
},
},
}),
tabsRow: css({ tabsRow: css({
display: 'flex', display: 'flex',
width: '100%', width: '100%',
@@ -0,0 +1,8 @@
export const dashboardCanvasAddButtonHoverStyles = {
'&:hover,:focus-within': {
'.dashboard-canvas-add-button': {
opacity: 1,
filter: 'unset',
},
},
};