@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.
Files changed (228) hide show
  1. package/dist/AreaChart.cjs +1 -1
  2. package/dist/AreaChart.cjs.map +1 -1
  3. package/dist/AreaChart.js +3 -2
  4. package/dist/AreaChart.js.map +1 -1
  5. package/dist/BarGraph.cjs +1 -1
  6. package/dist/BarGraph.cjs.map +1 -1
  7. package/dist/BarGraph.js +1196 -1224
  8. package/dist/BarGraph.js.map +1 -1
  9. package/dist/BeeSwarmChart.cjs +1 -1
  10. package/dist/BeeSwarmChart.cjs.map +1 -1
  11. package/dist/BeeSwarmChart.js +130 -142
  12. package/dist/BeeSwarmChart.js.map +1 -1
  13. package/dist/BiVariateChoroplethMap.cjs +1 -1
  14. package/dist/BiVariateChoroplethMap.cjs.map +1 -1
  15. package/dist/BiVariateChoroplethMap.js +41 -41
  16. package/dist/BiVariateChoroplethMap.js.map +1 -1
  17. package/dist/BulletChart.cjs +1 -1
  18. package/dist/BulletChart.cjs.map +1 -1
  19. package/dist/BulletChart.js +483 -487
  20. package/dist/BulletChart.js.map +1 -1
  21. package/dist/ButterflyChart.cjs +1 -1
  22. package/dist/ButterflyChart.cjs.map +1 -1
  23. package/dist/ButterflyChart.js +99 -99
  24. package/dist/ButterflyChart.js.map +1 -1
  25. package/dist/ChoroplethMap.cjs +1 -1
  26. package/dist/ChoroplethMap.cjs.map +1 -1
  27. package/dist/ChoroplethMap.js +125 -125
  28. package/dist/ChoroplethMap.js.map +1 -1
  29. package/dist/CirclePackingGraph.cjs +1 -1
  30. package/dist/CirclePackingGraph.js +2 -2
  31. package/dist/DataCards.cjs +2 -2
  32. package/dist/DataCards.cjs.map +1 -1
  33. package/dist/DataCards.js +6 -6
  34. package/dist/DataCards.js.map +1 -1
  35. package/dist/DataTable.cjs +1 -1
  36. package/dist/DataTable.cjs.map +1 -1
  37. package/dist/DataTable.js +66 -68
  38. package/dist/DataTable.js.map +1 -1
  39. package/dist/DifferenceLineChart.cjs +1 -1
  40. package/dist/DifferenceLineChart.cjs.map +1 -1
  41. package/dist/DifferenceLineChart.js +3 -2
  42. package/dist/DifferenceLineChart.js.map +1 -1
  43. package/dist/DonutChart.cjs +1 -1
  44. package/dist/DonutChart.cjs.map +1 -1
  45. package/dist/DonutChart.js +205 -205
  46. package/dist/DonutChart.js.map +1 -1
  47. package/dist/DotDensityMap.cjs +1 -1
  48. package/dist/DotDensityMap.cjs.map +1 -1
  49. package/dist/DotDensityMap.js +78 -81
  50. package/dist/DotDensityMap.js.map +1 -1
  51. package/dist/DualAxisLineChart.cjs +1 -1
  52. package/dist/DualAxisLineChart.cjs.map +1 -1
  53. package/dist/DualAxisLineChart.js +3 -2
  54. package/dist/DualAxisLineChart.js.map +1 -1
  55. package/dist/DumbbellChart.cjs +1 -1
  56. package/dist/DumbbellChart.cjs.map +1 -1
  57. package/dist/DumbbellChart.js +64 -65
  58. package/dist/DumbbellChart.js.map +1 -1
  59. package/dist/GeoHubMap.cjs +1 -1
  60. package/dist/GeoHubMap.js +1 -1
  61. package/dist/GeoHubMapWithLayerSelection.cjs +1 -1
  62. package/dist/GeoHubMapWithLayerSelection.js +1 -1
  63. package/dist/{GraphEl-4RUlclvW.cjs → GraphEl-BcYgMnN2.cjs} +2 -2
  64. package/dist/{GraphEl-4RUlclvW.cjs.map → GraphEl-BcYgMnN2.cjs.map} +1 -1
  65. package/dist/{GraphEl-ClIxlWa3.js → GraphEl-CMWeARJ3.js} +2 -2
  66. package/dist/{GraphEl-ClIxlWa3.js.map → GraphEl-CMWeARJ3.js.map} +1 -1
  67. package/dist/GriddedGraphs.cjs +1 -1
  68. package/dist/GriddedGraphs.js +4 -4
  69. package/dist/GriddedGraphsFromConfig.cjs +1 -1
  70. package/dist/GriddedGraphsFromConfig.js +1 -1
  71. package/dist/HeatMap.cjs +1 -1
  72. package/dist/HeatMap.cjs.map +1 -1
  73. package/dist/HeatMap.js +83 -83
  74. package/dist/HeatMap.js.map +1 -1
  75. package/dist/Histogram.cjs +1 -1
  76. package/dist/Histogram.js +1 -1
  77. package/dist/LineChartWithConfidenceInterval.cjs +1 -1
  78. package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
  79. package/dist/LineChartWithConfidenceInterval.js +7 -6
  80. package/dist/LineChartWithConfidenceInterval.js.map +1 -1
  81. package/dist/MultiGraphDashboard.cjs +1 -1
  82. package/dist/MultiGraphDashboard.js +2 -2
  83. package/dist/MultiGraphDashboardFromConfig.cjs +1 -1
  84. package/dist/MultiGraphDashboardFromConfig.js +1 -1
  85. package/dist/MultiGraphDashboardWideToLongFormat.cjs +1 -1
  86. package/dist/MultiGraphDashboardWideToLongFormat.js +1 -1
  87. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +1 -1
  88. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +1 -1
  89. package/dist/MultiLineAltChart.cjs +1 -1
  90. package/dist/MultiLineAltChart.cjs.map +1 -1
  91. package/dist/MultiLineAltChart.js +82 -91
  92. package/dist/MultiLineAltChart.js.map +1 -1
  93. package/dist/MultiLineChart.cjs +1 -1
  94. package/dist/MultiLineChart.cjs.map +1 -1
  95. package/dist/MultiLineChart.js +3 -2
  96. package/dist/MultiLineChart.js.map +1 -1
  97. package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
  98. package/dist/PerformanceIntensiveMultiGraphDashboard.js +2 -2
  99. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.cjs +1 -1
  100. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.js +1 -1
  101. package/dist/RadarChart.cjs +1 -1
  102. package/dist/RadarChart.cjs.map +1 -1
  103. package/dist/RadarChart.js +124 -130
  104. package/dist/RadarChart.js.map +1 -1
  105. package/dist/SankeyChart.cjs +1 -1
  106. package/dist/SankeyChart.cjs.map +1 -1
  107. package/dist/SankeyChart.js +200 -200
  108. package/dist/SankeyChart.js.map +1 -1
  109. package/dist/ScatterPlot.cjs +1 -1
  110. package/dist/ScatterPlot.cjs.map +1 -1
  111. package/dist/ScatterPlot.js +149 -155
  112. package/dist/ScatterPlot.js.map +1 -1
  113. package/dist/SimpleLineChart.cjs +1 -1
  114. package/dist/SimpleLineChart.cjs.map +1 -1
  115. package/dist/SimpleLineChart.js +44 -43
  116. package/dist/SimpleLineChart.js.map +1 -1
  117. package/dist/SingleGraphDashboard.cjs +1 -1
  118. package/dist/SingleGraphDashboard.js +4 -4
  119. package/dist/SingleGraphDashboardFromConfig.cjs +1 -1
  120. package/dist/SingleGraphDashboardFromConfig.js +1 -1
  121. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.cjs +1 -1
  122. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.js +1 -1
  123. package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
  124. package/dist/SingleGraphDashboardThreeDGraphs.js +3 -3
  125. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.cjs +1 -1
  126. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.js +1 -1
  127. package/dist/SlopeChart.cjs +1 -1
  128. package/dist/SlopeChart.cjs.map +1 -1
  129. package/dist/SlopeChart.js +107 -113
  130. package/dist/SlopeChart.js.map +1 -1
  131. package/dist/SparkLine.cjs +1 -1
  132. package/dist/SparkLine.cjs.map +1 -1
  133. package/dist/SparkLine.js +3 -2
  134. package/dist/SparkLine.js.map +1 -1
  135. package/dist/StripChart.cjs +1 -1
  136. package/dist/StripChart.cjs.map +1 -1
  137. package/dist/StripChart.js +159 -159
  138. package/dist/StripChart.js.map +1 -1
  139. package/dist/ThreeDGlobe.cjs +1 -1
  140. package/dist/ThreeDGlobe.cjs.map +1 -1
  141. package/dist/ThreeDGlobe.js +3 -3
  142. package/dist/ThreeDGlobe.js.map +1 -1
  143. package/dist/TreeMapGraph.cjs +1 -1
  144. package/dist/TreeMapGraph.cjs.map +1 -1
  145. package/dist/TreeMapGraph.js +194 -200
  146. package/dist/TreeMapGraph.js.map +1 -1
  147. package/dist/ensureCompleteData-DkQYPeDa.cjs +2 -0
  148. package/dist/ensureCompleteData-DkQYPeDa.cjs.map +1 -0
  149. package/dist/{ensureCompleteData-BALdOrsS.js → ensureCompleteData-DlmibgaI.js} +28 -8
  150. package/dist/ensureCompleteData-DlmibgaI.js.map +1 -0
  151. package/dist/fetchAndParseData-Ba-_CgxS.cjs +16 -0
  152. package/dist/fetchAndParseData-Ba-_CgxS.cjs.map +1 -0
  153. package/dist/fetchAndParseData-sapWbnYk.js +583 -0
  154. package/dist/fetchAndParseData-sapWbnYk.js.map +1 -0
  155. package/dist/fetchAndParseData.cjs +1 -1
  156. package/dist/fetchAndParseData.js +1 -1
  157. package/dist/getJenks-BbngDoBQ.js +19 -0
  158. package/dist/getJenks-BbngDoBQ.js.map +1 -0
  159. package/dist/getJenks-GYmdwBqm.cjs +2 -0
  160. package/dist/getJenks-GYmdwBqm.cjs.map +1 -0
  161. package/dist/getSliderMarks-9cNoRkDx.js +1023 -0
  162. package/dist/getSliderMarks-9cNoRkDx.js.map +1 -0
  163. package/dist/getSliderMarks-CRIbTGYV.cjs +6 -0
  164. package/dist/getSliderMarks-CRIbTGYV.cjs.map +1 -0
  165. package/dist/getUniqValue-DiCh_MOD.js +13 -0
  166. package/dist/getUniqValue-DiCh_MOD.js.map +1 -0
  167. package/dist/getUniqValue-RViz8tTw.cjs +2 -0
  168. package/dist/getUniqValue-RViz8tTw.cjs.map +1 -0
  169. package/dist/{index-BMgDMxKJ.js → index-37q0ULNQ.js} +44 -50
  170. package/dist/index-37q0ULNQ.js.map +1 -0
  171. package/dist/index-CVlCtJbC.cjs +2 -0
  172. package/dist/index-CVlCtJbC.cjs.map +1 -0
  173. package/dist/index.cjs +1 -1
  174. package/dist/index.d.ts +1 -1
  175. package/dist/index.js +6 -6
  176. package/dist/sort-DfK1b0F5.js +34 -0
  177. package/dist/sort-DfK1b0F5.js.map +1 -0
  178. package/dist/sort-O96oMZLb.cjs +2 -0
  179. package/dist/sort-O96oMZLb.cjs.map +1 -0
  180. package/dist/transformData.cjs +1 -1
  181. package/dist/transformData.js +3 -3
  182. package/dist/transformDataForAggregation-KXGm6flX.cjs +2 -0
  183. package/dist/{transformDataForAggregation-BVxVu4yY.cjs.map → transformDataForAggregation-KXGm6flX.cjs.map} +1 -1
  184. package/dist/{transformDataForAggregation-1BYVFqvF.js → transformDataForAggregation-sBpdlX8n.js} +40 -44
  185. package/dist/{transformDataForAggregation-1BYVFqvF.js.map → transformDataForAggregation-sBpdlX8n.js.map} +1 -1
  186. package/dist/{transformDataForGraphFromFile-BC9Ha8hF.js → transformDataForGraphFromFile-ComYvzuz.js} +3 -3
  187. package/dist/{transformDataForGraphFromFile-BC9Ha8hF.js.map → transformDataForGraphFromFile-ComYvzuz.js.map} +1 -1
  188. package/dist/{transformDataForGraphFromFile-b41aNQYY.cjs → transformDataForGraphFromFile-DVZodTHd.cjs} +2 -2
  189. package/dist/{transformDataForGraphFromFile-b41aNQYY.cjs.map → transformDataForGraphFromFile-DVZodTHd.cjs.map} +1 -1
  190. package/dist/uniqBy-BHy4I8PK.js +8 -0
  191. package/dist/uniqBy-BHy4I8PK.js.map +1 -0
  192. package/dist/uniqBy-O05lp2S5.cjs +2 -0
  193. package/dist/uniqBy-O05lp2S5.cjs.map +1 -0
  194. package/dist/utils.cjs +1 -1
  195. package/dist/utils.d.ts +1 -1
  196. package/dist/utils.js +2 -2
  197. package/package.json +1 -7
  198. package/dist/ensureCompleteData-BALdOrsS.js.map +0 -1
  199. package/dist/ensureCompleteData-BU5Zlccy.cjs +0 -2
  200. package/dist/ensureCompleteData-BU5Zlccy.cjs.map +0 -1
  201. package/dist/fetchAndParseData-DBOl1Icl.js +0 -1196
  202. package/dist/fetchAndParseData-DBOl1Icl.js.map +0 -1
  203. package/dist/fetchAndParseData-Dcy7AS_0.cjs +0 -16
  204. package/dist/fetchAndParseData-Dcy7AS_0.cjs.map +0 -1
  205. package/dist/getJenks-DW96UYNE.js +0 -23
  206. package/dist/getJenks-DW96UYNE.js.map +0 -1
  207. package/dist/getJenks-vofIZmeb.cjs +0 -2
  208. package/dist/getJenks-vofIZmeb.cjs.map +0 -1
  209. package/dist/getSliderMarks-C0jptXeP.js +0 -1054
  210. package/dist/getSliderMarks-C0jptXeP.js.map +0 -1
  211. package/dist/getSliderMarks-CtsEXiLV.cjs +0 -6
  212. package/dist/getSliderMarks-CtsEXiLV.cjs.map +0 -1
  213. package/dist/getUniqValue-CfuE_l9c.cjs +0 -2
  214. package/dist/getUniqValue-CfuE_l9c.cjs.map +0 -1
  215. package/dist/getUniqValue-CttuU_wn.js +0 -20
  216. package/dist/getUniqValue-CttuU_wn.js.map +0 -1
  217. package/dist/index-AqnpA7_O.js +0 -631
  218. package/dist/index-AqnpA7_O.js.map +0 -1
  219. package/dist/index-BJOeaYTk.cjs +0 -2
  220. package/dist/index-BJOeaYTk.cjs.map +0 -1
  221. package/dist/index-BMgDMxKJ.js.map +0 -1
  222. package/dist/index-DYH8g9WA.cjs +0 -2
  223. package/dist/index-DYH8g9WA.cjs.map +0 -1
  224. package/dist/index-Da2GUKrr.cjs +0 -2
  225. package/dist/index-Da2GUKrr.cjs.map +0 -1
  226. package/dist/index-fwdktvAS.js +0 -707
  227. package/dist/index-fwdktvAS.js.map +0 -1
  228. package/dist/transformDataForAggregation-BVxVu4yY.cjs +0 -2
@@ -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 U } from "./index-CHPV5EwG-BPSP-7Jg.js";
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 Z } from "react";
4
- import { s as P } from "./index-fwdktvAS.js";
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 sr, F as er, c as ar } from "./index-BmCqpO1B.js";
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 R = (N) => N.map((c) => c || 1).reduce((c, b) => c + b, 0);
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: V,
22
- data: u,
21
+ graphID: R,
22
+ data: m,
23
23
  columnData: a,
24
24
  onSeriesMouseClick: I,
25
25
  language: $ = "en",
26
- theme: q = "light",
27
- ariaLabel: H,
26
+ theme: V = "light",
27
+ ariaLabel: q,
28
28
  backgroundColor: d = !1,
29
29
  padding: F,
30
- resetSelectionOnDoubleClick: Y = !0,
31
- styles: f,
32
- classNames: g,
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, [m, z] = p(void 0), [W, E] = p(void 0), [h, A] = p("asc"), [x, X] = p(void 0), [J, K] = p({}), [n, G] = p(
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
- ), [Q, L] = p(u);
39
- return Z(() => {
38
+ ), [K, L] = p(m);
39
+ return U(() => {
40
40
  const o = [];
41
- u.forEach((e) => {
41
+ m.forEach((s) => {
42
42
  let r = !0;
43
- n.forEach((s) => {
44
- if (typeof e[s.id] != "object" && typeof e[s.id] != "function" && typeof e[s.id] != "symbol")
45
- if (a[a.findIndex((t) => t.columnId === s.id)].separator) {
46
- const t = e[s.id].split(
47
- a[a.findIndex((O) => O.columnId === s.id)].separator
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
- _(t, s.option).length === 0 && (r = !1);
50
- } else s.option.indexOf(e[s.id]) === -1 && (r = !1);
51
- }), r && o.push(e);
52
- }), L(
53
- m && u ? h === "asc" ? P(o, [m]) : P(o, [m]).reverse() : o
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: `${q || "light"} flex ${l ? "w-fit grow-0" : "w-full grow"}`,
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: U(
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
- g?.graphContainer
64
+ f?.graphContainer
67
65
  ),
68
66
  style: {
69
- ...f?.graphContainer || {},
67
+ ...u?.graphContainer || {},
70
68
  ...d && d !== !0 ? { backgroundColor: d } : {}
71
69
  },
72
- id: V,
73
- "aria-label": H || `${c ? `The graph shows ${c}. ` : ""}This is an data table. ${j ? ` ${j}` : ""}`,
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: f?.title,
86
- description: f?.description
83
+ title: u?.title,
84
+ description: u?.description
87
85
  },
88
86
  classNames: {
89
- title: g?.title,
90
- description: g?.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: u ? /* @__PURE__ */ i.jsxs("table", { className: "w-full", style: { borderCollapse: "collapse" }, 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, e) => /* @__PURE__ */ i.jsx(
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) / R(a.map((r) => r.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
- m === o.columnId ? (h === "asc" && A("desc"), h === "desc" && z(void 0)) : (z(o.columnId), A("asc"));
127
+ g === o.columnId ? (h === "asc" && A("desc"), h === "desc" && z(void 0)) : (z(o.columnId), A("asc"));
130
128
  },
131
- children: m === o.columnId ? h === "asc" ? /* @__PURE__ */ i.jsx(ir, {}) : /* @__PURE__ */ i.jsx(tr, {}) : /* @__PURE__ */ i.jsx(sr, {})
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 s = r.currentTarget.getBoundingClientRect();
145
- K({
146
- top: s.bottom + window.scrollY,
147
- left: s.left + window.scrollX - 160 < 0 ? s.left + window.scrollX : s.left + window.scrollX - 160,
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(er, {}) : /* @__PURE__ */ i.jsx(ar, {})
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
- e
155
+ s
158
156
  )) }) }),
159
- /* @__PURE__ */ i.jsx("tbody", { children: Q?.map((o, e) => /* @__PURE__ */ i.jsx(
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) && Y ? (E(void 0), I(void 0)) : (E(o), I(o)));
163
+ I && (M(W, o) && H ? (E(void 0), I(void 0)) : (E(o), I(o)));
166
164
  },
167
- children: a.map((r, s) => /* @__PURE__ */ i.jsx(
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) / R(a.map((t) => t.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
- s
265
+ e
268
266
  ))
269
267
  },
270
- e
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: f?.footnote, source: f?.source },
276
+ styles: { footnote: u?.footnote, source: u?.source },
279
277
  classNames: {
280
- footnote: g?.footnote,
281
- source: g?.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: J,
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, e) => /* @__PURE__ */ i.jsx("div", { children: /* @__PURE__ */ i.jsxs("label", { className: "undp-viz-label", children: [
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), s = [...n[r].option];
305
- if (s.indexOf(o) !== -1) {
306
- s.splice(s.indexOf(o), 1);
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 = s, G(t);
306
+ t[r].option = e, G(t);
309
307
  } else {
310
- s.push(o);
308
+ e.push(o);
311
309
  const t = [...n];
312
- t[r].option = s, G(t);
310
+ t[r].option = e, G(t);
313
311
  }
314
312
  }
315
313
  }
316
314
  ),
317
315
  o
318
- ] }, e) }, e)) })
316
+ ] }, s) }, s)) })
319
317
  ] })
320
318
  }
321
319
  )