@grafana/ui
Version:
Grafana Components Library
1 lines • 19.5 kB
Source Map (JSON)
{"version":3,"file":"styles.mjs","sources":["../../../../../src/components/Table/TableNG/styles.ts"],"sourcesContent":["import { css } from '@emotion/css';\nimport { type Property } from 'csstype';\nimport memoize, { type Key, type RawKey } from 'micro-memoize';\n\nimport { type GrafanaTheme2, colorManipulator } from '@grafana/data';\n\nimport { COLUMN, TABLE } from './constants';\nimport { type TableCellStyles } from './types';\nimport { getJustifyContent, IS_SAFARI_26, type TextAlign } from './utils';\n\n/**\n * @internal\n * a method that can be used with micro-memoize as a cache key equality comparator.\n */\nexport const isTableCellStylesKeyEqual = (cacheKey: Key, key: RawKey): boolean =>\n cacheKey[0] === key[0] &&\n cacheKey[1].shouldOverflow === key[1].shouldOverflow &&\n cacheKey[1].maxHeight === key[1].maxHeight &&\n cacheKey[1].textAlign === key[1].textAlign &&\n cacheKey[1].textWrap === key[1].textWrap;\n\nexport const getGridStyles = memoize((theme: GrafanaTheme2, enablePagination?: boolean, transparent?: boolean) => {\n const bgColor = transparent ? theme.colors.background.canvas : theme.colors.background.primary;\n // this needs to be pre-calc'd since the theme colors have alpha and the border color becomes\n // unpredictable for background color cells\n const borderColor = colorManipulator.onBackground(theme.colors.border.weak, bgColor).toHexString();\n const selectedRowColor = theme.isDark\n ? colorManipulator.onBackground(theme.colors.warning.main, bgColor).darken(37).toHexString()\n : colorManipulator.onBackground(theme.colors.warning.main, bgColor).lighten(25).toHexString();\n\n const selectedRowHoverColor = theme.colors.emphasize(selectedRowColor, 0.05);\n\n return {\n grid: css({\n '--rdg-background-color': bgColor,\n '--rdg-header-background-color': bgColor,\n '--rdg-border-color': borderColor,\n '--rdg-color': theme.colors.text.primary,\n '--rdg-summary-border-color': borderColor,\n '--rdg-summary-border-width': '1px',\n\n '--rdg-selection-color': theme.colors.info.transparent,\n\n // note: this cannot have any transparency since default cells that\n // overlay/overflow on hover inherit this background and need to occlude cells below\n '--rdg-row-background-color': bgColor,\n '--rdg-row-hover-background-color': transparent\n ? theme.colors.background.primary\n : theme.colors.background.secondary,\n '--rdg-row-selected-background-color': selectedRowColor,\n '--rdg-row-selected-hover-background-color': selectedRowHoverColor,\n\n // TODO: magic 32px number is unfortunate. it would be better to have the content\n // flow using flexbox rather than hard-coding this size via a calc\n blockSize: enablePagination ? 'calc(100% - 32px)' : '100%',\n scrollbarWidth: 'thin',\n scrollbarColor: theme.isDark ? '#fff5 #fff1' : '#0005 #0001',\n\n border: 'none',\n\n '.rdg-cell': {\n padding: TABLE.CELL_PADDING,\n\n '&:last-child': {\n borderInlineEnd: 'none',\n },\n\n '&[aria-selected=\"true\"][role=\"columnheader\"]': {\n outline: 'none',\n },\n },\n\n // add a box shadow on hover and selection for all body cells\n '& > :not(.rdg-summary-row, .rdg-header-row) > .rdg-cell': {\n [getActiveCellSelector()]: { boxShadow: theme.shadows.z2 },\n // selected cells should appear below hovered cells.\n ...(!IS_SAFARI_26 && { '&:hover': { zIndex: theme.zIndex.tooltip - 7 } }),\n '&[aria-selected=true]': { zIndex: theme.zIndex.tooltip - 6 },\n },\n\n '.rdg-cell.rdg-cell-frozen': {\n backgroundColor: 'var(--rdg-row-background-color)',\n zIndex: theme.zIndex.tooltip - 4,\n ...(!IS_SAFARI_26 && { '&:hover': { zIndex: theme.zIndex.tooltip - 2 } }),\n '&[aria-selected=true]': { zIndex: theme.zIndex.tooltip - 3 },\n },\n\n // have to override styles for row selection to workaround safari styles workaround\n '[role=\"row\"][aria-selected=\"true\"]': {\n '&:hover': {\n '.rdg-cell.rdg-cell-frozen': {\n backgroundColor: 'var(--rdg-row-selected-hover-background-color)',\n },\n },\n '.rdg-cell.rdg-cell-frozen': {\n backgroundColor: 'var(--rdg-row-selected-background-color)',\n },\n },\n\n '.rdg-header-row, .rdg-summary-row': {\n '.rdg-cell': {\n zIndex: theme.zIndex.tooltip - 5,\n '&.rdg-cell-frozen': {\n zIndex: theme.zIndex.tooltip - 1,\n },\n },\n },\n '.rdg-summary-row >': {\n '.rdg-cell': {\n // 0.75 padding causes \"jumping\" on hover.\n paddingBlock: theme.spacing(0.625),\n },\n [getActiveCellSelector()]: {\n whiteSpace: 'pre-line',\n height: '100%',\n minHeight: 'fit-content',\n overflowY: 'visible',\n boxShadow: theme.shadows.z2,\n },\n },\n }),\n gridNested: css({\n height: '100%',\n width: `calc(100% - ${COLUMN.EXPANDER_WIDTH - TABLE.CELL_PADDING * 2 - 1}px)`,\n overflowX: 'scroll',\n overflowY: 'hidden',\n marginLeft: COLUMN.EXPANDER_WIDTH - TABLE.CELL_PADDING - 1,\n marginBlock: TABLE.CELL_PADDING,\n // usually row height will be set to 0 when not expanded, but auto cell height may lead to some rendering errors.\n '&[aria-expanded=\"false\"]': {\n display: 'none',\n },\n }),\n cellNested: css({\n '&[aria-selected=true]': { outline: 'none' },\n '&:hover': { backgroundColor: 'transparent' },\n }),\n noDataNested: css({\n height: TABLE.NESTED_NO_DATA_HEIGHT,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.colors.text.secondary,\n fontSize: theme.typography.h4.fontSize,\n }),\n headerRow: css({\n paddingBlockStart: 0,\n fontWeight: 'normal',\n '& .rdg-cell': { height: '100%', alignItems: 'flex-end' },\n }),\n displayNone: css({ display: 'none' }),\n paginationContainer: css({\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n marginTop: '8px',\n width: '100%',\n }),\n paginationSummary: css({\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n display: 'flex',\n justifyContent: 'flex-end',\n padding: theme.spacing(0, 1, 0, 2),\n }),\n menuItem: css({ maxWidth: '200px' }),\n safariWrapper: css({ contain: 'strict', height: '100%' }),\n };\n});\n\nexport const getHeaderCellStyles = memoize((theme: GrafanaTheme2, justifyContent: Property.JustifyContent) =>\n css({\n display: 'flex',\n gap: theme.spacing(0.5),\n zIndex: theme.zIndex.tooltip - 1,\n paddingInline: TABLE.CELL_PADDING,\n paddingBlockEnd: TABLE.CELL_PADDING,\n justifyContent,\n '&:last-child': { borderInlineEnd: 'none' },\n })\n);\n\nexport const getDefaultCellStyles: TableCellStyles = memoize(\n (theme, { textAlign, shouldOverflow, maxHeight }) =>\n css({\n display: 'flex',\n alignItems: 'center',\n textAlign,\n justifyContent: Boolean(maxHeight) ? 'flex-start' : getJustifyContent(textAlign),\n ...(maxHeight && { overflowY: 'hidden' }),\n ...(shouldOverflow && { minHeight: '100%' }),\n\n [getActiveCellSelector()]: {\n ...(shouldOverflow && {\n zIndex: theme.zIndex.tooltip - 2,\n height: 'fit-content',\n minWidth: 'fit-content',\n }),\n },\n\n [getHoverOnlyCellSelector()]: {\n '.table-cell-actions': { display: 'flex' },\n },\n }),\n { isMatchingKey: isTableCellStylesKeyEqual }\n);\n\nexport const getMaxHeightCellStyles: TableCellStyles = memoize(\n (_theme, { textAlign, maxHeight }) =>\n css({\n display: 'flex',\n alignItems: 'center',\n textAlign,\n justifyContent: getJustifyContent(textAlign),\n maxHeight,\n width: '100%',\n overflowY: 'hidden',\n [getActiveCellSelector(true)]: {\n maxHeight: 'none',\n minHeight: '100%',\n },\n }),\n { isMatchingKey: isTableCellStylesKeyEqual }\n);\n\nexport const getCellActionStyles = memoize((theme: GrafanaTheme2, textAlign: TextAlign) =>\n css({\n display: 'none',\n position: 'absolute',\n top: 0,\n margin: 'auto',\n height: '100%',\n color: theme.colors.text.primary,\n background: theme.isDark ? 'rgba(0, 0, 0, 0.7)' : 'rgba(255, 255, 255, 0.7)',\n padding: theme.spacing.x0_5,\n paddingInlineStart: theme.spacing.x1,\n [textAlign === 'right' ? 'left' : 'right']: 0,\n })\n);\n\nexport const getLinkStyles = memoize((theme: GrafanaTheme2, canBeColorized: boolean) =>\n css({\n a: {\n cursor: 'pointer',\n ...(canBeColorized\n ? {\n color: 'inherit',\n textDecoration: 'underline',\n }\n : {\n color: theme.colors.text.link,\n textDecoration: 'none',\n '&:hover': { textDecoration: 'underline' },\n }),\n },\n })\n);\n\nconst caretTriangle = (direction: 'left' | 'right', bgColor: string) =>\n `linear-gradient(to top ${direction}, transparent 62.5%, ${bgColor} 50%)`;\n\nexport const getTooltipStyles = memoize((theme: GrafanaTheme2, textAlign: TextAlign) => ({\n tooltipContent: css({\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n }),\n tooltipWrapper: css({\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.weak}`,\n borderRadius: theme.shape.radius.default,\n boxShadow: theme.shadows.z3,\n overflow: 'hidden',\n padding: theme.spacing(1),\n width: 'inherit',\n }),\n tooltipCaret: css({\n cursor: 'pointer',\n position: 'absolute',\n top: theme.spacing(0.25),\n [textAlign === 'right' ? 'right' : 'left']: theme.spacing(0.25),\n width: theme.spacing(1.75),\n height: theme.spacing(1.75),\n background: caretTriangle(textAlign === 'right' ? 'right' : 'left', theme.colors.border.strong),\n }),\n}));\n\nconst ACTIVE_CELL_SELECTORS = {\n hover: {\n nested: '.rdg-cell:hover &',\n normal: '&:hover',\n },\n selected: {\n nested: '[aria-selected=true] &',\n normal: '&[aria-selected=true]',\n },\n} as const;\n\nexport const getActiveCellSelector = memoize((isNested?: boolean) => {\n const selectors = [];\n selectors.push(ACTIVE_CELL_SELECTORS.selected[isNested ? 'nested' : 'normal']);\n if (!IS_SAFARI_26) {\n selectors.push(ACTIVE_CELL_SELECTORS.hover[isNested ? 'nested' : 'normal']);\n }\n return selectors.join(', ');\n});\n\nconst getHoverOnlyCellSelector = memoize((isNested?: boolean) => {\n if (IS_SAFARI_26) {\n return '';\n }\n return ACTIVE_CELL_SELECTORS.hover[isNested ? 'nested' : 'normal'];\n});\n"],"names":[],"mappings":"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"}