All files / src/components/StackedBarChart StackedBarChart.styles.ts

100% Statements 5/5
90% Branches 9/10
100% Functions 1/1
100% Lines 4/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119  24x   24x                         220x 20x                                                                                                                                                                                                          
import { IStackedBarChartStyleProps, IStackedBarChartStyles } from './StackedBarChart.types';
import { FontSizes, FontWeights, HighContrastSelector, IStyle } from '@fluentui/react/lib/Styling';
 
export const getStyles = (props: IStackedBarChartStyleProps): IStackedBarChartStyles => {
  const {
    className,
    width,
    barHeight,
    shouldHighlight,
    theme,
    href,
    benchmarkColor,
    benchmarkRatio,
    targetColor,
    targetRatio,
    showTriangle,
  } = props;
  return {
    root: [
      theme.fonts.medium,
      'ms-StackedBarChart',
      {
        width: width ? width : '100%',
        display: 'flex',
        flexDirection: 'column',
      },
      className,
    ],
    chart: {
      width: '100%',
      height: barHeight ? barHeight : 12,
      display: 'block',
      marginBottom: showTriangle ? '16px' : '10px',
      overflow: 'visible',
    },
    chartTitle: {
      ...theme.fonts.small,
      display: 'flex',
      justifyContent: 'space-between',
    },
    chartTitleLeft: {
      textOverflow: 'ellipsis',
      overflow: 'hidden',
      whiteSpace: 'nowrap',
      display: 'block',
      color: theme.palette.neutralPrimary,
      marginBottom: '5px',
    },
    legendContainer: {
      margin: '4px 0px 0px 4px',
    },
    opacityChangeOnHover: {
      opacity: shouldHighlight ? '' : '0.1',
      cursor: href ? 'pointer' : 'default',
      selectors: {
        '&:focus': {
          stroke: theme.palette.black,
          strokeWidth: '2px',
        },
      },
    },
    ratioNumerator: {
      fontSize: FontSizes.medium,
      fontWeight: FontWeights.semibold,
      color: theme.palette.neutralPrimary,
    },
    ratioDenominator: {
      fontSize: FontSizes.medium,
      color: theme.palette.neutralPrimary,
    },
    benchmarkContainer: {
      position: 'relative',
      height: '7px',
      marginTop: '-3px',
      marginBottom: '-1px',
    },
    benchmark: {
      position: 'absolute',
      left: 'calc(' + benchmarkRatio + '% - 4px)',
      width: '0',
      height: '0',
      borderLeft: '4px solid transparent',
      borderRight: '4px solid transparent',
      borderTop: '7px solid',
      borderTopColor: benchmarkColor,
      marginBottom: '4px',
      selectors: {
        [HighContrastSelector]: {
          border: '0px',
          height: '7px',
          width: '7px',
          clipPath: 'polygon(50% 100%, 0 0, 100% 0)',
          backgroundImage: `linear-gradient(to right, ${benchmarkColor}, ${benchmarkColor})`,
        } as IStyle,
      },
    },
    target: {
      position: 'absolute',
      left: 'calc(' + targetRatio + '% - 4px)',
      width: '0',
      height: '0',
      borderLeft: '4px solid transparent',
      borderRight: '4px solid transparent',
      borderTop: '7px solid',
      borderTopColor: targetColor,
      marginBottom: '4px',
      selectors: {
        [HighContrastSelector]: {
          border: '0px',
          height: '7px',
          width: '7px',
          clipPath: 'polygon(50% 100%, 0 0, 100% 0)',
          backgroundImage: `linear-gradient(to right, ${targetColor}, ${targetColor})`,
        } as IStyle,
      },
    },
  };
};