From 7f418ac03616b5bcbd95b965875a6e0077ee99e2 Mon Sep 17 00:00:00 2001 From: Jan Henrik Overland Date: Thu, 24 Sep 2020 14:46:56 +0200 Subject: [PATCH] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 54be7c3ded0bce21087015f0a69fb3e9a2a21b97 Author: Jen Jones Arnesen Date: Thu Sep 24 13:44:06 2020 +0200 fix: dashboard filter - filter dialog incorrectly shows filter as selected even though it was removed [DHIS2-9560] (#1074) The FilterDialog component was always rendered, because FilterSelector is always rendered in the ViewTitleBar. That meant that the filter state was never reset, causing previous item filter to still show. Fix includes: * only render the FilterDialog if there is a selected dimension * move item handling (onSelect, onDeselect...) to the FilterDialog. Since FilterDialog is removed when closed, it will be able to pick up the current state from redux in the useState statement when reopened. commit 5a0b3b2fe9a598b80f50e31dd77bbcaf5ef68c08 Author: Jen Jones Arnesen Date: Thu Sep 24 11:35:39 2020 +0200 Revert "fix: use better spacing in item title when the title wraps to multiple lines (#1099)" (#1112) This reverts commit f76ed0eabfa11e5e69b93bd16d27964a2231ee05. commit f76ed0eabfa11e5e69b93bd16d27964a2231ee05 Author: Jen Jones Arnesen Date: Thu Sep 24 10:33:16 2020 +0200 fix: use better spacing in item title when the title wraps to multiple lines (#1099) commit b01a670ee86669947802ab6a9536051849d19772 Author: @dhis2-bot Date: Thu Sep 24 01:41:12 2020 +0200 fix(translations): sync translations from transifex (master) Automatically merged. commit db98d5c7b1c4a97a0ffd2ecb8c67a6c0f3886cb4 Author: Jan Henrik Øverland Date: Wed Sep 23 14:58:55 2020 +0200 fix: upgrade plugin and analytics (#1105) commit 050c0520a72f958a632b08651460a478272be8d5 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 23 04:22:00 2020 +0000 chore(deps): bump @dhis2/d2-ui-interpretations from 7.0.7 to 7.0.8 (#1103) commit 35e0e51a5c44a2805f39ea612d89ffa25ae792e3 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 23 04:13:55 2020 +0000 chore(deps): bump @dhis2/d2-ui-sharing-dialog from 7.0.7 to 7.0.8 (#1101) commit e356864506d43b996f5d2ad1e33fd0eb1166d3a0 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 23 04:04:53 2020 +0000 chore(deps): bump @dhis2/data-visualizer-plugin (#1102) commit 1922df8b17807d29ce1280b1278f46b396740dbb Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 23 03:56:38 2020 +0000 chore(deps): bump @dhis2/analytics from 11.0.5 to 11.0.6 (#1100) commit 763881b99cdc4728d7de4077e82a729fee79d30f Author: Jen Jones Arnesen Date: Tue Sep 22 16:06:03 2020 +0200 fix: set passive to true for scroll event listener in ProgressiveLoadingContainer [DHIS2-9508] (#1084) A minor optimization that probably won't have much impact on the performance, but nevertheless doesn't have a negative impact. Changes include: * do not add eventListener on the window * set passive: true on the event listener (see explanation here: https://web.dev/uses-passive-event-listeners/?utm_source=lighthouse&utm_medium=devtools) commit b1d7fabd0d024cca5e19ce937df5733b4771da47 Author: Martin Date: Tue Sep 22 10:38:38 2020 +0200 fix: bump Analytics to v11.0.5 and DV plugin to latest (#1097) commit 0a41693007c960d48c1aa4508d723982f6d1b582 Author: @dhis2-bot Date: Tue Sep 22 01:40:48 2020 +0200 fix(translations): sync translations from transifex (master) Automatically merged. commit c7ad13fc4bc8f1275088914da8ea0d9a94aeaf04 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon Sep 21 17:27:25 2020 +0000 chore(deps): bump @dhis2/app-runtime from 2.2.2 to 2.3.0 (#1090) commit 0b8606f67f9111b519e58567ad300665a86d46de Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon Sep 21 17:19:15 2020 +0000 chore(deps): bump @dhis2/d2-ui-rich-text from 7.0.7 to 7.0.8 (#1086) commit 95b2de6fabaf9184c466ceb371687dbd1669d504 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon Sep 21 17:10:14 2020 +0000 chore(deps): bump @dhis2/ui from 5.5.6 to 5.6.1 (#1087) commit b80d100e2650be95fe0c90d948133399f92d8e43 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon Sep 21 17:01:04 2020 +0000 chore(deps): bump @dhis2/d2-ui-translation-dialog from 7.0.7 to 7.0.8 (#1089) commit ea41e007c23b08d87d23a055b4e3c44f8b2f540f Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon Sep 21 16:52:49 2020 +0000 chore(deps): bump @dhis2/d2-ui-mentions-wrapper from 7.0.7 to 7.0.8 (#1085) commit 147000ebfdd46ab7aad7f677f47c5eb2cfad1085 Author: Jen Jones Arnesen Date: Mon Sep 21 16:20:00 2020 +0200 fix: unmount map when switching dashboard mode or changing active type [DHIS2-9558] (#1083) * fix: call unmount when Plugin unmounts * fix: unmount already called when switching vis commit f573db0e55931b413cff425b71687fcd75bfd2e3 Author: Edoardo Sabadelli Date: Mon Sep 21 10:25:47 2020 +0200 fix: filter bar position (DHIS2-9453) (#1073) * fix: filter bar position (DHIS2-9453) The calculation of the position of the filter bar was based on the height of the control bar. After the change for the scrollbar, the filter bar was positioned lower than where it should have. Removing the height of the control bar from the top position of the filter bar puts it back in the right place. * chore: explain the FilterBar top position value Co-authored-by: Jan Henrik Øverland commit 491d59202653f02bc14fa14fccab44c6e4764c73 Author: @dhis2-bot Date: Sun Sep 20 01:40:45 2020 +0200 fix(translations): sync translations from transifex (master) Automatically merged. commit 7a03b07572194a7d91a9f341e559efb7f298bc58 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 16 05:25:45 2020 +0000 chore(deps): bump @dhis2/ui from 5.5.5 to 5.5.6 (#1072) commit 96f50f2de5442dc25f79ccfeb9894ef16b7fb7bc Author: Jen Jones Arnesen Date: Tue Sep 15 14:37:06 2020 +0200 fix: use hooks to exert finer control on setting dashboard [DHIS2-9508] (#1067) Redux actions were being executed multiple times unnecessarily because of changes in props that had nothing to do with whether the dashboard needed to be set. Implementation is a switch to using useEffect rather than class componentDidMount and componentDidUpdate. Additional change includes moving print constants to a single file commit a0a7365f520f8ad5d743e4ba8afef0eedbd447f7 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon Sep 14 17:07:44 2020 +0000 chore(deps): bump @dhis2/analytics from 10.0.3 to 10.0.5 (#1070) commit b640761072fcb09bb6b45cfdb6e671b41bd2033b Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon Sep 14 16:59:21 2020 +0000 chore(deps-dev): bump @dhis2/cli-app-scripts from 5.1.0 to 5.2.0 (#1068) commit 7badec8a0c3d1f0e8d2299d60c1571d9ced78e90 Author: @dhis2-bot Date: Thu Sep 10 01:40:35 2020 +0200 fix(translations): sync translations from transifex (master) Automatically merged. commit d6e27e920e0b798537c075c1f38c9f00dcecbfe4 Author: Jen Jones Arnesen Date: Wed Sep 9 09:12:49 2020 +0200 fix: remove unhelpful warning (#1064) commit e236a1da34c7ba7fa19ba20c9a83f58ab7d3ed6d Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 9 04:36:17 2020 +0000 chore(deps): bump @dhis2/d2-ui-sharing-dialog from 7.0.5 to 7.0.7 (#1063) commit 0a39eb788379d5bc2b192cabd28bc3d75c5c2801 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 9 03:50:29 2020 +0000 chore(deps): bump @dhis2/d2-ui-mentions-wrapper from 7.0.5 to 7.0.7 (#1061) commit 5ec2d52414f04c9523ffbb45de9e6917b6046005 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 9 03:43:12 2020 +0000 chore(deps): bump @dhis2/d2-ui-rich-text from 7.0.5 to 7.0.7 (#1062) commit f7519d799cb292584ecae09993e658b8b1421265 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 9 03:35:26 2020 +0000 chore(deps): bump @dhis2/d2-ui-translation-dialog from 7.0.5 to 7.0.7 (#1060) commit 6187c11d81b8f13d2cdeee9852b81136ca38d3e4 Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 9 03:28:05 2020 +0000 chore(deps): bump @dhis2/ui from 5.5.4 to 5.5.5 (#1059) commit d5b7e03c592eb25408805879db4f7dc08852de3a Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed Sep 9 03:19:35 2020 +0000 chore(deps): bump @dhis2/d2-ui-core from 7.0.5 to 7.0.7 (#1058) commit 6a2bb230860366b1d050b0ab28e3d1559be9adfe Author: @dhis2-bot Date: Wed Sep 9 01:40:33 2020 +0200 fix(translations): sync translations from transifex (master) Automatically merged. --- i18n/ar.po | 28 +- i18n/ar_IQ.po | 28 +- i18n/es.po | 140 +++++----- i18n/fr.po | 28 +- i18n/id.po | 28 +- i18n/lo.po | 28 +- i18n/nb.po | 66 ++--- i18n/prs.po | 28 +- i18n/ps.po | 28 +- i18n/pt.po | 28 +- i18n/ru.po | 28 +- i18n/sv.po | 28 +- i18n/uk.po | 28 +- i18n/ur.po | 28 +- i18n/vi.po | 28 +- i18n/zh.po | 34 +-- i18n/zh_CN.po | 28 +- package.json | 20 +- public/i18n/i18n_module_es.properties | 12 +- public/i18n/i18n_module_uz_Cyrl.properties | 28 ++ src/actions/printDashboard.js | 2 +- src/actions/selected.js | 12 +- src/components/Dashboard/Dashboard.js | 143 +++++----- src/components/Dashboard/PrintActionsBar.js | 2 +- src/components/Dashboard/PrintDashboard.js | 24 +- src/components/Dashboard/PrintInfo.js | 2 +- .../Dashboard/PrintLayoutDashboard.js | 10 +- src/components/FilterBar/FilterBar.js | 11 +- .../ItemHeader/styles/ItemHeader.module.css | 7 +- .../Item/PrintTitlePageItem/Item.js | 27 +- .../Item/ProgressiveLoadingContainer.js | 33 +-- .../Item/VisualizationItem/DefaultPlugin.js | 13 +- src/components/Item/VisualizationItem/Item.js | 9 +- src/components/ItemFilter/FilterDialog.js | 147 ++++++---- src/components/ItemFilter/FilterSelector.js | 68 +---- src/components/ItemGrid/PrintItemGrid.js | 27 +- .../ItemGrid/PrintLayoutItemGrid.js | 13 +- src/components/ItemGrid/gridUtil.js | 21 +- src/components/TitleBar/ViewTitleBar.js | 11 +- src/modules/printUtils.js | 7 - src/reducers/dashboards.js | 2 + src/reducers/itemFilters.js | 2 - src/reducers/printDashboard.js | 6 + yarn.lock | 257 ++++++++---------- 44 files changed, 800 insertions(+), 748 deletions(-) create mode 100644 public/i18n/i18n_module_uz_Cyrl.properties diff --git a/i18n/ar.po b/i18n/ar.po index 47fb4dbcc..1bc1e33fe 100644 --- a/i18n/ar.po +++ b/i18n/ar.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: Viktor Varland , 2020\n" "Language-Team: Arabic (https://www.transifex.com/hisp-uio/teams/100509/ar/)\n" @@ -81,28 +81,27 @@ msgstr "" msgid "Print" msgstr "طباعة" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -120,6 +119,9 @@ msgstr "إزالة" msgid "Delete item" msgstr "حذف العنصر" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "الرسائل" diff --git a/i18n/ar_IQ.po b/i18n/ar_IQ.po index 9bd172dec..9e8bf5129 100644 --- a/i18n/ar_IQ.po +++ b/i18n/ar_IQ.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: KRG HIS , 2020\n" "Language-Team: Arabic (Iraq) (https://www.transifex.com/hisp-uio/teams/100509/ar_IQ/)\n" @@ -79,28 +79,27 @@ msgstr "" msgid "Print" msgstr "" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -118,6 +117,9 @@ msgstr "إزالة" msgid "Delete item" msgstr "حذف العنصر" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "الرسائل" diff --git a/i18n/es.po b/i18n/es.po index ea9ee48f5..e0f026189 100644 --- a/i18n/es.po +++ b/i18n/es.po @@ -3,13 +3,15 @@ # William Aviles , 2020 # phil_dhis2, 2020 # Viktor Varland , 2020 +# Gabriela Rodriguez , 2020 +# Sergio Valenzuela , 2020 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" -"Last-Translator: Viktor Varland , 2020\n" +"Last-Translator: Sergio Valenzuela , 2020\n" "Language-Team: Spanish (https://www.transifex.com/hisp-uio/teams/100509/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "Untitled dashboard" -msgstr "" +msgstr "Tablero sin nombre" msgid "Cancel" msgstr "Cancelar" @@ -27,34 +29,37 @@ msgid "Delete" msgstr "Borrar" msgid "Delete dashboard" -msgstr "" +msgstr "Borrar tablero" msgid "" "Deleting dashboard \"{{ dashboardName }}\" will remove it for all users. " "This action cannot be undone. Are you sure you want to permanently delete " "this dashboard?" msgstr "" +"Borrando tablero \"{{ dashboardName }}\" para todos los usuarios. Esta " +"acción será permanente. Está seguro de que desea continuar eliminando " +"permanentemente este tablero?" msgid "Exit Print preview" -msgstr "" +msgstr "Salir de la vista previa" msgid "Print preview" -msgstr "" +msgstr "Vista previa" msgid "Save changes" -msgstr "" +msgstr "Guardar cambios" msgid "Translate" msgstr "Traducir" msgid "Exit without saving" -msgstr "" +msgstr "Salir sin guardar" msgid "Go to dashboards" -msgstr "" +msgstr "Ir a los tableros" msgid "Search for a dashboard" -msgstr "" +msgstr "Buscar un tablero" msgid "Show more" msgstr "Mostrar más" @@ -64,147 +69,156 @@ msgstr "Mostrar menos" msgid "No dashboards found. Use the + button to create a new dashboard." msgstr "" +"No se han encontrado tableros. Use el botón + para crear un nuevo tablero" msgid "Requested dashboard not found" -msgstr "" +msgstr "No se ha encontrado el tablero buscado" msgid "No access" msgstr "Sin acceso" msgid "Exit print preview" -msgstr "" +msgstr "Salir de vista previa" msgid "Print" msgstr "Imprimir" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." -msgstr "" +msgid "dashboard layout" +msgstr "Diseño de tablero" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." -msgstr "" +msgid "one item per page" +msgstr "Un elemento por página" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." -msgstr "" +msgid "Print Preview" +msgstr "Impresión de vista previa" -msgid "dashboard layout" -msgstr "" +msgid "For best print results" +msgstr "Para mejores resultados de impresión" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" +msgstr "Use los navegadores Chrome o Edge" + +msgid "Wait for all dashboard items to load before printing" msgstr "" +"Espere a que se carguen todos los elementos del tablero antes de imprimir" -msgid "Print Preview" +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" +"Use un papel de tamaño A4 y los valores de los márgenes por defecto en el " +"cuadro de impresión" msgid "{{count}} selected" msgid_plural "{{count}} selected" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "{{count}} seleccionado" +msgstr[1] "{{count}} seleccionados" msgid "Remove" msgstr "Eliminar" msgid "Delete item" +msgstr "Borrar elemento" + +msgid "This item has been shortened to fit on one page" msgstr "" +"Este elemento ha sido redimensionado para que quepa en una sola página" msgid "Messages" msgstr "Mensajes" msgid "See all messages" -msgstr "" +msgstr "Ver todos los mensajes" msgid "Item type \"{{type}}\" not supported" -msgstr "" +msgstr "Tipo de objeto \"{{type}}\" no válido" msgid "Filters applied" -msgstr "" +msgstr "Filtros aplicados" msgid "Spacer" -msgstr "" +msgstr "Tabulador" msgid "" "Use a spacer to create empty vertical space between other dashboard items." msgstr "" +"Use el tabulador para crear un espacio vertical vacío con otro objeto del " +"tablero." msgid "Text item" -msgstr "" +msgstr "Elemento de texto" msgid "Add text here" -msgstr "" +msgstr "Añada texto aquí" msgid "Unable to load the plugin for this item" -msgstr "" +msgstr "Incapaz de cargar el complemento para este elemento" msgid "There was a problem loading this dashboard item" -msgstr "" +msgstr "Ha habido un problema al cargar este elemento del tablero" msgid "No data to display" -msgstr "" +msgstr "Sin datos para mostrar" msgid "Hide interpretations and details" -msgstr "" +msgstr "Ocultar interpretaciones y detalles" msgid "Show interpretations and details" -msgstr "" +msgstr "Mostrar interpretaciones y detalles" msgid "View as Chart" -msgstr "" +msgstr "Ver como gráfico" msgid "View as Table" -msgstr "" +msgstr "Ver como tabla" msgid "View as Map" -msgstr "" +msgstr "Ver como mapa" msgid "Open in {{appName}} app" -msgstr "" +msgstr "Abrir en la aplicación {{appName}}" msgid "Confirm" msgstr "Confirmar" msgid "Add filter" -msgstr "" +msgstr "Añadir filtro" msgid "There are no items on this dashboard" -msgstr "" +msgstr "No hay objetos en este tablero" msgid "Show fewer" -msgstr "" +msgstr "Mostrar menos" msgid "Insert" msgstr "Insertar" msgid "Search for items to add to this dashboard" -msgstr "" +msgstr "Buscar objetos para añadir en este tablero" msgid "Additional items" -msgstr "" +msgstr "Objetos adicionales" msgid "Text box" -msgstr "" +msgstr "Caja de texto" msgid "Dashboard title" -msgstr "" +msgstr "Título del tablero" msgid "Dashboard description" -msgstr "" +msgstr "Descripción del tablero" msgid "Hide description" -msgstr "" +msgstr "Ocultar la descripción" msgid "Show description" -msgstr "" +msgstr "Mostrar la descripción" msgid "Unstar dashboard" -msgstr "" +msgstr "Desmarcar tablero" msgid "Star dashboard" -msgstr "" +msgstr "Marcar tablero" msgid "Edit" msgstr "Editar" @@ -216,16 +230,16 @@ msgid "More" msgstr "Más" msgid "Dashboard layout" -msgstr "" +msgstr "Diseño del tablero" msgid "One item per page" -msgstr "" +msgstr "Un objeto por página" msgid "No description" msgstr "Sin descripción" msgid "Visualizations" -msgstr "" +msgstr "Visualizaciones" msgid "Pivot tables" msgstr "Tablas dinámicas" @@ -237,10 +251,10 @@ msgid "Maps" msgstr "Mapas" msgid "Event reports" -msgstr "" +msgstr "Herramienta para tablas con información individual" msgid "Event charts" -msgstr "" +msgstr "Herramienta para gráficos con información individual" msgid "Apps" msgstr "Aplicaciones" @@ -249,7 +263,7 @@ msgid "Reports" msgstr "Informes" msgid "Resources" -msgstr "" +msgstr "Recursos" msgid "Users" msgstr "Usuarios" diff --git a/i18n/fr.po b/i18n/fr.po index 02a01d847..ac45d5d25 100644 --- a/i18n/fr.po +++ b/i18n/fr.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: Viktor Varland , 2020\n" "Language-Team: French (https://www.transifex.com/hisp-uio/teams/100509/fr/)\n" @@ -85,28 +85,27 @@ msgstr "" msgid "Print" msgstr "Imprimer" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -120,6 +119,9 @@ msgstr "Supprimer" msgid "Delete item" msgstr "Supprimer l'item" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "Messages" diff --git a/i18n/id.po b/i18n/id.po index 2808013c8..fa5b96a57 100644 --- a/i18n/id.po +++ b/i18n/id.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: Viktor Varland , 2020\n" "Language-Team: Indonesian (https://www.transifex.com/hisp-uio/teams/100509/id/)\n" @@ -81,28 +81,27 @@ msgstr "" msgid "Print" msgstr "Cetak" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -115,6 +114,9 @@ msgstr "Hapus" msgid "Delete item" msgstr "" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "Pesan" diff --git a/i18n/lo.po b/i18n/lo.po index 44b49ff90..b7769206e 100644 --- a/i18n/lo.po +++ b/i18n/lo.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: Viktor Varland , 2020\n" "Language-Team: Lao (https://www.transifex.com/hisp-uio/teams/100509/lo/)\n" @@ -76,28 +76,27 @@ msgstr "" msgid "Print" msgstr "ພີມອອກ" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -110,6 +109,9 @@ msgstr "ລົບອອກ" msgid "Delete item" msgstr "" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "ຂໍ້ຄວາມ" diff --git a/i18n/nb.po b/i18n/nb.po index ba31bf43d..24b38b671 100644 --- a/i18n/nb.po +++ b/i18n/nb.po @@ -1,14 +1,14 @@ # # Translators: -# Karoline Tufte Lien , 2020 # Caroline Hesthagen Holen , 2020 +# Karoline Tufte Lien , 2020 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" -"Last-Translator: Caroline Hesthagen Holen , 2020\n" +"Last-Translator: Karoline Tufte Lien , 2020\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/hisp-uio/teams/100509/nb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +17,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "Untitled dashboard" -msgstr "" +msgstr "Dashbord uten navn" msgid "Cancel" msgstr "Avbryt" @@ -38,10 +38,10 @@ msgstr "" "dette dashbordet permanent?" msgid "Exit Print preview" -msgstr "" +msgstr "Avslutt forhåndsvisning av utskrift" msgid "Print preview" -msgstr "" +msgstr "Utskriftforhåndsvisning" msgid "Save changes" msgstr "Lagre endringer" @@ -74,34 +74,35 @@ msgid "No access" msgstr "Ingen tilgang" msgid "Exit print preview" -msgstr "" +msgstr "Avslutt forhåndsvisning av utskrift" msgid "Print" msgstr "Skriv ut" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." -msgstr "" - -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." -msgstr "" - -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." -msgstr "" - msgid "dashboard layout" -msgstr "" +msgstr "dashbordoppsett" msgid "one item per page" -msgstr "" +msgstr "ett element per side" msgid "Print Preview" +msgstr "Utskriftforhåndsvisning" + +msgid "For best print results" +msgstr "For best utskriftsresultat" + +msgid "Use Chrome or Edge web browser" +msgstr "BrukChrome eller Edge-nettleser" + +msgid "Wait for all dashboard items to load before printing" +msgstr "Vent til alle dashbordelementene har lastet før du skriver ut" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" +"Bruk A4 liggende papirstørrelse og standard marginnstillinger i nettleserens" +" utskriftsdialog" msgid "{{count}} selected" msgid_plural "{{count}} selected" @@ -114,6 +115,9 @@ msgstr "Fjern" msgid "Delete item" msgstr "Slett element" +msgid "This item has been shortened to fit on one page" +msgstr "Dette elementet har blitt forkortet for å passe på én side" + msgid "Messages" msgstr "Meldinger" @@ -124,7 +128,7 @@ msgid "Item type \"{{type}}\" not supported" msgstr "Elementtypen \"{{type}}\" støttes ikke" msgid "Filters applied" -msgstr "" +msgstr "Filtre brukt" msgid "Spacer" msgstr "Mellomrom" @@ -199,16 +203,16 @@ msgid "Dashboard description" msgstr "Beskrivelse av dashbord" msgid "Hide description" -msgstr "" +msgstr "Skjul beskrivelse" msgid "Show description" -msgstr "" +msgstr "Vis beskrivelse" msgid "Unstar dashboard" -msgstr "" +msgstr "Fjern stjerne fra dashbordet" msgid "Star dashboard" -msgstr "" +msgstr "Merk dashbord med stjerne" msgid "Edit" msgstr "Rediger" @@ -220,10 +224,10 @@ msgid "More" msgstr "Mer" msgid "Dashboard layout" -msgstr "" +msgstr "Dashbordoppsett" msgid "One item per page" -msgstr "" +msgstr "Ett element per side" msgid "No description" msgstr "Ingen beskrivelse" diff --git a/i18n/prs.po b/i18n/prs.po index 80a82d156..00cb0f161 100644 --- a/i18n/prs.po +++ b/i18n/prs.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: phil_dhis2, 2020\n" "Language-Team: Persian (Afghanistan) (https://www.transifex.com/hisp-uio/teams/100509/fa_AF/)\n" @@ -75,28 +75,27 @@ msgstr "" msgid "Print" msgstr "چاپ" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -110,6 +109,9 @@ msgstr "حذف" msgid "Delete item" msgstr "" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "پیام ها" diff --git a/i18n/ps.po b/i18n/ps.po index aceb29991..5512a17ad 100644 --- a/i18n/ps.po +++ b/i18n/ps.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: Viktor Varland , 2020\n" "Language-Team: Pushto (https://www.transifex.com/hisp-uio/teams/100509/ps/)\n" @@ -76,28 +76,27 @@ msgstr "" msgid "Print" msgstr "چاپول" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -111,6 +110,9 @@ msgstr "لرې کول" msgid "Delete item" msgstr "" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "پېغامونه" diff --git a/i18n/pt.po b/i18n/pt.po index 8458918a5..8ab02c1b7 100644 --- a/i18n/pt.po +++ b/i18n/pt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: Viktor Varland , 2020\n" "Language-Team: Portuguese (https://www.transifex.com/hisp-uio/teams/100509/pt/)\n" @@ -81,28 +81,27 @@ msgstr "" msgid "Print" msgstr "Imprimir" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -116,6 +115,9 @@ msgstr "Remover" msgid "Delete item" msgstr "Apagar item" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "Mensagens" diff --git a/i18n/ru.po b/i18n/ru.po index 1ca4241c1..22ea04ddb 100644 --- a/i18n/ru.po +++ b/i18n/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: phil_dhis2, 2020\n" "Language-Team: Russian (https://www.transifex.com/hisp-uio/teams/100509/ru/)\n" @@ -78,28 +78,27 @@ msgstr "" msgid "Print" msgstr "Печать" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -115,6 +114,9 @@ msgstr "Удалить" msgid "Delete item" msgstr "" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "Сообщения" diff --git a/i18n/sv.po b/i18n/sv.po index 41e3103f8..715bb9582 100644 --- a/i18n/sv.po +++ b/i18n/sv.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: phil_dhis2, 2019\n" "Language-Team: Swedish (https://www.transifex.com/hisp-uio/teams/100509/sv/)\n" @@ -76,28 +76,27 @@ msgstr "" msgid "Print" msgstr "" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -111,6 +110,9 @@ msgstr "Avlägsna" msgid "Delete item" msgstr "" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "Meddelanden" diff --git a/i18n/uk.po b/i18n/uk.po index 76ec12762..f47ff9e7c 100644 --- a/i18n/uk.po +++ b/i18n/uk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: Viktor Varland , 2020\n" "Language-Team: Ukrainian (https://www.transifex.com/hisp-uio/teams/100509/uk/)\n" @@ -76,28 +76,27 @@ msgstr "" msgid "Print" msgstr "Друк" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -113,6 +112,9 @@ msgstr "Прибрати" msgid "Delete item" msgstr "" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "Повідомлення" diff --git a/i18n/ur.po b/i18n/ur.po index e63fdf442..a1d9a4295 100644 --- a/i18n/ur.po +++ b/i18n/ur.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: Viktor Varland , 2020\n" "Language-Team: Urdu (https://www.transifex.com/hisp-uio/teams/100509/ur/)\n" @@ -75,28 +75,27 @@ msgstr "" msgid "Print" msgstr "پرنٹ کریں" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -110,6 +109,9 @@ msgstr "حذف" msgid "Delete item" msgstr "" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "پیغامات" diff --git a/i18n/vi.po b/i18n/vi.po index 10880c949..0652bd145 100644 --- a/i18n/vi.po +++ b/i18n/vi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: Viktor Varland , 2020\n" "Language-Team: Vietnamese (https://www.transifex.com/hisp-uio/teams/100509/vi/)\n" @@ -78,28 +78,27 @@ msgstr "" msgid "Print" msgstr "In" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -112,6 +111,9 @@ msgstr "Tháo ra" msgid "Delete item" msgstr "Xóa mục" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "Hộp thư" diff --git a/i18n/zh.po b/i18n/zh.po index 13126ac69..2e7da0ab4 100644 --- a/i18n/zh.po +++ b/i18n/zh.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: easylin , 2020\n" "Language-Team: Chinese (https://www.transifex.com/hisp-uio/teams/100509/zh/)\n" @@ -78,21 +78,6 @@ msgstr "退出打印预览" msgid "Print" msgstr "打印" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." -msgstr "以仪表板布局预览将被打印" - -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." -msgstr "以下页面是每个仪表板项目如何在单独页面上打印的预览。" - -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." -msgstr "使用默认打印机设置可获得最佳效果,并在打印之前检查所有仪表板项目是否已完成加载。此文本将不会打印。" - msgid "dashboard layout" msgstr "仪表板布局" @@ -102,6 +87,20 @@ msgstr "每页一项" msgid "Print Preview" msgstr "打印预览" +msgid "For best print results" +msgstr "以获得最佳打印效果" + +msgid "Use Chrome or Edge web browser" +msgstr "使用Chrome或Edge网络浏览器" + +msgid "Wait for all dashboard items to load before printing" +msgstr "等待所有仪表板项目加载后再打印" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" +msgstr "在浏览器的“打印”对话框中使用A4横向纸张尺寸和默认边距设置" + msgid "{{count}} selected" msgid_plural "{{count}} selected" msgstr[0] "{{count}} 个被选择" @@ -112,6 +111,9 @@ msgstr "移除" msgid "Delete item" msgstr "删除条目" +msgid "This item has been shortened to fit on one page" +msgstr "此项已缩短为适合一页" + msgid "Messages" msgstr "消息" diff --git a/i18n/zh_CN.po b/i18n/zh_CN.po index 726087860..ee782f417 100644 --- a/i18n/zh_CN.po +++ b/i18n/zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2020-08-31T08:37:42.542Z\n" +"POT-Creation-Date: 2020-09-08T17:54:39.674Z\n" "PO-Revision-Date: 2019-06-25 12:37+0000\n" "Last-Translator: 晓东 林 <13981924470@126.com>, 2020\n" "Language-Team: Chinese (China) (https://www.transifex.com/hisp-uio/teams/100509/zh_CN/)\n" @@ -76,28 +76,27 @@ msgstr "" msgid "Print" msgstr "打印" -msgid "" -"The pages below are a preview of how the dashboard layout will be printed." +msgid "dashboard layout" msgstr "" -msgid "" -"The pages below are a preview of how each dashboard item will be printed on " -"a separate page." +msgid "one item per page" msgstr "" -msgid "" -"Use the default printer settings for best results and check that all " -"dashboard items have finished loading before printing. This text will not be" -" printed." +msgid "Print Preview" msgstr "" -msgid "dashboard layout" +msgid "For best print results" msgstr "" -msgid "one item per page" +msgid "Use Chrome or Edge web browser" msgstr "" -msgid "Print Preview" +msgid "Wait for all dashboard items to load before printing" +msgstr "" + +msgid "" +"Use A4 landscape paper size and default margin settings in the browser print" +" dialog" msgstr "" msgid "{{count}} selected" @@ -110,6 +109,9 @@ msgstr "移除" msgid "Delete item" msgstr "" +msgid "This item has been shortened to fit on one page" +msgstr "" + msgid "Messages" msgstr "消息" diff --git a/package.json b/package.json index 778a7fe54..ef8fe1403 100644 --- a/package.json +++ b/package.json @@ -5,18 +5,18 @@ "private": true, "license": "BSD-3-Clause", "dependencies": { - "@dhis2/analytics": "^10.0.3", - "@dhis2/app-runtime": "^2.2.2", + "@dhis2/analytics": "^11.0.7", + "@dhis2/app-runtime": "^2.3.0", "@dhis2/app-runtime-adapter-d2": "^1.0.1", "@dhis2/d2-i18n": "^1.0.6", - "@dhis2/d2-ui-core": "^7.0.3", - "@dhis2/d2-ui-interpretations": "^7.0.7", - "@dhis2/d2-ui-mentions-wrapper": "^7.0.3", - "@dhis2/d2-ui-rich-text": "^7.0.4", - "@dhis2/d2-ui-sharing-dialog": "^7.0.5", - "@dhis2/d2-ui-translation-dialog": "^7.0.4", - "@dhis2/data-visualizer-plugin": "^35.12.10", - "@dhis2/ui": "^5.5.4", + "@dhis2/d2-ui-core": "^7.0.7", + "@dhis2/d2-ui-interpretations": "^7.0.8", + "@dhis2/d2-ui-mentions-wrapper": "^7.0.8", + "@dhis2/d2-ui-rich-text": "^7.0.8", + "@dhis2/d2-ui-sharing-dialog": "^7.0.8", + "@dhis2/d2-ui-translation-dialog": "^7.0.8", + "@dhis2/data-visualizer-plugin": "^35.12.24", + "@dhis2/ui": "^5.6.1", "@material-ui/core": "^3.9.2", "@material-ui/icons": "^4.9.1", "classnames": "^2.2.6", diff --git a/public/i18n/i18n_module_es.properties b/public/i18n/i18n_module_es.properties index a340bc953..97935d154 100644 --- a/public/i18n/i18n_module_es.properties +++ b/public/i18n/i18n_module_es.properties @@ -2,19 +2,19 @@ close=Cerrar created_by=Creado por share=Configuraci\u00f3n de uso compartido who_has_access=Quien tiene acceso -can_capture_and_view=Can capture and view -can_edit_and_view=Puede editar y ver +can_capture_and_view=Puede guardar y visualizar +can_edit_and_view=Puede editar y visualizar can_view_only=Solo lectura enter_names=Ingresar nombres external_access=Acceso externo metadata=Metadatos add_users_and_user_groups=A\u00f1adir usuarios y grupos de usuarios -anyone_can_find_and_view=Anyone can find and view -anyone_can_view_without_a_login=Anyone can view without a login +anyone_can_find_and_view=Cualquiera puede visualizar +anyone_can_view_without_a_login=Cualquiera puede visualizar sin necesidad de cuenta anyone_can_find_view_and_edit=Cualquiera puede encontrar, ver y editar no_access=Sin acceso -no_author=No author -no_manage_access=You do not have manage access to this object. +no_author=Sin autor +no_manage_access=No tienes permiso para manejar este objeto public_access=Acceso p\u00fablico translate=Traducir diff --git a/public/i18n/i18n_module_uz_Cyrl.properties b/public/i18n/i18n_module_uz_Cyrl.properties new file mode 100644 index 000000000..4b3dc9a9d --- /dev/null +++ b/public/i18n/i18n_module_uz_Cyrl.properties @@ -0,0 +1,28 @@ +close=\u0401\u043f\u0438\u049b +created_by=\u0422\u043e\u043c\u043e\u043d\u0438\u0434\u0430\u043d \u044f\u0440\u0430\u0442\u0438\u043b\u0433\u0430\u043d +share=\u0421\u043e\u0437\u043b\u0430\u043c\u0430\u043b\u0430\u0440 \u0431\u0438\u043b\u0430\u043d \u0443\u043b\u0430\u0448\u0438\u0448 +who_has_access=\u041a\u0438\u043c\u0434\u0430 \u043a\u0438\u0440\u0438\u0448 \u04b3\u0443\u049b\u0443\u049b\u0438 \u043c\u0430\u0432\u0436\u0443\u0434 +can_capture_and_view=Can capture and view +can_edit_and_view=\u0422\u0430\u04b3\u0440\u0438\u0440\u043b\u0430\u0448 \u0432\u0430 \u043a\u045e\u0440\u0438\u0448 \u043c\u0443\u043c\u043a\u0438\u043d +can_view_only=\u0424\u0430\u049b\u0430\u0442 \u043a\u045e\u0440\u0438\u0431 \u0447\u0438\u049b\u0438\u0448 \u043c\u0443\u043c\u043a\u0438\u043d +enter_names=\u0418\u0441\u043c\u043b\u0430\u0440\u043d\u0438 \u043a\u0438\u0440\u0438\u0442\u0438\u043d\u0433 +external_access=External access +metadata=Metadata +add_users_and_user_groups=\u0424\u043e\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0432\u0447\u0438 \u0432\u0430 \u0444\u043e\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0432\u0447\u0438 \u0433\u0443\u0440\u0443\u04b3\u0438\u043d\u0438 \u049b\u045e\u0448\u0438\u0448 +anyone_can_find_and_view=Anyone can find and view +anyone_can_view_without_a_login=Anyone can view without a login +anyone_can_find_view_and_edit=Anyone can find, view and edit +no_access=\u041a\u0438\u0440\u0438\u0448 \u0442\u0430\u044a\u049b\u0438\u049b\u043b\u0430\u043d\u0433\u0430\u043d +no_author=No author +no_manage_access=You do not have manage access to this object. +public_access=\u041e\u043c\u043c\u0430\u0432\u0438\u0439 \u0444\u043e\u0439\u0434\u0430\u043b\u0430\u043d\u0438\u0448 + +translate=Translate +translation_dialog_title=Translate +select_locale=Select locale +save=\u0421\u0430\u049b\u043b\u0430\u0448 +cancel=\u0411\u0435\u043a\u043e\u0440 \u049b\u0438\u043b\u0438\u0448 +select_a_locale_to_enter_translations_for_that_language=Select a locale to enter translations for +name=\u0418\u0441\u043c\u0438 +short_name=Short name +description=\u0422\u0430\u0432\u0441\u0438\u0444 diff --git a/src/actions/printDashboard.js b/src/actions/printDashboard.js index 06fae0cb9..f08c336c8 100644 --- a/src/actions/printDashboard.js +++ b/src/actions/printDashboard.js @@ -52,7 +52,7 @@ export const acAddPrintDashboardItem = item => { const yPos = item.yPos || 0 shape = getPageBreakItemShape(yPos, item.isStatic) } else { - shape = getPrintTitlePageItemShape() + shape = getPrintTitlePageItemShape(item.isOneItemPerPage) } return { diff --git a/src/actions/selected.js b/src/actions/selected.js index 818ab5177..c2da6de6b 100644 --- a/src/actions/selected.js +++ b/src/actions/selected.js @@ -1,4 +1,8 @@ -import { getCustomDashboards, sGetDashboardById } from '../reducers/dashboards' +import { + getCustomDashboards, + sGetDashboardById, + EMPTY_DASHBOARD, +} from '../reducers/dashboards' import { SET_SELECTED_ID, SET_SELECTED_ISLOADING, @@ -33,7 +37,6 @@ import { EVENT_CHART, MESSAGES, } from '../modules/itemTypes' -import { orObject } from '../modules/util' // actions @@ -57,8 +60,9 @@ export const tSetSelectedDashboardById = id => async (dispatch, getState) => { dispatch(acSetSelectedIsLoading(true)) const snackbarTimeout = setTimeout(() => { - const dashboardName = orObject(sGetDashboardById(getState(), id)) - .displayName + const dashboardName = ( + sGetDashboardById(getState(), id) || EMPTY_DASHBOARD + ).displayName if (sGetSelectedIsLoading(getState()) && dashboardName) { loadingDashboardMsg.name = dashboardName diff --git a/src/components/Dashboard/Dashboard.js b/src/components/Dashboard/Dashboard.js index b78c1b44a..0970e0b3e 100644 --- a/src/components/Dashboard/Dashboard.js +++ b/src/components/Dashboard/Dashboard.js @@ -1,4 +1,4 @@ -import React, { Component } from 'react' +import React, { useEffect } from 'react' import { connect } from 'react-redux' import PropTypes from 'prop-types' import isEmpty from 'lodash/isEmpty' @@ -34,6 +34,15 @@ import { isPrintMode, } from './dashboardModes' +const setHeaderbarVisibility = mode => { + const header = document.getElementsByTagName('header')[0] + if (isPrintMode(mode)) { + header.classList.add('hidden') + } else { + header.classList.remove('hidden') + } +} + const dashboardMap = { [VIEW]: , [EDIT]: , @@ -42,101 +51,97 @@ const dashboardMap = { [PRINT_LAYOUT]: , } -export class Dashboard extends Component { - setDashboard = () => { - if (this.props.dashboardsLoaded) { - const id = this.props.match.params.dashboardId || null || null - - this.props.selectDashboard(id) +export const Dashboard = ({ + id, + mode, + dashboardsLoaded, + dashboardsIsEmpty, + routeId, + selectDashboard, + setWindowHeight, +}) => { + useEffect(() => { + setHeaderbarVisibility(mode) + }, [mode]) + + useEffect(() => { + if (dashboardsLoaded && !dashboardsIsEmpty) { + selectDashboard(routeId) + } + }, [dashboardsLoaded, dashboardsIsEmpty, routeId]) - this.setHeaderbarVisibility() + useEffect(() => { + const onResize = debounce( + () => setWindowHeight(window.innerHeight), + 300 + ) + window.addEventListener('resize', onResize) + return () => { + window.removeEventListener('resize', onResize) } + }, []) + + if (!dashboardsLoaded || id === null) { + return ( + + + + + + ) } - setHeaderbarVisibility = () => { - const header = document.getElementsByTagName('header')[0] - if (isPrintMode(this.props.mode)) { - header.classList.add('hidden') - } else { - header.classList.remove('hidden') - } + if (mode === NEW) { + return dashboardMap[mode] } - componentDidMount() { - window.onresize = debounce( - () => this.props.setWindowHeight(window.innerHeight), - 300 + if (dashboardsIsEmpty) { + return ( + <> + + + + ) - this.setDashboard() } - componentDidUpdate() { - this.setDashboard() + if (id === NON_EXISTING_DASHBOARD_ID) { + return ( + <> + + + + + ) } - render() { - const { id, mode, dashboardsLoaded, dashboardsIsEmpty } = this.props - - if (!dashboardsLoaded || id === null) { - return ( - - - - - - ) - } - - if (mode === NEW) { - return dashboardMap[mode] - } - - if (dashboardsIsEmpty) { - return ( - <> - - - - - ) - } - - if (id === NON_EXISTING_DASHBOARD_ID) { - return ( - <> - - - - - ) - } - - return dashboardMap[mode] - } + return dashboardMap[mode] } Dashboard.propTypes = { dashboardsIsEmpty: PropTypes.bool, dashboardsLoaded: PropTypes.bool, id: PropTypes.string, - match: PropTypes.object, + match: PropTypes.object, // provided by the react-router-dom mode: PropTypes.string, + routeId: PropTypes.string, selectDashboard: PropTypes.func, setWindowHeight: PropTypes.func, } -const mapStateToProps = state => { +const mapStateToProps = (state, ownProps) => { const dashboards = sGetAllDashboards(state) return { dashboardsIsEmpty: isEmpty(dashboards), dashboardsLoaded: !sDashboardsIsFetching(state), id: sGetSelectedId(state), + routeId: ownProps.match?.params?.dashboardId || null, } } diff --git a/src/components/Dashboard/PrintActionsBar.js b/src/components/Dashboard/PrintActionsBar.js index 81e015e53..3fb14ecc3 100644 --- a/src/components/Dashboard/PrintActionsBar.js +++ b/src/components/Dashboard/PrintActionsBar.js @@ -4,7 +4,7 @@ import i18n from '@dhis2/d2-i18n' import { Button } from '@dhis2/ui' import { Link } from 'react-router-dom' import LessHorizontalIcon from '../../icons/LessHorizontal' -import { a4LandscapeWidthPx } from '../../modules/printUtils' +import { a4LandscapeWidthPx } from '../ItemGrid/gridUtil' import classes from './styles/PrintActionsBar.module.css' diff --git a/src/components/Dashboard/PrintDashboard.js b/src/components/Dashboard/PrintDashboard.js index bf981f954..2ca0a675b 100644 --- a/src/components/Dashboard/PrintDashboard.js +++ b/src/components/Dashboard/PrintDashboard.js @@ -10,6 +10,7 @@ import { acSetPrintDashboard, acAddPrintDashboardItem, acRemovePrintDashboardItem, + acUpdatePrintDashboardItem, } from '../../actions/printDashboard' import { sGetSelectedId } from '../../reducers/selected' import { sGetWindowHeight } from '../../reducers/windowHeight' @@ -18,7 +19,11 @@ import { sGetDashboardItems, } from '../../reducers/dashboards' import { PAGEBREAK, PRINT_TITLE_PAGE, SPACER } from '../../modules/itemTypes' -import { a4LandscapeWidthPx } from '../../modules/printUtils' +import { + a4LandscapeWidthPx, + MAX_ITEM_GRID_HEIGHT_OIPP, + MAX_ITEM_GRID_WIDTH_OIPP, +} from '../ItemGrid/gridUtil' import { PRINT_ACTIONS_BAR_HEIGHT } from './PrintActionsBar' import classes from './styles/PrintDashboard.module.css' @@ -49,6 +54,16 @@ export class PrintDashboard extends Component { } }) + // Resize the items to the full page size + this.props.items.forEach(item => { + this.props.updateDashboardItem( + Object.assign({}, item, { + w: MAX_ITEM_GRID_WIDTH_OIPP, + h: MAX_ITEM_GRID_HEIGHT_OIPP, + }) + ) + }) + // insert page breaks into the document flow to create the "pages" // when previewing the print for ( @@ -63,7 +78,10 @@ export class PrintDashboard extends Component { }) } - this.props.addDashboardItem({ type: PRINT_TITLE_PAGE }) + this.props.addDashboardItem({ + type: PRINT_TITLE_PAGE, + isOneItemPerPage: true, + }) } } @@ -103,6 +121,7 @@ PrintDashboard.propTypes = { items: PropTypes.array, removeDashboardItem: PropTypes.func, setPrintDashboard: PropTypes.func, + updateDashboardItem: PropTypes.func, windowHeight: PropTypes.number, } @@ -122,4 +141,5 @@ export default connect(mapStateToProps, { setPrintDashboard: acSetPrintDashboard, addDashboardItem: acAddPrintDashboardItem, removeDashboardItem: acRemovePrintDashboardItem, + updateDashboardItem: acUpdatePrintDashboardItem, })(PrintDashboard) diff --git a/src/components/Dashboard/PrintInfo.js b/src/components/Dashboard/PrintInfo.js index f693913a4..ada6f8582 100644 --- a/src/components/Dashboard/PrintInfo.js +++ b/src/components/Dashboard/PrintInfo.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' import i18n from '@dhis2/d2-i18n' -import { a4LandscapeWidthPx } from '../../modules/printUtils' +import { a4LandscapeWidthPx } from '../ItemGrid/gridUtil' import classes from './styles/PrintInfo.module.css' diff --git a/src/components/Dashboard/PrintLayoutDashboard.js b/src/components/Dashboard/PrintLayoutDashboard.js index d5cfba726..3c89dcd42 100644 --- a/src/components/Dashboard/PrintLayoutDashboard.js +++ b/src/components/Dashboard/PrintLayoutDashboard.js @@ -23,10 +23,7 @@ import { sGetDashboardItems, } from '../../reducers/dashboards' import { PAGEBREAK, PRINT_TITLE_PAGE } from '../../modules/itemTypes' -import { - a4LandscapeWidthPx, - MAX_ITEM_GRID_HEIGHT, -} from '../../modules/printUtils' +import { a4LandscapeWidthPx, MAX_ITEM_GRID_HEIGHT } from '../ItemGrid/gridUtil' import { getControlBarHeight, HEADERBAR_HEIGHT, @@ -106,7 +103,10 @@ export class PrintLayoutDashboard extends Component { addPageBreaks(this.props) - this.props.addDashboardItem({ type: PRINT_TITLE_PAGE }) + this.props.addDashboardItem({ + type: PRINT_TITLE_PAGE, + isOneItemPerPage: false, + }) } } diff --git a/src/components/FilterBar/FilterBar.js b/src/components/FilterBar/FilterBar.js index 1466360d6..fb3ac84b7 100644 --- a/src/components/FilterBar/FilterBar.js +++ b/src/components/FilterBar/FilterBar.js @@ -5,8 +5,6 @@ import PropTypes from 'prop-types' import FilterBadge from './FilterBadge' import { sGetNamedItemFilters } from '../../reducers/itemFilters' -import { sGetControlBarUserRows } from '../../reducers/controlBar' -import { getControlBarHeight } from '../ControlBar/controlBarDimensions' import { acRemoveItemFilter } from '../../actions/itemFilters' import { acSetActiveModalDimension } from '../../actions/activeModalDimension' @@ -25,12 +23,11 @@ export class FilterBar extends Component { } render() { - const { filters, userRows } = this.props - - const top = getControlBarHeight(userRows) + 10 + const { filters } = this.props return filters.length ? ( -
+ // the 3 is calculated so that the FilterBar has the same vertical position as the TitleBar in relation to the ControlBar +
{filters.map(filter => ( ({ filters: sGetNamedItemFilters(state), - userRows: sGetControlBarUserRows(state), }) export default connect(mapStateToProps, { diff --git a/src/components/Item/ItemHeader/styles/ItemHeader.module.css b/src/components/Item/ItemHeader/styles/ItemHeader.module.css index 37d1719a4..9c58160e9 100644 --- a/src/components/Item/ItemHeader/styles/ItemHeader.module.css +++ b/src/components/Item/ItemHeader/styles/ItemHeader.module.css @@ -1,10 +1,6 @@ -.itemWrap { - padding: var(--spacers-dp8); -} - .itemHeaderWrap { display: flex; - margin: var(--spacers-dp4) var(--spacers-dp4) var(--spacers-dp8) + margin: var(--spacers-dp8) var(--spacers-dp4) var(--spacers-dp8) var(--spacers-dp8); } @@ -12,7 +8,6 @@ font-weight: 700; color: var(--colors-grey800); font-size: 14px; - line-height: 28px; padding: 0; margin: 0; align-self: center; diff --git a/src/components/Item/PrintTitlePageItem/Item.js b/src/components/Item/PrintTitlePageItem/Item.js index d29b1da67..cc3ad6bc3 100644 --- a/src/components/Item/PrintTitlePageItem/Item.js +++ b/src/components/Item/PrintTitlePageItem/Item.js @@ -3,14 +3,20 @@ import { connect } from 'react-redux' import PropTypes from 'prop-types' import i18n from '@dhis2/d2-i18n' -import { orObject } from '../../../modules/util' - import { sGetSelectedId, sGetSelectedShowDescription, } from '../../../reducers/selected' -import { sGetDashboardById } from '../../../reducers/dashboards' +import { + sGetDashboardById, + EMPTY_DASHBOARD, +} from '../../../reducers/dashboards' import { sGetNamedItemFilters } from '../../../reducers/itemFilters' +import { sGetIsEditing } from '../../../reducers/editDashboard' +import { + sGetPrintDashboardName, + sGetPrintDashboardDescription, +} from '../../../reducers/printDashboard' import classes from './styles/Item.module.css' @@ -63,12 +69,21 @@ PrintTitlePageItem.defaultProps = { const mapStateToProps = state => { const id = sGetSelectedId(state) - const dashboard = orObject(sGetDashboardById(state, id)) + const isEditMode = sGetIsEditing(state) + const viewDashboard = sGetDashboardById(state, id) || EMPTY_DASHBOARD + + const name = isEditMode + ? sGetPrintDashboardName(state) || i18n.t('Untitled dashboard') + : viewDashboard.displayName + + const description = isEditMode + ? sGetPrintDashboardDescription(state) + : viewDashboard.displayDescription return { - name: dashboard.displayName, + name, + description, itemFilters: sGetNamedItemFilters(state), - description: dashboard.displayDescription, showDescription: sGetSelectedShowDescription(state), } } diff --git a/src/components/Item/ProgressiveLoadingContainer.js b/src/components/Item/ProgressiveLoadingContainer.js index 60968d490..c018b48e2 100644 --- a/src/components/Item/ProgressiveLoadingContainer.js +++ b/src/components/Item/ProgressiveLoadingContainer.js @@ -24,14 +24,14 @@ class ProgressiveLoadingContainer extends Component { } containerRef = null shouldLoadHandler = null + handlerOptions = { passive: true } checkShouldLoad() { - const bufferPx = this.props.bufferFactor * window.innerHeight - if (!this.containerRef) { return } + const bufferPx = this.props.bufferFactor * window.innerHeight const rect = this.containerRef.getBoundingClientRect() if ( rect.bottom > -bufferPx && @@ -51,22 +51,23 @@ class ProgressiveLoadingContainer extends Component { this.props.debounceMs ) - const containers = [ - window, // this is probably unnecessary - ...document.getElementsByClassName('dashboard-wrapper'), - ] - containers.forEach(container => { - container.addEventListener('scroll', this.shouldLoadHandler) - }) + document + .getElementsByClassName('dashboard-wrapper')[0] + ?.addEventListener( + 'scroll', + this.shouldLoadHandler, + this.handlerOptions + ) } + removeHandler() { - const containers = [ - window, // this is probably unnecessary - ...document.getElementsByClassName('dashboard-wrapper'), - ] - containers.forEach(container => { - container.removeEventListener('scroll', this.shouldLoadHandler) - }) + document + .getElementsByClassName('dashboard-wrapper')[0] + ?.removeEventListener( + 'scroll', + this.shouldLoadHandler, + this.handlerOptions + ) } componentDidMount() { diff --git a/src/components/Item/VisualizationItem/DefaultPlugin.js b/src/components/Item/VisualizationItem/DefaultPlugin.js index 8415526e8..eb28df41c 100644 --- a/src/components/Item/VisualizationItem/DefaultPlugin.js +++ b/src/components/Item/VisualizationItem/DefaultPlugin.js @@ -95,6 +95,17 @@ class DefaultPlugin extends Component { this.reloadPlugin(prevProps) } + componentWillUnmount() { + if ( + pluginManager.pluginIsAvailable( + this.props.item, + this.props.visualization + ) + ) { + pluginManager.unmount(this.props.item, this.getActiveType()) + } + } + getActiveType = () => this.props.visualization.activeType || this.props.item.type @@ -121,11 +132,11 @@ DefaultPlugin.contextTypes = { DefaultPlugin.propTypes = { classes: PropTypes.object, - useActiveType: PropTypes.bool, item: PropTypes.object, itemFilters: PropTypes.object, options: PropTypes.object, style: PropTypes.object, + useActiveType: PropTypes.bool, visualization: PropTypes.object, } diff --git a/src/components/Item/VisualizationItem/Item.js b/src/components/Item/VisualizationItem/Item.js index 0a09f0c73..c0e374b0b 100644 --- a/src/components/Item/VisualizationItem/Item.js +++ b/src/components/Item/VisualizationItem/Item.js @@ -254,13 +254,8 @@ export class Item extends Component { } onSelectActiveType = type => { - if (type === this.getActiveType()) { - return - } - - pluginManager.unmount(this.props.item, this.getActiveType()) - - this.props.onSelectActiveType(this.props.visualization.id, type) + type !== this.getActiveType() && + this.props.onSelectActiveType(this.props.visualization.id, type) } getActiveType = () => diff --git a/src/components/ItemFilter/FilterDialog.js b/src/components/ItemFilter/FilterDialog.js index e5c030f2c..adadfe089 100644 --- a/src/components/ItemFilter/FilterDialog.js +++ b/src/components/ItemFilter/FilterDialog.js @@ -1,6 +1,7 @@ -import React, { Component } from 'react' +import React, { useState } from 'react' import PropTypes from 'prop-types' - +import { connect } from 'react-redux' +import i18n from '@dhis2/d2-i18n' import { Button, Modal, @@ -9,9 +10,6 @@ import { ModalActions, ButtonStrip, } from '@dhis2/ui' - -import i18n from '@dhis2/d2-i18n' - import { PeriodDimension, DynamicDimension, @@ -20,21 +18,71 @@ import { DIMENSION_ID_ORGUNIT, } from '@dhis2/analytics' -class FilterDialog extends Component { - onConfirm = id => () => this.props.onConfirm(id) +import { acAddItemFilter, acRemoveItemFilter } from '../../actions/itemFilters' +import { sGetItemFiltersRoot } from '../../reducers/itemFilters' + +const FilterDialog = ( + { + displayNameProperty, + dimension, + initiallySelectedItems, + addItemFilter, + removeItemFilter, + onClose, + }, + context +) => { + const [filters, setFilters] = useState(initiallySelectedItems) + + const onSelectItems = ({ dimensionId, items }) => { + setFilters({ [dimensionId]: items }) + } + + const onDeselectItems = ({ dimensionId, itemIdsToRemove }) => { + const oldList = filters[dimensionId] || [] + const newList = oldList.filter( + item => !itemIdsToRemove.includes(item.id) + ) + + setFilters({ ...filters, [dimensionId]: newList }) + } + + const onReorderItems = ({ dimensionId, itemIds }) => { + const oldList = filters[dimensionId] || [] + const reorderedList = itemIds.map(id => + oldList.find(item => item.id === id) + ) + + setFilters({ ...filters, [dimensionId]: reorderedList }) + } + + const saveFilter = () => { + const id = dimension.id + const filterItems = filters[id] + + if (filterItems && filterItems.length) { + addItemFilter({ + id, + value: [...filterItems], + }) + } else { + removeItemFilter(id) + } - renderDialogContent() { - const { displayNameProperty, dimension, selectedItems } = this.props - const dialogId = dimension.id + onClose(id) + } + const renderDialogContent = () => { const commonProps = { - d2: this.context.d2, - onSelect: this.props.onSelect, - onDeselect: this.props.onDeselect, - onReorder: this.props.onReorder, + d2: context.d2, + onSelect: onSelectItems, + onDeselect: onDeselectItems, + onReorder: onReorderItems, } - switch (dialogId) { + const selectedItems = filters[dimension.id] || [] + + switch (dimension.id) { case DIMENSION_ID_PERIOD: { return ( @@ -63,51 +111,46 @@ class FilterDialog extends Component { } } - render() { - const { dimension, onClose } = this.props - const dialogId = dimension.id - - return ( - <> - {dialogId && ( - - {dimension.name} - - {this.renderDialogContent()} - - - - - - - - - )} - - ) - } + return ( + <> + {dimension.id && ( + + {dimension.name} + {renderDialogContent()} + + + + + + + + )} + + ) } FilterDialog.propTypes = { + addItemFilter: PropTypes.func, dimension: PropTypes.object, displayNameProperty: PropTypes.string, - selectedItems: PropTypes.array, + initiallySelectedItems: PropTypes.object, + removeItemFilter: PropTypes.func, onClose: PropTypes.func, - onConfirm: PropTypes.func, - onDeselect: PropTypes.func, - onReorder: PropTypes.func, - onSelect: PropTypes.func, } FilterDialog.contextTypes = { d2: PropTypes.object, } -export default FilterDialog +const mapStateToProps = state => ({ + initiallySelectedItems: sGetItemFiltersRoot(state), +}) + +export default connect(mapStateToProps, { + addItemFilter: acAddItemFilter, + removeItemFilter: acRemoveItemFilter, +})(FilterDialog) diff --git a/src/components/ItemFilter/FilterSelector.js b/src/components/ItemFilter/FilterSelector.js index 8b5c9a159..ee8e9b87d 100644 --- a/src/components/ItemFilter/FilterSelector.js +++ b/src/components/ItemFilter/FilterSelector.js @@ -2,6 +2,7 @@ import React, { useState, useRef } from 'react' import PropTypes from 'prop-types' import { connect } from 'react-redux' import ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown' +import isEmpty from 'lodash/isEmpty' import i18n from '@dhis2/d2-i18n' import { DimensionsPanel } from '@dhis2/analytics' @@ -12,11 +13,7 @@ import FilterDialog from './FilterDialog' import { sGetSettingsDisplayNameProperty } from '../../reducers/settings' import { sGetActiveModalDimension } from '../../reducers/activeModalDimension' import { sGetDimensions } from '../../reducers/dimensions' -import { - sGetItemFiltersRoot, - sGetFiltersKeys, -} from '../../reducers/itemFilters' -import { acAddItemFilter, acRemoveItemFilter } from '../../actions/itemFilters' +import { sGetItemFiltersRoot } from '../../reducers/itemFilters' import { acClearActiveModalDimension, acSetActiveModalDimension, @@ -24,14 +21,11 @@ import { const FilterSelector = props => { const [showPopover, setShowPopover] = useState(false) - const [filters, setFilters] = useState(props.initiallySelectedItems) const ref = useRef(null) - const closePanel = () => setShowPopover(false) - const onCloseDialog = () => { - closePanel() + setShowPopover(false) props.clearActiveModalDimension() } @@ -42,45 +36,6 @@ const FilterSelector = props => { ) } - const onSelectItems = ({ dimensionId, items }) => { - setFilters({ ...filters, [dimensionId]: items }) - } - - const onDeselectItems = ({ dimensionId, itemIdsToRemove }) => { - const oldList = filters[dimensionId] || [] - const newList = oldList.filter( - item => !itemIdsToRemove.includes(item.id) - ) - - const list = newList.length ? newList : [] - - setFilters({ ...filters, [dimensionId]: list }) - } - - const onReorderItems = ({ dimensionId, itemIds }) => { - const oldList = filters[dimensionId] || [] - const reorderedList = itemIds.map(id => - oldList.find(item => item.id === id) - ) - - setFilters({ ...filters, [dimensionId]: reorderedList }) - } - - const saveFilter = id => { - const filterItems = filters[id] - - if (filterItems && filterItems.length) { - props.addItemFilter({ - id, - value: [...filterItems], - }) - } else { - props.removeItemFilter(id) - } - - onCloseDialog() - } - return ( <> @@ -91,7 +46,7 @@ const FilterSelector = props => { {showPopover && ( { style={{ width: '320px' }} dimensions={props.dimensions} onDimensionClick={selectDimension} - selectedIds={props.selectedDimensions} + selectedIds={Object.keys(props.initiallySelectedItems)} /> )} - {props.dimension ? ( + {!isEmpty(props.dimension) ? ( ) : null} @@ -125,24 +75,18 @@ const mapStateToProps = state => ({ dimension: sGetActiveModalDimension(state), dimensions: sGetDimensions(state), initiallySelectedItems: sGetItemFiltersRoot(state), - selectedDimensions: sGetFiltersKeys(state), }) FilterSelector.propTypes = { - addItemFilter: PropTypes.func, clearActiveModalDimension: PropTypes.func, dimension: PropTypes.object, dimensions: PropTypes.array, displayNameProperty: PropTypes.string, initiallySelectedItems: PropTypes.object, - removeItemFilter: PropTypes.func, - selectedDimensions: PropTypes.array, setActiveModalDimension: PropTypes.func, } export default connect(mapStateToProps, { clearActiveModalDimension: acClearActiveModalDimension, setActiveModalDimension: acSetActiveModalDimension, - addItemFilter: acAddItemFilter, - removeItemFilter: acRemoveItemFilter, })(FilterSelector) diff --git a/src/components/ItemGrid/PrintItemGrid.js b/src/components/ItemGrid/PrintItemGrid.js index 6a9578ac0..8d8472d0d 100644 --- a/src/components/ItemGrid/PrintItemGrid.js +++ b/src/components/ItemGrid/PrintItemGrid.js @@ -4,6 +4,7 @@ import PropTypes from 'prop-types' import i18n from '@dhis2/d2-i18n' import ReactGridLayout from 'react-grid-layout' import { Layer, CenteredContent, CircularLoader } from '@dhis2/ui' +import cx from 'classnames' import { Item } from '../Item/Item' import NoContentMessage from '../../widgets/NoContentMessage' @@ -21,34 +22,20 @@ import { MARGIN, getGridColumns, hasShape, + a4LandscapeWidthPx, } from './gridUtil' -import { a4LandscapeWidthPx } from '../../modules/printUtils' import { orArray } from '../../modules/util' -import { PAGEBREAK } from '../../modules/itemTypes' import 'react-grid-layout/css/styles.css' import './ItemGrid.css' export class PrintItemGrid extends Component { - getItemComponent = item => { - const itemClassNames = [item.type, 'print', 'oipp'].join(' ') - - // TODO: this mutates the redux store - item.w = 56 - - if (item.type === PAGEBREAK) { - item.h = 3 - } else { - item.h = 35 - } - - return ( -
- -
- ) - } + getItemComponent = item => ( +
+ +
+ ) getItemComponents = items => items.map(item => this.getItemComponent(item)) diff --git a/src/components/ItemGrid/PrintLayoutItemGrid.js b/src/components/ItemGrid/PrintLayoutItemGrid.js index b07b7050b..5821a478e 100644 --- a/src/components/ItemGrid/PrintLayoutItemGrid.js +++ b/src/components/ItemGrid/PrintLayoutItemGrid.js @@ -24,9 +24,9 @@ import { MARGIN, getGridColumns, hasShape, + a4LandscapeWidthPx, } from './gridUtil' import { - a4LandscapeWidthPx, getDomGridItemsSortedByYPos, getTransformYPx, } from '../../modules/printUtils' @@ -108,17 +108,10 @@ export class PrintLayoutItemGrid extends Component { const pageHeight = 720 const gridElement = document.querySelector('.react-grid-layout') + // the last page break is before the last item(s) so + // maxHeight is one page beyond the last page break const maxHeight = pageBreakBottom + pageHeight - if (maxHeight < lastItemBottom) { - // there is a problem - this should not happen - console.log( - 'jj PROBLEM! items extend beyond page bottom', - maxHeight, - '<', - lastItemBottom - ) - } if (gridElement) { gridElement.style.height = `${maxHeight}px` } diff --git a/src/components/ItemGrid/gridUtil.js b/src/components/ItemGrid/gridUtil.js index 953244b9b..e641bccc8 100644 --- a/src/components/ItemGrid/gridUtil.js +++ b/src/components/ItemGrid/gridUtil.js @@ -1,10 +1,8 @@ import isFunction from 'd2-utilizr/lib/isFunction' import { orObject } from '../../modules/util' -import { MAX_ITEM_GRID_HEIGHT } from '../../modules/printUtils' // Dimensions for the react-grid-layout - export const GRID_COMPACT_TYPE = 'vertical' // vertical | horizonal | null export const GRID_ROW_HEIGHT = 10 const GRID_COLUMN_WIDTH_PX = 20 @@ -17,6 +15,17 @@ export const NEW_ITEM_SHAPE = { x: 0, y: 0, w: 20, h: 29 } const NUMBER_OF_ITEM_COLS = 2 const GRID_COLUMNS = 60 +const MAX_ITEM_GRID_WIDTH = GRID_COLUMNS - 1 + +export const MAX_ITEM_GRID_HEIGHT = 34 +export const MAX_ITEM_GRID_HEIGHT_OIPP = 35 +export const MAX_ITEM_GRID_WIDTH_OIPP = 56 + +// for A4 landscape (297x210mm) +// 794 px = (21cm / 2.54) * 96 pixels/inch +// 1122 px = 29.7 /2.54 * 96 pixels/inch +// const a4LandscapeHeightPx = 794 +export const a4LandscapeWidthPx = 1102 export const getGridColumns = () => { switch (GRID_LAYOUT) { @@ -50,7 +59,7 @@ export const getShape = i => { const col = i % NUMBER_OF_ITEM_COLS const row = Math.floor(i / NUMBER_OF_ITEM_COLS) - const itemWidth = Math.floor((GRID_COLUMNS - 1) / NUMBER_OF_ITEM_COLS) + const itemWidth = Math.floor(MAX_ITEM_GRID_WIDTH / NUMBER_OF_ITEM_COLS) const itemHeight = GRID_ROW_HEIGHT * 2 return { @@ -72,18 +81,18 @@ export const getPageBreakItemShape = (yPos, isStatic = true) => { return { x: 0, y: yPos, - w: GRID_COLUMNS - 1, + w: MAX_ITEM_GRID_WIDTH, h: 5, static: !!isStatic, minH: 1, } } -export const getPrintTitlePageItemShape = () => { +export const getPrintTitlePageItemShape = isOneItemPerPage => { return { x: 0, y: 0, - w: GRID_COLUMNS - 1, + w: isOneItemPerPage ? MAX_ITEM_GRID_WIDTH_OIPP : MAX_ITEM_GRID_WIDTH, h: MAX_ITEM_GRID_HEIGHT, static: true, minH: 1, diff --git a/src/components/TitleBar/ViewTitleBar.js b/src/components/TitleBar/ViewTitleBar.js index cdbca529c..a2ef407ab 100644 --- a/src/components/TitleBar/ViewTitleBar.js +++ b/src/components/TitleBar/ViewTitleBar.js @@ -21,6 +21,7 @@ import { import { sGetDashboardById, sGetDashboardItems, + EMPTY_DASHBOARD, } from '../../reducers/dashboards' import classes from './styles/ViewTitleBar.module.css' @@ -82,6 +83,8 @@ const ViewTitleBar = (props, context) => { const buttonRef = createRef() + const userAccess = orObject(access) + return ( <>
@@ -94,7 +97,7 @@ const ViewTitleBar = (props, context) => {
- {access.update ? ( + {userAccess.update ? ( { ) : null} - {access.manage ? ( + {userAccess.manage ? ( @@ -201,7 +204,7 @@ ViewTitleBar.contextTypes = { const mapStateToProps = state => { const id = sGetSelectedId(state) - const dashboard = orObject(sGetDashboardById(state, id)) + const dashboard = sGetDashboardById(state, id) || EMPTY_DASHBOARD return { id, @@ -210,7 +213,7 @@ const mapStateToProps = state => { dashboardItems: sGetDashboardItems(state), showDescription: sGetSelectedShowDescription(state), starred: dashboard.starred, - access: orObject(dashboard.access), + access: dashboard.access, } } diff --git a/src/modules/printUtils.js b/src/modules/printUtils.js index c09e94e7d..61420c187 100644 --- a/src/modules/printUtils.js +++ b/src/modules/printUtils.js @@ -1,13 +1,6 @@ import sortBy from 'lodash/sortBy' import { orArray } from './util' import { itemTypeMap } from './itemTypes' -// for A4 landscape (297x210mm) -// 794 px = (21cm / 2.54) * 96 pixels/inch -// 1122 px = 29.7 /2.54 * 96 pixels/inch -// const a4LandscapeHeightPx = 794 -export const a4LandscapeWidthPx = 1102 - -export const MAX_ITEM_GRID_HEIGHT = 34 export const getTransformYPx = elStyle => { if (!elStyle || !elStyle.transform) { diff --git a/src/reducers/dashboards.js b/src/reducers/dashboards.js index 6735a1346..747a3ae36 100644 --- a/src/reducers/dashboards.js +++ b/src/reducers/dashboards.js @@ -17,6 +17,8 @@ export const DEFAULT_STATE_DASHBOARDS = { items: [], } +export const EMPTY_DASHBOARD = {} + // reducer helper functions const updateDashboardProp = ({ state, dashboardId, prop, value }) => ({ diff --git a/src/reducers/itemFilters.js b/src/reducers/itemFilters.js index a26433eeb..e56801510 100644 --- a/src/reducers/itemFilters.js +++ b/src/reducers/itemFilters.js @@ -38,8 +38,6 @@ export default (state = DEFAULT_STATE_ITEM_FILTERS, action) => { export const sGetItemFiltersRoot = state => state.itemFilters -export const sGetFiltersKeys = state => Object.keys(sGetItemFiltersRoot(state)) - // simplify the filters structure to: // [{ id: 'pe', name: 'Period', values: [{ id: 2019: name: '2019' }, {id: 'LAST_MONTH', name: 'Last month' }]}, ...] export const sGetNamedItemFilters = createSelector( diff --git a/src/reducers/printDashboard.js b/src/reducers/printDashboard.js index 9c1d4c3cb..320b26c33 100644 --- a/src/reducers/printDashboard.js +++ b/src/reducers/printDashboard.js @@ -130,6 +130,12 @@ export const sGetPrintDashboardRoot = state => state.printDashboard export const sGetIsPrinting = state => !isEmpty(state.printDashboard) +export const sGetPrintDashboardName = state => + sGetPrintDashboardRoot(state).name + +export const sGetPrintDashboardDescription = state => + sGetPrintDashboardRoot(state).description + export const sGetPrintDashboardItems = state => { return ( sGetPrintDashboardRoot(state)?.dashboardItems || DEFAULT_DASHBOARD_ITEMS diff --git a/yarn.lock b/yarn.lock index d48997906..d6ded2717 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1321,13 +1321,13 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== -"@dhis2/analytics@^10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@dhis2/analytics/-/analytics-10.0.3.tgz#9636bec30824b2a589964364a3b99296c104d7f2" - integrity sha512-h81hEvoHJDQshR024gSi/aBa9tpMQ8pwSPpNEDAEzw9QwR3eoNqMkTF8xDc3gO3HcJnfYMrYfdoiLYrQyhE+ZA== +"@dhis2/analytics@^11.0.7": + version "11.0.7" + resolved "https://registry.yarnpkg.com/@dhis2/analytics/-/analytics-11.0.7.tgz#7184796a830a9adb4b3078875df0f96ea4864bfa" + integrity sha512-ADMS9r00XacjBfYkAtxqsRYN2uzvwMz1NI47Y7akMvTBL3eowY3omICXJn0FAAtNm6WfYp34FlDdawZCHpsXnw== dependencies: - "@dhis2/d2-ui-org-unit-dialog" "^7.0.5" - "@dhis2/ui" "^5.5.3" + "@dhis2/d2-ui-org-unit-dialog" "^7.0.8" + "@dhis2/ui" "^5.5.6" "@material-ui/core" "^3.9.3" "@material-ui/icons" "^3.0.2" classnames "^2.2.6" @@ -1339,10 +1339,10 @@ resize-observer-polyfill "^1.5.1" styled-jsx "^3.3.0" -"@dhis2/app-adapter@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@dhis2/app-adapter/-/app-adapter-5.1.0.tgz#860bc722e7718d2f2ab703373653bcdaa8dfb6db" - integrity sha512-3tcYcSBUhWSQ090gJgATX5i5lccvaxfKoG3JIDzc1qI28craclrr5dY9yS29LLINwxR8YXOkE54h8eAX/W6Y3g== +"@dhis2/app-adapter@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@dhis2/app-adapter/-/app-adapter-5.2.0.tgz#0efd5cfbd4ef9a5c698b2179523747813e9e8420" + integrity sha512-+pkrvz65+U4NFf3nynYcDtpazqi1Ga7rP3OgiphIIVMvoGBWkBpaa5rHRHHmsRQ1RI95Gb+XsFjK0TuWF2Xd3Q== dependencies: moment "^2.24.0" @@ -1354,30 +1354,30 @@ "@dhis2/ui-core" "^4.6.1" prop-types "^15.7.2" -"@dhis2/app-runtime@^2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@dhis2/app-runtime/-/app-runtime-2.2.2.tgz#c2129c03d4ff3bca4eb3811d82f24d3acea07e5a" - integrity sha512-0890q1deNT/aJtjtxkDROViZBrA0EP00HVMht8YAfM+uJsnvADrtjizP53r68uamZWpCZmLQsi+2xiVAQZmvXA== +"@dhis2/app-runtime@^2.2.2", "@dhis2/app-runtime@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@dhis2/app-runtime/-/app-runtime-2.3.0.tgz#b059981e4d68734f3d486184ff01789769abc0e6" + integrity sha512-cWK3Y70CmEj7tdmrJDm5jo4th1mPBVHJ85QWpebAMQjmmoFW1MK4CLEycp5G2VIyvHMxXz853MqbvTIE+19Xng== dependencies: - "@dhis2/app-service-config" "2.2.2" - "@dhis2/app-service-data" "2.2.2" + "@dhis2/app-service-config" "2.3.0" + "@dhis2/app-service-data" "2.3.0" -"@dhis2/app-service-config@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@dhis2/app-service-config/-/app-service-config-2.2.2.tgz#9de0bc717ede669ee810fb7d4d84c0d35532a426" - integrity sha512-ohPCNX1hBMh/+0L5gxrSrfH/Bz787x60L4GMWODO0WEO73M6kGCjzaYZ0vjgmSCSUYJxZ6cBeybr0FBArxHjbw== +"@dhis2/app-service-config@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@dhis2/app-service-config/-/app-service-config-2.3.0.tgz#4ae6dcfa1e49eb90cb292bad204a447e8f01f736" + integrity sha512-c0nsKBjGYAEv5+04R5BrI7oKMholoONA+yiToVrkohRxbPY4XDQWvRy2tRmlx1W66xCGrk+utOvsp3NWNJH/sA== -"@dhis2/app-service-data@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@dhis2/app-service-data/-/app-service-data-2.2.2.tgz#093d45b8bb71b5b1e81876281379cda52b6632a7" - integrity sha512-QJrYTFj+vINcqvr27yLIKunbNJTVmDPGr9fUliUdmTkCikTwlnK8fu6TPz3rhkOUYX0VrwzFJXp3ofKQajZ9mQ== +"@dhis2/app-service-data@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@dhis2/app-service-data/-/app-service-data-2.3.0.tgz#35b270ce969705889121ed8394e382ffb74d2b66" + integrity sha512-H20qRT8jGOJxLyBHLx8huxW0csJmjqdE4/Fy0MQhyS2AJRBsQ5yPWOmcguup2yAtPHg+Do1c47+TshpEbyc8Rg== -"@dhis2/app-shell@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@dhis2/app-shell/-/app-shell-5.1.0.tgz#9bc7622834b37393d7b243fabf29b695ab352263" - integrity sha512-rhOzORiaVwqq3h0kR+IdRCDBcNUfKgx7vljtBkVPvAhRy0xM9GGYADmYkbfkXbBzPGMQyB/1HYNsOkY+7JcDMQ== +"@dhis2/app-shell@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@dhis2/app-shell/-/app-shell-5.2.0.tgz#19fc3c6b18ea18048d3cdd1680ce535417edb6b3" + integrity sha512-TLsHVEZGyy4Adt3ktMmKQQlWSJdntVlZuAJKj7bQMmP2+8dulz/uYCtqkr+ITrT1OIwBf4+s3oc9P6dfSTeg+w== dependencies: - "@dhis2/app-adapter" "5.1.0" + "@dhis2/app-adapter" "5.2.0" "@dhis2/app-runtime" "^2.2.2" "@dhis2/d2-i18n" "^1.0.5" "@dhis2/ui" "^5.4.2" @@ -1393,9 +1393,9 @@ typescript "^3.6.3" "@dhis2/cli-app-scripts@^5": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@dhis2/cli-app-scripts/-/cli-app-scripts-5.1.0.tgz#cef8ad0492f5d9ae9d9abc164c34f659ca0b1d26" - integrity sha512-zw/zsk8jrWCgC5/GJy8XCvwF2mxRnVxCwq+eKztONfDdoG68cluT3TztoST/nwBJyObVoJmCXJH7NxRynNf28w== + version "5.2.0" + resolved "https://registry.yarnpkg.com/@dhis2/cli-app-scripts/-/cli-app-scripts-5.2.0.tgz#f144820b51866be5e023d0c595449ca33245c954" + integrity sha512-ckPzQIFvLhWRjnuXfgQB+bXawVTW91afn5YrwwWKI6WXrqofvC7F72IPDbCeg2zNZGv3VKzW9R+bIy0x3GADEg== dependencies: "@babel/core" "^7.6.2" "@babel/plugin-proposal-class-properties" "^7.8.3" @@ -1408,7 +1408,7 @@ "@babel/preset-env" "^7.9.0" "@babel/preset-react" "^7.0.0" "@babel/preset-typescript" "^7.6.0" - "@dhis2/app-shell" "5.1.0" + "@dhis2/app-shell" "5.2.0" "@dhis2/cli-helpers-engine" "^1.5.0" archiver "^3.1.1" axios "^0.20.0" @@ -1481,21 +1481,10 @@ i18next "^10.3" moment "^2.24.0" -"@dhis2/d2-ui-core@7.0.5", "@dhis2/d2-ui-core@^7.0.3": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-core/-/d2-ui-core-7.0.5.tgz#bfedb815ebc0edb2901c0b1f4b59a856e9d18c34" - integrity sha512-ALK1vVe1yE+4mPnBBIdVNi3aAG7yVeLHjxAcEX/1XvCfK0CKnGas2I8K+KcxZMB0FHBr4+hzKzP4NkE4b+a4gQ== - dependencies: - babel-runtime "^6.26.0" - d2 "~31.7" - lodash "^4.17.10" - material-ui "^0.20.0" - rxjs "^5.5.7" - -"@dhis2/d2-ui-core@7.0.7": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-core/-/d2-ui-core-7.0.7.tgz#2d8b504916b3283e54d59c0ef17a76a94468a9de" - integrity sha512-C4UmZrJar+xwhNjCj9SbwoU0tBCxOBphcvn2PjK4z8+tJrG9qTqpJNOw33VZgI6jOxlW1CCh7SPiP5phDUufJw== +"@dhis2/d2-ui-core@7.0.8", "@dhis2/d2-ui-core@^7.0.7": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-core/-/d2-ui-core-7.0.8.tgz#efc579b1468a709917feb0a02c157bce6a39d212" + integrity sha512-DFbvQgb3oJWeK/a18lmNk7T5mqjqesQ2MDB5Wsj+o+fQ6bF1mUlAI1zYl/hR4KWE9rLnIDTmIK+JZZY3VGR5Yg== dependencies: babel-runtime "^6.26.0" d2 "~31.7" @@ -1503,14 +1492,14 @@ material-ui "^0.20.0" rxjs "^5.5.7" -"@dhis2/d2-ui-interpretations@^7.0.7": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-interpretations/-/d2-ui-interpretations-7.0.7.tgz#ac5ea14b5488a249f5ec3af9a9e1d2e2cfaa1bfb" - integrity sha512-pDgEM0Q/IwG3LrCTi+JBVWbzb2iMJ1SThCHtkG/VunStRpLj3AB24Ae6LZxbQgGQeDeU3BGZwMMp9BjTi1/10Q== +"@dhis2/d2-ui-interpretations@^7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-interpretations/-/d2-ui-interpretations-7.0.8.tgz#290281cbb8ff4b4b8baa3d771f15028ee3e4b8f2" + integrity sha512-dYW419Q/qk4CYCMjzvqtFaqUdvfnSMFDM1XdcZOMLcKGJIcONZ3IMcKriYlmy9zPQb/OHaTTEBQ8vG5UoJ0AYw== dependencies: - "@dhis2/d2-ui-mentions-wrapper" "7.0.7" - "@dhis2/d2-ui-rich-text" "7.0.7" - "@dhis2/d2-ui-sharing-dialog" "7.0.7" + "@dhis2/d2-ui-mentions-wrapper" "7.0.8" + "@dhis2/d2-ui-rich-text" "7.0.8" + "@dhis2/d2-ui-sharing-dialog" "7.0.8" "@material-ui/core" "^3.3.1" "@material-ui/icons" "^3.0.1" babel-runtime "^6.26.0" @@ -1520,82 +1509,50 @@ prop-types "^15.5.10" react-portal "^4.1.5" -"@dhis2/d2-ui-mentions-wrapper@7.0.7": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-mentions-wrapper/-/d2-ui-mentions-wrapper-7.0.7.tgz#34d5ff75e71979b8ceca4531a5f12cc69b9f14d9" - integrity sha512-bgqJKhliGw7kxFJ+l33ro9mDeX/7SGwb4BtdnHvf6Dwm2IOtQkU0FCUDVWc/GtrN8lilQ4oJGE0diTDkuSgzoQ== - dependencies: - "@material-ui/core" "^3.3.1" - lodash "^4.17.10" - prop-types "^15.6.2" - -"@dhis2/d2-ui-mentions-wrapper@^7.0.3": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-mentions-wrapper/-/d2-ui-mentions-wrapper-7.0.5.tgz#a8ab1d85af4e862965a016b2009bfa48659b7699" - integrity sha512-6+Px03gJHTboVz5KTBTBXHVhrnWDIqkC4ym3o332Rs0Gi4uEb4iHmJQrGtVrSWByxBllX73x080hvQXNxTz9SQ== +"@dhis2/d2-ui-mentions-wrapper@7.0.8", "@dhis2/d2-ui-mentions-wrapper@^7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-mentions-wrapper/-/d2-ui-mentions-wrapper-7.0.8.tgz#e9a753e774ad7cc633bb539716fd6182a6ce4e8d" + integrity sha512-u21NoxJKC69rsDVaYkZUvR3Hja6Ie2XnZh0TTiVrnJlGW+s3tKcvHlcHfqDPrSyqfRQKCQB//LKGYKhE9U5pMA== dependencies: "@material-ui/core" "^3.3.1" lodash "^4.17.10" prop-types "^15.6.2" -"@dhis2/d2-ui-org-unit-dialog@^7.0.5": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-org-unit-dialog/-/d2-ui-org-unit-dialog-7.0.5.tgz#b13cab9e17ad6555837338a65e2da78a32cb0224" - integrity sha512-fY37Z6b6GfqgjJ6Wha05ho6fgHtqHhMX49QxKZSchACH46EmuLq4uw5+wzuAXuZTIjSfsqk07xloWtTtgyjd8Q== +"@dhis2/d2-ui-org-unit-dialog@^7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-org-unit-dialog/-/d2-ui-org-unit-dialog-7.0.8.tgz#7caade6e72ae0b578ee03d84e4326ea6450ce0ac" + integrity sha512-LXp8Vx5fCwRkBexADHIDYfdpDX0japeZpbgJxCAtwPbkrY28QXRZhzdllNK0x14FEWlmXghBwUDoqIPr24QrNw== dependencies: - "@dhis2/d2-ui-org-unit-tree" "7.0.5" + "@dhis2/d2-ui-org-unit-tree" "7.0.8" "@material-ui/core" "^3.3.1" "@material-ui/icons" "^3.0.1" prop-types "^15.5.10" -"@dhis2/d2-ui-org-unit-tree@7.0.5": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-org-unit-tree/-/d2-ui-org-unit-tree-7.0.5.tgz#07c8ee3041679d0f2aea21d1155a30db25476072" - integrity sha512-HJIy/rrrsONBjVyk0NxsTw9VBXiQu67d3tFM6rd65mBeokANLpWtFk4iGiiifECniX3c6D/NiyX5Ap2iqBIHPg== +"@dhis2/d2-ui-org-unit-tree@7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-org-unit-tree/-/d2-ui-org-unit-tree-7.0.8.tgz#63a23dd1944a73aafb730fe99684e64da17c9037" + integrity sha512-RVt7mg1VwcQ+hxZts6+kRqKXSROC8WqST8Wkbb0QJmmCcuxp5Fb6bU2Ah0ApOtw8Q1owWsP+UlJT7sXrzzkX1Q== dependencies: - "@dhis2/d2-ui-core" "7.0.5" + "@dhis2/d2-ui-core" "7.0.8" "@material-ui/core" "^3.3.1" babel-runtime "^6.26.0" prop-types "^15.5.10" -"@dhis2/d2-ui-rich-text@7.0.7": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-rich-text/-/d2-ui-rich-text-7.0.7.tgz#b108340ee342b7d75e1e9d3b484a7cc98da2dbdd" - integrity sha512-qduwYqTRCFkZ5VpWSDEfpdQhN17eL/PDXgPVLvo4f0cMMkN9bR7e1q0BeemTvpCqTfHxQ+pjiHyaTwqBpzfzTg== - dependencies: - babel-runtime "^6.26.0" - markdown-it "^8.4.2" - prop-types "^15.6.2" - -"@dhis2/d2-ui-rich-text@^7.0.4": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-rich-text/-/d2-ui-rich-text-7.0.5.tgz#79ab4a915a02fa58945d72e20abdd0d072ef1d1e" - integrity sha512-3vNvHvzZy5Umtogb/IqpcjtCKpJGP+4g52fTMNdCXFU286Sk2XX/99bWxrSyn0gGxK00/KNJx5uZVECtTkO++A== +"@dhis2/d2-ui-rich-text@7.0.8", "@dhis2/d2-ui-rich-text@^7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-rich-text/-/d2-ui-rich-text-7.0.8.tgz#9eaae380dca3b56df7d0a92940dbacebefcd8624" + integrity sha512-YLI1wjgZUCDBcMCOTNIqJwtwdpNjOq8CTFb9esm8wfyT2Mw/vAAy929Sj+tKT8cJ2+xMKJhx8pQaJ4XbPPIZJg== dependencies: babel-runtime "^6.26.0" markdown-it "^8.4.2" prop-types "^15.6.2" -"@dhis2/d2-ui-sharing-dialog@7.0.7": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-sharing-dialog/-/d2-ui-sharing-dialog-7.0.7.tgz#efadb2256116cf171487e565c43410e51efb8af9" - integrity sha512-iPsSIMhRVqTMXCC8N1ypGZRXzki4i1/Lsn5jVyOfM8IwNUG3X5FKbb56MjM8uU4G/q/p0n7/6M3CITmtGUzezg== - dependencies: - "@dhis2/d2-ui-core" "7.0.7" - "@material-ui/core" "^3.3.1" - "@material-ui/icons" "^3.0.1" - babel-runtime "^6.26.0" - downshift "^2.2.2" - prop-types "^15.5.10" - recompose "^0.26.0" - rxjs "^5.5.7" - -"@dhis2/d2-ui-sharing-dialog@^7.0.5": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-sharing-dialog/-/d2-ui-sharing-dialog-7.0.5.tgz#b73b587f004d7e81c2d2eb6fddade2f1e49b9b3e" - integrity sha512-lxWvDs7Qj2/322myRQuxu32YeblmY5/SDoKKy1C/R3ZCLqPn8l7tE2XsCKXs89+gKzr8Qh4VeACnSKjv50DoFQ== +"@dhis2/d2-ui-sharing-dialog@7.0.8", "@dhis2/d2-ui-sharing-dialog@^7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-sharing-dialog/-/d2-ui-sharing-dialog-7.0.8.tgz#33d62e549bcceba4ecbe00180088381902449a2e" + integrity sha512-usXa4FotS90zZkQb2uqBEJOJHcZDbb7CM8GUMnkok8fryjsoeSIIRBEyt5GqVjBH4PHWja3V0BfkBW1w9gp+WQ== dependencies: - "@dhis2/d2-ui-core" "7.0.5" + "@dhis2/d2-ui-core" "7.0.8" "@material-ui/core" "^3.3.1" "@material-ui/icons" "^3.0.1" babel-runtime "^6.26.0" @@ -1604,12 +1561,12 @@ recompose "^0.26.0" rxjs "^5.5.7" -"@dhis2/d2-ui-translation-dialog@^7.0.4": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-translation-dialog/-/d2-ui-translation-dialog-7.0.5.tgz#69330895f9d23890c0147f85a2931990f4c89a7a" - integrity sha512-DopAyROaMIrvXvsPVo3LOGenVFt3+hoeMhvkEA5/qlLsfZZVmcB+UsdX2gh6z7PuTY/jZ0eHGZkJf+Dow7x5ng== +"@dhis2/d2-ui-translation-dialog@^7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@dhis2/d2-ui-translation-dialog/-/d2-ui-translation-dialog-7.0.8.tgz#97633f8f6e16b2dd92d5c846010c1038ee9bbcf8" + integrity sha512-+yLrWQOMPrgDc5yI+qiv3pKY0Szjgm2RjdzwKI9/S4+aTNFI1uVPQuiuEf2bz89UeOZ3n4s4yEvQndnpsaGo8g== dependencies: - "@dhis2/d2-ui-core" "7.0.5" + "@dhis2/d2-ui-core" "7.0.8" "@material-ui/core" "^3.3.1" "@material-ui/icons" "^3.0.1" babel-runtime "^6.26.0" @@ -1618,13 +1575,13 @@ react-select "^2.0.0" rxjs "^5.5.7" -"@dhis2/data-visualizer-plugin@^35.12.10": - version "35.12.10" - resolved "https://registry.yarnpkg.com/@dhis2/data-visualizer-plugin/-/data-visualizer-plugin-35.12.10.tgz#5d28465c0e5b93556fec614be29ede0aa9d7adc1" - integrity sha512-2rDVXX9gyTMrj+zGVf9wBL0f0m1NYOiuNzIrVgVX2M/YJbkUnuiZlCv54Z0jO93PRmMJ+Q58KbJqxvpoYsjSgg== +"@dhis2/data-visualizer-plugin@^35.12.24": + version "35.12.24" + resolved "https://registry.yarnpkg.com/@dhis2/data-visualizer-plugin/-/data-visualizer-plugin-35.12.24.tgz#d1f79acb7eccb5d584adf7255fc8555f06fde16e" + integrity sha512-jXVr+eiBU8d5GFjFBzQexDEX4KKbLCz0QeLiFez9gwydtmPvE/QWdp80uszAhJWeAiFy8dpVi8Os3IUy8MePKQ== dependencies: - "@dhis2/analytics" "^10.0.3" - "@dhis2/ui" "^5.5.4" + "@dhis2/analytics" "^11.0.7" + "@dhis2/ui" "^5.6.1" lodash-es "^4.17.11" "@dhis2/prop-types@^1.6.4": @@ -1634,17 +1591,17 @@ dependencies: prop-types "^15" -"@dhis2/ui-constants@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-5.5.4.tgz#b71b5dc04c28857aea6a7be3e2726a580e0a9e86" - integrity sha512-0lUACjGo3WaTVw/O7nrriVHuwcPiJkdFDXj1HZ6Bv0zkpfLR7LgnXsAOI1S0lqQ8lEhPb9n+RnEBHOpMktIAag== +"@dhis2/ui-constants@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-5.6.1.tgz#7295dd980cb829d02035e7f14fc9c099f61ed429" + integrity sha512-e5QVrifbJjQeN0bU4B9qRs34Lq09dxkmHQgW1l8aKI5jIYk/7R/jGWH+zZiQpUBqijk61FTcVFp3hjWcWB2Apg== dependencies: "@dhis2/prop-types" "^1.6.4" -"@dhis2/ui-core@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui-core/-/ui-core-5.5.4.tgz#7dcad12bfcf0fac219dfd418c0b940400a41b2f6" - integrity sha512-Eu95Geqj5dA5kbyaujOcA6KuwOcJzVTuLQOyhqBfMQm+lrxgrlQieI+yHhJqPSSEYC8ioXriQ6YuamW04yxJKg== +"@dhis2/ui-core@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@dhis2/ui-core/-/ui-core-5.6.1.tgz#d7a093c8476c732b48f8d4ae6fac5eb91e7e0772" + integrity sha512-n1ad7ni5NjpwJ00aP3NeuLz/QeuobB68WcTU+CDx4D77f8Xg8CHAp3p1iV2WkktDLcVH6DHsdCMHxXzc4N6NQA== dependencies: "@dhis2/prop-types" "^1.6.4" "@popperjs/core" "^2.4.4" @@ -1663,41 +1620,41 @@ react-popper "^2.2.3" resize-observer-polyfill "^1.5.1" -"@dhis2/ui-forms@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-5.5.4.tgz#f772ba1feda6c8de3547be71b32c0dc7b93a212b" - integrity sha512-7u4bVZpy4rUWI+PQu/AwTDa+2HzCPpnsUsXE7Yryc5ziiNY0LAGT9nqIeBRCGtsRcOpEYOHvMfiPj/HZTcqGlA== +"@dhis2/ui-forms@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-5.6.1.tgz#9fb64c2d4962767a62138647678442e2cc09f89e" + integrity sha512-L/iW+P2oXQCCAELd7EwKTX16avCjDvuCYKA8mD+ljzaq18k4ULTbBpza3F5u5G/G3aeAIgGEfUxShdAZN2VuOQ== dependencies: "@dhis2/prop-types" "^1.6.4" classnames "^2.2.6" final-form "^4.20.1" react-final-form "^6.5.1" -"@dhis2/ui-icons@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-5.5.4.tgz#b785d79fa74b9da6a8129101744669e0064c5c14" - integrity sha512-0epLc4JYqpCRRcRYMOR+ePQxob6uA5AKYEqe2ADt1BL7ghtnATEx6M4sJaQxprEKXgAvl3VIx7g2MepGVAWZCg== +"@dhis2/ui-icons@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-5.6.1.tgz#778c7818c5f63c962eeee4edea9c6825b589344f" + integrity sha512-65IfidePB6jeL5DWbhkJCnxfC1SMoST+pveuPvggsoTw4W/At37xruQm4j7azAnYhKRoObK77c0tkLV80B+B+Q== dependencies: "@dhis2/prop-types" "^1.6.4" -"@dhis2/ui-widgets@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui-widgets/-/ui-widgets-5.5.4.tgz#5aa1b8baf5dec081f50758b7dd889c628ee0e482" - integrity sha512-ktsscavQEz6ko2tBqOPOHMiQU7cAAv2m/5rT95bgPNDQYtj78C9d/7m8JeecnafkkZjt8rgxYKx/CKHVaxbGoQ== +"@dhis2/ui-widgets@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@dhis2/ui-widgets/-/ui-widgets-5.6.1.tgz#1aca125d26c2250d90c12a462a75461136eaf165" + integrity sha512-aDic4eBosIzUDHaLdqwYfrLhkNxJPJlRuKCBCoSrNHyZw0+x+P7MC0ghiO25i3PLxBfqsPaE34b1xn2d/M+cZg== dependencies: "@dhis2/prop-types" "^1.6.4" classnames "^2.2.6" -"@dhis2/ui@^5.4.2", "@dhis2/ui@^5.5.3", "@dhis2/ui@^5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-5.5.4.tgz#c82bde44e5d21160018ef5da0e427423a526b296" - integrity sha512-h1Kl/4aIdFqVxcVlICvfgKQtVrQPxvz1xGq36hfwZxPc8Z9A4SqUDz5vUi9tP4LxNUWJSOEm33LLFEJiqqDT3Q== +"@dhis2/ui@^5.4.2", "@dhis2/ui@^5.5.6", "@dhis2/ui@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-5.6.1.tgz#f5fe55de9b7a2e553c50f21a76544f42c242d5b3" + integrity sha512-C/tJ0tn8uIXkJlFGx01NiZt2Cn5pFRy3onlvz7t70PH3E5dddaAOgcdVxlAPSS2WkESdv2iDIh26w8AZtoO7VQ== dependencies: - "@dhis2/ui-constants" "5.5.4" - "@dhis2/ui-core" "5.5.4" - "@dhis2/ui-forms" "5.5.4" - "@dhis2/ui-icons" "5.5.4" - "@dhis2/ui-widgets" "5.5.4" + "@dhis2/ui-constants" "5.6.1" + "@dhis2/ui-core" "5.6.1" + "@dhis2/ui-forms" "5.6.1" + "@dhis2/ui-icons" "5.6.1" + "@dhis2/ui-widgets" "5.6.1" "@emotion/babel-utils@^0.6.4": version "0.6.10"