@dhis2/analytics 28.0.4 → 28.1.0

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 (257) hide show
  1. package/build/cjs/__demo__/OpenFileDialog.stories.js +19 -1
  2. package/build/cjs/__demo__/{PivotTable.stories.js → PivotTable.aggregate.stories.js} +38 -38
  3. package/build/cjs/__demo__/PivotTable.event.stories.js +440 -0
  4. package/build/cjs/__demo__/data/event/boolean.data.hidena.json +115 -0
  5. package/build/cjs/__demo__/data/event/boolean.data.json +125 -0
  6. package/build/cjs/__demo__/data/event/boolean.data.org.json +106 -0
  7. package/build/cjs/__demo__/data/event/boolean.visualization.json +160 -0
  8. package/build/cjs/__demo__/data/event/date.data.hidena.json +205 -0
  9. package/build/cjs/__demo__/data/event/date.data.json +215 -0
  10. package/build/cjs/__demo__/data/event/date.data.org.json +123 -0
  11. package/build/cjs/__demo__/data/event/date.visualization.json +160 -0
  12. package/build/cjs/__demo__/data/event/datetime.data.hidena.json +215 -0
  13. package/build/cjs/__demo__/data/event/datetime.data.json +225 -0
  14. package/build/cjs/__demo__/data/event/datetime.data.org.json +124 -0
  15. package/build/cjs/__demo__/data/event/datetime.visualization.json +148 -0
  16. package/build/cjs/__demo__/data/event/email.data.hidena.json +192 -0
  17. package/build/cjs/__demo__/data/event/email.data.json +202 -0
  18. package/build/cjs/__demo__/data/event/email.data.org.json +123 -0
  19. package/build/cjs/__demo__/data/event/email.visualization.json +148 -0
  20. package/build/cjs/__demo__/data/event/integer.data.hidena.json +165 -0
  21. package/build/cjs/__demo__/data/event/integer.data.json +175 -0
  22. package/build/cjs/__demo__/data/event/integer.data.org.json +120 -0
  23. package/build/cjs/__demo__/data/event/integer.visualization.json +163 -0
  24. package/build/cjs/__demo__/data/event/legendset.data.hidena.json +154 -0
  25. package/build/cjs/__demo__/data/event/legendset.data.json +164 -0
  26. package/build/cjs/__demo__/data/event/legendset.visualization.json +166 -0
  27. package/build/cjs/__demo__/data/event/optionset.data.hidena.json +125 -0
  28. package/build/cjs/__demo__/data/event/optionset.data.json +134 -0
  29. package/build/cjs/__demo__/data/event/optionset.data.org.json +125 -0
  30. package/build/cjs/__demo__/data/event/optionset.visualization.json +158 -0
  31. package/build/cjs/__demo__/data/event/time.data.hidena.json +165 -0
  32. package/build/cjs/__demo__/data/event/time.data.json +175 -0
  33. package/build/cjs/__demo__/data/event/time.data.org.json +128 -0
  34. package/build/cjs/__demo__/data/event/time.visualization.json +148 -0
  35. package/build/cjs/__demo__/data/event/yesonly.data.hidena.json +127 -0
  36. package/build/cjs/__demo__/data/event/yesonly.data.json +136 -0
  37. package/build/cjs/__demo__/data/event/yesonly.data.org.json +124 -0
  38. package/build/cjs/__demo__/data/event/yesonly.visualization.json +161 -0
  39. package/build/cjs/components/DataDimension/ItemSelector/ItemSelector.js +19 -22
  40. package/build/cjs/components/DimensionsPanel/List/DimensionList.js +3 -1
  41. package/build/cjs/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +48 -41
  42. package/build/cjs/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
  43. package/build/cjs/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +36 -33
  44. package/build/cjs/components/FileMenu/__tests__/DeleteDialog.spec.js +24 -27
  45. package/build/cjs/components/FileMenu/__tests__/FileMenu.spec.js +51 -31
  46. package/build/cjs/components/FileMenu/__tests__/GetLinkDialog.spec.js +28 -31
  47. package/build/cjs/components/FileMenu/__tests__/RenameDialog.spec.js +17 -11
  48. package/build/cjs/components/FileMenu/__tests__/SaveAsDialog.spec.js +44 -37
  49. package/build/cjs/components/Filter/__tests__/Filter.spec.js +29 -34
  50. package/build/cjs/components/OpenFileDialog/CreatedByFilter.js +9 -1
  51. package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +14 -34
  52. package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +39 -1
  53. package/build/cjs/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +51 -0
  54. package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +78 -44
  55. package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +1 -0
  56. package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +3 -2
  57. package/build/cjs/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +14 -21
  58. package/build/cjs/components/PeriodDimension/__tests__/PeriodDimension.spec.js +27 -23
  59. package/build/cjs/components/PivotTable/PivotTableColumnHeaderCell.js +3 -0
  60. package/build/cjs/components/PivotTable/PivotTableRowHeaderCell.js +2 -1
  61. package/build/cjs/components/RichText/Editor/__tests__/Editor.spec.js +6 -7
  62. package/build/cjs/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
  63. package/build/cjs/components/RichText/Parser/__tests__/Parser.spec.js +22 -23
  64. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +52 -42
  65. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +8 -8
  66. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
  67. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +23 -17
  68. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
  69. package/build/cjs/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
  70. package/build/cjs/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +19 -18
  71. package/build/cjs/components/Toolbar/__tests__/Toolbar.spec.js +8 -8
  72. package/build/cjs/components/Toolbar/__tests__/ToolbarSidebar.spec.js +14 -11
  73. package/build/cjs/components/Toolbar/__tests__/UpdateButton.spec.js +16 -14
  74. package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
  75. package/build/cjs/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +25 -16
  76. package/build/cjs/index.js +8 -0
  77. package/build/cjs/locales/en/translations.json +1 -0
  78. package/build/cjs/modules/pivotTable/AdaptiveClippingController.js +2 -1
  79. package/build/cjs/modules/pivotTable/getHeaderForDisplay.js +4 -1
  80. package/build/cjs/modules/pivotTable/measureText.js +7 -6
  81. package/build/cjs/modules/response/event/__tests__/default.spec.js +77 -0
  82. package/build/cjs/modules/response/event/__tests__/optionSet.spec.js +35 -0
  83. package/build/cjs/modules/response/event/__tests__/response.spec.js +125 -0
  84. package/build/cjs/modules/response/event/default.js +65 -0
  85. package/build/cjs/modules/response/event/optionSet.js +36 -0
  86. package/build/cjs/modules/response/event/response.js +95 -0
  87. package/build/es/__demo__/OpenFileDialog.stories.js +17 -0
  88. package/build/es/__demo__/{PivotTable.stories.js → PivotTable.aggregate.stories.js} +38 -38
  89. package/build/es/__demo__/PivotTable.event.stories.js +414 -0
  90. package/build/es/__demo__/data/event/boolean.data.hidena.json +115 -0
  91. package/build/es/__demo__/data/event/boolean.data.json +125 -0
  92. package/build/es/__demo__/data/event/boolean.data.org.json +106 -0
  93. package/build/es/__demo__/data/event/boolean.visualization.json +160 -0
  94. package/build/es/__demo__/data/event/date.data.hidena.json +205 -0
  95. package/build/es/__demo__/data/event/date.data.json +215 -0
  96. package/build/es/__demo__/data/event/date.data.org.json +123 -0
  97. package/build/es/__demo__/data/event/date.visualization.json +160 -0
  98. package/build/es/__demo__/data/event/datetime.data.hidena.json +215 -0
  99. package/build/es/__demo__/data/event/datetime.data.json +225 -0
  100. package/build/es/__demo__/data/event/datetime.data.org.json +124 -0
  101. package/build/es/__demo__/data/event/datetime.visualization.json +148 -0
  102. package/build/es/__demo__/data/event/email.data.hidena.json +192 -0
  103. package/build/es/__demo__/data/event/email.data.json +202 -0
  104. package/build/es/__demo__/data/event/email.data.org.json +123 -0
  105. package/build/es/__demo__/data/event/email.visualization.json +148 -0
  106. package/build/es/__demo__/data/event/integer.data.hidena.json +165 -0
  107. package/build/es/__demo__/data/event/integer.data.json +175 -0
  108. package/build/es/__demo__/data/event/integer.data.org.json +120 -0
  109. package/build/es/__demo__/data/event/integer.visualization.json +163 -0
  110. package/build/es/__demo__/data/event/legendset.data.hidena.json +154 -0
  111. package/build/es/__demo__/data/event/legendset.data.json +164 -0
  112. package/build/es/__demo__/data/event/legendset.visualization.json +166 -0
  113. package/build/es/__demo__/data/event/optionset.data.hidena.json +125 -0
  114. package/build/es/__demo__/data/event/optionset.data.json +134 -0
  115. package/build/es/__demo__/data/event/optionset.data.org.json +125 -0
  116. package/build/es/__demo__/data/event/optionset.visualization.json +158 -0
  117. package/build/es/__demo__/data/event/time.data.hidena.json +165 -0
  118. package/build/es/__demo__/data/event/time.data.json +175 -0
  119. package/build/es/__demo__/data/event/time.data.org.json +128 -0
  120. package/build/es/__demo__/data/event/time.visualization.json +148 -0
  121. package/build/es/__demo__/data/event/yesonly.data.hidena.json +127 -0
  122. package/build/es/__demo__/data/event/yesonly.data.json +136 -0
  123. package/build/es/__demo__/data/event/yesonly.data.org.json +124 -0
  124. package/build/es/__demo__/data/event/yesonly.visualization.json +161 -0
  125. package/build/es/components/DataDimension/ItemSelector/ItemSelector.js +19 -22
  126. package/build/es/components/DimensionsPanel/List/DimensionList.js +3 -1
  127. package/build/es/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +47 -40
  128. package/build/es/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
  129. package/build/es/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +35 -32
  130. package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +23 -26
  131. package/build/es/components/FileMenu/__tests__/FileMenu.spec.js +52 -32
  132. package/build/es/components/FileMenu/__tests__/GetLinkDialog.spec.js +27 -30
  133. package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +18 -12
  134. package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +43 -36
  135. package/build/es/components/Filter/__tests__/Filter.spec.js +28 -33
  136. package/build/es/components/OpenFileDialog/CreatedByFilter.js +7 -0
  137. package/build/es/components/OpenFileDialog/OpenFileDialog.js +14 -35
  138. package/build/es/components/OpenFileDialog/VisTypeFilter.js +38 -1
  139. package/build/es/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +49 -0
  140. package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +77 -43
  141. package/build/es/components/PeriodDimension/FixedPeriodFilter.js +1 -0
  142. package/build/es/components/PeriodDimension/RelativePeriodFilter.js +3 -2
  143. package/build/es/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +13 -20
  144. package/build/es/components/PeriodDimension/__tests__/PeriodDimension.spec.js +26 -22
  145. package/build/es/components/PivotTable/PivotTableColumnHeaderCell.js +3 -0
  146. package/build/es/components/PivotTable/PivotTableRowHeaderCell.js +2 -1
  147. package/build/es/components/RichText/Editor/__tests__/Editor.spec.js +7 -8
  148. package/build/es/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
  149. package/build/es/components/RichText/Parser/__tests__/Parser.spec.js +21 -22
  150. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +53 -43
  151. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +7 -7
  152. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
  153. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +21 -15
  154. package/build/es/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
  155. package/build/es/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
  156. package/build/es/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +18 -17
  157. package/build/es/components/Toolbar/__tests__/Toolbar.spec.js +7 -7
  158. package/build/es/components/Toolbar/__tests__/ToolbarSidebar.spec.js +13 -10
  159. package/build/es/components/Toolbar/__tests__/UpdateButton.spec.js +15 -13
  160. package/build/es/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
  161. package/build/es/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +24 -15
  162. package/build/es/index.js +4 -0
  163. package/build/es/locales/en/translations.json +1 -0
  164. package/build/es/modules/pivotTable/AdaptiveClippingController.js +2 -1
  165. package/build/es/modules/pivotTable/getHeaderForDisplay.js +4 -1
  166. package/build/es/modules/pivotTable/measureText.js +7 -6
  167. package/build/es/modules/response/event/__tests__/default.spec.js +75 -0
  168. package/build/es/modules/response/event/__tests__/optionSet.spec.js +32 -0
  169. package/build/es/modules/response/event/__tests__/response.spec.js +122 -0
  170. package/build/es/modules/response/event/default.js +52 -0
  171. package/build/es/modules/response/event/optionSet.js +27 -0
  172. package/build/es/modules/response/event/response.js +86 -0
  173. package/package.json +2 -4
  174. package/build/cjs/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
  175. package/build/cjs/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -29
  176. package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
  177. package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
  178. package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
  179. package/build/es/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
  180. package/build/es/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -26
  181. package/build/es/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
  182. package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
  183. package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
  184. /package/build/cjs/__demo__/data/{avgTotalAggregationType.data.json → aggregate/avgTotalAggregationType.data.json} +0 -0
  185. /package/build/cjs/__demo__/data/{avgTotalAggregationType.metadata.json → aggregate/avgTotalAggregationType.metadata.json} +0 -0
  186. /package/build/cjs/__demo__/data/{avgTotalAggregationType.visualization.json → aggregate/avgTotalAggregationType.visualization.json} +0 -0
  187. /package/build/cjs/__demo__/data/{deep.data.json → aggregate/deep.data.json} +0 -0
  188. /package/build/cjs/__demo__/data/{deep.visualization.json → aggregate/deep.visualization.json} +0 -0
  189. /package/build/cjs/__demo__/data/{deepWithFilters.data.json → aggregate/deepWithFilters.data.json} +0 -0
  190. /package/build/cjs/__demo__/data/{deepWithFilters.visualization.json → aggregate/deepWithFilters.visualization.json} +0 -0
  191. /package/build/cjs/__demo__/data/{degs.data.json → aggregate/degs.data.json} +0 -0
  192. /package/build/cjs/__demo__/data/{degs.metadata.json → aggregate/degs.metadata.json} +0 -0
  193. /package/build/cjs/__demo__/data/{degs.visualization.json → aggregate/degs.visualization.json} +0 -0
  194. /package/build/cjs/__demo__/data/{diseaseWeeks.data.json → aggregate/diseaseWeeks.data.json} +0 -0
  195. /package/build/cjs/__demo__/data/{diseaseWeeks.metadata.json → aggregate/diseaseWeeks.metadata.json} +0 -0
  196. /package/build/cjs/__demo__/data/{diseaseWeeks.visualization.json → aggregate/diseaseWeeks.visualization.json} +0 -0
  197. /package/build/cjs/__demo__/data/{emptyColumns.data.json → aggregate/emptyColumns.data.json} +0 -0
  198. /package/build/cjs/__demo__/data/{emptyColumns.metadata.json → aggregate/emptyColumns.metadata.json} +0 -0
  199. /package/build/cjs/__demo__/data/{emptyColumns.visualization.json → aggregate/emptyColumns.visualization.json} +0 -0
  200. /package/build/cjs/__demo__/data/{emptyRows.data.json → aggregate/emptyRows.data.json} +0 -0
  201. /package/build/cjs/__demo__/data/{emptyRows.visualization.json → aggregate/emptyRows.visualization.json} +0 -0
  202. /package/build/cjs/__demo__/data/{hierarchy.data.json → aggregate/hierarchy.data.json} +0 -0
  203. /package/build/cjs/__demo__/data/{hierarchy.metadata.json → aggregate/hierarchy.metadata.json} +0 -0
  204. /package/build/cjs/__demo__/data/{hierarchy.visualization.json → aggregate/hierarchy.visualization.json} +0 -0
  205. /package/build/cjs/__demo__/data/{lastFiveYears.data.json → aggregate/lastFiveYears.data.json} +0 -0
  206. /package/build/cjs/__demo__/data/{lastFiveYears.metadata.json → aggregate/lastFiveYears.metadata.json} +0 -0
  207. /package/build/cjs/__demo__/data/{lastFiveYears.visualization.json → aggregate/lastFiveYears.visualization.json} +0 -0
  208. /package/build/cjs/__demo__/data/{narrative.data.json → aggregate/narrative.data.json} +0 -0
  209. /package/build/cjs/__demo__/data/{narrative.metadata.json → aggregate/narrative.metadata.json} +0 -0
  210. /package/build/cjs/__demo__/data/{narrative.visualization.json → aggregate/narrative.visualization.json} +0 -0
  211. /package/build/cjs/__demo__/data/{simple.data.json → aggregate/simple.data.json} +0 -0
  212. /package/build/cjs/__demo__/data/{simple.metadata.json → aggregate/simple.metadata.json} +0 -0
  213. /package/build/cjs/__demo__/data/{simple.visualization.json → aggregate/simple.visualization.json} +0 -0
  214. /package/build/cjs/__demo__/data/{target-with-legend.data.json → aggregate/target-with-legend.data.json} +0 -0
  215. /package/build/cjs/__demo__/data/{target-with-legend.metadata.json → aggregate/target-with-legend.metadata.json} +0 -0
  216. /package/build/cjs/__demo__/data/{target-with-legend.visualization.json → aggregate/target-with-legend.visualization.json} +0 -0
  217. /package/build/cjs/__demo__/data/{under-above-100.legendSet.json → aggregate/under-above-100.legendSet.json} +0 -0
  218. /package/build/cjs/__demo__/data/{weeklyColumns.data.json → aggregate/weeklyColumns.data.json} +0 -0
  219. /package/build/cjs/__demo__/data/{weeklyColumns.metadata.json → aggregate/weeklyColumns.metadata.json} +0 -0
  220. /package/build/cjs/__demo__/data/{weeklyColumns.visualization.json → aggregate/weeklyColumns.visualization.json} +0 -0
  221. /package/build/es/__demo__/data/{avgTotalAggregationType.data.json → aggregate/avgTotalAggregationType.data.json} +0 -0
  222. /package/build/es/__demo__/data/{avgTotalAggregationType.metadata.json → aggregate/avgTotalAggregationType.metadata.json} +0 -0
  223. /package/build/es/__demo__/data/{avgTotalAggregationType.visualization.json → aggregate/avgTotalAggregationType.visualization.json} +0 -0
  224. /package/build/es/__demo__/data/{deep.data.json → aggregate/deep.data.json} +0 -0
  225. /package/build/es/__demo__/data/{deep.visualization.json → aggregate/deep.visualization.json} +0 -0
  226. /package/build/es/__demo__/data/{deepWithFilters.data.json → aggregate/deepWithFilters.data.json} +0 -0
  227. /package/build/es/__demo__/data/{deepWithFilters.visualization.json → aggregate/deepWithFilters.visualization.json} +0 -0
  228. /package/build/es/__demo__/data/{degs.data.json → aggregate/degs.data.json} +0 -0
  229. /package/build/es/__demo__/data/{degs.metadata.json → aggregate/degs.metadata.json} +0 -0
  230. /package/build/es/__demo__/data/{degs.visualization.json → aggregate/degs.visualization.json} +0 -0
  231. /package/build/es/__demo__/data/{diseaseWeeks.data.json → aggregate/diseaseWeeks.data.json} +0 -0
  232. /package/build/es/__demo__/data/{diseaseWeeks.metadata.json → aggregate/diseaseWeeks.metadata.json} +0 -0
  233. /package/build/es/__demo__/data/{diseaseWeeks.visualization.json → aggregate/diseaseWeeks.visualization.json} +0 -0
  234. /package/build/es/__demo__/data/{emptyColumns.data.json → aggregate/emptyColumns.data.json} +0 -0
  235. /package/build/es/__demo__/data/{emptyColumns.metadata.json → aggregate/emptyColumns.metadata.json} +0 -0
  236. /package/build/es/__demo__/data/{emptyColumns.visualization.json → aggregate/emptyColumns.visualization.json} +0 -0
  237. /package/build/es/__demo__/data/{emptyRows.data.json → aggregate/emptyRows.data.json} +0 -0
  238. /package/build/es/__demo__/data/{emptyRows.visualization.json → aggregate/emptyRows.visualization.json} +0 -0
  239. /package/build/es/__demo__/data/{hierarchy.data.json → aggregate/hierarchy.data.json} +0 -0
  240. /package/build/es/__demo__/data/{hierarchy.metadata.json → aggregate/hierarchy.metadata.json} +0 -0
  241. /package/build/es/__demo__/data/{hierarchy.visualization.json → aggregate/hierarchy.visualization.json} +0 -0
  242. /package/build/es/__demo__/data/{lastFiveYears.data.json → aggregate/lastFiveYears.data.json} +0 -0
  243. /package/build/es/__demo__/data/{lastFiveYears.metadata.json → aggregate/lastFiveYears.metadata.json} +0 -0
  244. /package/build/es/__demo__/data/{lastFiveYears.visualization.json → aggregate/lastFiveYears.visualization.json} +0 -0
  245. /package/build/es/__demo__/data/{narrative.data.json → aggregate/narrative.data.json} +0 -0
  246. /package/build/es/__demo__/data/{narrative.metadata.json → aggregate/narrative.metadata.json} +0 -0
  247. /package/build/es/__demo__/data/{narrative.visualization.json → aggregate/narrative.visualization.json} +0 -0
  248. /package/build/es/__demo__/data/{simple.data.json → aggregate/simple.data.json} +0 -0
  249. /package/build/es/__demo__/data/{simple.metadata.json → aggregate/simple.metadata.json} +0 -0
  250. /package/build/es/__demo__/data/{simple.visualization.json → aggregate/simple.visualization.json} +0 -0
  251. /package/build/es/__demo__/data/{target-with-legend.data.json → aggregate/target-with-legend.data.json} +0 -0
  252. /package/build/es/__demo__/data/{target-with-legend.metadata.json → aggregate/target-with-legend.metadata.json} +0 -0
  253. /package/build/es/__demo__/data/{target-with-legend.visualization.json → aggregate/target-with-legend.visualization.json} +0 -0
  254. /package/build/es/__demo__/data/{under-above-100.legendSet.json → aggregate/under-above-100.legendSet.json} +0 -0
  255. /package/build/es/__demo__/data/{weeklyColumns.data.json → aggregate/weeklyColumns.data.json} +0 -0
  256. /package/build/es/__demo__/data/{weeklyColumns.metadata.json → aggregate/weeklyColumns.metadata.json} +0 -0
  257. /package/build/es/__demo__/data/{weeklyColumns.visualization.json → aggregate/weeklyColumns.visualization.json} +0 -0
@@ -1,4 +1,4 @@
1
- import { shallow } from 'enzyme';
1
+ import { render, screen } from '@testing-library/react';
2
2
  import React from 'react';
3
3
  import { HoverMenuDropdown } from '../index.js';
4
4
  describe('<HoverMenuDropdown/>', () => {
@@ -6,20 +6,20 @@ describe('<HoverMenuDropdown/>', () => {
6
6
  * in the mouse interaction tests for the HoverMenuBar.
7
7
  * Only the `dataTest` prop needs to be verified here. */
8
8
 
9
- it('accepts a `dataTest` prop', () => {
9
+ test('accepts a `dataTest` prop', () => {
10
10
  const dataTest = 'test';
11
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuDropdown, {
11
+ render(/*#__PURE__*/React.createElement(HoverMenuDropdown, {
12
12
  label: "test dropdown",
13
13
  dataTest: dataTest
14
14
  }, "children"));
15
- expect(wrapper.find('button').prop('data-test')).toBe(dataTest);
15
+ expect(screen.getByTestId(dataTest)).toBeInTheDocument();
16
16
  });
17
- it('accepts a `className` prop', () => {
17
+ test('accepts a `className` prop', () => {
18
18
  const className = 'test';
19
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuDropdown, {
19
+ render(/*#__PURE__*/React.createElement(HoverMenuDropdown, {
20
20
  label: "test dropdown",
21
21
  className: className
22
22
  }, "children"));
23
- expect(wrapper.find('button')).toHaveClassName(className);
23
+ expect(screen.getByRole('button')).toHaveClass(className);
24
24
  });
25
25
  });
@@ -1,29 +1,28 @@
1
- import '@testing-library/jest-dom';
2
1
  import { render, screen } from '@testing-library/react';
3
- import { shallow } from 'enzyme';
4
2
  import React from 'react';
5
3
  import { HoverMenuList, HoverMenuListItem } from '../index.js';
6
4
  describe('<HoverMenuList/>', () => {
7
5
  const dataTest = 'test';
8
6
  const childNode = 'children';
9
- it('renders children', () => {
10
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuList, null, childNode));
11
- expect(wrapper.containsMatchingElement(childNode)).toBe(true);
7
+ test('renders children', () => {
8
+ render(/*#__PURE__*/React.createElement(HoverMenuList, null, childNode));
9
+ expect(screen.getByText(childNode)).toBeInTheDocument();
12
10
  });
13
- it('accept a `className` prop', () => {
11
+ test('accept a `className` prop', () => {
14
12
  const className = 'className';
15
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuList, {
13
+ render(/*#__PURE__*/React.createElement(HoverMenuList, {
14
+ dataTest: dataTest,
16
15
  className: className
17
16
  }, childNode));
18
- expect(wrapper.find('ul')).toHaveClassName(className);
17
+ expect(screen.getByTestId(dataTest)).toHaveClass(className);
19
18
  });
20
- it('accepts a `dataTest` prop', () => {
21
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuList, {
19
+ test('accepts a `dataTest` prop', () => {
20
+ render(/*#__PURE__*/React.createElement(HoverMenuList, {
22
21
  dataTest: dataTest
23
22
  }, childNode));
24
- expect(wrapper.find('ul').prop('data-test')).toBe(dataTest);
23
+ expect(screen.getByTestId(dataTest)).toBeInTheDocument();
25
24
  });
26
- it('accept a `dense` prop', () => {
25
+ test('accept a `dense` prop', () => {
27
26
  render(/*#__PURE__*/React.createElement(HoverMenuList, {
28
27
  dense: true
29
28
  }, /*#__PURE__*/React.createElement(HoverMenuListItem, {
@@ -34,18 +33,24 @@ describe('<HoverMenuList/>', () => {
34
33
  expect(screen.getByText('item 1').closest('li')).toHaveClass('dense');
35
34
  expect(screen.getByText('item 2').closest('li')).toHaveClass('dense');
36
35
  });
37
- it('accept a `maxHeight` prop', () => {
36
+ test('accept a `maxHeight` prop', () => {
38
37
  const maxHeight = '100000px';
39
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuList, {
38
+ const {
39
+ container
40
+ } = render(/*#__PURE__*/React.createElement(HoverMenuList, {
41
+ dataTest: dataTest,
40
42
  maxHeight: maxHeight
41
43
  }, childNode));
42
- expect(wrapper.find('style').text()).toContain(`max-height: ${maxHeight}`);
44
+ expect(container).toMatchSnapshot();
43
45
  });
44
- it('accept a `maxWidth` prop', () => {
46
+ test('accept a `maxWidth` prop', () => {
45
47
  const maxWidth = '100000px';
46
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuList, {
48
+ const {
49
+ container
50
+ } = render(/*#__PURE__*/React.createElement(HoverMenuList, {
51
+ dataTest: dataTest,
47
52
  maxWidth: maxWidth
48
53
  }, childNode));
49
- expect(wrapper.find('style').text()).toContain(`max-width: ${maxWidth}`);
54
+ expect(container).toMatchSnapshot();
50
55
  });
51
56
  });
@@ -1,4 +1,4 @@
1
- import { shallow } from 'enzyme';
1
+ import { render, screen } from '@testing-library/react';
2
2
  import React from 'react';
3
3
  import { HoverMenuListItem } from '../index.js';
4
4
  describe('<HoverMenuListItem/>', () => {
@@ -7,36 +7,42 @@ describe('<HoverMenuListItem/>', () => {
7
7
  * Only the `className`, `dataTest`, `destructive` and
8
8
  * `icon` prop need to be verified here. */
9
9
 
10
- it('accepts a `className` prop', () => {
10
+ test('accepts a `className` prop', () => {
11
11
  const className = 'className';
12
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuListItem, {
12
+ render(/*#__PURE__*/React.createElement(HoverMenuListItem, {
13
13
  className: className
14
14
  }));
15
- expect(wrapper.find('li')).toHaveClassName(className);
15
+ expect(screen.getByTestId('dhis2-uicore-hovermenulistitem')).toHaveClass(className);
16
16
  });
17
- it('accepts a `dataTest` prop', () => {
17
+ test('accepts a `dataTest` prop', () => {
18
18
  const dataTest = 'test';
19
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuListItem, {
19
+ render(/*#__PURE__*/React.createElement(HoverMenuListItem, {
20
20
  dataTest: dataTest
21
21
  }));
22
- expect(wrapper.find('li').prop('data-test')).toBe(dataTest);
22
+ expect(screen.getByTestId(dataTest)).toBeInTheDocument();
23
23
  });
24
- it('accepts a `destructive` prop', () => {
25
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuListItem, {
24
+ test('accepts a `destructive` prop', () => {
25
+ const dataTest = 'test';
26
+ render(/*#__PURE__*/React.createElement(HoverMenuListItem, {
27
+ dataTest: dataTest,
26
28
  destructive: true
27
29
  }));
28
- expect(wrapper.find('li')).toHaveClassName('destructive');
30
+ expect(screen.getByTestId(dataTest)).toBeInTheDocument();
29
31
  });
30
- it('accepts an `icon` prop', () => {
32
+ test('accepts an `icon` prop', () => {
33
+ const dataTest = 'test';
31
34
  const iconText = 'I am an icon';
32
35
  const icon = /*#__PURE__*/React.createElement("span", {
33
36
  id: "testicon"
34
37
  }, iconText);
35
- const wrapper = shallow(/*#__PURE__*/React.createElement(HoverMenuListItem, {
38
+ render(/*#__PURE__*/React.createElement(HoverMenuListItem, {
39
+ dataTest: dataTest,
36
40
  icon: icon
37
41
  }));
38
- expect(wrapper.find('span.icon')).toExist();
39
- expect(wrapper.find('span#testicon')).toExist();
40
- expect(wrapper.find('span#testicon').text()).toBe(iconText);
42
+ const iconWrapperEl = screen.getByTestId(dataTest).firstChild;
43
+ expect(iconWrapperEl).toBeInTheDocument();
44
+ expect(iconWrapperEl).toHaveClass('icon');
45
+ const iconEl = iconWrapperEl.closest('span');
46
+ expect(iconEl).toHaveTextContent(iconText);
41
47
  });
42
48
  });
@@ -0,0 +1,63 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<HoverMenuList/> accept a \`maxHeight\` prop 1`] = `
4
+ <div>
5
+ <ul
6
+ data-test="test"
7
+ >
8
+ children
9
+ <style>
10
+
11
+ ul {
12
+ position: relative;
13
+ margin: 0;
14
+ padding: 0;
15
+ user-select: none;
16
+ background: #ffffff;
17
+ border: 1px solid #f3f5f7;
18
+ border-radius: 3px;
19
+ box-shadow: 0px 10px 15px -3px rgba(33,41,52,0.1), 0px 4px 6px -2px rgba(33,41,52,0.05);
20
+ display: inline-block;
21
+ min-width: 128px;
22
+ max-width: 380px;
23
+ max-height: 100000px;
24
+ padding: 4px 0;
25
+ overflow: auto;
26
+ list-style: none;
27
+ }
28
+
29
+ </style>
30
+ </ul>
31
+ </div>
32
+ `;
33
+
34
+ exports[`<HoverMenuList/> accept a \`maxWidth\` prop 1`] = `
35
+ <div>
36
+ <ul
37
+ data-test="test"
38
+ >
39
+ children
40
+ <style>
41
+
42
+ ul {
43
+ position: relative;
44
+ margin: 0;
45
+ padding: 0;
46
+ user-select: none;
47
+ background: #ffffff;
48
+ border: 1px solid #f3f5f7;
49
+ border-radius: 3px;
50
+ box-shadow: 0px 10px 15px -3px rgba(33,41,52,0.1), 0px 4px 6px -2px rgba(33,41,52,0.05);
51
+ display: inline-block;
52
+ min-width: 128px;
53
+ max-width: 100000px;
54
+ max-height: auto;
55
+ padding: 4px 0;
56
+ overflow: auto;
57
+ list-style: none;
58
+ }
59
+
60
+ </style>
61
+ </ul>
62
+ </div>
63
+ `;
@@ -14,7 +14,9 @@ export const InterpretationsAndDetailsToggler = ({
14
14
  disabled: disabled,
15
15
  "data-test": dataTest,
16
16
  className: "jsx-1238484262 " + `jsx-${menuButtonStyles.__hash}`
17
- }, isShowing ? /*#__PURE__*/React.createElement(IconChevronRight24, null) : /*#__PURE__*/React.createElement(IconChevronLeft24, null), i18n.t('Interpretations and details'), /*#__PURE__*/React.createElement(_JSXStyle, {
17
+ }, isShowing ? /*#__PURE__*/React.createElement(IconChevronRight24, {
18
+ dataTest: `${dataTest}-showing`
19
+ }) : /*#__PURE__*/React.createElement(IconChevronLeft24, null), i18n.t('Interpretations and details'), /*#__PURE__*/React.createElement(_JSXStyle, {
18
20
  id: menuButtonStyles.__hash
19
21
  }, menuButtonStyles), /*#__PURE__*/React.createElement(_JSXStyle, {
20
22
  id: "1238484262"
@@ -1,42 +1,43 @@
1
- import { shallow } from 'enzyme';
1
+ import { render, screen } from '@testing-library/react';
2
+ import userEvent from '@testing-library/user-event';
2
3
  import React from 'react';
3
4
  import { InterpretationsAndDetailsToggler } from '../index.js';
4
5
  describe('<InterpretationsAndDetailsToggler/>', () => {
5
6
  const noop = () => {};
6
- it('accepts an `onClick` prop', () => {
7
+ test('accepts an `onClick` prop', async () => {
8
+ const user = userEvent.setup();
7
9
  const onClick = jest.fn();
8
- const wrapper = shallow(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
10
+ render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
9
11
  onClick: onClick
10
12
  }));
11
- wrapper.simulate('click');
13
+ await user.click(screen.getByRole('button'));
12
14
  expect(onClick).toHaveBeenCalledTimes(1);
13
15
  });
14
- it('accepts a `dataTest` prop', () => {
16
+ test('accepts a `dataTest` prop', () => {
15
17
  const dataTest = 'test';
16
- const wrapper = shallow(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
18
+ render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
17
19
  onClick: noop,
18
20
  dataTest: dataTest
19
21
  }));
20
- expect(wrapper.prop('data-test')).toBe(dataTest);
22
+ expect(screen.getByTestId(dataTest)).toBeInTheDocument();
21
23
  });
22
- it('accepts a `disabled` prop', () => {
23
- const wrapper = shallow(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
24
+ test('accepts a `disabled` prop', () => {
25
+ render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
24
26
  disabled: true,
25
27
  onClick: noop
26
28
  }));
27
- expect(wrapper.find('button').prop('disabled')).toEqual(true);
29
+ expect(screen.getByRole('button')).toBeDisabled();
28
30
  });
29
- it('accepts an `isShowing` prop', () => {
30
- const wrapper = shallow(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
31
+ test('accepts an `isShowing` prop', () => {
32
+ const showingDataTest = 'dhis2-analytics-interpretationsanddetailstoggler-showing';
33
+ render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
31
34
  onClick: noop
32
35
  }));
33
- const wrapperWithIsShowing = shallow(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
36
+ expect(screen.queryByTestId(showingDataTest)).not.toBeInTheDocument();
37
+ render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
34
38
  isShowing: true,
35
39
  onClick: noop
36
40
  }));
37
- expect(wrapper.find('SvgChevronRight24')).toHaveLength(0);
38
- expect(wrapper.find('SvgChevronLeft24')).toHaveLength(1);
39
- expect(wrapperWithIsShowing.find('SvgChevronRight24')).toHaveLength(1);
40
- expect(wrapperWithIsShowing.find('SvgChevronLeft24')).toHaveLength(0);
41
+ expect(screen.getByTestId(showingDataTest)).toBeInTheDocument();
41
42
  });
42
43
  });
@@ -1,17 +1,17 @@
1
- import { shallow } from 'enzyme';
1
+ import { render, screen } from '@testing-library/react';
2
2
  import React from 'react';
3
3
  import { Toolbar } from '../index.js';
4
4
  describe('<Toolbar/>', () => {
5
- it('renders children', () => {
5
+ test('renders children', () => {
6
6
  const childNode = 'text node';
7
- const wrapper = shallow(/*#__PURE__*/React.createElement(Toolbar, null, childNode));
8
- expect(wrapper.containsMatchingElement(childNode)).toBe(true);
7
+ render(/*#__PURE__*/React.createElement(Toolbar, null, childNode));
8
+ expect(screen.getByText(childNode)).toBeInTheDocument();
9
9
  });
10
- it('accepts a `dataTest` prop', () => {
10
+ test('accepts a `dataTest` prop', () => {
11
11
  const dataTest = 'test';
12
- const wrapper = shallow(/*#__PURE__*/React.createElement(Toolbar, {
12
+ render(/*#__PURE__*/React.createElement(Toolbar, {
13
13
  dataTest: dataTest
14
14
  }));
15
- expect(wrapper.prop('data-test')).toBe(dataTest);
15
+ expect(screen.getByTestId(dataTest)).toBeInTheDocument();
16
16
  });
17
17
  });
@@ -1,23 +1,26 @@
1
- import { shallow } from 'enzyme';
1
+ import { render, screen } from '@testing-library/react';
2
2
  import React from 'react';
3
3
  import { ToolbarSidebar } from '../index.js';
4
4
  describe('<ToolbarSidebar/>', () => {
5
- it('renders children', () => {
5
+ test('renders children', () => {
6
6
  const childNode = 'text node';
7
- const wrapper = shallow(/*#__PURE__*/React.createElement(ToolbarSidebar, null, childNode));
8
- expect(wrapper.containsMatchingElement(childNode)).toBe(true);
7
+ render(/*#__PURE__*/React.createElement(ToolbarSidebar, null, childNode));
8
+ expect(screen.getByText(childNode)).toBeInTheDocument();
9
9
  });
10
- it('accepts a `dataTest` prop', () => {
10
+ test('accepts a `dataTest` prop', () => {
11
11
  const dataTest = 'test';
12
- const wrapper = shallow(/*#__PURE__*/React.createElement(ToolbarSidebar, {
12
+ render(/*#__PURE__*/React.createElement(ToolbarSidebar, {
13
13
  dataTest: dataTest
14
14
  }));
15
- expect(wrapper.prop('data-test')).toBe(dataTest);
15
+ expect(screen.getByTestId(dataTest)).toBeInTheDocument();
16
16
  });
17
- it('accepts a `isHidden` prop', () => {
18
- const wrapper = shallow(/*#__PURE__*/React.createElement(ToolbarSidebar, {
17
+ test('accepts a `isHidden` prop', () => {
18
+ const {
19
+ container
20
+ } = render(/*#__PURE__*/React.createElement(ToolbarSidebar, {
19
21
  isHidden: true
20
22
  }));
21
- expect(wrapper.find('div').hasClass('isHidden')).toEqual(true);
23
+ const divEl = container.querySelector('div');
24
+ expect(divEl).toHaveClass('isHidden');
22
25
  });
23
26
  });
@@ -1,36 +1,38 @@
1
- import { shallow } from 'enzyme';
1
+ import { render, screen } from '@testing-library/react';
2
+ import userEvent from '@testing-library/user-event';
2
3
  import React from 'react';
3
4
  import { UpdateButton } from '../index.js';
4
5
  describe('<UpdateButton/>', () => {
5
6
  const noop = () => {};
6
- it('accepts an `onClick` prop', () => {
7
+ test('accepts an `onClick` prop', async () => {
8
+ const user = userEvent.setup();
7
9
  const onClick = jest.fn();
8
- const wrapper = shallow(/*#__PURE__*/React.createElement(UpdateButton, {
10
+ render(/*#__PURE__*/React.createElement(UpdateButton, {
9
11
  onClick: onClick
10
12
  }));
11
- wrapper.simulate('click');
13
+ await user.click(screen.getByRole('button'));
12
14
  expect(onClick).toHaveBeenCalledTimes(1);
13
15
  });
14
- it('accepts a `dataTest` prop', () => {
16
+ test('accepts a `dataTest` prop', () => {
15
17
  const dataTest = 'test';
16
- const wrapper = shallow(/*#__PURE__*/React.createElement(UpdateButton, {
18
+ render(/*#__PURE__*/React.createElement(UpdateButton, {
17
19
  onClick: noop,
18
20
  dataTest: dataTest
19
21
  }));
20
- expect(wrapper.prop('data-test')).toBe(dataTest);
22
+ expect(screen.getByTestId(dataTest)).toBeInTheDocument();
21
23
  });
22
- it('accepts a `disabled` prop', () => {
23
- const wrapper = shallow(/*#__PURE__*/React.createElement(UpdateButton, {
24
+ test('accepts a `disabled` prop', () => {
25
+ render(/*#__PURE__*/React.createElement(UpdateButton, {
24
26
  disabled: true,
25
27
  onClick: noop
26
28
  }));
27
- expect(wrapper.find('button').prop('disabled')).toEqual(true);
29
+ expect(screen.getByRole('button')).toBeDisabled();
28
30
  });
29
- it('accepts an `loading` prop', () => {
30
- const wrapper = shallow(/*#__PURE__*/React.createElement(UpdateButton, {
31
+ test('accepts an `loading` prop', () => {
32
+ render(/*#__PURE__*/React.createElement(UpdateButton, {
31
33
  onClick: noop,
32
34
  loading: true
33
35
  }));
34
- expect(wrapper.find('CircularLoader')).toHaveLength(1);
36
+ expect(screen.getByTestId('dhis2-uicore-circularloader')).toBeInTheDocument();
35
37
  });
36
38
  });
@@ -29,7 +29,8 @@ export const TranslationModal = ({
29
29
  return /*#__PURE__*/React.createElement(Modal, {
30
30
  large: true,
31
31
  position: "middle",
32
- onClose: onClose
32
+ onClose: onClose,
33
+ dataTest: "dhis2-analytics-translation-modal"
33
34
  }, /*#__PURE__*/React.createElement(ModalTitle, null, i18n.t('Translate: {{objectName}}', {
34
35
  objectName: objectToTranslate.name || 'TEXT',
35
36
  // XXX
@@ -1,5 +1,5 @@
1
- import { ModalTitle, Modal } from '@dhis2/ui';
2
- import { shallow } from 'enzyme';
1
+ import { CustomDataProvider } from '@dhis2/app-runtime';
2
+ import { render, screen } from '@testing-library/react';
3
3
  import React from 'react';
4
4
  import { TranslationModal } from '../TranslationModal.js';
5
5
  const mockUseTranslationResults = jest.fn(() => ({
@@ -9,19 +9,26 @@ const mockUseTranslationResults = jest.fn(() => ({
9
9
  jest.mock('../useTranslationsResults.js', () => ({
10
10
  useTranslationsResults: args => mockUseTranslationResults(args)
11
11
  }));
12
- describe('The Translation Dialog component', () => {
13
- let shallowTranslationModal;
12
+ describe('TranslationDialog component', () => {
14
13
  let props;
15
14
  const onClose = jest.fn();
16
15
  const onTranslationSaved = jest.fn();
17
- const getTranslationModalComponent = props => {
18
- if (!shallowTranslationModal) {
19
- shallowTranslationModal = shallow(/*#__PURE__*/React.createElement(TranslationModal, props));
20
- }
21
- return shallowTranslationModal;
16
+ const renderTranslationModalComponent = props => {
17
+ return render(/*#__PURE__*/React.createElement(CustomDataProvider, {
18
+ data: {
19
+ i18n: {
20
+ name: 'Name',
21
+ description: 'Description'
22
+ },
23
+ 'locales/db': [{
24
+ locale: 'en',
25
+ name: 'English',
26
+ displayName: 'English'
27
+ }]
28
+ }
29
+ }, /*#__PURE__*/React.createElement(TranslationModal, props)));
22
30
  };
23
31
  beforeEach(() => {
24
- shallowTranslationModal = undefined;
25
32
  props = {
26
33
  fieldsToTranslate: ['name', 'description'],
27
34
  objectToTranslate: {
@@ -32,15 +39,17 @@ describe('The Translation Dialog component', () => {
32
39
  onTranslationSaved
33
40
  };
34
41
  });
35
- it('renders a Modal component', () => {
36
- expect(getTranslationModalComponent(props).find(Modal)).toHaveLength(1);
42
+ test('renders a Modal component', () => {
43
+ renderTranslationModalComponent(props);
44
+ expect(screen.getByTestId('dhis2-analytics-translation-modal')).toBeInTheDocument();
37
45
  });
38
- it("renders a ModalTitle containing the object's name", () => {
39
- expect(getTranslationModalComponent(props).find(ModalTitle).childAt(0).text()).toEqual(`Translate: ${props.objectToTranslate.name}`);
46
+ test("renders a ModalTitle containing the object's name", () => {
47
+ renderTranslationModalComponent(props);
48
+ expect(screen.getByText(`Translate: ${props.objectToTranslate.name}`)).toBeInTheDocument();
40
49
  });
41
50
  test.each(['https://dhis2.tld/path/api/visualization/object-id', 'https://dhis2.tld/path/api/42/visualization/object-id'])('uses the correct resource for the translation endpoint', href => {
42
51
  props.objectToTranslate.href = href;
43
- getTranslationModalComponent(props);
52
+ renderTranslationModalComponent(props);
44
53
  expect(mockUseTranslationResults).toHaveBeenCalled();
45
54
  expect(mockUseTranslationResults).toHaveBeenCalledWith({
46
55
  resource: 'visualization/object-id'
package/build/es/index.js CHANGED
@@ -129,6 +129,10 @@ export { HIDE_EMPTY_ROW_ITEMS_BEFORE_FIRST, HIDE_EMPTY_ROW_ITEMS_AFTER_LAST, HID
129
129
 
130
130
  export { renderValue as formatValue } from './modules/renderValue.js';
131
131
 
132
+ // Modules: response
133
+
134
+ export { transformResponse as transformEventAggregateResponse } from './modules/response/event/response.js';
135
+
132
136
  // Utils: colorSets
133
137
  export { COLOR_SET_DEFAULT, COLOR_SET_BASIC, COLOR_SET_EXTENDED, COLOR_SET_BRIGHT, COLOR_SET_DARK, COLOR_SET_GRAY, COLOR_SET_COLOR_BLIND, COLOR_SET_PATTERNS, colorSets } from './visualizations/util/colors/colorSets.js';
134
138
 
@@ -410,6 +410,7 @@
410
410
  "Data": "Data",
411
411
  "Organisation unit": "Organisation unit",
412
412
  "Assigned Categories": "Assigned Categories",
413
+ "No value": "No value",
413
414
  "Text": "Text",
414
415
  "Long text": "Long text",
415
416
  "Multi text": "Multi text",
@@ -74,7 +74,8 @@ export class AdaptiveClippingController {
74
74
  if (isColumn) {
75
75
  var _axis$sizes$index;
76
76
  const headerSize = this.measureText(label, {
77
- maxWidth: isLeafHeader ? Math.max(CLIPPED_CELL_MIN_SIZE, ((_axis$sizes$index = axis.sizes[index]) === null || _axis$sizes$index === void 0 ? void 0 : _axis$sizes$index.size) || 0) : 0
77
+ maxWidth: isLeafHeader ? Math.max(CLIPPED_CELL_MIN_SIZE, ((_axis$sizes$index = axis.sizes[index]) === null || _axis$sizes$index === void 0 ? void 0 : _axis$sizes$index.size) || 0) : 0,
78
+ ...header.style
78
79
  });
79
80
  this.addSize({
80
81
  row: -headerStack.length + level,
@@ -32,6 +32,9 @@ export const getHeaderForDisplay = ({
32
32
  return {
33
33
  span,
34
34
  label,
35
- includesHierarchy
35
+ includesHierarchy,
36
+ ...(currentHeader.style ? {
37
+ style: currentHeader.style
38
+ } : {})
36
39
  };
37
40
  };
@@ -1,15 +1,15 @@
1
1
  import { CLIPPED_CELL_MAX_SIZE, WRAPPED_TEXT_JUSTIFY_BUFFER, WRAPPED_TEXT_LINE_HEIGHT } from './pivotTableConstants.js';
2
2
  let canvas;
3
- const getContext = fontSize => {
3
+ const getContext = (fontSize = 11, fontFamily = 'Roboto, Arial, sans-serif') => {
4
4
  if (!canvas) {
5
5
  canvas = document.createElement('canvas');
6
6
  }
7
7
  const ctx = canvas.getContext('2d');
8
- ctx.font = `${fontSize}px Roboto, Arial, sans-serif`;
8
+ ctx.font = `${fontSize}px ${fontFamily}`;
9
9
  return ctx;
10
10
  };
11
- const measureText = (text, fontSize = 11) => {
12
- const ctx = getContext(fontSize);
11
+ const measureText = (text, fontSize, fontFamily) => {
12
+ const ctx = getContext(fontSize, fontFamily);
13
13
  const textMetrics = ctx.measureText(text);
14
14
  return textMetrics.width;
15
15
  };
@@ -17,7 +17,8 @@ export const measureTextWithWrapping = (text, {
17
17
  fontSize = 11,
18
18
  maxWidth = CLIPPED_CELL_MAX_SIZE,
19
19
  justifyBuffer = WRAPPED_TEXT_JUSTIFY_BUFFER,
20
- lineHeight = WRAPPED_TEXT_LINE_HEIGHT
20
+ lineHeight = WRAPPED_TEXT_LINE_HEIGHT,
21
+ fontFamily
21
22
  }) => {
22
23
  if (!text) {
23
24
  return {
@@ -36,7 +37,7 @@ export const measureTextWithWrapping = (text, {
36
37
  const words = paragraphs.shift().split(/\s+/);
37
38
  while (words.length) {
38
39
  const nextWord = (currentLineWidth === 0 ? '' : ' ') + words.shift();
39
- const nextWordWidth = measureText(nextWord, fontSize);
40
+ const nextWordWidth = measureText(nextWord, fontSize, fontFamily);
40
41
  if (maxWidth && currentLineWidth + nextWordWidth > maxWidth) {
41
42
  if (currentLineWidth <= maxWidth - justifyBuffer) {
42
43
  // Wrapping this word would cause an unnaturally short line