@undp/data-viz 1.4.6 → 1.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/AreaChart.cjs +1 -1
  2. package/dist/AreaChart.cjs.map +1 -1
  3. package/dist/AreaChart.js +58 -58
  4. package/dist/AreaChart.js.map +1 -1
  5. package/dist/BiVariateChoroplethMap.cjs +1 -1
  6. package/dist/BiVariateChoroplethMap.cjs.map +1 -1
  7. package/dist/BiVariateChoroplethMap.js +50 -50
  8. package/dist/BiVariateChoroplethMap.js.map +1 -1
  9. package/dist/ChoroplethMap.cjs +1 -1
  10. package/dist/ChoroplethMap.cjs.map +1 -1
  11. package/dist/ChoroplethMap.js +26 -26
  12. package/dist/ChoroplethMap.js.map +1 -1
  13. package/dist/DifferenceLineChart.cjs +1 -1
  14. package/dist/DifferenceLineChart.cjs.map +1 -1
  15. package/dist/DifferenceLineChart.js +44 -44
  16. package/dist/DifferenceLineChart.js.map +1 -1
  17. package/dist/DotDensityMap.cjs +1 -1
  18. package/dist/DotDensityMap.cjs.map +1 -1
  19. package/dist/DotDensityMap.js +2 -2
  20. package/dist/DotDensityMap.js.map +1 -1
  21. package/dist/DualAxisLineChart.cjs +1 -1
  22. package/dist/DualAxisLineChart.cjs.map +1 -1
  23. package/dist/DualAxisLineChart.js +1 -1
  24. package/dist/DualAxisLineChart.js.map +1 -1
  25. package/dist/LineChartWithConfidenceInterval.cjs +1 -1
  26. package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
  27. package/dist/LineChartWithConfidenceInterval.js +33 -33
  28. package/dist/LineChartWithConfidenceInterval.js.map +1 -1
  29. package/dist/MultiLineAltChart.cjs +1 -1
  30. package/dist/MultiLineAltChart.cjs.map +1 -1
  31. package/dist/MultiLineAltChart.js +78 -78
  32. package/dist/MultiLineAltChart.js.map +1 -1
  33. package/dist/MultiLineChart.cjs +1 -1
  34. package/dist/MultiLineChart.cjs.map +1 -1
  35. package/dist/MultiLineChart.js +28 -28
  36. package/dist/MultiLineChart.js.map +1 -1
  37. package/dist/ScatterPlot.cjs +1 -1
  38. package/dist/ScatterPlot.cjs.map +1 -1
  39. package/dist/ScatterPlot.js +43 -43
  40. package/dist/ScatterPlot.js.map +1 -1
  41. package/dist/SimpleLineChart.cjs +1 -1
  42. package/dist/SimpleLineChart.cjs.map +1 -1
  43. package/dist/SimpleLineChart.js +17 -17
  44. package/dist/SimpleLineChart.js.map +1 -1
  45. package/dist/SparkLine.cjs +1 -1
  46. package/dist/SparkLine.cjs.map +1 -1
  47. package/dist/SparkLine.js +1 -1
  48. package/dist/SparkLine.js.map +1 -1
  49. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SparkLine.js","sources":["../src/Components/Graphs/LineCharts/SparkLine/Graph.tsx","../src/Components/Graphs/LineCharts/SparkLine/index.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\r\nimport {\r\n line,\r\n curveMonotoneX,\r\n area,\r\n curveLinear,\r\n curveStep,\r\n curveStepAfter,\r\n curveStepBefore,\r\n} from 'd3-shape';\r\nimport { scaleLinear, scaleTime } from 'd3-scale';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport { bisectCenter } from 'd3-array';\r\nimport { pointer, select } from 'd3-selection';\r\nimport sortBy from 'lodash.sortby';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport {\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n LineChartDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\n\r\ninterface Props {\r\n data: LineChartDataType[];\r\n lineColor: string;\r\n width: number;\r\n height: number;\r\n dateFormat: string;\r\n areaId?: string;\r\n leftMargin: number;\r\n rightMargin: number;\r\n topMargin: number;\r\n bottomMargin: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n maxValue?: number;\r\n minValue?: number;\r\n curveType: CurveTypes;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n customLayers: CustomLayerDataType[];\r\n}\r\n\r\ninterface FormattedDataType {\r\n y: number;\r\n date: Date;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n width,\r\n height,\r\n lineColor,\r\n dateFormat,\r\n areaId,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n minValue,\r\n maxValue,\r\n curveType,\r\n styles,\r\n classNames,\r\n customLayers,\r\n } = props;\r\n const curve =\r\n curveType === 'linear'\r\n ? curveLinear\r\n : curveType === 'step'\r\n ? curveStep\r\n : curveType === 'stepAfter'\r\n ? curveStepAfter\r\n : curveType === 'stepBefore'\r\n ? curveStepBefore\r\n : curveMonotoneX;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\r\n };\r\n const MouseoverRectRef = useRef(null);\r\n const dataFormatted = sortBy(\r\n data.map(d => ({\r\n ...d,\r\n date: parse(`${d.date}`, dateFormat, new Date()),\r\n })),\r\n 'date',\r\n );\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n const minYear = dataFormatted[0].date;\r\n const maxYear = dataFormatted[dataFormatted.length - 1].date;\r\n const minParam: number =\r\n Math.min(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.min(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null)) > 0\r\n ? 0\r\n : Math.min(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n const maxParam: number =\r\n Math.max(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.max(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n\r\n const x = scaleTime().domain([minYear, maxYear]).range([0, graphWidth]);\r\n const y = scaleLinear()\r\n .domain([\r\n checkIfNullOrUndefined(minValue) ? minParam : (minValue as number),\r\n checkIfNullOrUndefined(maxValue) ? (maxParam > 0 ? maxParam : 0) : (maxValue as number),\r\n ])\r\n .range([graphHeight, 0])\r\n .nice();\r\n\r\n const mainGraphArea = area<FormattedDataType>()\r\n .x(d => x(d.date))\r\n .y1(d => y(d.y))\r\n .y0(graphHeight)\r\n .curve(curve);\r\n const lineShape = line<FormattedDataType>()\r\n .x(d => x(d.date))\r\n .y(d => y(d.y))\r\n .curve(curve);\r\n useEffect(() => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mousemove = (event: any) => {\r\n const selectedData =\r\n dataFormatted[\r\n bisectCenter(\r\n dataFormatted.map(d => d.date),\r\n x.invert(pointer(event)[0]),\r\n 1,\r\n )\r\n ];\r\n setMouseOverData(selectedData || dataFormatted[dataFormatted.length - 1]);\r\n onSeriesMouseOver?.(selectedData || dataFormatted[dataFormatted.length - 1]);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n };\r\n const mouseout = () => {\r\n setMouseOverData(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n };\r\n select(MouseoverRectRef.current).on('mousemove', mousemove).on('mouseout', mouseout);\r\n onSeriesMouseOver?.(undefined);\r\n }, [x, dataFormatted, onSeriesMouseOver]);\r\n return (\r\n <>\r\n <svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n >\r\n {areaId ? (\r\n <linearGradient id={areaId} x1='0' x2='0' y1='0' y2='1'>\r\n <stop style={{ stopColor: lineColor }} stopOpacity='0.1' offset='0%' />\r\n <stop style={{ stopColor: lineColor }} stopOpacity='0' offset='100%' />\r\n </linearGradient>\r\n ) : null}\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <g>\r\n <text\r\n className={cn(\r\n 'xs:max-[360px]:hidden fill-primary-gray-700 dark:fill-primary-gray-300 text-[9px] md:text-[10px] lg:text-xs',\r\n classNames?.xAxis?.labels,\r\n )}\r\n y={graphHeight}\r\n x={x(dataFormatted[dataFormatted.length - 1].date)}\r\n style={{\r\n textAnchor: 'end',\r\n ...styles?.xAxis?.labels,\r\n }}\r\n dy='1em'\r\n >\r\n {format(dataFormatted[dataFormatted.length - 1].date, dateFormat)}\r\n </text>\r\n <text\r\n y={graphHeight}\r\n x={x(dataFormatted[0].date)}\r\n style={{\r\n textAnchor: 'start',\r\n ...styles?.xAxis?.labels,\r\n }}\r\n className={cn(\r\n 'xs:max-[360px]:hidden fill-primary-gray-700 dark:fill-primary-gray-300 text-[9px] md:text-[10px] lg:text-xs',\r\n classNames?.xAxis?.labels,\r\n )}\r\n dy='1em'\r\n >\r\n {format(dataFormatted[0].date, dateFormat)}\r\n </text>\r\n </g>\r\n <g>\r\n <path\r\n d={mainGraphArea(dataFormatted) || ''}\r\n style={{\r\n fill: `url(#${areaId})`,\r\n clipPath: 'url(#clip)',\r\n }}\r\n />\r\n <path\r\n d={lineShape(dataFormatted) || ''}\r\n style={{\r\n stroke: lineColor,\r\n fill: 'none',\r\n strokeWidth: 2,\r\n }}\r\n />\r\n {mouseOverData ? (\r\n <circle\r\n y1={0}\r\n cy={y(mouseOverData.y)}\r\n cx={x(mouseOverData.date)}\r\n r={5}\r\n style={{ fill: lineColor }}\r\n />\r\n ) : null}\r\n </g>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n <rect\r\n ref={MouseoverRectRef}\r\n style={{\r\n fill: 'none',\r\n pointerEvents: 'all',\r\n }}\r\n width={graphWidth}\r\n height={graphHeight}\r\n />\r\n </g>\r\n </svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport {\r\n Languages,\r\n LineChartDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { generateRandomString } from '@/Utils/generateRandomString';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: LineChartDataType[];\r\n\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Colors of the lines */\r\n lineColor?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n\r\n // Values and Ticks\r\n /** Maximum value for the chart */\r\n maxValue?: number;\r\n /** Minimum value for the chart */\r\n minValue?: number;\r\n\r\n // Graph Parameters\r\n /** Format of the date in the data object. Available formats can be found [here](https://date-fns.org/docs/format) */\r\n dateFormat?: string;\r\n /** Toggles the visibility of the area below the line */\r\n area?: boolean;\r\n /** Curve type for the line */\r\n curveType?: CurveTypes;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function SparkLine(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n lineColor,\r\n sources,\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n dateFormat = 'yyyy',\r\n area = false,\r\n padding,\r\n backgroundColor,\r\n leftMargin = 5,\r\n rightMargin = 5,\r\n topMargin = 10,\r\n bottomMargin = 20,\r\n tooltip,\r\n relativeHeight,\r\n onSeriesMouseOver,\r\n graphID,\r\n minValue,\r\n maxValue,\r\n graphDownload = false,\r\n dataDownload = false,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n curveType = 'curve',\r\n styles,\r\n classNames,\r\n customLayers = [],\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a line chart that show trends over time.${\r\n graphDescription ? ` ${graphDescription}` : ''\r\n }`\r\n }\r\n >\r\n <div\r\n className='flex grow'\r\n style={{ padding: backgroundColor ? padding || '1rem' : padding || 0 }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n graphDownload={graphDownload ? graphParentDiv.current : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Graph area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <Graph\r\n data={data}\r\n lineColor={lineColor || Colors.primaryColors['blue-600']}\r\n width={width || svgWidth}\r\n height={Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n )}\r\n dateFormat={dateFormat}\r\n areaId={area ? generateRandomString(8) : undefined}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n minValue={minValue}\r\n maxValue={maxValue}\r\n curveType={curveType}\r\n styles={styles}\r\n classNames={classNames}\r\n customLayers={customLayers}\r\n />\r\n ) : null}\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["Graph","props","data","width","height","lineColor","dateFormat","areaId","leftMargin","rightMargin","topMargin","bottomMargin","tooltip","onSeriesMouseOver","minValue","maxValue","curveType","styles","classNames","customLayers","curve","curveLinear","curveStep","curveStepAfter","curveStepBefore","curveMonotoneX","mouseOverData","setMouseOverData","useState","eventX","setEventX","eventY","setEventY","margin","MouseoverRectRef","useRef","dataFormatted","sortBy","d","parse","graphWidth","graphHeight","minYear","maxYear","minParam","maxParam","x","scaleTime","y","scaleLinear","checkIfNullOrUndefined","mainGraphArea","area","lineShape","line","useEffect","mousemove","event","selectedData","bisectCenter","pointer","mouseout","select","jsxs","Fragment","jsx","cn","format","Tooltip","SparkLine","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","relativeHeight","graphID","graphDownload","dataDownload","language","minHeight","theme","ariaLabel","svgWidth","setSvgWidth","svgHeight","setSvgHeight","graphDiv","graphParentDiv","resizeObserver","entries","GraphHeader","Colors","generateRandomString","GraphFooter"],"mappings":"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"}
1
+ {"version":3,"file":"SparkLine.js","sources":["../src/Components/Graphs/LineCharts/SparkLine/Graph.tsx","../src/Components/Graphs/LineCharts/SparkLine/index.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\r\nimport {\r\n line,\r\n curveMonotoneX,\r\n area,\r\n curveLinear,\r\n curveStep,\r\n curveStepAfter,\r\n curveStepBefore,\r\n} from 'd3-shape';\r\nimport { scaleLinear, scaleTime } from 'd3-scale';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport { bisectCenter } from 'd3-array';\r\nimport { pointer, select } from 'd3-selection';\r\nimport sortBy from 'lodash.sortby';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport {\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n LineChartDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\n\r\ninterface Props {\r\n data: LineChartDataType[];\r\n lineColor: string;\r\n width: number;\r\n height: number;\r\n dateFormat: string;\r\n areaId?: string;\r\n leftMargin: number;\r\n rightMargin: number;\r\n topMargin: number;\r\n bottomMargin: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n maxValue?: number;\r\n minValue?: number;\r\n curveType: CurveTypes;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n customLayers: CustomLayerDataType[];\r\n}\r\n\r\ninterface FormattedDataType {\r\n y: number;\r\n date: Date;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n width,\r\n height,\r\n lineColor,\r\n dateFormat,\r\n areaId,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n minValue,\r\n maxValue,\r\n curveType,\r\n styles,\r\n classNames,\r\n customLayers,\r\n } = props;\r\n const curve =\r\n curveType === 'linear'\r\n ? curveLinear\r\n : curveType === 'step'\r\n ? curveStep\r\n : curveType === 'stepAfter'\r\n ? curveStepAfter\r\n : curveType === 'stepBefore'\r\n ? curveStepBefore\r\n : curveMonotoneX;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\r\n };\r\n const MouseoverRectRef = useRef(null);\r\n const dataFormatted = sortBy(\r\n data.map(d => ({\r\n ...d,\r\n date: parse(`${d.date}`, dateFormat, new Date()),\r\n })),\r\n 'date',\r\n );\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n const minYear = dataFormatted[0].date;\r\n const maxYear = dataFormatted[dataFormatted.length - 1].date;\r\n const minParam: number =\r\n Math.min(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.min(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null)) > 0\r\n ? 0\r\n : Math.min(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n const maxParam: number =\r\n Math.max(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.max(...dataFormatted.map(d => d.y).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n\r\n const x = scaleTime().domain([minYear, maxYear]).range([0, graphWidth]);\r\n const y = scaleLinear()\r\n .domain([\r\n checkIfNullOrUndefined(minValue) ? minParam : (minValue as number),\r\n checkIfNullOrUndefined(maxValue) ? (maxParam > 0 ? maxParam : 0) : (maxValue as number),\r\n ])\r\n .range([graphHeight, 0])\r\n .nice();\r\n\r\n const mainGraphArea = area<FormattedDataType>()\r\n .x(d => x(d.date))\r\n .y1(d => y(d.y))\r\n .y0(graphHeight)\r\n .curve(curve);\r\n const lineShape = line<FormattedDataType>()\r\n .x(d => x(d.date))\r\n .y(d => y(d.y))\r\n .curve(curve);\r\n useEffect(() => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mousemove = (event: any) => {\r\n const selectedData =\r\n dataFormatted[\r\n bisectCenter(\r\n dataFormatted.map(d => d.date),\r\n x.invert(pointer(event)[0]),\r\n 0,\r\n )\r\n ];\r\n setMouseOverData(selectedData || dataFormatted[dataFormatted.length - 1]);\r\n onSeriesMouseOver?.(selectedData || dataFormatted[dataFormatted.length - 1]);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n };\r\n const mouseout = () => {\r\n setMouseOverData(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n };\r\n select(MouseoverRectRef.current).on('mousemove', mousemove).on('mouseout', mouseout);\r\n onSeriesMouseOver?.(undefined);\r\n }, [x, dataFormatted, onSeriesMouseOver]);\r\n return (\r\n <>\r\n <svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n >\r\n {areaId ? (\r\n <linearGradient id={areaId} x1='0' x2='0' y1='0' y2='1'>\r\n <stop style={{ stopColor: lineColor }} stopOpacity='0.1' offset='0%' />\r\n <stop style={{ stopColor: lineColor }} stopOpacity='0' offset='100%' />\r\n </linearGradient>\r\n ) : null}\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <g>\r\n <text\r\n className={cn(\r\n 'xs:max-[360px]:hidden fill-primary-gray-700 dark:fill-primary-gray-300 text-[9px] md:text-[10px] lg:text-xs',\r\n classNames?.xAxis?.labels,\r\n )}\r\n y={graphHeight}\r\n x={x(dataFormatted[dataFormatted.length - 1].date)}\r\n style={{\r\n textAnchor: 'end',\r\n ...styles?.xAxis?.labels,\r\n }}\r\n dy='1em'\r\n >\r\n {format(dataFormatted[dataFormatted.length - 1].date, dateFormat)}\r\n </text>\r\n <text\r\n y={graphHeight}\r\n x={x(dataFormatted[0].date)}\r\n style={{\r\n textAnchor: 'start',\r\n ...styles?.xAxis?.labels,\r\n }}\r\n className={cn(\r\n 'xs:max-[360px]:hidden fill-primary-gray-700 dark:fill-primary-gray-300 text-[9px] md:text-[10px] lg:text-xs',\r\n classNames?.xAxis?.labels,\r\n )}\r\n dy='1em'\r\n >\r\n {format(dataFormatted[0].date, dateFormat)}\r\n </text>\r\n </g>\r\n <g>\r\n <path\r\n d={mainGraphArea(dataFormatted) || ''}\r\n style={{\r\n fill: `url(#${areaId})`,\r\n clipPath: 'url(#clip)',\r\n }}\r\n />\r\n <path\r\n d={lineShape(dataFormatted) || ''}\r\n style={{\r\n stroke: lineColor,\r\n fill: 'none',\r\n strokeWidth: 2,\r\n }}\r\n />\r\n {mouseOverData ? (\r\n <circle\r\n y1={0}\r\n cy={y(mouseOverData.y)}\r\n cx={x(mouseOverData.date)}\r\n r={5}\r\n style={{ fill: lineColor }}\r\n />\r\n ) : null}\r\n </g>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n <rect\r\n ref={MouseoverRectRef}\r\n style={{\r\n fill: 'none',\r\n pointerEvents: 'all',\r\n }}\r\n width={graphWidth}\r\n height={graphHeight}\r\n />\r\n </g>\r\n </svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport {\r\n Languages,\r\n LineChartDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { generateRandomString } from '@/Utils/generateRandomString';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: LineChartDataType[];\r\n\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Colors of the lines */\r\n lineColor?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n\r\n // Values and Ticks\r\n /** Maximum value for the chart */\r\n maxValue?: number;\r\n /** Minimum value for the chart */\r\n minValue?: number;\r\n\r\n // Graph Parameters\r\n /** Format of the date in the data object. Available formats can be found [here](https://date-fns.org/docs/format) */\r\n dateFormat?: string;\r\n /** Toggles the visibility of the area below the line */\r\n area?: boolean;\r\n /** Curve type for the line */\r\n curveType?: CurveTypes;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function SparkLine(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n lineColor,\r\n sources,\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n dateFormat = 'yyyy',\r\n area = false,\r\n padding,\r\n backgroundColor,\r\n leftMargin = 5,\r\n rightMargin = 5,\r\n topMargin = 10,\r\n bottomMargin = 20,\r\n tooltip,\r\n relativeHeight,\r\n onSeriesMouseOver,\r\n graphID,\r\n minValue,\r\n maxValue,\r\n graphDownload = false,\r\n dataDownload = false,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n curveType = 'curve',\r\n styles,\r\n classNames,\r\n customLayers = [],\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a line chart that show trends over time.${\r\n graphDescription ? ` ${graphDescription}` : ''\r\n }`\r\n }\r\n >\r\n <div\r\n className='flex grow'\r\n style={{ padding: backgroundColor ? padding || '1rem' : padding || 0 }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n graphDownload={graphDownload ? graphParentDiv.current : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Graph area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <Graph\r\n data={data}\r\n lineColor={lineColor || Colors.primaryColors['blue-600']}\r\n width={width || svgWidth}\r\n height={Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n )}\r\n dateFormat={dateFormat}\r\n areaId={area ? generateRandomString(8) : undefined}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n minValue={minValue}\r\n maxValue={maxValue}\r\n curveType={curveType}\r\n styles={styles}\r\n classNames={classNames}\r\n customLayers={customLayers}\r\n />\r\n ) : null}\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["Graph","props","data","width","height","lineColor","dateFormat","areaId","leftMargin","rightMargin","topMargin","bottomMargin","tooltip","onSeriesMouseOver","minValue","maxValue","curveType","styles","classNames","customLayers","curve","curveLinear","curveStep","curveStepAfter","curveStepBefore","curveMonotoneX","mouseOverData","setMouseOverData","useState","eventX","setEventX","eventY","setEventY","margin","MouseoverRectRef","useRef","dataFormatted","sortBy","d","parse","graphWidth","graphHeight","minYear","maxYear","minParam","maxParam","x","scaleTime","y","scaleLinear","checkIfNullOrUndefined","mainGraphArea","area","lineShape","line","useEffect","mousemove","event","selectedData","bisectCenter","pointer","mouseout","select","jsxs","Fragment","jsx","cn","format","Tooltip","SparkLine","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","relativeHeight","graphID","graphDownload","dataDownload","language","minHeight","theme","ariaLabel","svgWidth","setSvgWidth","svgHeight","setSvgHeight","graphDiv","graphParentDiv","resizeObserver","entries","GraphHeader","Colors","generateRandomString","GraphFooter"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@undp/data-viz",
3
- "version": "1.4.6",
3
+ "version": "1.4.8",
4
4
  "main": "./dist/index.cjs",
5
5
  "module": "./dist/index.js",
6
6
  "browser": "./dist/index.umd.js",