@grafana/ui
Version:
Grafana Components Library
1 lines • 4.31 kB
Source Map (JSON)
{"version":3,"file":"TimeRangeOption.mjs","sources":["../../../../../src/components/DateTimePickers/TimeRangePicker/TimeRangeOption.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { memo } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { GrafanaTheme2, TimeOption } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { getFocusStyles } from '../../../themes/mixins';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n container: css({\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n position: 'relative',\n }),\n radio: css({\n opacity: 0,\n width: '0 !important',\n '&:focus-visible + label': getFocusStyles(theme),\n }),\n label: css({\n cursor: 'pointer',\n flex: 1,\n padding: theme.spacing(1),\n borderRadius: theme.shape.radius.default,\n\n '&:hover': {\n background: theme.colors.action.hover,\n cursor: 'pointer',\n },\n }),\n labelSelected: css({\n background: theme.colors.action.selected,\n\n '&::before': {\n backgroundImage: theme.colors.gradients.brandVertical,\n borderRadius: theme.shape.radius.default,\n content: '\" \"',\n display: 'block',\n height: '100%',\n position: 'absolute',\n width: theme.spacing(0.5),\n left: 0,\n top: 0,\n },\n }),\n };\n};\n\ninterface Props {\n value: TimeOption;\n selected?: boolean;\n onSelect: (option: TimeOption) => void;\n /**\n * Input identifier. This should be the same for all options in a group.\n */\n name: string;\n}\n\nexport const TimeRangeOption = memo<Props>(({ value, onSelect, selected = false, name }) => {\n const styles = useStyles2(getStyles);\n // In case there are more of the same timerange in the list\n const id = uuidv4();\n\n return (\n <li className={styles.container}>\n <input\n className={styles.radio}\n checked={selected}\n name={name}\n type=\"checkbox\"\n data-role=\"item\"\n tabIndex={-1}\n id={id}\n onChange={() => onSelect(value)}\n />\n <label className={cx(styles.label, selected && styles.labelSelected)} htmlFor={id}>\n {value.display}\n </label>\n </li>\n );\n});\n\nTimeRangeOption.displayName = 'TimeRangeOption';\n"],"names":["uuidv4"],"mappings":";;;;;;;AASA,MAAM,SAAA,GAAY,CAAC,KAAyB,KAAA;AAC1C,EAAO,OAAA;AAAA,IACL,WAAW,GAAI,CAAA;AAAA,MACb,OAAS,EAAA,MAAA;AAAA,MACT,UAAY,EAAA,QAAA;AAAA,MACZ,aAAe,EAAA,aAAA;AAAA,MACf,cAAgB,EAAA,eAAA;AAAA,MAChB,QAAU,EAAA;AAAA,KACX,CAAA;AAAA,IACD,OAAO,GAAI,CAAA;AAAA,MACT,OAAS,EAAA,CAAA;AAAA,MACT,KAAO,EAAA,cAAA;AAAA,MACP,yBAAA,EAA2B,eAAe,KAAK;AAAA,KAChD,CAAA;AAAA,IACD,OAAO,GAAI,CAAA;AAAA,MACT,MAAQ,EAAA,SAAA;AAAA,MACR,IAAM,EAAA,CAAA;AAAA,MACN,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MACxB,YAAA,EAAc,KAAM,CAAA,KAAA,CAAM,MAAO,CAAA,OAAA;AAAA,MAEjC,SAAW,EAAA;AAAA,QACT,UAAA,EAAY,KAAM,CAAA,MAAA,CAAO,MAAO,CAAA,KAAA;AAAA,QAChC,MAAQ,EAAA;AAAA;AACV,KACD,CAAA;AAAA,IACD,eAAe,GAAI,CAAA;AAAA,MACjB,UAAA,EAAY,KAAM,CAAA,MAAA,CAAO,MAAO,CAAA,QAAA;AAAA,MAEhC,WAAa,EAAA;AAAA,QACX,eAAA,EAAiB,KAAM,CAAA,MAAA,CAAO,SAAU,CAAA,aAAA;AAAA,QACxC,YAAA,EAAc,KAAM,CAAA,KAAA,CAAM,MAAO,CAAA,OAAA;AAAA,QACjC,OAAS,EAAA,KAAA;AAAA,QACT,OAAS,EAAA,OAAA;AAAA,QACT,MAAQ,EAAA,MAAA;AAAA,QACR,QAAU,EAAA,UAAA;AAAA,QACV,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,QACxB,IAAM,EAAA,CAAA;AAAA,QACN,GAAK,EAAA;AAAA;AACP,KACD;AAAA,GACH;AACF,CAAA;AAYa,MAAA,eAAA,GAAkB,KAAY,CAAC,EAAE,OAAO,QAAU,EAAA,QAAA,GAAW,KAAO,EAAA,IAAA,EAAW,KAAA;AAC1F,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EAAA,MAAM,KAAKA,EAAO,EAAA;AAElB,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA,EAAG,SAAW,EAAA,MAAA,CAAO,SACpB,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAO,CAAA,KAAA;AAAA,QAClB,OAAS,EAAA,QAAA;AAAA,QACT,IAAA;AAAA,QACA,IAAK,EAAA,UAAA;AAAA,QACL,WAAU,EAAA,MAAA;AAAA,QACV,QAAU,EAAA,CAAA,CAAA;AAAA,QACV,EAAA;AAAA,QACA,QAAA,EAAU,MAAM,QAAA,CAAS,KAAK;AAAA;AAAA,KAChC;AAAA,oBACC,GAAA,CAAA,OAAA,EAAA,EAAM,SAAW,EAAA,EAAA,CAAG,MAAO,CAAA,KAAA,EAAO,QAAY,IAAA,MAAA,CAAO,aAAa,CAAA,EAAG,OAAS,EAAA,EAAA,EAC5E,gBAAM,OACT,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ,CAAC;AAED,eAAA,CAAgB,WAAc,GAAA,iBAAA;;;;"}