CSS: use prefers-reduced-motion to let users skip animations (#85450)

This commit is contained in:
Laura Fernández
2024-04-09 15:27:28 +02:00
committed by GitHub
parent 698436aa29
commit 88f116e96b
4 changed files with 23 additions and 12 deletions

View File

@@ -6,7 +6,7 @@ import React, { useRef } from 'react';
import CSSTransition from 'react-transition-group/CSSTransition';
import { GrafanaTheme2 } from '@grafana/data';
import { useStyles2, useTheme2 } from '@grafana/ui';
import { handleReducedMotion, useStyles2, useTheme2 } from '@grafana/ui';
import { useGrafana } from 'app/core/context/GrafanaContext';
import { KioskMode } from 'app/types';
@@ -125,8 +125,10 @@ const getStyles = (theme: GrafanaTheme2, searchBarHidden?: boolean) => {
const getAnimStyles = (theme: GrafanaTheme2, animationDuration: number) => {
const commonTransition = {
transitionDuration: `${animationDuration}ms`,
transitionTimingFunction: theme.transitions.easing.easeInOut,
...handleReducedMotion({
transitionDuration: `${animationDuration}ms`,
transitionTimingFunction: theme.transitions.easing.easeInOut,
}),
[theme.breakpoints.down('md')]: {
overflow: 'hidden',
},

View File

@@ -2,7 +2,7 @@ import { cx, css, keyframes } from '@emotion/css';
import React, { useEffect, useState } from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { useStyles2 } from '@grafana/ui';
import { handleReducedMotion, useStyles2 } from '@grafana/ui';
import { Branding } from '../Branding/Branding';
import { BrandingSettings } from '../Branding/types';
@@ -174,7 +174,9 @@ export const getLoginStyles = (theme: GrafanaTheme2) => {
transition: '0.25s ease',
}),
enterAnimation: css({
animation: `${flyInAnimation} ease-out 0.2s`,
...handleReducedMotion({
animation: `${flyInAnimation} ease-out 0.2s`,
}),
}),
};
};