@grafana/ui
Version:
Grafana Components Library
1 lines • 2.86 kB
Source Map (JSON)
{"version":3,"file":"LoadingIndicator.mjs","sources":["../../../../src/components/PanelChrome/LoadingIndicator.tsx"],"sourcesContent":["import { css, cx, keyframes } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\n/**\n * @internal\n */\nexport type LoadingIndicatorProps = {\n loading: boolean;\n onCancel: () => void;\n};\n\n/**\n * @internal\n */\nexport const LoadingIndicator = ({ onCancel, loading }: LoadingIndicatorProps) => {\n const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n const styles = useStyles2(getStyles);\n\n if (!loading) {\n return null;\n }\n\n return (\n <Tooltip content={t('grafana-ui.panel-chrome.tooltip-cancel-loading', 'Cancel query')}>\n <Icon\n className={cx(styles.spin, { [styles.clickable]: !!onCancel })}\n name={prefersReducedMotion ? 'hourglass' : 'sync'}\n size=\"sm\"\n onClick={onCancel}\n data-testid={selectors.components.LoadingIndicator.icon}\n />\n </Tooltip>\n );\n};\n\nconst spin = keyframes({\n '0%': {\n transform: 'rotate(0deg) scaleX(-1)', // scaleX flips the `sync` icon so arrows point the correct way\n },\n '100%': {\n transform: 'rotate(359deg) scaleX(-1)',\n },\n});\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n clickable: css({\n cursor: 'pointer',\n }),\n spin: css({\n [theme.transitions.handleMotion('no-preference')]: {\n animation: `${spin} 3s linear infinite`,\n },\n }),\n };\n};\n"],"names":[],"mappings":";;;;;;;;;AAqBO,MAAM,gBAAA,GAAmB,CAAC,EAAE,QAAA,EAAU,SAAQ,KAA6B;AAChF,EAAA,MAAM,oBAAA,GAAuB,MAAA,CAAO,UAAA,CAAW,kCAAkC,CAAA,CAAE,OAAA;AACnF,EAAA,MAAM,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,2BACG,OAAA,EAAA,EAAQ,OAAA,EAAS,CAAA,CAAE,gDAAA,EAAkD,cAAc,CAAA,EAClF,QAAA,kBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,IAAA,EAAM,EAAE,CAAC,MAAA,CAAO,SAAS,GAAG,CAAC,CAAC,QAAA,EAAU,CAAA;AAAA,MAC7D,IAAA,EAAM,uBAAuB,WAAA,GAAc,MAAA;AAAA,MAC3C,IAAA,EAAK,IAAA;AAAA,MACL,OAAA,EAAS,QAAA;AAAA,MACT,aAAA,EAAa,SAAA,CAAU,UAAA,CAAW,gBAAA,CAAiB;AAAA;AAAA,GACrD,EACF,CAAA;AAEJ;AAEA,MAAM,OAAO,SAAA,CAAU;AAAA,EACrB,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW;AAAA;AAAA,GACb;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW;AAAA;AAEf,CAAC,CAAA;AAED,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyB;AAC1C,EAAA,OAAO;AAAA,IACL,WAAW,GAAA,CAAI;AAAA,MACb,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,MAAM,GAAA,CAAI;AAAA,MACR,CAAC,KAAA,CAAM,WAAA,CAAY,YAAA,CAAa,eAAe,CAAC,GAAG;AAAA,QACjD,SAAA,EAAW,GAAG,IAAI,CAAA,mBAAA;AAAA;AACpB,KACD;AAAA,GACH;AACF,CAAA;;;;"}