From c91a011287d6ff1452bab9744374ddcb61c0738c Mon Sep 17 00:00:00 2001 From: Flaminia Cavallo Date: Thu, 20 Jun 2024 15:57:09 +0200 Subject: [PATCH 01/11] chore: update to latest dhis2 ui --- adapter/package.json | 2 +- shell/package.json | 2 +- yarn.lock | 868 +++++++++++++++++++++---------------------- 3 files changed, 436 insertions(+), 436 deletions(-) diff --git a/adapter/package.json b/adapter/package.json index 64bcb09f..dbb76da5 100644 --- a/adapter/package.json +++ b/adapter/package.json @@ -40,7 +40,7 @@ "peerDependencies": { "@dhis2/app-runtime": "^3.10.4", "@dhis2/d2-i18n": "^1", - "@dhis2/ui": ">=9.4.4", + "@dhis2/ui": ">=9.8.9", "classnames": "^2", "moment": "^2", "prop-types": "^15", diff --git a/shell/package.json b/shell/package.json index e7a408d4..6156b2b8 100644 --- a/shell/package.json +++ b/shell/package.json @@ -19,7 +19,7 @@ "@dhis2/app-runtime": "^3.10.4", "@dhis2/d2-i18n": "^1.1.1", "@dhis2/pwa": "11.4.2", - "@dhis2/ui": "^9.4.4", + "@dhis2/ui": "^9.8.9", "classnames": "^2.2.6", "moment": "^2.29.1", "post-robot": "^10.0.46", diff --git a/yarn.lock b/yarn.lock index 212abd94..3399c7eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1333,584 +1333,584 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87" integrity sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA== -"@dhis2-ui/alert@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/alert/-/alert-9.4.4.tgz#4045882cb5bc5e6763897e4eca3d779e54f64d71" - integrity sha512-v3TjIQEDqUtAqcUsH62/TYqQLehzqRPOwqdw6LDa3Yldqf9iMJ6v66DBESO2QsYd33ZWPj0+ZWw8BDtAP/SubQ== +"@dhis2-ui/alert@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/alert/-/alert-9.8.9.tgz#4f4d26a07ac7690b21386ded730f15b001a67271" + integrity sha512-Zjw5tR0oGYdo8WMlFhIU1W3omSwfNglpye/9Rbrpe+7o8eQT77REH/O67vwWRCsQVAiwClGFVsPM9g4LHuMKxA== dependencies: - "@dhis2-ui/portal" "9.4.4" + "@dhis2-ui/portal" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/box@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/box/-/box-9.4.4.tgz#646cdb3b30708ba2332d249eae47fa03a1e6d309" - integrity sha512-xTkjLlcKm7Z6gESys2QLkgYWZSKyvKXcU4GHDJMZ+HXjiSxLfGSmbKDJfBkGuOsCGYlgCMdM1jMBUQjT7zp/Fg== +"@dhis2-ui/box@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/box/-/box-9.8.9.tgz#5e9fcd5ffbce44d215635623ff339814f9eafdb4" + integrity sha512-0UuPAiIKHOCs7IdEDsQUIlCS9RtW2RMMBhoT755CFMS9Ns6BV3A68DYvK9cDnl2MB0BJQodkMHgZM/r6Ls9YMA== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/button@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/button/-/button-9.4.4.tgz#5fa1765e6b7a26fdeca875bf3114a5039deab8f0" - integrity sha512-U0JNzTcQkOlSm0GJsSPGRLDXMA5czS33SkaaL0S7kkNLcsTceZX/4cO6ldTuAJWPJLiuNsR8e/Rklos9xospLg== +"@dhis2-ui/button@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/button/-/button-9.8.9.tgz#1e7e7584ccd778b2951e306c504dc42f399e5929" + integrity sha512-2MMTG30gM4Iw2uaFKU1SkJaROEWmF47lJrtPXqT//WYIQ9sO5KTZgoiZmv4SCFwJkR0h++fKAJ0+5EYcTVOCCQ== dependencies: - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/loader" "9.4.4" - "@dhis2-ui/popper" "9.4.4" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/loader" "9.8.9" + "@dhis2-ui/popper" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/calendar@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/calendar/-/calendar-9.4.4.tgz#3b5147a42ffbefaab77824f5c95e755508d2291f" - integrity sha512-wBzWhJdnCyGJuNYFhLiLh2cwiSm2iSa/JNud449+atCK6O/XygBel96eaLUh63GWgKmM5RE9PIoHWm1xYfn5XA== - dependencies: - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/card" "9.4.4" - "@dhis2-ui/input" "9.4.4" - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/popper" "9.4.4" - "@dhis2/multi-calendar-dates" "^1.1.1" +"@dhis2-ui/calendar@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/calendar/-/calendar-9.8.9.tgz#de4c9c671bd1e95e49877c34799feae3d2778939" + integrity sha512-g1SruXUduOZoNW8or2ubvSwyyaWNQOsHq7JI7BuX/6swW9PlObfDZhWQ9U68Q+YUc1HnkajlItNPKLDIUjHnwg== + dependencies: + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/card" "9.8.9" + "@dhis2-ui/input" "9.8.9" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/popper" "9.8.9" + "@dhis2/multi-calendar-dates" "^1.1.2" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/card@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/card/-/card-9.4.4.tgz#8bb0ca90f5eef4421beef9506b2c244041f1c1ef" - integrity sha512-ZquXjtHeY+/zt5ojXmB8ZeqD5pnEriw7/8LHGi2TYGZovCbw0rN76pTIgL+9X7V2WcVbSQinxUpdlcXex8heGQ== +"@dhis2-ui/card@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/card/-/card-9.8.9.tgz#5b5e81087ffd3132a56d8b087973b658490fe9df" + integrity sha512-kw3cYcSUCn/Ykd93JgA+8fMSYjnsP57nk3bwyb+j70lxnUmF3J+wPkN4SAHSWEz4a1DdlrmmDkBv3kMpZQalfg== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/center@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/center/-/center-9.4.4.tgz#c62c32bbe83aa20278845ec22cfcb5cc3a394d26" - integrity sha512-I+d1ByUcemZDYCPauiXY/EOjUDjoLPXTzpzAF3AboZNvGjo2+1AgHKNkAMp5WgBBQRaGoAiNLRhhgGEX6f9DhQ== +"@dhis2-ui/center@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/center/-/center-9.8.9.tgz#56d56dfc93fb85867f68275d57beff7dd7d24cb7" + integrity sha512-gdWD5+QAZHosnwDbyUBj4gCODLIlImZAmyp/YXSWGyjCUWp/csQbKBVUoVwTPYq5PwyGGG2LnLGdUq0jdEGAaQ== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/checkbox@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/checkbox/-/checkbox-9.4.4.tgz#61b75fa7d1773e1d9a11b95126c44a465ac59eaa" - integrity sha512-i26bv/lBynQ1AeOhMmRJ4rQJr5HOFXe4VNCaQhq/+1q+g2dewyf0gIygJnjYMzcX48eyfQsBDU5JBYhuSz6kWw== +"@dhis2-ui/checkbox@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/checkbox/-/checkbox-9.8.9.tgz#4b7212f204c9795081161cbda4aa134b6773cd01" + integrity sha512-WdJUTTxoihwTR5A+NnESXeSg6xAek8Ugg9ZGdwUwn4haQnqwgEF1LYmwf8F3wJrEvG92pqybLlb4oq25dR3Y7A== dependencies: - "@dhis2-ui/field" "9.4.4" - "@dhis2-ui/required" "9.4.4" + "@dhis2-ui/field" "9.8.9" + "@dhis2-ui/required" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/chip@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/chip/-/chip-9.4.4.tgz#f1b151e0bc091aca4e288ed7f4889a38bf1f74c6" - integrity sha512-+2FLdWcDGNOQmrCU0sKve+JRD1hwCd53sQ0D/OCI4zFCrJwJ5C7Pet5Y3Ys0hv8lAu4hCdwklSyKuwlIjYntjg== +"@dhis2-ui/chip@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/chip/-/chip-9.8.9.tgz#449e38e18b307b7c528291623ac2b1f8569e17f1" + integrity sha512-Ck5efyAFSWI6MzuO608jrxq/TsAozM9KZHafdMPsbMaEG1j3f+CyD9KOR5rKWwO+JY712uozxHf2jjs9F9uqZQ== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/cover@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/cover/-/cover-9.4.4.tgz#89ed8113be5ba541d7250e32a828c5e2046369e7" - integrity sha512-JAywkI+Hebyn4EkiSf3li2E2+iDUvBwcgHH4AW5QkkRaM8YGqgluNnsn+AOL1Igs6lXh3jzGrsiN3xZSoGO6ww== +"@dhis2-ui/cover@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/cover/-/cover-9.8.9.tgz#aa7f481fb44a2d01f60fba7af2ce2e35751bfe6c" + integrity sha512-XO4soYNN/C03dW/B6/NdDeKUpiabIwRm1Pf4uklw1kbJN5zC9/P2ai7c1dsN1CMwJd2roi7bRGFhH6xec0ww2w== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/css@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/css/-/css-9.4.4.tgz#c46af291af86eec008f60205c7c46e100ef8188a" - integrity sha512-VBmYcTKet0YDEguptZ0+Yc789HmNiaMDTu3iUnJKuvurhYSaFGD/oK7d2Sr6bIo0KTQ+/XpcOL68+wRLktGgwQ== +"@dhis2-ui/css@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/css/-/css-9.8.9.tgz#ae0c166ba3ce6ccc723ea51585967959be9217bf" + integrity sha512-kAv6yH4Y/Oe7rmn6YZwItvC/pD/NR7uFofKiToVeyKzOiMGfCZovbmAfE2Enc6MyjE8x3z7L6OVSx9saRXCexQ== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/divider@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/divider/-/divider-9.4.4.tgz#d904282c0bc8552180923e36189b421dfb4d3853" - integrity sha512-YjERDzyV4aznyKpREUDhh5QgykRAhNE6xr7rO5LiCNeFx2MpZY1Xq6AFoPZSuy966iAEU0KmOK+8Ow0NGg/9GA== +"@dhis2-ui/divider@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/divider/-/divider-9.8.9.tgz#212071ba437816948382d4afd6f428a287a852da" + integrity sha512-4BD+shHz1WpfEKHtVZyYPiEewwlDHqMDhPupB2yscrmhSCJ6zGpPI63P09Ty2lnpJhjf7znrRMmaBhSJfJV3AQ== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/field@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/field/-/field-9.4.4.tgz#80753ca3bc2c419dc1066e5e6d662b18ddaec032" - integrity sha512-07O3Npth26D0+kOHYdsfoF3fZm8SXfmtonKyOIOpRAmIX1TJZRNO9LuI5S9+z5vh0++x3Y+c9hIFmac0Vvm9aQ== +"@dhis2-ui/field@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/field/-/field-9.8.9.tgz#77b2b06fd62508154d065b7887b93b47286b975f" + integrity sha512-8EaIkAj+3Wo2VYrVpdsEoAVQQ8Bbrlh33wK4HIvlWKdXoPjvdRa8DL9H6V+iu7KCN8bXiNKNE5sKiHabckLIxg== dependencies: - "@dhis2-ui/box" "9.4.4" - "@dhis2-ui/help" "9.4.4" - "@dhis2-ui/label" "9.4.4" + "@dhis2-ui/box" "9.8.9" + "@dhis2-ui/help" "9.8.9" + "@dhis2-ui/label" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/file-input@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/file-input/-/file-input-9.4.4.tgz#02878069f9f4db33a14dba9e18642d8e85f6d2e9" - integrity sha512-GS89r/FxYfd9GlXUqscUXjzh1f190mo9qwJN6GrrzeK+gSGwtFDtGHDCyES7qQ8MdtvgDlC8Dgdjl5EU7YP6tQ== +"@dhis2-ui/file-input@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/file-input/-/file-input-9.8.9.tgz#c8a234423003b7063c52bf4b58821cb610934771" + integrity sha512-3X3hvxViuZU8q0RgdnHARs9BlMwB5wcDK+IHf8x5ml6hr4M9KHx1XBnGHxnmV12tOgSihuGvk5ZDGL0HEA4k8Q== dependencies: - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/field" "9.4.4" - "@dhis2-ui/label" "9.4.4" - "@dhis2-ui/loader" "9.4.4" - "@dhis2-ui/status-icon" "9.4.4" + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/field" "9.8.9" + "@dhis2-ui/label" "9.8.9" + "@dhis2-ui/loader" "9.8.9" + "@dhis2-ui/status-icon" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/header-bar@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/header-bar/-/header-bar-9.4.4.tgz#7c26955ea968bb25cac6766e549402ccde34d8c3" - integrity sha512-IA6yFbFFimWMYyHSD9idCLCamnWtAgRuoD3FG/8kKvOurTEwUcb0qYaecnQAstwWwZ8C+ZIKiTB0796WXj/SDg== - dependencies: - "@dhis2-ui/box" "9.4.4" - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/card" "9.4.4" - "@dhis2-ui/center" "9.4.4" - "@dhis2-ui/divider" "9.4.4" - "@dhis2-ui/input" "9.4.4" - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/loader" "9.4.4" - "@dhis2-ui/logo" "9.4.4" - "@dhis2-ui/menu" "9.4.4" - "@dhis2-ui/modal" "9.4.4" - "@dhis2-ui/user-avatar" "9.4.4" +"@dhis2-ui/header-bar@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/header-bar/-/header-bar-9.8.9.tgz#ccda5affa69e14488c2c7592a849938346097554" + integrity sha512-Xec7Ib4+6fqIcTjMjObYUbzRuQdIgUj/GkI1ADMYGnbe+8KPNOeyxRtKePIFMiyH6R385+0eSBmamxiYbNWFAw== + dependencies: + "@dhis2-ui/box" "9.8.9" + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/card" "9.8.9" + "@dhis2-ui/center" "9.8.9" + "@dhis2-ui/divider" "9.8.9" + "@dhis2-ui/input" "9.8.9" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/loader" "9.8.9" + "@dhis2-ui/logo" "9.8.9" + "@dhis2-ui/menu" "9.8.9" + "@dhis2-ui/modal" "9.8.9" + "@dhis2-ui/user-avatar" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" moment "^2.29.1" prop-types "^15.7.2" -"@dhis2-ui/help@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/help/-/help-9.4.4.tgz#6b3df94b6b8c0f7269dde3c90602dbb6dac889fa" - integrity sha512-V/ZNC/QwlN+444rb2wBAzEkqeLToafHQOEWCUUvcYEgC2Vxdh2bXEqBl6w4Bv2Xmh563k+AdxvXZtVL4zLA/og== +"@dhis2-ui/help@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/help/-/help-9.8.9.tgz#09590229596d6ae5c17462795440dd204d202659" + integrity sha512-YlqXgM9uLHZFCybAHaw4YyuHN8MGXSol2KZuuiAXJ6FFVlrVkMrDiq0LISQBkIa16ckGShb0KQfycfHZWbNJbg== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/input@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/input/-/input-9.4.4.tgz#621eab6b8d535fcb111094f660415ff4136cb156" - integrity sha512-F6GEeRUQXFxjhoY3+CuaZWrkS2D54vTuP429uCL77/Wn2HdqYWnDMz3ILubIR+T1C5otmAH5cqW3IinRGlOq+Q== +"@dhis2-ui/input@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/input/-/input-9.8.9.tgz#4d1d21872e34ead1c20627076032a3b14c17b0f7" + integrity sha512-uPZa6Ea9dCj/YHTs077wSIZ0PyTh4MHuLYpW9nVvDyq9IWGpS7M0mbOkzP2RfZ8XAkQEE2f4iV+QTcFWUlQwrQ== dependencies: - "@dhis2-ui/box" "9.4.4" - "@dhis2-ui/field" "9.4.4" - "@dhis2-ui/input" "9.4.4" - "@dhis2-ui/loader" "9.4.4" - "@dhis2-ui/status-icon" "9.4.4" + "@dhis2-ui/box" "9.8.9" + "@dhis2-ui/field" "9.8.9" + "@dhis2-ui/input" "9.8.9" + "@dhis2-ui/loader" "9.8.9" + "@dhis2-ui/status-icon" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/intersection-detector@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/intersection-detector/-/intersection-detector-9.4.4.tgz#1ad2a7b47a84aeb674274272d362302f4b23ba56" - integrity sha512-+DhDX7/Y0uKZnTy4r4qTt6kQtdlYxJVnlx42CwAO4KWAJirOISDyepzKUii9ZFMLCcxQgQ2uddiCwdjPqLqiAQ== +"@dhis2-ui/intersection-detector@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/intersection-detector/-/intersection-detector-9.8.9.tgz#f5e59c5dc9b8f90d7ed085d7875734a64be25f8b" + integrity sha512-9MnDiHxNNlbQK8OJmEKe+y/F0WdirMJW7tI8ubwDPeuQL+TKHNKVfFW/WUXAQ0NqqbaO4jwqHqF6t4Kmh6gqjQ== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/label@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/label/-/label-9.4.4.tgz#107e21bcc7a8d29e8355d54d5e475c96364fc78d" - integrity sha512-uoYpozTDR1kxM+g8tWvvCV9Z4KT9+t4t4IKULICJLwEW8JfwXQxZnVmCvCc3Zv2fHZlmUN9XXGVt00VG1ldWsg== +"@dhis2-ui/label@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/label/-/label-9.8.9.tgz#b848fd3cbadcdc0ba4509ec1e5ddcef04889e7d8" + integrity sha512-Ny4R1h0wUnR2QeYH5TB2hAO67Ma5TiX4S8IlpX3i5hkHhmNgJUmyDKJj8AQOoPHSXBfJN8Mm92QjysMrOsicyg== dependencies: - "@dhis2-ui/required" "9.4.4" + "@dhis2-ui/required" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/layer@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/layer/-/layer-9.4.4.tgz#980a9e397468b9418937202a0afaae868bed4b4b" - integrity sha512-PLqcBHfUB1EV24trWbkDv2m1viU3ijVYZQa13htxa5r800ei+ze6K4x15hnvI9qtCbNAvBv/N1Axxui4Xwjkdg== +"@dhis2-ui/layer@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/layer/-/layer-9.8.9.tgz#151b30d19634bc2cfecb7aae5e04c777670facc3" + integrity sha512-aSg9JyjwOnU9eefEBfTagXLsqyfYBTRwYB3Ut8unlTELJ1Tj+e1NhMrSVLD0atAPUMIoHPDd2nd41qbnQjd8Kw== dependencies: - "@dhis2-ui/portal" "9.4.4" + "@dhis2-ui/portal" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/legend@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/legend/-/legend-9.4.4.tgz#5476cfa7937ca9bbac3b9e64e991b17d51e9ced1" - integrity sha512-uqxHCFYMfP8yxV0lOyOgKbOUYRP3TNoO+fHyo78y2OGhjrsanHolZMPokf+POgZAFmBvQDtibOoyp2J7jq1Qog== +"@dhis2-ui/legend@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/legend/-/legend-9.8.9.tgz#4926dac7016ca9e3d81c38e052ce1242746553f0" + integrity sha512-NNIdOCsKz95Yz6qUvKb+YWQ4wjcvNT+jWhj/J20061vrBL/sxdmrQzgiP/3/gFm2+yOFx8ohRpX1+MF6t+RITg== dependencies: - "@dhis2-ui/required" "9.4.4" + "@dhis2-ui/required" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/loader@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/loader/-/loader-9.4.4.tgz#2bd268cba9310db47c0a9dda04cff760380fc6b0" - integrity sha512-2B9PZ/iQIuCWbPIQFihrmX+1YHW5vZlOv+rsJT1SipSIj5sLWy4KYtjvm89lSu+Or60jnrNAJ8Iix5bnlb+dWw== +"@dhis2-ui/loader@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/loader/-/loader-9.8.9.tgz#d9523c8b098032973f9a35be11227baa0b9719ff" + integrity sha512-9QC7dLIH6avK2hrz8HGfdnfAtJu2DggjXtiv3Lpkk9gjvYVIwKOWcOjGncLAPTVXRKJJ1T7+O4aeP22muMdJBg== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/logo@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/logo/-/logo-9.4.4.tgz#a0050a56aabafe33ef4c232a116980d289fbcc34" - integrity sha512-Nps/U5rCBaO8X8/A0gbd8SuGRdd1ymCRnXv5FuUvciQ8CcoQnjE8aVi0TMY1h/A8XDrLWZXyAnm3WbmA0GnOvw== +"@dhis2-ui/logo@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/logo/-/logo-9.8.9.tgz#629080d5bdf21c63da3c6259f60314d31d5ab146" + integrity sha512-RcXYBGh3aW9DTEraTgmX/h/Dg5tMArG73qtdk7SILcxgNOX86MZSeNYJxFMbtSlDfsNhnj3dGFyw1FhiU7HTIQ== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/menu@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/menu/-/menu-9.4.4.tgz#a25fe07705d8e14e97390d8b59e7330d7fdc335e" - integrity sha512-TSIPM9vNswIo59yxPEZN30KTWbxQNXC2BLu6Fkd0FpgLO8ZxnAtG7qbgay8Y3c+9FIAt+Be/N41d+5VlSG8WtA== +"@dhis2-ui/menu@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/menu/-/menu-9.8.9.tgz#5a18436c8da66560f2466cc5e4d141326fd6a71a" + integrity sha512-tdxSSbCuWwEwOfPgNjSjQ2PQi1ST2KFKoDUOuSmTHLjLRtZjT0auFx6/8zgSB+SBQWN1+1+JljxJjA/sZ5ouuQ== dependencies: - "@dhis2-ui/card" "9.4.4" - "@dhis2-ui/divider" "9.4.4" - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/popper" "9.4.4" - "@dhis2-ui/portal" "9.4.4" + "@dhis2-ui/card" "9.8.9" + "@dhis2-ui/divider" "9.8.9" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/popper" "9.8.9" + "@dhis2-ui/portal" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/modal@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/modal/-/modal-9.4.4.tgz#3edbc8e3bb942aba2c8377aadd79514fe2fa7930" - integrity sha512-Ny9y9hxinbrnSQxoDCFh902BNozGjHdp1YG5w+sxyg4gfUjP2gh+OyoLILvw8LqvrjoukI7anfmikNoAEwjanw== +"@dhis2-ui/modal@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/modal/-/modal-9.8.9.tgz#6c7a9a606aa31c38c8829e3785babbfa73b4f583" + integrity sha512-qpDV4co3NIKzSjf8FWwceDCgkcCdiqhT2Iq0khN58F+Qj0kuy8c0en4CxSjj4N+aoer6y4YKDpVZ91/YlbV7RA== dependencies: - "@dhis2-ui/card" "9.4.4" - "@dhis2-ui/center" "9.4.4" - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/portal" "9.4.4" + "@dhis2-ui/card" "9.8.9" + "@dhis2-ui/center" "9.8.9" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/portal" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/node@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/node/-/node-9.4.4.tgz#3c13b7424a172564a0d52893b4d1ac8a7d9ceac3" - integrity sha512-8kyvwqFc/cx1U50AhDymUnKR3OvWy6/EBnt8IOGrdFGrIRTk6P+JiRFUMfQ2aRubhtLMsDTpQ3LOMeHeP7/87w== +"@dhis2-ui/node@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/node/-/node-9.8.9.tgz#bddffec4c61f4201a18a319e6d1805e2f2c66762" + integrity sha512-5SUxyggj7m5DbnmFSwMY8HOVF6pbxMlqxEDQkSmy7yy2BwySTdBt6SDV8p0R/lIUBRGxubL0zuWo0c4dQGYWXQ== dependencies: - "@dhis2-ui/loader" "9.4.4" + "@dhis2-ui/loader" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/notice-box@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/notice-box/-/notice-box-9.4.4.tgz#c333a0ffa0cddc20431071ec56f0521fa3dbcb5d" - integrity sha512-u7zcrq4EqCwCOszyl1FlfpeQj+Tn/UJ/J6mZ3v44+7gCTNMrEfT7Hf/drmTVLmFNquqDUP/ppr1uxwtQOResyA== +"@dhis2-ui/notice-box@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/notice-box/-/notice-box-9.8.9.tgz#556d7512463b1f19cd25a00e7da67a6efba1f68c" + integrity sha512-481LftNGZF9ZOScV6GQ3wgdCQqG+/I4UqQjvok15Xut4JV1/+oXB3TG/R0UrwzUX1493fS6O2orQoWXZJSVorw== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/organisation-unit-tree@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/organisation-unit-tree/-/organisation-unit-tree-9.4.4.tgz#3e952d2fe0fd045d6bc2a6a92872ef8e83a6e7f2" - integrity sha512-qUDsQIHPE2QQVizfs+bomsrlPKVrPi8L2MtKVkma2P1/GlDnZaOoLYB70zzLLbqH90dUbwMlGF3ZXnbIhi+A6g== +"@dhis2-ui/organisation-unit-tree@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/organisation-unit-tree/-/organisation-unit-tree-9.8.9.tgz#893eaaac11a9a1be2012db47303a8fb35e9626e9" + integrity sha512-dVDOrQCGwEqO5i6fsur9JBW3qK//wmAxdbwTMY6qUjysbgKhHqC9Jtatq28jyzj6cwnX80qZdRrdNxG4FdovHA== dependencies: - "@dhis2-ui/checkbox" "9.4.4" - "@dhis2-ui/loader" "9.4.4" - "@dhis2-ui/node" "9.4.4" + "@dhis2-ui/checkbox" "9.8.9" + "@dhis2-ui/loader" "9.8.9" + "@dhis2-ui/node" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/pagination@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/pagination/-/pagination-9.4.4.tgz#35d4ab7e35a0a37d998fe51394ac1bda26b7052f" - integrity sha512-WnruI7k/wcXzZF84fWRcFhfA131p23NwkeUUbt45cm/36+SnDoYAl6Nbh1elEQpYu2jqMWVk2w82u37MT/usxg== +"@dhis2-ui/pagination@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/pagination/-/pagination-9.8.9.tgz#200f5c6566ec2d113f330c59b63d33447835d44d" + integrity sha512-lUW8VwAO4lvinQK6I0dilXMh/InxKm6VO3qzJYGcrrlDoQZkCPbuB/TiAd/iT4yzijq0qQ33snBBqgc/EN/W/w== dependencies: - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/select" "9.4.4" + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/select" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/popover@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/popover/-/popover-9.4.4.tgz#547dbffefbfdd838bf401a5a44e1e524ab028440" - integrity sha512-UosiUkknLNl3h+IuqNiEcLuGSskP8SV55BOUHEHIyE5HacRVjzyeKyK6ak/g0L8FyscYdpPvAAUqFRq7pnByzg== +"@dhis2-ui/popover@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/popover/-/popover-9.8.9.tgz#030b1c952664aa21f5584b1177dda3cd6938222c" + integrity sha512-gt8W5lkz+IXpmRcGYPW+AsuVn2tESs4IbBEw/Uzvn2N1YSY7kE2qamf6csgh055gnZeqd7kItMW4bP1WcO345Q== dependencies: - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/popper" "9.4.4" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/popper" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/popper@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/popper/-/popper-9.4.4.tgz#84d3e2155d93bc54cebdf1430dc7b2f207d681ae" - integrity sha512-avSwb0Ty25mE7BkoV/dWvwxZFLEWOOkEXSa2z5F/YNfec8gvCODiVGcHU6CEBfDXk7y4dqv7QtLEfaeoa8cpnA== +"@dhis2-ui/popper@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/popper/-/popper-9.8.9.tgz#a085a300f59be62a188841b185cec0f996b45b73" + integrity sha512-qdDbNxKvBapchTxV9FJ57opwThDTIkU7wz/Y2URzLP7I8ULp2WpparFEC+RdY+h+79LFtDsUCTLHE1Vs5TvRqw== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" "@popperjs/core" "^2.10.1" classnames "^2.3.1" prop-types "^15.7.2" react-popper "^2.2.5" resize-observer-polyfill "^1.5.1" -"@dhis2-ui/portal@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/portal/-/portal-9.4.4.tgz#8de12cd6c0e975b47cd19caae8acc1500034f206" - integrity sha512-HSXWzWFlSy9layr9zmxQcITiOIsse9y7bK0kPRlqjqEtSSfF57iGcFSAOTwX4HBW0xE/lQ8n4UfHoGOU76LF0Q== +"@dhis2-ui/portal@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/portal/-/portal-9.8.9.tgz#38aff7807eeafea96c7309451e6e8f13bbbbb55f" + integrity sha512-dcqlxIx3i2y7VUTTiv2yPIQIjBOyqG/xDRC85JuTiuIUqQqTAIFsh5UqB4PBiq02rg4hzUL4nYkMky6PA+gv2w== dependencies: classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/radio@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/radio/-/radio-9.4.4.tgz#5654713ad8646aac31909ff6009b189975b3eaf5" - integrity sha512-JAqnlbX9arPASFNHJw8leeDs0FGKWvIOQDZeye9ApG8Xnl2vdu4Oa/8GfDPSPYHIGdvhx5VVH0D+PzAFLBeIUA== +"@dhis2-ui/radio@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/radio/-/radio-9.8.9.tgz#b778fc88c12c92dde59244a43d6d2c55f14c631a" + integrity sha512-g/qqP+4DOLjm5Sctbrn9tM0k2pwmbFo3XV6hiwDJ0Ar2MlRExk1jE5B8Bwtyb0J1Jh+xkvwgR4H9TOTS94UMYg== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/required@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/required/-/required-9.4.4.tgz#fc167134d435a7ee4a86966887f282653e87f9f3" - integrity sha512-jwLwL+6y7Wp0IWiXyj28xmBpOsZOdyJlBUpdfmur7akVK46jMMTlugz36SpygU7f9dzExl2hJgDu01X8q/kdng== +"@dhis2-ui/required@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/required/-/required-9.8.9.tgz#23fa0f0c91301b912685cbc1886c29375f708467" + integrity sha512-JARpAITBgylPhu7cSO1olKZyhFSZzJAyflHhn2WI/ZrRr30lDT5HfTzdxVE1Qf107llCvdRzZVNEgQwfzLRsug== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/segmented-control@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/segmented-control/-/segmented-control-9.4.4.tgz#8f4b756b913f5162f7523c4044be80a068584649" - integrity sha512-A8p8VxRea3VV4G9yWc+zTfQarW/ZDIfkEWzKzsmyQEuqIWlTVPf7Hcva9I7Lx1CiDpScJdJbK5vGlglj4PKj5g== +"@dhis2-ui/segmented-control@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/segmented-control/-/segmented-control-9.8.9.tgz#4b22d10202a3df1dfe9275f8defa81463ae21efe" + integrity sha512-+4BOo/DgKsztv4tIXATnsa+m+xs55VAD+NHmOv93MPQuO3Lzf9vgJ4N3bWpLzEKsw2Ou7FMGTyJyhgwaorJUuA== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/select@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/select/-/select-9.4.4.tgz#39e566dc565a07c783ca9c3be0ad15de2484eec4" - integrity sha512-qIJunqROPGcP9Ys/yx4D/jUS20DE8ORxT3W1l+r/RnL/z8gPlyBAYeYB914nxualIhoUYXr7UjhgyJZfQbIafQ== - dependencies: - "@dhis2-ui/box" "9.4.4" - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/card" "9.4.4" - "@dhis2-ui/checkbox" "9.4.4" - "@dhis2-ui/chip" "9.4.4" - "@dhis2-ui/field" "9.4.4" - "@dhis2-ui/input" "9.4.4" - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/loader" "9.4.4" - "@dhis2-ui/popper" "9.4.4" - "@dhis2-ui/status-icon" "9.4.4" - "@dhis2-ui/tooltip" "9.4.4" +"@dhis2-ui/select@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/select/-/select-9.8.9.tgz#a6cb7d6ad215295ffff59dc53c5a838a86d18c98" + integrity sha512-EC/FgN7Oy3Wgj5APW2de9AuEHl3EEBwTw+aYXnzyBUufolQIQhyFpUCog06qtlFvbpSK6D/lEQWLWfLqKzDW2A== + dependencies: + "@dhis2-ui/box" "9.8.9" + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/card" "9.8.9" + "@dhis2-ui/checkbox" "9.8.9" + "@dhis2-ui/chip" "9.8.9" + "@dhis2-ui/field" "9.8.9" + "@dhis2-ui/input" "9.8.9" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/loader" "9.8.9" + "@dhis2-ui/popper" "9.8.9" + "@dhis2-ui/status-icon" "9.8.9" + "@dhis2-ui/tooltip" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/selector-bar@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/selector-bar/-/selector-bar-9.4.4.tgz#79513f90bdc1f4a2c6270cb8f2083dd14d4b11d9" - integrity sha512-9Z9dyrFU6XAEu0KLIa4TDQR/E8KJvjqMeaxWWpSrjnyM2Lmlfn9gH+qZ27TJSUMKqY/mdFJpSSr45aIQGgg2Rw== - dependencies: - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/card" "9.4.4" - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/popper" "9.4.4" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" +"@dhis2-ui/selector-bar@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/selector-bar/-/selector-bar-9.8.9.tgz#f1097db1b29a65aa961582551ce696aa188547ad" + integrity sha512-3/j1SgXNKIYCK8CjyKwDJ7chen2jwVGAjT99DxiOyudZoylgpfnDO+pSGObmBJ00oqevQG/3rnD7JUEkto0uAQ== + dependencies: + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/card" "9.8.9" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/popper" "9.8.9" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" "@testing-library/react" "^12.1.2" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/sharing-dialog@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/sharing-dialog/-/sharing-dialog-9.4.4.tgz#dcb9aa7436cd037e59f02231eeece7fbf6d82414" - integrity sha512-pYhMR+HXu4gvpFTfwWIe1XtW7+m4DxVzWPHGmHKi7ZbVh42csi466mlpJ29qid8KBo/KmsNASt+R6Vp0I3Dq5w== - dependencies: - "@dhis2-ui/box" "9.4.4" - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/card" "9.4.4" - "@dhis2-ui/divider" "9.4.4" - "@dhis2-ui/input" "9.4.4" - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/menu" "9.4.4" - "@dhis2-ui/modal" "9.4.4" - "@dhis2-ui/notice-box" "9.4.4" - "@dhis2-ui/popper" "9.4.4" - "@dhis2-ui/select" "9.4.4" - "@dhis2-ui/tab" "9.4.4" - "@dhis2-ui/tooltip" "9.4.4" - "@dhis2-ui/user-avatar" "9.4.4" +"@dhis2-ui/sharing-dialog@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/sharing-dialog/-/sharing-dialog-9.8.9.tgz#db28bfca61652aaec0537440c3885358330b8952" + integrity sha512-hWy1b/5CKYYoWxvsWD6xxH0cr5WCd1+rybCLyBZhp+3xtRqKD0qXSujjvaCcl2HecpWvJxR1HP3cuKu1OXL/Uw== + dependencies: + "@dhis2-ui/box" "9.8.9" + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/card" "9.8.9" + "@dhis2-ui/divider" "9.8.9" + "@dhis2-ui/input" "9.8.9" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/menu" "9.8.9" + "@dhis2-ui/modal" "9.8.9" + "@dhis2-ui/notice-box" "9.8.9" + "@dhis2-ui/popper" "9.8.9" + "@dhis2-ui/select" "9.8.9" + "@dhis2-ui/tab" "9.8.9" + "@dhis2-ui/tooltip" "9.8.9" + "@dhis2-ui/user-avatar" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" "@react-hook/size" "^2.1.2" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/status-icon@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/status-icon/-/status-icon-9.4.4.tgz#ab44a615aee73a6f4edae6c2eeee017e9970b6c9" - integrity sha512-Hh/UueN9wrbpfrxegT7/712YlhZPlQ+fYDvPOty1GbAALDdPiMUg0F0YqonNXCeZUAuzX+mzxcxOoHk446GVaA== +"@dhis2-ui/status-icon@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/status-icon/-/status-icon-9.8.9.tgz#0dbbe54db69f25c614164cfb6b07fa596e5139c2" + integrity sha512-nkWPaLvraib202fnBAE9zHsJkS0ofUrpG/nrWLJujnDyokyA9EF0xpYBZH1oAQOa5HuY+YW99PUiawFJaR7TEQ== dependencies: - "@dhis2-ui/loader" "9.4.4" + "@dhis2-ui/loader" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/switch@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/switch/-/switch-9.4.4.tgz#181df81c21f369752bacabd62088b9531248ae13" - integrity sha512-MH3h3+EPtR9ZSq+fsFQSJkCxuKyzLZolcGCBPX2u+8sVmV+7AZ2P6yJ6YiAUGI9udMwZokLjPZSgp3QWwKEQQg== +"@dhis2-ui/switch@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/switch/-/switch-9.8.9.tgz#82504cfb3bca367bcf5188251872acefc29b70b2" + integrity sha512-npMmfeyHJ2Mzxm45N6kzbNJmQTBbDCOVSFjHa/ubUKH6HqML1j25iH+PwgGFxnmBGeRWbAUT7C6YUNjX3JFxqA== dependencies: - "@dhis2-ui/field" "9.4.4" - "@dhis2-ui/required" "9.4.4" + "@dhis2-ui/field" "9.8.9" + "@dhis2-ui/required" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/tab@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/tab/-/tab-9.4.4.tgz#66ef74adf7e01c8a2f68327e0616795da1b7b064" - integrity sha512-2DqkH+IhiV4uFdvMg9aVJoao2D+U3s4kP+EsUlPPvRxvf2c7P6vjcitvACVgmDBnc2EWGw0jh02QhvOgQezhLA== +"@dhis2-ui/tab@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/tab/-/tab-9.8.9.tgz#46cbaacb09273c2aca65fbad8bbf24545a37ba99" + integrity sha512-d80PZ0ObxA2TKfZ1Tp6gUfe7mG1LKWsNrv/dinIUleBOCOQKNvZmFvViQat8CIHb7tKj6k7I1+iVIQ1C2C011g== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/table@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/table/-/table-9.4.4.tgz#b93c9ea878914df7dd3147f067c00ea946602fc4" - integrity sha512-i3f8go7JE/+7OyjWXN/ePlRduOC4Pc+9w4P+Sq3VOTFgYnMEPyVpZmz9/dgNtAGTto1Lh54ISU/wxwC+TXfRxw== +"@dhis2-ui/table@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/table/-/table-9.8.9.tgz#8698475d1c68c99405ec3551fb7d2c4e56386522" + integrity sha512-diO2bkDfyGW3rv5j6u145Nkt87Lu1nEjAXg/d+SJTiRMnZnUtYRJWmH6gC79j66L9T816AXAgLHzmGx/jHeOIg== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/tag@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/tag/-/tag-9.4.4.tgz#493a2369f384cb12f1104b18e34b54d516bce740" - integrity sha512-YMKndGKVXdQo5plKYy5RsN8AD233BbGZ9uzd/zmf7u2xs9C/DcK0JL+5UCZwVX++4swXTXbuSblE3Kl26a4U9Q== +"@dhis2-ui/tag@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/tag/-/tag-9.8.9.tgz#e000b331b4b2d3b7eba13e549c8bebc6716db50d" + integrity sha512-SXk6GzSv6eQixKEQ28V2lQltj6wAup033+warFCohyIR6N6oZHZWpjUirhhGLNabqvu8x7aS9GVRbDSz+MPltA== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/text-area@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/text-area/-/text-area-9.4.4.tgz#f5d6ee3fab9c2f71b129ea6ce4b3f7d7b36e3bf5" - integrity sha512-vphcZ42dqr2kXpAbJZPyJpr911B/3dAHM/PmUIIF07CzNs3daiEiIELm38KQ1cs0Na5oqXgrdw3HZyhAo02vsw== +"@dhis2-ui/text-area@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/text-area/-/text-area-9.8.9.tgz#7bc036e9eaf4109c9be646be01b9a4ebb2317891" + integrity sha512-FIdQ2uBfOrPxtnpmDjzt7ZxoahWDkXlaAsseCNeRxFyUhG4XFzm6bGnfRDV6QFYVDknm7LTq7ZwoxM0HPShFzQ== dependencies: - "@dhis2-ui/box" "9.4.4" - "@dhis2-ui/field" "9.4.4" - "@dhis2-ui/loader" "9.4.4" - "@dhis2-ui/status-icon" "9.4.4" + "@dhis2-ui/box" "9.8.9" + "@dhis2-ui/field" "9.8.9" + "@dhis2-ui/loader" "9.8.9" + "@dhis2-ui/status-icon" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-icons" "9.4.4" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-icons" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/tooltip@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/tooltip/-/tooltip-9.4.4.tgz#268c4d0a395669522d45dd0a5720c18589887929" - integrity sha512-qCHsGMuzL9YV3OnWw0j+tK0p5e+tzUd5g7CXbHPsrhtsctgKO5u/VWYnFaJlFh2cbctqvFPpS+buLMe1jndpjw== +"@dhis2-ui/tooltip@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/tooltip/-/tooltip-9.8.9.tgz#7efeb523e3b1d60b5d48effcfc980b1d1e8872c6" + integrity sha512-6RnKzx4CkXqm4D0beEbdWNIPXocjaAu97NFKDlKp52bqXbQpDQIE8X7keFqM6wb4xzFJaFlYavZeusNlU1xfiw== dependencies: - "@dhis2-ui/popper" "9.4.4" - "@dhis2-ui/portal" "9.4.4" + "@dhis2-ui/popper" "9.8.9" + "@dhis2-ui/portal" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/transfer@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/transfer/-/transfer-9.4.4.tgz#d3f45a4a41eb35363c3f6ac57f8d499dd0ac198b" - integrity sha512-JMw2VWbybqOx5+4Sh1C9cPeiWN8xS6+ZNUivEwxOpKv/TBpeRBowOV7q0QEfzE1fGC9qyJqVxevBQhcp+2aUaA== +"@dhis2-ui/transfer@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/transfer/-/transfer-9.8.9.tgz#1198e6e93720d697ce56c0173ddf53b6e56d89a3" + integrity sha512-uSsJz9WrCbAG2fldQUEq9m+Yia+gK5jXTqqrtPn3Kz4jxqaYE4TKP5PPTmIkxXnONgorsAnp5OTawO0rx5ddFA== dependencies: - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/field" "9.4.4" - "@dhis2-ui/input" "9.4.4" - "@dhis2-ui/intersection-detector" "9.4.4" - "@dhis2-ui/loader" "9.4.4" + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/field" "9.8.9" + "@dhis2-ui/input" "9.8.9" + "@dhis2-ui/intersection-detector" "9.8.9" + "@dhis2-ui/loader" "9.8.9" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/user-avatar@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2-ui/user-avatar/-/user-avatar-9.4.4.tgz#cb97b581e288c9d6a99d5f98a66fa3c63a6b27be" - integrity sha512-GILxEnNh0KwTKEMf5RCIvwV/BOv9GUKstuyLt9o5lX7YhT8QfMC0Uwn+IMOHtV6RoaewLbn0zyZF30NlZGohwg== +"@dhis2-ui/user-avatar@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2-ui/user-avatar/-/user-avatar-9.8.9.tgz#fb3fbd5915f38fbe161ecb148542df459c770620" + integrity sha512-J0s3VDH4G1kyEzTipw4xI/UG2xA0rAIazurLTaThak3sUUlvrOVUKkeMBC9IDNff7W2swCXN4A5OiVCW8QtrBw== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.4.4" + "@dhis2/ui-constants" "9.8.9" classnames "^2.3.1" prop-types "^15.7.2" @@ -2045,12 +2045,12 @@ i18next "^10.3" moment "^2.24.0" -"@dhis2/multi-calendar-dates@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@dhis2/multi-calendar-dates/-/multi-calendar-dates-1.1.1.tgz#fb76a77114ce0b757db7dd9f588d1a47809732da" - integrity sha512-kaisVuRGfdqY/Up6sWqgc81K67ymPVoRYgYRcT29z61ol2WhiTXTSTuRX/gDO1VKjmskeB5/badRrdLMf4BBUA== +"@dhis2/multi-calendar-dates@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@dhis2/multi-calendar-dates/-/multi-calendar-dates-1.1.2.tgz#93dc265b63664b5fb54a79f9400e5196fbd6cb14" + integrity sha512-mimXXedRyd2W9UMeKbF7/YweZJi7CMxb3IOvaGgFZfKOpWxXs+LToKUisNxN9c0GcO96rguJCdmFjriWZq458Q== dependencies: - "@js-temporal/polyfill" "^0.4.2" + "@js-temporal/polyfill" "0.4.3" classnames "^2.3.2" "@dhis2/prop-types@^3.1.2": @@ -2058,91 +2058,91 @@ resolved "https://registry.yarnpkg.com/@dhis2/prop-types/-/prop-types-3.1.2.tgz#65b8ad2da8cd2f72bc8b951049a6c9d1b97af3e9" integrity sha512-eM0jjLOWvtXWqSFp5YC4DHFpkP8Y1D2eUwGV7MBWjni+o27oesVan+oT7WHeOeLdlAd4acRJrnaaAyB4Ck1wGQ== -"@dhis2/ui-constants@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-9.4.4.tgz#4fe728f96fe92752b4a033b03f2fdb1313eafeb3" - integrity sha512-O+jHTT/S3jgcHP7gxcZenpMyOfBktvoB9MVGzoVaAW5rRbYe0cCSe1Zh70h25VMVhwxBTCTIR7G3uvDWcdb5Ww== +"@dhis2/ui-constants@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-9.8.9.tgz#ce2d04d80a257eeff875ef83642311af108cf522" + integrity sha512-CLMJp/3DdcL56yIFRU6E5Qlv/fOcbwbeaj/5e8DpXAWZVhYjC4T5noAeoDt5djsyz6QtNtILCtZIfbg6Imbmeg== dependencies: prop-types "^15.7.2" -"@dhis2/ui-forms@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-9.4.4.tgz#9104665d2a57429df89caac720c59ad509328515" - integrity sha512-4QU4NXlExBqHWfoWnKIpDHB3wahDnJYO1CdZ64UcVurjdGKQdiAbX/WbrFYSpWuk8gO/DqQ8AC7JkTtpXXF9Lg== - dependencies: - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/checkbox" "9.4.4" - "@dhis2-ui/field" "9.4.4" - "@dhis2-ui/file-input" "9.4.4" - "@dhis2-ui/input" "9.4.4" - "@dhis2-ui/radio" "9.4.4" - "@dhis2-ui/select" "9.4.4" - "@dhis2-ui/switch" "9.4.4" - "@dhis2-ui/text-area" "9.4.4" +"@dhis2/ui-forms@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-9.8.9.tgz#cf42eb031cfdc3f4e78901812a9de6175b78f983" + integrity sha512-2yVip50qpEVs9KjlhxOtJRC40UBli+ERpc6sVZh1vyDkP0c4psgvoxzxAaY/ea0dIfHDQVTZ4qWHqh5ZXtJb4Q== + dependencies: + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/checkbox" "9.8.9" + "@dhis2-ui/field" "9.8.9" + "@dhis2-ui/file-input" "9.8.9" + "@dhis2-ui/input" "9.8.9" + "@dhis2-ui/radio" "9.8.9" + "@dhis2-ui/select" "9.8.9" + "@dhis2-ui/switch" "9.8.9" + "@dhis2-ui/text-area" "9.8.9" "@dhis2/prop-types" "^3.1.2" classnames "^2.3.1" final-form "^4.20.2" prop-types "^15.7.2" react-final-form "^6.5.3" -"@dhis2/ui-icons@9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-9.4.4.tgz#c4f488496389687ebd47266e93e0aacf27054ef3" - integrity sha512-AGt+aYqpqb7f/2IH5quZ1bJoSz/WB3p7I1CdZHUPk/XP6rQpO2W7mqoLxiZYOHCiNlTU+sjfXcYauHaWZSTdjw== - -"@dhis2/ui@^9.4.4": - version "9.4.4" - resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-9.4.4.tgz#ae7961d42753d72e209f7d11b160b3179e6a6452" - integrity sha512-w1NMZy/S5tNbXGt7F5J5OM1P8qgq1Bo1ifV34YV3Cs+8rJYkHHsFOokUN+wSTdXUWqIKxOGrRoQkmgmjQ19WlA== - dependencies: - "@dhis2-ui/alert" "9.4.4" - "@dhis2-ui/box" "9.4.4" - "@dhis2-ui/button" "9.4.4" - "@dhis2-ui/calendar" "9.4.4" - "@dhis2-ui/card" "9.4.4" - "@dhis2-ui/center" "9.4.4" - "@dhis2-ui/checkbox" "9.4.4" - "@dhis2-ui/chip" "9.4.4" - "@dhis2-ui/cover" "9.4.4" - "@dhis2-ui/css" "9.4.4" - "@dhis2-ui/divider" "9.4.4" - "@dhis2-ui/field" "9.4.4" - "@dhis2-ui/file-input" "9.4.4" - "@dhis2-ui/header-bar" "9.4.4" - "@dhis2-ui/help" "9.4.4" - "@dhis2-ui/input" "9.4.4" - "@dhis2-ui/intersection-detector" "9.4.4" - "@dhis2-ui/label" "9.4.4" - "@dhis2-ui/layer" "9.4.4" - "@dhis2-ui/legend" "9.4.4" - "@dhis2-ui/loader" "9.4.4" - "@dhis2-ui/logo" "9.4.4" - "@dhis2-ui/menu" "9.4.4" - "@dhis2-ui/modal" "9.4.4" - "@dhis2-ui/node" "9.4.4" - "@dhis2-ui/notice-box" "9.4.4" - "@dhis2-ui/organisation-unit-tree" "9.4.4" - "@dhis2-ui/pagination" "9.4.4" - "@dhis2-ui/popover" "9.4.4" - "@dhis2-ui/popper" "9.4.4" - "@dhis2-ui/portal" "9.4.4" - "@dhis2-ui/radio" "9.4.4" - "@dhis2-ui/required" "9.4.4" - "@dhis2-ui/segmented-control" "9.4.4" - "@dhis2-ui/select" "9.4.4" - "@dhis2-ui/selector-bar" "9.4.4" - "@dhis2-ui/sharing-dialog" "9.4.4" - "@dhis2-ui/switch" "9.4.4" - "@dhis2-ui/tab" "9.4.4" - "@dhis2-ui/table" "9.4.4" - "@dhis2-ui/tag" "9.4.4" - "@dhis2-ui/text-area" "9.4.4" - "@dhis2-ui/tooltip" "9.4.4" - "@dhis2-ui/transfer" "9.4.4" - "@dhis2-ui/user-avatar" "9.4.4" - "@dhis2/ui-constants" "9.4.4" - "@dhis2/ui-forms" "9.4.4" - "@dhis2/ui-icons" "9.4.4" +"@dhis2/ui-icons@9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-9.8.9.tgz#6fdc927d3e773bd6530c85bcce9c36ba3e787c4a" + integrity sha512-+7vS14U1l/vud107hvQlnCPW2WfkNdf6O8bi7TOe3OcT6qt84/vnDh0Hdpruk8QHr6u+5aHwzkAZOM/Hcz8wwA== + +"@dhis2/ui@^9.8.9": + version "9.8.9" + resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-9.8.9.tgz#c0a8cfabeaedd0845f632f074fca93ab75011d32" + integrity sha512-BXNHkTMQTIhaaf+TGUmZJHwmiylMyhdDaYqrnzw3t89oTaroWCwDTiPsxcs3VCQuva0TzYSRM3kf0LGiBClppg== + dependencies: + "@dhis2-ui/alert" "9.8.9" + "@dhis2-ui/box" "9.8.9" + "@dhis2-ui/button" "9.8.9" + "@dhis2-ui/calendar" "9.8.9" + "@dhis2-ui/card" "9.8.9" + "@dhis2-ui/center" "9.8.9" + "@dhis2-ui/checkbox" "9.8.9" + "@dhis2-ui/chip" "9.8.9" + "@dhis2-ui/cover" "9.8.9" + "@dhis2-ui/css" "9.8.9" + "@dhis2-ui/divider" "9.8.9" + "@dhis2-ui/field" "9.8.9" + "@dhis2-ui/file-input" "9.8.9" + "@dhis2-ui/header-bar" "9.8.9" + "@dhis2-ui/help" "9.8.9" + "@dhis2-ui/input" "9.8.9" + "@dhis2-ui/intersection-detector" "9.8.9" + "@dhis2-ui/label" "9.8.9" + "@dhis2-ui/layer" "9.8.9" + "@dhis2-ui/legend" "9.8.9" + "@dhis2-ui/loader" "9.8.9" + "@dhis2-ui/logo" "9.8.9" + "@dhis2-ui/menu" "9.8.9" + "@dhis2-ui/modal" "9.8.9" + "@dhis2-ui/node" "9.8.9" + "@dhis2-ui/notice-box" "9.8.9" + "@dhis2-ui/organisation-unit-tree" "9.8.9" + "@dhis2-ui/pagination" "9.8.9" + "@dhis2-ui/popover" "9.8.9" + "@dhis2-ui/popper" "9.8.9" + "@dhis2-ui/portal" "9.8.9" + "@dhis2-ui/radio" "9.8.9" + "@dhis2-ui/required" "9.8.9" + "@dhis2-ui/segmented-control" "9.8.9" + "@dhis2-ui/select" "9.8.9" + "@dhis2-ui/selector-bar" "9.8.9" + "@dhis2-ui/sharing-dialog" "9.8.9" + "@dhis2-ui/switch" "9.8.9" + "@dhis2-ui/tab" "9.8.9" + "@dhis2-ui/table" "9.8.9" + "@dhis2-ui/tag" "9.8.9" + "@dhis2-ui/text-area" "9.8.9" + "@dhis2-ui/tooltip" "9.8.9" + "@dhis2-ui/transfer" "9.8.9" + "@dhis2-ui/user-avatar" "9.8.9" + "@dhis2/ui-constants" "9.8.9" + "@dhis2/ui-forms" "9.8.9" + "@dhis2/ui-icons" "9.8.9" prop-types "^15.7.2" "@eslint/eslintrc@^0.4.3": @@ -2472,7 +2472,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@js-temporal/polyfill@^0.4.2": +"@js-temporal/polyfill@0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@js-temporal/polyfill/-/polyfill-0.4.3.tgz#e8f8cf86745eb5050679c46a5ebedb9a9cc1f09b" integrity sha512-6Fmjo/HlkyVCmJzAPnvtEWlcbQUSRhi8qlN9EtJA/wP7FqXsevLLrlojR44kzNzrRkpf7eDJ+z7b4xQD/Ycypw== From 824dd2f877d03a7c4d492dff8999e72421297165 Mon Sep 17 00:00:00 2001 From: Flaminia Cavallo Date: Mon, 24 Jun 2024 11:30:21 +0200 Subject: [PATCH 02/11] fix: small text change in changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b589df01..781b657d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,7 @@ ### Bug Fixes -* don't start plugins for apps without a plugin entrypoint ([#850](https://github.com/dhis2/app-platform/issues/850)) ([a89d4cf](https://github.com/dhis2/app-platform/commit/a89d4cf348f7edc0a52b8ab9aacf96f2de939de4)) +* do not start plugins for apps without a plugin entrypoint ([#850](https://github.com/dhis2/app-platform/issues/850)) ([a89d4cf](https://github.com/dhis2/app-platform/commit/a89d4cf348f7edc0a52b8ab9aacf96f2de939de4)) # [11.3.0](https://github.com/dhis2/app-platform/compare/v11.2.2...v11.3.0) (2024-05-30) From 835b8877d2f545c2170ea97f02d13eb4f2c8c527 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Mon, 24 Jun 2024 09:59:57 +0000 Subject: [PATCH 03/11] chore(release): cut 11.4.3 [skip release] ## [11.4.3](https://github.com/dhis2/app-platform/compare/v11.4.2...v11.4.3) (2024-06-24) ### Bug Fixes * small text change in changelog ([824dd2f](https://github.com/dhis2/app-platform/commit/824dd2f877d03a7c4d492dff8999e72421297165)) --- CHANGELOG.md | 7 +++++++ adapter/package.json | 6 +++--- cli/package.json | 4 ++-- examples/pwa-app/package.json | 2 +- examples/simple-app/package.json | 2 +- package.json | 2 +- pwa/package.json | 4 ++-- shell/package.json | 6 +++--- 8 files changed, 20 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 781b657d..99c4dbe6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [11.4.3](https://github.com/dhis2/app-platform/compare/v11.4.2...v11.4.3) (2024-06-24) + + +### Bug Fixes + +* small text change in changelog ([824dd2f](https://github.com/dhis2/app-platform/commit/824dd2f877d03a7c4d492dff8999e72421297165)) + ## [11.4.2](https://github.com/dhis2/app-platform/compare/v11.4.1...v11.4.2) (2024-06-18) diff --git a/adapter/package.json b/adapter/package.json index dbb76da5..a791e45a 100644 --- a/adapter/package.json +++ b/adapter/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-adapter", - "version": "11.4.2", + "version": "11.4.3", "repository": { "type": "git", "url": "https://github.com/amcgee/dhis2-app-platform", @@ -21,11 +21,11 @@ "build" ], "dependencies": { - "@dhis2/pwa": "11.4.2", + "@dhis2/pwa": "11.4.3", "moment": "^2.24.0" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.4.2", + "@dhis2/cli-app-scripts": "11.4.3", "@testing-library/react": "^12.0.0", "@testing-library/react-hooks": "^8.0.1", "enzyme": "^3.11.0", diff --git a/cli/package.json b/cli/package.json index d00e2959..8ca2c612 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/cli-app-scripts", - "version": "11.4.2", + "version": "11.4.3", "engines": { "node": ">=14" }, @@ -28,7 +28,7 @@ "@babel/preset-env": "^7.14.7", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.6.0", - "@dhis2/app-shell": "11.4.2", + "@dhis2/app-shell": "11.4.3", "@dhis2/cli-helpers-engine": "^3.2.0", "@jest/core": "^27.0.6", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4", diff --git a/examples/pwa-app/package.json b/examples/pwa-app/package.json index e611828d..42730664 100644 --- a/examples/pwa-app/package.json +++ b/examples/pwa-app/package.json @@ -1,6 +1,6 @@ { "name": "pwa-app", - "version": "11.4.2", + "version": "11.4.3", "description": "", "license": "BSD-3-Clause", "private": true, diff --git a/examples/simple-app/package.json b/examples/simple-app/package.json index 3c7c9e6e..44284b9c 100644 --- a/examples/simple-app/package.json +++ b/examples/simple-app/package.json @@ -1,6 +1,6 @@ { "name": "simple-app", - "version": "11.4.2", + "version": "11.4.3", "repository": "https://github.com/amcgee/dhis2-app-platform", "author": "Austin McGee ", "license": "BSD-3-Clause", diff --git a/package.json b/package.json index d514e495..2ed47eba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "11.4.2", + "version": "11.4.3", "private": true, "repository": { "type": "git", diff --git a/pwa/package.json b/pwa/package.json index d6a63970..2d65a1d2 100644 --- a/pwa/package.json +++ b/pwa/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/pwa", - "version": "11.4.2", + "version": "11.4.3", "description": "", "license": "BSD-3-Clause", "publishConfig": { @@ -13,7 +13,7 @@ "deploy": "d2-app-scripts deploy" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.4.2" + "@dhis2/cli-app-scripts": "11.4.3" }, "dependencies": { "idb": "^6.0.0", diff --git a/shell/package.json b/shell/package.json index 6156b2b8..2dccad20 100644 --- a/shell/package.json +++ b/shell/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-shell", - "version": "11.4.2", + "version": "11.4.3", "engines": { "node": ">=14" }, @@ -15,10 +15,10 @@ "access": "public" }, "dependencies": { - "@dhis2/app-adapter": "11.4.2", + "@dhis2/app-adapter": "11.4.3", "@dhis2/app-runtime": "^3.10.4", "@dhis2/d2-i18n": "^1.1.1", - "@dhis2/pwa": "11.4.2", + "@dhis2/pwa": "11.4.3", "@dhis2/ui": "^9.8.9", "classnames": "^2.2.6", "moment": "^2.29.1", From de252fef91c5037b8b1c238ce25c7e3b90f7c20e Mon Sep 17 00:00:00 2001 From: Thomas Zemp Date: Mon, 24 Jun 2024 13:13:00 +0200 Subject: [PATCH 04/11] feat: cleanup plugin error boundary [UX-136] (#856) --- adapter/i18n/en.pot | 13 +++-- adapter/src/components/ErrorBoundary.js | 50 +++++++++++++++++-- adapter/src/components/styles/Button.style.js | 14 +++++- .../components/styles/ErrorBoundary.style.js | 27 ++++++++-- shell/src/PluginOuterErrorBoundary.js | 46 ++++++++++++++++- 5 files changed, 134 insertions(+), 16 deletions(-) diff --git a/adapter/i18n/en.pot b/adapter/i18n/en.pot index da6efefa..7cd6b8da 100644 --- a/adapter/i18n/en.pot +++ b/adapter/i18n/en.pot @@ -5,8 +5,8 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"POT-Creation-Date: 2024-04-24T13:58:13.591Z\n" -"PO-Revision-Date: 2024-04-24T13:58:13.591Z\n" +"POT-Creation-Date: 2024-06-21T08:27:55.991Z\n" +"PO-Revision-Date: 2024-06-21T08:27:55.991Z\n" msgid "Save your data" msgstr "Save your data" @@ -39,6 +39,12 @@ msgstr "An error occurred in the DHIS2 application." msgid "Technical details copied to clipboard" msgstr "Technical details copied to clipboard" +msgid "There was a problem loading this plugin" +msgstr "There was a problem loading this plugin" + +msgid "Copy debug info to clipboard" +msgstr "Copy debug info to clipboard" + msgid "Try again" msgstr "Try again" @@ -48,9 +54,6 @@ msgstr "Something went wrong" msgid "Redirect to safe login mode" msgstr "Redirect to safe login mode" -msgid "Redirect to safe login mode" -msgstr "Redirect to safe login mode" - msgid "Hide technical details" msgstr "Hide technical details" diff --git a/adapter/src/components/ErrorBoundary.js b/adapter/src/components/ErrorBoundary.js index 6365848d..e8049e84 100644 --- a/adapter/src/components/ErrorBoundary.js +++ b/adapter/src/components/ErrorBoundary.js @@ -8,18 +8,35 @@ import styles from './styles/ErrorBoundary.style.js' // In order to avoid using @dhis2/ui components in the error boundary - as anything // that breaks within it will not be caught properly - we define a component // with the same styles as Button -const UIButton = ({ children, onClick }) => ( +const UIButton = ({ children, onClick, plugin }) => ( <> - + ) UIButton.propTypes = { children: PropTypes.node.isRequired, onClick: PropTypes.func.isRequired, + plugin: PropTypes.bool, } +const InfoIcon24 = () => ( + + + +) + const translatedErrorHeading = i18n.t( 'An error occurred in the DHIS2 application.' ) @@ -61,6 +78,13 @@ export class ErrorBoundary extends Component { }) } + handleCopyErrorDetailsPlugin = ({ error, errorInfo }) => { + const errorDetails = `${error}\n${error?.stack}\n${errorInfo?.componentStack}` + navigator.clipboard.writeText(errorDetails).then(() => { + alert(i18n.t('Technical details copied to clipboard')) + }) + } + handleSafeLoginRedirect = () => { window.location.href = this.props.baseURL + @@ -77,10 +101,26 @@ export class ErrorBoundary extends Component { <>
- I am the default plugin boundary + +
+ {i18n.t( + 'There was a problem loading this plugin' + )} +
+
{ + this.handleCopyErrorDetailsPlugin({ + error: this.state.error, + errorInfo: this.state.errorInfo, + }) + }} + > + {i18n.t('Copy debug info to clipboard')} +
{onRetry && ( -
- +
+ {i18n.t('Try again')}
diff --git a/adapter/src/components/styles/Button.style.js b/adapter/src/components/styles/Button.style.js index b251dce3..b096d000 100644 --- a/adapter/src/components/styles/Button.style.js +++ b/adapter/src/components/styles/Button.style.js @@ -7,7 +7,8 @@ import css from 'styled-jsx/css' const grey900 = '#21934', grey500 = '#a0adba', grey200 = '#f3f5f7', - primary600 = '#147cd7' + primary600 = '#147cd7', + grey600 = '#6C7787' export default css` button { @@ -87,4 +88,15 @@ export default css` button:focus::after { border-color: ${primary600}; } + + .pluginButton { + /*small*/ + height: 28px; + padding: 0 6px; + font-size: 14px; + line-height: 16px; + + /*text color for plugin error*/ + color: ${grey600}; + } ` diff --git a/adapter/src/components/styles/ErrorBoundary.style.js b/adapter/src/components/styles/ErrorBoundary.style.js index cceaa76c..3ab75c0b 100644 --- a/adapter/src/components/styles/ErrorBoundary.style.js +++ b/adapter/src/components/styles/ErrorBoundary.style.js @@ -6,7 +6,8 @@ const bgColor = '#F4F6F8', secondaryTextColor = '#494949', errorColor = '#D32F2F', grey050 = '#FBFCFD', - red200 = '#ffcdd2' + grey100 = '#F8F9FA', + grey600 = '#6C7787' export default css` .mask { @@ -103,10 +104,28 @@ export default css` } .pluginBoundary { - background-color: ${red200}; + background-color: ${grey100}; + height: 100vh; + width: 100vw; + display: flex; + flex-direction: column; + align-items: center; + padding-block-start: 16px; + } + + .pluginErrorMessage { + margin-block-start: 8px; + color: ${grey600}; + } + + .pluginErrorCopy { + margin-block-start: 8px; + color: ${grey600}; + text-decoration: underline; + font-size: 14px; } - .pluginBoundary span { - display: inline-block; + .pluginRetry { + margin-block-start: 16px; } ` diff --git a/shell/src/PluginOuterErrorBoundary.js b/shell/src/PluginOuterErrorBoundary.js index 38f7092a..697490cb 100644 --- a/shell/src/PluginOuterErrorBoundary.js +++ b/shell/src/PluginOuterErrorBoundary.js @@ -1,6 +1,23 @@ import PropTypes from 'prop-types' import React, { Component } from 'react' +const grey100 = '#F8F9FA', + grey600 = '#6C7787' + +const InfoIcon24 = () => ( + + + +) + export class PluginOuterErrorBoundary extends Component { constructor(props) { super(props) @@ -20,7 +37,34 @@ export class PluginOuterErrorBoundary extends Component { render() { const { children } = this.props if (this.state.error) { - return

Plugin outermost error boundary

+ return ( + <> +
+ +
+ There was a problem loading this plugin +
+
+ + + ) } return children From 949ea83049d4a25ad05dde9280cba9c6e4a38ed0 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Mon, 24 Jun 2024 11:27:51 +0000 Subject: [PATCH 05/11] chore(release): cut 11.5.0 [skip release] # [11.5.0](https://github.com/dhis2/app-platform/compare/v11.4.3...v11.5.0) (2024-06-24) ### Features * cleanup plugin error boundary [UX-136] ([#856](https://github.com/dhis2/app-platform/issues/856)) ([de252fe](https://github.com/dhis2/app-platform/commit/de252fef91c5037b8b1c238ce25c7e3b90f7c20e)) --- CHANGELOG.md | 7 +++++++ adapter/package.json | 6 +++--- cli/package.json | 4 ++-- examples/pwa-app/package.json | 2 +- examples/simple-app/package.json | 2 +- package.json | 2 +- pwa/package.json | 4 ++-- shell/package.json | 6 +++--- 8 files changed, 20 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99c4dbe6..c95b721a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [11.5.0](https://github.com/dhis2/app-platform/compare/v11.4.3...v11.5.0) (2024-06-24) + + +### Features + +* cleanup plugin error boundary [UX-136] ([#856](https://github.com/dhis2/app-platform/issues/856)) ([de252fe](https://github.com/dhis2/app-platform/commit/de252fef91c5037b8b1c238ce25c7e3b90f7c20e)) + ## [11.4.3](https://github.com/dhis2/app-platform/compare/v11.4.2...v11.4.3) (2024-06-24) diff --git a/adapter/package.json b/adapter/package.json index a791e45a..fa01da86 100644 --- a/adapter/package.json +++ b/adapter/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-adapter", - "version": "11.4.3", + "version": "11.5.0", "repository": { "type": "git", "url": "https://github.com/amcgee/dhis2-app-platform", @@ -21,11 +21,11 @@ "build" ], "dependencies": { - "@dhis2/pwa": "11.4.3", + "@dhis2/pwa": "11.5.0", "moment": "^2.24.0" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.4.3", + "@dhis2/cli-app-scripts": "11.5.0", "@testing-library/react": "^12.0.0", "@testing-library/react-hooks": "^8.0.1", "enzyme": "^3.11.0", diff --git a/cli/package.json b/cli/package.json index 8ca2c612..1de47ab2 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/cli-app-scripts", - "version": "11.4.3", + "version": "11.5.0", "engines": { "node": ">=14" }, @@ -28,7 +28,7 @@ "@babel/preset-env": "^7.14.7", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.6.0", - "@dhis2/app-shell": "11.4.3", + "@dhis2/app-shell": "11.5.0", "@dhis2/cli-helpers-engine": "^3.2.0", "@jest/core": "^27.0.6", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4", diff --git a/examples/pwa-app/package.json b/examples/pwa-app/package.json index 42730664..6248d9d4 100644 --- a/examples/pwa-app/package.json +++ b/examples/pwa-app/package.json @@ -1,6 +1,6 @@ { "name": "pwa-app", - "version": "11.4.3", + "version": "11.5.0", "description": "", "license": "BSD-3-Clause", "private": true, diff --git a/examples/simple-app/package.json b/examples/simple-app/package.json index 44284b9c..bd729746 100644 --- a/examples/simple-app/package.json +++ b/examples/simple-app/package.json @@ -1,6 +1,6 @@ { "name": "simple-app", - "version": "11.4.3", + "version": "11.5.0", "repository": "https://github.com/amcgee/dhis2-app-platform", "author": "Austin McGee ", "license": "BSD-3-Clause", diff --git a/package.json b/package.json index 2ed47eba..f5697052 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "11.4.3", + "version": "11.5.0", "private": true, "repository": { "type": "git", diff --git a/pwa/package.json b/pwa/package.json index 2d65a1d2..805a5577 100644 --- a/pwa/package.json +++ b/pwa/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/pwa", - "version": "11.4.3", + "version": "11.5.0", "description": "", "license": "BSD-3-Clause", "publishConfig": { @@ -13,7 +13,7 @@ "deploy": "d2-app-scripts deploy" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.4.3" + "@dhis2/cli-app-scripts": "11.5.0" }, "dependencies": { "idb": "^6.0.0", diff --git a/shell/package.json b/shell/package.json index 2dccad20..7c57df56 100644 --- a/shell/package.json +++ b/shell/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-shell", - "version": "11.4.3", + "version": "11.5.0", "engines": { "node": ">=14" }, @@ -15,10 +15,10 @@ "access": "public" }, "dependencies": { - "@dhis2/app-adapter": "11.4.3", + "@dhis2/app-adapter": "11.5.0", "@dhis2/app-runtime": "^3.10.4", "@dhis2/d2-i18n": "^1.1.1", - "@dhis2/pwa": "11.4.3", + "@dhis2/pwa": "11.5.0", "@dhis2/ui": "^9.8.9", "classnames": "^2.2.6", "moment": "^2.29.1", From 1f717f391b96a88186c897b9b886e11d6168c87c Mon Sep 17 00:00:00 2001 From: Thomas Zemp Date: Mon, 1 Jul 2024 12:19:13 +0200 Subject: [PATCH 06/11] fix: fixed dimensions plugins [LIBS-634] (#858) --- shell/src/PluginLoader.js | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/shell/src/PluginLoader.js b/shell/src/PluginLoader.js index 426fca57..bec41c23 100644 --- a/shell/src/PluginLoader.js +++ b/shell/src/PluginLoader.js @@ -4,7 +4,7 @@ import postRobot from 'post-robot' import PropTypes from 'prop-types' import React, { useCallback, useEffect, useRef, useState } from 'react' -const PluginInner = ({ +const PluginResizeInner = ({ D2App, config, propsFromParent, @@ -63,6 +63,41 @@ const PluginInner = ({ ) } +PluginResizeInner.propTypes = { + D2App: PropTypes.object, + config: PropTypes.object, + propsFromParent: PropTypes.object, + resizePluginHeight: PropTypes.func, + resizePluginWidth: PropTypes.func, +} + +const PluginInner = ({ + D2App, + config, + propsFromParent, + resizePluginHeight, + resizePluginWidth, +}) => { + if (!resizePluginHeight && !resizePluginWidth) { + return ( + + ) + } + return ( + + ) +} + PluginInner.propTypes = { D2App: PropTypes.object, config: PropTypes.object, From 0d7d4de9d12e82c75fd128aa3bcf1fc7ccf88258 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Mon, 1 Jul 2024 10:33:39 +0000 Subject: [PATCH 07/11] chore(release): cut 11.5.1 [skip release] ## [11.5.1](https://github.com/dhis2/app-platform/compare/v11.5.0...v11.5.1) (2024-07-01) ### Bug Fixes * fixed dimensions plugins [LIBS-634] ([#858](https://github.com/dhis2/app-platform/issues/858)) ([1f717f3](https://github.com/dhis2/app-platform/commit/1f717f391b96a88186c897b9b886e11d6168c87c)) --- CHANGELOG.md | 7 +++++++ adapter/package.json | 6 +++--- cli/package.json | 4 ++-- examples/pwa-app/package.json | 2 +- examples/simple-app/package.json | 2 +- package.json | 2 +- pwa/package.json | 4 ++-- shell/package.json | 6 +++--- 8 files changed, 20 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c95b721a..16f104d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [11.5.1](https://github.com/dhis2/app-platform/compare/v11.5.0...v11.5.1) (2024-07-01) + + +### Bug Fixes + +* fixed dimensions plugins [LIBS-634] ([#858](https://github.com/dhis2/app-platform/issues/858)) ([1f717f3](https://github.com/dhis2/app-platform/commit/1f717f391b96a88186c897b9b886e11d6168c87c)) + # [11.5.0](https://github.com/dhis2/app-platform/compare/v11.4.3...v11.5.0) (2024-06-24) diff --git a/adapter/package.json b/adapter/package.json index fa01da86..9f02b0ce 100644 --- a/adapter/package.json +++ b/adapter/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-adapter", - "version": "11.5.0", + "version": "11.5.1", "repository": { "type": "git", "url": "https://github.com/amcgee/dhis2-app-platform", @@ -21,11 +21,11 @@ "build" ], "dependencies": { - "@dhis2/pwa": "11.5.0", + "@dhis2/pwa": "11.5.1", "moment": "^2.24.0" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.5.0", + "@dhis2/cli-app-scripts": "11.5.1", "@testing-library/react": "^12.0.0", "@testing-library/react-hooks": "^8.0.1", "enzyme": "^3.11.0", diff --git a/cli/package.json b/cli/package.json index 1de47ab2..25a731cf 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/cli-app-scripts", - "version": "11.5.0", + "version": "11.5.1", "engines": { "node": ">=14" }, @@ -28,7 +28,7 @@ "@babel/preset-env": "^7.14.7", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.6.0", - "@dhis2/app-shell": "11.5.0", + "@dhis2/app-shell": "11.5.1", "@dhis2/cli-helpers-engine": "^3.2.0", "@jest/core": "^27.0.6", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4", diff --git a/examples/pwa-app/package.json b/examples/pwa-app/package.json index 6248d9d4..cd61da7c 100644 --- a/examples/pwa-app/package.json +++ b/examples/pwa-app/package.json @@ -1,6 +1,6 @@ { "name": "pwa-app", - "version": "11.5.0", + "version": "11.5.1", "description": "", "license": "BSD-3-Clause", "private": true, diff --git a/examples/simple-app/package.json b/examples/simple-app/package.json index bd729746..62ea593f 100644 --- a/examples/simple-app/package.json +++ b/examples/simple-app/package.json @@ -1,6 +1,6 @@ { "name": "simple-app", - "version": "11.5.0", + "version": "11.5.1", "repository": "https://github.com/amcgee/dhis2-app-platform", "author": "Austin McGee ", "license": "BSD-3-Clause", diff --git a/package.json b/package.json index f5697052..212708c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "11.5.0", + "version": "11.5.1", "private": true, "repository": { "type": "git", diff --git a/pwa/package.json b/pwa/package.json index 805a5577..af5f487f 100644 --- a/pwa/package.json +++ b/pwa/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/pwa", - "version": "11.5.0", + "version": "11.5.1", "description": "", "license": "BSD-3-Clause", "publishConfig": { @@ -13,7 +13,7 @@ "deploy": "d2-app-scripts deploy" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.5.0" + "@dhis2/cli-app-scripts": "11.5.1" }, "dependencies": { "idb": "^6.0.0", diff --git a/shell/package.json b/shell/package.json index 7c57df56..638aeae0 100644 --- a/shell/package.json +++ b/shell/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-shell", - "version": "11.5.0", + "version": "11.5.1", "engines": { "node": ">=14" }, @@ -15,10 +15,10 @@ "access": "public" }, "dependencies": { - "@dhis2/app-adapter": "11.5.0", + "@dhis2/app-adapter": "11.5.1", "@dhis2/app-runtime": "^3.10.4", "@dhis2/d2-i18n": "^1.1.1", - "@dhis2/pwa": "11.5.0", + "@dhis2/pwa": "11.5.1", "@dhis2/ui": "^9.8.9", "classnames": "^2.2.6", "moment": "^2.29.1", From 62782fed6f59a439ab2ef7f00c7e7d88110a78bf Mon Sep 17 00:00:00 2001 From: Kai Vandivier <49666798+KaiVandivier@users.noreply.github.com> Date: Wed, 3 Jul 2024 15:22:49 +0200 Subject: [PATCH 08/11] feat: parse additional namespaces from `d2.config.js` and add to `manifest.webapp` [LIBS-638] (#860) * feat: add `additionalNamespaces` config to manifest.webapp * docs: additional namespaces * docs: fix typo --- cli/src/lib/generateManifests.js | 5 ++ cli/src/lib/parseAdditionalNamespaces.js | 62 +++++++++++++++ cli/src/lib/parseAdditionalNamespaces.test.js | 79 +++++++++++++++++++ docs/config/d2-config-js-reference.md | 77 +++++++++++++----- examples/simple-app/d2.config.js | 11 +++ 5 files changed, 213 insertions(+), 21 deletions(-) create mode 100644 cli/src/lib/parseAdditionalNamespaces.js create mode 100644 cli/src/lib/parseAdditionalNamespaces.test.js diff --git a/cli/src/lib/generateManifests.js b/cli/src/lib/generateManifests.js index 5685049e..5ed866c3 100644 --- a/cli/src/lib/generateManifests.js +++ b/cli/src/lib/generateManifests.js @@ -1,6 +1,7 @@ const { reporter, chalk } = require('@dhis2/cli-helpers-engine') const fs = require('fs-extra') const { getOriginalEntrypoints } = require('./getOriginalEntrypoints') +const { parseAdditionalNamespaces } = require('./parseAdditionalNamespaces') const parseCustomAuthorities = (authorities) => { if (!authorities) { @@ -90,6 +91,7 @@ module.exports = (paths, config, publicUrl) => { }, { src: 'safari-pinned-tab.svg', + sizes: '16x16', type: 'image/svg+xml', }, ], @@ -126,6 +128,9 @@ module.exports = (paths, config, publicUrl) => { dhis: { href: '*', namespace: parseDataStoreNamespace(config.dataStoreNamespace), + additionalNamespaces: parseAdditionalNamespaces( + config.additionalNamespaces + ), }, }, authorities: parseCustomAuthorities(config.customAuthorities), diff --git a/cli/src/lib/parseAdditionalNamespaces.js b/cli/src/lib/parseAdditionalNamespaces.js new file mode 100644 index 00000000..b834057f --- /dev/null +++ b/cli/src/lib/parseAdditionalNamespaces.js @@ -0,0 +1,62 @@ +const { reporter, chalk } = require('@dhis2/cli-helpers-engine') + +const parseAdditionalNamespaces = (additionalNamespaces) => { + if (!additionalNamespaces) { + return undefined + } + if (!Array.isArray(additionalNamespaces)) { + reporter.warn( + `Invalid value ${chalk.bold( + JSON.stringify(additionalNamespaces) + )} specified for ${chalk.bold( + 'additionalNamespaces' + )} -- must be an array of objects, skipping.` + ) + return undefined + } + + const filteredNamespaces = additionalNamespaces.filter( + (additionalNamespace, index) => { + const msg = `Invalid namespace ${chalk.bold( + JSON.stringify(additionalNamespace) + )} specified at ${chalk.bold(`index ${index}`)} of ${chalk.bold( + 'additionalNamespaces' + )} -- see d2.config.js documentation for the correct form. Skipping.` + const { + namespace, + authorities, + readAuthorities, + writeAuthorities, + } = additionalNamespace + + const namespacePropIsString = typeof namespace === 'string' + const definedAuthsProps = [ + authorities, + readAuthorities, + writeAuthorities, + ].filter((auths) => auths !== undefined) + const definedAuthsPropsAreValid = + Array.isArray(definedAuthsProps) && + definedAuthsProps.every( + (auths) => + Array.isArray(auths) && + auths.every((auth) => typeof auth === 'string') + ) + + const additionalNamespaceIsValid = + namespacePropIsString && + definedAuthsProps.length > 0 && + definedAuthsPropsAreValid + if (!additionalNamespaceIsValid) { + reporter.warn(msg) + return false // skip this additional namespace + } + + return true + } + ) + + return filteredNamespaces +} + +exports.parseAdditionalNamespaces = parseAdditionalNamespaces diff --git a/cli/src/lib/parseAdditionalNamespaces.test.js b/cli/src/lib/parseAdditionalNamespaces.test.js new file mode 100644 index 00000000..b9ed1439 --- /dev/null +++ b/cli/src/lib/parseAdditionalNamespaces.test.js @@ -0,0 +1,79 @@ +const { reporter } = require('@dhis2/cli-helpers-engine') +const { parseAdditionalNamespaces } = require('./parseAdditionalNamespaces') + +jest.mock('@dhis2/cli-helpers-engine', () => ({ + reporter: { warn: jest.fn() }, + chalk: { bold: jest.fn().mockImplementation((input) => input) }, +})) + +test('undefined', () => { + const output = parseAdditionalNamespaces(undefined) + expect(output).toBe(undefined) + expect(reporter.warn).toHaveBeenCalledTimes(0) +}) + +test('the happy path', () => { + const additionalNamespaces = [ + { namespace: 'extra1', authorities: ['M_extra1'] }, + { namespace: 'extra2', readAuthorities: ['M_extra2read'] }, + { namespace: 'extra3', writeAuthorities: ['M_extra3write'] }, + { + namespace: 'extra4', + authorities: ['M_extra4readwrite'], + writeAuthotities: ['M_extra4write'], + }, + ] + + const output = parseAdditionalNamespaces(additionalNamespaces) + expect(output).toEqual(additionalNamespaces) + expect(reporter.warn).toHaveBeenCalledTimes(0) +}) + +describe('handling faults', () => { + test('additionalNamespaces is not an array', () => { + const additionalNamespaces = { + namespace: 'extra1', + authorities: ['M_extra1'], + } + + const output = parseAdditionalNamespaces(additionalNamespaces) + + expect(output).toBe(undefined) + expect(reporter.warn).toHaveBeenCalledTimes(1) + }) + + test('invalid namespace options get filtered out', () => { + const testNamespaces = [ + { namespace: 'no-authorities' }, + { authorities: ['F_MISSING-NAMESPACE-STRING'] }, + { + namespace: 'valid-namespace-1', + readAuthorities: ['M_extra-read'], + writeAuthorities: ['M_extra-write'], + }, + { namespace: ['not-a-string'], readAuthorities: ['M_extra2read'] }, + { + namespace: 'invalid-value-type', + readAuthorities: 'should-be-an-array', + }, + { + namespace: 'one-correct-auths-prop-one-error', + readAuthorities: ['M_extra-read'], + writeAuthorities: 'should-be-an-array', + }, + { + namespace: 'valid-namespace-2', + writeAuthorities: ['M_extra-write'], + }, + { + namespace: 'valid-namespace-3', + authorities: ['M_extra-readwrite'], + writeAuthotities: ['M_extra-write'], + }, + ] + + const output = parseAdditionalNamespaces(testNamespaces) + expect(output).toEqual([testNamespaces[2], ...testNamespaces.slice(-2)]) + expect(reporter.warn).toHaveBeenCalledTimes(6) + }) +}) diff --git a/docs/config/d2-config-js-reference.md b/docs/config/d2-config-js-reference.md index 78752ede..fb202cc9 100644 --- a/docs/config/d2-config-js-reference.md +++ b/docs/config/d2-config-js-reference.md @@ -11,27 +11,28 @@ All properties are technically optional, but it is recommended to set them expli The following configuration properties are supported: -| Property | Type | Default | Description | -| :--------------------: | :---------------------------: | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **type** | _string_ | **app** | Either **app**, **login_app** or **lib** | -| **name** | _string_ | `pkg.name` | A short, machine-readable unique name for this app | -| **title** | _string_ | `config.name` | The human-readable application title, which will appear in the HeaderBar | -| **direction** | `'ltr'`, `'rtl'`, or `'auto'` | `'ltr'` | Sets the `dir` HTML attribute on the `document` of the app. If set to `'auto'`, the direction will be inferred from the current user's UI locale setting. The header bar will always be considered 'auto' and is unaffected by this setting. | -| **id** | _string_ | | The ID of the app on the [App Hub](https://apps.dhis2.org/). Used when publishing the app to the App Hub with [d2 app scripts publish](../scripts/publish). See [this guide](https://developers.dhis2.org/docs/guides/publish-apphub/) to learn how to set up continuous delivery. | -| **description** | _string_ | `pkg.description` | A full-length description of the application | -| **author** | _string_ or _object_ | `pkg.author` | The name of the developer to include in the DHIS2 manifest, following [package.json author field syntax](https://docs.npmjs.com/cli/v8/configuring-npm/package-json#people-fields-author-contributors). | -| **entryPoints.app** | _string_ | **./src/App** | The path to the application entrypoint (not used for libraries) | -| **entryPoints.plugin** | _string_ | | The path to the application's plugin entrypoint (not used for libraries) | -| **entryPoints.lib** | _string_ or _object_ | **./src/index** | The path to the library entrypoint(s) (not used for applications). Supports [conditional exports](https://nodejs.org/dist/latest-v16.x/docs/api/packages.html#packages_conditional_exports) | -| **skipPluginLogic** | _boolean_ | **false** | By default, plugin entry points will be wrapped with logic to allow the passing of properties and resizing between the parent app and the child plugin. This logic will allow users to use the plugin inside an app when wrapped in `` component from app-runtime. If set to true, this logic will not be loaded. | -| **pluginType** | _string_ | | Gets added to the `plugin_type` field for this app in the `/api/apps` response -- an example is `pluginType: 'DASHBOARD'` for a plugin meant to be consumed by the Dashboard app. Must be contain only characters from the set A-Z (uppercase), 0-9, `-` and `_`; i.e., it's tested against the regex `/^[A-Z0-9-_]+$/`. | -| **dataStoreNamespace** | _string_ | | The DataStore and UserDataStore namespace to reserve for this application. The reserved namespace **must** be suitably unique, as other apps will fail to install if they attempt to reserve the same namespace - see the [webapp manifest docs](https://docs.dhis2.org/en/develop/loading-apps.html) | -| **customAuthorities** | _Array(string)_ | | An array of custom authorities to create when installing the app, these do not provide security protections in the DHIS2 REST API but can be assigned to user roles and used to modify the interface displayed to a user - see the [webapp manifest docs](https://docs.dhis2.org/en/develop/loading-apps.html) | -| **minDHIS2Version** | _string_ | | The minimum DHIS2 version the App supports (eg. '2.35'). Required when uploading an app to the App Hub. The app's major version in the app's package.json needs to be increased when changing this property. | -| **maxDHIS2Version** | _string_ | | The maximum DHIS2 version the App supports. | -| **coreApp** | _boolean_ | **false** | **ADVANCED** If true, build an app artifact to be included as a root-level core application | -| **standalone** | _boolean_ | **false** | **ADVANCED** If true, do NOT include a static BaseURL in the production app artifact. This includes the `Server` field in the login dialog, which is usually hidden and pre-configured in production. | -| **pwa** | _object_ | | **ADVANCED** Opts into and configures PWA settings for this app. Read more about the options in [the PWA docs](../pwa). | +| Property | Type | Default | Description | +| :----------------------: | :---------------------------: | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **type** | _string_ | **app** | Either **app**, **login_app** or **lib** | +| **name** | _string_ | `pkg.name` | A short, machine-readable unique name for this app | +| **title** | _string_ | `config.name` | The human-readable application title, which will appear in the HeaderBar | +| **direction** | `'ltr'`, `'rtl'`, or `'auto'` | `'ltr'` | Sets the `dir` HTML attribute on the `document` of the app. If set to `'auto'`, the direction will be inferred from the current user's UI locale setting. The header bar will always be considered 'auto' and is unaffected by this setting. | +| **id** | _string_ | | The ID of the app on the [App Hub](https://apps.dhis2.org/). Used when publishing the app to the App Hub with [d2 app scripts publish](../scripts/publish). See [this guide](https://developers.dhis2.org/docs/guides/publish-apphub/) to learn how to set up continuous delivery. | +| **description** | _string_ | `pkg.description` | A full-length description of the application | +| **author** | _string_ or _object_ | `pkg.author` | The name of the developer to include in the DHIS2 manifest, following [package.json author field syntax](https://docs.npmjs.com/cli/v8/configuring-npm/package-json#people-fields-author-contributors). | +| **entryPoints.app** | _string_ | **./src/App** | The path to the application entrypoint (not used for libraries) | +| **entryPoints.plugin** | _string_ | | The path to the application's plugin entrypoint (not used for libraries) | +| **entryPoints.lib** | _string_ or _object_ | **./src/index** | The path to the library entrypoint(s) (not used for applications). Supports [conditional exports](https://nodejs.org/dist/latest-v16.x/docs/api/packages.html#packages_conditional_exports) | +| **skipPluginLogic** | _boolean_ | **false** | By default, plugin entry points will be wrapped with logic to allow the passing of properties and resizing between the parent app and the child plugin. This logic will allow users to use the plugin inside an app when wrapped in `` component from app-runtime. If set to true, this logic will not be loaded. | +| **pluginType** | _string_ | | Gets added to the `plugin_type` field for this app in the `/api/apps` response -- an example is `pluginType: 'DASHBOARD'` for a plugin meant to be consumed by the Dashboard app. Must be contain only characters from the set A-Z (uppercase), 0-9, `-` and `_`; i.e., it's tested against the regex `/^[A-Z0-9-_]+$/`. | +| **dataStoreNamespace** | _string_ | | The DataStore and UserDataStore namespace to reserve for this application. The reserved namespace **must** be suitably unique, as other apps will fail to install if they attempt to reserve the same namespace - see the [webapp manifest docs](https://docs.dhis2.org/en/develop/loading-apps.html) | +| **additionalNamespaces** | _Array(object)_ | | An array of additional datastore namespaces that should be associated with the app. For each, the user can specify the authorities required to read/write. See more in the [Additional datastore namespaces section](#additional-datastore-namespaces) below. | +| **customAuthorities** | _Array(string)_ | | An array of custom authorities to create when installing the app, these do not provide security protections in the DHIS2 REST API but can be assigned to user roles and used to modify the interface displayed to a user - see the [webapp manifest docs](https://docs.dhis2.org/en/develop/loading-apps.html) | +| **minDHIS2Version** | _string_ | | The minimum DHIS2 version the App supports (eg. '2.35'). Required when uploading an app to the App Hub. The app's major version in the app's package.json needs to be increased when changing this property. | +| **maxDHIS2Version** | _string_ | | The maximum DHIS2 version the App supports. | +| **coreApp** | _boolean_ | **false** | **ADVANCED** If true, build an app artifact to be included as a root-level core application | +| **standalone** | _boolean_ | **false** | **ADVANCED** If true, do NOT include a static BaseURL in the production app artifact. This includes the `Server` field in the login dialog, which is usually hidden and pre-configured in production. | +| **pwa** | _object_ | | **ADVANCED** Opts into and configures PWA settings for this app. Read more about the options in [the PWA docs](../pwa). | > _Note_: Dynamic defaults above may reference `pkg` (a property of the local `package.json` file) or `config` (another property within `d2.config.js`). @@ -65,3 +66,37 @@ For example, let's say you want to adjust your app to a breaking change in the D 1. Set the `maxDHIS2Version` in `d2.config.js` to the last DHIS2 version that's still compatible with the code on `main`. 1. Branch `main` to a maintenance branch. The recommended naming pattern is `N.x`, where `N` should be replaced with the app's current major version (i.e. `100.x`, `101.x`, etc.). See also [semantic-release's documentation on branches](https://semantic-release.gitbook.io/semantic-release/usage/configuration#branches). The app's version can be found in `package.json`, look for the `version` field. 1. On `main` update the `minDHIS2Version` to the first DHIS2 version that contains the breaking change. It's important to publish the `minDHIS2Version` change as a breaking change. An easy way to do that is to include the `BREAKING CHANGE` label in the commit that changes the `minDHIS2Version` (see the [semantic-release documentation](https://semantic-release.gitbook.io/semantic-release/#commit-message-format) on their commit conventions). + +## Additional datastore namespaces + +Adds the possibility for apps to declare additional datastore namespaces that should be associated with the app. For each, the user can specify the authorities required to read/write. + +Each of the additional namespace objects must declare a namespace name, and authorities by one or more of the following properties: + +- `authorities`: a user needs any of these to read or write +- `readAuthorities`: a user needs any of these to read +- `writeAuthorities`: a user needs any of these to write + +If `authorities` is combined with read or write limited lists, the entries in authorities are added to the read/write (union). + +If only `readAuthorities` are defined, these automatically apply for write. + +If only `writeAuthorities` are defined, read is not restricted. + +Examples of valid additional namespace objects: + +```js +const config = { + // ... + additionalNamespaces: [ + { namespace: 'extra1', authorities: ['M_extra1'] }, + { namespace: 'extra2', readAuthorities: ['M_extra2read'] }, + { namespace: 'extra3', writeAuthorities: ['M_extra3write'] }, + { + namespace: 'extra4', + authorities: ['M_extra4readwrite'], + writeAuthorities: ['M_extra4write'], + }, + ], +} +``` diff --git a/examples/simple-app/d2.config.js b/examples/simple-app/d2.config.js index 715669fa..b62fa613 100644 --- a/examples/simple-app/d2.config.js +++ b/examples/simple-app/d2.config.js @@ -13,6 +13,17 @@ const config = { dataStoreNamespace: 'testapp-namespace', customAuthorities: ['testapp-authority'], + additionalNamespaces: [ + { + namespace: 'testapp-additional-namespace1', + authorities: ['testapp-additional-auth'], + }, + { + namespace: 'testapp-additional-namespace2', + writeAuthorities: ['testapp-additional-write'], + readAuthorities: ['testapp-additional-read'], + }, + ], minDHIS2Version: '2.35', } From a757d826c36b3f6a86fc9998e60a43a5590ffb3f Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Wed, 3 Jul 2024 13:32:34 +0000 Subject: [PATCH 09/11] chore(release): cut 11.6.0 [skip release] # [11.6.0](https://github.com/dhis2/app-platform/compare/v11.5.1...v11.6.0) (2024-07-03) ### Features * parse additional namespaces from `d2.config.js` and add to `manifest.webapp` [LIBS-638] ([#860](https://github.com/dhis2/app-platform/issues/860)) ([62782fe](https://github.com/dhis2/app-platform/commit/62782fed6f59a439ab2ef7f00c7e7d88110a78bf)) --- CHANGELOG.md | 7 +++++++ adapter/package.json | 6 +++--- cli/package.json | 4 ++-- examples/pwa-app/package.json | 2 +- examples/simple-app/package.json | 2 +- package.json | 2 +- pwa/package.json | 4 ++-- shell/package.json | 6 +++--- 8 files changed, 20 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16f104d4..d5ded84e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [11.6.0](https://github.com/dhis2/app-platform/compare/v11.5.1...v11.6.0) (2024-07-03) + + +### Features + +* parse additional namespaces from `d2.config.js` and add to `manifest.webapp` [LIBS-638] ([#860](https://github.com/dhis2/app-platform/issues/860)) ([62782fe](https://github.com/dhis2/app-platform/commit/62782fed6f59a439ab2ef7f00c7e7d88110a78bf)) + ## [11.5.1](https://github.com/dhis2/app-platform/compare/v11.5.0...v11.5.1) (2024-07-01) diff --git a/adapter/package.json b/adapter/package.json index 9f02b0ce..bb6a6c1b 100644 --- a/adapter/package.json +++ b/adapter/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-adapter", - "version": "11.5.1", + "version": "11.6.0", "repository": { "type": "git", "url": "https://github.com/amcgee/dhis2-app-platform", @@ -21,11 +21,11 @@ "build" ], "dependencies": { - "@dhis2/pwa": "11.5.1", + "@dhis2/pwa": "11.6.0", "moment": "^2.24.0" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.5.1", + "@dhis2/cli-app-scripts": "11.6.0", "@testing-library/react": "^12.0.0", "@testing-library/react-hooks": "^8.0.1", "enzyme": "^3.11.0", diff --git a/cli/package.json b/cli/package.json index 25a731cf..efb85e7a 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/cli-app-scripts", - "version": "11.5.1", + "version": "11.6.0", "engines": { "node": ">=14" }, @@ -28,7 +28,7 @@ "@babel/preset-env": "^7.14.7", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.6.0", - "@dhis2/app-shell": "11.5.1", + "@dhis2/app-shell": "11.6.0", "@dhis2/cli-helpers-engine": "^3.2.0", "@jest/core": "^27.0.6", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4", diff --git a/examples/pwa-app/package.json b/examples/pwa-app/package.json index cd61da7c..9b0c7a96 100644 --- a/examples/pwa-app/package.json +++ b/examples/pwa-app/package.json @@ -1,6 +1,6 @@ { "name": "pwa-app", - "version": "11.5.1", + "version": "11.6.0", "description": "", "license": "BSD-3-Clause", "private": true, diff --git a/examples/simple-app/package.json b/examples/simple-app/package.json index 62ea593f..c8d5c65c 100644 --- a/examples/simple-app/package.json +++ b/examples/simple-app/package.json @@ -1,6 +1,6 @@ { "name": "simple-app", - "version": "11.5.1", + "version": "11.6.0", "repository": "https://github.com/amcgee/dhis2-app-platform", "author": "Austin McGee ", "license": "BSD-3-Clause", diff --git a/package.json b/package.json index 212708c9..bf6f9c5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "11.5.1", + "version": "11.6.0", "private": true, "repository": { "type": "git", diff --git a/pwa/package.json b/pwa/package.json index af5f487f..0abd0007 100644 --- a/pwa/package.json +++ b/pwa/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/pwa", - "version": "11.5.1", + "version": "11.6.0", "description": "", "license": "BSD-3-Clause", "publishConfig": { @@ -13,7 +13,7 @@ "deploy": "d2-app-scripts deploy" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.5.1" + "@dhis2/cli-app-scripts": "11.6.0" }, "dependencies": { "idb": "^6.0.0", diff --git a/shell/package.json b/shell/package.json index 638aeae0..e135614f 100644 --- a/shell/package.json +++ b/shell/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-shell", - "version": "11.5.1", + "version": "11.6.0", "engines": { "node": ">=14" }, @@ -15,10 +15,10 @@ "access": "public" }, "dependencies": { - "@dhis2/app-adapter": "11.5.1", + "@dhis2/app-adapter": "11.6.0", "@dhis2/app-runtime": "^3.10.4", "@dhis2/d2-i18n": "^1.1.1", - "@dhis2/pwa": "11.5.1", + "@dhis2/pwa": "11.6.0", "@dhis2/ui": "^9.8.9", "classnames": "^2.2.6", "moment": "^2.29.1", From 6b11fff033cc16ed4d2f11caf74e8c18307abc3c Mon Sep 17 00:00:00 2001 From: Hendrik de Graaf Date: Fri, 5 Jul 2024 12:06:35 +0200 Subject: [PATCH 10/11] fix(alerts): ensure hiding works correctly and alerts are not re-added [DHIS2-15438] (#859) * chore: add bug reproduction test case * fix: ensure hiding works correctly and alerts are not re-added * chore: fix typos * chore: import useAlerts from app-runtime --------- Co-authored-by: Kai Vandivier <49666798+KaiVandivier@users.noreply.github.com> --- adapter/src/components/Alerts.js | 140 +++++----- .../src/components/__tests__/Alerts.test.js | 262 +++++++++--------- 2 files changed, 198 insertions(+), 204 deletions(-) diff --git a/adapter/src/components/Alerts.js b/adapter/src/components/Alerts.js index 5679c4bc..7221293f 100644 --- a/adapter/src/components/Alerts.js +++ b/adapter/src/components/Alerts.js @@ -1,53 +1,89 @@ import { useAlerts } from '@dhis2/app-runtime' -import { AlertBar, AlertStack } from '@dhis2/ui' -import React, { useState, useEffect } from 'react' +import { AlertStack, AlertBar } from '@dhis2/ui' +import React, { useCallback, useState } from 'react' -/* - * The alert-manager which populates the `useAlerts` hook from `@dhis2/app-service-alerts` - * hook with alerts only supports simply adding and removing alerts. However, the - * `AlertBar` from `@dhis2/ui` should leave the screen with a hide-animation, so this - * requires an additional state. The `alertStackAlerts` state in the Alerts component - * provides this addional state: - * - It contains all alerts from the alert-manager, with `options.hidden` set to `false` - * - And also alerts which have been removed from the alert-manager, but still have their - * leave animation in progress, whtih `options.hidden` set to `true`) - * Alerts are removed from the `alertStackAlerts` state once the `onHidden` callback fires - */ +/* The alerts-manager which populates the `useAlerts` hook from + * `@dhis2/app-service-alerts` hook with alerts only supports + * simply adding and removing alerts. However, the `AlertBar` + * from `@dhis2/ui` should leave the screen with a hide-animation. + * This works well, for alerts that hide "naturally" (after the + * timeout expires or when the close icon is clicked). In these + * cases the component will request to be removed from the alerts- + * manager after the animation completes. However, when + * programatically hiding an alert this is the other way around: + * the alert is removed from the alerts-manager straight away and + * if we were to render the alerts from the `useAlerts` hook, these + * alerts would be removed from the DOM abruptly without an animation. + * To prevent this from happening, we have implemented the + * `useAlertsWithHideCache` hook: + * - It contains all alerts from the alert-manager, with + * `options.hidden` set to `false` + * - And also alerts which have been removed from the alert-manager, + * but still have their leave animation in progress, with + * `options.hidden` set to `true` + * - Alerts are removed once the `onHidden` callback fires */ -const Alerts = () => { +const useAlertsWithHideCache = () => { + const [alertsMap] = useState(new Map()) + /* We don't use this state value, it is used to trigger + * a rerender to remove the hidden alert from the DOM */ + const [, setLastRemovedId] = useState(null) const alertManagerAlerts = useAlerts() - const [alertStackAlerts, setAlertStackAlerts] = useState(alertManagerAlerts) - const removeAlertStackAlert = (id) => - setAlertStackAlerts( - alertStackAlerts.filter( - (alertStackAlert) => alertStackAlert.id !== id - ) - ) + const updateAlertsFromManager = useCallback( + (newAlerts = []) => { + const newAlertsIdLookup = new Set() + newAlerts.forEach((alert) => { + newAlertsIdLookup.add(alert.id) + if (!alertsMap.has(alert.id)) { + // new alerts, these are not hiding + alertsMap.set(alert.id, { + ...alert, + options: { + ...alert.options, + hidden: alert.options.hidden || false, + }, + }) + } + }) + // alerts in alertsMap but not in newAlerts are hiding + alertsMap.forEach((alert) => { + if (!newAlertsIdLookup.has(alert.id)) { + alert.options.hidden = true + } + }) + }, + [alertsMap] + ) + const removeAlert = useCallback( + (id) => { + alertsMap.delete(id) + setLastRemovedId(id) + }, + [alertsMap] + ) - useEffect(() => { - if (alertManagerAlerts.length > 0) { - setAlertStackAlerts((currentAlertStackAlerts) => - mergeAlertStackAlerts( - currentAlertStackAlerts, - alertManagerAlerts - ) - ) - } - }, [alertManagerAlerts]) + updateAlertsFromManager(alertManagerAlerts) + + return { + alerts: Array.from(alertsMap.values()).sort((a, b) => a.id - b.id), + removeAlert, + } +} + +const Alerts = () => { + const { alerts, removeAlert } = useAlertsWithHideCache() return ( - {alertStackAlerts.map( + {alerts.map( ({ message, remove, id, options: { onHidden, ...props } }) => ( { onHidden && onHidden() - removeAlertStackAlert(id) - if (alertManagerAlerts.some((a) => a.id === id)) { - remove() - } + removeAlert(id) + remove() }} > {message} @@ -58,34 +94,4 @@ const Alerts = () => { ) } -function mergeAlertStackAlerts(alertStackAlerts, alertManagerAlerts) { - return Object.values({ - /* - * Assume that all alerts in the alertStackAlerts array are hiding. - * After the object merge only the alerts not in the alertManagerAlerts - * array will have `options.hidden === true`. - */ - ...toIdBasedObjectWithHiddenOption(alertStackAlerts, true), - /* - * All alertManagerAlerts should be showing. This object merge will - * overwrite any alertStackAlert by the alertManagerAlert with - * the same `id`, thus ensuring the alert is visible. - */ - ...toIdBasedObjectWithHiddenOption(alertManagerAlerts, false), - }) -} - -function toIdBasedObjectWithHiddenOption(arr, hidden) { - return arr.reduce((obj, item) => { - obj[item.id] = { - ...item, - options: { - ...item.options, - hidden, - }, - } - return obj - }, {}) -} - -export { Alerts, mergeAlertStackAlerts } +export { Alerts } diff --git a/adapter/src/components/__tests__/Alerts.test.js b/adapter/src/components/__tests__/Alerts.test.js index 845dfc0b..3a89ee95 100644 --- a/adapter/src/components/__tests__/Alerts.test.js +++ b/adapter/src/components/__tests__/Alerts.test.js @@ -2,7 +2,7 @@ import { useAlert } from '@dhis2/app-runtime' import { AlertsProvider } from '@dhis2/app-service-alerts' import { act, render, fireEvent, waitFor, screen } from '@testing-library/react' import React from 'react' -import { Alerts, mergeAlertStackAlerts } from '../Alerts.js' +import { Alerts } from '../Alerts.js' describe('Alerts', () => { beforeEach(() => { @@ -16,16 +16,16 @@ describe('Alerts', () => { ) - const AlertButtons = ({ message, options }) => { + const AlertButtons = ({ message, options, label }) => { const { show, hide } = useAlert(message, options) return ( <> ) @@ -102,140 +102,128 @@ describe('Alerts', () => { // But eventually it is gone expect(screen.queryByText(msg)).toBeNull() }) -}) + it('removes multiple alerts that hide simultaniously correctly', async () => { + /* This test case was added to reproduce and fix a bug that + * would cause the second alert to be re-added during the + * removal of the first alert. */ + const duration = 1000 + const options = { duration } + const message1 = 'message 1' + const message2 = 'message 2' -describe('mergeAlertStackAlerts', () => { - it('add alerts from the alert manager and adds `hidden: false` to the options', () => { - const alertStackAlerts = [] - const alertManagerAlerts = [ - { - id: 1, - message: 'test1', - options: { permanent: true }, - }, - { - id: 2, - message: 'test2', - options: { permanent: true }, - }, - ] - expect( - mergeAlertStackAlerts(alertStackAlerts, alertManagerAlerts) - ).toEqual([ - { - id: 1, - message: 'test1', - options: { hidden: false, permanent: true }, - }, - { - id: 2, - message: 'test2', - options: { hidden: false, permanent: true }, - }, - ]) - }) - it('keeps alerts unchanged if the alert-manager and alert-stack contain equivalent items', () => { - const alertStackAlerts = [ - { - id: 1, - message: 'test1', - options: { permanent: true, hidden: false }, - }, - { - id: 2, - message: 'test2', - options: { permanent: true, hidden: false }, - }, - ] - const alertManagerAlerts = [ - { - id: 1, - message: 'test1', - options: { permanent: true }, - }, - { - id: 2, - message: 'test2', - options: { permanent: true }, - }, - ] - expect( - mergeAlertStackAlerts(alertStackAlerts, alertManagerAlerts) - ).toEqual(alertStackAlerts) - }) - it('keeps alerts in the alert-stack and sets `hidden` to `true` if they are no longer in the alert-manager', () => { - const alertStackAlerts = [ - { - id: 1, - message: 'test1', - options: { permanent: true, hidden: false }, - }, - { - id: 2, - message: 'test2', - options: { permanent: true, hidden: false }, - }, - ] - const alertManagerAlerts = [ - { - id: 2, - message: 'test2', - options: { permanent: true }, - }, - ] - expect( - mergeAlertStackAlerts(alertStackAlerts, alertManagerAlerts) - ).toEqual([ - { - id: 1, - message: 'test1', - options: { permanent: true, hidden: true }, - }, - { - id: 2, - message: 'test2', - options: { permanent: true, hidden: false }, - }, - ]) + render( + + + + + ) + + act(() => { + fireEvent.click(screen.getByText(`Show ${message1}`)) + /* A small delay between hides is required to reproduce the bug, + * because if the hiding is done at the same time, the alerts + * would both be removed correctly */ + jest.advanceTimersByTime(10) + fireEvent.click(screen.getByText(`Show ${message2}`)) + }) + + // Both message should show + await waitFor(() => screen.getByText(message1)) + await waitFor(() => screen.getByText(message2)) + expect(screen.getAllByText(message1)).toHaveLength(1) + expect(screen.getAllByText(message2)).toHaveLength(1) + + act(() => { + jest.advanceTimersByTime(duration) + }) + + // Both should still be there while the hide animation runs + expect(screen.getAllByText(message1)).toHaveLength(1) + expect(screen.getAllByText(message2)).toHaveLength(1) + + act(() => { + // Now we advance the time until the hide animation completes + jest.advanceTimersByTime(700) + }) + + /* Now both should be gone. Prior to the bugfix, + * the alert with message2 would be showing */ + expect(screen.queryByText(message1)).toBeNull() + expect(screen.queryByText(message2)).toBeNull() }) - it('updates alerts in the alert-stack with the properties of the alerts in the alert-manager', () => { - const alertStackAlerts = [ - { - id: 1, - message: 'test1', - options: { permanent: true, hidden: false }, - }, - { - id: 2, - message: 'test2', - options: { permanent: true, hidden: false }, - }, - ] - const alertManagerAlerts = [ - { - id: 1, - message: 'test1 EDITED', - options: { success: true }, - }, - { - id: 2, - message: 'test2 EDITED', - options: { success: true }, - }, - ] - expect( - mergeAlertStackAlerts(alertStackAlerts, alertManagerAlerts) - ).toEqual([ - { - id: 1, - message: 'test1 EDITED', - options: { success: true, hidden: false }, - }, - { - id: 2, - message: 'test2 EDITED', - options: { success: true, hidden: false }, - }, - ]) + it('keeps alerts that have been removed programatically around until the animation is done', async () => { + const options = { permanent: true } + const message1 = 'message 1' + const message2 = 'message 2' + + render( + + + + + ) + + act(() => { + fireEvent.click(screen.getByText(`Show ${message1}`)) + fireEvent.click(screen.getByText(`Show ${message2}`)) + }) + + // Both message should show + await waitFor(() => screen.getByText(message1)) + await waitFor(() => screen.getByText(message2)) + expect(screen.getAllByText(message1)).toHaveLength(1) + expect(screen.getAllByText(message2)).toHaveLength(1) + + act(() => { + fireEvent.click(screen.getByText(`Hide ${message1}`)) + jest.advanceTimersByTime(50) + }) + + // Both should still be there while the hide animation runs + expect(screen.getAllByText(message1)).toHaveLength(1) + expect(screen.getAllByText(message2)).toHaveLength(1) + + act(() => { + // Now we advance the time until the hide animation completes + jest.advanceTimersByTime(1000) + }) + + // The alert that was hidden should now be gone + expect(screen.queryByText(message1)).toBeNull() + expect(screen.getAllByText(message2)).toHaveLength(1) + + act(() => { + fireEvent.click(screen.getByText(`Hide ${message2}`)) + jest.advanceTimersByTime(50) + }) + + // The second alert should still be there while its hide animation runs + expect(screen.queryByText(message1)).toBeNull() + expect(screen.getAllByText(message2)).toHaveLength(1) + + act(() => { + fireEvent.click(screen.getByText(`Hide ${message2}`)) + jest.advanceTimersByTime(700) + }) + + // Now both should be gone + expect(screen.queryByText(message1)).toBeNull() + expect(screen.queryByText(message2)).toBeNull() }) }) From 82f05d577c11dc07a6611f056094d773d0af99d9 Mon Sep 17 00:00:00 2001 From: "@dhis2-bot" Date: Fri, 5 Jul 2024 10:14:49 +0000 Subject: [PATCH 11/11] chore(release): cut 11.6.1 [skip release] ## [11.6.1](https://github.com/dhis2/app-platform/compare/v11.6.0...v11.6.1) (2024-07-05) ### Bug Fixes * **alerts:** ensure hiding works correctly and alerts are not re-added [DHIS2-15438] ([#859](https://github.com/dhis2/app-platform/issues/859)) ([6b11fff](https://github.com/dhis2/app-platform/commit/6b11fff033cc16ed4d2f11caf74e8c18307abc3c)) --- CHANGELOG.md | 7 +++++++ adapter/package.json | 6 +++--- cli/package.json | 4 ++-- examples/pwa-app/package.json | 2 +- examples/simple-app/package.json | 2 +- package.json | 2 +- pwa/package.json | 4 ++-- shell/package.json | 6 +++--- 8 files changed, 20 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5ded84e..37337e1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [11.6.1](https://github.com/dhis2/app-platform/compare/v11.6.0...v11.6.1) (2024-07-05) + + +### Bug Fixes + +* **alerts:** ensure hiding works correctly and alerts are not re-added [DHIS2-15438] ([#859](https://github.com/dhis2/app-platform/issues/859)) ([6b11fff](https://github.com/dhis2/app-platform/commit/6b11fff033cc16ed4d2f11caf74e8c18307abc3c)) + # [11.6.0](https://github.com/dhis2/app-platform/compare/v11.5.1...v11.6.0) (2024-07-03) diff --git a/adapter/package.json b/adapter/package.json index bb6a6c1b..ca4c5bf0 100644 --- a/adapter/package.json +++ b/adapter/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-adapter", - "version": "11.6.0", + "version": "11.6.1", "repository": { "type": "git", "url": "https://github.com/amcgee/dhis2-app-platform", @@ -21,11 +21,11 @@ "build" ], "dependencies": { - "@dhis2/pwa": "11.6.0", + "@dhis2/pwa": "11.6.1", "moment": "^2.24.0" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.6.0", + "@dhis2/cli-app-scripts": "11.6.1", "@testing-library/react": "^12.0.0", "@testing-library/react-hooks": "^8.0.1", "enzyme": "^3.11.0", diff --git a/cli/package.json b/cli/package.json index efb85e7a..7ee9ea82 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/cli-app-scripts", - "version": "11.6.0", + "version": "11.6.1", "engines": { "node": ">=14" }, @@ -28,7 +28,7 @@ "@babel/preset-env": "^7.14.7", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.6.0", - "@dhis2/app-shell": "11.6.0", + "@dhis2/app-shell": "11.6.1", "@dhis2/cli-helpers-engine": "^3.2.0", "@jest/core": "^27.0.6", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4", diff --git a/examples/pwa-app/package.json b/examples/pwa-app/package.json index 9b0c7a96..6aa7efc1 100644 --- a/examples/pwa-app/package.json +++ b/examples/pwa-app/package.json @@ -1,6 +1,6 @@ { "name": "pwa-app", - "version": "11.6.0", + "version": "11.6.1", "description": "", "license": "BSD-3-Clause", "private": true, diff --git a/examples/simple-app/package.json b/examples/simple-app/package.json index c8d5c65c..da04739c 100644 --- a/examples/simple-app/package.json +++ b/examples/simple-app/package.json @@ -1,6 +1,6 @@ { "name": "simple-app", - "version": "11.6.0", + "version": "11.6.1", "repository": "https://github.com/amcgee/dhis2-app-platform", "author": "Austin McGee ", "license": "BSD-3-Clause", diff --git a/package.json b/package.json index bf6f9c5c..cd3daa20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "11.6.0", + "version": "11.6.1", "private": true, "repository": { "type": "git", diff --git a/pwa/package.json b/pwa/package.json index 0abd0007..08aed5b1 100644 --- a/pwa/package.json +++ b/pwa/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/pwa", - "version": "11.6.0", + "version": "11.6.1", "description": "", "license": "BSD-3-Clause", "publishConfig": { @@ -13,7 +13,7 @@ "deploy": "d2-app-scripts deploy" }, "devDependencies": { - "@dhis2/cli-app-scripts": "11.6.0" + "@dhis2/cli-app-scripts": "11.6.1" }, "dependencies": { "idb": "^6.0.0", diff --git a/shell/package.json b/shell/package.json index e135614f..bd0a90f0 100644 --- a/shell/package.json +++ b/shell/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/app-shell", - "version": "11.6.0", + "version": "11.6.1", "engines": { "node": ">=14" }, @@ -15,10 +15,10 @@ "access": "public" }, "dependencies": { - "@dhis2/app-adapter": "11.6.0", + "@dhis2/app-adapter": "11.6.1", "@dhis2/app-runtime": "^3.10.4", "@dhis2/d2-i18n": "^1.1.1", - "@dhis2/pwa": "11.6.0", + "@dhis2/pwa": "11.6.1", "@dhis2/ui": "^9.8.9", "classnames": "^2.2.6", "moment": "^2.29.1",