@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.
- package/build/cjs/__demo__/OpenFileDialog.stories.js +19 -1
- package/build/cjs/__demo__/{PivotTable.stories.js → PivotTable.aggregate.stories.js} +38 -38
- package/build/cjs/__demo__/PivotTable.event.stories.js +440 -0
- package/build/cjs/__demo__/data/event/boolean.data.hidena.json +115 -0
- package/build/cjs/__demo__/data/event/boolean.data.json +125 -0
- package/build/cjs/__demo__/data/event/boolean.data.org.json +106 -0
- package/build/cjs/__demo__/data/event/boolean.visualization.json +160 -0
- package/build/cjs/__demo__/data/event/date.data.hidena.json +205 -0
- package/build/cjs/__demo__/data/event/date.data.json +215 -0
- package/build/cjs/__demo__/data/event/date.data.org.json +123 -0
- package/build/cjs/__demo__/data/event/date.visualization.json +160 -0
- package/build/cjs/__demo__/data/event/datetime.data.hidena.json +215 -0
- package/build/cjs/__demo__/data/event/datetime.data.json +225 -0
- package/build/cjs/__demo__/data/event/datetime.data.org.json +124 -0
- package/build/cjs/__demo__/data/event/datetime.visualization.json +148 -0
- package/build/cjs/__demo__/data/event/email.data.hidena.json +192 -0
- package/build/cjs/__demo__/data/event/email.data.json +202 -0
- package/build/cjs/__demo__/data/event/email.data.org.json +123 -0
- package/build/cjs/__demo__/data/event/email.visualization.json +148 -0
- package/build/cjs/__demo__/data/event/integer.data.hidena.json +165 -0
- package/build/cjs/__demo__/data/event/integer.data.json +175 -0
- package/build/cjs/__demo__/data/event/integer.data.org.json +120 -0
- package/build/cjs/__demo__/data/event/integer.visualization.json +163 -0
- package/build/cjs/__demo__/data/event/legendset.data.hidena.json +154 -0
- package/build/cjs/__demo__/data/event/legendset.data.json +164 -0
- package/build/cjs/__demo__/data/event/legendset.visualization.json +166 -0
- package/build/cjs/__demo__/data/event/optionset.data.hidena.json +125 -0
- package/build/cjs/__demo__/data/event/optionset.data.json +134 -0
- package/build/cjs/__demo__/data/event/optionset.data.org.json +125 -0
- package/build/cjs/__demo__/data/event/optionset.visualization.json +158 -0
- package/build/cjs/__demo__/data/event/time.data.hidena.json +165 -0
- package/build/cjs/__demo__/data/event/time.data.json +175 -0
- package/build/cjs/__demo__/data/event/time.data.org.json +128 -0
- package/build/cjs/__demo__/data/event/time.visualization.json +148 -0
- package/build/cjs/__demo__/data/event/yesonly.data.hidena.json +127 -0
- package/build/cjs/__demo__/data/event/yesonly.data.json +136 -0
- package/build/cjs/__demo__/data/event/yesonly.data.org.json +124 -0
- package/build/cjs/__demo__/data/event/yesonly.visualization.json +161 -0
- package/build/cjs/components/DataDimension/ItemSelector/ItemSelector.js +19 -22
- package/build/cjs/components/DimensionsPanel/List/DimensionList.js +3 -1
- package/build/cjs/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +48 -41
- package/build/cjs/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
- package/build/cjs/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +36 -33
- package/build/cjs/components/FileMenu/__tests__/DeleteDialog.spec.js +24 -27
- package/build/cjs/components/FileMenu/__tests__/FileMenu.spec.js +51 -31
- package/build/cjs/components/FileMenu/__tests__/GetLinkDialog.spec.js +28 -31
- package/build/cjs/components/FileMenu/__tests__/RenameDialog.spec.js +17 -11
- package/build/cjs/components/FileMenu/__tests__/SaveAsDialog.spec.js +44 -37
- package/build/cjs/components/Filter/__tests__/Filter.spec.js +29 -34
- package/build/cjs/components/OpenFileDialog/CreatedByFilter.js +9 -1
- package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +14 -34
- package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +39 -1
- package/build/cjs/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +51 -0
- package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +78 -44
- package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +1 -0
- package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +3 -2
- package/build/cjs/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +14 -21
- package/build/cjs/components/PeriodDimension/__tests__/PeriodDimension.spec.js +27 -23
- package/build/cjs/components/PivotTable/PivotTableColumnHeaderCell.js +3 -0
- package/build/cjs/components/PivotTable/PivotTableRowHeaderCell.js +2 -1
- package/build/cjs/components/RichText/Editor/__tests__/Editor.spec.js +6 -7
- package/build/cjs/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
- package/build/cjs/components/RichText/Parser/__tests__/Parser.spec.js +22 -23
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +52 -42
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +8 -8
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +23 -17
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
- package/build/cjs/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
- package/build/cjs/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +19 -18
- package/build/cjs/components/Toolbar/__tests__/Toolbar.spec.js +8 -8
- package/build/cjs/components/Toolbar/__tests__/ToolbarSidebar.spec.js +14 -11
- package/build/cjs/components/Toolbar/__tests__/UpdateButton.spec.js +16 -14
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
- package/build/cjs/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +25 -16
- package/build/cjs/index.js +8 -0
- package/build/cjs/locales/en/translations.json +1 -0
- package/build/cjs/modules/pivotTable/AdaptiveClippingController.js +2 -1
- package/build/cjs/modules/pivotTable/getHeaderForDisplay.js +4 -1
- package/build/cjs/modules/pivotTable/measureText.js +7 -6
- package/build/cjs/modules/response/event/__tests__/default.spec.js +77 -0
- package/build/cjs/modules/response/event/__tests__/optionSet.spec.js +35 -0
- package/build/cjs/modules/response/event/__tests__/response.spec.js +125 -0
- package/build/cjs/modules/response/event/default.js +65 -0
- package/build/cjs/modules/response/event/optionSet.js +36 -0
- package/build/cjs/modules/response/event/response.js +95 -0
- package/build/es/__demo__/OpenFileDialog.stories.js +17 -0
- package/build/es/__demo__/{PivotTable.stories.js → PivotTable.aggregate.stories.js} +38 -38
- package/build/es/__demo__/PivotTable.event.stories.js +414 -0
- package/build/es/__demo__/data/event/boolean.data.hidena.json +115 -0
- package/build/es/__demo__/data/event/boolean.data.json +125 -0
- package/build/es/__demo__/data/event/boolean.data.org.json +106 -0
- package/build/es/__demo__/data/event/boolean.visualization.json +160 -0
- package/build/es/__demo__/data/event/date.data.hidena.json +205 -0
- package/build/es/__demo__/data/event/date.data.json +215 -0
- package/build/es/__demo__/data/event/date.data.org.json +123 -0
- package/build/es/__demo__/data/event/date.visualization.json +160 -0
- package/build/es/__demo__/data/event/datetime.data.hidena.json +215 -0
- package/build/es/__demo__/data/event/datetime.data.json +225 -0
- package/build/es/__demo__/data/event/datetime.data.org.json +124 -0
- package/build/es/__demo__/data/event/datetime.visualization.json +148 -0
- package/build/es/__demo__/data/event/email.data.hidena.json +192 -0
- package/build/es/__demo__/data/event/email.data.json +202 -0
- package/build/es/__demo__/data/event/email.data.org.json +123 -0
- package/build/es/__demo__/data/event/email.visualization.json +148 -0
- package/build/es/__demo__/data/event/integer.data.hidena.json +165 -0
- package/build/es/__demo__/data/event/integer.data.json +175 -0
- package/build/es/__demo__/data/event/integer.data.org.json +120 -0
- package/build/es/__demo__/data/event/integer.visualization.json +163 -0
- package/build/es/__demo__/data/event/legendset.data.hidena.json +154 -0
- package/build/es/__demo__/data/event/legendset.data.json +164 -0
- package/build/es/__demo__/data/event/legendset.visualization.json +166 -0
- package/build/es/__demo__/data/event/optionset.data.hidena.json +125 -0
- package/build/es/__demo__/data/event/optionset.data.json +134 -0
- package/build/es/__demo__/data/event/optionset.data.org.json +125 -0
- package/build/es/__demo__/data/event/optionset.visualization.json +158 -0
- package/build/es/__demo__/data/event/time.data.hidena.json +165 -0
- package/build/es/__demo__/data/event/time.data.json +175 -0
- package/build/es/__demo__/data/event/time.data.org.json +128 -0
- package/build/es/__demo__/data/event/time.visualization.json +148 -0
- package/build/es/__demo__/data/event/yesonly.data.hidena.json +127 -0
- package/build/es/__demo__/data/event/yesonly.data.json +136 -0
- package/build/es/__demo__/data/event/yesonly.data.org.json +124 -0
- package/build/es/__demo__/data/event/yesonly.visualization.json +161 -0
- package/build/es/components/DataDimension/ItemSelector/ItemSelector.js +19 -22
- package/build/es/components/DimensionsPanel/List/DimensionList.js +3 -1
- package/build/es/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +47 -40
- package/build/es/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
- package/build/es/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +35 -32
- package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +23 -26
- package/build/es/components/FileMenu/__tests__/FileMenu.spec.js +52 -32
- package/build/es/components/FileMenu/__tests__/GetLinkDialog.spec.js +27 -30
- package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +18 -12
- package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +43 -36
- package/build/es/components/Filter/__tests__/Filter.spec.js +28 -33
- package/build/es/components/OpenFileDialog/CreatedByFilter.js +7 -0
- package/build/es/components/OpenFileDialog/OpenFileDialog.js +14 -35
- package/build/es/components/OpenFileDialog/VisTypeFilter.js +38 -1
- package/build/es/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +49 -0
- package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +77 -43
- package/build/es/components/PeriodDimension/FixedPeriodFilter.js +1 -0
- package/build/es/components/PeriodDimension/RelativePeriodFilter.js +3 -2
- package/build/es/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +13 -20
- package/build/es/components/PeriodDimension/__tests__/PeriodDimension.spec.js +26 -22
- package/build/es/components/PivotTable/PivotTableColumnHeaderCell.js +3 -0
- package/build/es/components/PivotTable/PivotTableRowHeaderCell.js +2 -1
- package/build/es/components/RichText/Editor/__tests__/Editor.spec.js +7 -8
- package/build/es/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
- package/build/es/components/RichText/Parser/__tests__/Parser.spec.js +21 -22
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +53 -43
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +7 -7
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +21 -15
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
- package/build/es/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
- package/build/es/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +18 -17
- package/build/es/components/Toolbar/__tests__/Toolbar.spec.js +7 -7
- package/build/es/components/Toolbar/__tests__/ToolbarSidebar.spec.js +13 -10
- package/build/es/components/Toolbar/__tests__/UpdateButton.spec.js +15 -13
- package/build/es/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
- package/build/es/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +24 -15
- package/build/es/index.js +4 -0
- package/build/es/locales/en/translations.json +1 -0
- package/build/es/modules/pivotTable/AdaptiveClippingController.js +2 -1
- package/build/es/modules/pivotTable/getHeaderForDisplay.js +4 -1
- package/build/es/modules/pivotTable/measureText.js +7 -6
- package/build/es/modules/response/event/__tests__/default.spec.js +75 -0
- package/build/es/modules/response/event/__tests__/optionSet.spec.js +32 -0
- package/build/es/modules/response/event/__tests__/response.spec.js +122 -0
- package/build/es/modules/response/event/default.js +52 -0
- package/build/es/modules/response/event/optionSet.js +27 -0
- package/build/es/modules/response/event/response.js +86 -0
- package/package.json +2 -4
- package/build/cjs/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
- package/build/cjs/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -29
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
- package/build/es/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
- package/build/es/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -26
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
- /package/build/cjs/__demo__/data/{avgTotalAggregationType.data.json → aggregate/avgTotalAggregationType.data.json} +0 -0
- /package/build/cjs/__demo__/data/{avgTotalAggregationType.metadata.json → aggregate/avgTotalAggregationType.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{avgTotalAggregationType.visualization.json → aggregate/avgTotalAggregationType.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{deep.data.json → aggregate/deep.data.json} +0 -0
- /package/build/cjs/__demo__/data/{deep.visualization.json → aggregate/deep.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{deepWithFilters.data.json → aggregate/deepWithFilters.data.json} +0 -0
- /package/build/cjs/__demo__/data/{deepWithFilters.visualization.json → aggregate/deepWithFilters.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{degs.data.json → aggregate/degs.data.json} +0 -0
- /package/build/cjs/__demo__/data/{degs.metadata.json → aggregate/degs.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{degs.visualization.json → aggregate/degs.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{diseaseWeeks.data.json → aggregate/diseaseWeeks.data.json} +0 -0
- /package/build/cjs/__demo__/data/{diseaseWeeks.metadata.json → aggregate/diseaseWeeks.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{diseaseWeeks.visualization.json → aggregate/diseaseWeeks.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyColumns.data.json → aggregate/emptyColumns.data.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyColumns.metadata.json → aggregate/emptyColumns.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyColumns.visualization.json → aggregate/emptyColumns.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyRows.data.json → aggregate/emptyRows.data.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyRows.visualization.json → aggregate/emptyRows.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{hierarchy.data.json → aggregate/hierarchy.data.json} +0 -0
- /package/build/cjs/__demo__/data/{hierarchy.metadata.json → aggregate/hierarchy.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{hierarchy.visualization.json → aggregate/hierarchy.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{lastFiveYears.data.json → aggregate/lastFiveYears.data.json} +0 -0
- /package/build/cjs/__demo__/data/{lastFiveYears.metadata.json → aggregate/lastFiveYears.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{lastFiveYears.visualization.json → aggregate/lastFiveYears.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{narrative.data.json → aggregate/narrative.data.json} +0 -0
- /package/build/cjs/__demo__/data/{narrative.metadata.json → aggregate/narrative.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{narrative.visualization.json → aggregate/narrative.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{simple.data.json → aggregate/simple.data.json} +0 -0
- /package/build/cjs/__demo__/data/{simple.metadata.json → aggregate/simple.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{simple.visualization.json → aggregate/simple.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{target-with-legend.data.json → aggregate/target-with-legend.data.json} +0 -0
- /package/build/cjs/__demo__/data/{target-with-legend.metadata.json → aggregate/target-with-legend.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{target-with-legend.visualization.json → aggregate/target-with-legend.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{under-above-100.legendSet.json → aggregate/under-above-100.legendSet.json} +0 -0
- /package/build/cjs/__demo__/data/{weeklyColumns.data.json → aggregate/weeklyColumns.data.json} +0 -0
- /package/build/cjs/__demo__/data/{weeklyColumns.metadata.json → aggregate/weeklyColumns.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{weeklyColumns.visualization.json → aggregate/weeklyColumns.visualization.json} +0 -0
- /package/build/es/__demo__/data/{avgTotalAggregationType.data.json → aggregate/avgTotalAggregationType.data.json} +0 -0
- /package/build/es/__demo__/data/{avgTotalAggregationType.metadata.json → aggregate/avgTotalAggregationType.metadata.json} +0 -0
- /package/build/es/__demo__/data/{avgTotalAggregationType.visualization.json → aggregate/avgTotalAggregationType.visualization.json} +0 -0
- /package/build/es/__demo__/data/{deep.data.json → aggregate/deep.data.json} +0 -0
- /package/build/es/__demo__/data/{deep.visualization.json → aggregate/deep.visualization.json} +0 -0
- /package/build/es/__demo__/data/{deepWithFilters.data.json → aggregate/deepWithFilters.data.json} +0 -0
- /package/build/es/__demo__/data/{deepWithFilters.visualization.json → aggregate/deepWithFilters.visualization.json} +0 -0
- /package/build/es/__demo__/data/{degs.data.json → aggregate/degs.data.json} +0 -0
- /package/build/es/__demo__/data/{degs.metadata.json → aggregate/degs.metadata.json} +0 -0
- /package/build/es/__demo__/data/{degs.visualization.json → aggregate/degs.visualization.json} +0 -0
- /package/build/es/__demo__/data/{diseaseWeeks.data.json → aggregate/diseaseWeeks.data.json} +0 -0
- /package/build/es/__demo__/data/{diseaseWeeks.metadata.json → aggregate/diseaseWeeks.metadata.json} +0 -0
- /package/build/es/__demo__/data/{diseaseWeeks.visualization.json → aggregate/diseaseWeeks.visualization.json} +0 -0
- /package/build/es/__demo__/data/{emptyColumns.data.json → aggregate/emptyColumns.data.json} +0 -0
- /package/build/es/__demo__/data/{emptyColumns.metadata.json → aggregate/emptyColumns.metadata.json} +0 -0
- /package/build/es/__demo__/data/{emptyColumns.visualization.json → aggregate/emptyColumns.visualization.json} +0 -0
- /package/build/es/__demo__/data/{emptyRows.data.json → aggregate/emptyRows.data.json} +0 -0
- /package/build/es/__demo__/data/{emptyRows.visualization.json → aggregate/emptyRows.visualization.json} +0 -0
- /package/build/es/__demo__/data/{hierarchy.data.json → aggregate/hierarchy.data.json} +0 -0
- /package/build/es/__demo__/data/{hierarchy.metadata.json → aggregate/hierarchy.metadata.json} +0 -0
- /package/build/es/__demo__/data/{hierarchy.visualization.json → aggregate/hierarchy.visualization.json} +0 -0
- /package/build/es/__demo__/data/{lastFiveYears.data.json → aggregate/lastFiveYears.data.json} +0 -0
- /package/build/es/__demo__/data/{lastFiveYears.metadata.json → aggregate/lastFiveYears.metadata.json} +0 -0
- /package/build/es/__demo__/data/{lastFiveYears.visualization.json → aggregate/lastFiveYears.visualization.json} +0 -0
- /package/build/es/__demo__/data/{narrative.data.json → aggregate/narrative.data.json} +0 -0
- /package/build/es/__demo__/data/{narrative.metadata.json → aggregate/narrative.metadata.json} +0 -0
- /package/build/es/__demo__/data/{narrative.visualization.json → aggregate/narrative.visualization.json} +0 -0
- /package/build/es/__demo__/data/{simple.data.json → aggregate/simple.data.json} +0 -0
- /package/build/es/__demo__/data/{simple.metadata.json → aggregate/simple.metadata.json} +0 -0
- /package/build/es/__demo__/data/{simple.visualization.json → aggregate/simple.visualization.json} +0 -0
- /package/build/es/__demo__/data/{target-with-legend.data.json → aggregate/target-with-legend.data.json} +0 -0
- /package/build/es/__demo__/data/{target-with-legend.metadata.json → aggregate/target-with-legend.metadata.json} +0 -0
- /package/build/es/__demo__/data/{target-with-legend.visualization.json → aggregate/target-with-legend.visualization.json} +0 -0
- /package/build/es/__demo__/data/{under-above-100.legendSet.json → aggregate/under-above-100.legendSet.json} +0 -0
- /package/build/es/__demo__/data/{weeklyColumns.data.json → aggregate/weeklyColumns.data.json} +0 -0
- /package/build/es/__demo__/data/{weeklyColumns.metadata.json → aggregate/weeklyColumns.metadata.json} +0 -0
- /package/build/es/__demo__/data/{weeklyColumns.visualization.json → aggregate/weeklyColumns.visualization.json} +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _appRuntime = require("@dhis2/app-runtime");
|
|
4
4
|
var _react = require("@testing-library/react");
|
|
5
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
5
6
|
require("@testing-library/jest-dom");
|
|
6
7
|
var _react2 = _interopRequireDefault(require("react"));
|
|
7
8
|
var _index = require("../../Toolbar/index.js");
|
|
@@ -16,7 +17,7 @@ jest.mock('../../TranslationDialog/TranslationModal/useTranslationsResults.js',
|
|
|
16
17
|
fetching: true
|
|
17
18
|
})
|
|
18
19
|
}));
|
|
19
|
-
describe('
|
|
20
|
+
describe('FileMenu component ', () => {
|
|
20
21
|
const onDelete = jest.fn();
|
|
21
22
|
const onError = jest.fn();
|
|
22
23
|
const onNew = jest.fn();
|
|
@@ -74,8 +75,16 @@ describe('The FileMenu component ', () => {
|
|
|
74
75
|
},
|
|
75
76
|
visualizations: {
|
|
76
77
|
pager: {
|
|
77
|
-
page: 1
|
|
78
|
-
|
|
78
|
+
page: 1,
|
|
79
|
+
pageSize: 50
|
|
80
|
+
},
|
|
81
|
+
visualizations: [{
|
|
82
|
+
id: 'vis1',
|
|
83
|
+
displayName: 'Visualization 1',
|
|
84
|
+
type: 'VISUALIZATION',
|
|
85
|
+
created: '2025-07-23T15:04:16.864',
|
|
86
|
+
lastUpdated: '2025-07-23T15:04:16.864'
|
|
87
|
+
}]
|
|
79
88
|
}
|
|
80
89
|
};
|
|
81
90
|
return (0, _react.render)(/*#__PURE__*/_react2.default.createElement(_appRuntime.CustomDataProvider, {
|
|
@@ -83,7 +92,8 @@ describe('The FileMenu component ', () => {
|
|
|
83
92
|
}, /*#__PURE__*/_react2.default.createElement(_index.HoverMenuBar, null, /*#__PURE__*/_react2.default.createElement(_FileMenu.FileMenu, props))));
|
|
84
93
|
};
|
|
85
94
|
const openDropdown = async () => {
|
|
86
|
-
|
|
95
|
+
const user = _userEvent.default.setup();
|
|
96
|
+
await user.click(_react.screen.getByTestId('dhis2-analytics-hovermenudropdown'));
|
|
87
97
|
expect(await _react.screen.findByTestId('file-menu-container')).toBeVisible();
|
|
88
98
|
};
|
|
89
99
|
const MENU_ITEMS = {
|
|
@@ -135,20 +145,20 @@ describe('The FileMenu component ', () => {
|
|
|
135
145
|
}
|
|
136
146
|
}
|
|
137
147
|
};
|
|
138
|
-
|
|
148
|
+
test('renders a button', () => {
|
|
139
149
|
renderFileMenu();
|
|
140
150
|
expect(_react.screen.getAllByTestId('dhis2-analytics-hovermenudropdown')).toHaveLength(1);
|
|
141
151
|
const button = _react.screen.getByTestId('dhis2-analytics-hovermenudropdown');
|
|
142
152
|
expect(button).toBeVisible();
|
|
143
153
|
expect(button).toHaveTextContent('File');
|
|
144
154
|
});
|
|
145
|
-
|
|
155
|
+
test('opens when clicking the button', async () => {
|
|
146
156
|
renderFileMenu();
|
|
147
157
|
expect(_react.screen.queryByTestId('file-menu-container')).not.toBeInTheDocument();
|
|
148
158
|
await openDropdown();
|
|
149
159
|
expect(await _react.screen.findByTestId('file-menu-container')).toBeVisible();
|
|
150
160
|
});
|
|
151
|
-
|
|
161
|
+
test('renders some enabled buttons regardless of the access settings', async () => {
|
|
152
162
|
renderFileMenu();
|
|
153
163
|
await openDropdown();
|
|
154
164
|
assertMenuItemsDisabledState([{
|
|
@@ -159,7 +169,7 @@ describe('The FileMenu component ', () => {
|
|
|
159
169
|
disabled: false
|
|
160
170
|
}]);
|
|
161
171
|
});
|
|
162
|
-
|
|
172
|
+
test('renders some disabled buttons when no fileObject is present', async () => {
|
|
163
173
|
renderFileMenu();
|
|
164
174
|
await openDropdown();
|
|
165
175
|
assertMenuItemsDisabledState([{
|
|
@@ -182,7 +192,7 @@ describe('The FileMenu component ', () => {
|
|
|
182
192
|
disabled: true
|
|
183
193
|
}]);
|
|
184
194
|
});
|
|
185
|
-
|
|
195
|
+
test('renders some enabled buttons when update access is granted', async () => {
|
|
186
196
|
const customProps = {
|
|
187
197
|
fileObject: {
|
|
188
198
|
id: 'test',
|
|
@@ -206,7 +216,7 @@ describe('The FileMenu component ', () => {
|
|
|
206
216
|
disabled: false
|
|
207
217
|
}]);
|
|
208
218
|
});
|
|
209
|
-
|
|
219
|
+
test('renders enabled Delete button when delete access is granted', async () => {
|
|
210
220
|
const customProps = {
|
|
211
221
|
fileObject: {
|
|
212
222
|
id: 'test',
|
|
@@ -224,7 +234,7 @@ describe('The FileMenu component ', () => {
|
|
|
224
234
|
disabled: false
|
|
225
235
|
}]);
|
|
226
236
|
});
|
|
227
|
-
|
|
237
|
+
test('renders enabled Share button when manage access is granted', async () => {
|
|
228
238
|
const customProps = {
|
|
229
239
|
fileObject: {
|
|
230
240
|
id: 'test',
|
|
@@ -242,50 +252,56 @@ describe('The FileMenu component ', () => {
|
|
|
242
252
|
disabled: false
|
|
243
253
|
}]);
|
|
244
254
|
});
|
|
245
|
-
|
|
255
|
+
test('renders the OpenFileDialog component when the Open button is clicked', async () => {
|
|
256
|
+
const user = _userEvent.default.setup();
|
|
246
257
|
renderFileMenu();
|
|
247
258
|
await openDropdown();
|
|
248
|
-
|
|
259
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.OPEN.testId));
|
|
249
260
|
expect(await _react.screen.findByText('Open a visualization', {
|
|
250
261
|
selector: 'h1'
|
|
251
262
|
})).toBeVisible();
|
|
252
263
|
});
|
|
253
|
-
|
|
264
|
+
test('renders the RenameDialog when the Rename button is clicked', async () => {
|
|
265
|
+
const user = _userEvent.default.setup();
|
|
254
266
|
renderFileMenu(fullAccessProps);
|
|
255
267
|
await openDropdown();
|
|
256
|
-
|
|
268
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.RENAME.testId));
|
|
257
269
|
expect(await _react.screen.findByText('Rename visualization', {
|
|
258
270
|
selector: 'h1'
|
|
259
271
|
})).toBeVisible();
|
|
260
272
|
});
|
|
261
|
-
|
|
273
|
+
test('renders the TranslationDialog when the Translate button is clicked', async () => {
|
|
274
|
+
const user = _userEvent.default.setup();
|
|
262
275
|
renderFileMenu(fullAccessProps);
|
|
263
276
|
await openDropdown();
|
|
264
|
-
|
|
277
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.TRANSLATE.testId));
|
|
265
278
|
expect(await _react.screen.findByText('Translate', {
|
|
266
279
|
exact: false,
|
|
267
280
|
selector: 'h1'
|
|
268
281
|
})).toBeVisible();
|
|
269
282
|
});
|
|
270
|
-
|
|
283
|
+
test('renders the SharingDialog when the Share button is clicked', async () => {
|
|
284
|
+
const user = _userEvent.default.setup();
|
|
271
285
|
renderFileMenu(fullAccessProps);
|
|
272
286
|
await openDropdown();
|
|
273
|
-
|
|
287
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.SHARE.testId));
|
|
274
288
|
expect(await _react.screen.findByText('Sharing and access', {
|
|
275
289
|
selector: 'h1'
|
|
276
290
|
})).toBeVisible();
|
|
277
291
|
});
|
|
278
|
-
|
|
292
|
+
test('renders the GetLinkDialog when the Get link button is clicked', async () => {
|
|
293
|
+
const user = _userEvent.default.setup();
|
|
279
294
|
const url = 'http://localhost/dhis-web-data-visualizer/#/test';
|
|
280
295
|
renderFileMenu(fullAccessProps);
|
|
281
296
|
await openDropdown();
|
|
282
|
-
|
|
297
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.GET_LINK.testId));
|
|
283
298
|
expect(await _react.screen.findByTestId('dhis2-uicore-modal')).toBeVisible();
|
|
284
299
|
expect(_react.screen.getByRole('link', {
|
|
285
300
|
name: url
|
|
286
301
|
})).toHaveAttribute('href', url);
|
|
287
302
|
});
|
|
288
|
-
|
|
303
|
+
test('renders the DeleteDialog when the Delete button is clicked', async () => {
|
|
304
|
+
const user = _userEvent.default.setup();
|
|
289
305
|
const customProps = {
|
|
290
306
|
fileObject: {
|
|
291
307
|
id: 'delete-test',
|
|
@@ -298,20 +314,22 @@ describe('The FileMenu component ', () => {
|
|
|
298
314
|
};
|
|
299
315
|
renderFileMenu(customProps);
|
|
300
316
|
await openDropdown();
|
|
301
|
-
|
|
317
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.DELETE.testId));
|
|
302
318
|
expect(await _react.screen.findByText('Delete visualization', {
|
|
303
319
|
selector: 'h1'
|
|
304
320
|
})).toBeVisible();
|
|
305
321
|
});
|
|
306
|
-
|
|
322
|
+
test('renders the SaveAsDialog when the Save as… button is clicked', async () => {
|
|
323
|
+
const user = _userEvent.default.setup();
|
|
307
324
|
renderFileMenu(fullAccessProps);
|
|
308
325
|
await openDropdown();
|
|
309
|
-
|
|
326
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.SAVE_AS.testId));
|
|
310
327
|
expect(await _react.screen.findByText('Save visualization as', {
|
|
311
328
|
selector: 'h1'
|
|
312
329
|
})).toBeVisible();
|
|
313
330
|
});
|
|
314
|
-
|
|
331
|
+
test('renders the SaveAsDialog when the Save… button is clicked but no fileObject is present', async () => {
|
|
332
|
+
const user = _userEvent.default.setup();
|
|
315
333
|
const customProps = {
|
|
316
334
|
fileObject: {
|
|
317
335
|
// NOTE: no `id` field
|
|
@@ -322,22 +340,24 @@ describe('The FileMenu component ', () => {
|
|
|
322
340
|
};
|
|
323
341
|
renderFileMenu(customProps);
|
|
324
342
|
await openDropdown();
|
|
325
|
-
|
|
343
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.SAVE.testId));
|
|
326
344
|
expect(await _react.screen.findByText('Save visualization as', {
|
|
327
345
|
selector: 'h1'
|
|
328
346
|
})).toBeVisible();
|
|
329
347
|
});
|
|
330
|
-
|
|
348
|
+
test('calls the onSave callback when the Save button is clicked and a fileObject is present', async () => {
|
|
349
|
+
const user = _userEvent.default.setup();
|
|
331
350
|
renderFileMenu(fullAccessProps);
|
|
332
351
|
await openDropdown();
|
|
333
|
-
|
|
352
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.SAVE.testId));
|
|
334
353
|
expect(_react.screen.queryByText('Open a visualization')).not.toBeVisible();
|
|
335
354
|
expect(onSave).toHaveBeenCalledTimes(1);
|
|
336
355
|
});
|
|
337
|
-
|
|
356
|
+
test('calls the onNew callback when the New button is clicked', async () => {
|
|
357
|
+
const user = _userEvent.default.setup();
|
|
338
358
|
renderFileMenu();
|
|
339
359
|
await openDropdown();
|
|
340
|
-
|
|
360
|
+
await user.click(_react.screen.getByTestId(MENU_ITEMS.NEW.testId));
|
|
341
361
|
expect(_react.screen.queryByText('Open a visualization')).not.toBeVisible();
|
|
342
362
|
expect(onNew).toHaveBeenCalledTimes(1);
|
|
343
363
|
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
5
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
6
6
|
var _GetLinkDialog = require("../GetLinkDialog.js");
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
8
|
const testBaseUrl = 'http://host.tld/test/';
|
|
@@ -45,23 +45,27 @@ const tests = [{
|
|
|
45
45
|
id: 'map-id-2',
|
|
46
46
|
expected: 'http://localhost/dhis-web-maps/#/map-id-2'
|
|
47
47
|
}];
|
|
48
|
-
describe('
|
|
49
|
-
let shallowGetLinkDialog;
|
|
48
|
+
describe('FileMenu - GetLinkDialog component', () => {
|
|
50
49
|
const onClose = jest.fn();
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return shallowGetLinkDialog;
|
|
50
|
+
const props = {
|
|
51
|
+
type: tests[0].type,
|
|
52
|
+
id: tests[0].id,
|
|
53
|
+
onClose
|
|
56
54
|
};
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
test('renders a Modal component', () => {
|
|
56
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_GetLinkDialog.GetLinkDialog, props));
|
|
57
|
+
const modalComponent = _react.screen.getByTestId('dhis2-uicore-modal');
|
|
58
|
+
expect(modalComponent).toBeInTheDocument();
|
|
59
|
+
expect(_react.screen.getByLabelText('Close modal dialog')).toBeInTheDocument();
|
|
59
60
|
});
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
test('calls the onClose callback when the Close button is clicked', async () => {
|
|
62
|
+
const user = _userEvent.default.setup();
|
|
63
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_GetLinkDialog.GetLinkDialog, props));
|
|
64
|
+
const closeButton = _react.screen.getByRole('button', {
|
|
65
|
+
name: 'Close'
|
|
66
|
+
});
|
|
67
|
+
await user.click(closeButton);
|
|
68
|
+
expect(onClose).toHaveBeenCalledTimes(1);
|
|
65
69
|
});
|
|
66
70
|
test.each(tests)('renders a <a> tag containing the correct app path and id', ({
|
|
67
71
|
apiVersion,
|
|
@@ -74,19 +78,12 @@ describe('The FileMenu - GetLinkDialog component', () => {
|
|
|
74
78
|
apiVersion: apiVersion || 42,
|
|
75
79
|
baseUrl
|
|
76
80
|
});
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
it('calls the onClose callback when the Close button is clicked', () => {
|
|
85
|
-
getGetLinkDialogComponent({
|
|
86
|
-
type: tests[0].type,
|
|
87
|
-
id: tests[0].id,
|
|
88
|
-
onClose
|
|
89
|
-
}).find(_ui.Button).at(1).simulate('click');
|
|
90
|
-
expect(onClose).toHaveBeenCalled();
|
|
81
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_GetLinkDialog.GetLinkDialog, {
|
|
82
|
+
onClose: onClose,
|
|
83
|
+
type: type,
|
|
84
|
+
id: id
|
|
85
|
+
}));
|
|
86
|
+
const anchorElement = _react.screen.getByRole('link');
|
|
87
|
+
expect(anchorElement.href).toMatch(expected);
|
|
91
88
|
});
|
|
92
89
|
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("@testing-library/jest-dom");
|
|
4
3
|
var _react = require("@testing-library/react");
|
|
4
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
5
5
|
var _react2 = _interopRequireDefault(require("react"));
|
|
6
6
|
var _RenameDialog = require("../RenameDialog.js");
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
8
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
9
|
-
describe('
|
|
9
|
+
describe('FileMenu - RenameDialog component', () => {
|
|
10
10
|
const onClose = jest.fn();
|
|
11
11
|
const onRename = jest.fn();
|
|
12
12
|
const props = {
|
|
@@ -21,18 +21,18 @@ describe('The FileMenu - RenameDialog component', () => {
|
|
|
21
21
|
jest.resetAllMocks();
|
|
22
22
|
jest.clearAllMocks();
|
|
23
23
|
});
|
|
24
|
-
|
|
24
|
+
test('renders a Modal component with the correct heading', () => {
|
|
25
25
|
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_RenameDialog.RenameDialog, props));
|
|
26
26
|
expect(_react.screen.getAllByTestId('file-menu-rename-modal')).toHaveLength(1);
|
|
27
27
|
expect(_react.screen.getByRole('heading')).toHaveTextContent('Rename visualization');
|
|
28
28
|
});
|
|
29
|
-
|
|
29
|
+
test('renders a InputField for name', () => {
|
|
30
30
|
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_RenameDialog.RenameDialog, props));
|
|
31
31
|
expect(_react.screen.getByTestId('file-menu-rename-modal-name')).toBeInTheDocument();
|
|
32
32
|
expect(_react.screen.getByText('Name')).toBeInTheDocument();
|
|
33
33
|
expect(_react.screen.getByText('Name')).toBeVisible();
|
|
34
34
|
});
|
|
35
|
-
|
|
35
|
+
test('renders a InputField for name with prefilled value if name is in object prop', () => {
|
|
36
36
|
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_RenameDialog.RenameDialog, _extends({}, props, {
|
|
37
37
|
object: {
|
|
38
38
|
...props.object,
|
|
@@ -44,7 +44,7 @@ describe('The FileMenu - RenameDialog component', () => {
|
|
|
44
44
|
expect(inputElement).toBeInTheDocument();
|
|
45
45
|
expect(inputElement).toHaveValue('Vis test');
|
|
46
46
|
});
|
|
47
|
-
|
|
47
|
+
test('renders a TextAreaField for description', () => {
|
|
48
48
|
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_RenameDialog.RenameDialog, props));
|
|
49
49
|
|
|
50
50
|
// Locate the label by its text
|
|
@@ -55,7 +55,7 @@ describe('The FileMenu - RenameDialog component', () => {
|
|
|
55
55
|
expect(descriptionField).toBeInTheDocument();
|
|
56
56
|
expect(descriptionField).toBeVisible();
|
|
57
57
|
});
|
|
58
|
-
|
|
58
|
+
test('renders a TextAreaField for description with prefilled value if description is in object prop', () => {
|
|
59
59
|
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_RenameDialog.RenameDialog, _extends({}, props, {
|
|
60
60
|
object: {
|
|
61
61
|
...props.object,
|
|
@@ -71,15 +71,21 @@ describe('The FileMenu - RenameDialog component', () => {
|
|
|
71
71
|
expect(descriptionField).toBeInTheDocument();
|
|
72
72
|
expect(descriptionField).toHaveValue('Long explanation of the visualization');
|
|
73
73
|
});
|
|
74
|
-
|
|
74
|
+
test('calls the onClose callback when the Cancel button is clicked', async () => {
|
|
75
|
+
const user = _userEvent.default.setup();
|
|
75
76
|
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_RenameDialog.RenameDialog, props));
|
|
76
|
-
await
|
|
77
|
+
await user.click(_react.screen.getByRole('button', {
|
|
78
|
+
name: 'Cancel'
|
|
79
|
+
}));
|
|
77
80
|
expect(onClose).toHaveBeenCalled();
|
|
78
81
|
expect(onRename).not.toHaveBeenCalled();
|
|
79
82
|
});
|
|
80
|
-
|
|
83
|
+
test('calls the onRename callback when the Rename button is clicked', async () => {
|
|
84
|
+
const user = _userEvent.default.setup();
|
|
81
85
|
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_RenameDialog.RenameDialog, props));
|
|
82
|
-
await
|
|
86
|
+
await user.click(_react.screen.getByRole('button', {
|
|
87
|
+
name: 'Rename'
|
|
88
|
+
}));
|
|
83
89
|
expect(onRename).toHaveBeenCalled();
|
|
84
90
|
expect(onClose).toHaveBeenCalled();
|
|
85
91
|
});
|
|
@@ -1,56 +1,63 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
5
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
6
6
|
var _SaveAsDialog = require("../SaveAsDialog.js");
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
-
describe('
|
|
9
|
-
let shallowSaveAsDialog;
|
|
10
|
-
let props;
|
|
8
|
+
describe('FileMenu - SaveAsDialog component', () => {
|
|
11
9
|
const onClose = jest.fn();
|
|
12
10
|
const onSaveAs = jest.fn();
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
const props = {
|
|
12
|
+
type: 'visualization',
|
|
13
|
+
object: {
|
|
14
|
+
name: 'Save as name test',
|
|
15
|
+
description: 'Save as description test'
|
|
16
|
+
},
|
|
17
|
+
onClose,
|
|
18
|
+
onSaveAs
|
|
18
19
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
type: 'visualization',
|
|
23
|
-
object: {
|
|
24
|
-
name: 'Save as name test',
|
|
25
|
-
description: 'Save as description test'
|
|
26
|
-
},
|
|
27
|
-
onClose,
|
|
28
|
-
onSaveAs
|
|
29
|
-
};
|
|
20
|
+
test('renders a Modal component', () => {
|
|
21
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_SaveAsDialog.SaveAsDialog, props));
|
|
22
|
+
expect(_react.screen.getByTestId('file-menu-saveas-modal')).toBeInTheDocument();
|
|
30
23
|
});
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
test('renders a ModalTitle containing the type prop', () => {
|
|
25
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_SaveAsDialog.SaveAsDialog, props));
|
|
26
|
+
expect(_react.screen.getByRole('heading')).toHaveTextContent(`Save ${props.type} as`);
|
|
33
27
|
});
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
test('renders a InputField for name with prefilled value from the object prop', () => {
|
|
29
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_SaveAsDialog.SaveAsDialog, props));
|
|
30
|
+
expect(_react.screen.getByTestId('file-menu-saveas-modal-name')).toBeInTheDocument();
|
|
31
|
+
expect(_react.screen.getByText('Name')).toBeInTheDocument();
|
|
32
|
+
expect(_react.screen.getByText('Name')).toBeVisible();
|
|
33
|
+
expect(_react.screen.getByDisplayValue('Save as name test (copy)')).toBeInTheDocument();
|
|
36
34
|
});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
expect(
|
|
35
|
+
test('renders a TextAreaField for description with prefilled value from the object prop', () => {
|
|
36
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_SaveAsDialog.SaveAsDialog, props));
|
|
37
|
+
expect(_react.screen.getByTestId('file-menu-saveas-modal-description')).toBeInTheDocument();
|
|
38
|
+
expect(_react.screen.getByText('Description')).toBeInTheDocument();
|
|
39
|
+
expect(_react.screen.getByText('Description')).toBeVisible();
|
|
40
|
+
expect(_react.screen.getByDisplayValue(props.object.description)).toBeInTheDocument();
|
|
40
41
|
});
|
|
41
|
-
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
test('calls the onSaveAs callback when the Save button is clicked', async () => {
|
|
43
|
+
const user = _userEvent.default.setup();
|
|
44
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_SaveAsDialog.SaveAsDialog, props));
|
|
45
|
+
const saveButton = _react.screen.getByRole('button', {
|
|
46
|
+
name: 'Save'
|
|
47
|
+
});
|
|
48
|
+
await user.click(saveButton);
|
|
47
49
|
expect(onSaveAs).toHaveBeenCalledWith({
|
|
48
50
|
name: 'Save as name test (copy)',
|
|
49
51
|
description: props.object.description
|
|
50
52
|
});
|
|
51
53
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
test('calls the onClose callback when the Cancel button is clicked', async () => {
|
|
55
|
+
const user = _userEvent.default.setup();
|
|
56
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_SaveAsDialog.SaveAsDialog, props));
|
|
57
|
+
const cancelButton = _react.screen.getByRole('button', {
|
|
58
|
+
name: 'Cancel'
|
|
59
|
+
});
|
|
60
|
+
await user.click(cancelButton);
|
|
54
61
|
expect(onClose).toHaveBeenCalled();
|
|
55
62
|
});
|
|
56
63
|
});
|
|
@@ -1,39 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
5
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
6
6
|
var _Filter = _interopRequireDefault(require("../Filter.js"));
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
preventDefault: jest.fn()
|
|
35
|
-
};
|
|
36
|
-
filter.props().onChange(mockEvent);
|
|
37
|
-
expect(props.onClear).toHaveBeenCalledTimes(1);
|
|
38
|
-
});
|
|
8
|
+
const props = {
|
|
9
|
+
placeholder: 'testplaceholder',
|
|
10
|
+
text: '',
|
|
11
|
+
onChange: jest.fn(),
|
|
12
|
+
onClear: jest.fn()
|
|
13
|
+
};
|
|
14
|
+
test('Filter renders an InputField component ', () => {
|
|
15
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_Filter.default, props));
|
|
16
|
+
const inputField = _react.screen.getByTestId('dhis2-uiwidgets-inputfield');
|
|
17
|
+
expect(inputField).toBeInTheDocument();
|
|
18
|
+
});
|
|
19
|
+
test('Filter renders an input field with the given placeholder', () => {
|
|
20
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_Filter.default, props));
|
|
21
|
+
const inputField = _react.screen.getByPlaceholderText(props.placeholder);
|
|
22
|
+
expect(inputField).toBeInTheDocument();
|
|
23
|
+
});
|
|
24
|
+
test('Filter should call prop onClear if onChange receives text string with length < 1 (Ctrl-A + BackSpace)', async () => {
|
|
25
|
+
const user = _userEvent.default.setup();
|
|
26
|
+
props.text = 'anotherTestString';
|
|
27
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_Filter.default, props));
|
|
28
|
+
const inputField = _react.screen.getByPlaceholderText(props.placeholder);
|
|
29
|
+
|
|
30
|
+
// focus on the input field in order to interact with it
|
|
31
|
+
await user.click(inputField);
|
|
32
|
+
await user.keyboard('{Control>}A{/Control}{Backspace}');
|
|
33
|
+
expect(props.onClear).toHaveBeenCalledTimes(1);
|
|
39
34
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.CreatedByFilter = exports.CREATED_BY_CURRENT_USER = exports.CREATED_BY_ALL_BUT_CURRENT_USER = exports.CREATED_BY_ALL = void 0;
|
|
6
|
+
exports.formatUserFilter = exports.default = exports.CreatedByFilter = exports.CREATED_BY_CURRENT_USER = exports.CREATED_BY_ALL_BUT_CURRENT_USER = exports.CREATED_BY_ALL = void 0;
|
|
7
7
|
var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
8
8
|
var _ui = require("@dhis2/ui");
|
|
9
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -14,6 +14,14 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
14
14
|
const CREATED_BY_ALL = exports.CREATED_BY_ALL = 'all';
|
|
15
15
|
const CREATED_BY_ALL_BUT_CURRENT_USER = exports.CREATED_BY_ALL_BUT_CURRENT_USER = 'allButCurrentUser';
|
|
16
16
|
const CREATED_BY_CURRENT_USER = exports.CREATED_BY_CURRENT_USER = 'currentUser';
|
|
17
|
+
const formatUserFilter = (createdBy, userId) => {
|
|
18
|
+
if (createdBy === CREATED_BY_ALL_BUT_CURRENT_USER) {
|
|
19
|
+
return `user.id:!eq:${userId}`;
|
|
20
|
+
} else if (createdBy === CREATED_BY_CURRENT_USER) {
|
|
21
|
+
return `user.id:eq:${userId}`;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
exports.formatUserFilter = formatUserFilter;
|
|
17
25
|
const CreatedByFilter = ({
|
|
18
26
|
selected,
|
|
19
27
|
onChange
|