@undp/data-viz 1.5.2 → 1.5.3
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.
- package/dist/AreaChart.cjs +1 -1
- package/dist/AreaChart.cjs.map +1 -1
- package/dist/AreaChart.js +3 -2
- package/dist/AreaChart.js.map +1 -1
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.js +1196 -1224
- package/dist/BarGraph.js.map +1 -1
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.cjs.map +1 -1
- package/dist/BeeSwarmChart.js +130 -142
- package/dist/BeeSwarmChart.js.map +1 -1
- package/dist/BiVariateChoroplethMap.cjs +1 -1
- package/dist/BiVariateChoroplethMap.cjs.map +1 -1
- package/dist/BiVariateChoroplethMap.js +41 -41
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/BulletChart.cjs +1 -1
- package/dist/BulletChart.cjs.map +1 -1
- package/dist/BulletChart.js +483 -487
- package/dist/BulletChart.js.map +1 -1
- package/dist/ButterflyChart.cjs +1 -1
- package/dist/ButterflyChart.cjs.map +1 -1
- package/dist/ButterflyChart.js +99 -99
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.js +125 -125
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.js +2 -2
- package/dist/DataCards.cjs +2 -2
- package/dist/DataCards.cjs.map +1 -1
- package/dist/DataCards.js +6 -6
- package/dist/DataCards.js.map +1 -1
- package/dist/DataTable.cjs +1 -1
- package/dist/DataTable.cjs.map +1 -1
- package/dist/DataTable.js +66 -68
- package/dist/DataTable.js.map +1 -1
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.cjs.map +1 -1
- package/dist/DifferenceLineChart.js +3 -2
- package/dist/DifferenceLineChart.js.map +1 -1
- package/dist/DonutChart.cjs +1 -1
- package/dist/DonutChart.cjs.map +1 -1
- package/dist/DonutChart.js +205 -205
- package/dist/DonutChart.js.map +1 -1
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.cjs.map +1 -1
- package/dist/DotDensityMap.js +78 -81
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.cjs.map +1 -1
- package/dist/DualAxisLineChart.js +3 -2
- package/dist/DualAxisLineChart.js.map +1 -1
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.cjs.map +1 -1
- package/dist/DumbbellChart.js +64 -65
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/GeoHubMap.cjs +1 -1
- package/dist/GeoHubMap.js +1 -1
- package/dist/GeoHubMapWithLayerSelection.cjs +1 -1
- package/dist/GeoHubMapWithLayerSelection.js +1 -1
- package/dist/{GraphEl-4RUlclvW.cjs → GraphEl-BcYgMnN2.cjs} +2 -2
- package/dist/{GraphEl-4RUlclvW.cjs.map → GraphEl-BcYgMnN2.cjs.map} +1 -1
- package/dist/{GraphEl-ClIxlWa3.js → GraphEl-CMWeARJ3.js} +2 -2
- package/dist/{GraphEl-ClIxlWa3.js.map → GraphEl-CMWeARJ3.js.map} +1 -1
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.js +4 -4
- package/dist/GriddedGraphsFromConfig.cjs +1 -1
- package/dist/GriddedGraphsFromConfig.js +1 -1
- package/dist/HeatMap.cjs +1 -1
- package/dist/HeatMap.cjs.map +1 -1
- package/dist/HeatMap.js +83 -83
- package/dist/HeatMap.js.map +1 -1
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.js +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
- package/dist/LineChartWithConfidenceInterval.js +7 -6
- package/dist/LineChartWithConfidenceInterval.js.map +1 -1
- package/dist/MultiGraphDashboard.cjs +1 -1
- package/dist/MultiGraphDashboard.js +2 -2
- package/dist/MultiGraphDashboardFromConfig.cjs +1 -1
- package/dist/MultiGraphDashboardFromConfig.js +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.cjs +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.js +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +1 -1
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.cjs.map +1 -1
- package/dist/MultiLineAltChart.js +82 -91
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.cjs.map +1 -1
- package/dist/MultiLineChart.js +3 -2
- package/dist/MultiLineChart.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.js +2 -2
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.cjs +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.js +1 -1
- package/dist/RadarChart.cjs +1 -1
- package/dist/RadarChart.cjs.map +1 -1
- package/dist/RadarChart.js +124 -130
- package/dist/RadarChart.js.map +1 -1
- package/dist/SankeyChart.cjs +1 -1
- package/dist/SankeyChart.cjs.map +1 -1
- package/dist/SankeyChart.js +200 -200
- package/dist/SankeyChart.js.map +1 -1
- package/dist/ScatterPlot.cjs +1 -1
- package/dist/ScatterPlot.cjs.map +1 -1
- package/dist/ScatterPlot.js +149 -155
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.cjs.map +1 -1
- package/dist/SimpleLineChart.js +44 -43
- package/dist/SimpleLineChart.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.js +4 -4
- package/dist/SingleGraphDashboardFromConfig.cjs +1 -1
- package/dist/SingleGraphDashboardFromConfig.js +1 -1
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.cjs +1 -1
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.js +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.js +3 -3
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.js +1 -1
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.cjs.map +1 -1
- package/dist/SlopeChart.js +107 -113
- package/dist/SlopeChart.js.map +1 -1
- package/dist/SparkLine.cjs +1 -1
- package/dist/SparkLine.cjs.map +1 -1
- package/dist/SparkLine.js +3 -2
- package/dist/SparkLine.js.map +1 -1
- package/dist/StripChart.cjs +1 -1
- package/dist/StripChart.cjs.map +1 -1
- package/dist/StripChart.js +159 -159
- package/dist/StripChart.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.cjs.map +1 -1
- package/dist/ThreeDGlobe.js +3 -3
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/TreeMapGraph.cjs +1 -1
- package/dist/TreeMapGraph.cjs.map +1 -1
- package/dist/TreeMapGraph.js +194 -200
- package/dist/TreeMapGraph.js.map +1 -1
- package/dist/ensureCompleteData-DkQYPeDa.cjs +2 -0
- package/dist/ensureCompleteData-DkQYPeDa.cjs.map +1 -0
- package/dist/{ensureCompleteData-BALdOrsS.js → ensureCompleteData-DlmibgaI.js} +28 -8
- package/dist/ensureCompleteData-DlmibgaI.js.map +1 -0
- package/dist/fetchAndParseData-Ba-_CgxS.cjs +16 -0
- package/dist/fetchAndParseData-Ba-_CgxS.cjs.map +1 -0
- package/dist/fetchAndParseData-sapWbnYk.js +583 -0
- package/dist/fetchAndParseData-sapWbnYk.js.map +1 -0
- package/dist/fetchAndParseData.cjs +1 -1
- package/dist/fetchAndParseData.js +1 -1
- package/dist/getJenks-BbngDoBQ.js +19 -0
- package/dist/getJenks-BbngDoBQ.js.map +1 -0
- package/dist/getJenks-GYmdwBqm.cjs +2 -0
- package/dist/getJenks-GYmdwBqm.cjs.map +1 -0
- package/dist/getSliderMarks-9cNoRkDx.js +1023 -0
- package/dist/getSliderMarks-9cNoRkDx.js.map +1 -0
- package/dist/getSliderMarks-CRIbTGYV.cjs +6 -0
- package/dist/getSliderMarks-CRIbTGYV.cjs.map +1 -0
- package/dist/getUniqValue-DiCh_MOD.js +13 -0
- package/dist/getUniqValue-DiCh_MOD.js.map +1 -0
- package/dist/getUniqValue-RViz8tTw.cjs +2 -0
- package/dist/getUniqValue-RViz8tTw.cjs.map +1 -0
- package/dist/{index-BMgDMxKJ.js → index-37q0ULNQ.js} +44 -50
- package/dist/index-37q0ULNQ.js.map +1 -0
- package/dist/index-CVlCtJbC.cjs +2 -0
- package/dist/index-CVlCtJbC.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -6
- package/dist/sort-DfK1b0F5.js +34 -0
- package/dist/sort-DfK1b0F5.js.map +1 -0
- package/dist/sort-O96oMZLb.cjs +2 -0
- package/dist/sort-O96oMZLb.cjs.map +1 -0
- package/dist/transformData.cjs +1 -1
- package/dist/transformData.js +3 -3
- package/dist/transformDataForAggregation-KXGm6flX.cjs +2 -0
- package/dist/{transformDataForAggregation-BVxVu4yY.cjs.map → transformDataForAggregation-KXGm6flX.cjs.map} +1 -1
- package/dist/{transformDataForAggregation-1BYVFqvF.js → transformDataForAggregation-sBpdlX8n.js} +40 -44
- package/dist/{transformDataForAggregation-1BYVFqvF.js.map → transformDataForAggregation-sBpdlX8n.js.map} +1 -1
- package/dist/{transformDataForGraphFromFile-BC9Ha8hF.js → transformDataForGraphFromFile-ComYvzuz.js} +3 -3
- package/dist/{transformDataForGraphFromFile-BC9Ha8hF.js.map → transformDataForGraphFromFile-ComYvzuz.js.map} +1 -1
- package/dist/{transformDataForGraphFromFile-b41aNQYY.cjs → transformDataForGraphFromFile-DVZodTHd.cjs} +2 -2
- package/dist/{transformDataForGraphFromFile-b41aNQYY.cjs.map → transformDataForGraphFromFile-DVZodTHd.cjs.map} +1 -1
- package/dist/uniqBy-BHy4I8PK.js +8 -0
- package/dist/uniqBy-BHy4I8PK.js.map +1 -0
- package/dist/uniqBy-O05lp2S5.cjs +2 -0
- package/dist/uniqBy-O05lp2S5.cjs.map +1 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +2 -2
- package/package.json +1 -7
- package/dist/ensureCompleteData-BALdOrsS.js.map +0 -1
- package/dist/ensureCompleteData-BU5Zlccy.cjs +0 -2
- package/dist/ensureCompleteData-BU5Zlccy.cjs.map +0 -1
- package/dist/fetchAndParseData-DBOl1Icl.js +0 -1196
- package/dist/fetchAndParseData-DBOl1Icl.js.map +0 -1
- package/dist/fetchAndParseData-Dcy7AS_0.cjs +0 -16
- package/dist/fetchAndParseData-Dcy7AS_0.cjs.map +0 -1
- package/dist/getJenks-DW96UYNE.js +0 -23
- package/dist/getJenks-DW96UYNE.js.map +0 -1
- package/dist/getJenks-vofIZmeb.cjs +0 -2
- package/dist/getJenks-vofIZmeb.cjs.map +0 -1
- package/dist/getSliderMarks-C0jptXeP.js +0 -1054
- package/dist/getSliderMarks-C0jptXeP.js.map +0 -1
- package/dist/getSliderMarks-CtsEXiLV.cjs +0 -6
- package/dist/getSliderMarks-CtsEXiLV.cjs.map +0 -1
- package/dist/getUniqValue-CfuE_l9c.cjs +0 -2
- package/dist/getUniqValue-CfuE_l9c.cjs.map +0 -1
- package/dist/getUniqValue-CttuU_wn.js +0 -20
- package/dist/getUniqValue-CttuU_wn.js.map +0 -1
- package/dist/index-AqnpA7_O.js +0 -631
- package/dist/index-AqnpA7_O.js.map +0 -1
- package/dist/index-BJOeaYTk.cjs +0 -2
- package/dist/index-BJOeaYTk.cjs.map +0 -1
- package/dist/index-BMgDMxKJ.js.map +0 -1
- package/dist/index-DYH8g9WA.cjs +0 -2
- package/dist/index-DYH8g9WA.cjs.map +0 -1
- package/dist/index-Da2GUKrr.cjs +0 -2
- package/dist/index-Da2GUKrr.cjs.map +0 -1
- package/dist/index-fwdktvAS.js +0 -707
- package/dist/index-fwdktvAS.js.map +0 -1
- package/dist/transformDataForAggregation-BVxVu4yY.cjs +0 -2
package/dist/DataTable.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.cjs","sources":["../src/Components/Graphs/DataTable/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport isEqual from 'fast-deep-equal';\r\nimport { useEffect, useState } from 'react';\r\nimport sortBy from 'lodash.sortby';\r\nimport intersection from 'lodash.intersection';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { P } from '@undp/design-system-react/Typography';\r\n\r\nimport {\r\n DataTableColumnDataType,\r\n Languages,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport {\r\n FilterIcon,\r\n FilterIconApplied,\r\n SortingIcon,\r\n SortingIconAscending,\r\n SortingIconDescending,\r\n} from '@/Components/Icons';\r\nimport { getTextColorBasedOnBgColor } from '@/Utils/getTextColorBasedOnBgColor';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects. If the data have a object for ket `rowStyle` then that is use to style the row of the table. */\r\n data: object[];\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 /** 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 /** Minimum width of the table as string in px */\r\n minWidth?: string;\r\n /** Height of the graph */\r\n height?: 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\r\n // Graph Parameters\r\n /** Column settings for each column shown in the table. */\r\n columnData: DataTableColumnDataType[];\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Callback for mouse click event */\r\n onSeriesMouseClick?: (_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\nconst TotalWidth = (columns: (number | undefined)[]) => {\r\n const columnWidth = columns.map(d => d || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nexport function DataTable(props: Props) {\r\n const {\r\n width,\r\n height,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n graphID,\r\n data,\r\n columnData,\r\n onSeriesMouseClick,\r\n language = 'en',\r\n theme = 'light',\r\n ariaLabel,\r\n backgroundColor = false,\r\n padding,\r\n resetSelectionOnDoubleClick = true,\r\n styles,\r\n classNames,\r\n minWidth,\r\n naLabel = 'NA',\r\n precision = 2,\r\n } = props;\r\n const [columnSortBy, setColumnSortBy] = useState<string | undefined>(undefined);\r\n\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc');\r\n const [popupVisible, setPopupVisible] = useState<string | undefined>(undefined);\r\n const [popupStyle, setPopupStyle] = useState({});\r\n const [filterOption, setFilterOption] = useState(\r\n columnData\r\n .filter(d => d.filterOptions && d.filterOptions.length > 0)\r\n .map(d => ({ id: d.columnId, option: d.filterOptions as string[] })),\r\n );\r\n const [sortedData, setSortedData] = useState(data);\r\n useEffect(() => {\r\n const dataFiltered: any = [];\r\n\r\n data.forEach((d: any) => {\r\n let filter = true;\r\n filterOption.forEach(el => {\r\n if (\r\n typeof d[el.id] !== 'object' &&\r\n typeof d[el.id] !== 'function' &&\r\n typeof d[el.id] !== 'symbol'\r\n ) {\r\n if (columnData[columnData.findIndex(cd => cd.columnId === el.id)].separator) {\r\n const arr = d[el.id].split(\r\n columnData[columnData.findIndex(cd => cd.columnId === el.id)].separator,\r\n );\r\n if (intersection(arr, el.option).length === 0) filter = false;\r\n } else if (el.option.indexOf(d[el.id]) === -1) filter = false;\r\n }\r\n });\r\n if (filter) dataFiltered.push(d);\r\n });\r\n if (columnSortBy && data) {\r\n setSortedData(\r\n sortDirection === 'asc'\r\n ? sortBy(dataFiltered, [columnSortBy])\r\n : sortBy(dataFiltered, [columnSortBy]).reverse(),\r\n );\r\n } else {\r\n setSortedData(dataFiltered);\r\n }\r\n }, [columnSortBy, sortDirection, data, filterOption, columnData]);\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'} w-full`,\r\n width ? 'w-fit' : 'w-full',\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 aria-label={\r\n ariaLabel ||\r\n `${graphTitle ? `The graph shows ${graphTitle}. ` : ''}This is an data table. ${\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 gap-3 w-full justify-between grow'>\r\n {graphTitle || graphDescription ? (\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 />\r\n ) : null}\r\n <div className='grow flex flex-col justify-center'>\r\n <div\r\n className='undp-scrollbar'\r\n style={{\r\n width: width ? `${width}px` : '100%',\r\n height: height ? `${height}px` : 'auto',\r\n }}\r\n >\r\n <div style={minWidth ? { minWidth } : undefined}>\r\n {data ? (\r\n <table className='w-full' style={{ borderCollapse: 'collapse' }}>\r\n <thead className='text-left bg-primary-gray-300 dark:bg-primary-gray-550'>\r\n <tr>\r\n {columnData?.map((d, i) => (\r\n <th\r\n className='text-primary-gray-700 dark:text-primary-gray-100 text-sm'\r\n style={{\r\n width: `calc(${\r\n (100 * (d.columnWidth || 1)) /\r\n TotalWidth(columnData.map(cd => cd.columnWidth || 1))\r\n }%`,\r\n }}\r\n key={i}\r\n >\r\n <div className='flex gap-2 justify-between items-center p-4'>\r\n <P\r\n size='sm'\r\n marginBottom='none'\r\n className={`w-fit grow text-${d.align || 'left'} font-bold`}\r\n >\r\n {d.columnTitle || d.columnId}\r\n </P>\r\n {d.sortable ? (\r\n <button\r\n type='button'\r\n className='bg-transparent cursor-pointer p-0 m-0 border-0'\r\n onClick={() => {\r\n if (columnSortBy === d.columnId) {\r\n if (sortDirection === 'asc') {\r\n setSortDirection('desc');\r\n }\r\n if (sortDirection === 'desc') {\r\n setColumnSortBy(undefined);\r\n }\r\n } else {\r\n setColumnSortBy(d.columnId);\r\n setSortDirection('asc');\r\n }\r\n }}\r\n >\r\n {columnSortBy === d.columnId ? (\r\n sortDirection === 'asc' ? (\r\n <SortingIconAscending />\r\n ) : (\r\n <SortingIconDescending />\r\n )\r\n ) : (\r\n <SortingIcon />\r\n )}\r\n </button>\r\n ) : null}\r\n {d.filterOptions && d.filterOptions.length ? (\r\n <button\r\n type='button'\r\n className='bg-transparent cursor-pointer m-0 p-0 border-0'\r\n onClick={event => {\r\n if (popupVisible === d.columnId) {\r\n setPopupVisible(undefined);\r\n } else if (event.currentTarget) {\r\n setPopupVisible(d.columnId);\r\n const rect = event.currentTarget.getBoundingClientRect();\r\n setPopupStyle({\r\n top: rect.bottom + window.scrollY,\r\n left:\r\n rect.left + window.scrollX - 160 < 0\r\n ? rect.left + window.scrollX\r\n : rect.left + window.scrollX - 160,\r\n width: '10rem',\r\n });\r\n }\r\n }}\r\n >\r\n {filterOption[\r\n filterOption.findIndex(el => el.id === d.columnId)\r\n ].option.length === d.filterOptions?.length ? (\r\n <FilterIcon />\r\n ) : (\r\n <FilterIconApplied />\r\n )}\r\n </button>\r\n ) : null}\r\n </div>\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {sortedData?.map((d: any, i: number) => (\r\n <tr\r\n key={i}\r\n className={`cursor-${\r\n onSeriesMouseClick ? 'pointer' : 'auto'\r\n } border-b border-b-primary-gray-400 dark:border-b-primary-gray-500 ${\r\n isEqual(mouseClickData, d)\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-600'\r\n : 'bg-transparent'\r\n }`}\r\n style={d.rowStyle}\r\n onClick={() => {\r\n if (onSeriesMouseClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick(d);\r\n }\r\n }\r\n }}\r\n >\r\n {columnData.map((el, j) => (\r\n <td\r\n key={j}\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 text-sm text-${\r\n el.align || 'left'\r\n }`}\r\n style={{\r\n width: `calc(${\r\n (100 * (d.columnWidth || 1)) /\r\n TotalWidth(columnData.map(cd => cd.columnWidth || 1))\r\n }%`,\r\n }}\r\n >\r\n <div\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 flex p-4 ${\r\n el.align === 'right'\r\n ? 'justify-end'\r\n : el.align === 'center'\r\n ? 'justify-center'\r\n : 'justify-start'\r\n }`}\r\n >\r\n {typeof d[el.columnId] === 'number' ? (\r\n <P\r\n marginBottom='none'\r\n size='sm'\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 w-fit ${\r\n el.chip ? 'grow-0 rounded-sm p-2' : 'grow rounded-none p-0'\r\n } text-${el.align || 'left'} ${\r\n el.chip\r\n ? !el.chipColors\r\n ? 'bg-primary-gray-300 dark:bg-primary-gray-500'\r\n : ''\r\n : 'bg-transparent'\r\n }`}\r\n style={{\r\n ...(el.chip && el.chipColors\r\n ? {\r\n backgroundColor:\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value === d[el.chipColumnId || el.columnId],\r\n )\r\n ].color,\r\n color: getTextColorBasedOnBgColor(\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value === d[el.chipColumnId || el.columnId],\r\n )\r\n ].color,\r\n ),\r\n }\r\n : {}),\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d[el.columnId],\r\n naLabel,\r\n precision,\r\n el.prefix,\r\n el.suffix,\r\n )}\r\n </P>\r\n ) : typeof d[el.columnId] === 'string' ? (\r\n el.separator ? (\r\n <div className='text-primary-gray-700 dark:text-primary-gray-100 flex flex-wrap gap-2'>\r\n {d[el.columnId]\r\n .split(el.separator)\r\n .map((element: string, indx: number) => (\r\n <P\r\n key={indx}\r\n marginBottom='none'\r\n size='sm'\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 w-fit ${\r\n el.chip\r\n ? 'grow-0 rounded-sm p-2'\r\n : 'grow rounded-none p-0'\r\n } text-${el.align || 'left'} ${\r\n el.chip\r\n ? !el.chipColors\r\n ? 'bg-primary-gray-300 dark:bg-primary-gray-500'\r\n : ''\r\n : 'bg-transparent'\r\n }`}\r\n style={{\r\n ...(el.chip && el.chipColors\r\n ? {\r\n backgroundColor:\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value ===\r\n (el.chipColumnId\r\n ? d[el.chipColumnId]\r\n : element),\r\n )\r\n ].color,\r\n color: getTextColorBasedOnBgColor(\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value ===\r\n (el.chipColumnId\r\n ? d[el.chipColumnId]\r\n : element),\r\n )\r\n ].color,\r\n ),\r\n }\r\n : {}),\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n element,\r\n naLabel,\r\n precision,\r\n el.prefix,\r\n el.suffix,\r\n )}\r\n </P>\r\n ))}\r\n </div>\r\n ) : (\r\n <P\r\n marginBottom='none'\r\n size='sm'\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 w-fit ${\r\n el.chip\r\n ? 'grow-0 rounded-sm p-2'\r\n : 'grow rounded-none p-0'\r\n } text-${el.align || 'left'} ${\r\n el.chip\r\n ? !el.chipColors\r\n ? 'bg-primary-gray-300 dark:bg-primary-gray-500'\r\n : ''\r\n : 'bg-transparent'\r\n }`}\r\n style={{\r\n ...(el.chip && el.chipColors\r\n ? {\r\n backgroundColor:\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value ===\r\n d[el.chipColumnId || el.columnId],\r\n )\r\n ].color,\r\n color: getTextColorBasedOnBgColor(\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value ===\r\n d[el.chipColumnId || el.columnId],\r\n )\r\n ].color,\r\n ),\r\n }\r\n : {}),\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d[el.columnId],\r\n naLabel,\r\n precision,\r\n el.prefix,\r\n el.suffix,\r\n )}\r\n </P>\r\n )\r\n ) : (\r\n <div>\r\n {numberFormattingFunction(\r\n d[el.columnId],\r\n naLabel,\r\n precision,\r\n el.prefix,\r\n el.suffix,\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n ) : null}\r\n </div>\r\n </div>\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 {popupVisible && (\r\n <div\r\n style={popupStyle}\r\n className='absolute p-3 border z-[1000] rounded-sm bg-primary-white dark:bg-primary-gray-700 border-primary-gray-300 dark:border-primary-gray-550'\r\n >\r\n <div className='max-w-60'>\r\n <P size='sm' marginBottom='2xs' className='font-bold'>\r\n Filter data by\r\n </P>\r\n <div className='flex flex-col gap-2'>\r\n {columnData[\r\n columnData.findIndex(d => d.columnId === popupVisible)\r\n ].filterOptions?.map((el, i) => (\r\n <div key={i}>\r\n <label key={i} className='undp-viz-label'>\r\n <input\r\n type='checkbox'\r\n className='undp-viz-checkbox'\r\n checked={\r\n filterOption[\r\n filterOption.findIndex(d => d.id === popupVisible)\r\n ].option.indexOf(el) !== -1\r\n }\r\n onChange={() => {\r\n const indx = filterOption.findIndex(d => d.id === popupVisible);\r\n const opt = [...filterOption[indx].option];\r\n if (opt.indexOf(el) !== -1) {\r\n opt.splice(opt.indexOf(el), 1);\r\n const filterOptionDuplicate = [...filterOption];\r\n filterOptionDuplicate[indx].option = opt;\r\n setFilterOption(filterOptionDuplicate);\r\n } else {\r\n opt.push(el);\r\n const filterOptionDuplicate = [...filterOption];\r\n filterOptionDuplicate[indx].option = opt;\r\n setFilterOption(filterOptionDuplicate);\r\n }\r\n }}\r\n />\r\n {el}\r\n </label>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","d","acc","cur","DataTable","props","width","height","graphTitle","sources","graphDescription","footNote","graphID","data","columnData","onSeriesMouseClick","language","theme","ariaLabel","backgroundColor","padding","resetSelectionOnDoubleClick","styles","classNames","minWidth","naLabel","precision","columnSortBy","setColumnSortBy","useState","mouseClickData","setMouseClickData","sortDirection","setSortDirection","popupVisible","setPopupVisible","popupStyle","setPopupStyle","filterOption","setFilterOption","sortedData","setSortedData","useEffect","dataFiltered","filter","el","cd","arr","intersection","sortBy","jsx","cn","jsxs","GraphHeader","i","P","SortingIconAscending","SortingIconDescending","SortingIcon","event","rect","FilterIcon","FilterIconApplied","isEqual","j","c","getTextColorBasedOnBgColor","numberFormattingFunction","element","indx","GraphFooter","opt","filterOptionDuplicate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataTable.cjs","sources":["../src/Components/Graphs/DataTable/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport isEqual from 'fast-deep-equal';\r\nimport { useEffect, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { P } from '@undp/design-system-react/Typography';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport {\r\n DataTableColumnDataType,\r\n Languages,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport {\r\n FilterIcon,\r\n FilterIconApplied,\r\n SortingIcon,\r\n SortingIconAscending,\r\n SortingIconDescending,\r\n} from '@/Components/Icons';\r\nimport { getTextColorBasedOnBgColor } from '@/Utils/getTextColorBasedOnBgColor';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects. If the data have a object for ket `rowStyle` then that is use to style the row of the table. */\r\n data: object[];\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 /** 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 /** Minimum width of the table as string in px */\r\n minWidth?: string;\r\n /** Height of the graph */\r\n height?: 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\r\n // Graph Parameters\r\n /** Column settings for each column shown in the table. */\r\n columnData: DataTableColumnDataType[];\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Callback for mouse click event */\r\n onSeriesMouseClick?: (_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\nconst TotalWidth = (columns: (number | undefined)[]) => {\r\n const columnWidth = columns.map(d => d || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nexport function DataTable(props: Props) {\r\n const {\r\n width,\r\n height,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n graphID,\r\n data,\r\n columnData,\r\n onSeriesMouseClick,\r\n language = 'en',\r\n theme = 'light',\r\n ariaLabel,\r\n backgroundColor = false,\r\n padding,\r\n resetSelectionOnDoubleClick = true,\r\n styles,\r\n classNames,\r\n minWidth,\r\n naLabel = 'NA',\r\n precision = 2,\r\n } = props;\r\n const [columnSortBy, setColumnSortBy] = useState<string | undefined>(undefined);\r\n\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc');\r\n const [popupVisible, setPopupVisible] = useState<string | undefined>(undefined);\r\n const [popupStyle, setPopupStyle] = useState({});\r\n const [filterOption, setFilterOption] = useState(\r\n columnData\r\n .filter(d => d.filterOptions && d.filterOptions.length > 0)\r\n .map(d => ({ id: d.columnId, option: d.filterOptions as string[] })),\r\n );\r\n const [sortedData, setSortedData] = useState(data);\r\n useEffect(() => {\r\n const dataFiltered: any = [];\r\n\r\n data.forEach((d: any) => {\r\n let filter = true;\r\n filterOption.forEach(el => {\r\n if (\r\n typeof d[el.id] !== 'object' &&\r\n typeof d[el.id] !== 'function' &&\r\n typeof d[el.id] !== 'symbol'\r\n ) {\r\n if (columnData[columnData.findIndex(cd => cd.columnId === el.id)].separator) {\r\n const arr = d[el.id].split(\r\n columnData[columnData.findIndex(cd => cd.columnId === el.id)].separator,\r\n );\r\n if (intersection(arr, el.option).length === 0) filter = false;\r\n } else if (el.option.indexOf(d[el.id]) === -1) filter = false;\r\n }\r\n });\r\n if (filter) dataFiltered.push(d);\r\n });\r\n if (columnSortBy && data) {\r\n setSortedData(orderBy(dataFiltered, [columnSortBy], [sortDirection]));\r\n } else {\r\n setSortedData(dataFiltered);\r\n }\r\n }, [columnSortBy, sortDirection, data, filterOption, columnData]);\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'} w-full`,\r\n width ? 'w-fit' : 'w-full',\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 aria-label={\r\n ariaLabel ||\r\n `${graphTitle ? `The graph shows ${graphTitle}. ` : ''}This is an data table. ${\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 gap-3 w-full justify-between grow'>\r\n {graphTitle || graphDescription ? (\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 />\r\n ) : null}\r\n <div className='grow flex flex-col justify-center'>\r\n <div\r\n className='undp-scrollbar'\r\n style={{\r\n width: width ? `${width}px` : '100%',\r\n height: height ? `${height}px` : 'auto',\r\n }}\r\n >\r\n <div style={minWidth ? { minWidth } : undefined}>\r\n {data ? (\r\n <table className='w-full' style={{ borderCollapse: 'collapse' }}>\r\n <thead className='text-left bg-primary-gray-300 dark:bg-primary-gray-550'>\r\n <tr>\r\n {columnData?.map((d, i) => (\r\n <th\r\n className='text-primary-gray-700 dark:text-primary-gray-100 text-sm'\r\n style={{\r\n width: `calc(${\r\n (100 * (d.columnWidth || 1)) /\r\n TotalWidth(columnData.map(cd => cd.columnWidth || 1))\r\n }%`,\r\n }}\r\n key={i}\r\n >\r\n <div className='flex gap-2 justify-between items-center p-4'>\r\n <P\r\n size='sm'\r\n marginBottom='none'\r\n className={`w-fit grow text-${d.align || 'left'} font-bold`}\r\n >\r\n {d.columnTitle || d.columnId}\r\n </P>\r\n {d.sortable ? (\r\n <button\r\n type='button'\r\n className='bg-transparent cursor-pointer p-0 m-0 border-0'\r\n onClick={() => {\r\n if (columnSortBy === d.columnId) {\r\n if (sortDirection === 'asc') {\r\n setSortDirection('desc');\r\n }\r\n if (sortDirection === 'desc') {\r\n setColumnSortBy(undefined);\r\n }\r\n } else {\r\n setColumnSortBy(d.columnId);\r\n setSortDirection('asc');\r\n }\r\n }}\r\n >\r\n {columnSortBy === d.columnId ? (\r\n sortDirection === 'asc' ? (\r\n <SortingIconAscending />\r\n ) : (\r\n <SortingIconDescending />\r\n )\r\n ) : (\r\n <SortingIcon />\r\n )}\r\n </button>\r\n ) : null}\r\n {d.filterOptions && d.filterOptions.length ? (\r\n <button\r\n type='button'\r\n className='bg-transparent cursor-pointer m-0 p-0 border-0'\r\n onClick={event => {\r\n if (popupVisible === d.columnId) {\r\n setPopupVisible(undefined);\r\n } else if (event.currentTarget) {\r\n setPopupVisible(d.columnId);\r\n const rect = event.currentTarget.getBoundingClientRect();\r\n setPopupStyle({\r\n top: rect.bottom + window.scrollY,\r\n left:\r\n rect.left + window.scrollX - 160 < 0\r\n ? rect.left + window.scrollX\r\n : rect.left + window.scrollX - 160,\r\n width: '10rem',\r\n });\r\n }\r\n }}\r\n >\r\n {filterOption[\r\n filterOption.findIndex(el => el.id === d.columnId)\r\n ].option.length === d.filterOptions?.length ? (\r\n <FilterIcon />\r\n ) : (\r\n <FilterIconApplied />\r\n )}\r\n </button>\r\n ) : null}\r\n </div>\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {sortedData?.map((d: any, i: number) => (\r\n <tr\r\n key={i}\r\n className={`cursor-${\r\n onSeriesMouseClick ? 'pointer' : 'auto'\r\n } border-b border-b-primary-gray-400 dark:border-b-primary-gray-500 ${\r\n isEqual(mouseClickData, d)\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-600'\r\n : 'bg-transparent'\r\n }`}\r\n style={d.rowStyle}\r\n onClick={() => {\r\n if (onSeriesMouseClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick(d);\r\n }\r\n }\r\n }}\r\n >\r\n {columnData.map((el, j) => (\r\n <td\r\n key={j}\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 text-sm text-${\r\n el.align || 'left'\r\n }`}\r\n style={{\r\n width: `calc(${\r\n (100 * (d.columnWidth || 1)) /\r\n TotalWidth(columnData.map(cd => cd.columnWidth || 1))\r\n }%`,\r\n }}\r\n >\r\n <div\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 flex p-4 ${\r\n el.align === 'right'\r\n ? 'justify-end'\r\n : el.align === 'center'\r\n ? 'justify-center'\r\n : 'justify-start'\r\n }`}\r\n >\r\n {typeof d[el.columnId] === 'number' ? (\r\n <P\r\n marginBottom='none'\r\n size='sm'\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 w-fit ${\r\n el.chip ? 'grow-0 rounded-sm p-2' : 'grow rounded-none p-0'\r\n } text-${el.align || 'left'} ${\r\n el.chip\r\n ? !el.chipColors\r\n ? 'bg-primary-gray-300 dark:bg-primary-gray-500'\r\n : ''\r\n : 'bg-transparent'\r\n }`}\r\n style={{\r\n ...(el.chip && el.chipColors\r\n ? {\r\n backgroundColor:\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value === d[el.chipColumnId || el.columnId],\r\n )\r\n ].color,\r\n color: getTextColorBasedOnBgColor(\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value === d[el.chipColumnId || el.columnId],\r\n )\r\n ].color,\r\n ),\r\n }\r\n : {}),\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d[el.columnId],\r\n naLabel,\r\n precision,\r\n el.prefix,\r\n el.suffix,\r\n )}\r\n </P>\r\n ) : typeof d[el.columnId] === 'string' ? (\r\n el.separator ? (\r\n <div className='text-primary-gray-700 dark:text-primary-gray-100 flex flex-wrap gap-2'>\r\n {d[el.columnId]\r\n .split(el.separator)\r\n .map((element: string, indx: number) => (\r\n <P\r\n key={indx}\r\n marginBottom='none'\r\n size='sm'\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 w-fit ${\r\n el.chip\r\n ? 'grow-0 rounded-sm p-2'\r\n : 'grow rounded-none p-0'\r\n } text-${el.align || 'left'} ${\r\n el.chip\r\n ? !el.chipColors\r\n ? 'bg-primary-gray-300 dark:bg-primary-gray-500'\r\n : ''\r\n : 'bg-transparent'\r\n }`}\r\n style={{\r\n ...(el.chip && el.chipColors\r\n ? {\r\n backgroundColor:\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value ===\r\n (el.chipColumnId\r\n ? d[el.chipColumnId]\r\n : element),\r\n )\r\n ].color,\r\n color: getTextColorBasedOnBgColor(\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value ===\r\n (el.chipColumnId\r\n ? d[el.chipColumnId]\r\n : element),\r\n )\r\n ].color,\r\n ),\r\n }\r\n : {}),\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n element,\r\n naLabel,\r\n precision,\r\n el.prefix,\r\n el.suffix,\r\n )}\r\n </P>\r\n ))}\r\n </div>\r\n ) : (\r\n <P\r\n marginBottom='none'\r\n size='sm'\r\n className={`text-primary-gray-700 dark:text-primary-gray-100 w-fit ${\r\n el.chip\r\n ? 'grow-0 rounded-sm p-2'\r\n : 'grow rounded-none p-0'\r\n } text-${el.align || 'left'} ${\r\n el.chip\r\n ? !el.chipColors\r\n ? 'bg-primary-gray-300 dark:bg-primary-gray-500'\r\n : ''\r\n : 'bg-transparent'\r\n }`}\r\n style={{\r\n ...(el.chip && el.chipColors\r\n ? {\r\n backgroundColor:\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value ===\r\n d[el.chipColumnId || el.columnId],\r\n )\r\n ].color,\r\n color: getTextColorBasedOnBgColor(\r\n el.chipColors[\r\n el.chipColors.findIndex(\r\n c =>\r\n c.value ===\r\n d[el.chipColumnId || el.columnId],\r\n )\r\n ].color,\r\n ),\r\n }\r\n : {}),\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d[el.columnId],\r\n naLabel,\r\n precision,\r\n el.prefix,\r\n el.suffix,\r\n )}\r\n </P>\r\n )\r\n ) : (\r\n <div>\r\n {numberFormattingFunction(\r\n d[el.columnId],\r\n naLabel,\r\n precision,\r\n el.prefix,\r\n el.suffix,\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n ) : null}\r\n </div>\r\n </div>\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 {popupVisible && (\r\n <div\r\n style={popupStyle}\r\n className='absolute p-3 border z-[1000] rounded-sm bg-primary-white dark:bg-primary-gray-700 border-primary-gray-300 dark:border-primary-gray-550'\r\n >\r\n <div className='max-w-60'>\r\n <P size='sm' marginBottom='2xs' className='font-bold'>\r\n Filter data by\r\n </P>\r\n <div className='flex flex-col gap-2'>\r\n {columnData[\r\n columnData.findIndex(d => d.columnId === popupVisible)\r\n ].filterOptions?.map((el, i) => (\r\n <div key={i}>\r\n <label key={i} className='undp-viz-label'>\r\n <input\r\n type='checkbox'\r\n className='undp-viz-checkbox'\r\n checked={\r\n filterOption[\r\n filterOption.findIndex(d => d.id === popupVisible)\r\n ].option.indexOf(el) !== -1\r\n }\r\n onChange={() => {\r\n const indx = filterOption.findIndex(d => d.id === popupVisible);\r\n const opt = [...filterOption[indx].option];\r\n if (opt.indexOf(el) !== -1) {\r\n opt.splice(opt.indexOf(el), 1);\r\n const filterOptionDuplicate = [...filterOption];\r\n filterOptionDuplicate[indx].option = opt;\r\n setFilterOption(filterOptionDuplicate);\r\n } else {\r\n opt.push(el);\r\n const filterOptionDuplicate = [...filterOption];\r\n filterOptionDuplicate[indx].option = opt;\r\n setFilterOption(filterOptionDuplicate);\r\n }\r\n }}\r\n />\r\n {el}\r\n </label>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","d","acc","cur","DataTable","props","width","height","graphTitle","sources","graphDescription","footNote","graphID","data","columnData","onSeriesMouseClick","language","theme","ariaLabel","backgroundColor","padding","resetSelectionOnDoubleClick","styles","classNames","minWidth","naLabel","precision","columnSortBy","setColumnSortBy","useState","mouseClickData","setMouseClickData","sortDirection","setSortDirection","popupVisible","setPopupVisible","popupStyle","setPopupStyle","filterOption","setFilterOption","sortedData","setSortedData","useEffect","dataFiltered","filter","el","cd","arr","intersection","orderBy","jsx","cn","jsxs","GraphHeader","i","P","SortingIconAscending","SortingIconDescending","SortingIcon","event","rect","FilterIcon","FilterIconApplied","isEqual","j","c","getTextColorBasedOnBgColor","numberFormattingFunction","element","indx","GraphFooter","opt","filterOptionDuplicate"],"mappings":"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"}
|
package/dist/DataTable.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { j as i, m as
|
|
1
|
+
import { j as i, m as Q } from "./index-CHPV5EwG-BPSP-7Jg.js";
|
|
2
2
|
import { i as M } from "./index-Bwrro8-q.js";
|
|
3
|
-
import { useState as p, useEffect as
|
|
4
|
-
import {
|
|
5
|
-
import { i as _ } from "./index-V_JXij1_.js";
|
|
3
|
+
import { useState as p, useEffect as U } from "react";
|
|
4
|
+
import { i as Z } from "./index-V_JXij1_.js";
|
|
6
5
|
import { u as y } from "./Typography-Ctgfl1J5.js";
|
|
6
|
+
import { o as _ } from "./index-DvVprvy6.js";
|
|
7
7
|
import { n as v } from "./numberFormattingFunction-14YCbkN2.js";
|
|
8
8
|
import { GraphFooter as rr } from "./GraphFooter.js";
|
|
9
9
|
import { GraphHeader as or } from "./GraphHeader.js";
|
|
10
|
-
import { S as ir, a as tr, b as
|
|
10
|
+
import { S as ir, a as tr, b as er, F as sr, c as ar } from "./index-BmCqpO1B.js";
|
|
11
11
|
import { g as S } from "./getTextColorBasedOnBgColor-B6Nk2WBf.js";
|
|
12
|
-
const
|
|
12
|
+
const P = (N) => N.map((c) => c || 1).reduce((c, b) => c + b, 0);
|
|
13
13
|
function yr(N) {
|
|
14
14
|
const {
|
|
15
15
|
width: l,
|
|
@@ -18,59 +18,57 @@ function yr(N) {
|
|
|
18
18
|
sources: b,
|
|
19
19
|
graphDescription: j,
|
|
20
20
|
footNote: B,
|
|
21
|
-
graphID:
|
|
22
|
-
data:
|
|
21
|
+
graphID: R,
|
|
22
|
+
data: m,
|
|
23
23
|
columnData: a,
|
|
24
24
|
onSeriesMouseClick: I,
|
|
25
25
|
language: $ = "en",
|
|
26
|
-
theme:
|
|
27
|
-
ariaLabel:
|
|
26
|
+
theme: V = "light",
|
|
27
|
+
ariaLabel: q,
|
|
28
28
|
backgroundColor: d = !1,
|
|
29
29
|
padding: F,
|
|
30
|
-
resetSelectionOnDoubleClick:
|
|
31
|
-
styles:
|
|
32
|
-
classNames:
|
|
30
|
+
resetSelectionOnDoubleClick: H = !0,
|
|
31
|
+
styles: u,
|
|
32
|
+
classNames: f,
|
|
33
33
|
minWidth: T,
|
|
34
34
|
naLabel: C = "NA",
|
|
35
35
|
precision: w = 2
|
|
36
|
-
} = N, [
|
|
36
|
+
} = N, [g, z] = p(void 0), [W, E] = p(void 0), [h, A] = p("asc"), [x, X] = p(void 0), [Y, J] = p({}), [n, G] = p(
|
|
37
37
|
a.filter((o) => o.filterOptions && o.filterOptions.length > 0).map((o) => ({ id: o.columnId, option: o.filterOptions }))
|
|
38
|
-
), [
|
|
39
|
-
return
|
|
38
|
+
), [K, L] = p(m);
|
|
39
|
+
return U(() => {
|
|
40
40
|
const o = [];
|
|
41
|
-
|
|
41
|
+
m.forEach((s) => {
|
|
42
42
|
let r = !0;
|
|
43
|
-
n.forEach((
|
|
44
|
-
if (typeof e
|
|
45
|
-
if (a[a.findIndex((t) => t.columnId ===
|
|
46
|
-
const t = e
|
|
47
|
-
a[a.findIndex((O) => O.columnId ===
|
|
43
|
+
n.forEach((e) => {
|
|
44
|
+
if (typeof s[e.id] != "object" && typeof s[e.id] != "function" && typeof s[e.id] != "symbol")
|
|
45
|
+
if (a[a.findIndex((t) => t.columnId === e.id)].separator) {
|
|
46
|
+
const t = s[e.id].split(
|
|
47
|
+
a[a.findIndex((O) => O.columnId === e.id)].separator
|
|
48
48
|
);
|
|
49
|
-
|
|
50
|
-
} else
|
|
51
|
-
}), r && o.push(
|
|
52
|
-
}), L(
|
|
53
|
-
|
|
54
|
-
);
|
|
55
|
-
}, [m, h, u, n, a]), /* @__PURE__ */ i.jsx(
|
|
49
|
+
Z(t, e.option).length === 0 && (r = !1);
|
|
50
|
+
} else e.option.indexOf(s[e.id]) === -1 && (r = !1);
|
|
51
|
+
}), r && o.push(s);
|
|
52
|
+
}), L(g && m ? _(o, [g], [h]) : o);
|
|
53
|
+
}, [g, h, m, n, a]), /* @__PURE__ */ i.jsx(
|
|
56
54
|
"div",
|
|
57
55
|
{
|
|
58
|
-
className: `${
|
|
56
|
+
className: `${V || "light"} flex ${l ? "w-fit grow-0" : "w-full grow"}`,
|
|
59
57
|
dir: $ === "he" || $ === "ar" ? "rtl" : void 0,
|
|
60
58
|
children: /* @__PURE__ */ i.jsx(
|
|
61
59
|
"div",
|
|
62
60
|
{
|
|
63
|
-
className:
|
|
61
|
+
className: Q(
|
|
64
62
|
`${d ? d === !0 ? "bg-primary-gray-200 dark:bg-primary-gray-650 " : "" : "bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${$ || "en"} w-full`,
|
|
65
63
|
l ? "w-fit" : "w-full",
|
|
66
|
-
|
|
64
|
+
f?.graphContainer
|
|
67
65
|
),
|
|
68
66
|
style: {
|
|
69
|
-
...
|
|
67
|
+
...u?.graphContainer || {},
|
|
70
68
|
...d && d !== !0 ? { backgroundColor: d } : {}
|
|
71
69
|
},
|
|
72
|
-
id:
|
|
73
|
-
"aria-label":
|
|
70
|
+
id: R,
|
|
71
|
+
"aria-label": q || `${c ? `The graph shows ${c}. ` : ""}This is an data table. ${j ? ` ${j}` : ""}`,
|
|
74
72
|
children: /* @__PURE__ */ i.jsxs(
|
|
75
73
|
"div",
|
|
76
74
|
{
|
|
@@ -82,12 +80,12 @@ function yr(N) {
|
|
|
82
80
|
or,
|
|
83
81
|
{
|
|
84
82
|
styles: {
|
|
85
|
-
title:
|
|
86
|
-
description:
|
|
83
|
+
title: u?.title,
|
|
84
|
+
description: u?.description
|
|
87
85
|
},
|
|
88
86
|
classNames: {
|
|
89
|
-
title:
|
|
90
|
-
description:
|
|
87
|
+
title: f?.title,
|
|
88
|
+
description: f?.description
|
|
91
89
|
},
|
|
92
90
|
graphTitle: c,
|
|
93
91
|
graphDescription: j,
|
|
@@ -102,13 +100,13 @@ function yr(N) {
|
|
|
102
100
|
width: l ? `${l}px` : "100%",
|
|
103
101
|
height: k ? `${k}px` : "auto"
|
|
104
102
|
},
|
|
105
|
-
children: /* @__PURE__ */ i.jsx("div", { style: T ? { minWidth: T } : void 0, children:
|
|
106
|
-
/* @__PURE__ */ i.jsx("thead", { className: "text-left bg-primary-gray-300 dark:bg-primary-gray-550", children: /* @__PURE__ */ i.jsx("tr", { children: a?.map((o,
|
|
103
|
+
children: /* @__PURE__ */ i.jsx("div", { style: T ? { minWidth: T } : void 0, children: m ? /* @__PURE__ */ i.jsxs("table", { className: "w-full", style: { borderCollapse: "collapse" }, children: [
|
|
104
|
+
/* @__PURE__ */ i.jsx("thead", { className: "text-left bg-primary-gray-300 dark:bg-primary-gray-550", children: /* @__PURE__ */ i.jsx("tr", { children: a?.map((o, s) => /* @__PURE__ */ i.jsx(
|
|
107
105
|
"th",
|
|
108
106
|
{
|
|
109
107
|
className: "text-primary-gray-700 dark:text-primary-gray-100 text-sm",
|
|
110
108
|
style: {
|
|
111
|
-
width: `calc(${100 * (o.columnWidth || 1) /
|
|
109
|
+
width: `calc(${100 * (o.columnWidth || 1) / P(a.map((r) => r.columnWidth || 1))}%`
|
|
112
110
|
},
|
|
113
111
|
children: /* @__PURE__ */ i.jsxs("div", { className: "flex gap-2 justify-between items-center p-4", children: [
|
|
114
112
|
/* @__PURE__ */ i.jsx(
|
|
@@ -126,9 +124,9 @@ function yr(N) {
|
|
|
126
124
|
type: "button",
|
|
127
125
|
className: "bg-transparent cursor-pointer p-0 m-0 border-0",
|
|
128
126
|
onClick: () => {
|
|
129
|
-
|
|
127
|
+
g === o.columnId ? (h === "asc" && A("desc"), h === "desc" && z(void 0)) : (z(o.columnId), A("asc"));
|
|
130
128
|
},
|
|
131
|
-
children:
|
|
129
|
+
children: g === o.columnId ? h === "asc" ? /* @__PURE__ */ i.jsx(ir, {}) : /* @__PURE__ */ i.jsx(tr, {}) : /* @__PURE__ */ i.jsx(er, {})
|
|
132
130
|
}
|
|
133
131
|
) : null,
|
|
134
132
|
o.filterOptions && o.filterOptions.length ? /* @__PURE__ */ i.jsx(
|
|
@@ -141,35 +139,35 @@ function yr(N) {
|
|
|
141
139
|
X(void 0);
|
|
142
140
|
else if (r.currentTarget) {
|
|
143
141
|
X(o.columnId);
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
top:
|
|
147
|
-
left:
|
|
142
|
+
const e = r.currentTarget.getBoundingClientRect();
|
|
143
|
+
J({
|
|
144
|
+
top: e.bottom + window.scrollY,
|
|
145
|
+
left: e.left + window.scrollX - 160 < 0 ? e.left + window.scrollX : e.left + window.scrollX - 160,
|
|
148
146
|
width: "10rem"
|
|
149
147
|
});
|
|
150
148
|
}
|
|
151
149
|
},
|
|
152
|
-
children: n[n.findIndex((r) => r.id === o.columnId)].option.length === o.filterOptions?.length ? /* @__PURE__ */ i.jsx(
|
|
150
|
+
children: n[n.findIndex((r) => r.id === o.columnId)].option.length === o.filterOptions?.length ? /* @__PURE__ */ i.jsx(sr, {}) : /* @__PURE__ */ i.jsx(ar, {})
|
|
153
151
|
}
|
|
154
152
|
) : null
|
|
155
153
|
] })
|
|
156
154
|
},
|
|
157
|
-
|
|
155
|
+
s
|
|
158
156
|
)) }) }),
|
|
159
|
-
/* @__PURE__ */ i.jsx("tbody", { children:
|
|
157
|
+
/* @__PURE__ */ i.jsx("tbody", { children: K?.map((o, s) => /* @__PURE__ */ i.jsx(
|
|
160
158
|
"tr",
|
|
161
159
|
{
|
|
162
160
|
className: `cursor-${I ? "pointer" : "auto"} border-b border-b-primary-gray-400 dark:border-b-primary-gray-500 ${M(W, o) ? "bg-primary-gray-200 dark:bg-primary-gray-600" : "bg-transparent"}`,
|
|
163
161
|
style: o.rowStyle,
|
|
164
162
|
onClick: () => {
|
|
165
|
-
I && (M(W, o) &&
|
|
163
|
+
I && (M(W, o) && H ? (E(void 0), I(void 0)) : (E(o), I(o)));
|
|
166
164
|
},
|
|
167
|
-
children: a.map((r,
|
|
165
|
+
children: a.map((r, e) => /* @__PURE__ */ i.jsx(
|
|
168
166
|
"td",
|
|
169
167
|
{
|
|
170
168
|
className: `text-primary-gray-700 dark:text-primary-gray-100 text-sm text-${r.align || "left"}`,
|
|
171
169
|
style: {
|
|
172
|
-
width: `calc(${100 * (o.columnWidth || 1) /
|
|
170
|
+
width: `calc(${100 * (o.columnWidth || 1) / P(a.map((t) => t.columnWidth || 1))}%`
|
|
173
171
|
},
|
|
174
172
|
children: /* @__PURE__ */ i.jsx(
|
|
175
173
|
"div",
|
|
@@ -264,10 +262,10 @@ function yr(N) {
|
|
|
264
262
|
}
|
|
265
263
|
)
|
|
266
264
|
},
|
|
267
|
-
|
|
265
|
+
e
|
|
268
266
|
))
|
|
269
267
|
},
|
|
270
|
-
|
|
268
|
+
s
|
|
271
269
|
)) })
|
|
272
270
|
] }) : null })
|
|
273
271
|
}
|
|
@@ -275,10 +273,10 @@ function yr(N) {
|
|
|
275
273
|
b || B ? /* @__PURE__ */ i.jsx(
|
|
276
274
|
rr,
|
|
277
275
|
{
|
|
278
|
-
styles: { footnote:
|
|
276
|
+
styles: { footnote: u?.footnote, source: u?.source },
|
|
279
277
|
classNames: {
|
|
280
|
-
footnote:
|
|
281
|
-
source:
|
|
278
|
+
footnote: f?.footnote,
|
|
279
|
+
source: f?.source
|
|
282
280
|
},
|
|
283
281
|
sources: b,
|
|
284
282
|
footNote: B,
|
|
@@ -289,11 +287,11 @@ function yr(N) {
|
|
|
289
287
|
x && /* @__PURE__ */ i.jsx(
|
|
290
288
|
"div",
|
|
291
289
|
{
|
|
292
|
-
style:
|
|
290
|
+
style: Y,
|
|
293
291
|
className: "absolute p-3 border z-[1000] rounded-sm bg-primary-white dark:bg-primary-gray-700 border-primary-gray-300 dark:border-primary-gray-550",
|
|
294
292
|
children: /* @__PURE__ */ i.jsxs("div", { className: "max-w-60", children: [
|
|
295
293
|
/* @__PURE__ */ i.jsx(y, { size: "sm", marginBottom: "2xs", className: "font-bold", children: "Filter data by" }),
|
|
296
|
-
/* @__PURE__ */ i.jsx("div", { className: "flex flex-col gap-2", children: a[a.findIndex((o) => o.columnId === x)].filterOptions?.map((o,
|
|
294
|
+
/* @__PURE__ */ i.jsx("div", { className: "flex flex-col gap-2", children: a[a.findIndex((o) => o.columnId === x)].filterOptions?.map((o, s) => /* @__PURE__ */ i.jsx("div", { children: /* @__PURE__ */ i.jsxs("label", { className: "undp-viz-label", children: [
|
|
297
295
|
/* @__PURE__ */ i.jsx(
|
|
298
296
|
"input",
|
|
299
297
|
{
|
|
@@ -301,21 +299,21 @@ function yr(N) {
|
|
|
301
299
|
className: "undp-viz-checkbox",
|
|
302
300
|
checked: n[n.findIndex((r) => r.id === x)].option.indexOf(o) !== -1,
|
|
303
301
|
onChange: () => {
|
|
304
|
-
const r = n.findIndex((t) => t.id === x),
|
|
305
|
-
if (
|
|
306
|
-
|
|
302
|
+
const r = n.findIndex((t) => t.id === x), e = [...n[r].option];
|
|
303
|
+
if (e.indexOf(o) !== -1) {
|
|
304
|
+
e.splice(e.indexOf(o), 1);
|
|
307
305
|
const t = [...n];
|
|
308
|
-
t[r].option =
|
|
306
|
+
t[r].option = e, G(t);
|
|
309
307
|
} else {
|
|
310
|
-
|
|
308
|
+
e.push(o);
|
|
311
309
|
const t = [...n];
|
|
312
|
-
t[r].option =
|
|
310
|
+
t[r].option = e, G(t);
|
|
313
311
|
}
|
|
314
312
|
}
|
|
315
313
|
}
|
|
316
314
|
),
|
|
317
315
|
o
|
|
318
|
-
] },
|
|
316
|
+
] }, s) }, s)) })
|
|
319
317
|
] })
|
|
320
318
|
}
|
|
321
319
|
)
|