From d9561ed4624e49f7ee59bed5b351a064da952010 Mon Sep 17 00:00:00 2001 From: henrikmv Date: Mon, 9 Dec 2024 18:09:35 +0100 Subject: [PATCH] Merge remote-tracking branch 'origin/master' into hv/feat/DHIS2-18325_showOrgUnitSelectorInNewEventForm --- .github/workflows/dhis2-verify-commits.yml | 2 + CHANGELOG.md | 78 + .../EnrollmentAddEventPageForm.js | 4 +- .../EnrollmentEditEventPageForm.js | 12 +- .../EnrollmentEditEventPageNavigation.js | 5 +- .../BreakingTheGlass/BreakingTheGlass.js | 10 +- .../HiddenProgramStage/HiddenProgramStage.js | 2 +- .../StagesAndEventsWidget.js | 2 +- cypress/e2e/NewPage/NewPage.js | 64 +- cypress/e2e/ScopeSelector/ScopeSelector.js | 6 +- ...archForDuplicatesThroughAddRelationship.js | 10 +- cypress/e2e/SearchPage/SearchPage.js | 64 +- .../SearchThroughAddRelationship.js | 26 +- cypress/e2e/TopBarActions/TopBarActions.js | 4 +- .../WidgetAssignee/index.js | 7 +- .../WidgetEnrollment/index.js | 2 +- .../WidgetEventNote/index.js | 4 +- .../WidgetProfile/index.js | 2 +- .../WidgetTab/index.js | 2 +- .../WidgetsForEnrollmentAddEventPage.js | 8 +- .../WidgetsForEnrollmentDashboard.js | 8 +- .../WidgetsForEventSchedule.js | 4 +- .../EventWorkingListsUser.js | 8 +- .../TeiWorkingListsUser.js | 2 +- .../step_definitions/common/baseSteps.js | 6 +- flow-typed/npm/query-string_v6.x.x.js | 42 - flow-typed/npm/query-string_v9.x.x.js | 23 + i18n/ar.po | 416 +- i18n/ar_IQ.po | 283 +- i18n/ckb.po | 248 +- i18n/cs.po | 398 +- i18n/da.po | 310 +- i18n/en.pot | 156 +- i18n/es.po | 400 +- i18n/fr.po | 402 +- i18n/id.po | 383 +- i18n/km.po | 238 +- i18n/lo.po | 377 +- i18n/my.po | 238 +- i18n/nb.po | 384 +- i18n/ne.po | 583 ++- i18n/nl.po | 381 +- i18n/prs.po | 247 +- i18n/ps.po | 247 +- i18n/pt.po | 583 ++- i18n/pt_BR.po | 258 +- i18n/ro.po | 389 +- i18n/ru.po | 394 +- i18n/si.po | 368 +- i18n/sv.po | 253 +- i18n/tet.po | 242 +- i18n/tg.po | 251 +- i18n/uk.po | 269 +- i18n/ur.po | 251 +- i18n/uz_UZ_Cyrl.po | 239 +- i18n/uz_UZ_Latn.po | 371 +- i18n/vi.po | 719 ++- i18n/zh.po | 383 +- i18n/zh_CN.po | 373 +- package.json | 8 +- packages/rules-engine/package.json | 2 +- .../validators/form/date.validator.js | 13 - .../validators/form/dateTime.validator.js | 20 - .../validators/form/index.js | 3 - .../components/App/withAppUrlSync.js | 4 +- .../D2Form/D2SectionFields.component.js | 2 +- .../D2Form/D2SectionFields.container.js | 2 +- .../FormBuilder/FormBuilder.component.js | 186 +- .../D2Form/FormBuilder/formbuilder.types.js | 4 +- .../components/D2Form/FormBuilder/index.js | 2 +- .../D2Form/field/configs/base/configBase.js | 4 +- .../dateTimeField/getDateTimeFieldConfig.js | 6 +- .../getDateTimeFieldConfigForCustomForm.js | 4 +- .../D2Form/field/validators/index.js | 2 - .../capture-core/components/D2Form/index.js | 1 + .../EnrollmentDataEntry.component.js | 35 +- .../EnrollmentDataEntry.container.js | 11 +- .../eventDate.validatorContainersGetter.js | 8 +- .../actions/enrollment.actionBatchs.js | 91 +- .../Enrollment/actions/enrollment.actions.js | 24 +- .../Enrollment/epics/enrollment.epics.js | 156 +- ...nrollmentDate.validatorContainersGetter.js | 30 +- .../incidentDate.validatorContainerGetter.js | 30 +- .../epics/newEventDataEntry.epics.js | 63 +- .../eventDate.validatorContainersGetter.js | 6 +- .../SingleEventRegistrationEntry.component.js | 1 - .../SingleEventRegistrationEntry.container.js | 3 +- .../internal/DataEntryField.component.js | 4 +- .../internal/dataEntryField.utils.js | 10 +- .../Date/DateFilter.component.js | 142 +- .../Date/DateFilterManager.component.js | 14 +- .../FiltersForTypes/Date/End.component.js | 7 - .../FiltersForTypes/Date/From.component.js | 43 +- .../Date/RangeFilter.component.js | 6 - .../FiltersForTypes/Date/To.component.js | 46 +- .../Date/dateFilterDataGetter.js | 8 +- .../FiltersForTypes/Date/types/date.types.js | 6 + .../FiltersForTypes/Date/types/index.js | 2 +- .../Numeric/NumericFilter.component.js | 6 + .../DateAndTime/D2Date/D2Date.component.js | 207 +- .../D2Date/D2DateCalendar.component.js | 158 - .../D2Date/D2DatePopup.component.js | 94 - .../DateAndTime/D2Date/customStyles.css | 12 - .../DateAndTime/D2Date/d2DatePopup.const.js | 16 - .../FormFields/DateAndTime/D2Date/getTheme.js | 14 - .../New/Fields/AgeField/AgeField.component.js | 15 +- .../DateField/DateField.component.js | 3 +- .../DateRangeField.component.js | 3 +- .../DateTimeField/DateTimeField.component.js | 3 +- .../DateTimeRangeField.component.js | 3 +- .../DateAndTimeFields/getCalendarTheme.js | 14 - .../New/HOC/messages/withDisplayMessages.js | 1 - .../FormFields/New/HOC/withCalendarProps.js | 69 - .../FormFields/Options/FormGroup.component.js | 2 + .../converters/dateConverter.js | 3 +- .../PageLayout/DefaultPageLayout.constants.js | 4 - .../DefaultEnrollmentLayout.types.js | 1 - .../WidgetEventEditWrapper.js | 24 +- .../components/UrlSync/withUrlSync.js | 4 +- .../DataEntry/epics/dataEntryRules.epics.js | 64 +- .../eventDate.validatorContainersGetter.js | 6 +- .../epics/editEventDataEntry.epics.js | 48 +- .../eventDate.validatorContainersGetter.js | 8 +- .../DataEntry/fieldValidators/index.js | 5 + .../orgUnit.validatorContainersGetter.js | 15 + .../ViewEventDataEntry.component.js | 24 +- .../viewEventDataEntry.actions.js | 7 +- .../WidgetEventEdit.container.js | 227 +- .../WidgetHeader/WidgetHeader.container.js | 129 + .../WidgetHeader/WidgetHeader.types.js | 16 + .../WidgetEventEdit/WidgetHeader/index.js | 2 + .../ScheduleDate/ScheduleDate.component.js | 14 +- .../DataEntry/DataEntry.container.js | 43 +- .../ProgramRules/getRulesActionsForTEI.js | 65 +- .../DataEntry/ProgramRules/index.js | 2 +- .../DataEntry/dataEntry.actions.js | 27 +- .../DataEntry/dataEntry.types.js | 3 +- .../DataEntry/hooks/useLifecycle.js | 2 +- .../WidgetProfile/WidgetProfile.component.js | 5 +- .../DateFieldForRelatedStages.js | 9 +- .../ScheduleInOrgUnit.component.js | 6 +- .../WidgetRelatedStages.component.js | 4 +- .../WidgetRelatedStages.types.js | 1 + .../ValidationFunctions.js | 23 +- .../relatedStageEventIsValid.js | 2 + .../relatedStageEventIsValid.types.js | 1 + .../Stages/Stage/StageDetail/hooks/helpers.js | 7 +- .../WidgetHeader/WidgetHeader.container.js | 76 + .../WidgetHeader/WidgetHeader.types.js | 17 + .../WidgetHeader/index.js | 2 + .../WidgetTwoEventWorkspace.container.js | 129 +- .../WidgetTwoEventWorkspace.types.js | 12 +- .../WidgetTwoEventWorkspaceWrapper.const.js | 5 + .../WidgetWrapper/WidgetWrapper.container.js | 74 + .../WidgetWrapper/WidgetWrapper.types.js | 15 + .../WidgetWrapper/index.js | 2 + .../WidgetTwoEventWorkspace/index.js | 1 + .../convertToClientConfig.js | 3 +- .../convertToClientFilters.js | 3 +- .../filterConverters/dateConverter.js | 3 +- .../capture-core/converters/clientToView.js | 8 +- .../capture-core/converters/formToClient.js | 4 +- .../descriptions/form.reducerDescription.js | 27 +- src/core_modules/capture-core/rules/index.js | 2 + .../rules/validateAssignEffects.js | 63 + .../validation}/constants/index.js | 0 .../constants/validatorTypes.const.js | 0 .../validation}/getValidators.js | 33 +- .../capture-core/utils/validation/index.js | 6 + .../utils/validation/validateValue.js | 70 + .../areRelativeRangeValuesSupported.js | 0 .../validators/form/ageValidator.js} | 30 +- .../validators/form/dateTimeValidator.js | 63 + .../validators/form/dateValidator.js | 20 + .../validators/form/getDateRangeValidator.js | 2 +- .../form/getDateTimeRangeValidator.js | 2 +- .../form/getNumberRangeValidator.js | 0 .../validators/form/getTimeRangeValidator.js | 0 .../{ => validation}/validators/form/index.js | 0 .../validators/form/isValidNonFutureDate.js | 21 + .../utils/validators/form/ageValidator.js | 8 - .../validators/form/dateTimeValidator.js | 8 - .../utils/validators/form/dateValidator.js | 8 - .../validators/form/isValidNonFutureDate.js | 18 - .../capture-ui/AgeField/AgeField.component.js | 23 +- .../DateField/Date.component.js | 222 +- .../DateField/DateCalendar.component.js | 98 - .../DateField/DatePopup.component.js | 87 - .../DateField/datePopup.const.js | 17 - .../DateField/datePopup.module.css | 8 - .../DateTimeField/DateTime.component.js | 96 +- .../AgeInput/AgeDateInput.component.js | 6 +- .../DateTimeInput/DateTimeDate.component.js | 9 +- .../DateTimeInput/DateTimeTime.component.js | 19 +- .../internal/TextInput/TextInput.component.js | 2 +- .../internal/TextInput/withFocusHandler.js | 6 +- yarn.lock | 4244 +++++++++-------- 197 files changed, 12966 insertions(+), 6477 deletions(-) delete mode 100644 flow-typed/npm/query-string_v6.x.x.js create mode 100644 flow-typed/npm/query-string_v9.x.x.js delete mode 100644 src/core_modules/capture-core-utils/validators/form/date.validator.js delete mode 100644 src/core_modules/capture-core-utils/validators/form/dateTime.validator.js delete mode 100644 src/core_modules/capture-core/components/D2Form/field/validators/index.js delete mode 100644 src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2DateCalendar.component.js delete mode 100644 src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2DatePopup.component.js delete mode 100644 src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/customStyles.css delete mode 100644 src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/d2DatePopup.const.js delete mode 100644 src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/getTheme.js delete mode 100644 src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/getCalendarTheme.js delete mode 100644 src/core_modules/capture-core/components/FormFields/New/HOC/withCalendarProps.js create mode 100644 src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/index.js create mode 100644 src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/orgUnit.validatorContainersGetter.js create mode 100644 src/core_modules/capture-core/components/WidgetEventEdit/WidgetHeader/WidgetHeader.container.js create mode 100644 src/core_modules/capture-core/components/WidgetEventEdit/WidgetHeader/WidgetHeader.types.js create mode 100644 src/core_modules/capture-core/components/WidgetEventEdit/WidgetHeader/index.js create mode 100644 src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/WidgetHeader.container.js create mode 100644 src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/WidgetHeader.types.js create mode 100644 src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/index.js create mode 100644 src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspaceWrapper.const.js create mode 100644 src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/WidgetWrapper.container.js create mode 100644 src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/WidgetWrapper.types.js create mode 100644 src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/index.js create mode 100644 src/core_modules/capture-core/rules/validateAssignEffects.js rename src/core_modules/capture-core/{components/D2Form/field/validators => utils/validation}/constants/index.js (100%) rename src/core_modules/capture-core/{components/D2Form/field/validators => utils/validation}/constants/validatorTypes.const.js (100%) rename src/core_modules/capture-core/{components/D2Form/field/validators => utils/validation}/getValidators.js (91%) create mode 100644 src/core_modules/capture-core/utils/validation/index.js create mode 100644 src/core_modules/capture-core/utils/validation/validateValue.js rename src/core_modules/capture-core/utils/{ => validation}/validators/areRelativeRangeValuesSupported.js (100%) rename src/core_modules/{capture-core-utils/validators/form/age.validator.js => capture-core/utils/validation/validators/form/ageValidator.js} (64%) create mode 100644 src/core_modules/capture-core/utils/validation/validators/form/dateTimeValidator.js create mode 100644 src/core_modules/capture-core/utils/validation/validators/form/dateValidator.js rename src/core_modules/capture-core/utils/{ => validation}/validators/form/getDateRangeValidator.js (94%) rename src/core_modules/capture-core/utils/{ => validation}/validators/form/getDateTimeRangeValidator.js (97%) rename src/core_modules/capture-core/utils/{ => validation}/validators/form/getNumberRangeValidator.js (100%) rename src/core_modules/capture-core/utils/{ => validation}/validators/form/getTimeRangeValidator.js (100%) rename src/core_modules/capture-core/utils/{ => validation}/validators/form/index.js (100%) create mode 100644 src/core_modules/capture-core/utils/validation/validators/form/isValidNonFutureDate.js delete mode 100644 src/core_modules/capture-core/utils/validators/form/ageValidator.js delete mode 100644 src/core_modules/capture-core/utils/validators/form/dateTimeValidator.js delete mode 100644 src/core_modules/capture-core/utils/validators/form/dateValidator.js delete mode 100644 src/core_modules/capture-core/utils/validators/form/isValidNonFutureDate.js delete mode 100644 src/core_modules/capture-ui/DateAndTimeFields/DateField/DateCalendar.component.js delete mode 100644 src/core_modules/capture-ui/DateAndTimeFields/DateField/DatePopup.component.js delete mode 100644 src/core_modules/capture-ui/DateAndTimeFields/DateField/datePopup.const.js delete mode 100644 src/core_modules/capture-ui/DateAndTimeFields/DateField/datePopup.module.css diff --git a/.github/workflows/dhis2-verify-commits.yml b/.github/workflows/dhis2-verify-commits.yml index ae7831b56a..51c4fb414c 100644 --- a/.github/workflows/dhis2-verify-commits.yml +++ b/.github/workflows/dhis2-verify-commits.yml @@ -6,6 +6,7 @@ on: jobs: lint-pr-title: + if: github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.user.login != 'dhis2-bot' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -18,6 +19,7 @@ jobs: configuration-path: ${{ steps.commitlint.outputs.config_path }} lint-commits: + if: github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.user.login != 'dhis2-bot' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 diff --git a/CHANGELOG.md b/CHANGELOG.md index bb83bc17af..5f1459744f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,81 @@ +## [101.19.2](https://github.com/dhis2/capture-app/compare/v101.19.1...v101.19.2) (2024-12-08) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([0ddef74](https://github.com/dhis2/capture-app/commit/0ddef746e773ab6ede7b2e297cb169b5887ad446)) + +## [101.19.1](https://github.com/dhis2/capture-app/compare/v101.19.0...v101.19.1) (2024-12-05) + + +### Bug Fixes + +* [DHIS2-17854] validate the assigned values from rules engine ([#3783](https://github.com/dhis2/capture-app/issues/3783)) ([db9d6b8](https://github.com/dhis2/capture-app/commit/db9d6b8f23fb29af30ef61fb3649c167073a46ff)) + +# [101.19.0](https://github.com/dhis2/capture-app/compare/v101.18.1...v101.19.0) (2024-12-03) + + +### Features + +* [DHIS2-15462] Use dhis2 UI calendarinput component in forms ([#3658](https://github.com/dhis2/capture-app/issues/3658)) ([f39fd47](https://github.com/dhis2/capture-app/commit/f39fd471cb2f176a417667481b17a72b2d4651dd)) + +## [101.18.1](https://github.com/dhis2/capture-app/compare/v101.18.0...v101.18.1) (2024-12-03) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([a2d43b2](https://github.com/dhis2/capture-app/commit/a2d43b2db7b926066a438d6f5f42ad19d37987fe)) + +# [101.18.0](https://github.com/dhis2/capture-app/compare/v101.17.0...v101.18.0) (2024-11-28) + + +### Features + +* [DHIS2-16337] Org unit in view event page ([#3882](https://github.com/dhis2/capture-app/issues/3882)) ([c605e82](https://github.com/dhis2/capture-app/commit/c605e828622aa9f9b0c10f96359ba1b037c8e0ee)) + +# [101.17.0](https://github.com/dhis2/capture-app/compare/v101.16.7...v101.17.0) (2024-11-25) + + +### Features + +* [DHIS2-15463] Use dhis2 ui calendarInput component in working list ([#3712](https://github.com/dhis2/capture-app/issues/3712)) ([5f27455](https://github.com/dhis2/capture-app/commit/5f27455b136d6d994adea0788bf2d0683dfe5d06)) + +## [101.16.7](https://github.com/dhis2/capture-app/compare/v101.16.6...v101.16.7) (2024-11-25) + + +### Bug Fixes + +* [DHIS2-16801] events scheduled for today's date not showing today ([#3856](https://github.com/dhis2/capture-app/issues/3856)) ([d63e124](https://github.com/dhis2/capture-app/commit/d63e124d1c0702898b453be8cfbdd0a5f4620ba5)) + +## [101.16.6](https://github.com/dhis2/capture-app/compare/v101.16.5...v101.16.6) (2024-11-25) + + +### Bug Fixes + +* [DHIS2-17519] app crashing when opening new event from view event ([#3781](https://github.com/dhis2/capture-app/issues/3781)) ([93366ef](https://github.com/dhis2/capture-app/commit/93366ef504210cc9aa746f7d10a4cc7d6188586d)) +* [DHIS2-18150] user has to click out of range filter for update button to trigger ([#3855](https://github.com/dhis2/capture-app/issues/3855)) ([f70b205](https://github.com/dhis2/capture-app/commit/f70b2053f753388e994c89698677821fd8032f79)) + +## [101.16.5](https://github.com/dhis2/capture-app/compare/v101.16.4...v101.16.5) (2024-11-24) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([3098faf](https://github.com/dhis2/capture-app/commit/3098faf8b73dbfc0d894535cbdfd5539e80a24fe)) + +## [101.16.4](https://github.com/dhis2/capture-app/compare/v101.16.3...v101.16.4) (2024-11-20) + + +### Bug Fixes + +* [DHIS2-18019] related stages UI tweaks ([#3872](https://github.com/dhis2/capture-app/issues/3872)) ([7ea2240](https://github.com/dhis2/capture-app/commit/7ea2240b68408a0c4e8db624093c058f2b416584)) + +## [101.16.3](https://github.com/dhis2/capture-app/compare/v101.16.2...v101.16.3) (2024-11-20) + + +### Bug Fixes + +* [DHIS2-18444] stabilize possible duplicate modal cypress test ([#3886](https://github.com/dhis2/capture-app/issues/3886)) ([5b5b477](https://github.com/dhis2/capture-app/commit/5b5b477ed3a26c7eb04c4966802769fe973e1631)) + ## [101.16.2](https://github.com/dhis2/capture-app/compare/v101.16.1...v101.16.2) (2024-11-19) diff --git a/cypress/e2e/EnrollmentAddEventPage/EnrollmentAddEventPageForm/EnrollmentAddEventPageForm.js b/cypress/e2e/EnrollmentAddEventPage/EnrollmentAddEventPageForm/EnrollmentAddEventPageForm.js index ca8d21ed03..7a8523cfa6 100644 --- a/cypress/e2e/EnrollmentAddEventPage/EnrollmentAddEventPageForm/EnrollmentAddEventPageForm.js +++ b/cypress/e2e/EnrollmentAddEventPage/EnrollmentAddEventPageForm/EnrollmentAddEventPageForm.js @@ -89,7 +89,7 @@ When(/^you click the create new button number (.*)$/, (eq) => { }); When(/^you type (.*) in the input number (.*)$/, (value, eq) => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(eq) .type(value) .blur(); @@ -155,7 +155,7 @@ When(/^the user selects (.*)$/, (value) => { }); When(/^you focus and blur a required field/, () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(1) .focus() .blur(); diff --git a/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.js b/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.js index 3d94481898..3f42786176 100644 --- a/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.js +++ b/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageForm/EnrollmentEditEventPageForm.js @@ -61,8 +61,7 @@ Given(/^you land on the enrollment event page with selected (.*) by having typed When(/^the user clicks on the edit button/, () => cy .get('[data-test="widget-enrollment-event"]') - .find('[data-test="dhis2-uicore-button"]') - .eq(1) + .find('[data-test="widget-enrollment-event-edit-button"]') .click(), ); @@ -85,7 +84,7 @@ When(/^the user clicks on the cancel button/, () => When(/^the user set the apgar score to (.*)/, score => cy .get('[data-test="widget-enrollment-event"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(2) .clear() .type(score) @@ -119,8 +118,8 @@ When('the user clicks switch tab to Schedule', () => { Then('the user selects another schedule date', () => { cy.get('[data-test="schedule-section"]').within(() => { - cy.get("[data-test='capture-ui-input']").eq(0).should('have.value', `${getCurrentYear() - 15}-01-07`); - cy.get("[data-test='capture-ui-input']").eq(0) + cy.get('input[type="text"]').eq(0).should('have.value', `${getCurrentYear() - 15}-01-07`); + cy.get('input[type="text"]').eq(0) .clear() .type(`${getCurrentYear()}-08-01`) .blur(); @@ -208,8 +207,7 @@ And('you open the Birth stage event', () => { Then('the edit button should be disabled', () => { cy.get('[data-test="widget-enrollment-event"]') - .find('[data-test="dhis2-uicore-button"]') - .eq(1) + .find('[data-test="widget-enrollment-event-edit-button"]') .should('be.disabled'); }); diff --git a/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageNavigation/EnrollmentEditEventPageNavigation.js b/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageNavigation/EnrollmentEditEventPageNavigation.js index 3664b4c338..d97e01569c 100644 --- a/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageNavigation/EnrollmentEditEventPageNavigation.js +++ b/cypress/e2e/EnrollmentEditEventPage/EnrollmentEditEventPageNavigation/EnrollmentEditEventPageNavigation.js @@ -21,10 +21,7 @@ When('the user clicks the first second antenatal care visit event', () => { }); When(/^the user clicks the "Back to all stages and events" button/, () => - cy - .get('[data-test="widget-enrollment-event"]') - .find('[data-test="dhis2-uicore-button"]') - .eq(0) + cy.get('[data-test="enrollment-edit-event-back-button"]') .click(), ); diff --git a/cypress/e2e/EnrollmentPage/BreakingTheGlass/BreakingTheGlass.js b/cypress/e2e/EnrollmentPage/BreakingTheGlass/BreakingTheGlass.js index 7e33f96bc7..a9ca4a6e31 100644 --- a/cypress/e2e/EnrollmentPage/BreakingTheGlass/BreakingTheGlass.js +++ b/cypress/e2e/EnrollmentPage/BreakingTheGlass/BreakingTheGlass.js @@ -16,21 +16,21 @@ Given('the tei created by this test is cleared from the database', () => { And('you create a new tei in Child programme from Ngelehun CHC', () => { cy.visit('/#/new?orgUnitId=DiszpKrYNg8&programId=IpHINAT79UW'); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(1) .type('1999-09-01') .blur(); cy.get('[data-test="d2-section"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Breaking') .blur(); cy.get('[data-test="d2-section"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('TheGlass') .blur(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(7) .type('2023-09-01') .blur(); @@ -68,7 +68,7 @@ And('you enroll the tei from Njandama MCHP', () => { .click(); cy.get('[data-test="d2-section"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(8) .type('1999-09-01') .blur(); diff --git a/cypress/e2e/EnrollmentPage/HiddenProgramStage/HiddenProgramStage.js b/cypress/e2e/EnrollmentPage/HiddenProgramStage/HiddenProgramStage.js index 43152029ff..151c272842 100644 --- a/cypress/e2e/EnrollmentPage/HiddenProgramStage/HiddenProgramStage.js +++ b/cypress/e2e/EnrollmentPage/HiddenProgramStage/HiddenProgramStage.js @@ -28,7 +28,7 @@ Given('you add an enrollment event that will result in a rule effect to hide a p '/#/enrollmentEventNew?enrollmentId=fmhIsWXVDmS&orgUnitId=s7SLtx8wmRA&programId=WSGAb5XwJ3Y&stageId=PFDfvmGpsR3&teiId=uW8Y7AIcRKA', ); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(0) .type(moment().format('YYYY-MM-DD')) .blur(); diff --git a/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.js b/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.js index d4771a8876..35d8996ee7 100644 --- a/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.js +++ b/cypress/e2e/EnrollmentPage/StagesAndEventsWidget/StagesAndEventsWidget.js @@ -11,7 +11,7 @@ After({ tags: '@with-restore-deleted-event' }, () => { .find('[data-test="create-new-button"]') .click(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .first() .type('2023-01-26') .blur(); diff --git a/cypress/e2e/NewPage/NewPage.js b/cypress/e2e/NewPage/NewPage.js index a4a7579656..caecc7dd8b 100644 --- a/cypress/e2e/NewPage/NewPage.js +++ b/cypress/e2e/NewPage/NewPage.js @@ -328,7 +328,7 @@ Then('you see validation error on visit date', () => { }); And('you fill in 200 in the hemoglobin', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(1) .type('200'); }); @@ -340,13 +340,13 @@ And('you see validation error on hemoglobin', () => { }); And('you fill in the visit date', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(0) - .type(`${getCurrentYear()}-01-01`); + .type(`${getCurrentYear()}-01-01`).blur(); }); And('you fill in the hemoglobin', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(1) .type('50'); }); @@ -389,14 +389,14 @@ And('you are in the Person registration page', () => { }); And('you fill in the first name with value that has duplicates', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(1) .type('Sarah') .blur(); }); And('you fill in a unique first name', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(1) .type(`Sarah-${Math.round((new Date()).getTime() / 1000)}`) .blur(); @@ -427,7 +427,7 @@ Then('you submit the form again from the duplicates modal', () => { // New person in WHO RMNCH Tracker And('you are in the WHO RMNCH program registration page', () => { cy.visit('/#/new?programId=WSGAb5XwJ3Y&orgUnitId=DiszpKrYNg8'); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(1) .invoke('val').should('not.be.empty'); }); @@ -441,7 +441,7 @@ And('you are in Child programme and Buma MCHP organization unit registration pag }); And('you fill the form with age 0', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(9) .type(moment().format('YYYY-MM-DD')) .blur(); @@ -454,37 +454,37 @@ And('you see validation warning on birth date', () => { }); And('you fill the WHO RMNCH program registration form with its required unique values', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(2) .type(`Sarah-${Math.round((new Date()).getTime() / 1000)}`); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(3) .type('Gonzales'); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(9) .type('1992-01-01') .blur(); }); And('you fill the WHO RMNCH program registration form with its required values', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(3) .type('Didriksson'); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(2) .type('Ava'); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(9) .type('1985-10-01') .blur(); }); And('you fill in child programme first name with value that has duplicates', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(4) .type('Sarah') .blur(); @@ -492,18 +492,18 @@ And('you fill in child programme first name with value that has duplicates', () And('you fill the Child programme registration form with a first name with value that has duplicates', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(1) .type('2021-01-01') .blur(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(4) .type('Sarah') .blur(); }); And('you fill in the birth report date', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(7) .type('2023-01-01') .blur(); @@ -530,9 +530,9 @@ And('you see the form prefield with existing TEI attributes values', () => { cy.get('[data-test="registration-page-content"]').within(() => { cy.contains('New Enrollment in program: Child Programme').should('exist'); cy.contains('First name').should('exist'); - cy.get('[data-test="capture-ui-input"]').eq(4).should('have.value', 'Anna'); + cy.get('input[type="text"]').eq(4).should('have.value', 'Anna'); cy.contains('Last name').should('exist'); - cy.get('[data-test="capture-ui-input"]').eq(5).should('have.value', 'Jones'); + cy.get('input[type="text"]').eq(5).should('have.value', 'Jones'); cy.contains('Gender').should('exist'); cy.contains('Female').should('exist'); }); @@ -554,15 +554,15 @@ Given('you open the main page with Ngelehun and Malaria case diagnosis, treatmen }); And('you fill the Malaria case diagnosis registration form with values', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(3) .type(`Ana-${Math.round((new Date()).getTime() / 1000)}`) .blur(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(4) .type(`Maria-${Math.round((new Date()).getTime() / 1000)}`) .blur(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(5) .type(moment().add(-1, 'day').format('YYYY-MM-DD')) .blur(); @@ -602,26 +602,26 @@ Then('the first stage appears on registration page', () => { }); And('you fill the Child Program program registration form with unique values', () => { - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(1) .type('2021-01-01') .blur(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(2) .type(20); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(3) .type(30) .blur(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(4) .type(`Sarah-${Math.round((new Date()).getTime() / 1000)}`) .blur(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(5) .type(`Beth-${Math.round((new Date()).getTime() / 1000)}`) .blur(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(7) .type('2021-01-01') .blur(); @@ -634,6 +634,9 @@ And('you see the enrollment minimap', () => { }); And('you delete the recently added tracked entity', () => { + cy.get('[data-test="profile-widget"]') + .contains('Person profile') + .should('exist'); cy.get('[data-test="widget-profile-overflow-menu"]') .click(); cy.contains('Delete Person') @@ -646,6 +649,9 @@ And('you delete the recently added tracked entity', () => { }); And('you delete the recently added malaria entity', () => { + cy.get('[data-test="profile-widget"]') + .contains('Malaria Entity profile') + .should('exist'); cy.get('[data-test="widget-profile-overflow-menu"]') .click(); cy.contains('Delete Malaria Entity') diff --git a/cypress/e2e/ScopeSelector/ScopeSelector.js b/cypress/e2e/ScopeSelector/ScopeSelector.js index c870644462..65bd9930f3 100644 --- a/cypress/e2e/ScopeSelector/ScopeSelector.js +++ b/cypress/e2e/ScopeSelector/ScopeSelector.js @@ -49,7 +49,7 @@ Given('you are in the main page with program preselected', () => { Given('you select both org unit and program Malaria case registration', () => { cy.get('[data-test="org-unit-selector-container"]') .click(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .type('Ngelehun C'); cy.contains('Ngelehun CHC') .click(); @@ -67,7 +67,7 @@ Given('you select both org unit and program Malaria case registration', () => { Given('you select both org unit and program Child Programme', () => { cy.get('[data-test="org-unit-selector-container"]') .click(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .type('Ngelehun C'); cy.contains('Ngelehun CHC') .click(); @@ -359,7 +359,7 @@ And('you see message explaining this is an Event program', () => { When('you select org unit that is incompatible with the already selected program', () => { cy.get('[data-test="org-unit-selector-container"]') .click(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .type('Biriw'); cy.contains('Biriwa') .click(); diff --git a/cypress/e2e/SearchForDuplicatesThroughAddRelationship/SearchForDuplicatesThroughAddRelationship.js b/cypress/e2e/SearchForDuplicatesThroughAddRelationship/SearchForDuplicatesThroughAddRelationship.js index 6ddaef31b1..8cbb6729d7 100644 --- a/cypress/e2e/SearchForDuplicatesThroughAddRelationship/SearchForDuplicatesThroughAddRelationship.js +++ b/cypress/e2e/SearchForDuplicatesThroughAddRelationship/SearchForDuplicatesThroughAddRelationship.js @@ -2,7 +2,7 @@ import { When, defineStep as And } from '@badeball/cypress-cucumber-preprocessor And('you fill in the first name with values that have duplicates', () => { cy.get('[data-test="d2-section"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .wait(500) .type('Tesmi') @@ -11,12 +11,12 @@ And('you fill in the first name with values that have duplicates', () => { And('you fill in the first name with values that have less than 5 duplicates', () => { cy.get('[data-test="d2-section"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('Sarah') .blur(); cy.get('[data-test="d2-section"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(2) .type('Fis') .blur(); @@ -24,13 +24,13 @@ And('you fill in the first name with values that have less than 5 duplicates', ( And('you fill in the first name with values that have exactly 5 duplicates', () => { cy.get('[data-test="d2-section"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .wait(500) .type('Tesmi') .blur(); cy.get('[data-test="d2-section"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(2) .type('Abel') .blur(); diff --git a/cypress/e2e/SearchPage/SearchPage.js b/cypress/e2e/SearchPage/SearchPage.js index 19ff59af2d..829e87a571 100644 --- a/cypress/e2e/SearchPage/SearchPage.js +++ b/cypress/e2e/SearchPage/SearchPage.js @@ -21,7 +21,7 @@ When('you select the search domain Person', () => { Then('there should be Person domain forms available to search with', () => { cy.get('[data-test="search-page-content"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .should('have.length', 1); }); @@ -53,7 +53,7 @@ When('you select the search domain WHO RMNCH Tracker', () => { When('you fill in the unique identifier field with values that will not return a tracked entity instance', () => { cy.get('[data-test="form-unique"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .first() .type('123') .blur(); @@ -85,7 +85,7 @@ When('you can close the modal', () => { When('you fill in the unique identifier field with values that will return a tracked entity instance', () => { cy.get('[data-test="form-unique"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .first() .clear() .type('3131112445555') @@ -95,7 +95,7 @@ When('you fill in the unique identifier field with values that will return a tra When('you fill in the first name with values that will return no results', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .first() .type('user non existing') .blur(); @@ -110,7 +110,7 @@ And('you expand the attributes search area', () => { When('you fill in the last name with values that will return results', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('Smith') .blur(); @@ -118,7 +118,7 @@ When('you fill in the last name with values that will return results', () => { When('for Malaria case you fill in values that will return less than 5 results', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(2) .type('Sara') .blur(); @@ -126,12 +126,12 @@ When('for Malaria case you fill in values that will return less than 5 results', When('for Person you fill in values that will return less than 5 results', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Sara') .blur(); cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('Fis') .blur(); @@ -139,37 +139,37 @@ When('for Person you fill in values that will return less than 5 results', () => When('you dont fill in any of the values', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .first() .clear(); }); When('you fill the values with nothing but spaces', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .first() .type(' '); cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type(' '); }); When('you fill in the the form with values', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Smith'); cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('Smith'); }); And(/^you fill in the the form with first name value: (.*)$/, (firstName) => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type(firstName) .blur(); @@ -177,14 +177,14 @@ And(/^you fill in the the form with first name value: (.*)$/, (firstName) => { When('you clear the values', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .first() .clear(); cy.get('[data-test="form-attributes"]').click(); cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .clear(); cy.get('[data-test="form-attributes"]').click(); @@ -235,7 +235,7 @@ Then('there should be visible a title with Malaria case diagnosis', () => { And('there should be Malaria case diagnosis forms visible to search with', () => { cy.get('[data-test="search-page-content"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .should('have.length', 1); }); @@ -245,12 +245,12 @@ Given('you are in the search page with the Adult Woman being preselected from th When('you fill in the date of birth', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(2) .type('1999-09-01') .blur(); cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(3) .type('2020-01-01') .blur(); @@ -275,7 +275,7 @@ When('you fill in the zip code range numbers', () => { When('you fill in the first name', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Lid') .blur(); @@ -288,13 +288,13 @@ When('you click the fallback search button', () => { When('you fill in the first and last name with values that will return results', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('Go') .blur(); cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Sarah') .blur(); @@ -302,13 +302,13 @@ When('you fill in the first and last name with values that will return results', When('you press enter after filling in the first and last name with values that will return results', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('Go') .blur(); cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Sarah') .wait(500) @@ -317,7 +317,7 @@ When('you press enter after filling in the first and last name with values that When('you press enter after filling in the unique identifier field with values that will return a tracked entity instance', () => { cy.get('[data-test="form-unique"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .first() .clear() .type('3131112445555{enter}'); @@ -325,13 +325,13 @@ When('you press enter after filling in the unique identifier field with values t When('you fill in the first name with value and last name with empty space', () => { cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Thomas') .blur(); cy.get('[data-test="form-attributes"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type(' ') .blur(); @@ -369,7 +369,7 @@ When('you see the attributes search area being expanded', () => { When('and you can see the unique identifier input', () => { cy.get('[data-test="form-unique"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .should('exist'); }); @@ -404,14 +404,14 @@ Then('you should be taken to the registration page with program with prefilled v .contains('New person in program: Child Programme') .should('exist'); cy.get('[data-test="registration-page-content"]').contains('First name').should('exist'); - cy.get('[data-test="capture-ui-input"]').eq(4).should('have.value', 'Sarah'); + cy.get('input[type="text"]').eq(4).should('have.value', 'Sarah'); cy.get('[data-test="registration-page-content"]').contains('Last name').should('exist'); - cy.get('[data-test="capture-ui-input"]').eq(5).should('have.value', 'Go'); + cy.get('input[type="text"]').eq(5).should('have.value', 'Go'); }); Then('you should be taken to the registration page without program with prefilled values', () => { cy.get('[data-test="registration-page-content"]').contains('First name').should('exist'); - cy.get('[data-test="capture-ui-input"]').eq(1).should('have.value', 'Sara'); + cy.get('input[type="text"]').eq(1).should('have.value', 'Sara'); cy.get('[data-test="registration-page-content"]').contains('Last name').should('exist'); - cy.get('[data-test="capture-ui-input"]').eq(2).should('have.value', 'Fis'); + cy.get('input[type="text"]').eq(2).should('have.value', 'Fis'); }); diff --git a/cypress/e2e/SearchThroughAddRelationship/SearchThroughAddRelationship.js b/cypress/e2e/SearchThroughAddRelationship/SearchThroughAddRelationship.js index 6ca75b0e34..89bc760ec7 100644 --- a/cypress/e2e/SearchThroughAddRelationship/SearchThroughAddRelationship.js +++ b/cypress/e2e/SearchThroughAddRelationship/SearchThroughAddRelationship.js @@ -21,7 +21,7 @@ When('you expand the third search area', () => { And('you fill in the first name with values that will return no results', () => { cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Name doesnt exist') .blur(); @@ -29,7 +29,7 @@ And('you fill in the first name with values that will return no results', () => And('you fill in the first name with values that will return results', () => { cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Tesmi') .blur(); @@ -49,23 +49,23 @@ And('there should be a validation error message', () => { And('you fill the values with nothing but spaces', () => { cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type(' '); cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type(' '); }); And('you fill in the the form with values', () => { cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Tesmi') .blur(); cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('Tesmi') .blur(); @@ -73,18 +73,18 @@ And('you fill in the the form with values', () => { And('you clear the values', () => { cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .clear(); cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .clear(); }); And('you fill in the first name with values that will return an error', () => { cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .first() .type(',,,,') .blur(); @@ -104,12 +104,12 @@ And('the next page button is disabled', () => { And('you fill in the the form with values that will return less than 5 results', () => { cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Sara') .blur(); cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('Gonzalez') .blur(); @@ -117,12 +117,12 @@ And('you fill in the the form with values that will return less than 5 results', And('you fill in the the form with values that will return exactly 5 results', () => { cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(0) .type('Tesmi') .blur(); cy.get('[data-test="d2-form-area"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .eq(1) .type('Abel') .blur(); diff --git a/cypress/e2e/TopBarActions/TopBarActions.js b/cypress/e2e/TopBarActions/TopBarActions.js index 6fb563ed38..521e5f4415 100644 --- a/cypress/e2e/TopBarActions/TopBarActions.js +++ b/cypress/e2e/TopBarActions/TopBarActions.js @@ -6,7 +6,7 @@ Given(/^you land on a enrollment page domain by having typed (.*)$/, (url) => { }); When(/^the user clicks on the edit button/, () => - cy.get('[data-test="widget-enrollment-event"]').find('[data-test="dhis2-uicore-button"]').eq(1).click(), + cy.get('[data-test="widget-enrollment-event"]').find('[data-test="widget-enrollment-event-edit-button"]').click(), ); When('the user clicks the arrow button to see the dropdown', () => { @@ -20,7 +20,7 @@ Then('the user sees the warning popup', () => { }); When(/^the user set the WHOMCH Diastolic blood pressure to (.*)/, score => - cy.get('[data-test="new-enrollment-event-form"]').find('[data-test="capture-ui-input"]').eq(6).clear() + cy.get('[data-test="new-enrollment-event-form"]').find('input[type="text"]').eq(6).clear() .type(score) .blur(), ); diff --git a/cypress/e2e/WidgetsForEnrollmentPages/WidgetAssignee/index.js b/cypress/e2e/WidgetsForEnrollmentPages/WidgetAssignee/index.js index 9f45c31e2f..37b328ec17 100644 --- a/cypress/e2e/WidgetsForEnrollmentPages/WidgetAssignee/index.js +++ b/cypress/e2e/WidgetsForEnrollmentPages/WidgetAssignee/index.js @@ -3,7 +3,7 @@ import { When, Then } from '@badeball/cypress-cucumber-preprocessor'; When('you assign the user Geetha in the view mode', () => { cy.get('[data-test="widget-assignee"]').within(() => { cy.get('[data-test="widget-assignee-assign"]').click(); - cy.get('[data-test="capture-ui-input"]').type('Geetha'); + cy.get('input[type="text"]').type('Geetha'); cy.contains('Geetha Alwan').click(); cy.get('[data-test="widget-assignee-save"]').click(); }); @@ -12,14 +12,13 @@ When('you assign the user Geetha in the view mode', () => { When('you assign the user Tracker demo User in the edit mode', () => { cy .get('[data-test="widget-enrollment-event"]') - .find('[data-test="dhis2-uicore-button"]') - .eq(1) + .find('[data-test="widget-enrollment-event-edit-button"]') .click(); cy.get('[data-test="widget-assignee"]').within(() => { cy.get('[data-test="widget-assignee-edit"]').click(); cy.get('[data-test="dhis2-uicore-chip-remove"]').click(); - cy.get('[data-test="capture-ui-input"]').type('Tracker demo'); + cy.get('input[type="text"]').type('Tracker demo'); cy.contains('Tracker demo User').click(); cy.get('[data-test="widget-assignee-save"]').click(); }); diff --git a/cypress/e2e/WidgetsForEnrollmentPages/WidgetEnrollment/index.js b/cypress/e2e/WidgetsForEnrollmentPages/WidgetEnrollment/index.js index 5303500a8d..9f4148abf9 100644 --- a/cypress/e2e/WidgetsForEnrollmentPages/WidgetEnrollment/index.js +++ b/cypress/e2e/WidgetsForEnrollmentPages/WidgetEnrollment/index.js @@ -250,7 +250,7 @@ Then(/^the user successfully transfers the enrollment/, () => { Then(/^the user types in (.*)/, (orgunit) => { cy.get('[data-test="widget-enrollment-transfer-modal"]').within(() => { - cy.get('[data-test="capture-ui-input"]').type(orgunit); + cy.get('input[type="text"]').type(orgunit); }); }); diff --git a/cypress/e2e/WidgetsForEnrollmentPages/WidgetEventNote/index.js b/cypress/e2e/WidgetsForEnrollmentPages/WidgetEventNote/index.js index 8b0ae0e38e..aec7cc2c19 100644 --- a/cypress/e2e/WidgetsForEnrollmentPages/WidgetEventNote/index.js +++ b/cypress/e2e/WidgetsForEnrollmentPages/WidgetEventNote/index.js @@ -5,7 +5,9 @@ Then('the enrollment widget should be loaded', () => { }); When('you click edit mode', () => { - cy.contains('[data-test="dhis2-uicore-button"]', 'Edit event') + cy + .get('[data-test="widget-enrollment-event"]') + .find('[data-test="widget-enrollment-event-edit-button"]') .click(); cy.get('[data-test="widget-enrollment-event-edit"]').should('exist'); }); diff --git a/cypress/e2e/WidgetsForEnrollmentPages/WidgetProfile/index.js b/cypress/e2e/WidgetsForEnrollmentPages/WidgetProfile/index.js index 37328551ba..7dde4dcc06 100644 --- a/cypress/e2e/WidgetsForEnrollmentPages/WidgetProfile/index.js +++ b/cypress/e2e/WidgetsForEnrollmentPages/WidgetProfile/index.js @@ -33,7 +33,7 @@ Then(/^the user sees the edit profile modal/, () => Given('you add a new tracked entity in the Malaria focus investigation program', () => { cy.visit('/#/new?programId=M3xtLkYBlKI&orgUnitId=DiszpKrYNg8'); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .eq(2) .type(`Local id-${Math.round((new Date()).getTime() / 1000)}`) .blur(); diff --git a/cypress/e2e/WidgetsForEnrollmentPages/WidgetTab/index.js b/cypress/e2e/WidgetsForEnrollmentPages/WidgetTab/index.js index 036671a649..07d8f01448 100644 --- a/cypress/e2e/WidgetsForEnrollmentPages/WidgetTab/index.js +++ b/cypress/e2e/WidgetsForEnrollmentPages/WidgetTab/index.js @@ -24,6 +24,6 @@ Then('you should see Schedule tab', () => { And(/you should see suggested date: (.*)/, (date) => { cy.get('[data-test="schedule-section"]').within(() => { - cy.get('[data-test="capture-ui-input"]').should('have.value', `${getCurrentYear()}-${date}`); + cy.get('input[type="text"]').should('have.value', `${getCurrentYear()}-${date}`); }); }); diff --git a/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEnrollmentAddEventPage/WidgetsForEnrollmentAddEventPage.js b/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEnrollmentAddEventPage/WidgetsForEnrollmentAddEventPage.js index ebb0f1293a..5aa738ee44 100644 --- a/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEnrollmentAddEventPage/WidgetsForEnrollmentAddEventPage.js +++ b/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEnrollmentAddEventPage/WidgetsForEnrollmentAddEventPage.js @@ -6,8 +6,8 @@ import '../WidgetTab'; Then('you can assign a user when scheduling the event', () => { cy.get('[data-test="assignee-section"]').within(() => { - cy.get('[data-test="capture-ui-input"]').click(); - cy.get('[data-test="capture-ui-input"]').type('Tracker demo'); + cy.get('input[type="text"]').click(); + cy.get('input[type="text"]').type('Tracker demo'); cy.contains('Tracker demo User').click(); }); cy.get('[data-test="assignee-section"]').within(() => { @@ -16,9 +16,7 @@ Then('you can assign a user when scheduling the event', () => { }); When(/^the user clicks the "Back to all stages and events" button/, () => - cy - .get('[data-test="widget-enrollment-event"]') - .contains('Back to all stages and events') + cy.get('[data-test="enrollment-edit-event-back-button"]') .click(), ); diff --git a/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEnrollmentDashboard/WidgetsForEnrollmentDashboard.js b/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEnrollmentDashboard/WidgetsForEnrollmentDashboard.js index 81034e2507..b6efc6f7df 100644 --- a/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEnrollmentDashboard/WidgetsForEnrollmentDashboard.js +++ b/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEnrollmentDashboard/WidgetsForEnrollmentDashboard.js @@ -6,14 +6,14 @@ import '../WidgetProfile'; import '../WidgetEnrollmentNote'; When('the user sets the birthday date to the current date', () => { - cy.get('[data-test="modal-edit-profile"]').find('[data-test="capture-ui-input"]').eq(8).clear() + cy.get('[data-test="modal-edit-profile"]').find('input[type="text"]').eq(8).clear() .blur() .type(moment().format('YYYY-MM-DD')) .blur(); }); When(/^the user sets the first name to (.*)$/, (name) => { - cy.get('[data-test="modal-edit-profile"]').find('[data-test="capture-ui-input"]').eq(1).clear() + cy.get('[data-test="modal-edit-profile"]').find('input[type="text"]').eq(1).clear() .blur() .type(name) .blur(); @@ -51,9 +51,7 @@ Then(/^the scope selector list contains the text (.*)$/, (name) => { }); When(/^the user clicks the "Back to all stages and events" button/, () => - cy - .get('[data-test="widget-enrollment-event"]') - .contains('Back to all stages and events') + cy.get('[data-test="enrollment-edit-event-back-button"]') .click(), ); diff --git a/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEventSchedule/WidgetsForEventSchedule.js b/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEventSchedule/WidgetsForEventSchedule.js index 3896685c41..1e0d6a4f4e 100644 --- a/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEventSchedule/WidgetsForEventSchedule.js +++ b/cypress/e2e/WidgetsForEnrollmentPages/WidgetsForEventSchedule/WidgetsForEventSchedule.js @@ -5,8 +5,8 @@ import '../WidgetTab'; Then('you choose a schedule date', () => { cy.get('[data-test="schedule-section"]').within(() => { - cy.get("[data-test='capture-ui-input']").eq(0).should('have.value', `${getCurrentYear()}-08-01`); - cy.get("[data-test='capture-ui-input']").eq(0) + cy.get('input[type="text"]').eq(0).should('have.value', `${getCurrentYear()}-08-01`); + cy.get('input[type="text"]').eq(0) .clear() .type(`${getCurrentYear() + 1}-08-01`) .blur(); diff --git a/cypress/e2e/WorkingLists/EventWorkingLists/EventWorkingListsUser/EventWorkingListsUser.js b/cypress/e2e/WorkingLists/EventWorkingLists/EventWorkingListsUser/EventWorkingListsUser.js index 4932225eac..019ba97970 100644 --- a/cypress/e2e/WorkingLists/EventWorkingLists/EventWorkingListsUser/EventWorkingListsUser.js +++ b/cypress/e2e/WorkingLists/EventWorkingLists/EventWorkingListsUser/EventWorkingListsUser.js @@ -250,9 +250,9 @@ Then('the list should display data ordered descendingly by report date', () => { .click(); cy.get('input[placeholder="From"]') - .type(`${lastYear}-01-01`); + .type(`${lastYear}-01-01`).blur(); - cy.get('input[placeholder="To"]').click(); + cy.get('input[placeholder="To"]').click().blur(); cy.contains('Update') .click({ force: true }); @@ -399,10 +399,10 @@ When('you set the date of admission filter', () => { cy.get('input[type="text"]') .then(($elements) => { cy.wrap($elements[0]) - .type('2018-01-01'); + .type('2018-01-01').blur(); cy.wrap($elements[1]) - .type('2018-12-31'); + .type('2018-12-31').blur(); }); cy.contains('Update') diff --git a/cypress/e2e/WorkingLists/TeiWorkingLists/TeiWorkingListsUser/TeiWorkingListsUser.js b/cypress/e2e/WorkingLists/TeiWorkingLists/TeiWorkingListsUser/TeiWorkingListsUser.js index 0ea736c26a..04f0af84b7 100644 --- a/cypress/e2e/WorkingLists/TeiWorkingLists/TeiWorkingListsUser/TeiWorkingListsUser.js +++ b/cypress/e2e/WorkingLists/TeiWorkingLists/TeiWorkingListsUser/TeiWorkingListsUser.js @@ -723,7 +723,7 @@ Then('the TEI working list initial configuration was kept', () => { And('you change the org unit', () => { cy.get('[data-test="org-unit-selector-container"]') .click(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .type('Njandama MCHP'); cy.contains('Njandama MCHP') .click(); diff --git a/cypress/support/step_definitions/common/baseSteps.js b/cypress/support/step_definitions/common/baseSteps.js index a4db6e4a30..c4122b51cc 100644 --- a/cypress/support/step_definitions/common/baseSteps.js +++ b/cypress/support/step_definitions/common/baseSteps.js @@ -22,7 +22,7 @@ And('you see the dropdown menu for selecting tracked entity type', () => { And('you select org unit', () => { cy.get('[data-test="org-unit-selector-container"]') .click(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .type('Ngelehun C'); cy.contains('Ngelehun CHC') .click(); @@ -36,7 +36,7 @@ Then('there should be visible a title with Child Program', () => { And('there should be Child Programme domain forms visible to search with', () => { cy.get('[data-test="search-page-content"]') - .find('[data-test="capture-ui-input"]') + .find('input[type="text"]') .should('have.length', 1); }); @@ -176,7 +176,7 @@ When(/^the user selects the program (.*)$/, (program) => { When(/^the user selects the org unit (.*)$/, (orgUnit) => { cy.get('[data-test="org-unit-selector-container"]') .click(); - cy.get('[data-test="capture-ui-input"]') + cy.get('input[type="text"]') .type(orgUnit.slice(0, -1)); cy.contains(orgUnit) .click(); diff --git a/flow-typed/npm/query-string_v6.x.x.js b/flow-typed/npm/query-string_v6.x.x.js deleted file mode 100644 index 837d96d34c..0000000000 --- a/flow-typed/npm/query-string_v6.x.x.js +++ /dev/null @@ -1,42 +0,0 @@ -// flow-typed signature: 4a4ede4f7f12b874598b0b727b9a1c4c -// flow-typed version: f898dad1b0/query-string_v6.x.x/flow_>=v0.104.x - -declare module 'query-string' { - declare type ArrayFormat = 'none' | 'bracket' | 'index' | 'comma' - declare type ParseOptions = {| - arrayFormat?: ArrayFormat, - decode?: boolean, - sort?: false | (A, B) => number, - parseNumbers?: boolean, - parseBooleans?: boolean, - |} - - declare type StringifyOptions = {| - arrayFormat?: ArrayFormat, - encode?: boolean, - strict?: boolean, - sort?: false | (A, B) => number, - skipNull?: boolean, - |} - - declare type ObjectParameter = string | number | boolean | null | void; - - declare type ObjectParameters = $ReadOnly<{ [string]: ObjectParameter | $ReadOnlyArray, ... }> - - declare type QueryParameters = { [string]: string | Array | null, ... } - - declare type StringifyObjectParameter = {| url: string, query?: QueryParameters |} - - declare module.exports: { - extract(str: string): string, - parse(str: string, opts?: ParseOptions): QueryParameters, - parseUrl(str: string, opts?: ParseOptions): { - url: string, - query: QueryParameters, - ... - }, - stringify(obj: ObjectParameters, opts?: StringifyOptions): string, - stringifyUrl(obj: StringifyObjectParameter, opts?: StringifyOptions): string, - ... - } -} diff --git a/flow-typed/npm/query-string_v9.x.x.js b/flow-typed/npm/query-string_v9.x.x.js new file mode 100644 index 0000000000..c242d25b12 --- /dev/null +++ b/flow-typed/npm/query-string_v9.x.x.js @@ -0,0 +1,23 @@ +// flow-typed signature: ec1d99909d639f153164cf55049d63b2 +// flow-typed version: <>/query-string_v^9.1.1/flow_v0.132.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'query-string' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'query-string' { + declare type QueryParameters = { [string]: string | Array | null, ... } + + declare module.exports: { + parse(str: string, opts?: any): QueryParameters, + ... + } +} diff --git a/i18n/ar.po b/i18n/ar.po index bd06150d1f..5709a43873 100644 --- a/i18n/ar.po +++ b/i18n/ar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Hamza Assada <7amza.it@gmail.com>, 2024\n" "Language-Team: Arabic (https://app.transifex.com/hisp-uio/teams/100509/ar/)\n" @@ -45,6 +45,39 @@ msgstr "" "الصفحة إذا كنت ترغب في استخدام هذه النسخة، ولكن اعلم أن هذا سيؤدي إلى إغلاق " "النسخ الأخرى." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "تعديل الحدث" + +msgid "New event" +msgstr "حدث جديد" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "البحث" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "مزيد" @@ -90,66 +123,6 @@ msgstr "يتم التحقق من القيمة" msgid "Async field update failed" msgstr "فشل تحديث حقل متزامن" -msgid "A value is required" -msgstr "قيمة مطلوبة" - -msgid "Please provide a valid number" -msgstr "نرجوا ادخال صيغة رقمية سليمة" - -msgid "Please provide a valid integer" -msgstr "من فضلك ادخل رقماً صحيحاً سليماً، من غير كسر" - -msgid "Please provide a positive integer" -msgstr "من فضلك ادخل رقماً صحيحاً موجباً" - -msgid "Please provide zero or a positive integer" -msgstr "من فضلك ادخل عدداً صحيحاً موجباً، أو صفر" - -msgid "Please provide a negative integer" -msgstr "من فضلك ادخل عدداً صحيحاً سالباً" - -msgid "Please provide a valid date" -msgstr "يرجى ادخال صيغة سليمة للتاريخ" - -msgid "A date in the future is not allowed" -msgstr "تاريخ في المستقبل غير مسموح به" - -msgid "Please provide a valid date and time" -msgstr "من فضلك ادخل صيغة سليمة للتاريخ والوقت" - -msgid "Please provide a valid time" -msgstr "من فضلك ادخل صيغة وقت سليمة" - -msgid "Please provide an integer between 0 and 100" -msgstr "" - -msgid "Please provide a valid url" -msgstr "من فضلك ادخل الأرتباط التشعبي بصيغة سليمة" - -msgid "Please provide a valid email address" -msgstr "من فضلك ادخل صيغة بريد الكتروني سليمة" - -msgid "Please provide a valid age" -msgstr "من فضلك ادخل صيغة عمرية سليمة" - -msgid "Please provide a valid phone number" -msgstr "من فضلك ادخل صيغة رقم تلفون سليمة" - -msgid "Please provide a valid organisation unit" -msgstr "من فضلك ادخل وحدة تنظيمية صالحة" - -msgid "Please provide valid coordinates" -msgstr "من فضلك ادخل صيغة احداثيات سليمة" - -msgid "This value already exists" -msgstr "هذه القيمة موجودة مسبقاً" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "لا يمكن ان تكون \"من\" اكبر من \"إلى\"" - -msgid "Checking..." -msgstr "يتم التحقق" - msgid "Area" msgstr "مساحة" @@ -162,6 +135,12 @@ msgstr "التسجيل" msgid "Complete event" msgstr "إكمال الحدث" +msgid "A value is required" +msgstr "قيمة مطلوبة" + +msgid "Please provide a valid date" +msgstr "يرجى ادخال صيغة سليمة للتاريخ" + msgid "{{ stageName }} - Basic info" msgstr "" @@ -174,8 +153,8 @@ msgstr "" msgid "Please select {{categoryName}}" msgstr "" -msgid "A future date is not allowed" -msgstr "لا يسمح بإدخال تاريخ في المستقبل" +msgid "A date in the future is not allowed" +msgstr "تاريخ في المستقبل غير مسموح به" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "" @@ -300,9 +279,6 @@ msgstr "نعم ، تجاهل التغييرات" msgid "No, cancel" msgstr "لا، الغاء" -msgid "New event" -msgstr "حدث جديد" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -521,9 +497,6 @@ msgstr "اكتب لتصفية الخيارات" msgid "No match found" msgstr "" -msgid "Search" -msgstr "البحث" - msgid "Clear" msgstr "مسح" @@ -681,7 +654,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -856,9 +831,6 @@ msgstr "حدث" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "تعديل الحدث" - msgid "View changelog" msgstr "" @@ -894,15 +866,6 @@ msgstr "تعذر تحميل الحدث" msgid "Organisation unit could not be loaded" msgstr "تعذر تحميل الوحدة التنظيمية" -msgid "Dashboard" -msgstr "لوحة المعلومات" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "البرنامج المحدد" @@ -933,6 +896,9 @@ msgstr "جار التحميل" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "إحتمال وجود تكرار" @@ -1073,7 +1039,7 @@ msgstr "" msgid "Assigned to" msgstr "مسندة إلى" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1082,7 +1048,7 @@ msgstr "تعديل" msgid "No one is assigned to this event" msgstr "لم يتم تعيين أي شخص لهذا الحدث" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1169,6 +1135,9 @@ msgstr "" msgid "Coordinates" msgstr "الإحداثيات" +msgid "Please provide valid coordinates" +msgstr "من فضلك ادخل صيغة احداثيات سليمة" + msgid "Delete polygon" msgstr "حذف المضلع" @@ -1256,6 +1225,9 @@ msgstr "تحذير" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "حذف الحدث" @@ -1274,9 +1246,6 @@ msgstr "الحدث مكتمل" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1425,6 +1394,12 @@ msgstr "التاريخ المقرر" msgid "Report date" msgstr "تاريخ التقرير" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "من فضلك ادخل وحدة تنظيمية صالحة" + msgid "Please select a valid event" msgstr "" @@ -1484,10 +1459,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1523,6 +1506,12 @@ msgstr "" msgid "Value" msgstr "القيمة" +msgid "File" +msgstr "ملف" + +msgid "Image" +msgstr "الصورة" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1583,6 +1572,46 @@ msgstr "تنزيل البيانات" msgid "an error occurred loading working lists" msgstr "حدث خطأ اثناء تحميل قوائم العمل" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "تاريخ التسجيل" @@ -1598,13 +1627,152 @@ msgstr "متابعة" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1616,6 +1784,18 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "تم تحديد {{count}}" +msgstr[1] "تم تحديد {{count}}" +msgstr[2] "تم تحديد {{count}}" +msgstr[3] "تم تحديد {{count}}" +msgstr[4] "تم تحديد {{count}}" +msgstr[5] "تم تحديد {{count}}" + +msgid "Deselect all" +msgstr "إلغاء تحديد الكل" + msgid "Update view" msgstr "تحديث العرض" @@ -1724,6 +1904,60 @@ msgstr "" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "نرجوا ادخال صيغة رقمية سليمة" + +msgid "Please provide a valid integer" +msgstr "من فضلك ادخل رقماً صحيحاً سليماً، من غير كسر" + +msgid "Please provide a positive integer" +msgstr "من فضلك ادخل رقماً صحيحاً موجباً" + +msgid "Please provide zero or a positive integer" +msgstr "من فضلك ادخل عدداً صحيحاً موجباً، أو صفر" + +msgid "Please provide a negative integer" +msgstr "من فضلك ادخل عدداً صحيحاً سالباً" + +msgid "Please provide a valid date and time" +msgstr "من فضلك ادخل صيغة سليمة للتاريخ والوقت" + +msgid "Please provide a valid time" +msgstr "من فضلك ادخل صيغة وقت سليمة" + +msgid "Please provide an integer between 0 and 100" +msgstr "" + +msgid "Please provide a valid url" +msgstr "من فضلك ادخل الأرتباط التشعبي بصيغة سليمة" + +msgid "Please provide a valid email address" +msgstr "من فضلك ادخل صيغة بريد الكتروني سليمة" + +msgid "Please provide a valid age" +msgstr "من فضلك ادخل صيغة عمرية سليمة" + +msgid "Please provide a valid phone number" +msgstr "من فضلك ادخل صيغة رقم تلفون سليمة" + +msgid "This value already exists" +msgstr "هذه القيمة موجودة مسبقاً" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "لا يمكن ان تكون \"من\" اكبر من \"إلى\"" + +msgid "Checking..." +msgstr "يتم التحقق" + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "ضبط الإحداثية" diff --git a/i18n/ar_IQ.po b/i18n/ar_IQ.po index f818d29a25..a599e064d5 100644 --- a/i18n/ar_IQ.po +++ b/i18n/ar_IQ.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: KRG HIS , 2024\n" "Language-Team: Arabic (Iraq) (https://app.transifex.com/hisp-uio/teams/100509/ar_IQ/)\n" @@ -42,6 +42,39 @@ msgstr "" "الصفحة إذا كنت ترغب في استخدام هذه النسخة، ولكن اعلم أن هذا سيؤدي إلى إغلاق " "النسخ الأخرى." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "تعديل الحدث" + +msgid "New event" +msgstr "حدث جديد" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "البحث" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "" @@ -297,9 +330,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "حدث جديد" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -518,9 +548,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "البحث" - msgid "Clear" msgstr "مسح" @@ -678,7 +705,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -853,9 +882,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "تعديل الحدث" - msgid "View changelog" msgstr "" @@ -891,15 +917,6 @@ msgstr "تعذر تحميل الحدث" msgid "Organisation unit could not be loaded" msgstr "تعذر تحميل الوحدة التنظيمية" -msgid "Dashboard" -msgstr "لوحة المعلومات" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "البرنامج المحدد" @@ -930,6 +947,9 @@ msgstr "جار التحميل" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "إحتمال وجود تكرار" @@ -1068,7 +1088,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1077,7 +1097,7 @@ msgstr "تعديل" msgid "No one is assigned to this event" msgstr "لم يتم تعيين أي شخص لهذا الحدث" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1251,6 +1271,9 @@ msgstr "تحذير" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "حذف الحدث" @@ -1269,9 +1292,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1479,10 +1499,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1518,6 +1546,12 @@ msgstr "" msgid "Value" msgstr "القيمة" +msgid "File" +msgstr "" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1578,6 +1612,46 @@ msgstr "تنزيل البيانات" msgid "an error occurred loading working lists" msgstr "حدث خطأ اثناء تحميل قوائم العمل" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1593,13 +1667,152 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1611,6 +1824,18 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "تحديث العرض" diff --git a/i18n/ckb.po b/i18n/ckb.po index 54b435b433..53cbcbe935 100644 --- a/i18n/ckb.po +++ b/i18n/ckb.po @@ -2,13 +2,12 @@ # Translators: # Antonia Bezenchek , 2021 # KRG HIS , 2021 -# Philip Larsen Donnelly, 2024 # Viktor Varland , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Viktor Varland , 2024\n" "Language-Team: Central Kurdish (https://app.transifex.com/hisp-uio/teams/100509/ckb/)\n" @@ -45,6 +44,39 @@ msgstr "" "تکایە پەیجەکەت ریفرێش بکەوە بۆ ئەوەی ئەم وەشانە بکەیتەوە بەڵام ئاگاداربکە " "ئەم کردارە وەشانەکانیتر دادەخات" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "حاڵەتەکە دەستکاری بکە" + +msgid "New event" +msgstr "رووداوي نوي" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "گەڕان" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "" @@ -301,9 +333,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "رووداوي نوي" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -523,9 +552,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "گەڕان" - msgid "Clear" msgstr "پاککردنەوە" @@ -683,7 +709,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -858,9 +886,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "حاڵەتەکە دەستکاری بکە" - msgid "View changelog" msgstr "" @@ -898,15 +923,6 @@ msgstr "حاڵەتەکە نەتواندرا بهێندرێت" msgid "Organisation unit could not be loaded" msgstr "ئۆرگانیزەیشن یونتەکە نەتواندرا بهێندرێت" -msgid "Dashboard" -msgstr "شيتةل كردني داتا" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "پرۆگرامە هەڵبژێردراوەکە" @@ -933,6 +949,9 @@ msgstr "" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "ڕەنگە دووبارەبوونەوە دۆزرابێتەوە" @@ -1071,7 +1090,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1080,7 +1099,7 @@ msgstr "دةستكاري" msgid "No one is assigned to this event" msgstr "هیچ کەسێک بۆ ئەم حاڵەتە رانەسپێردراوە" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1254,6 +1273,9 @@ msgstr "" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "حاڵەتەکە بسڕەوە" @@ -1272,9 +1294,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1470,10 +1489,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1509,6 +1536,12 @@ msgstr "" msgid "Value" msgstr "بةها" +msgid "File" +msgstr "" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1569,6 +1602,46 @@ msgstr "زانیاریەکان دابەزێنە" msgid "an error occurred loading working lists" msgstr "هەڵەیەک ڕوویدا لە هێنانی لیستی کارکردن" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1584,13 +1657,120 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1602,6 +1782,14 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "پیشاندان نوێبکەوە" diff --git a/i18n/cs.po b/i18n/cs.po index 39571615b5..e932759fdf 100644 --- a/i18n/cs.po +++ b/i18n/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Jiří Podhorecký , 2024\n" "Language-Team: Czech (https://app.transifex.com/hisp-uio/teams/100509/cs/)\n" @@ -43,6 +43,39 @@ msgstr "" "doméně). Chcete-li tuto verzi znovu použít, obnovte prosím tuto stránku, " "mějte však na paměti, že se tím zavřou další verze." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Upravit událost" + +msgid "New event" +msgstr "Nová událost" + +msgid "Active enrollments" +msgstr "Aktivní zápisy" + +msgid "Completed enrollments" +msgstr "Dokončené zápisy" + +msgid "Cancelled enrollments" +msgstr "Zrušené zápisy" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Hledat" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Více" @@ -88,66 +121,6 @@ msgstr "Tato hodnota se ověřuje" msgid "Async field update failed" msgstr "Asynchronní aktualizace pole selhala" -msgid "A value is required" -msgstr "hodnota je vyžadována" - -msgid "Please provide a valid number" -msgstr "Uveďte prosím platné číslo" - -msgid "Please provide a valid integer" -msgstr "Uveďte platné celé číslo" - -msgid "Please provide a positive integer" -msgstr "Zadejte kladné celé číslo" - -msgid "Please provide zero or a positive integer" -msgstr "Uveďte nulové nebo kladné celé číslo" - -msgid "Please provide a negative integer" -msgstr "Uveďte záporné celé číslo" - -msgid "Please provide a valid date" -msgstr "Uveďte prosím platné datum" - -msgid "A date in the future is not allowed" -msgstr "Datum v budoucnosti není povoleno" - -msgid "Please provide a valid date and time" -msgstr "Uveďte prosím platné datum a čas" - -msgid "Please provide a valid time" -msgstr "Uveďte platný čas" - -msgid "Please provide an integer between 0 and 100" -msgstr "Zadejte prosím celé číslo v rozmezí 0 až 100" - -msgid "Please provide a valid url" -msgstr "Uveďte platnou adresu URL" - -msgid "Please provide a valid email address" -msgstr "Uveďte platnou e-mailovou adresu" - -msgid "Please provide a valid age" -msgstr "Uveďte platný věk" - -msgid "Please provide a valid phone number" -msgstr "Uveďte prosím platné telefonní číslo" - -msgid "Please provide a valid organisation unit" -msgstr "Uveďte platnou organizační jednotku" - -msgid "Please provide valid coordinates" -msgstr "Uveďte platné souřadnice" - -msgid "This value already exists" -msgstr "„Od“ nemůže být větší než „do“..." - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "„Od“ nemůže být větší než „Do“" - -msgid "Checking..." -msgstr "Probíhá kontrola ..." - msgid "Area" msgstr "Oblast" @@ -160,6 +133,12 @@ msgstr "Zápis" msgid "Complete event" msgstr "Dokončit událost" +msgid "A value is required" +msgstr "hodnota je vyžadována" + +msgid "Please provide a valid date" +msgstr "Uveďte prosím platné datum" + msgid "{{ stageName }} - Basic info" msgstr "{{ stageName }} - Základní informace" @@ -172,8 +151,8 @@ msgstr "{{ stageName }} - Stav" msgid "Please select {{categoryName}}" msgstr "Vyberte prosím {{categoryName}}" -msgid "A future date is not allowed" -msgstr "Budoucí datum není povoleno" +msgid "A date in the future is not allowed" +msgstr "Datum v budoucnosti není povoleno" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "Ukládání nového zápisu do {{programName}} v {{orgUnitName}}." @@ -298,9 +277,6 @@ msgstr "Ano, zahodit změny" msgid "No, cancel" msgstr "Ne, zrušit" -msgid "New event" -msgstr "Nová událost" - msgid "You don't have access to create an event in the current selections" msgstr "V aktuálním výběru nemáte přístup k vytvoření události" @@ -523,9 +499,6 @@ msgstr "Zadáním filtrujete možnosti" msgid "No match found" msgstr "Žádná shoda nenalezena" -msgid "Search" -msgstr "Hledat" - msgid "Clear" msgstr "Vyčistit" @@ -871,9 +844,6 @@ msgstr "událost" msgid "You don't have access to edit this event" msgstr "Nemáte přístup k úpravám této události" -msgid "Edit event" -msgstr "Upravit událost" - msgid "View changelog" msgstr "Zobrazit seznam změn" @@ -911,15 +881,6 @@ msgstr "Událost se nepodařilo načíst" msgid "Organisation unit could not be loaded" msgstr "Organizační jednotku se nepodařilo načíst" -msgid "Dashboard" -msgstr "Ovládací panel" - -msgid "Edit Event" -msgstr "Upravit událost" - -msgid "View Event" -msgstr "Zobrazit událost" - msgid "Selected program" msgstr "Vybraný program" @@ -948,6 +909,9 @@ msgstr "načítání" msgid "An error occurred while loading the form" msgstr "Při načítání formuláře došlo k chybě" +msgid "Back to all stages and events" +msgstr "Zpět ke všem fázím a událostem" + msgid "Possible duplicates found" msgstr "Byly nalezeny možné duplikáty" @@ -1197,6 +1161,9 @@ msgstr "Nastavit souřadnice" msgid "Coordinates" msgstr "Souřadnice" +msgid "Please provide valid coordinates" +msgstr "Uveďte platné souřadnice" + msgid "Delete polygon" msgstr "Smazat polygon" @@ -1287,6 +1254,9 @@ msgstr "Varování" msgid "stage not found in rules execution" msgstr "fáze nebyla nalezena v provádění pravidel" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Smazat událost" @@ -1305,9 +1275,6 @@ msgstr "Událost dokončena" msgid "The event cannot be edited after it has been completed" msgstr "Událost nelze upravovat po jejím dokončení." -msgid "Back to all stages and events" -msgstr "Zpět ke všem fázím a událostem" - msgid "Notes about this event" msgstr "Poznámky k této události" @@ -1464,6 +1431,12 @@ msgstr "Plánované datum" msgid "Report date" msgstr "Datum zprávy" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "Uveďte platnou organizační jednotku" + msgid "Please select a valid event" msgstr "Vyberte prosím platnou událost" @@ -1523,11 +1496,19 @@ msgstr "{{ scheduledEvents }} naplánováno" msgid "Stages and Events" msgstr "Fáze a události" +msgid "View linked event" +msgstr "Zobrazit propojenou událost" + msgid "An error occurred while loading the widget." msgstr "Při načítání widgetu došlo k chybě." -msgid "View linked event" -msgstr "Zobrazit propojenou událost" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" +msgstr "" msgid "Scheduled" msgstr "Naplánováno" @@ -1562,6 +1543,12 @@ msgstr "Změna" msgid "Value" msgstr "Hodnota" +msgid "File" +msgstr "Soubor" + +msgid "Image" +msgstr "Obrázek" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "Nový vztah {{trackedEntityTypeName}} " @@ -1624,6 +1611,46 @@ msgstr "Stáhnout data ..." msgid "an error occurred loading working lists" msgstr "při načítání pracovních seznamů došlo k chybě" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "Nastala neznámá chyba." + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Datum registrace" @@ -1639,14 +1666,137 @@ msgstr "Následovat" msgid "Choose a program stage to filter by {{label}}" msgstr "Vyberte fázi programu, kterou chcete filtrovat podle {{label}}" -msgid "Active enrollments" -msgstr "Aktivní zápisy" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." +msgstr "" -msgid "Completed enrollments" -msgstr "Dokončené zápisy" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." +msgstr "" -msgid "Cancelled enrollments" -msgstr "Zrušené zápisy" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" +msgstr "" msgid "Working list could not be updated" msgstr "Pracovní seznam nelze aktualizovat" @@ -1657,6 +1807,16 @@ msgstr "došlo k chybě při načítání pracovních seznamů" msgid "an error occurred loading Tracked entity instance lists" msgstr "došlo k chybě při načítání seznamů instancí trasovaných entit" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "Vybrán: {{count}}" +msgstr[1] "Vybráno: {{count}}" +msgstr[2] "Vybráno: {{count}}" +msgstr[3] "Vybráno: {{count}}" + +msgid "Deselect all" +msgstr "Odznačit vše" + msgid "Update view" msgstr "Aktualizovat zobrazení" @@ -1765,6 +1925,60 @@ msgstr "Chyba při úpravě události, provedené změny nebyly uloženy" msgid "Error updating the Assignee" msgstr "Chyba při aktualizaci Příjemce" +msgid "Please provide a valid number" +msgstr "Uveďte prosím platné číslo" + +msgid "Please provide a valid integer" +msgstr "Uveďte platné celé číslo" + +msgid "Please provide a positive integer" +msgstr "Zadejte kladné celé číslo" + +msgid "Please provide zero or a positive integer" +msgstr "Uveďte nulové nebo kladné celé číslo" + +msgid "Please provide a negative integer" +msgstr "Uveďte záporné celé číslo" + +msgid "Please provide a valid date and time" +msgstr "Uveďte prosím platné datum a čas" + +msgid "Please provide a valid time" +msgstr "Uveďte platný čas" + +msgid "Please provide an integer between 0 and 100" +msgstr "Zadejte prosím celé číslo v rozmezí 0 až 100" + +msgid "Please provide a valid url" +msgstr "Uveďte platnou adresu URL" + +msgid "Please provide a valid email address" +msgstr "Uveďte platnou e-mailovou adresu" + +msgid "Please provide a valid age" +msgstr "Uveďte platný věk" + +msgid "Please provide a valid phone number" +msgstr "Uveďte prosím platné telefonní číslo" + +msgid "This value already exists" +msgstr "„Od“ nemůže být větší než „do“..." + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "„Od“ nemůže být větší než „Do“" + +msgid "Checking..." +msgstr "Probíhá kontrola ..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Nastavit souřadnice" diff --git a/i18n/da.po b/i18n/da.po index 254ea3696e..d01b1453cb 100644 --- a/i18n/da.po +++ b/i18n/da.po @@ -1,13 +1,13 @@ # # Translators: -# Philip Larsen Donnelly, 2024 +# Philip Larsen Donnelly, 2022 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-09-02T11:08:16.281Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Philip Larsen Donnelly, 2024\n" +"Last-Translator: Philip Larsen Donnelly, 2022\n" "Language-Team: Danish (https://app.transifex.com/hisp-uio/teams/100509/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -36,6 +36,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "" @@ -288,9 +321,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -504,9 +534,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "" - msgid "Clear" msgstr "Clear" @@ -606,42 +633,6 @@ msgstr "" msgid "Close the notice" msgstr "" -msgid "Use new Enrollment dashboard for {{programName}}" -msgstr "" - -msgid "Opt in for {{programName}}" -msgstr "" - -msgid "" -"By clicking opt-in below, you will start using the new enrollment dashboard " -"in the Capture app for this Tracker program. At the moment, there is certain" -" functionality from Tracker Capture that has not yet been added, including " -"relationship and referral functionality. The work on including this Tracker " -"functionality in Capture is ongoing and will be added in upcoming app " -"releases." -msgstr "" - -msgid "" -"The core team appreciates any feedback on this new functionality which is " -"currently being beta tested, please report any issues and feedback in the " -"DHIS2 JIRA project." -msgstr "" - -msgid "" -"Click the button below to opt-in to the new enrollment dashboard " -"functionality in the Capture app (beta) for this Tracker program for all " -"users." -msgstr "" - -msgid "Yes, opt in" -msgstr "" - -msgid "Stop using new Enrollment dashboard for {{programName}}" -msgstr "" - -msgid "Opt out for {{programName}}" -msgstr "" - msgid "Enrollment with id \"{{enrollmentId}}\" does not exist" msgstr "" @@ -700,7 +691,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -729,9 +722,6 @@ msgstr "" msgid "Page is missing required values from URL" msgstr "" -msgid "Program is not valid" -msgstr "" - msgid "Org unit is not valid with current program" msgstr "" @@ -878,9 +868,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -916,15 +903,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "Dashboard" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "" @@ -951,6 +929,9 @@ msgstr "" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1089,7 +1070,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1098,7 +1079,7 @@ msgstr "" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1144,6 +1125,9 @@ msgstr "" msgid "Mark incomplete" msgstr "" +msgid "You do not have access to delete this enrollment" +msgstr "" + msgid "Delete enrollment" msgstr "" @@ -1224,6 +1208,12 @@ msgstr "" msgid "Follow-up" msgstr "" +msgid "Started at{{escape}}" +msgstr "" + +msgid "Owned by{{escape}}" +msgstr "" + msgid "Cancelled" msgstr "" @@ -1263,6 +1253,9 @@ msgstr "Warning" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1281,9 +1274,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1412,11 +1402,6 @@ msgstr "" msgid "Ambiguous relationships, contact system administrator" msgstr "" -msgid "" -"Enter {{linkableStageLabel}} details in the next step after completing this " -"{{currentStageLabel}}." -msgstr "" - msgid "Enter details now" msgstr "" @@ -1484,10 +1469,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1499,6 +1492,9 @@ msgstr "" msgid "No changes to display" msgstr "" +msgid "Updated" +msgstr "" + msgid "Created" msgstr "" @@ -1517,6 +1513,15 @@ msgstr "" msgid "Change" msgstr "" +msgid "Value" +msgstr "" + +msgid "File" +msgstr "" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1577,6 +1582,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1592,13 +1637,120 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1610,6 +1762,14 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "" diff --git a/i18n/en.pot b/i18n/en.pot index 6c9b6fc55c..18d95a6655 100644 --- a/i18n/en.pot +++ b/i18n/en.pot @@ -113,66 +113,6 @@ msgstr "This value is validating" msgid "Async field update failed" msgstr "Async field update failed" -msgid "A value is required" -msgstr "A value is required" - -msgid "Please provide a valid number" -msgstr "Please provide a valid number" - -msgid "Please provide a valid integer" -msgstr "Please provide a valid integer" - -msgid "Please provide a positive integer" -msgstr "Please provide a positive integer" - -msgid "Please provide zero or a positive integer" -msgstr "Please provide zero or a positive integer" - -msgid "Please provide a negative integer" -msgstr "Please provide a negative integer" - -msgid "Please provide a valid date" -msgstr "Please provide a valid date" - -msgid "A date in the future is not allowed" -msgstr "A date in the future is not allowed" - -msgid "Please provide a valid date and time" -msgstr "Please provide a valid date and time" - -msgid "Please provide a valid time" -msgstr "Please provide a valid time" - -msgid "Please provide an integer between 0 and 100" -msgstr "Please provide an integer between 0 and 100" - -msgid "Please provide a valid url" -msgstr "Please provide a valid url" - -msgid "Please provide a valid email address" -msgstr "Please provide a valid email address" - -msgid "Please provide a valid age" -msgstr "Please provide a valid age" - -msgid "Please provide a valid phone number" -msgstr "Please provide a valid phone number" - -msgid "Please provide a valid organisation unit" -msgstr "Please provide a valid organisation unit" - -msgid "Please provide valid coordinates" -msgstr "Please provide valid coordinates" - -msgid "This value already exists" -msgstr "This value already exists" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "\"From\" cannot be greater than \"To\"" - -msgid "Checking..." -msgstr "Checking..." - msgid "Area" msgstr "Area" @@ -185,6 +125,12 @@ msgstr "Enrollment" msgid "Complete event" msgstr "Complete event" +msgid "A value is required" +msgstr "A value is required" + +msgid "Please provide a valid date" +msgstr "Please provide a valid date" + msgid "{{ stageName }} - Basic info" msgstr "{{ stageName }} - Basic info" @@ -197,8 +143,8 @@ msgstr "{{ stageName }} - Status" msgid "Please select {{categoryName}}" msgstr "Please select {{categoryName}}" -msgid "A future date is not allowed" -msgstr "A future date is not allowed" +msgid "A date in the future is not allowed" +msgstr "A date in the future is not allowed" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "Saving a new enrollment in {{programName}} in {{orgUnitName}}." @@ -948,6 +894,9 @@ msgstr "Loading" msgid "An error occurred while loading the form" msgstr "An error occurred while loading the form" +msgid "Back to all stages and events" +msgstr "Back to all stages and events" + msgid "Possible duplicates found" msgstr "Possible duplicates found" @@ -1195,6 +1144,9 @@ msgstr "Set coordinates" msgid "Coordinates" msgstr "Coordinates" +msgid "Please provide valid coordinates" +msgstr "Please provide valid coordinates" + msgid "Delete polygon" msgstr "Delete polygon" @@ -1294,6 +1246,9 @@ msgstr "Warning" msgid "stage not found in rules execution" msgstr "stage not found in rules execution" +msgid "Please provide an valid organisation unit" +msgstr "Please provide an valid organisation unit" + msgid "Delete event" msgstr "Delete event" @@ -1312,9 +1267,6 @@ msgstr "Event completed" msgid "The event cannot be edited after it has been completed" msgstr "The event cannot be edited after it has been completed" -msgid "Back to all stages and events" -msgstr "Back to all stages and events" - msgid "Notes about this event" msgstr "Notes about this event" @@ -1457,6 +1409,12 @@ msgstr "Scheduled date" msgid "Report date" msgstr "Report date" +msgid "Please enter a date" +msgstr "Please enter a date" + +msgid "Please provide a valid organisation unit" +msgstr "Please provide a valid organisation unit" + msgid "Please select a valid event" msgstr "Please select a valid event" @@ -1514,11 +1472,21 @@ msgstr "{{ scheduledEvents }} scheduled" msgid "Stages and Events" msgstr "Stages and Events" +msgid "View linked event" +msgstr "View linked event" + msgid "An error occurred while loading the widget." msgstr "An error occurred while loading the widget." -msgid "View linked event" -msgstr "View linked event" +msgid "Linked event" +msgstr "Linked event" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" +msgstr "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgid "Scheduled" msgstr "Scheduled" @@ -1923,6 +1891,60 @@ msgstr "Error editing the event, the changes made were not saved" msgid "Error updating the Assignee" msgstr "Error updating the Assignee" +msgid "Please provide a valid number" +msgstr "Please provide a valid number" + +msgid "Please provide a valid integer" +msgstr "Please provide a valid integer" + +msgid "Please provide a positive integer" +msgstr "Please provide a positive integer" + +msgid "Please provide zero or a positive integer" +msgstr "Please provide zero or a positive integer" + +msgid "Please provide a negative integer" +msgstr "Please provide a negative integer" + +msgid "Please provide a valid date and time" +msgstr "Please provide a valid date and time" + +msgid "Please provide a valid time" +msgstr "Please provide a valid time" + +msgid "Please provide an integer between 0 and 100" +msgstr "Please provide an integer between 0 and 100" + +msgid "Please provide a valid url" +msgstr "Please provide a valid url" + +msgid "Please provide a valid email address" +msgstr "Please provide a valid email address" + +msgid "Please provide a valid age" +msgstr "Please provide a valid age" + +msgid "Please provide a valid phone number" +msgstr "Please provide a valid phone number" + +msgid "This value already exists" +msgstr "This value already exists" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "\"From\" cannot be greater than \"To\"" + +msgid "Checking..." +msgstr "Checking..." + +msgid "Please provide a valid positive integer" +msgstr "Please provide a valid positive integer" + +msgid "Please enter a valid time" +msgstr "Please enter a valid time" + +msgid "Please enter a time" +msgstr "Please enter a time" + msgid "Set coordinate" msgstr "Set coordinate" diff --git a/i18n/es.po b/i18n/es.po index 301f636658..8ba1f98161 100644 --- a/i18n/es.po +++ b/i18n/es.po @@ -4,24 +4,25 @@ # ericbp , 2021 # Jaime Bosque , 2021 # Pablo Pajuelo Cabezas , 2022 -# Prabhjot Singh, 2023 # Christian Atavillos, 2023 # Alison Andrade , 2024 -# Gabriela Rodriguez , 2024 # Janeth Cruz, 2024 -# Enzo Nicolas Rossi , 2024 -# Viktor Varland , 2024 # Marta Vila , 2024 # Juan M Alcantara Acosta , 2024 # Manuel Silva , 2024 # Philip Larsen Donnelly, 2024 +# Milagros Rodríguez, 2024 +# Gabriela Rodriguez , 2024 +# Prabhjot Singh, 2024 +# Viktor Varland , 2024 +# Enzo Nicolas Rossi , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Philip Larsen Donnelly, 2024\n" +"Last-Translator: Enzo Nicolas Rossi , 2024\n" "Language-Team: Spanish (https://app.transifex.com/hisp-uio/teams/100509/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,6 +58,39 @@ msgstr "" "desea utilizar esta versión nuevamente, pero tenga en cuenta que esto " "cerrará otras versiones." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Editar evento" + +msgid "New event" +msgstr "Evento nuevo" + +msgid "Active enrollments" +msgstr "Inscripciones activas" + +msgid "Completed enrollments" +msgstr "Inscripciónes completadas" + +msgid "Cancelled enrollments" +msgstr "Inscripciones canceladas " + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Buscar" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Más" @@ -102,66 +136,6 @@ msgstr "Este valor está siendo validado" msgid "Async field update failed" msgstr "Error al actualizar el campo asincrónico" -msgid "A value is required" -msgstr "Se requiere un valor" - -msgid "Please provide a valid number" -msgstr "Proporcione un número válido" - -msgid "Please provide a valid integer" -msgstr "Proporcione un número entero válido" - -msgid "Please provide a positive integer" -msgstr "Proporcione un número entero positivo" - -msgid "Please provide zero or a positive integer" -msgstr "Proporcione cero o un número entero positivo" - -msgid "Please provide a negative integer" -msgstr "Proporcione un número entero negativo" - -msgid "Please provide a valid date" -msgstr "Proporcione una fecha válida" - -msgid "A date in the future is not allowed" -msgstr "No se permite una fecha en el futuro" - -msgid "Please provide a valid date and time" -msgstr "Proporcione una fecha y hora válidas" - -msgid "Please provide a valid time" -msgstr "Proporcione una hora válida" - -msgid "Please provide an integer between 0 and 100" -msgstr "Proporcione un número entero entre 0 y 100" - -msgid "Please provide a valid url" -msgstr "Proporcione una URL válida" - -msgid "Please provide a valid email address" -msgstr "Por favor ingrese una dirección de correo electrónico válida" - -msgid "Please provide a valid age" -msgstr "Proporcione una edad válida" - -msgid "Please provide a valid phone number" -msgstr "Proporcione un número de teléfono válido" - -msgid "Please provide a valid organisation unit" -msgstr "Proporcione una unidad organizativa válida" - -msgid "Please provide valid coordinates" -msgstr "Proporcione coordenadas válidas" - -msgid "This value already exists" -msgstr "Este valor ya existe" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "\"Desde\" no puede ser mayor que \"Hasta\"" - -msgid "Checking..." -msgstr "Verificando..." - msgid "Area" msgstr "Área" @@ -174,6 +148,12 @@ msgstr "Inscripción" msgid "Complete event" msgstr "Completar el evento" +msgid "A value is required" +msgstr "Se requiere un valor" + +msgid "Please provide a valid date" +msgstr "Proporcione una fecha válida" + msgid "{{ stageName }} - Basic info" msgstr "{{ stageName }} - Información básica" @@ -186,8 +166,8 @@ msgstr "{{ stageName }} - Estado" msgid "Please select {{categoryName}}" msgstr "Seleccione {{categoryName}}" -msgid "A future date is not allowed" -msgstr "No se permite una fecha futura" +msgid "A date in the future is not allowed" +msgstr "No se permite una fecha en el futuro" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "" @@ -316,9 +296,6 @@ msgstr "Sí, descartar cambios" msgid "No, cancel" msgstr "No, cancelar" -msgid "New event" -msgstr "Evento nuevo" - msgid "You don't have access to create an event in the current selections" msgstr "No tiene acceso para crear un evento en las selecciones actuales" @@ -543,9 +520,6 @@ msgstr "Escriba para filtrar opciones" msgid "No match found" msgstr "No se encontraron coincidencias" -msgid "Search" -msgstr "Buscar" - msgid "Clear" msgstr "Limpiar" @@ -898,9 +872,6 @@ msgstr "evento" msgid "You don't have access to edit this event" msgstr "No tiene acceso para editar este evento" -msgid "Edit event" -msgstr "Editar evento" - msgid "View changelog" msgstr "Ver registro de cambios" @@ -938,15 +909,6 @@ msgstr "No se pudo cargar el evento" msgid "Organisation unit could not be loaded" msgstr "No se pudo cargar la unidad organizativa" -msgid "Dashboard" -msgstr "Tablero" - -msgid "Edit Event" -msgstr "Editar evento" - -msgid "View Event" -msgstr "Ver evento" - msgid "Selected program" msgstr "Programa seleccionado" @@ -975,6 +937,9 @@ msgstr "Cargando" msgid "An error occurred while loading the form" msgstr "Ocurrió un error al cargar el formulario" +msgid "Back to all stages and events" +msgstr "Volver a todas las etapas y eventos" + msgid "Possible duplicates found" msgstr "Posibles duplicados encontrados" @@ -1232,6 +1197,9 @@ msgstr "Establecer coordenadas" msgid "Coordinates" msgstr "Coordenadas" +msgid "Please provide valid coordinates" +msgstr "Proporcione coordenadas válidas" + msgid "Delete polygon" msgstr "Eliminar polígono" @@ -1326,6 +1294,9 @@ msgstr "Advertencia" msgid "stage not found in rules execution" msgstr "etapa no encontrada en la ejecución de reglas" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Eliminar evento" @@ -1345,9 +1316,6 @@ msgstr "Evento completado" msgid "The event cannot be edited after it has been completed" msgstr "El evento no admite cambios después de haber sido completado" -msgid "Back to all stages and events" -msgstr "Volver a todas las etapas y eventos" - msgid "Notes about this event" msgstr "Notas sobre este acto" @@ -1510,6 +1478,12 @@ msgstr "Fecha planificada" msgid "Report date" msgstr "Fecha de reporte" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "Proporcione una unidad organizativa válida" + msgid "Please select a valid event" msgstr "Seleccione un evento válido" @@ -1570,11 +1544,19 @@ msgstr "{{ scheduledEvents }} programado(s)" msgid "Stages and Events" msgstr "Etapas y eventos" +msgid "View linked event" +msgstr "Ver eventos relacionados" + msgid "An error occurred while loading the widget." msgstr "Ha ocurrido un error al cargar el componente" -msgid "View linked event" -msgstr "Ver eventos relacionados" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" +msgstr "" msgid "Scheduled" msgstr "Planificado" @@ -1609,6 +1591,12 @@ msgstr "Cambio" msgid "Value" msgstr "Valor" +msgid "File" +msgstr "Archivo" + +msgid "Image" +msgstr "Imagen (PNG)" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "Nueva relación de {{trackedEntityTypeName}}" @@ -1675,6 +1663,46 @@ msgstr "Descargar datos" msgid "an error occurred loading working lists" msgstr "se produjo un error al cargar listas de trabajo" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "Se ha producido un error desconocido." + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Fecha de registro" @@ -1690,14 +1718,129 @@ msgstr "Seguimiento" msgid "Choose a program stage to filter by {{label}}" msgstr "Elija una etapa del programa para filtrar por {{label}}" -msgid "Active enrollments" -msgstr "Inscripciones activas" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." +msgstr "" -msgid "Completed enrollments" -msgstr "Inscripciónes completadas" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." +msgstr "" -msgid "Cancelled enrollments" -msgstr "Inscripciones canceladas " +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" +msgstr "" msgid "Working list could not be updated" msgstr "No se pudo actualizar la lista de trabajo" @@ -1710,6 +1853,15 @@ msgstr "" "se produjo un error al cargar las listas de instancias de entidades " "rastreadas" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} seleccionado" +msgstr[1] "{{count}} seleccionado" +msgstr[2] "{{count}} seleccionado" + +msgid "Deselect all" +msgstr "Deseleccionar todo" + msgid "Update view" msgstr "Actualizar vista" @@ -1818,6 +1970,60 @@ msgstr "Error al editar el evento, no se guardaron los cambios realizados" msgid "Error updating the Assignee" msgstr "Error al actualizar el asignado" +msgid "Please provide a valid number" +msgstr "Proporcione un número válido" + +msgid "Please provide a valid integer" +msgstr "Proporcione un número entero válido" + +msgid "Please provide a positive integer" +msgstr "Proporcione un número entero positivo" + +msgid "Please provide zero or a positive integer" +msgstr "Proporcione cero o un número entero positivo" + +msgid "Please provide a negative integer" +msgstr "Proporcione un número entero negativo" + +msgid "Please provide a valid date and time" +msgstr "Proporcione una fecha y hora válidas" + +msgid "Please provide a valid time" +msgstr "Proporcione una hora válida" + +msgid "Please provide an integer between 0 and 100" +msgstr "Proporcione un número entero entre 0 y 100" + +msgid "Please provide a valid url" +msgstr "Proporcione una URL válida" + +msgid "Please provide a valid email address" +msgstr "Por favor ingrese una dirección de correo electrónico válida" + +msgid "Please provide a valid age" +msgstr "Proporcione una edad válida" + +msgid "Please provide a valid phone number" +msgstr "Proporcione un número de teléfono válido" + +msgid "This value already exists" +msgstr "Este valor ya existe" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "\"Desde\" no puede ser mayor que \"Hasta\"" + +msgid "Checking..." +msgstr "Verificando..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Establecer coordenadas" diff --git a/i18n/fr.po b/i18n/fr.po index 3effbc2fc8..26b4dafd41 100644 --- a/i18n/fr.po +++ b/i18n/fr.po @@ -1,23 +1,23 @@ # # Translators: -# Karoline Tufte Lien , 2022 # tx_e2f_fr r25 , 2022 -# Philip Larsen Donnelly, 2024 # Edem Kossi , 2024 # Gabriela Rodriguez , 2024 # Yao Selom SAKA (HISP WCA) , 2024 # Elise Desailly, 2024 -# Viktor Varland , 2024 # Yayra Gomado , 2024 # Bram Piot , 2024 # Jason Pickering , 2024 +# Karoline Tufte Lien , 2024 +# Viktor Varland , 2024 +# Philip Larsen Donnelly, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-14T14:53:34.553Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Jason Pickering , 2024\n" +"Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: French (https://app.transifex.com/hisp-uio/teams/100509/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,6 +54,39 @@ msgstr "" "cette page si vous souhaitez utiliser à nouveau cette version, mais " "attention, cette opération entraînera la fermeture des autres versions." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Modifier un événement" + +msgid "New event" +msgstr "Nouvel événement" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Chercher" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Plus" @@ -99,66 +132,6 @@ msgstr "Valeur en cours de validation" msgid "Async field update failed" msgstr "Echec de la mise à jour du champ asynchrone" -msgid "A value is required" -msgstr "Une valeur est requise" - -msgid "Please provide a valid number" -msgstr "Veuillez saisir un chiffre valide" - -msgid "Please provide a valid integer" -msgstr "Veuillez saisir un nombre entier valide" - -msgid "Please provide a positive integer" -msgstr "Veuillez saisir un nombre entier positif valide" - -msgid "Please provide zero or a positive integer" -msgstr "Veuillez saisir un zéro ou nombre entier positif valide" - -msgid "Please provide a negative integer" -msgstr "Veuillez saisir un nombre entier négatif valide" - -msgid "Please provide a valid date" -msgstr "Veuillez spécifier une date valide" - -msgid "A date in the future is not allowed" -msgstr "Aucune date future n'est autorisée" - -msgid "Please provide a valid date and time" -msgstr "Veuillez saisir une date et heure valide" - -msgid "Please provide a valid time" -msgstr "Veuillez saisir une heure valide" - -msgid "Please provide an integer between 0 and 100" -msgstr "Veuillez fournir un nombre entier compris entre 0 et 100" - -msgid "Please provide a valid url" -msgstr "Veuillez saisir un lien URL valide" - -msgid "Please provide a valid email address" -msgstr "Veuillez saisir une adresse email valide" - -msgid "Please provide a valid age" -msgstr "Veuillez saisir un âge valide" - -msgid "Please provide a valid phone number" -msgstr "Veuillez saisir un numéro de téléphone valide" - -msgid "Please provide a valid organisation unit" -msgstr "Veuillez saisir une unité d'organisation valide" - -msgid "Please provide valid coordinates" -msgstr "Veuillez saisir des coordonnées valides" - -msgid "This value already exists" -msgstr "Cette valeur existe déjà" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "\"De\" ne peut être plus grand que \"À\"." - -msgid "Checking..." -msgstr "Vérification..." - msgid "Area" msgstr "Aire" @@ -171,6 +144,12 @@ msgstr "Enrôlement" msgid "Complete event" msgstr "Evènement complété" +msgid "A value is required" +msgstr "Une valeur est requise" + +msgid "Please provide a valid date" +msgstr "Veuillez spécifier une date valide" + msgid "{{ stageName }} - Basic info" msgstr "" @@ -183,8 +162,8 @@ msgstr "" msgid "Please select {{categoryName}}" msgstr "Veuillez sélectionner {{categoryName}}." -msgid "A future date is not allowed" -msgstr "Une date future n'est pas permise" +msgid "A date in the future is not allowed" +msgstr "Aucune date future n'est autorisée" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "" @@ -316,9 +295,6 @@ msgstr "Oui, annuler les modifications" msgid "No, cancel" msgstr "Non, annuler" -msgid "New event" -msgstr "Nouvel événement" - msgid "You don't have access to create an event in the current selections" msgstr "" "Vous n'avez pas accès pour créer un événement dans les sélections actuelles" @@ -541,9 +517,6 @@ msgstr "" msgid "No match found" msgstr "Pas de résultat trouvé" -msgid "Search" -msgstr "Chercher" - msgid "Clear" msgstr "Effacer" @@ -707,7 +680,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -889,9 +864,6 @@ msgstr "événement" msgid "You don't have access to edit this event" msgstr "Vous n'êtes pas autorisé à modifier cet événement" -msgid "Edit event" -msgstr "Modifier un événement" - msgid "View changelog" msgstr "" @@ -928,15 +900,6 @@ msgstr "L'événement n'a pas pu être chargé" msgid "Organisation unit could not be loaded" msgstr "L'unité d'organisation n'a pas pu être chargée" -msgid "Dashboard" -msgstr "Tableau de bord" - -msgid "Edit Event" -msgstr "Modifier l'événement" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Programme choisi" @@ -964,6 +927,9 @@ msgstr "Chargement" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "Retour à tous les stades et événements" + msgid "Possible duplicates found" msgstr "Doublons éventuellement détectés" @@ -1116,7 +1082,7 @@ msgstr "" msgid "Assigned to" msgstr "Attribue" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1125,7 +1091,7 @@ msgstr "Modifier" msgid "No one is assigned to this event" msgstr "Personne n'est affecté à cet événement" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1171,6 +1137,9 @@ msgstr "Marquer comme annulé" msgid "Mark incomplete" msgstr "Mark comme inachevé" +msgid "You do not have access to delete this enrollment" +msgstr "" + msgid "Delete enrollment" msgstr "Supprimer enrôlement" @@ -1211,6 +1180,9 @@ msgstr "" msgid "Coordinates" msgstr "Coordonnées" +msgid "Please provide valid coordinates" +msgstr "Veuillez saisir des coordonnées valides" + msgid "Delete polygon" msgstr "Supprimer polygone" @@ -1301,6 +1273,9 @@ msgstr "Attention" msgid "stage not found in rules execution" msgstr "stade non trouvé lors de l'exécution des règles" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Effacer l´événement" @@ -1321,9 +1296,6 @@ msgstr "Événement terminé" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "Retour à tous les stades et événements" - msgid "Notes about this event" msgstr "" @@ -1481,6 +1453,12 @@ msgstr "Date programmée" msgid "Report date" msgstr "Date du rapport" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "Veuillez saisir une unité d'organisation valide" + msgid "Please select a valid event" msgstr "Veuillez sélectionner un événement valide" @@ -1538,10 +1516,18 @@ msgstr "{{ scheduledEvents }} programmé" msgid "Stages and Events" msgstr "Étapes et événements" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1575,7 +1561,13 @@ msgid "Change" msgstr "Modifier" msgid "Value" -msgstr "" +msgstr "Valeur" + +msgid "File" +msgstr "Fichier" + +msgid "Image" +msgstr "Image" msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1637,6 +1629,46 @@ msgstr "Télécharger des données..." msgid "an error occurred loading working lists" msgstr "une erreur est survenue lors du chargement des listes de tâches" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Date d'inscription" @@ -1652,13 +1684,128 @@ msgstr "Suivi" msgid "Choose a program stage to filter by {{label}}" msgstr "Choisir un stade de programme pour filtrer par {{label}}" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1672,6 +1819,15 @@ msgstr "" "une erreur s'est produite lors du chargement des listes d'instances " "d'entités suivies" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} sélectionné" +msgstr[1] "{{count}} sélectionnés" +msgstr[2] "{{count}} sélectionnés" + +msgid "Deselect all" +msgstr "Desélectionner tout" + msgid "Update view" msgstr "Mettre à jour la vue" @@ -1782,6 +1938,60 @@ msgstr "" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "Veuillez saisir un chiffre valide" + +msgid "Please provide a valid integer" +msgstr "Veuillez saisir un nombre entier valide" + +msgid "Please provide a positive integer" +msgstr "Veuillez saisir un nombre entier positif valide" + +msgid "Please provide zero or a positive integer" +msgstr "Veuillez saisir un zéro ou nombre entier positif valide" + +msgid "Please provide a negative integer" +msgstr "Veuillez saisir un nombre entier négatif valide" + +msgid "Please provide a valid date and time" +msgstr "Veuillez saisir une date et heure valide" + +msgid "Please provide a valid time" +msgstr "Veuillez saisir une heure valide" + +msgid "Please provide an integer between 0 and 100" +msgstr "Veuillez fournir un nombre entier compris entre 0 et 100" + +msgid "Please provide a valid url" +msgstr "Veuillez saisir un lien URL valide" + +msgid "Please provide a valid email address" +msgstr "Veuillez saisir une adresse email valide" + +msgid "Please provide a valid age" +msgstr "Veuillez saisir un âge valide" + +msgid "Please provide a valid phone number" +msgstr "Veuillez saisir un numéro de téléphone valide" + +msgid "This value already exists" +msgstr "Cette valeur existe déjà" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "\"De\" ne peut être plus grand que \"À\"." + +msgid "Checking..." +msgstr "Vérification..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Définir les coordonnées" diff --git a/i18n/id.po b/i18n/id.po index 1cf72fa6a2..8ba7b61324 100644 --- a/i18n/id.po +++ b/i18n/id.po @@ -4,19 +4,18 @@ # Raja Fathurrahim, 2023 # Farida Sibuea , 2023 # Philip Larsen Donnelly, 2024 -# Untoro Dwi Raharjo , 2024 -# ratih syabrina, 2024 -# Yusuf Setiawan , 2024 # Guardian Sanjaya , 2024 -# Aprisa Chrysantina , 2024 # Viktor Varland , 2024 +# Untoro Dwi Raharjo , 2024 +# Aprisa Chrysantina , 2024 +# Yusuf Setiawan , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-14T14:53:34.553Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Viktor Varland , 2024\n" +"Last-Translator: Yusuf Setiawan , 2024\n" "Language-Team: Indonesian (https://app.transifex.com/hisp-uio/teams/100509/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -52,6 +51,39 @@ msgstr "" "menggunakan versi ini lagi, tetapi perlu diketahui bahwa ini akan menutup " "versi lain." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Sunting even" + +msgid "New event" +msgstr "Event baru" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Pencarian" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Lagi" @@ -97,66 +129,6 @@ msgstr "Nilai ini memvalidasi" msgid "Async field update failed" msgstr "Pembaruan bidang asinkron gagal" -msgid "A value is required" -msgstr "Nilai diperlukan" - -msgid "Please provide a valid number" -msgstr "Harap berikan nomor yang valid" - -msgid "Please provide a valid integer" -msgstr "Harap berikan bilangan bulat yang valid" - -msgid "Please provide a positive integer" -msgstr "Berikan bilangan bulat positif positive" - -msgid "Please provide zero or a positive integer" -msgstr "Harap berikan nol atau bilangan bulat positif" - -msgid "Please provide a negative integer" -msgstr "Harap berikan bilangan bulat negatif" - -msgid "Please provide a valid date" -msgstr "Harap berikan tanggal yang valid" - -msgid "A date in the future is not allowed" -msgstr "Tanggal di masa depan tidak diperbolehkan" - -msgid "Please provide a valid date and time" -msgstr "Harap berikan tanggal dan waktu yang valid" - -msgid "Please provide a valid time" -msgstr "Harap berikan waktu yang valid" - -msgid "Please provide an integer between 0 and 100" -msgstr "" - -msgid "Please provide a valid url" -msgstr "Harap berikan url yang valid" - -msgid "Please provide a valid email address" -msgstr "Harap berikan alamat email yang valid" - -msgid "Please provide a valid age" -msgstr "Harap berikan usia yang valid" - -msgid "Please provide a valid phone number" -msgstr "Harap berikan nomor telepon yang valid" - -msgid "Please provide a valid organisation unit" -msgstr "Harap berikan unit organisasi yang valid" - -msgid "Please provide valid coordinates" -msgstr "Harap berikan koordinat yang valid" - -msgid "This value already exists" -msgstr "Nilai ini sudah ada" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "\"Dari\" tidak boleh lebih besar dari \"Ke\"" - -msgid "Checking..." -msgstr "Memeriksa..." - msgid "Area" msgstr "Daerah" @@ -169,6 +141,12 @@ msgstr "Pendaftaran" msgid "Complete event" msgstr "Even lengkap" +msgid "A value is required" +msgstr "Nilai diperlukan" + +msgid "Please provide a valid date" +msgstr "Harap berikan tanggal yang valid" + msgid "{{ stageName }} - Basic info" msgstr "" @@ -181,8 +159,8 @@ msgstr "" msgid "Please select {{categoryName}}" msgstr "" -msgid "A future date is not allowed" -msgstr "Tanggal yang akan datang tidak diperbolehkan" +msgid "A date in the future is not allowed" +msgstr "Tanggal di masa depan tidak diperbolehkan" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "" @@ -309,9 +287,6 @@ msgstr "Ya, hapus perubahan" msgid "No, cancel" msgstr "tidak, batalkan" -msgid "New event" -msgstr "Event baru" - msgid "You don't have access to create an event in the current selections" msgstr "Anda tidak memiliki akses untuk membuat even di pilihan saat ini" @@ -528,9 +503,6 @@ msgstr "Tipe opsi filter" msgid "No match found" msgstr "tidak ditemukan data yang sesuai" -msgid "Search" -msgstr "Pencarian" - msgid "Clear" msgstr "Hapus" @@ -690,7 +662,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -869,9 +843,6 @@ msgstr "acara/peristiwa" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "Sunting even" - msgid "View changelog" msgstr "" @@ -909,15 +880,6 @@ msgstr "Even tidak dapat dimuat" msgid "Organisation unit could not be loaded" msgstr "Unit organisasi tidak dapat dimuat" -msgid "Dashboard" -msgstr "Dasbor" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Program yang dipilih" @@ -943,6 +905,9 @@ msgstr "Loading" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "Kemungkinan duplikat ditemukan" @@ -1087,7 +1052,7 @@ msgstr "" msgid "Assigned to" msgstr "Ditugaskan pada" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1096,7 +1061,7 @@ msgstr "Sunting" msgid "No one is assigned to this event" msgstr "Tidak ada yang ditugaskan untuk even ini" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1142,6 +1107,9 @@ msgstr "Tandai sebagai dibatalkan" msgid "Mark incomplete" msgstr "Tandai tidak lengkap" +msgid "You do not have access to delete this enrollment" +msgstr "" + msgid "Delete enrollment" msgstr "Hapus pendaftaran" @@ -1182,6 +1150,9 @@ msgstr "" msgid "Coordinates" msgstr "Koordinat" +msgid "Please provide valid coordinates" +msgstr "Harap berikan koordinat yang valid" + msgid "Delete polygon" msgstr "Hapus poligon" @@ -1269,6 +1240,9 @@ msgstr "Peringatan" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Hapus even" @@ -1287,9 +1261,6 @@ msgstr "Even selesai" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1428,6 +1399,12 @@ msgstr "" msgid "Report date" msgstr "Tanggal pelaporan" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "Harap berikan unit organisasi yang valid" + msgid "Please select a valid event" msgstr "" @@ -1482,10 +1459,18 @@ msgstr "" msgid "Stages and Events" msgstr "Tahapan dan Even" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1521,6 +1506,12 @@ msgstr "" msgid "Value" msgstr "Nilai" +msgid "File" +msgstr "Berkas" + +msgid "Image" +msgstr "Gambar" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1581,6 +1572,46 @@ msgstr "Unduh data..." msgid "an error occurred loading working lists" msgstr "terjadi kesalahan saat memuat daftar kerja" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "tanggal registrasi" @@ -1596,13 +1627,112 @@ msgstr "Tindak lanjut" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1614,6 +1744,13 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} terpilih" + +msgid "Deselect all" +msgstr "Batal pilih semua" + msgid "Update view" msgstr "Perbarui tampilan" @@ -1722,6 +1859,60 @@ msgstr "" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "Harap berikan nomor yang valid" + +msgid "Please provide a valid integer" +msgstr "Harap berikan bilangan bulat yang valid" + +msgid "Please provide a positive integer" +msgstr "Berikan bilangan bulat positif positive" + +msgid "Please provide zero or a positive integer" +msgstr "Harap berikan nol atau bilangan bulat positif" + +msgid "Please provide a negative integer" +msgstr "Harap berikan bilangan bulat negatif" + +msgid "Please provide a valid date and time" +msgstr "Harap berikan tanggal dan waktu yang valid" + +msgid "Please provide a valid time" +msgstr "Harap berikan waktu yang valid" + +msgid "Please provide an integer between 0 and 100" +msgstr "" + +msgid "Please provide a valid url" +msgstr "Harap berikan url yang valid" + +msgid "Please provide a valid email address" +msgstr "Harap berikan alamat email yang valid" + +msgid "Please provide a valid age" +msgstr "Harap berikan usia yang valid" + +msgid "Please provide a valid phone number" +msgstr "Harap berikan nomor telepon yang valid" + +msgid "This value already exists" +msgstr "Nilai ini sudah ada" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "\"Dari\" tidak boleh lebih besar dari \"Ke\"" + +msgid "Checking..." +msgstr "Memeriksa..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Tentukan koordinat" diff --git a/i18n/km.po b/i18n/km.po index f203f663af..4b9fd27291 100644 --- a/i18n/km.po +++ b/i18n/km.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Khmer (https://app.transifex.com/hisp-uio/teams/100509/km/)\n" @@ -38,6 +38,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "ព្រឹត្តិការណ៏ថ្មី" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "ស្វែងរក" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "" @@ -290,9 +323,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "ព្រឹត្តិការណ៏ថ្មី" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -505,9 +535,6 @@ msgstr "វាយបញ្ចូលមុខងារដើម្បីច្រ msgid "No match found" msgstr "" -msgid "Search" -msgstr "ស្វែងរក" - msgid "Clear" msgstr "លុបចោល" @@ -665,7 +692,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -840,9 +869,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -878,15 +904,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "ផ្ទាំងចម្រោះ​សង្ខេបព័ត៌មាន" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "" @@ -912,6 +929,9 @@ msgstr "Loading" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1050,7 +1070,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1059,7 +1079,7 @@ msgstr "កែសម្រួល​" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1233,6 +1253,9 @@ msgstr "" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "លុបចោលព្រឹត្តិការណ៏" @@ -1251,9 +1274,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1446,10 +1466,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1485,6 +1513,12 @@ msgstr "" msgid "Value" msgstr "តម្លៃ" +msgid "File" +msgstr "" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1545,6 +1579,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1560,13 +1634,112 @@ msgstr "តាមដាន" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1578,6 +1751,13 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "" diff --git a/i18n/lo.po b/i18n/lo.po index 3137abc4f2..f6e33dc316 100644 --- a/i18n/lo.po +++ b/i18n/lo.po @@ -1,18 +1,18 @@ # # Translators: # Philip Larsen Donnelly, 2022 -# Somkhit Bouavong , 2024 # Thuy Nguyen , 2024 -# Viktor Varland , 2024 # Namwan Chanthavisouk, 2024 # Saysamone Sibounma, 2024 +# Somkhit Bouavong , 2024 +# Viktor Varland , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Saysamone Sibounma, 2024\n" +"Last-Translator: Viktor Varland , 2024\n" "Language-Team: Lao (https://app.transifex.com/hisp-uio/teams/100509/lo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -47,6 +47,39 @@ msgstr "" "ກະ​ລຸ​ນາ​ໂຫຼດ​ຫນ້າ​ນີ້​ຄືນ​ໃຫມ່​ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ຕ້ອງ​ການ​ທີ່​ຈະ​ນໍາ​ໃຊ້​ເວີຊັນນີ້​ອີກ​ເທື່ອ​ຫນຶ່ງ​," " ແຕ່​ລະວັງໄວ້ວ່າມັນຈະ​ປິດ​ເວີຊັນ​ອື່ນ​." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "ແກ້ໄຂເຫດການ" + +msgid "New event" +msgstr "ກໍລະນີໃໝ່" + +msgid "Active enrollments" +msgstr "ການລົງທະບຽນທີ່ຍັງເຄື່ອນໄຫວ" + +msgid "Completed enrollments" +msgstr "ສໍາເລັດການລົງທະບຽນ" + +msgid "Cancelled enrollments" +msgstr "ຍົກເລີກການລົງທະບຽນ" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "ຄົນຫາ" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "ເພີ່ມເຕີມ" @@ -92,66 +125,6 @@ msgstr "ຄ່ານີ້ກຳລັງກວດສອບຢູ່" msgid "Async field update failed" msgstr "ການອັບເດດຊ່ອງການເຊື່ອມຂໍ້ມູນແມ່ນລົ້ມເຫລວ" -msgid "A value is required" -msgstr "ຕ້ອງຕື່ມຄ່າ" - -msgid "Please provide a valid number" -msgstr "ກະລຸນາລະບຸເບີໂທທີ່ຖືກຕ້ອງ" - -msgid "Please provide a valid integer" -msgstr "ກະລຸນາລະບຸຈຳນວນເຕັມໃຫ້ຖືກຕ້ອງ" - -msgid "Please provide a positive integer" -msgstr "ກະລຸນາລະບຸຈຳນວນທີ່ເປັນບວກ" - -msgid "Please provide zero or a positive integer" -msgstr "ກະລຸນາລະບຸຈຳນວນທີ່ເປັນສູນ ຫຼື ເປັນບວກ" - -msgid "Please provide a negative integer" -msgstr "ກະລຸນາລະບຸຈຳນວນທີ່ເປັນລົບ" - -msgid "Please provide a valid date" -msgstr "ກະລຸນາລະບຸວັນທີໃຫ້ຖືກຕ້ອງ" - -msgid "A date in the future is not allowed" -msgstr "ບໍ່ອະນຸຍາດໃຫ້ຕື່ມວັນທີໃນອະນາຄົດ" - -msgid "Please provide a valid date and time" -msgstr "ກະລຸນາລະບຸວັນທີ ແລະ ເວລາໃຫ້ຖືກຕ້ອງ" - -msgid "Please provide a valid time" -msgstr "ກະລຸນາລະບຸເວລາໃຫ້ຖືກຕ້ອງ" - -msgid "Please provide an integer between 0 and 100" -msgstr "ກະລຸນາລະບຸຈຳນວນລະຫວ່າງ 0 ຫາ 100" - -msgid "Please provide a valid url" -msgstr "ກະລຸນາປ້ອນ URL ທີ່ຖືກຕ້ອງ" - -msgid "Please provide a valid email address" -msgstr "ກະລຸນາປ້ອນທີ່ຢູ່ອີເມວທີ່ຖືກຕ້ອງ" - -msgid "Please provide a valid age" -msgstr "ກະລຸນາປ້ອນອາຍຸໃຫ້ຖືກຕ້ອງ" - -msgid "Please provide a valid phone number" -msgstr "ກະລຸນາປ້ອນເບີໂທໃຫ້ຖືກຕ້ອງ" - -msgid "Please provide a valid organisation unit" -msgstr "ກະລຸນາປ້ອນໜ່ວຍງານຈັດຕັ້ງໃຫ້ຖືກຕ້ອງ" - -msgid "Please provide valid coordinates" -msgstr "ກະລຸນາລະບຸເສັ້ນສະແດງໃຫ້ຖືກຕ້ອງ" - -msgid "This value already exists" -msgstr "ຈຳນວນນີ້ແມ່ນມີຢູ່ແລ້ວ" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "\"ຈາກ\" ບໍ່ສາມາດໃຫຍ່ກວ່າ \"ເຖິງ\"" - -msgid "Checking..." -msgstr "ກຳລັງກວດສອບ..." - msgid "Area" msgstr "ພື້ນທີ່" @@ -164,6 +137,12 @@ msgstr "ການລົງທະບຽນ" msgid "Complete event" msgstr "Complete event" +msgid "A value is required" +msgstr "ຕ້ອງຕື່ມຄ່າ" + +msgid "Please provide a valid date" +msgstr "ກະລຸນາລະບຸວັນທີໃຫ້ຖືກຕ້ອງ" + msgid "{{ stageName }} - Basic info" msgstr "{{ stageName }} - ຂໍ້ມູນທົ່ວໄປ" @@ -176,8 +155,8 @@ msgstr "{{ stageName }} - ສະຖານະ" msgid "Please select {{categoryName}}" msgstr "ກະລຸນາເລືອກ {{categoryName}}" -msgid "A future date is not allowed" -msgstr "ບໍ່ອະນຸຍາດໃຫ້ມີວັນທີໃນອະນາຄົດ" +msgid "A date in the future is not allowed" +msgstr "ບໍ່ອະນຸຍາດໃຫ້ຕື່ມວັນທີໃນອະນາຄົດ" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "ບັນທຶກການລົງທະບຽນໃໝ່ໃນ {{programName}} ໃນ {{orgUnitName}} ." @@ -301,9 +280,6 @@ msgstr "ຕົກລົງ, ຍົກເລີກການປ່ຽນແປງ" msgid "No, cancel" msgstr "ບໍ່, ຍົກເລີກ" -msgid "New event" -msgstr "ກໍລະນີໃໝ່" - msgid "You don't have access to create an event in the current selections" msgstr "ທ່ານບໍ່ໄດ້ອະນຸຍາດໃຫ້ສ້າງເຫດການໃນຕົວເລືອກນີ້" @@ -521,9 +497,6 @@ msgstr "ປະເພດຕົວເລືອກການກອງ" msgid "No match found" msgstr "ບໍ່ພົບຂໍ້ມູນທີ່ກົງກັນ" -msgid "Search" -msgstr "ຄົນຫາ" - msgid "Clear" msgstr "ລຶບ" @@ -865,9 +838,6 @@ msgstr "ເຫດການ" msgid "You don't have access to edit this event" msgstr "ທ່ານບໍ່ໄດ້ຮັບອະນຸຍາດໃນການແກ້ໄຂເຫດການນີ້" -msgid "Edit event" -msgstr "ແກ້ໄຂເຫດການ" - msgid "View changelog" msgstr "ເບິ່ງບັນທຶກການປ່ຽນແປງ" @@ -903,15 +873,6 @@ msgstr "ບໍ່ສາມາດໂຫຼດເຫດການໄດ້" msgid "Organisation unit could not be loaded" msgstr "ບໍ່ສາມາດໂຫຼດຫົວໜ່ວຍການຈັດຕັ້ງໄດ້" -msgid "Dashboard" -msgstr "ກະດານຂ່າວ" - -msgid "Edit Event" -msgstr "ແກ້ໄຂເຫດການ" - -msgid "View Event" -msgstr "ເບິ່ງເຫດການ" - msgid "Selected program" msgstr "ເລືອກສາຍງານ" @@ -937,6 +898,9 @@ msgstr "ກໍາລັງໂຫຼດ" msgid "An error occurred while loading the form" msgstr "ພົບບັນຫາໃນລະຫວ່າງການໂຫຼດຟອມ" +msgid "Back to all stages and events" +msgstr "ກັບໄປທຸກຂັ້ນຕອນ ແລະ ເຫດການ" + msgid "Possible duplicates found" msgstr "ພົບການຊໍ້າກັນທີ່ເປັນໄປໄດ້" @@ -1179,6 +1143,9 @@ msgstr "ຕັ້ງຈຸດປະສານງານ" msgid "Coordinates" msgstr "ປະສານງານ" +msgid "Please provide valid coordinates" +msgstr "ກະລຸນາລະບຸເສັ້ນສະແດງໃຫ້ຖືກຕ້ອງ" + msgid "Delete polygon" msgstr "ລົບຮູບຫຼາຍຫຼ່ຽມ" @@ -1268,6 +1235,9 @@ msgstr "ແຈ້ງເຕືອນ" msgid "stage not found in rules execution" msgstr "ບໍ່ພົບຂັ້ນຕອນໃນການປະຕິບັດກົດລະບຽບ" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "ລືບກໍລະນີອອກ" @@ -1286,9 +1256,6 @@ msgstr "ກິດຈະກຳສຳເລັດແລ້ວ" msgid "The event cannot be edited after it has been completed" msgstr "ເຫດການດັ່ງກ່າວບໍ່ສາມາດແກ້ໄຂໄດ້ຫຼັງຈາກສໍາເລັດແລ້ວ" -msgid "Back to all stages and events" -msgstr "ກັບໄປທຸກຂັ້ນຕອນ ແລະ ເຫດການ" - msgid "Notes about this event" msgstr "ຂໍ້ຄວາມກ່ຽວກັບເຫດການນີ້" @@ -1434,6 +1401,12 @@ msgstr "ກຳນົດວັນທີ" msgid "Report date" msgstr "ວັນທີລາຍງານ" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "ກະລຸນາປ້ອນໜ່ວຍງານຈັດຕັ້ງໃຫ້ຖືກຕ້ອງ" + msgid "Please select a valid event" msgstr "ກະລຸນາເລືອກເຫດການທີ່ຖືກຕ້ອງ" @@ -1490,11 +1463,19 @@ msgstr "{{ scheduledEvents }} ກຳນົດເວລາ" msgid "Stages and Events" msgstr "ຂັ້ນຕອນ ແລະ ເຫດການ" +msgid "View linked event" +msgstr "ເບິ່ງເຫດການທີ່ເຊື່ອມໂຍງ" + msgid "An error occurred while loading the widget." msgstr "ເກີດຄວາມຜິດພາດຂຶ້ນໃນຂະນະທີ່ໂຫຼດລາຍການ." -msgid "View linked event" -msgstr "ເບິ່ງເຫດການທີ່ເຊື່ອມໂຍງ" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" +msgstr "" msgid "Scheduled" msgstr "ຕາມເວລາທີ່ກໍານົດ" @@ -1529,6 +1510,12 @@ msgstr "ປ່ຽນ" msgid "Value" msgstr "ຄ່າ" +msgid "File" +msgstr "ເອກະສານ" + +msgid "Image" +msgstr "ຮູບພາບ" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "ຄວາມສໍາພັນໃໝ່ {{trackedEntityTypeName}} " @@ -1591,6 +1578,46 @@ msgstr "ໂຫຼດຂໍ້ມູນ..." msgid "an error occurred loading working lists" msgstr "ເກີດຄວາມຜິດພາດໃນການໂຫຼດລາຍການ" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "ວັນທີລົງທະບຽນ" @@ -1606,14 +1633,113 @@ msgstr "ຕິດຕາມ" msgid "Choose a program stage to filter by {{label}}" msgstr "ເລືອກຂັ້ນຕອນໂປແກຼມເພື່ອກັ່ນຕອງໂດຍ {{label}}" -msgid "Active enrollments" -msgstr "ການລົງທະບຽນທີ່ຍັງເຄື່ອນໄຫວ" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." +msgstr "" -msgid "Completed enrollments" -msgstr "ສໍາເລັດການລົງທະບຽນ" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." +msgstr "" -msgid "Cancelled enrollments" -msgstr "ຍົກເລີກການລົງທະບຽນ" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" +msgstr "" msgid "Working list could not be updated" msgstr "ລາຍຊື່ເຮັດວຽກບໍ່ສາມາດອັບເດດໄດ້" @@ -1624,6 +1750,13 @@ msgstr "ເກີດຄວາມຜິດພາດໃນການໂຫຼດລ msgid "an error occurred loading Tracked entity instance lists" msgstr "ເກີດຄວາມຜິດພາດໃນການໂຫຼດລາຍການຕົວຢ່າງການຕິດຕາມລາຍບຸກຄົນ" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" + +msgid "Deselect all" +msgstr "ຍົກເລີກການເລືອກທັງໝົດ" + msgid "Update view" msgstr "ອັບເດດມຸມມອງ" @@ -1732,6 +1865,60 @@ msgstr "ເກີດຄວາມຜິດພາດໃນການແກ້ໄຂ msgid "Error updating the Assignee" msgstr "ເກີດຄວາມຜິດພາດໃນການອັບເດດຜູ້ຮັບຜິດຊອບ" +msgid "Please provide a valid number" +msgstr "ກະລຸນາລະບຸເບີໂທທີ່ຖືກຕ້ອງ" + +msgid "Please provide a valid integer" +msgstr "ກະລຸນາລະບຸຈຳນວນເຕັມໃຫ້ຖືກຕ້ອງ" + +msgid "Please provide a positive integer" +msgstr "ກະລຸນາລະບຸຈຳນວນທີ່ເປັນບວກ" + +msgid "Please provide zero or a positive integer" +msgstr "ກະລຸນາລະບຸຈຳນວນທີ່ເປັນສູນ ຫຼື ເປັນບວກ" + +msgid "Please provide a negative integer" +msgstr "ກະລຸນາລະບຸຈຳນວນທີ່ເປັນລົບ" + +msgid "Please provide a valid date and time" +msgstr "ກະລຸນາລະບຸວັນທີ ແລະ ເວລາໃຫ້ຖືກຕ້ອງ" + +msgid "Please provide a valid time" +msgstr "ກະລຸນາລະບຸເວລາໃຫ້ຖືກຕ້ອງ" + +msgid "Please provide an integer between 0 and 100" +msgstr "ກະລຸນາລະບຸຈຳນວນລະຫວ່າງ 0 ຫາ 100" + +msgid "Please provide a valid url" +msgstr "ກະລຸນາປ້ອນ URL ທີ່ຖືກຕ້ອງ" + +msgid "Please provide a valid email address" +msgstr "ກະລຸນາປ້ອນທີ່ຢູ່ອີເມວທີ່ຖືກຕ້ອງ" + +msgid "Please provide a valid age" +msgstr "ກະລຸນາປ້ອນອາຍຸໃຫ້ຖືກຕ້ອງ" + +msgid "Please provide a valid phone number" +msgstr "ກະລຸນາປ້ອນເບີໂທໃຫ້ຖືກຕ້ອງ" + +msgid "This value already exists" +msgstr "ຈຳນວນນີ້ແມ່ນມີຢູ່ແລ້ວ" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "\"ຈາກ\" ບໍ່ສາມາດໃຫຍ່ກວ່າ \"ເຖິງ\"" + +msgid "Checking..." +msgstr "ກຳລັງກວດສອບ..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "ຕັ້ງຄ່າເສັ້ນສະແດງ" diff --git a/i18n/my.po b/i18n/my.po index e86c5d5eca..3e9b625838 100644 --- a/i18n/my.po +++ b/i18n/my.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Burmese (https://app.transifex.com/hisp-uio/teams/100509/my/)\n" @@ -39,6 +39,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "" @@ -291,9 +324,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -506,9 +536,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "" - msgid "Clear" msgstr "ရှင်းလင်းသည်" @@ -666,7 +693,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -841,9 +870,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -879,15 +905,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "အချက်အလက်များလေ့လာဆန်းစစ်ခြင်း" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "" @@ -913,6 +930,9 @@ msgstr "Loading, please wait" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1051,7 +1071,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1060,7 +1080,7 @@ msgstr "တည်းဖြတ်သည်" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1234,6 +1254,9 @@ msgstr "သတိ" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1252,9 +1275,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1447,10 +1467,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1486,6 +1514,12 @@ msgstr "" msgid "Value" msgstr "တန်ဖိုး" +msgid "File" +msgstr "" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1546,6 +1580,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "စာရင်းသွင်းသော နေ့စွဲ" @@ -1561,13 +1635,112 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1579,6 +1752,13 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "" diff --git a/i18n/nb.po b/i18n/nb.po index 97ce9b28c4..08dc43cc41 100644 --- a/i18n/nb.po +++ b/i18n/nb.po @@ -1,15 +1,15 @@ # # Translators: -# Karoline Tufte Lien , 2024 # Merethe Wollan Blisten, 2024 # Caroline Hesthagen Holen , 2024 +# Karoline Tufte Lien , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Caroline Hesthagen Holen , 2024\n" +"Last-Translator: Karoline Tufte Lien , 2024\n" "Language-Team: Norwegian Bokmål (https://app.transifex.com/hisp-uio/teams/100509/nb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -44,6 +44,39 @@ msgstr "" "denne siden hvis du vil bruke denne versjonen igjen, men vær oppmerksom på " "at dette vil lukke andre versjoner." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Rediger hendelse" + +msgid "New event" +msgstr "Ny hendelse" + +msgid "Active enrollments" +msgstr "Aktive registreringer" + +msgid "Completed enrollments" +msgstr "Fullførte registreringer" + +msgid "Cancelled enrollments" +msgstr "Avbrutte registreringer" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Søk" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Mer" @@ -89,66 +122,6 @@ msgstr "Denne verdien validerer" msgid "Async field update failed" msgstr "Asynkront feltoppdatering mislyktes" -msgid "A value is required" -msgstr "En verdi kreves" - -msgid "Please provide a valid number" -msgstr "Oppgi et gyldig nummer" - -msgid "Please provide a valid integer" -msgstr "Oppgi et gyldig heltall" - -msgid "Please provide a positive integer" -msgstr "Oppgi et positivt heltall" - -msgid "Please provide zero or a positive integer" -msgstr "Oppgi null eller et positivt heltall" - -msgid "Please provide a negative integer" -msgstr "Oppgi et negativt heltall" - -msgid "Please provide a valid date" -msgstr "Oppgi en gyldig dato" - -msgid "A date in the future is not allowed" -msgstr "En dato i fremtiden er ikke tillatt" - -msgid "Please provide a valid date and time" -msgstr "Oppgi en gyldig dato og tid" - -msgid "Please provide a valid time" -msgstr "Oppgi en gyldig tid" - -msgid "Please provide an integer between 0 and 100" -msgstr "Oppgi et heltall mellom 0 og 100" - -msgid "Please provide a valid url" -msgstr "Oppgi en gyldig url" - -msgid "Please provide a valid email address" -msgstr "Vennligst fyll ut en gyldig e-postadresse" - -msgid "Please provide a valid age" -msgstr "Oppgi en gyldig alder" - -msgid "Please provide a valid phone number" -msgstr "Oppgi et gyldig telefonnummer" - -msgid "Please provide a valid organisation unit" -msgstr "Oppgi en gyldig organisasjonsenhet" - -msgid "Please provide valid coordinates" -msgstr "Oppgi gyldige koordinater" - -msgid "This value already exists" -msgstr "Denne verdien finnes allerede" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "\"Fra\" kan ikke være større enn \"Til\"" - -msgid "Checking..." -msgstr "Sjekker..." - msgid "Area" msgstr "Areal" @@ -161,6 +134,12 @@ msgstr "Registrering" msgid "Complete event" msgstr "Fullfør hendelse" +msgid "A value is required" +msgstr "En verdi kreves" + +msgid "Please provide a valid date" +msgstr "Oppgi en gyldig dato" + msgid "{{ stageName }} - Basic info" msgstr "{{ stageName }} - Grunnleggende informasjon" @@ -173,8 +152,8 @@ msgstr "{{ stageName }} - Status" msgid "Please select {{categoryName}}" msgstr "Velg {{categoryName}}" -msgid "A future date is not allowed" -msgstr "En fremtidig dato er ikke tillatt" +msgid "A date in the future is not allowed" +msgstr "En dato i fremtiden er ikke tillatt" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "Lagrer en ny registrering i {{programName}} i {{orgUnitName}}." @@ -301,9 +280,6 @@ msgstr "Ja, forkast endringer" msgid "No, cancel" msgstr "Nei, avbryt" -msgid "New event" -msgstr "Ny hendelse" - msgid "You don't have access to create an event in the current selections" msgstr "Du har ikke tilgang til å lage en hendelse i gjeldende valg" @@ -524,9 +500,6 @@ msgstr "Skriv for å filtrere alternativer" msgid "No match found" msgstr "Ingen treff funnet" -msgid "Search" -msgstr "Søk" - msgid "Clear" msgstr "Fjern" @@ -872,9 +845,6 @@ msgstr "hendelse" msgid "You don't have access to edit this event" msgstr "Du har ikke tilgang til å redigere denne hendelsen" -msgid "Edit event" -msgstr "Rediger hendelse" - msgid "View changelog" msgstr "Vis endringslogg" @@ -912,15 +882,6 @@ msgstr "Hendelse kunne ikke lastes inn" msgid "Organisation unit could not be loaded" msgstr "Organisasjonsenhet kunne ikke lastes inn" -msgid "Dashboard" -msgstr "Dashbord" - -msgid "Edit Event" -msgstr "Endre hendelse" - -msgid "View Event" -msgstr "Se hendelse" - msgid "Selected program" msgstr "Valgt program" @@ -947,6 +908,9 @@ msgstr "Laster" msgid "An error occurred while loading the form" msgstr "Det oppsto en feil ved åpning av skjemaet" +msgid "Back to all stages and events" +msgstr "Tilbake til alle faser og hendelser" + msgid "Possible duplicates found" msgstr "Mulige duplikater funnet" @@ -1196,6 +1160,9 @@ msgstr "Lagre koordinater" msgid "Coordinates" msgstr "Koordinater" +msgid "Please provide valid coordinates" +msgstr "Oppgi gyldige koordinater" + msgid "Delete polygon" msgstr "Slett polygon" @@ -1291,6 +1258,9 @@ msgstr "Advarsel" msgid "stage not found in rules execution" msgstr "fase ikke funnet i regelutførelse" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Slett hendelse" @@ -1309,9 +1279,6 @@ msgstr "Hendelse fullført" msgid "The event cannot be edited after it has been completed" msgstr "Hendelsen kan ikke redigeres etter at den er fullført" -msgid "Back to all stages and events" -msgstr "Tilbake til alle faser og hendelser" - msgid "Notes about this event" msgstr "Notater om denne hendelsen" @@ -1464,6 +1431,12 @@ msgstr "Planlagt dato" msgid "Report date" msgstr "Rapporteringsdato" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "Oppgi en gyldig organisasjonsenhet" + msgid "Please select a valid event" msgstr "Velg en gyldig hendelse" @@ -1522,11 +1495,19 @@ msgstr "{{ scheduledEvents }} planlagt" msgid "Stages and Events" msgstr "Faser og hendelser" +msgid "View linked event" +msgstr "Vis knyttede hendelser" + msgid "An error occurred while loading the widget." msgstr "En feil oppstå ved lasting av widget. " -msgid "View linked event" -msgstr "Vis knyttede hendelser" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" +msgstr "" msgid "Scheduled" msgstr "Planlagt" @@ -1561,6 +1542,12 @@ msgstr "Endre" msgid "Value" msgstr "Verdi" +msgid "File" +msgstr "Fil" + +msgid "Image" +msgstr "Bilde" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "Ny {{trackedEntityTypeName}} relasjon" @@ -1623,6 +1610,46 @@ msgstr "Last ned data..." msgid "an error occurred loading working lists" msgstr "en feil oppstod ved lasting av arbeidslister" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Innregistreringsdato" @@ -1638,14 +1665,121 @@ msgstr "Oppfølging" msgid "Choose a program stage to filter by {{label}}" msgstr "Velg en programfase å filtrere etter {{label}}" -msgid "Active enrollments" -msgstr "Aktive registreringer" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." +msgstr "" -msgid "Completed enrollments" -msgstr "Fullførte registreringer" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." +msgstr "" -msgid "Cancelled enrollments" -msgstr "Avbrutte registreringer" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" +msgstr "" msgid "Working list could not be updated" msgstr "Arbeidslisten kunne ikke oppdateres" @@ -1656,6 +1790,14 @@ msgstr "det oppstod en feil ved lasting av arbeidslistene" msgid "an error occurred loading Tracked entity instance lists" msgstr "det oppstod en feil ved lasting av lister over sporede enheter" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} valgt" +msgstr[1] "{{count}} valgt" + +msgid "Deselect all" +msgstr "Fjern valg" + msgid "Update view" msgstr "Oppdater visning" @@ -1764,6 +1906,60 @@ msgstr "Feil under redigering av hendelsen, endringer ble ikke lagret" msgid "Error updating the Assignee" msgstr "Feil under oppdatering av tildelt bruker" +msgid "Please provide a valid number" +msgstr "Oppgi et gyldig nummer" + +msgid "Please provide a valid integer" +msgstr "Oppgi et gyldig heltall" + +msgid "Please provide a positive integer" +msgstr "Oppgi et positivt heltall" + +msgid "Please provide zero or a positive integer" +msgstr "Oppgi null eller et positivt heltall" + +msgid "Please provide a negative integer" +msgstr "Oppgi et negativt heltall" + +msgid "Please provide a valid date and time" +msgstr "Oppgi en gyldig dato og tid" + +msgid "Please provide a valid time" +msgstr "Oppgi en gyldig tid" + +msgid "Please provide an integer between 0 and 100" +msgstr "Oppgi et heltall mellom 0 og 100" + +msgid "Please provide a valid url" +msgstr "Oppgi en gyldig url" + +msgid "Please provide a valid email address" +msgstr "Vennligst fyll ut en gyldig e-postadresse" + +msgid "Please provide a valid age" +msgstr "Oppgi en gyldig alder" + +msgid "Please provide a valid phone number" +msgstr "Oppgi et gyldig telefonnummer" + +msgid "This value already exists" +msgstr "Denne verdien finnes allerede" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "\"Fra\" kan ikke være større enn \"Til\"" + +msgid "Checking..." +msgstr "Sjekker..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Sett koordinater" diff --git a/i18n/ne.po b/i18n/ne.po index e58e5cc215..ff173a647b 100644 --- a/i18n/ne.po +++ b/i18n/ne.po @@ -1,14 +1,14 @@ # # Translators: -# Saroj Dhakal , 2024 # Prabesh Guragain, 2024 +# Saroj Dhakal , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-04-12T20:48:54.429Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Prabesh Guragain, 2024\n" +"Last-Translator: Saroj Dhakal , 2024\n" "Language-Team: Nepali (https://app.transifex.com/hisp-uio/teams/100509/ne/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,106 +37,82 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" -msgid "View {{programName}} dashboard" -msgstr "" - -msgid "View dashboard" -msgstr "" - -msgid "View active enrollment" -msgstr "" - -msgid "Re-enroll" -msgstr "" - -msgid "in" -msgstr "" - -msgid "Enrolled" -msgstr "" - -msgid "Previously enrolled" -msgstr "" - -msgid "Organisation unit" -msgstr "" - -msgid "Date of enrollment" +msgid "Enrollment dashboard" msgstr "" -msgid "Last updated" +msgid "View event" msgstr "" -msgid "error encountered during field validation" +msgid "Edit event" msgstr "" -msgid "error" +msgid "New event" msgstr "" -msgid "This value is validating" +msgid "Active enrollments" msgstr "" -msgid "Async field update failed" +msgid "Completed enrollments" msgstr "" -msgid "A value is required" +msgid "Cancelled enrollments" msgstr "" -msgid "Please provide a valid number" +msgid "{{trackedEntityName}} list" msgstr "" -msgid "Please provide a valid integer" -msgstr "" +msgid "Search" +msgstr "खोज" -msgid "Please provide a positive integer" +msgid "Working List" msgstr "" -msgid "Please provide zero or a positive integer" +msgid "Event list" msgstr "" -msgid "Please provide a negative integer" +msgid "More" msgstr "" -msgid "Please provide a valid date" +msgid "View {{programName}} dashboard" msgstr "" -msgid "A date in the future is not allowed" +msgid "View dashboard" msgstr "" -msgid "Please provide a valid date and time" +msgid "View active enrollment" msgstr "" -msgid "Please provide a valid time" +msgid "Re-enroll" msgstr "" -msgid "Please provide an integer between 0 and 100" +msgid "in" msgstr "" -msgid "Please provide a valid url" +msgid "Enrolled" msgstr "" -msgid "Please provide a valid email address" +msgid "Previously enrolled" msgstr "" -msgid "Please provide a valid age" +msgid "Organisation unit" msgstr "" -msgid "Please provide a valid phone number" +msgid "Date of enrollment" msgstr "" -msgid "Please provide a valid organisation unit" +msgid "Last updated" msgstr "" -msgid "Please provide valid coordinates" +msgid "error encountered during field validation" msgstr "" -msgid "This value already exists" +msgid "error" msgstr "" -msgid "\"From\" cannot be greater than \"To\"" +msgid "This value is validating" msgstr "" -msgid "Checking..." +msgid "Async field update failed" msgstr "" msgid "Area" @@ -151,6 +127,12 @@ msgstr "" msgid "Complete event" msgstr "" +msgid "A value is required" +msgstr "" + +msgid "Please provide a valid date" +msgstr "" + msgid "{{ stageName }} - Basic info" msgstr "" @@ -163,7 +145,7 @@ msgstr "" msgid "Please select {{categoryName}}" msgstr "" -msgid "A future date is not allowed" +msgid "A date in the future is not allowed" msgstr "" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." @@ -190,15 +172,15 @@ msgstr "" msgid "Search for user" msgstr "" +msgid "Notes" +msgstr "" + msgid "Basic info" msgstr "" msgid "Status" msgstr "स्थिती" -msgid "Comments" -msgstr "" - msgid "Relationships" msgstr "" @@ -227,7 +209,7 @@ msgstr "" msgid "Completed" msgstr "" -msgid "Please add or cancel comment before saving the event" +msgid "Please add or cancel note before saving the event" msgstr "" msgid "Save and add another" @@ -286,9 +268,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -359,16 +338,10 @@ msgstr "" msgid "validation failed" msgstr "" -msgid "Errors" -msgstr "" - -msgid "Feedback" -msgstr "" - -msgid "Indicators" +msgid "No feedback for this event yet" msgstr "" -msgid "Warnings" +msgid "No indicator output for this event yet" msgstr "" msgid "Generate new event" @@ -481,18 +454,6 @@ msgstr "" msgid "Yes" msgstr "" -msgid "mm/dd/yyyy" -msgstr "" - -msgid "Years" -msgstr "" - -msgid "Months" -msgstr "" - -msgid "Days" -msgstr "" - msgid "Uploading file" msgstr "" @@ -520,9 +481,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "खोज" - msgid "Clear" msgstr "" @@ -559,6 +517,9 @@ msgstr "" msgid "Column" msgstr "" +msgid "Visible" +msgstr "" + msgid "Update" msgstr "" @@ -601,22 +562,13 @@ msgstr "" msgid "Selected program is invalid for selected organisation unit" msgstr "" -msgid "Online" -msgstr "" - -msgid "Offline" -msgstr "" - -msgid "Syncing" -msgstr "" - -msgid "Add comment" +msgid "Add note" msgstr "" -msgid "You don't have access to write comments" +msgid "You don't have access to write notes" msgstr "" -msgid "Write comment" +msgid "Write note" msgstr "" msgid "was blanked out and hidden by your last action" @@ -628,42 +580,6 @@ msgstr "" msgid "Close the notice" msgstr "" -msgid "Use new Enrollment dashboard for {{programName}}" -msgstr "" - -msgid "Opt in for {{programName}}" -msgstr "" - -msgid "" -"By clicking opt-in below, you will start using the new enrollment dashboard " -"in the Capture app for this Tracker program. At the moment, there is certain" -" functionality from Tracker Capture that has not yet been added, including " -"relationship and referral functionality. The work on including this Tracker " -"functionality in Capture is ongoing and will be added in upcoming app " -"releases." -msgstr "" - -msgid "" -"The core team appreciates any feedback on this new functionality which is " -"currently being beta tested, please report any issues and feedback in the " -"DHIS2 JIRA project." -msgstr "" - -msgid "" -"Click the button below to opt-in to the new enrollment dashboard " -"functionality in the Capture app (beta) for this Tracker program for all " -"users." -msgstr "" - -msgid "Yes, opt in" -msgstr "" - -msgid "Stop using new Enrollment dashboard for {{programName}}" -msgstr "" - -msgid "Opt out for {{programName}}" -msgstr "" - msgid "Enrollment with id \"{{enrollmentId}}\" does not exist" msgstr "" @@ -722,7 +638,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -751,9 +669,6 @@ msgstr "" msgid "Page is missing required values from URL" msgstr "" -msgid "Program is not valid" -msgstr "" - msgid "Org unit is not valid with current program" msgstr "" @@ -766,12 +681,6 @@ msgstr "" msgid "Choose an organisation unit to start reporting" msgstr "" -msgid "No feedback for this event yet" -msgstr "" - -msgid "No indicator output for this event yet" -msgstr "" - msgid "Program stage is invalid" msgstr "" @@ -802,6 +711,11 @@ msgstr "" msgid "Registered events" msgstr "" +msgid "" +"The category option is not valid for the selected organisation unit. Please " +"select a valid combination." +msgstr "" + msgid "Please select {{category}}." msgstr "" @@ -814,7 +728,9 @@ msgstr "" msgid "Please select an organisation unit." msgstr "" -msgid "New" +msgid "" +"You don't have access to create a {{trackedEntityName}} in the current " +"selections" msgstr "" msgid "Choose the {{missingCategories}} to start reporting" @@ -823,7 +739,7 @@ msgstr "" msgid "Save as new" msgstr "" -msgid "View enrollment" +msgid "New" msgstr "" msgid "Create for" @@ -899,9 +815,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -913,25 +826,28 @@ msgid "" "relationship" msgstr "" -msgid "Show all events" +msgid "Errors" msgstr "" -msgid "Event could not be loaded. Are you sure it exists?" +msgid "Feedback" msgstr "" -msgid "Event could not be loaded" +msgid "Indicators" msgstr "" -msgid "Organisation unit could not be loaded" +msgid "Warnings" +msgstr "" + +msgid "Show all events" msgstr "" -msgid "Dashboard" +msgid "Event could not be loaded. Are you sure it exists?" msgstr "" -msgid "Edit Event" +msgid "Event could not be loaded" msgstr "" -msgid "View Event" +msgid "Organisation unit could not be loaded" msgstr "" msgid "Selected program" @@ -954,6 +870,15 @@ msgstr "" msgid "The enrollment event data could not be found" msgstr "" +msgid "Loading" +msgstr "" + +msgid "An error occurred while loading the form" +msgstr "" + +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1092,7 +1017,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1101,7 +1026,7 @@ msgstr "" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1126,9 +1051,6 @@ msgid "" "program. All activity will be logged." msgstr "" -msgid "Save comment" -msgstr "" - msgid "Enrollment actions" msgstr "" @@ -1150,6 +1072,9 @@ msgstr "" msgid "Mark incomplete" msgstr "" +msgid "You do not have access to delete this enrollment" +msgstr "" + msgid "Delete enrollment" msgstr "" @@ -1188,6 +1113,9 @@ msgstr "" msgid "Coordinates" msgstr "" +msgid "Please provide valid coordinates" +msgstr "" + msgid "Delete polygon" msgstr "" @@ -1230,13 +1158,10 @@ msgstr "" msgid "Follow-up" msgstr "" -msgid "Started at {{orgUnitName}}" -msgstr "" - -msgid "Owned by {{ownerOrgUnit}}" +msgid "Started at{{escape}}" msgstr "" -msgid "Last updated {{date}}" +msgid "Owned by{{escape}}" msgstr "" msgid "Cancelled" @@ -1248,13 +1173,7 @@ msgstr "" msgid "Add area" msgstr "" -msgid "Comments about this enrollment" -msgstr "" - -msgid "Write a comment about this enrollment" -msgstr "" - -msgid "This enrollment doesn't have any comments" +msgid "Please add or cancel the note before saving the event" msgstr "" msgid "organisation unit could not be retrieved. Please try again later." @@ -1266,24 +1185,27 @@ msgstr "" msgid "program or stage is invalid" msgstr "" -msgid "Error" +msgid "Notes about this enrollment" msgstr "" -msgid "Warning" +msgid "Write a note about this enrollment" msgstr "" -msgid "Comments about this event" +msgid "This enrollment doesn't have any notes" msgstr "" -msgid "Write a comment about this event" +msgid "Error" msgstr "" -msgid "This event doesn't have any comments" +msgid "Warning" msgstr "" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1299,7 +1221,16 @@ msgstr "" msgid "Event completed" msgstr "" -msgid "Back to all stages and events" +msgid "The event cannot be edited after it has been completed" +msgstr "" + +msgid "Notes about this event" +msgstr "" + +msgid "Write a note about this event" +msgstr "" + +msgid "This event doesn't have any notes" msgstr "" msgid "Schedule date info" @@ -1340,10 +1271,13 @@ msgstr "" msgid "Schedule date / Due date" msgstr "" -msgid "Event comments" +msgid "Event notes" +msgstr "" + +msgid "Write a note about this scheduled event" msgstr "" -msgid "Write a comment about this scheduled event" +msgid "Save note" msgstr "" msgid "" @@ -1409,12 +1343,13 @@ msgstr "" msgid "Choose a {{linkableStageLabel}}" msgstr "" -msgid "Ambiguous relationships, contact system administrator" +msgid "{{ linkableStageLabel }} is not repeatable" msgstr "" -msgid "" -"Enter {{linkableStageLabel}} details in the next step after completing this " -"{{currentStageLabel}}." +msgid "{{ linkableStageLabel }} has no linkable events" +msgstr "" + +msgid "Ambiguous relationships, contact system administrator" msgstr "" msgid "Enter details now" @@ -1429,25 +1364,48 @@ msgstr "" msgid "Report date" msgstr "" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "" + msgid "Please select a valid event" msgstr "" +msgid "You do not have access to create events in this stage" +msgstr "" + +msgid "This stage can only have one event" +msgstr "" + msgid "New {{ eventName }} event" msgstr "" -msgid "To open this event, please wait until saving is complete" +msgid "An error occurred while deleting the event" msgstr "" -msgid "Show {{ rest }} more" +msgid "" +"Deleting an event is permanent and cannot be undone. Are you sure you want " +"to delete this event?" msgstr "" -msgid "Reset list" +msgid "An error occurred when updating event status" msgstr "" -msgid "Go to full {{ eventName }}" +msgid "Unskip" msgstr "" -msgid "This stage can only have one event" +msgid "Skip" +msgstr "" + +msgid "To open this event, please wait until saving is complete" +msgstr "" + +msgid "Show {{ rest }} more" +msgstr "" + +msgid "Go to full {{ eventName }}" msgstr "" msgid "Events could not be retrieved. Please try again later." @@ -1467,12 +1425,32 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + +msgid "An error occurred while loading the widget." +msgstr "" + +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" +msgstr "" + +msgid "Scheduled" +msgstr "" + msgid "Changelog" msgstr "" msgid "No changes to display" msgstr "" +msgid "Updated" +msgstr "" + msgid "Created" msgstr "" @@ -1491,6 +1469,15 @@ msgstr "" msgid "Change" msgstr "" +msgid "Value" +msgstr "" + +msgid "File" +msgstr "" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1551,6 +1538,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1566,13 +1593,120 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1584,6 +1718,14 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" + +msgid "Deselect all" +msgstr "सबै चयन उल्टाउनुहोस्" + msgid "Update view" msgstr "" @@ -1632,9 +1774,6 @@ msgstr "" msgid "Scheduled{{ escape }} due {{ time }}" msgstr "" -msgid "Scheduled" -msgstr "" - msgid "Overdue{{ escape }} due {{ time }}" msgstr "" @@ -1695,6 +1834,60 @@ msgstr "" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "" + +msgid "Please provide a valid integer" +msgstr "" + +msgid "Please provide a positive integer" +msgstr "" + +msgid "Please provide zero or a positive integer" +msgstr "" + +msgid "Please provide a negative integer" +msgstr "" + +msgid "Please provide a valid date and time" +msgstr "" + +msgid "Please provide a valid time" +msgstr "" + +msgid "Please provide an integer between 0 and 100" +msgstr "" + +msgid "Please provide a valid url" +msgstr "" + +msgid "Please provide a valid email address" +msgstr "" + +msgid "Please provide a valid age" +msgstr "" + +msgid "Please provide a valid phone number" +msgstr "" + +msgid "This value already exists" +msgstr "" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "" + +msgid "Checking..." +msgstr "" + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "" diff --git a/i18n/nl.po b/i18n/nl.po index 6a73105036..de20fc95b7 100644 --- a/i18n/nl.po +++ b/i18n/nl.po @@ -3,15 +3,16 @@ # Cherise Beek , 2021 # Yury Rogachev , 2021 # Philip Larsen Donnelly, 2024 -# Charel van den Elsen, 2024 # Rica, 2024 +# Enzo Nicolas Rossi , 2024 +# Charel van den Elsen, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Rica, 2024\n" +"Last-Translator: Charel van den Elsen, 2024\n" "Language-Team: Dutch (https://app.transifex.com/hisp-uio/teams/100509/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -47,6 +48,39 @@ msgstr "" "gebruiken, maar houd er rekening mee dat hierdoor andere versies worden " "gesloten." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Evenement bewerken" + +msgid "New event" +msgstr "Nieuw evenement" + +msgid "Active enrollments" +msgstr "Actieve inschrijvingen" + +msgid "Completed enrollments" +msgstr "Voltooide inschrijvingen" + +msgid "Cancelled enrollments" +msgstr "Geannuleerde inschrijvingen" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Zoek" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Meer" @@ -92,66 +126,6 @@ msgstr "Deze waarde is validerend" msgid "Async field update failed" msgstr "Asynchrone veldupdate is mislukt" -msgid "A value is required" -msgstr "Een waarde is verplicht" - -msgid "Please provide a valid number" -msgstr "Geef een geldig nummer op" - -msgid "Please provide a valid integer" -msgstr "Geef een geldig geheel getal op" - -msgid "Please provide a positive integer" -msgstr "Geef een positief geheel getal op" - -msgid "Please provide zero or a positive integer" -msgstr "Geef nul of een positief geheel getal op" - -msgid "Please provide a negative integer" -msgstr "Geef een negatief geheel getal op" - -msgid "Please provide a valid date" -msgstr "Geef een geldige datum op" - -msgid "A date in the future is not allowed" -msgstr "Een datum in de toekomst is niet toegestaan" - -msgid "Please provide a valid date and time" -msgstr "Geef een geldige datum en tijd op" - -msgid "Please provide a valid time" -msgstr "Geef een geldige tijd op" - -msgid "Please provide an integer between 0 and 100" -msgstr "Geef een geheel getal tussen 0 en 100 op" - -msgid "Please provide a valid url" -msgstr "Geef een geldige URL op" - -msgid "Please provide a valid email address" -msgstr "geef alstublieft een geldig email adres" - -msgid "Please provide a valid age" -msgstr "Geef een geldige leeftijd op" - -msgid "Please provide a valid phone number" -msgstr "Gelieve een geldig telefoonnummer op te geven" - -msgid "Please provide a valid organisation unit" -msgstr "Geef een geldige organisatie-eenheid op" - -msgid "Please provide valid coordinates" -msgstr "Geef geldige coördinaten op" - -msgid "This value already exists" -msgstr "Deze waarde bestaat al" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "\"Van\" kan niet groter zijn dan \"Naar\"" - -msgid "Checking..." -msgstr "Controleren..." - msgid "Area" msgstr "Oppervlakte" @@ -164,6 +138,12 @@ msgstr "Inschrijving" msgid "Complete event" msgstr "Compleet evenement" +msgid "A value is required" +msgstr "Een waarde is verplicht" + +msgid "Please provide a valid date" +msgstr "Geef een geldige datum op" + msgid "{{ stageName }} - Basic info" msgstr "" @@ -176,7 +156,7 @@ msgstr "" msgid "Please select {{categoryName}}" msgstr "Selecteer {{categoryName}}" -msgid "A future date is not allowed" +msgid "A date in the future is not allowed" msgstr "Een datum in de toekomst is niet toegestaan" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." @@ -306,9 +286,6 @@ msgstr "Ja, wijzigingen negeren" msgid "No, cancel" msgstr "Nee, annuleer" -msgid "New event" -msgstr "Nieuw evenement" - msgid "You don't have access to create an event in the current selections" msgstr "" "Je hebt geen toegang om een evenement te maken in de huidige selecties" @@ -530,9 +507,6 @@ msgstr "Typ om opties te filteren" msgid "No match found" msgstr "" -msgid "Search" -msgstr "Zoek" - msgid "Clear" msgstr "Duidelijk" @@ -881,9 +855,6 @@ msgstr "evenement" msgid "You don't have access to edit this event" msgstr "Je hebt geen toegangsrechten om dit evenement te bewerken" -msgid "Edit event" -msgstr "Evenement bewerken" - msgid "View changelog" msgstr "" @@ -921,15 +892,6 @@ msgstr "Evenement kan niet worden geladen" msgid "Organisation unit could not be loaded" msgstr "Organisatie-eenheid kan niet worden geladen" -msgid "Dashboard" -msgstr "Dashboard" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Geselecteerd programma" @@ -957,6 +919,9 @@ msgstr "" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "Terug naar alle stadium en evenementen" + msgid "Possible duplicates found" msgstr "Mogelijke duplicaten gevonden" @@ -1209,6 +1174,9 @@ msgstr "" msgid "Coordinates" msgstr "" +msgid "Please provide valid coordinates" +msgstr "Geef geldige coördinaten op" + msgid "Delete polygon" msgstr "Polygoon verwijderen" @@ -1298,6 +1266,9 @@ msgstr "Waarschuwing" msgid "stage not found in rules execution" msgstr "stadium niet gevonden in uitvoering van regels" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "evenement verwijderen" @@ -1317,9 +1288,6 @@ msgstr "Evenement voltooid" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "Terug naar alle stadium en evenementen" - msgid "Notes about this event" msgstr "" @@ -1473,6 +1441,12 @@ msgstr "Geplande datum" msgid "Report date" msgstr "Rapporteer datum" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "Geef een geldige organisatie-eenheid op" + msgid "Please select a valid event" msgstr "" @@ -1529,10 +1503,18 @@ msgstr "{{ scheduledEvents }} gepland" msgid "Stages and Events" msgstr "stadiums en evenementen" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1568,6 +1550,12 @@ msgstr "" msgid "Value" msgstr "Waarde" +msgid "File" +msgstr "" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1628,6 +1616,46 @@ msgstr "Gegevens downloaden..." msgid "an error occurred loading working lists" msgstr "er is een fout opgetreden bij het laden van werklijsten" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "registratie datum" @@ -1643,14 +1671,121 @@ msgstr "Volg op" msgid "Choose a program stage to filter by {{label}}" msgstr "Kies een programmafase om op te filteren {{label}}" -msgid "Active enrollments" -msgstr "Actieve inschrijvingen" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." +msgstr "" -msgid "Completed enrollments" -msgstr "Voltooide inschrijvingen" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." +msgstr "" -msgid "Cancelled enrollments" -msgstr "Geannuleerde inschrijvingen" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" +msgstr "" msgid "Working list could not be updated" msgstr "Werklijst kon niet worden bijgewerkt" @@ -1663,6 +1798,14 @@ msgstr "" "er is een fout opgetreden bij het laden van lijsten met instanties van " "bijgehouden entiteiten" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} geselecteerd" +msgstr[1] "{{count}} geselecteerd" + +msgid "Deselect all" +msgstr "Deselecteer alles" + msgid "Update view" msgstr "Weergave bijwerken" @@ -1773,6 +1916,60 @@ msgstr "" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "Geef een geldig nummer op" + +msgid "Please provide a valid integer" +msgstr "Geef een geldig geheel getal op" + +msgid "Please provide a positive integer" +msgstr "Geef een positief geheel getal op" + +msgid "Please provide zero or a positive integer" +msgstr "Geef nul of een positief geheel getal op" + +msgid "Please provide a negative integer" +msgstr "Geef een negatief geheel getal op" + +msgid "Please provide a valid date and time" +msgstr "Geef een geldige datum en tijd op" + +msgid "Please provide a valid time" +msgstr "Geef een geldige tijd op" + +msgid "Please provide an integer between 0 and 100" +msgstr "Geef een geheel getal tussen 0 en 100 op" + +msgid "Please provide a valid url" +msgstr "Geef een geldige URL op" + +msgid "Please provide a valid email address" +msgstr "geef alstublieft een geldig email adres" + +msgid "Please provide a valid age" +msgstr "Geef een geldige leeftijd op" + +msgid "Please provide a valid phone number" +msgstr "Gelieve een geldig telefoonnummer op te geven" + +msgid "This value already exists" +msgstr "Deze waarde bestaat al" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "\"Van\" kan niet groter zijn dan \"Naar\"" + +msgid "Checking..." +msgstr "Controleren..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Coördinaat instellen" diff --git a/i18n/prs.po b/i18n/prs.po index 76198d8d85..c851e741bf 100644 --- a/i18n/prs.po +++ b/i18n/prs.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Persian (Afghanistan) (https://app.transifex.com/hisp-uio/teams/100509/fa_AF/)\n" @@ -36,6 +36,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "رویداد جدید" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "جستجو" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "بیشتر" @@ -288,9 +321,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "رویداد جدید" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -504,9 +534,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "جستجو" - msgid "Clear" msgstr "پاک کردن" @@ -664,7 +691,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -839,9 +868,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -877,15 +903,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "داشبورد" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "برنامه های انتخاب شده" @@ -912,6 +929,9 @@ msgstr "در حال بار کردن" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1050,7 +1070,7 @@ msgstr "" msgid "Assigned to" msgstr "تعین شده" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1059,7 +1079,7 @@ msgstr "تجدید" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1233,6 +1253,9 @@ msgstr "هشدار\\:" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1251,9 +1274,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1449,10 +1469,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1488,6 +1516,12 @@ msgstr "" msgid "Value" msgstr "مقدار" +msgid "File" +msgstr "" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1548,6 +1582,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "تاریخ ثبت و راجستر" @@ -1563,13 +1637,120 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1581,6 +1762,14 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "" diff --git a/i18n/ps.po b/i18n/ps.po index f8acba0571..b851b0cd44 100644 --- a/i18n/ps.po +++ b/i18n/ps.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Pashto (https://app.transifex.com/hisp-uio/teams/100509/ps/)\n" @@ -37,6 +37,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "نوې پېښه" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "جستجو" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "نور" @@ -289,9 +322,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "نوې پېښه" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -505,9 +535,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "جستجو" - msgid "Clear" msgstr "پاک یې کړئ" @@ -665,7 +692,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -840,9 +869,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -878,15 +904,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "ډېشبورډ [ ډېسبورډ ]" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "انتخاب شوی پروګرام" @@ -913,6 +930,9 @@ msgstr "د پورته کېدو یا لوډینګ په حال کې" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1051,7 +1071,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1060,7 +1080,7 @@ msgstr "درست یې کړئ" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1234,6 +1254,9 @@ msgstr "خبرداری" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1252,9 +1275,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1450,10 +1470,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1489,6 +1517,12 @@ msgstr "" msgid "Value" msgstr "ارزښت یا رقم" +msgid "File" +msgstr "" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1549,6 +1583,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "د راجسټرېشن نېټه" @@ -1564,13 +1638,120 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1582,6 +1763,14 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "" diff --git a/i18n/pt.po b/i18n/pt.po index 7c9dc3090d..20efda83c5 100644 --- a/i18n/pt.po +++ b/i18n/pt.po @@ -3,22 +3,23 @@ # David Júnior , 2021 # Fernando Jorge Bade, 2023 # Philip Larsen Donnelly, 2024 -# Gabriela Rodriguez , 2024 # Ge Joao , 2024 -# Viktor Varland , 2024 # Juan M Alcantara Acosta , 2024 # Sheila André , 2024 # Jason Pickering , 2024 +# Laurência Luís, 2024 +# David Mondlane, 2024 # Helton Dias, 2024 +# Gabriela Rodriguez , 2024 # Shelsea Chumaio, 2024 -# Laurência Luís, 2024 +# Viktor Varland , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Laurência Luís, 2024\n" +"Last-Translator: Viktor Varland , 2024\n" "Language-Team: Portuguese (https://app.transifex.com/hisp-uio/teams/100509/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -53,6 +54,39 @@ msgstr "" "(no mesmo domínio). Actualize esta página se desejar usar esta versão " "novamente, mas esteja ciente de que isso fechará outras versões." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Editar evento" + +msgid "New event" +msgstr "Novo evento" + +msgid "Active enrollments" +msgstr "Inscrições ativas" + +msgid "Completed enrollments" +msgstr "Inscrições concluídas" + +msgid "Cancelled enrollments" +msgstr "Inscrições canceladas" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Pesquisar" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Mais" @@ -98,66 +132,6 @@ msgstr "Este valor está ser validado" msgid "Async field update failed" msgstr "Falha na actualização do campo assíncrono" -msgid "A value is required" -msgstr "Um valor é obrigatório" - -msgid "Please provide a valid number" -msgstr "Por favor, forneça um número válido" - -msgid "Please provide a valid integer" -msgstr "Forneça um número inteiro válido" - -msgid "Please provide a positive integer" -msgstr "Forneça um número inteiro positivo" - -msgid "Please provide zero or a positive integer" -msgstr "Forneça zero ou um número inteiro positivo" - -msgid "Please provide a negative integer" -msgstr "Forneça um número inteiro negativo" - -msgid "Please provide a valid date" -msgstr "Forneça uma data válida" - -msgid "A date in the future is not allowed" -msgstr "Uma data no futuro não é permitida" - -msgid "Please provide a valid date and time" -msgstr "Forneça uma data e hora válidas" - -msgid "Please provide a valid time" -msgstr "Forneça um horário válido" - -msgid "Please provide an integer between 0 and 100" -msgstr "Forneça um número inteiro entre 0 e 100" - -msgid "Please provide a valid url" -msgstr "Forneça um url válido" - -msgid "Please provide a valid email address" -msgstr "Por favor, forneça um endereço de e-mail válido" - -msgid "Please provide a valid age" -msgstr "Por favor, forneça uma idade válida" - -msgid "Please provide a valid phone number" -msgstr "Por favor forneça um número de telefone válido" - -msgid "Please provide a valid organisation unit" -msgstr "Forneça uma unidade organizacional válida" - -msgid "Please provide valid coordinates" -msgstr "Forneça coordenadas válidas" - -msgid "This value already exists" -msgstr "Este valor já existe" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "\"De\" não pode ser maior que \"Para\"" - -msgid "Checking..." -msgstr "Verificando ..." - msgid "Area" msgstr "Área" @@ -170,20 +144,26 @@ msgstr "Inscrição" msgid "Complete event" msgstr "Evento completo" +msgid "A value is required" +msgstr "Um valor é obrigatório" + +msgid "Please provide a valid date" +msgstr "Forneça uma data válida" + msgid "{{ stageName }} - Basic info" -msgstr "" +msgstr "{{ stageName }} - Informações básicas" msgid "{{ stageName }} - Assignee" -msgstr "" +msgstr "{{ stageName }} - Atribuído" msgid "{{ stageName }} - Status" -msgstr "" +msgstr "{{ stageName }} - Estado" msgid "Please select {{categoryName}}" msgstr "Por Favor Selecione {{categoryName}}" -msgid "A future date is not allowed" -msgstr "Uma data futura não é permitida" +msgid "A date in the future is not allowed" +msgstr "Uma data no futuro não é permitida" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "Gravar uma nova inscrição em {{programName}} em {{orgUnitName}}." @@ -199,10 +179,10 @@ msgid "Metadata error. see log for details" msgstr "Erro de metadados. veja o log para detalhes" msgid "{{ stageName }} - Details" -msgstr "" +msgstr "{{ stageName }} - Detalhes" msgid "{{ stageName }} - {{ sectionName }}" -msgstr "" +msgstr "{{ stageName }} - {{ sectionName }}" msgid "Assigned user" msgstr "Utilizador atribuído" @@ -251,7 +231,7 @@ msgid "Completed" msgstr "Concluído" msgid "Please add or cancel note before saving the event" -msgstr "" +msgstr "Adicionar ou cancelar a nota antes de guardar o evento" msgid "Save and add another" msgstr "Gravar e adicionar outro" @@ -311,9 +291,6 @@ msgstr "Sim, descartar alterações" msgid "No, cancel" msgstr "Não cancele" -msgid "New event" -msgstr "Novo evento" - msgid "You don't have access to create an event in the current selections" msgstr "Você não tem acesso para criar um evento nas seleções atuais" @@ -337,7 +314,7 @@ msgid "An error has occurred. See log for details" msgstr "Ocorreu um erro. Veja o log para detalhes" msgid "{{programStageName}} completed" -msgstr "" +msgstr "{{programStageName}} Concluído" msgid "" "Would you like to complete the enrollment and all active events as well?" @@ -345,9 +322,9 @@ msgstr "Gostaria de completar a inscrição e todos os eventos activos?" msgid "{{count}} event in {{programStageName}}" msgid_plural "{{count}} event in {{programStageName}}" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} evento em {{programStageName}}" +msgstr[1] "{{count}} eventos em {{programStageName}}" +msgstr[2] "{{count}} Eventos em {{programStageName}}" msgid "Yes, complete enrollment and events" msgstr "Sim, completar a inscrição e os eventos" @@ -395,7 +372,7 @@ msgid "No feedback for this event yet" msgstr "Ainda não há feedback para este evento" msgid "No indicator output for this event yet" -msgstr "" +msgstr "Não existe nenhum resultado do indicador para este evento" msgid "Generate new event" msgstr "Gerar novo evento" @@ -532,14 +509,11 @@ msgid "Select image" msgstr "Selecione a imagem" msgid "Type to filter options" -msgstr "" +msgstr "Tipo de opções de filtros" msgid "No match found" msgstr "Nenhuma correspondência encontrada" -msgid "Search" -msgstr "Pesquisar" - msgid "Clear" msgstr "Limpar" @@ -620,15 +594,16 @@ msgstr "Programa não existe" msgid "Selected program is invalid for selected organisation unit" msgstr "" +"O programa selecionado é inválido para a unidade organizacional selecionada" msgid "Add note" msgstr "Adicionar uma nota" msgid "You don't have access to write notes" -msgstr "" +msgstr "Não tem acesso para escrever notas" msgid "Write note" -msgstr "" +msgstr "Escrever nota" msgid "was blanked out and hidden by your last action" msgstr "foi apagado e escondido pela sua última ação" @@ -640,13 +615,13 @@ msgid "Close the notice" msgstr "Fechar o aviso" msgid "Enrollment with id \"{{enrollmentId}}\" does not exist" -msgstr "" +msgstr "O registo com o id \"{{enrollmentId}}\" não existe" msgid "Tracked entity instance with id \"{{teiId}}\" does not exist" msgstr "A instância de entidade rastreada com id \"{{teiId}}\" não existe" msgid "Program with id \"{{programId}}\" does not exist" -msgstr "" +msgstr "O programa com o id \"{{programId}}\" não existe" msgid "" "An error occurred while fetching enrollments. Please enter a valid url." @@ -706,6 +681,8 @@ msgid "" "You do not have permissions to access to this program, registering unit or " "record, contact your administrator for more information." msgstr "" +"Não tem permissões para aceder a este programa, e efectuar algum registo, " +"contacte o seu administrador para mais informações." msgid "{{teiDisplayName}} is not enrolled in this program." msgstr "{{teiDisplayName}} não está inscrito neste programa." @@ -746,7 +723,7 @@ msgid "There was an error loading the page" msgstr "Ocorreu um erro ao carregar a página" msgid "Choose an organisation unit to start reporting" -msgstr "" +msgstr "Selecionar uma unidade organizacional para iniciar o preenchimento " msgid "Program stage is invalid" msgstr "O estagio do programa é inválida" @@ -761,7 +738,7 @@ msgid "Refer" msgstr "Referir" msgid "You can't add any more {{ programStageName }} events" -msgstr "" +msgstr "Não é possível adicionar mais eventos {{ programStageName }} " msgid "Cancel without saving" msgstr "Cancelar sem gravar" @@ -782,6 +759,8 @@ msgid "" "The category option is not valid for the selected organisation unit. Please " "select a valid combination." msgstr "" +"A opção de categoria não é válida para a unidade organizacional selecionada." +" Por favor, selecione uma combinação válida." msgid "Please select {{category}}." msgstr "Selecione {{category}}." @@ -799,6 +778,7 @@ msgid "" "You don't have access to create a {{trackedEntityName}} in the current " "selections" msgstr "" +"Com base na selecções, não tem acesso para criar um {{trackedEntityName}} " msgid "Choose the {{missingCategories}} to start reporting" msgstr "Escolha as {{missingCategories}} para começar a relatar" @@ -822,7 +802,7 @@ msgid "New Enrollment in program{{escape}} {{programName}}" msgstr "Nova Inscrição no programa{{escape}} {{programName}}" msgid "Save {{trackedEntityTypeName}}" -msgstr "" +msgstr "Salvar {{trackedEntityTypeName}}" msgid "Save {{trackedEntityName}}" msgstr "Gravar {{trackedEntityName}}" @@ -884,11 +864,8 @@ msgstr "evento" msgid "You don't have access to edit this event" msgstr "Não tem acesso para editar este evento" -msgid "Edit event" -msgstr "Editar evento" - msgid "View changelog" -msgstr "" +msgstr "Ver registo de alterações" msgid "Event details" msgstr "Detalhes do evento" @@ -924,15 +901,6 @@ msgstr "O evento não pôde ser carregado" msgid "Organisation unit could not be loaded" msgstr "Não foi possível carregar a unidade organizacional" -msgid "Dashboard" -msgstr "Painel de Instrumentos" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Programa selecionado" @@ -950,15 +918,20 @@ msgstr[2] "Preencha pelo menos {{count}} atributos para pesquisar" msgid "Could not retrieve metadata. Please try again later." msgstr "" +"Não foi possível extrair os metadados. Por favor, tente novamente mais " +"tarde." msgid "The enrollment event data could not be found" msgstr "Os dados do evento de inscrição não foram encontrados" msgid "Loading" -msgstr "Carregando.." +msgstr "A carregar.." msgid "An error occurred while loading the form" -msgstr "" +msgstr "Ocorreu um erro ao carregar o formulário" + +msgid "Back to all stages and events" +msgstr "Voltar para todos os palcos e eventos" msgid "Possible duplicates found" msgstr "Possíveis duplicatas encontradas" @@ -979,7 +952,7 @@ msgid "No results found for " msgstr "Nenhum resultado encontrado para" msgid "Choose an organisation unit" -msgstr "" +msgstr "Escolha uma unidade organizacional" msgid "Clear selection" msgstr "Limpar seleção" @@ -992,6 +965,7 @@ msgstr "Procurar um programa" msgid "Some programs are being filtered by the chosen organisation unit" msgstr "" +"Alguns programas estão a ser filtrados pela unidade organizacional escolhida" msgid "Show all programs" msgstr "Mostrar todos os programas" @@ -1018,7 +992,7 @@ msgid "Search {{name}}" msgstr "Pesquise {{name}}" msgid "Search by {{name}}" -msgstr "Procura por {{name}}" +msgstr "Pesquise por {{name}}" msgid "all programs" msgstr "todos os programas" @@ -1096,7 +1070,7 @@ msgid "Create saved list" msgstr "Criar lista gravadas" msgid "Create new in another program" -msgstr "" +msgstr "Criar novo em outro programa" msgid "Create new event" msgstr "Criar um novo evento" @@ -1105,13 +1079,13 @@ msgid "Search for a {{trackedEntityName}} in {{programName}}" msgstr "Procure por um {{trackedEntityName}} em {{programName}}" msgid "No tracked entity types available" -msgstr "" +msgstr "Não há tipos de entidades rastreadas disponíveis" msgid "Assigned to" msgstr "Atribuído a" msgid "You don't have access to edit the assigned user" -msgstr "" +msgstr "Não tem acesso para editar o utilizador atribuído" msgid "Edit" msgstr "Editar" @@ -1120,7 +1094,7 @@ msgid "No one is assigned to this event" msgstr "Ninguém está atribuído a este evento" msgid "You don't have access to assign a user to this event" -msgstr "" +msgstr "Não tem acesso para atribuir um utilizador a este evento" msgid "Assign" msgstr "Atribuir" @@ -1170,7 +1144,7 @@ msgid "Mark incomplete" msgstr "Marca incompleta" msgid "You do not have access to delete this enrollment" -msgstr "" +msgstr "Não tem acesso para apagar este registo" msgid "Delete enrollment" msgstr "Excluir inscrição" @@ -1195,10 +1169,12 @@ msgid "Transfer" msgstr "Transferir" msgid "An error occurred while transferring ownership" -msgstr "" +msgstr "Ocorreu um erro durante a transferência de propriedade" msgid "Existing dates for auto-generated events will not be updated." msgstr "" +"As datas existentes para eventos gerados automaticamente não serão " +"actualizadas." msgid "Latitude" msgstr "Latitude" @@ -1207,19 +1183,22 @@ msgid "Longitude" msgstr "Longitude" msgid "Set coordinates" -msgstr "" +msgstr "Definir coordenadas" msgid "Coordinates" msgstr "Coordenadas" +msgid "Please provide valid coordinates" +msgstr "Forneça coordenadas válidas" + msgid "Delete polygon" msgstr "Excluir polígono" msgid "Close without saving" -msgstr "" +msgstr "Fechar sem guardar" msgid "Finish drawing before saving" -msgstr "" +msgstr "Terminar o desenho antes de o guardar" msgid "Set area" msgstr "Definir área" @@ -1228,19 +1207,25 @@ msgid "" "Transferring enrollment ownership from {{ownerOrgUnit}} to " "{{newOrgUnit}}{{escape}}" msgstr "" +"Transferência da propriedade do registo de {{ownerOrgUnit}} para " +"{{newOrgUnit}}{{escape}}" msgid "" "You will lose access to the enrollment when transferring ownership to " "{{organisationUnit}}." msgstr "" +"O utilizador perderá o acesso ao registo quando transferir a propriedade " +"para {{organisationUnit}}." msgid "Transfer Ownership" -msgstr "" +msgstr "Transferir a propriedade" msgid "" "Choose the organisation unit to which enrollment ownership should be " "transferred." msgstr "" +"Selecionar a unidade organizacional para a qual a propriedade do registo " +"deve ser transferida." msgid "Enrollment date" msgstr "Data de inscrição" @@ -1257,22 +1242,22 @@ msgid "Follow-up" msgstr "Acompanhamento" msgid "Started at{{escape}}" -msgstr "" +msgstr "Iniciado em{{escape}}" msgid "Owned by{{escape}}" -msgstr "" +msgstr "Propriedade de{{escape}}" msgid "Cancelled" msgstr "Cancelado" msgid "Add coordinates" -msgstr "" +msgstr "Adicionar coordenadas" msgid "Add area" -msgstr "" +msgstr "Adicionar área" msgid "Please add or cancel the note before saving the event" -msgstr "" +msgstr "Adicione ou cancele a nota antes de guardar o evento" msgid "organisation unit could not be retrieved. Please try again later." msgstr "" @@ -1286,13 +1271,13 @@ msgid "program or stage is invalid" msgstr "programa ou estágio é inválido" msgid "Notes about this enrollment" -msgstr "" +msgstr "Notas sobre este registo" msgid "Write a note about this enrollment" -msgstr "" +msgstr "Escrever uma nota sobre este registo" msgid "This enrollment doesn't have any notes" -msgstr "" +msgstr "Este registo não tem notas" msgid "Error" msgstr "Erro" @@ -1303,6 +1288,9 @@ msgstr "Aviso" msgid "stage not found in rules execution" msgstr "estágio não encontrado na execução das regras" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Apagar evento" @@ -1319,19 +1307,16 @@ msgid "Event completed" msgstr "Evento concluído" msgid "The event cannot be edited after it has been completed" -msgstr "" - -msgid "Back to all stages and events" -msgstr "Voltar para todos os palcos e eventos" +msgstr "O evento não pode ser editado depois de ter sido concluído" msgid "Notes about this event" -msgstr "" +msgstr "Notas sobre este evento" msgid "Write a note about this event" -msgstr "" +msgstr "Escrever uma nota sobre este evento" msgid "This event doesn't have any notes" -msgstr "" +msgstr "Este evento não tem quaisquer notas" msgid "Schedule date info" msgstr "Informação da data da programação" @@ -1377,10 +1362,10 @@ msgid "Schedule date / Due date" msgstr "Data de programação / Data de vencimento" msgid "Event notes" -msgstr "" +msgstr "Notas do evento" msgid "Write a note about this scheduled event" -msgstr "" +msgstr "Escrever uma nota sobre este evento programado" msgid "Save note" msgstr "Gravar notas" @@ -1421,22 +1406,25 @@ msgid "Fix errors in the form to continue." msgstr "Corrija os erros no formulário para continuar." msgid "You do not have access to delete this {{trackedEntityTypeName}}" -msgstr "" +msgstr "Não tem acesso para apagar{{trackedEntityTypeName}}" msgid "Delete {{trackedEntityTypeName}}" -msgstr "" +msgstr "Apagar{{trackedEntityTypeName}}" msgid "" "Are you sure you want to delete this {{trackedEntityTypeName}}? This will " "permanently remove the {{trackedEntityTypeName}} and all its associated " "enrollments and events in all programs." msgstr "" +"Tem a certeza de que pretende apagar {{trackedEntityTypeName}}? Isto irá " +"remover permanentemente o {{trackedEntityTypeName}} e todos os registos e " +"eventos associados em todos os programas." msgid "There was a problem deleting the {{trackedEntityTypeName}}" -msgstr "" +msgstr "Houve um problema ao eliminar o ficheiro {{trackedEntityTypeName}}" msgid "Yes, delete {{trackedEntityTypeName}}" -msgstr "" +msgstr "Sim, apagar {{trackedEntityTypeName}}" msgid "Profile widget could not be loaded. Please try again later" msgstr "" @@ -1444,31 +1432,31 @@ msgstr "" "tarde" msgid "{{trackedEntityTypeName}} profile" -msgstr "" +msgstr "{{trackedEntityTypeName}} perfil" msgid "tracked entity instance" msgstr "instância de entidade rastreada" msgid "Link to an existing {{linkableStageLabel}}" -msgstr "" +msgstr "Ligar a um existente {{linkableStageLabel}}" msgid "Choose a {{linkableStageLabel}}" -msgstr "" +msgstr "Escolha um {{linkableStageLabel}}" msgid "{{ linkableStageLabel }} is not repeatable" -msgstr "" +msgstr "{{ linkableStageLabel }} Não é repetivo" msgid "{{ linkableStageLabel }} has no linkable events" -msgstr "" +msgstr "{{ linkableStageLabel }} Não tem eventos associados" msgid "Ambiguous relationships, contact system administrator" -msgstr "" +msgstr "Relacionamentos ambíguos, contacte o administrador do sistema" msgid "Enter details now" -msgstr "" +msgstr "Introduzir dados agora" msgid "Link to an existing" -msgstr "" +msgstr "Ligar a um existente " msgid "Scheduled date" msgstr "Data agendada" @@ -1476,11 +1464,17 @@ msgstr "Data agendada" msgid "Report date" msgstr "Data do relatório" -msgid "Please select a valid event" +msgid "Please enter a date" msgstr "" +msgid "Please provide a valid organisation unit" +msgstr "Forneça uma unidade organizacional válida" + +msgid "Please select a valid event" +msgstr "Selecione um evento válido" + msgid "You do not have access to create events in this stage" -msgstr "" +msgstr "Não tem acesso para criar eventos neste estágio" msgid "This stage can only have one event" msgstr "Esta etapa só pode ter um evento" @@ -1489,18 +1483,20 @@ msgid "New {{ eventName }} event" msgstr "Novo evento de {{ eventName }}" msgid "An error occurred while deleting the event" -msgstr "" +msgstr "Ocorreu um erro ao apagar o evento" msgid "" "Deleting an event is permanent and cannot be undone. Are you sure you want " "to delete this event?" msgstr "" +"A eliminação de um evento é permanente e não pode ser anulada. Tem a certeza" +" de que pretende apagar este evento?" msgid "An error occurred when updating event status" -msgstr "" +msgstr "Ocorreu um erro ao atualizar o estado do evento" msgid "Unskip" -msgstr "" +msgstr "Descompactar" msgid "Skip" msgstr "Saltar" @@ -1522,9 +1518,9 @@ msgstr "" msgid "{{ count }} event" msgid_plural "{{ count }} event" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{ count }} evento" +msgstr[1] "{{count}} eventos" +msgstr[2] "{{count}} Eventos" msgid "{{ overdueEvents }} overdue" msgstr "{{ overdueEvents }} em atraso" @@ -1535,10 +1531,18 @@ msgstr "{{ scheduledEvents }} agendado" msgid "Stages and Events" msgstr "Fases e Eventos" +msgid "View linked event" +msgstr "Ver evento associado" + msgid "An error occurred while loading the widget." +msgstr "Ocorreu um erro ao carregar o widget." + +msgid "Linked event" msgstr "" -msgid "View linked event" +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1548,7 +1552,7 @@ msgid "Changelog" msgstr "Registo de mudanças" msgid "No changes to display" -msgstr "" +msgstr "Sem alterações no ecrã" msgid "Updated" msgstr "Actualizado" @@ -1569,35 +1573,43 @@ msgid "Data item" msgstr "Item de dados" msgid "Change" -msgstr "" +msgstr "Alterar" msgid "Value" msgstr "Valor" +msgid "File" +msgstr "Arquivo" + +msgid "Image" +msgstr "Imagem" + msgid "New {{trackedEntityTypeName}} relationship" -msgstr "" +msgstr "Relacionamento {{trackedEntityTypeName}} " msgid "Missing implementation step" -msgstr "" +msgstr "Falta etapa de implementação" msgid "Go back without saving relationship" -msgstr "" +msgstr "Voltar atrás sem guardar o relacionamento" msgid "New Relationship" -msgstr "" +msgstr "Novo relacionamento" msgid "Link to an existing {{tetName}}" -msgstr "" +msgstr "Associar a um existente {{tetName}}" msgid "An error occurred while adding the relationship" -msgstr "" +msgstr "Ocorreu um erro ao adicionar o relacionamento" msgid "" "Something went wrong while loading relationships. Please try again later." msgstr "" +"Algo correu mal ao carregar os relacionamento. Por favor, tente novamente " +"mais tarde." msgid "{{trackedEntityTypeName}} relationships" -msgstr "" +msgstr "{{trackedEntityTypeName}} Relacionamentos" msgid "Delete relationship" msgstr "Apagar relacionamento" @@ -1606,21 +1618,24 @@ msgid "" "Deleting the relationship is permanent and cannot be undone. Are you sure " "you want to delete this relationship?" msgstr "" +"A eliminação da relação é permanente e não pode ser anulada. Tem a certeza " +"de que pretende eliminar este relacionamento?" msgid "Yes, delete relationship" -msgstr "" +msgstr "Sim, apagar relacionamento" msgid "An error occurred while deleting the relationship." -msgstr "" +msgstr "Ocorreu um erro ao apagar o relacionamento." msgid "To open this relationship, please wait until saving is complete" msgstr "" +"Para abrir este relacionamento, aguarde até que a gravação esteja concluída" msgid "Type" msgstr "Tipo" msgid "Created date" -msgstr "" +msgstr "Data de criação" msgid "Program stage name" msgstr "Nome do estágio do programa" @@ -1634,6 +1649,46 @@ msgstr "Baixar dados ..." msgid "an error occurred loading working lists" msgstr "ocorreu um erro ao carregar as listas de trabalho" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr " Ocorreu um erro desconhecido." + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Data de registro" @@ -1649,14 +1704,129 @@ msgstr "Acompanhamento" msgid "Choose a program stage to filter by {{label}}" msgstr "Escolha uma etapa do programa para filtrar por {{label}}" -msgid "Active enrollments" -msgstr "Inscrições ativas" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." +msgstr "" -msgid "Completed enrollments" -msgstr "Inscrições concluídas" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." +msgstr "" -msgid "Cancelled enrollments" -msgstr "Inscrições canceladas" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" +msgstr "" msgid "Working list could not be updated" msgstr "A lista de trabalho não pôde ser atualizada" @@ -1668,6 +1838,15 @@ msgid "an error occurred loading Tracked entity instance lists" msgstr "" "ocorreu um erro ao carregar as listas de instâncias de entidades rastreadas" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} selecionado" +msgstr[1] "{{count}} selecionado" +msgstr[2] "{{count}} seleccionado" + +msgid "Deselect all" +msgstr "Desmarcar todos" + msgid "Update view" msgstr "Vista de atualização" @@ -1774,6 +1953,60 @@ msgid "Error editing the event, the changes made were not saved" msgstr "Erro ao editar o evento, as alterações feitas não foram gravadas" msgid "Error updating the Assignee" +msgstr "Erro ao atualizar o destinatário" + +msgid "Please provide a valid number" +msgstr "Por favor, forneça um número válido" + +msgid "Please provide a valid integer" +msgstr "Forneça um número inteiro válido" + +msgid "Please provide a positive integer" +msgstr "Forneça um número inteiro positivo" + +msgid "Please provide zero or a positive integer" +msgstr "Forneça zero ou um número inteiro positivo" + +msgid "Please provide a negative integer" +msgstr "Forneça um número inteiro negativo" + +msgid "Please provide a valid date and time" +msgstr "Forneça uma data e hora válidas" + +msgid "Please provide a valid time" +msgstr "Forneça um horário válido" + +msgid "Please provide an integer between 0 and 100" +msgstr "Forneça um número inteiro entre 0 e 100" + +msgid "Please provide a valid url" +msgstr "Forneça um url válido" + +msgid "Please provide a valid email address" +msgstr "Por favor, forneça um endereço de e-mail válido" + +msgid "Please provide a valid age" +msgstr "Por favor, forneça uma idade válida" + +msgid "Please provide a valid phone number" +msgstr "Por favor forneça um número de telefone válido" + +msgid "This value already exists" +msgstr "Este valor já existe" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "\"De\" não pode ser maior que \"Para\"" + +msgid "Checking..." +msgstr "Verificando ..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" msgstr "" msgid "Set coordinate" diff --git a/i18n/pt_BR.po b/i18n/pt_BR.po index dde9b5e1e0..f258d5f2dd 100644 --- a/i18n/pt_BR.po +++ b/i18n/pt_BR.po @@ -1,14 +1,14 @@ # # Translators: # Oscar Mesones Lapouble , 2021 -# Viktor Varland , 2024 # Thiago Rocha, 2024 +# Viktor Varland , 2024 # Philip Larsen Donnelly, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Portuguese (Brazil) (https://app.transifex.com/hisp-uio/teams/100509/pt_BR/)\n" @@ -39,6 +39,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "Novo evento" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Pesquisar" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Mais" @@ -291,9 +324,6 @@ msgstr "" msgid "No, cancel" msgstr "Não, cancelar" -msgid "New event" -msgstr "Novo evento" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -508,9 +538,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "Pesquisar" - msgid "Clear" msgstr "Limpar" @@ -668,7 +695,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -843,9 +872,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -881,15 +907,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "Gráficos" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Programa selecionado" @@ -917,6 +934,9 @@ msgstr "Carregando.." msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1055,7 +1075,7 @@ msgstr "" msgid "Assigned to" msgstr "Atribuido a" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1064,7 +1084,7 @@ msgstr "Editar" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1238,6 +1258,9 @@ msgstr "Advertência" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1256,9 +1279,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1457,10 +1477,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1496,6 +1524,12 @@ msgstr "" msgid "Value" msgstr "Valor" +msgid "File" +msgstr "Arquivo" + +msgid "Image" +msgstr "Imagem (PNG)" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1556,6 +1590,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Data do Registo" @@ -1571,13 +1645,128 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1589,6 +1778,15 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Deselect all" +msgstr "Desmarcar todos" + msgid "Update view" msgstr "" diff --git a/i18n/ro.po b/i18n/ro.po index ee369e5446..d38d0a722b 100644 --- a/i18n/ro.po +++ b/i18n/ro.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Valeriu Plesca , 2024\n" "Language-Team: Romanian (https://app.transifex.com/hisp-uio/teams/100509/ro/)\n" @@ -44,6 +44,39 @@ msgstr "" " să utilizați din nou această versiune, dar rețineți că aceasta va închide " "alte versiuni." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Editare eveniment" + +msgid "New event" +msgstr "Eveniment nou" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Căutare" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "" @@ -89,66 +122,6 @@ msgstr "Această valoare se validează" msgid "Async field update failed" msgstr "" -msgid "A value is required" -msgstr "Este necesară o valoare" - -msgid "Please provide a valid number" -msgstr "Introduceți un număr valid" - -msgid "Please provide a valid integer" -msgstr "Introduceți un număr întreg valid" - -msgid "Please provide a positive integer" -msgstr "Introduceți un număr întreg pozitiv" - -msgid "Please provide zero or a positive integer" -msgstr "Introduceți zero sau un număr întreg pozitiv" - -msgid "Please provide a negative integer" -msgstr "Introduceți un număr întreg negativ" - -msgid "Please provide a valid date" -msgstr "Introduceți o dată validă" - -msgid "A date in the future is not allowed" -msgstr "Nu este permisă o dată în viitor" - -msgid "Please provide a valid date and time" -msgstr "Introduceți o dată și o oră valide" - -msgid "Please provide a valid time" -msgstr "Introduceți o oră valabilă" - -msgid "Please provide an integer between 0 and 100" -msgstr "" - -msgid "Please provide a valid url" -msgstr "Introduceți o adresă URL validă" - -msgid "Please provide a valid email address" -msgstr "Introduceți o adresă de e-mail validă" - -msgid "Please provide a valid age" -msgstr "Introduceți o vârstă valabilă" - -msgid "Please provide a valid phone number" -msgstr "Introduceți un număr de telefon valid" - -msgid "Please provide a valid organisation unit" -msgstr "" - -msgid "Please provide valid coordinates" -msgstr "Introduceți coordonate valide" - -msgid "This value already exists" -msgstr "Această valoare deja există" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "„De la” nu poate fi mai mare decât „Pînă la”" - -msgid "Checking..." -msgstr "Verificare..." - msgid "Area" msgstr "" @@ -161,6 +134,12 @@ msgstr "Înrolare" msgid "Complete event" msgstr "Eveniment complet" +msgid "A value is required" +msgstr "Este necesară o valoare" + +msgid "Please provide a valid date" +msgstr "Introduceți o dată validă" + msgid "{{ stageName }} - Basic info" msgstr "" @@ -173,8 +152,8 @@ msgstr "" msgid "Please select {{categoryName}}" msgstr "" -msgid "A future date is not allowed" -msgstr "Nu este permisă o dată viitoare" +msgid "A date in the future is not allowed" +msgstr "Nu este permisă o dată în viitor" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "" @@ -300,9 +279,6 @@ msgstr "" msgid "No, cancel" msgstr "Nu, anulare" -msgid "New event" -msgstr "Eveniment nou" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -519,9 +495,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "Căutare" - msgid "Clear" msgstr "" @@ -679,7 +652,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -856,9 +831,6 @@ msgstr "eveniment" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "Editare eveniment" - msgid "View changelog" msgstr "" @@ -894,15 +866,6 @@ msgstr "Evenimentul nu a putut fi încărcat" msgid "Organisation unit could not be loaded" msgstr "Unitatea organizațională nu a putut fi încărcată" -msgid "Dashboard" -msgstr "" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Programul selectat" @@ -930,6 +893,9 @@ msgstr "" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "Înapoi la toate etapele și evenimentele" + msgid "Possible duplicates found" msgstr "S-au găsit posibile duplicate" @@ -1072,7 +1038,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1081,7 +1047,7 @@ msgstr "Editare" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1168,6 +1134,9 @@ msgstr "" msgid "Coordinates" msgstr "" +msgid "Please provide valid coordinates" +msgstr "Introduceți coordonate valide" + msgid "Delete polygon" msgstr "Lichidare poligon" @@ -1255,6 +1224,9 @@ msgstr "Avertizare" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Lichidare eveniment" @@ -1273,9 +1245,6 @@ msgstr "Eveniment finalizat" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "Înapoi la toate etapele și evenimentele" - msgid "Notes about this event" msgstr "" @@ -1419,6 +1388,12 @@ msgstr "" msgid "Report date" msgstr "Data raportului" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "" + msgid "Please select a valid event" msgstr "" @@ -1475,10 +1450,18 @@ msgstr "" msgid "Stages and Events" msgstr "Etape și Evenimente" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1514,6 +1497,12 @@ msgstr "" msgid "Value" msgstr "" +msgid "File" +msgstr "Fişier" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1574,6 +1563,46 @@ msgstr "Descărcare date..." msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Data Înregistrării" @@ -1589,13 +1618,128 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1607,6 +1751,15 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "Actualizare vizualizarea" @@ -1715,6 +1868,60 @@ msgstr "" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "Introduceți un număr valid" + +msgid "Please provide a valid integer" +msgstr "Introduceți un număr întreg valid" + +msgid "Please provide a positive integer" +msgstr "Introduceți un număr întreg pozitiv" + +msgid "Please provide zero or a positive integer" +msgstr "Introduceți zero sau un număr întreg pozitiv" + +msgid "Please provide a negative integer" +msgstr "Introduceți un număr întreg negativ" + +msgid "Please provide a valid date and time" +msgstr "Introduceți o dată și o oră valide" + +msgid "Please provide a valid time" +msgstr "Introduceți o oră valabilă" + +msgid "Please provide an integer between 0 and 100" +msgstr "" + +msgid "Please provide a valid url" +msgstr "Introduceți o adresă URL validă" + +msgid "Please provide a valid email address" +msgstr "Introduceți o adresă de e-mail validă" + +msgid "Please provide a valid age" +msgstr "Introduceți o vârstă valabilă" + +msgid "Please provide a valid phone number" +msgstr "Introduceți un număr de telefon valid" + +msgid "This value already exists" +msgstr "Această valoare deja există" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "„De la” nu poate fi mai mare decât „Pînă la”" + +msgid "Checking..." +msgstr "Verificare..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Setarea coordonatelor" diff --git a/i18n/ru.po b/i18n/ru.po index 0d16b78d76..ffa9169d93 100644 --- a/i18n/ru.po +++ b/i18n/ru.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Russian (https://app.transifex.com/hisp-uio/teams/100509/ru/)\n" @@ -46,6 +46,39 @@ msgstr "" "версии в том же самом домене. Обновите эту страницу, если вы хотите " "использовать эту версию, но имейте в виду, что другие версии будут закрыты." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Редактировать событие" + +msgid "New event" +msgstr "Новое событие" + +msgid "Active enrollments" +msgstr "Активные регистрационные записи" + +msgid "Completed enrollments" +msgstr "Завершенные регистрационные записи" + +msgid "Cancelled enrollments" +msgstr "Отмененные регистрационные записи" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Поиск" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Более" @@ -91,66 +124,6 @@ msgstr "Идет проверка значения" msgid "Async field update failed" msgstr "Сбой асинхронного обновления полей" -msgid "A value is required" -msgstr "Требуется значение" - -msgid "Please provide a valid number" -msgstr "Введите правильное число" - -msgid "Please provide a valid integer" -msgstr "Введите целое число" - -msgid "Please provide a positive integer" -msgstr "Введите положительное целое число" - -msgid "Please provide zero or a positive integer" -msgstr "Введите ноль или положительное целое число" - -msgid "Please provide a negative integer" -msgstr "Введите отрицательное целое число" - -msgid "Please provide a valid date" -msgstr "Введите правильную дату" - -msgid "A date in the future is not allowed" -msgstr "Дата в будущем не допускается" - -msgid "Please provide a valid date and time" -msgstr "Введите правильную дату и время" - -msgid "Please provide a valid time" -msgstr "Введите правильное время" - -msgid "Please provide an integer between 0 and 100" -msgstr "Введите целое число от 0 до 100" - -msgid "Please provide a valid url" -msgstr "Введите правильный URL адрес" - -msgid "Please provide a valid email address" -msgstr "Введите правильный адрес электронной почты" - -msgid "Please provide a valid age" -msgstr "Введите правильный возраст" - -msgid "Please provide a valid phone number" -msgstr "Введите правльный номер телефона" - -msgid "Please provide a valid organisation unit" -msgstr "Выберите правильную организационную единицу" - -msgid "Please provide valid coordinates" -msgstr "Введите правильные координаты" - -msgid "This value already exists" -msgstr "Данное значение уже существует" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "Значение \"От\" не может быть больше значения \"До\"" - -msgid "Checking..." -msgstr "Проверка..." - msgid "Area" msgstr "Участок" @@ -163,6 +136,12 @@ msgstr "Регистрация" msgid "Complete event" msgstr "Завершить событие" +msgid "A value is required" +msgstr "Требуется значение" + +msgid "Please provide a valid date" +msgstr "Введите правильную дату" + msgid "{{ stageName }} - Basic info" msgstr "{{ stageName }} - Основные данные" @@ -175,7 +154,7 @@ msgstr "{{ stageName }} - Статус" msgid "Please select {{categoryName}}" msgstr "Выберите {{categoryName}}" -msgid "A future date is not allowed" +msgid "A date in the future is not allowed" msgstr "Дата в будущем не допускается" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." @@ -304,9 +283,6 @@ msgstr "Да, не сохранять изменения" msgid "No, cancel" msgstr "Нет, отменить" -msgid "New event" -msgstr "Новое событие" - msgid "You don't have access to create an event in the current selections" msgstr "Не достаточно прав для создания события с текущим выбором" @@ -530,9 +506,6 @@ msgstr "Начать печатать для фильтрации опций" msgid "No match found" msgstr "Совпадения не найдены" -msgid "Search" -msgstr "Поиск" - msgid "Clear" msgstr "Очистить" @@ -883,9 +856,6 @@ msgstr "событие" msgid "You don't have access to edit this event" msgstr "У вас нет доступа к редактированию этого события" -msgid "Edit event" -msgstr "Редактировать событие" - msgid "View changelog" msgstr "Посмотреть лог изменений" @@ -922,15 +892,6 @@ msgstr "Событие не удалось загрузить" msgid "Organisation unit could not be loaded" msgstr "Организационную единицу не удалось загрузить" -msgid "Dashboard" -msgstr "Информационная панель" - -msgid "Edit Event" -msgstr "Редактировать событие" - -msgid "View Event" -msgstr "Посмотреть событие" - msgid "Selected program" msgstr "Выбранная программа" @@ -959,6 +920,9 @@ msgstr "Загрузка" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "Обратно ко всем этапам и событиям" + msgid "Possible duplicates found" msgstr "Найдены возможные дубликаты " @@ -1214,6 +1178,9 @@ msgstr "Установить координаты" msgid "Coordinates" msgstr "Координаты" +msgid "Please provide valid coordinates" +msgstr "Введите правильные координаты" + msgid "Delete polygon" msgstr "Удалить полигон" @@ -1312,6 +1279,9 @@ msgstr "Предупреждение" msgid "stage not found in rules execution" msgstr "этап не найден при выполнении правил" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Удалить событие" @@ -1332,9 +1302,6 @@ msgstr "Событие завершено" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "Обратно ко всем этапам и событиям" - msgid "Notes about this event" msgstr "" @@ -1503,6 +1470,12 @@ msgstr "Запланированная дата" msgid "Report date" msgstr "Дата отчета" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "Выберите правильную организационную единицу" + msgid "Please select a valid event" msgstr "Выберите действительное событие" @@ -1560,10 +1533,18 @@ msgstr " Событий запланировано: {{ scheduledEvents }}" msgid "Stages and Events" msgstr "Этапы и события" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1599,6 +1580,12 @@ msgstr "Изменить" msgid "Value" msgstr "Значение" +msgid "File" +msgstr "Файл" + +msgid "Image" +msgstr "Изображение" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "Новая связь для объекта {{trackedEntityTypeName}} " @@ -1661,6 +1648,46 @@ msgstr "Загрузка данных..." msgid "an error occurred loading working lists" msgstr "произошла ошибка во время загрузки рабочих списков" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Дата регистрации" @@ -1676,14 +1703,137 @@ msgstr "Отслеживать" msgid "Choose a program stage to filter by {{label}}" msgstr "Выберите этап программы для фильтрации по {{label}}" -msgid "Active enrollments" -msgstr "Активные регистрационные записи" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." +msgstr "" -msgid "Completed enrollments" -msgstr "Завершенные регистрационные записи" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." +msgstr "" -msgid "Cancelled enrollments" -msgstr "Отмененные регистрационные записи" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" +msgstr "" msgid "Working list could not be updated" msgstr "Не удалось обновить рабочий список" @@ -1694,6 +1844,16 @@ msgstr "произошла ошибка при загрузке рабочих msgid "an error occurred loading Tracked entity instance lists" msgstr "произошла ошибка при загрузке списков отслеживаемых объектов" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} выбран" +msgstr[1] "{{count}} выбрано" +msgstr[2] "{{count}} выбрано" +msgstr[3] "{{count}} выбрано" + +msgid "Deselect all" +msgstr "Отменить выбор всего" + msgid "Update view" msgstr "Обновить список" @@ -1802,6 +1962,60 @@ msgstr "Ошибка редактирования события, внесенн msgid "Error updating the Assignee" msgstr "Ошибка при обновлении назначенного пользователя" +msgid "Please provide a valid number" +msgstr "Введите правильное число" + +msgid "Please provide a valid integer" +msgstr "Введите целое число" + +msgid "Please provide a positive integer" +msgstr "Введите положительное целое число" + +msgid "Please provide zero or a positive integer" +msgstr "Введите ноль или положительное целое число" + +msgid "Please provide a negative integer" +msgstr "Введите отрицательное целое число" + +msgid "Please provide a valid date and time" +msgstr "Введите правильную дату и время" + +msgid "Please provide a valid time" +msgstr "Введите правильное время" + +msgid "Please provide an integer between 0 and 100" +msgstr "Введите целое число от 0 до 100" + +msgid "Please provide a valid url" +msgstr "Введите правильный URL адрес" + +msgid "Please provide a valid email address" +msgstr "Введите правильный адрес электронной почты" + +msgid "Please provide a valid age" +msgstr "Введите правильный возраст" + +msgid "Please provide a valid phone number" +msgstr "Введите правльный номер телефона" + +msgid "This value already exists" +msgstr "Данное значение уже существует" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "Значение \"От\" не может быть больше значения \"До\"" + +msgid "Checking..." +msgstr "Проверка..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Установить координату" diff --git a/i18n/si.po b/i18n/si.po index 35f0e324d6..54367a2485 100644 --- a/i18n/si.po +++ b/i18n/si.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Malinda Wijeratne, 2024\n" "Language-Team: Sinhala (https://app.transifex.com/hisp-uio/teams/100509/si/)\n" @@ -36,111 +36,84 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" -msgid "More" -msgstr "තව" - -msgid "View {{programName}} dashboard" -msgstr "" - -msgid "View dashboard" -msgstr "" - -msgid "View active enrollment" -msgstr "" - -msgid "Re-enroll" -msgstr "" - -msgid "in" -msgstr "" - -msgid "Enrolled" +msgid "Enrollment dashboard" msgstr "" -msgid "Previously enrolled" -msgstr "" - -msgid "Organisation unit" +msgid "View event" msgstr "" -msgid "Date of enrollment" +msgid "Edit event" msgstr "" -msgid "Last updated" +msgid "New event" msgstr "" -msgid "error encountered during field validation" +msgid "Active enrollments" msgstr "" -msgid "error" +msgid "Completed enrollments" msgstr "" -msgid "This value is validating" +msgid "Cancelled enrollments" msgstr "" -msgid "Async field update failed" +msgid "{{trackedEntityName}} list" msgstr "" -msgid "A value is required" -msgstr "" +msgid "Search" +msgstr "සොයන්න" -msgid "Please provide a valid number" +msgid "Working List" msgstr "" -msgid "Please provide a valid integer" +msgid "Event list" msgstr "" -msgid "Please provide a positive integer" -msgstr "" +msgid "More" +msgstr "තව" -msgid "Please provide zero or a positive integer" +msgid "View {{programName}} dashboard" msgstr "" -msgid "Please provide a negative integer" +msgid "View dashboard" msgstr "" -msgid "Please provide a valid date" +msgid "View active enrollment" msgstr "" -msgid "A date in the future is not allowed" +msgid "Re-enroll" msgstr "" -msgid "Please provide a valid date and time" +msgid "in" msgstr "" -msgid "Please provide a valid time" +msgid "Enrolled" msgstr "" -msgid "Please provide an integer between 0 and 100" +msgid "Previously enrolled" msgstr "" -msgid "Please provide a valid url" +msgid "Organisation unit" msgstr "" -msgid "Please provide a valid email address" +msgid "Date of enrollment" msgstr "" -msgid "Please provide a valid age" +msgid "Last updated" msgstr "" -msgid "Please provide a valid phone number" +msgid "error encountered during field validation" msgstr "" -msgid "Please provide a valid organisation unit" +msgid "error" msgstr "" -msgid "Please provide valid coordinates" +msgid "This value is validating" msgstr "" -msgid "This value already exists" -msgstr "මෙම අගය දැනටමත් පවතී" - -msgid "\"From\" cannot be greater than \"To\"" +msgid "Async field update failed" msgstr "" -msgid "Checking..." -msgstr "පිරික්සමින්..." - msgid "Area" msgstr "" @@ -153,6 +126,12 @@ msgstr "" msgid "Complete event" msgstr "" +msgid "A value is required" +msgstr "" + +msgid "Please provide a valid date" +msgstr "" + msgid "{{ stageName }} - Basic info" msgstr "" @@ -165,7 +144,7 @@ msgstr "" msgid "Please select {{categoryName}}" msgstr "" -msgid "A future date is not allowed" +msgid "A date in the future is not allowed" msgstr "" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." @@ -288,9 +267,6 @@ msgstr "ඔව්. වෙනස් කිරීම් ඉවතලන්න" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -504,9 +480,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "සොයන්න" - msgid "Clear" msgstr "" @@ -664,7 +637,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -839,9 +814,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -877,15 +849,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "" @@ -912,6 +875,9 @@ msgstr "" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1050,7 +1016,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1059,7 +1025,7 @@ msgstr "වෙනස් කරන්න" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1146,6 +1112,9 @@ msgstr "" msgid "Coordinates" msgstr "" +msgid "Please provide valid coordinates" +msgstr "" + msgid "Delete polygon" msgstr "" @@ -1233,6 +1202,9 @@ msgstr "අවවාදය" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1251,9 +1223,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1394,6 +1363,12 @@ msgstr "" msgid "Report date" msgstr "" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "" + msgid "Please select a valid event" msgstr "" @@ -1449,10 +1424,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1488,6 +1471,12 @@ msgstr "" msgid "Value" msgstr "අගය" +msgid "File" +msgstr "ගොනුව" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1548,6 +1537,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1563,13 +1592,120 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1581,6 +1717,14 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "" @@ -1689,6 +1833,60 @@ msgstr "" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "" + +msgid "Please provide a valid integer" +msgstr "" + +msgid "Please provide a positive integer" +msgstr "" + +msgid "Please provide zero or a positive integer" +msgstr "" + +msgid "Please provide a negative integer" +msgstr "" + +msgid "Please provide a valid date and time" +msgstr "" + +msgid "Please provide a valid time" +msgstr "" + +msgid "Please provide an integer between 0 and 100" +msgstr "" + +msgid "Please provide a valid url" +msgstr "" + +msgid "Please provide a valid email address" +msgstr "" + +msgid "Please provide a valid age" +msgstr "" + +msgid "Please provide a valid phone number" +msgstr "" + +msgid "This value already exists" +msgstr "මෙම අගය දැනටමත් පවතී" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "" + +msgid "Checking..." +msgstr "පිරික්සමින්..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "" diff --git a/i18n/sv.po b/i18n/sv.po index 6e16f66d26..1c3904c285 100644 --- a/i18n/sv.po +++ b/i18n/sv.po @@ -1,16 +1,16 @@ # # Translators: -# Jason Pickering , 2023 -# Philip Larsen Donnelly, 2024 # Martin , 2024 # Viktor Varland , 2024 +# Jason Pickering , 2024 +# Philip Larsen Donnelly, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Viktor Varland , 2024\n" +"Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Swedish (https://app.transifex.com/hisp-uio/teams/100509/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -39,6 +39,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "Ny händelse" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Sök" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "" @@ -291,9 +324,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "Ny händelse" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -507,9 +537,6 @@ msgstr "" msgid "No match found" msgstr "ingen matchning hittad" -msgid "Search" -msgstr "Sök" - msgid "Clear" msgstr "Klar" @@ -667,7 +694,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -842,9 +871,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -880,15 +906,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "instrumentbräda" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "" @@ -915,6 +932,9 @@ msgstr "" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1053,7 +1073,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1062,7 +1082,7 @@ msgstr "Redigera" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1236,6 +1256,9 @@ msgstr "Varning" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Ta bort händelse" @@ -1254,9 +1277,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1452,10 +1472,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1491,6 +1519,12 @@ msgstr "" msgid "Value" msgstr "Värde" +msgid "File" +msgstr "File" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1551,6 +1585,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1566,13 +1640,120 @@ msgstr "Följ upp" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1584,6 +1765,14 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} vald" +msgstr[1] "{{count}} valda" + +msgid "Deselect all" +msgstr "Avmarkera alla" + msgid "Update view" msgstr "" diff --git a/i18n/tet.po b/i18n/tet.po index 4757d41fce..1f635ad1d9 100644 --- a/i18n/tet.po +++ b/i18n/tet.po @@ -1,14 +1,14 @@ # # Translators: -# Viktor Varland , 2019 # Philip Larsen Donnelly, 2024 +# Viktor Varland , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Philip Larsen Donnelly, 2024\n" +"Last-Translator: Viktor Varland , 2024\n" "Language-Team: Tetum (Tetun) (https://app.transifex.com/hisp-uio/teams/100509/tet/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,6 +37,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "" @@ -289,9 +322,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -504,9 +534,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "" - msgid "Clear" msgstr "Hamós" @@ -664,7 +691,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -839,9 +868,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -877,15 +903,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "Painel Kontrolu" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "" @@ -911,6 +928,9 @@ msgstr "" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1049,7 +1069,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1058,7 +1078,7 @@ msgstr "Edita" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1232,6 +1252,9 @@ msgstr "Avizu" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1250,9 +1273,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1445,10 +1465,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1484,6 +1512,12 @@ msgstr "" msgid "Value" msgstr "Valor" +msgid "File" +msgstr "" + +msgid "Image" +msgstr "Imajen" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1544,6 +1578,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1559,13 +1633,112 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1577,6 +1750,13 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "" diff --git a/i18n/tg.po b/i18n/tg.po index 545222c3dc..d3a40c50ab 100644 --- a/i18n/tg.po +++ b/i18n/tg.po @@ -1,14 +1,14 @@ # # Translators: -# Viktor Varland , 2024 # Philip Larsen Donnelly, 2024 +# Viktor Varland , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Philip Larsen Donnelly, 2024\n" +"Last-Translator: Viktor Varland , 2024\n" "Language-Team: Tajik (https://app.transifex.com/hisp-uio/teams/100509/tg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,6 +37,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Ҷустуҷӯ" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "" @@ -289,9 +322,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -505,9 +535,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "Ҷустуҷӯ" - msgid "Clear" msgstr "Пок кардан" @@ -665,7 +692,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -840,9 +869,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -878,15 +904,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "Лавҳаи маълумот" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "" @@ -913,6 +930,9 @@ msgstr "Бор мешавад" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1051,7 +1071,7 @@ msgstr "" msgid "Assigned to" msgstr "таъиншуда ба" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1060,7 +1080,7 @@ msgstr "Таҳрир" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1234,6 +1254,9 @@ msgstr "Огоҳӣ" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1252,9 +1275,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1450,10 +1470,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1489,6 +1517,12 @@ msgstr "" msgid "Value" msgstr "Қимат" +msgid "File" +msgstr "Файл" + +msgid "Image" +msgstr "Тасвир" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1549,6 +1583,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Санаи бақайдгирӣ" @@ -1564,13 +1638,120 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1582,6 +1763,14 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" + +msgid "Deselect all" +msgstr "" + msgid "Update view" msgstr "" diff --git a/i18n/uk.po b/i18n/uk.po index 0506bb74f1..c5c3548f13 100644 --- a/i18n/uk.po +++ b/i18n/uk.po @@ -1,15 +1,15 @@ # # Translators: # Wanda , 2024 -# Éva Tamási, 2024 -# Nadiia , 2024 # Viktor Varland , 2024 +# Nadiia , 2024 +# Éva Tamási, 2024 # Philip Larsen Donnelly, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Ukrainian (https://app.transifex.com/hisp-uio/teams/100509/uk/)\n" @@ -40,6 +40,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "Нова подія" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Пошук" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Більше" @@ -292,9 +325,6 @@ msgstr "Так, скасувати зміни" msgid "No, cancel" msgstr "Ні, скасувати" -msgid "New event" -msgstr "Нова подія" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -510,9 +540,6 @@ msgstr "Введіть параметри фільтра" msgid "No match found" msgstr "" -msgid "Search" -msgstr "Пошук" - msgid "Clear" msgstr "Очистити" @@ -670,7 +697,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -845,9 +874,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -883,15 +909,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "Інформаційна панель (дашборд)" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Обрані програми" @@ -920,6 +937,9 @@ msgstr "Завантаження" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1058,7 +1078,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1067,7 +1087,7 @@ msgstr "Редагувати" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1241,6 +1261,9 @@ msgstr "Попередження" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Видалити подію" @@ -1259,9 +1282,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1463,10 +1483,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1502,6 +1530,12 @@ msgstr "" msgid "Value" msgstr "Значення" +msgid "File" +msgstr "Файл" + +msgid "Image" +msgstr "" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1562,6 +1596,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1577,13 +1651,136 @@ msgstr "Подальші дії" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1595,6 +1792,16 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "Вибрано {{count}}" +msgstr[1] "Вибрано {{count}}" +msgstr[2] "Вибрано {{count}}" +msgstr[3] "Вибрано {{count}}" + +msgid "Deselect all" +msgstr "Скасувати вибір усіх" + msgid "Update view" msgstr "" diff --git a/i18n/ur.po b/i18n/ur.po index a955c4e3e1..7b7984762f 100644 --- a/i18n/ur.po +++ b/i18n/ur.po @@ -1,14 +1,14 @@ # # Translators: -# Philip Larsen Donnelly, 2024 # Viktor Varland , 2024 +# Philip Larsen Donnelly, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Viktor Varland , 2024\n" +"Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Urdu (https://app.transifex.com/hisp-uio/teams/100509/ur/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,6 +37,39 @@ msgid "" "again, but be aware that this will close other versions." msgstr "" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "" + +msgid "New event" +msgstr "نئی تقریب" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "تلاش کریں" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "مزید" @@ -289,9 +322,6 @@ msgstr "" msgid "No, cancel" msgstr "" -msgid "New event" -msgstr "نئی تقریب" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -505,9 +535,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "تلاش کریں" - msgid "Clear" msgstr "کلیئر" @@ -665,7 +692,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -840,9 +869,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "" - msgid "View changelog" msgstr "" @@ -878,15 +904,6 @@ msgstr "" msgid "Organisation unit could not be loaded" msgstr "" -msgid "Dashboard" -msgstr "ڈیشبورڈ" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "منتخب کردہ پروگرام" @@ -913,6 +930,9 @@ msgstr "لوڈ کر رہا ہے" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "" @@ -1051,7 +1071,7 @@ msgstr "" msgid "Assigned to" msgstr "مقرر کیا، مقرر کرنا" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1060,7 +1080,7 @@ msgstr "ترمیم" msgid "No one is assigned to this event" msgstr "" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1234,6 +1254,9 @@ msgstr "وارنگ" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "" @@ -1252,9 +1275,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1450,10 +1470,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1489,6 +1517,12 @@ msgstr "" msgid "Value" msgstr "قدر" +msgid "File" +msgstr "فائل" + +msgid "Image" +msgstr "تصویر" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1549,6 +1583,46 @@ msgstr "" msgid "an error occurred loading working lists" msgstr "" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "" @@ -1564,13 +1638,120 @@ msgstr "" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" +msgstr[1] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" +msgstr[1] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" +msgstr[1] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" +msgstr[1] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1582,6 +1763,14 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" +msgstr[1] "" + +msgid "Deselect all" +msgstr "سب کو منتخب کریں" + msgid "Update view" msgstr "" diff --git a/i18n/uz_UZ_Cyrl.po b/i18n/uz_UZ_Cyrl.po index a397b0df49..df5e775c4a 100644 --- a/i18n/uz_UZ_Cyrl.po +++ b/i18n/uz_UZ_Cyrl.po @@ -1,11 +1,12 @@ # # Translators: +# Philip Larsen Donnelly, 2024 # Khurshid Ibatov , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-11-07T11:57:59.094Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Khurshid Ibatov , 2024\n" "Language-Team: Uzbek (Cyrillic) (https://app.transifex.com/hisp-uio/teams/100509/uz@Cyrl/)\n" @@ -42,6 +43,39 @@ msgstr "" "ишлашини қўллаб қувватлайди. Ушбу версияни қайта ишлатмоқчи бўлсангиз, " "Илтимос, саҳифани янгиланг, аммо бошқа версиялар ёпилишини унутманг." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Ҳодиса/тадбирни таҳрирланг" + +msgid "New event" +msgstr "Янги ҳодиса" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Излаш" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Кўпроқ" @@ -301,9 +335,6 @@ msgstr "Ҳа, ўзгартиришлар бекор қилинсин" msgid "No, cancel" msgstr "Йўқ, бекор қилинг" -msgid "New event" -msgstr "Янги ҳодиса" - msgid "You don't have access to create an event in the current selections" msgstr "Ҳозирги танловларда ҳодиса/тадбир яратиш ҳуқуқига эга эмассиз" @@ -522,9 +553,6 @@ msgstr "" msgid "No match found" msgstr "Ҳеч нима топилмади" -msgid "Search" -msgstr "Излаш" - msgid "Clear" msgstr "Тозалаш" @@ -686,7 +714,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -866,9 +896,6 @@ msgstr "ҳодиса/тадбир" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "Ҳодиса/тадбирни таҳрирланг" - msgid "View changelog" msgstr "" @@ -906,15 +933,6 @@ msgstr "Ҳодиса/тадбирни юклаб бўлмади" msgid "Organisation unit could not be loaded" msgstr "Ташкилий бўлимни юклаб бўлмади" -msgid "Dashboard" -msgstr "Бошқарув панели" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Танланган дастур" @@ -940,6 +958,9 @@ msgstr "Юкланмоқда" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "Бўлиши мумкин бўлган нусхалар топилди" @@ -1084,7 +1105,7 @@ msgstr "" msgid "Assigned to" msgstr "Тайинланган" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1093,7 +1114,7 @@ msgstr "Таҳрирлаш" msgid "No one is assigned to this event" msgstr "Ушбу ҳодиса/тадбирга ҳеч ким бириктирилмаган" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1268,6 +1289,9 @@ msgstr "Огоҳлантириш" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Ҳодиса/тадбирни ўчириб ташлаш" @@ -1286,9 +1310,6 @@ msgstr "Ҳодиса/тадбир якунланди" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1482,10 +1503,18 @@ msgstr "" msgid "Stages and Events" msgstr "Босқичлар ва Ҳодиса/тадбирлар" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1521,6 +1550,12 @@ msgstr "" msgid "Value" msgstr "Қиймат" +msgid "File" +msgstr "Файл" + +msgid "Image" +msgstr "Расм" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1581,6 +1616,46 @@ msgstr "Маълумотларни юклаб олиш ..." msgid "an error occurred loading working lists" msgstr "ишчи рўйхатни юклашда хатолик юз берди" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Рўйхатга олинган сана" @@ -1596,13 +1671,112 @@ msgstr "Кузатиб бориш" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1614,6 +1788,13 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} танланган" + +msgid "Deselect all" +msgstr "Барча танланганни бекор қилиш" + msgid "Update view" msgstr "Янгиланган кўриниш" diff --git a/i18n/uz_UZ_Latn.po b/i18n/uz_UZ_Latn.po index cbb6637b95..26a1f06d26 100644 --- a/i18n/uz_UZ_Latn.po +++ b/i18n/uz_UZ_Latn.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" "Last-Translator: Yury Rogachev , 2024\n" "Language-Team: Uzbek (Latin) (https://app.transifex.com/hisp-uio/teams/100509/uz@Latn/)\n" @@ -44,6 +44,39 @@ msgstr "" "ishlatmoqchi boʼlsangiz, Iltimos, sahifani yangilang, ammo boshqa versiyalar" " yopilishini unutmang." +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "Hodisa/tadbirni tahrirlang" + +msgid "New event" +msgstr "Yangi hodisa" + +msgid "Active enrollments" +msgstr "" + +msgid "Completed enrollments" +msgstr "" + +msgid "Cancelled enrollments" +msgstr "" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "Izlash" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "Koʼproq" @@ -89,66 +122,6 @@ msgstr "Ushbu qiymat tasdiqlanmoqda" msgid "Async field update failed" msgstr "Аsinxron maydon yangilanishi amalga oshmadi" -msgid "A value is required" -msgstr "Qiymat talab qilinadi" - -msgid "Please provide a valid number" -msgstr "Iltimos, toʼgʼri raqamni koʼrsating" - -msgid "Please provide a valid integer" -msgstr "Iltimos, toʼgʼri butun sonni koʼrsating" - -msgid "Please provide a positive integer" -msgstr "Iltimos, butun musbat sonni koʼrsating" - -msgid "Please provide zero or a positive integer" -msgstr "Iltimos, Nol yoki butun musbat sonni koʼrsating" - -msgid "Please provide a negative integer" -msgstr "Iltimos, butun manfiy sonni koʼrsating" - -msgid "Please provide a valid date" -msgstr "Iltimos, toʼgʼri sanani koʼrsating" - -msgid "A date in the future is not allowed" -msgstr "Kelajakdagi sana qabul qilinmaydi" - -msgid "Please provide a valid date and time" -msgstr "Iltimos, tegishli sana va vaqtni koʼrsating" - -msgid "Please provide a valid time" -msgstr "Iltimos, toʼgʼri vaqtni koʼrsating" - -msgid "Please provide an integer between 0 and 100" -msgstr "" - -msgid "Please provide a valid url" -msgstr "Iltimos, haqiqiy URL manzilni koʼrsating" - -msgid "Please provide a valid email address" -msgstr "Iltimos, amaldagi ye-pochta manzilini koʼrsating" - -msgid "Please provide a valid age" -msgstr "Iltimos, toʼgʼri yoshni koʼrsating" - -msgid "Please provide a valid phone number" -msgstr "Iltimos, toʼgʼri telefon raqamini koʼrsating" - -msgid "Please provide a valid organisation unit" -msgstr "Iltimos, toʼgʼri tashkiliy boʼlimni koʼrsating" - -msgid "Please provide valid coordinates" -msgstr "Iltimos, toʼgʼri koordinatalarni koʼrsating" - -msgid "This value already exists" -msgstr "Bu qiymat allaqachon mavjud" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "Sana \"gacha\" katta boʼlishi mumkin emas sana \"dan\"" - -msgid "Checking..." -msgstr "Tekshirilmoqda..." - msgid "Area" msgstr "Maydon" @@ -161,6 +134,12 @@ msgstr "Roʼyxatga olish" msgid "Complete event" msgstr "" +msgid "A value is required" +msgstr "Qiymat talab qilinadi" + +msgid "Please provide a valid date" +msgstr "Iltimos, toʼgʼri sanani koʼrsating" + msgid "{{ stageName }} - Basic info" msgstr "" @@ -173,8 +152,8 @@ msgstr "" msgid "Please select {{categoryName}}" msgstr "" -msgid "A future date is not allowed" -msgstr "Kelajakdagi sana tanloviga ruxsat berilmaydi" +msgid "A date in the future is not allowed" +msgstr "Kelajakdagi sana qabul qilinmaydi" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "" @@ -302,9 +281,6 @@ msgstr "" msgid "No, cancel" msgstr "Yoʼq, bekor qiling" -msgid "New event" -msgstr "Yangi hodisa" - msgid "You don't have access to create an event in the current selections" msgstr "" @@ -523,9 +499,6 @@ msgstr "" msgid "No match found" msgstr "" -msgid "Search" -msgstr "Izlash" - msgid "Clear" msgstr "Tozalash" @@ -683,7 +656,9 @@ msgstr "" msgid "Add new enrollment for {{teiDisplayName}} in this program." msgstr "" -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" msgid "{{teiDisplayName}} is not enrolled in this program." @@ -858,9 +833,6 @@ msgstr "" msgid "You don't have access to edit this event" msgstr "" -msgid "Edit event" -msgstr "Hodisa/tadbirni tahrirlang" - msgid "View changelog" msgstr "" @@ -899,15 +871,6 @@ msgstr "Hodisa/tadbirni yuklab boʼlmadi" msgid "Organisation unit could not be loaded" msgstr "Tashkiliy boʼlimni yuklab boʼlmadi" -msgid "Dashboard" -msgstr "Boshqaruv paneli" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Tanlangan dastur" @@ -933,6 +896,9 @@ msgstr "Yuklanmoqda" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "" + msgid "Possible duplicates found" msgstr "Boʼlishi mumkin boʼlgan nusxalar topildi" @@ -1075,7 +1041,7 @@ msgstr "" msgid "Assigned to" msgstr "" -msgid "You don't have access to edit this assignee" +msgid "You don't have access to edit the assigned user" msgstr "" msgid "Edit" @@ -1084,7 +1050,7 @@ msgstr "Tahrirlash" msgid "No one is assigned to this event" msgstr "Ushbu hodisa/tadbirga hech kim biriktirilmagan" -msgid "You don't have access to assign an assignee" +msgid "You don't have access to assign a user to this event" msgstr "" msgid "Assign" @@ -1171,6 +1137,9 @@ msgstr "" msgid "Coordinates" msgstr "Координаталар" +msgid "Please provide valid coordinates" +msgstr "Iltimos, toʼgʼri koordinatalarni koʼrsating" + msgid "Delete polygon" msgstr "Poligon (koʼpburchak) ni oʼchirib tashlash" @@ -1258,6 +1227,9 @@ msgstr "Ogohlantirish" msgid "stage not found in rules execution" msgstr "" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "Hodisa/tadbirni oʼchirib tashlash" @@ -1276,9 +1248,6 @@ msgstr "" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1417,6 +1386,12 @@ msgstr "Rejalashtirilgan sana" msgid "Report date" msgstr "Hisobot sanasi" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "Iltimos, toʼgʼri tashkiliy boʼlimni koʼrsating" + msgid "Please select a valid event" msgstr "" @@ -1471,10 +1446,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1510,6 +1493,12 @@ msgstr "" msgid "Value" msgstr "Қиймат" +msgid "File" +msgstr "Fayl" + +msgid "Image" +msgstr "Rasm" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1570,6 +1559,46 @@ msgstr "Maʼlumotlarni yuklab olish ..." msgid "an error occurred loading working lists" msgstr "ishchi roʼyxatni yuklashda xatolik yuz berdi" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Roʼyxatga olingan sana" @@ -1585,13 +1614,112 @@ msgstr "Kuzatib borish" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1603,6 +1731,13 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "" + +msgid "Deselect all" +msgstr "Barcha tanlanganni bekor qilish" + msgid "Update view" msgstr "Yangilangan koʼrinish" @@ -1712,6 +1847,60 @@ msgstr "" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "Iltimos, toʼgʼri raqamni koʼrsating" + +msgid "Please provide a valid integer" +msgstr "Iltimos, toʼgʼri butun sonni koʼrsating" + +msgid "Please provide a positive integer" +msgstr "Iltimos, butun musbat sonni koʼrsating" + +msgid "Please provide zero or a positive integer" +msgstr "Iltimos, Nol yoki butun musbat sonni koʼrsating" + +msgid "Please provide a negative integer" +msgstr "Iltimos, butun manfiy sonni koʼrsating" + +msgid "Please provide a valid date and time" +msgstr "Iltimos, tegishli sana va vaqtni koʼrsating" + +msgid "Please provide a valid time" +msgstr "Iltimos, toʼgʼri vaqtni koʼrsating" + +msgid "Please provide an integer between 0 and 100" +msgstr "" + +msgid "Please provide a valid url" +msgstr "Iltimos, haqiqiy URL manzilni koʼrsating" + +msgid "Please provide a valid email address" +msgstr "Iltimos, amaldagi ye-pochta manzilini koʼrsating" + +msgid "Please provide a valid age" +msgstr "Iltimos, toʼgʼri yoshni koʼrsating" + +msgid "Please provide a valid phone number" +msgstr "Iltimos, toʼgʼri telefon raqamini koʼrsating" + +msgid "This value already exists" +msgstr "Bu qiymat allaqachon mavjud" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "Sana \"gacha\" katta boʼlishi mumkin emas sana \"dan\"" + +msgid "Checking..." +msgstr "Tekshirilmoqda..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Koordinatani oʼrnating" diff --git a/i18n/vi.po b/i18n/vi.po index 5ca15df651..cfabbe1272 100644 --- a/i18n/vi.po +++ b/i18n/vi.po @@ -1,16 +1,17 @@ # # Translators: # Mai Nguyen , 2024 +# Thuy Nguyen , 2024 # Viktor Varland , 2024 # Philip Larsen Donnelly, 2024 -# Thuy Nguyen , 2024 +# Em Le , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: Thuy Nguyen , 2024\n" +"Last-Translator: Em Le , 2024\n" "Language-Team: Vietnamese (https://app.transifex.com/hisp-uio/teams/100509/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -45,14 +46,47 @@ msgstr "" " Vui lòng làm mới trang này nếu bạn muốn sử dụng lại phiên bản này, nhưng " "lưu ý rằng điều này sẽ đóng các phiên bản khác." +msgid "Enrollment dashboard" +msgstr "Bảng thông tin đăng ký" + +msgid "View event" +msgstr "Xem sự kiện" + +msgid "Edit event" +msgstr "Sửa sự kiện" + +msgid "New event" +msgstr "Sự kiện mới" + +msgid "Active enrollments" +msgstr "Các đăng ký hiện tại" + +msgid "Completed enrollments" +msgstr "Các lần đăng ký đã hoàn thành" + +msgid "Cancelled enrollments" +msgstr "Các lần đăng ký bị hủy" + +msgid "{{trackedEntityName}} list" +msgstr "Danh sách {{trackedEntityName}}" + +msgid "Search" +msgstr "Tìm kiếm" + +msgid "Working List" +msgstr "Danh sách cá thể" + +msgid "Event list" +msgstr "Danh sách sự kiện" + msgid "More" msgstr "Thêm" msgid "View {{programName}} dashboard" -msgstr "" +msgstr "Xem bảng thông tin của {{programName}}" msgid "View dashboard" -msgstr "Xem bảng điều khiển" +msgstr "Xem bảng thông tin" msgid "View active enrollment" msgstr "Xem đăng ký đang hoạt động" @@ -90,66 +124,6 @@ msgstr "Giá trị này đang xác thực" msgid "Async field update failed" msgstr "Cập nhật trường không đồng bộ không thành công" -msgid "A value is required" -msgstr "Yêu cầu có giá trị" - -msgid "Please provide a valid number" -msgstr "Vui lòng cung cấp một số hợp lệ" - -msgid "Please provide a valid integer" -msgstr "Vui lòng cung cấp một số nguyên hợp lệ" - -msgid "Please provide a positive integer" -msgstr "Vui lòng cung cấp một số nguyên dương" - -msgid "Please provide zero or a positive integer" -msgstr "Vui lòng cung cấp số 0 hoặc số nguyên dương" - -msgid "Please provide a negative integer" -msgstr "Vui lòng cung cấp một số nguyên âm" - -msgid "Please provide a valid date" -msgstr "Xin vui lòng cung cấp ngày đúng" - -msgid "A date in the future is not allowed" -msgstr "Không được phép nhập ngày trong tương lai" - -msgid "Please provide a valid date and time" -msgstr "Vui lòng cung cấp ngày và giờ hợp lệ" - -msgid "Please provide a valid time" -msgstr "Vui lòng cung cấp thời gian hợp lệ" - -msgid "Please provide an integer between 0 and 100" -msgstr "" - -msgid "Please provide a valid url" -msgstr "Vui lòng cung cấp một url hợp lệ" - -msgid "Please provide a valid email address" -msgstr "Vui lòng cung cấp một địa chỉ email hợp lệ" - -msgid "Please provide a valid age" -msgstr "Vui lòng cung cấp độ tuổi hợp lệ" - -msgid "Please provide a valid phone number" -msgstr "Vui lòng cung cấp một số điện thoại hợp lệ" - -msgid "Please provide a valid organisation unit" -msgstr "Vui lòng cung cấp một đơn vị hợp lệ" - -msgid "Please provide valid coordinates" -msgstr "Vui lòng cung cấp tọa độ hợp lệ" - -msgid "This value already exists" -msgstr "Giá trị này đã tồn tại" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "\"Từ\" không được lớn hơn \"Tới\"" - -msgid "Checking..." -msgstr "Đang kiểm tra ..." - msgid "Area" msgstr "Khu vực" @@ -157,31 +131,37 @@ msgid "Coordinate" msgstr "Tọa độ" msgid "Enrollment" -msgstr "Đăng ký" +msgstr "Ghi danh" msgid "Complete event" msgstr "Hoàn tất chương trình" +msgid "A value is required" +msgstr "Yêu cầu có giá trị" + +msgid "Please provide a valid date" +msgstr "Xin vui lòng cung cấp ngày đúng" + msgid "{{ stageName }} - Basic info" -msgstr "" +msgstr "{{ stageName }}- Thông tin cơ bản" msgid "{{ stageName }} - Assignee" -msgstr "" +msgstr "{{ stageName }}- Cấp cho" msgid "{{ stageName }} - Status" -msgstr "" +msgstr "{{ stageName }}-Tình trạng" msgid "Please select {{categoryName}}" -msgstr "" +msgstr "Hãy chọn {{categoryName}}" -msgid "A future date is not allowed" -msgstr "Ngày tương lai không được phép" +msgid "A date in the future is not allowed" +msgstr "Không được phép nhập ngày trong tương lai" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." -msgstr "" +msgstr "Lưu một lần tham gia mới trong {{programName}}tại {{orgUnitName}}" msgid "Saving a {{trackedEntityName}} in {{programName}} in {{orgUnitName}}." -msgstr "" +msgstr "Lưu một {{trackedEntityName}}trong {{programName}}tại {{orgUnitName}}" msgid "Cancel" msgstr "Hủy" @@ -190,10 +170,10 @@ msgid "Metadata error. see log for details" msgstr "Lỗi siêu dữ liệu. xem nhật ký để biết chi tiết" msgid "{{ stageName }} - Details" -msgstr "" +msgstr "{{ stageName }}- Chi tiết" msgid "{{ stageName }} - {{ sectionName }}" -msgstr "" +msgstr "{{ stageName }}-{{ sectionName }}" msgid "Assigned user" msgstr "Người dùng được chỉ định" @@ -217,7 +197,7 @@ msgid "Assignee" msgstr "Người nhận" msgid "Saving to {{programName}} in {{orgUnitName}}" -msgstr "" +msgstr "Đang lưu vào {{programName}}tại {{orgUnitName}}" msgid "" "This is not an event program or the metadata is corrupt. See log for " @@ -241,7 +221,7 @@ msgid "Completed" msgstr "Hoàn tất" msgid "Please add or cancel note before saving the event" -msgstr "" +msgstr "Hãy thêm hoặc hủy ghi chú trước khi lưu sự kiện" msgid "Save and add another" msgstr "Lưu và thêm sự kiện khác" @@ -253,7 +233,7 @@ msgid "Finish" msgstr "Hoàn tất" msgid "Save without completing" -msgstr "" +msgstr "Lưu nhưng không hoàn thành" msgid "Complete" msgstr "Hoàn tất" @@ -262,7 +242,7 @@ msgid "No write access" msgstr "Không có quyền viết" msgid "New {{titleText}}" -msgstr "" +msgstr "{{titleText}}mới" msgid "Switch to form view" msgstr "Chuyển sang xem biểu nhập" @@ -296,16 +276,13 @@ msgstr "" "mới" msgid "Yes, discard changes" -msgstr "" +msgstr "Có, hủy các thay đổi" msgid "No, cancel" msgstr "Không" -msgid "New event" -msgstr "Sự kiện mới" - msgid "You don't have access to create an event in the current selections" -msgstr "" +msgstr "Bạn không có quyền tạo một sự kiện cho các lựa chọn hiện tại" msgid "Save" msgstr "Lưu lại" @@ -327,31 +304,31 @@ msgid "An error has occurred. See log for details" msgstr "Một lỗi đã xảy ra. Xem nhật ký để biết chi tiết" msgid "{{programStageName}} completed" -msgstr "" +msgstr "{{programStageName}} đã hoàn thành" msgid "" "Would you like to complete the enrollment and all active events as well?" -msgstr "" +msgstr "Bạn có muốn hoàn thành kỳ đăng ký và tất cả sự kiện hiện tại?" msgid "{{count}} event in {{programStageName}}" msgid_plural "{{count}} event in {{programStageName}}" -msgstr[0] "" +msgstr[0] "{{count}}sự kiện trong {{programStageName}}" msgid "Yes, complete enrollment and events" -msgstr "" +msgstr "Có, hoàn thành kỳ đăng ký và các sự kiện" msgid "Complete enrollment only" -msgstr "" +msgstr "Chỉ hoàn thành kỳ đăng ký" msgid "Would you like to complete the enrollment?" -msgstr "" +msgstr "Bạn có muốn hoàn thành kỳ đăng ký?" msgid "Complete enrollment" -msgstr "Hoàn tất đăng ký" +msgstr "Hoàn thành đăng ký" msgid "A duplicate exists (but there were some errors, see log for details" msgstr "" -"Tồn tại một bản sao nhưng có một số lỗi, hãy xem nhật ký để biết chi tiết" +"Tồn tại một bản sao (nhưng có một số lỗi, hãy xem nhật ký để biết chi tiết)" msgid "" "An item with this {{attributeName}} is already registered, but you don't " @@ -378,10 +355,10 @@ msgid "validation failed" msgstr "xác thực không thành công" msgid "No feedback for this event yet" -msgstr "" +msgstr "Chưa có phản hồi cho sự kiện này" msgid "No indicator output for this event yet" -msgstr "" +msgstr "Chưa có giá trị chỉ số cho sự kiện này" msgid "Generate new event" msgstr "Tạo sự kiện mới" @@ -390,7 +367,7 @@ msgid "Do you want to create another event?" msgstr "Bạn có muốn tạo một sự kiện khác không?" msgid "Yes, create new event" -msgstr "" +msgstr "Có, tạo sự kiện mới" msgid "Back to form" msgstr "Quay lại biểu mẫu" @@ -417,6 +394,9 @@ msgid "" "This event has unsaved changes. Leaving this page without saving will lose " "these changes. Are you sure you want to discard unsaved changes?" msgstr "" +"Sự kiện này có những thay đổi chưa lưu. Việc rời khỏi trang này mà không lưu" +" sẽ mất những thay đổi này. Bạn có chắc chắn muốn hủy những thay đổi chưa " +"lưu không?" msgid "No events to display" msgstr "Không có sự kiện để hiển thị" @@ -446,13 +426,13 @@ msgid "to" msgstr "thành" msgid "Days in the future" -msgstr "" +msgstr "Ngày ở tương lai" msgid "From" msgstr "Từ" msgid "Days in the past" -msgstr "" +msgstr "Ngày trong quá khứ" msgid "To" msgstr "Đến" @@ -476,10 +456,10 @@ msgid "Last 3 months" msgstr "3 tháng trước" msgid "Absolute range" -msgstr "" +msgstr "Phạm vi tuyệt đối" msgid "Relative range" -msgstr "" +msgstr "Phạm vi tương đối" msgid "Max" msgstr "Lớn nhất" @@ -506,7 +486,7 @@ msgid "Select file" msgstr "Chọn tập tin" msgid "No" -msgstr "Sai" +msgstr "Không" msgid "Uploading image" msgstr "Đang tải ảnh lên" @@ -515,13 +495,10 @@ msgid "Select image" msgstr "Chọn ảnh" msgid "Type to filter options" -msgstr "" +msgstr "Nhập để lọc tùy chọn" msgid "No match found" -msgstr "" - -msgid "Search" -msgstr "Tìm kiếm" +msgstr "Không tìm thấy kết quả phù hợp" msgid "Clear" msgstr "Xóa" @@ -536,7 +513,7 @@ msgid "URL" msgstr "Đường dẫn URL" msgid "Icon for {{field}}" -msgstr "" +msgstr "Biểu tượng cho {{field}}" msgid "start typing to search" msgstr "bắt đầu nhập để tìm kiếm" @@ -566,10 +543,10 @@ msgid "Update" msgstr "Cập nhật" msgid "Reset filter" -msgstr "" +msgstr "Làm mới bộ lọc" msgid "Remove filter" -msgstr "" +msgstr "Xóa bộ lọc" msgid "{{fromDate}} to {{toDate}}" msgstr "{{fromDate}} đến {{toDate}}" @@ -590,10 +567,10 @@ msgid "More filters" msgstr "Thêm bộ lọc" msgid "Stage filters" -msgstr "" +msgstr "Lọc trong phân đoạn" msgid "Rows per page" -msgstr "Dòng mỗi trang" +msgstr "Số dòng mỗi trang" msgid "Could not get organisation unit" msgstr "Không thể lấy đơn vị" @@ -602,127 +579,136 @@ msgid "Program doesn't exist" msgstr "Chương trình không tồn tại" msgid "Selected program is invalid for selected organisation unit" -msgstr "" +msgstr "Chương trình được chọn không hợp lệ cho đơn vị được chọn" msgid "Add note" msgstr "Thêm ghi chú" msgid "You don't have access to write notes" -msgstr "" +msgstr "Bạn không có quyền thêm ghi chú" msgid "Write note" -msgstr "" +msgstr "Ghi chú" msgid "was blanked out and hidden by your last action" -msgstr "" +msgstr "đã bị xóa và ẩn đi bởi hành động cuối cùng của bạn" msgid "Notice" -msgstr "" +msgstr "Thông báo" msgid "Close the notice" -msgstr "" +msgstr "Đóng thông báo" msgid "Enrollment with id \"{{enrollmentId}}\" does not exist" -msgstr "" +msgstr "Đăng ký với mã id \"{{enrollmentId}}\" không tồn tại" msgid "Tracked entity instance with id \"{{teiId}}\" does not exist" -msgstr "" +msgstr "Cá thể với mã id \"{{teiId}}\" không tồn tại" msgid "Program with id \"{{programId}}\" does not exist" -msgstr "" +msgstr "Chương trình với mã id \"{{programId}}\" không tồn tại" msgid "" "An error occurred while fetching enrollments. Please enter a valid url." -msgstr "" +msgstr "Có lỗi khi tải thông tin đăng ký. Hãy nhập một URL hợp lệ" msgid "No feedback for this enrollment yet" -msgstr "" +msgstr "Chưa có phản hồi cho đăng ký này" msgid "No indicator output for this enrollment yet" -msgstr "" +msgstr "Chưa có giá trị chỉ số cho sự kiện này" msgid "Quick actions" -msgstr "" +msgstr "Hành động nhanh" msgid "New Event" -msgstr "" +msgstr "Sự kiện mới" msgid "Schedule an event" -msgstr "" +msgstr "Đặt lịch một sự kiện" msgid "Make referral" -msgstr "Tạo tham chiếu" +msgstr "Tạo chuyển tuyến" msgid "No available program stages" -msgstr "" +msgstr "Không có giai đoạn chương trình nào" msgid "Program stage not found" -msgstr "" +msgstr "Không tìm thấy giai đoạn chương trình" msgid "" "Choose a program to add new or see existing enrollments for " "{{teiDisplayName}}" msgstr "" +"Chọn một chương trình để thêm hoặc xem những đăng ký cho {{teiDisplayName}}" msgid "" "{{programName}} has categories. Choose all categories to view dashboard." msgstr "" +"{{programName}}có phân tổ. Hãy chọn tất cả phân tổ để xem Bảng thông tin của" +" chương trình này." msgid "Invalid enrollment id {{enrollmentId}}." -msgstr "" +msgstr "Đăng ký có mã id {{enrollmentId}}không hợp lệ." msgid "Choose an enrollment to view the dashboard." -msgstr "" +msgstr "Chọn một Đăng ký để xem Bảng thông tin" msgid "There are no active enrollments." -msgstr "" +msgstr "Không có đăng ký nào đang hoạt động." msgid "Add new enrollment for {{teiDisplayName}} in this program." -msgstr "" +msgstr "Thêm một đăng ký mới cho {{teiDisplayName}}vào chương trình này." -msgid "No access to program owner." +msgid "" +"You do not have permissions to access to this program, registering unit or " +"record, contact your administrator for more information." msgstr "" +"Bạn không có quyền truy cập vào chương trình này, đơn vị đăng ký hoặc hồ sơ," +" hãy liên hệ với người quản lý của bạn để biết thêm thông tin." msgid "{{teiDisplayName}} is not enrolled in this program." -msgstr "" +msgstr "{{teiDisplayName}}không có đăng ký tham gia vào chương trình này." msgid "Enroll {{teiDisplayName}} in this program." -msgstr "" +msgstr "Đăng ký {{teiDisplayName}}vào chương trình này." msgid "" "{{teiDisplayName}} is a {{tetName}} and cannot be enrolled in the " "{{programName}}. Choose another program that allows {{tetName}} enrollment. " msgstr "" +"{{teiDisplayName}}là một {{tetName}}và không thể đăng ký vào " +"{{programName}}. Chọn một chương trình khác cho phép {{tetName}}đăng ký." msgid "Enroll a new {{selectedTetName}} in this program." -msgstr "" +msgstr "Đăng ký một {{selectedTetName}}mới vào chương trình này." msgid "{{programName}} is an event program and does not have enrollments." -msgstr "" +msgstr "{{programName}}là chương trình sự kiện và không có phần đăng ký." msgid "Create a new event in this program." -msgstr "" +msgstr "Tạo một sự kiện mới trong chương trình này." msgid "View working list in this program." -msgstr "" +msgstr "Xem danh sách cá thể trong chương trình này." msgid "Page is missing required values from URL" -msgstr "" +msgstr "Trang này đang thiếu giá trị bắt buộc từ URL" msgid "Org unit is not valid with current program" -msgstr "" +msgstr "Đơn vị không hợp lệ cho chương trình hiện tại" msgid "There was an error opening the Page" -msgstr "" +msgstr "Có lỗi khi mở trang" msgid "There was an error loading the page" -msgstr "" +msgstr "Có lỗi khi tải trang" msgid "Choose an organisation unit to start reporting" -msgstr "" +msgstr "Chọn một đơn vị để bắt đầu báo cáo" msgid "Program stage is invalid" -msgstr "" +msgstr "Giai đoạn chương trình không hợp lệ" msgid "Report" msgstr "Báo cáo" @@ -734,16 +720,16 @@ msgid "Refer" msgstr "Tham chiếu" msgid "You can't add any more {{ programStageName }} events" -msgstr "" +msgstr "Bạn không thể thêm sự kiện vào {{ programStageName }}" msgid "Cancel without saving" -msgstr "" +msgstr "Hủy và không lưu" msgid "Choose a stage for a new event" -msgstr "" +msgstr "Chọn giai đoạn cho sự kiện mới" msgid "Program Stages could not be loaded" -msgstr "" +msgstr "Không thể tải giai đoạn chương trình" msgid "Stage" msgstr "Giai Đoạn Chương Trình" @@ -755,48 +741,52 @@ msgid "" "The category option is not valid for the selected organisation unit. Please " "select a valid combination." msgstr "" +"Phân tổ tùy chọn này không hợp lệ cho đơn vị được chọn. Hãy chọn một phân tổ" +" phù hợp." msgid "Please select {{category}}." -msgstr "" +msgstr "Hãy chọn {{category}}" msgid "Or see all records accessible to you in {{program}} " -msgstr "" +msgstr "Hoặc xem tất cả các dữ liệu bạn được quyền xem trong {{program}}" msgid "Or see all events accessible to you in {{program}}" -msgstr "" +msgstr "Hoặc xem tất cả các sự kiện bạn quyền xem trong {{program}}" msgid "Please select an organisation unit." -msgstr "" +msgstr "Hãy chọn một đơn vị" msgid "" "You don't have access to create a {{trackedEntityName}} in the current " "selections" -msgstr "" +msgstr "Bạn không có quyền tạo một {{trackedEntityName}}cho lựa chọn hiện tại" msgid "Choose the {{missingCategories}} to start reporting" msgstr "Chọn {{missingCategories}} để bắt đầu báo cáo" msgid "Save as new" -msgstr "" +msgstr "Lưu mới" msgid "New" msgstr "Mới" msgid "Create for" -msgstr "" +msgstr "Tạo cho" msgid "" "You can also choose a program from the top bar and create in that program" msgstr "" +"Bạn có thể chọn một chương trình từ thanh trên cùng và tạo trong chương " +"trình đó" msgid "New Enrollment in program{{escape}} {{programName}}" -msgstr "" +msgstr "Đăng ký mới trong chương trình {{escape}}{{programName}}" msgid "Save {{trackedEntityTypeName}}" -msgstr "" +msgstr "Lưu {{trackedEntityTypeName}}" msgid "Save {{trackedEntityName}}" -msgstr "" +msgstr "Lưu {{trackedEntityName}}" msgid "Save new {{trackedEntityTypeName}} and link" msgstr "Lưu {{trackedEntityTypeName}} mới và liên kết" @@ -805,7 +795,7 @@ msgid "Link" msgstr "Liên kết" msgid "Save as new {{trackedEntityName}}" -msgstr "" +msgstr "Lưu {{trackedEntityName}}mới" msgid "Some programs are being filtered." msgstr "Chương trình đang được lọc" @@ -853,13 +843,10 @@ msgid "event" msgstr "sự kiện" msgid "You don't have access to edit this event" -msgstr "" - -msgid "Edit event" -msgstr "Sửa sự kiện" +msgstr "Bạn không có quyền chỉnh sửa sự kiện này" msgid "View changelog" -msgstr "" +msgstr "Xem những thay đổi" msgid "Event details" msgstr "Chi tiết sự kiện" @@ -895,15 +882,6 @@ msgstr "Không thể tải sự kiện" msgid "Organisation unit could not be loaded" msgstr "Không thể tải đơn vị" -msgid "Dashboard" -msgstr "Bảng điều khiển" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "Chương trình đã chọn" @@ -915,64 +893,67 @@ msgstr "Tìm kiếm theo thuộc tính" msgid "Fill in at least {{count}} attribute to search" msgid_plural "Fill in at least {{count}} attribute to search" -msgstr[0] "" +msgstr[0] "Nhập vào ít nhất {{count}}thuộc tính để tìm kiếm" msgid "Could not retrieve metadata. Please try again later." -msgstr "" +msgstr "Không thể lấy thông tin dữ liệu mô tả. Hãy thử lại sau." msgid "The enrollment event data could not be found" -msgstr "" +msgstr "Không tìm được dữ liệu sự kiện đã đăng ký." msgid "Loading" msgstr "Đang tải" msgid "An error occurred while loading the form" -msgstr "" +msgstr "Có lỗi khi tải biểu nhập" + +msgid "Back to all stages and events" +msgstr "Quay trở lại tất cả giai đoạn và sự kiện" msgid "Possible duplicates found" -msgstr "Có thể tìm thấy các bản sao" +msgstr "Có thể tìm thấy các dữ liệu trùng" msgid "An error occurred loading possible duplicates" -msgstr "" +msgstr "Có lỗi khi tải các dữ liệu có khả năng trùng" msgid "You don't have access to delete this relationship" -msgstr "" +msgstr "Bạn không có quyền để xóa quan hệ này" msgid "You don't have access to create any relationships" -msgstr "" +msgstr "Bạn không có quyền để tạo quan hệ" msgid "Add relationship" msgstr "Thêm Quan Hệ" msgid "No results found for " -msgstr "" +msgstr "Không tìm thấy kết quả cho" msgid "Choose an organisation unit" -msgstr "" +msgstr "Chọn một đơn vị" msgid "Clear selection" -msgstr "" +msgstr "Bỏ chọn" msgid "No programs available." msgstr "Không có chương trình" msgid "Search for a program" -msgstr "" +msgstr "Tìm kiếm một chương trình" msgid "Some programs are being filtered by the chosen organisation unit" -msgstr "" +msgstr "Một vài chương trình đang được lọc bởi đơn vị được chọn" msgid "Show all programs" -msgstr "" +msgstr "Hiện tất cả chương trình" msgid "Choose a program" -msgstr "" +msgstr "Chọn một chương trình" msgid "Search for {{titleText}}" -msgstr "" +msgstr "Tìm cho {{titleText}}" msgid "Search for" -msgstr "Tìm" +msgstr "Tìm cho" msgid "" "You can also choose a program from the top bar and search in that program" @@ -987,10 +968,10 @@ msgid "Search {{name}}" msgstr "Tim kiêm {{name}}" msgid "Search by {{name}}" -msgstr "" +msgstr "Tìm bởi {{name}}" msgid "all programs" -msgstr "" +msgstr "tất cả chương trình" msgid "" "Not finding the results you were looking for? Try to search all programs " @@ -1003,21 +984,23 @@ msgid "Search in all programs" msgstr "Tìm kiếm trong tất cả các chương trình" msgid "If none of search results match, you can create a new " -msgstr "" +msgstr "Nếu không tìm thấy, bạn có thể tạo mới" msgid "Create new" msgstr "Tạo mới" msgid "Fill in these fields to search{{escape}} {{ searchableAttributes }}" -msgstr "" +msgstr "Điền vào các ô để tìm kiếm{{escape}}{{ searchableAttributes }}" msgid "" "Fill in at least {{minAttributesRequiredToSearch}} of these fields to " "search{{escape}} {{searchableAttributes}}" msgstr "" +"Điền vào ít nhất {{minAttributesRequiredToSearch}}ô để tìm tìm kiếm " +"{{escape}}{{searchableAttributes}}" msgid "Fill in this field to search{{escape}} {{searchableAttributes}}" -msgstr "" +msgstr "Điền vào ô này để tìm kiếm {{escape}}{{searchableAttributes}}" msgid "" "You can change your search terms and search again to find what you are " @@ -1036,45 +1019,49 @@ msgid "Too many results" msgstr "Quá nhiều kết quả" msgid "Cannot search in all programs" -msgstr "" +msgstr "Không thể tìm trong tất cả chương trình" msgid "Missing search criteria" -msgstr "" +msgstr "Tiêu chí tìm kiếm bị thiếu" msgid "Results found" msgstr "Kết quả tìm thấy" msgid "Saved lists in this program" -msgstr "" +msgstr "Lưu danh sách trong chương trình này" msgid "Saved lists offer quick access to your most used views in a program." msgstr "" +"Danh sách đã lưu cung cấp quyền truy cập nhanh vào các chế độ xem được sử " +"dụng nhiều nhất trong một chương trình." msgid "" "There are no saved lists in this program yet, create one using the button " "below." msgstr "" +"Chương trình này chưa có danh sách nào được lưu, hãy tạo một danh sách bằng " +"nút bên dưới." msgid "Create saved list" -msgstr "" +msgstr "Tạo danh sách đã lưu" msgid "Create new in another program" -msgstr "" +msgstr "Tạo mới trong một chương trình khác" msgid "Create new event" msgstr "Tạo Sự Kiện mới" msgid "Search for a {{trackedEntityName}} in {{programName}}" -msgstr "" +msgstr "Tìm kiếm {{trackedEntityName}}trong {{programName}}" msgid "No tracked entity types available" -msgstr "" +msgstr "Không có loại cá thể khả dụng" msgid "Assigned to" msgstr "Đã gán cho" -msgid "You don't have access to edit this assignee" -msgstr "" +msgid "You don't have access to edit the assigned user" +msgstr "Bạn không có quyền thay đổi người dùng được gán" msgid "Edit" msgstr "Chỉnh sửa" @@ -1082,8 +1069,8 @@ msgstr "Chỉnh sửa" msgid "No one is assigned to this event" msgstr "Không ai được chỉ định cho sự kiện này" -msgid "You don't have access to assign an assignee" -msgstr "" +msgid "You don't have access to assign a user to this event" +msgstr "Bạn không có quyền gán người dùng cho sự kiện này." msgid "Assign" msgstr "Gán" @@ -1092,44 +1079,48 @@ msgid "This program is protected" msgstr "Chương trình này đã được bảo vệ" msgid "Reason to check for enrollments" -msgstr "" +msgstr "Lý do để kiểm tra các đăng ký" msgid "" "Describe the reason you are checking for enrollments in this protected " "program" msgstr "" +"Mô tả lý do bạn phải kiểm tra các đăng ký trong chương trình được bảo vệ " +"này." msgid "Check for enrollments" -msgstr "" +msgstr "Kiểm tra đăng ký" msgid "" "You must provide a reason to check for enrollments in this protected " "program. All activity will be logged." msgstr "" +"Bạn phải cung cấp lý do kiểm tra các đăng ký trong chương trình được bảo vệ " +"này. Tất cả hoạt động đều được ghi lại." msgid "Enrollment actions" -msgstr "" +msgstr "Hành động đăng ký" msgid "We are processing your request." -msgstr "" +msgstr "Chúng tôi đang xử lý yêu cầu của bạn." msgid "Only one enrollment per {{tetName}} is allowed in this program" -msgstr "" +msgstr "Chỉ một đăng ký được phép cho {{tetName}} trong chương trình này." msgid "Add new" msgstr "Thêm mới" msgid "Reactivate" -msgstr "" +msgstr "Kích hoạt lại" msgid "Mark as cancelled" -msgstr "" +msgstr "Đánh dấu là đã hủy" msgid "Mark incomplete" -msgstr "" +msgstr "Đánh dấu là chưa hoàn thành" msgid "You do not have access to delete this enrollment" -msgstr "" +msgstr "Bạn không có quyền xóa đăng ký này" msgid "Delete enrollment" msgstr "Xóa đăng ký" @@ -1138,12 +1129,14 @@ msgid "" "Are you sure you want to delete this enrollment? This will permanently " "remove the current enrollment." msgstr "" +"Bạn có chắc muốn xóa đăng ký này? Đăng ký này sẽ bị xóa vĩnh viễn, không thể" +" khôi phục lại." msgid "Yes, delete enrollment." -msgstr "" +msgstr "Có, xóa đăng ký." msgid "Remove mark for follow-up" -msgstr "" +msgstr "Xóa đánh dấu để theo dõi" msgid "Mark for follow-up" msgstr "Đánh dấu để theo-dõi" @@ -1152,10 +1145,11 @@ msgid "Transfer" msgstr "Chuyển" msgid "An error occurred while transferring ownership" -msgstr "" +msgstr "Lỗi khi chuyển sở hữu" msgid "Existing dates for auto-generated events will not be updated." msgstr "" +"Ngày hiện tại cho các sự kiện được tạo tự động sẽ không được cập nhật." msgid "Latitude" msgstr "Vĩ độ" @@ -1164,19 +1158,22 @@ msgid "Longitude" msgstr "Kinh độ" msgid "Set coordinates" -msgstr "" +msgstr "Đặt tọa độ" msgid "Coordinates" msgstr "Toạ độ" +msgid "Please provide valid coordinates" +msgstr "Vui lòng cung cấp tọa độ hợp lệ" + msgid "Delete polygon" msgstr "Xóa đa giác" msgid "Close without saving" -msgstr "" +msgstr "Đóng không cần lưu" msgid "Finish drawing before saving" -msgstr "" +msgstr "Hoàn thành bản vẽ trước khi lưu" msgid "Set area" msgstr "Đặt khu vực" @@ -1185,67 +1182,69 @@ msgid "" "Transferring enrollment ownership from {{ownerOrgUnit}} to " "{{newOrgUnit}}{{escape}}" msgstr "" +"Chuyển sở hữu đăng ký từ {{ownerOrgUnit}}sang {{newOrgUnit}}{{escape}}" msgid "" "You will lose access to the enrollment when transferring ownership to " "{{organisationUnit}}." msgstr "" +"Bạn sẽ mất quyền truy cập khi chuyển quyền sở hữu sang{{organisationUnit}}" msgid "Transfer Ownership" -msgstr "" +msgstr "Chuyển Sở Hữu" msgid "" "Choose the organisation unit to which enrollment ownership should be " "transferred." -msgstr "" +msgstr "Chọn đơn vị cần chuyển sở hữu đăng ký sang." msgid "Enrollment date" -msgstr "Ngày ghi vào" +msgstr "Ngày đăng ký" msgid "Incident date" -msgstr "Ngày đến" +msgstr "Ngày xảy ra" msgid "Enrollment widget could not be loaded. Please try again later" -msgstr "" +msgstr "Không thể tải tiện ích đăng ký. Vui lòng thử lại sau" msgid "Follow-up" msgstr "Theo dõi sau" msgid "Started at{{escape}}" -msgstr "" +msgstr "Bắt đầu tại {{escape}}" msgid "Owned by{{escape}}" -msgstr "" +msgstr "Sở hữu bởi {{escape}}" msgid "Cancelled" msgstr "Đã hủy" msgid "Add coordinates" -msgstr "" +msgstr "Thêm tọa độ" msgid "Add area" -msgstr "" +msgstr "Thêm khu vực" msgid "Please add or cancel the note before saving the event" -msgstr "" +msgstr "Hãy thêm hoặc hủy ghi chú trước khi lưu sự kiện" msgid "organisation unit could not be retrieved. Please try again later." -msgstr "" +msgstr "không thể lấy lại đơn vị. Hãy thử lại sau" msgid "Saving to {{stageName}} for {{programName}} in {{orgUnitName}}" -msgstr "" +msgstr "Lưu vào {{stageName}}cho {{programName}}trong {{orgUnitName}}" msgid "program or stage is invalid" -msgstr "" +msgstr "giai đoạn chương trình không hợp lệ" msgid "Notes about this enrollment" -msgstr "" +msgstr "Ghi chú về đăng ký này" msgid "Write a note about this enrollment" -msgstr "" +msgstr "Viết một ghi chú cho đăng ký này" msgid "This enrollment doesn't have any notes" -msgstr "" +msgstr "Đăng ký này không có ghi chú nào" msgid "Error" msgstr "Lỗi" @@ -1254,13 +1253,16 @@ msgid "Warning" msgstr "Cảnh báo" msgid "stage not found in rules execution" -msgstr "" +msgstr "giai đoạn không tìm thấy trong thực hiện quy tắc" + +msgid "Please provide an valid organisation unit" +msgstr "Vui lòng cung cấp đơn vị hợp lệ" msgid "Delete event" msgstr "Xóa sự kiện" msgid "Yes, delete event" -msgstr "" +msgstr "Có, xóa sự kiện" msgid "Go to “Schedule” tab to reschedule this event" msgstr "" @@ -1274,9 +1276,6 @@ msgstr "Sự kiện đã hoàn tất" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "" - msgid "Notes about this event" msgstr "" @@ -1302,10 +1301,10 @@ msgid_plural "" msgstr[0] "" msgid "after" -msgstr "" +msgstr "sau" msgid "before" -msgstr "" +msgstr "trước" msgid "There are {{count}} scheduled event in {{orgUnitName}} on this day." msgid_plural "" @@ -1415,6 +1414,12 @@ msgstr "Ngày đã hẹn" msgid "Report date" msgstr "Ngày báo cáo" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "Vui lòng cung cấp một đơn vị hợp lệ" + msgid "Please select a valid event" msgstr "" @@ -1469,10 +1474,18 @@ msgstr "" msgid "Stages and Events" msgstr "" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1508,6 +1521,12 @@ msgstr "" msgid "Value" msgstr "Giá trị" +msgid "File" +msgstr "Tập tin" + +msgid "Image" +msgstr "Hình ảnh" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1568,6 +1587,46 @@ msgstr "Tải xuống dữ liệu ..." msgid "an error occurred loading working lists" msgstr "đã xảy ra lỗi khi tải danh sách làm việc" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "Một lỗi không xác định đã xuất hiện." + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "Ngày đăng ký" @@ -1583,13 +1642,112 @@ msgstr "Theo dõi" msgid "Choose a program stage to filter by {{label}}" msgstr "" -msgid "Active enrollments" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." msgstr "" -msgid "Completed enrollments" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." msgstr "" -msgid "Cancelled enrollments" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" msgstr "" msgid "Working list could not be updated" @@ -1601,6 +1759,13 @@ msgstr "" msgid "an error occurred loading Tracked entity instance lists" msgstr "" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "Đã chọn {{count}}" + +msgid "Deselect all" +msgstr "Bỏ chọn tất cả" + msgid "Update view" msgstr "Cập nhật chế độ xem" @@ -1709,6 +1874,60 @@ msgstr "" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "Vui lòng cung cấp một số hợp lệ" + +msgid "Please provide a valid integer" +msgstr "Vui lòng cung cấp một số nguyên hợp lệ" + +msgid "Please provide a positive integer" +msgstr "Vui lòng cung cấp một số nguyên dương" + +msgid "Please provide zero or a positive integer" +msgstr "Vui lòng cung cấp số 0 hoặc số nguyên dương" + +msgid "Please provide a negative integer" +msgstr "Vui lòng cung cấp một số nguyên âm" + +msgid "Please provide a valid date and time" +msgstr "Vui lòng cung cấp ngày và giờ hợp lệ" + +msgid "Please provide a valid time" +msgstr "Vui lòng cung cấp thời gian hợp lệ" + +msgid "Please provide an integer between 0 and 100" +msgstr "Hãy nhập giá trị số nguyên giữa 0 và 100" + +msgid "Please provide a valid url" +msgstr "Vui lòng cung cấp một url hợp lệ" + +msgid "Please provide a valid email address" +msgstr "Vui lòng cung cấp một địa chỉ email hợp lệ" + +msgid "Please provide a valid age" +msgstr "Vui lòng cung cấp độ tuổi hợp lệ" + +msgid "Please provide a valid phone number" +msgstr "Vui lòng cung cấp một số điện thoại hợp lệ" + +msgid "This value already exists" +msgstr "Giá trị này đã tồn tại" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "\"Từ\" không được lớn hơn \"Tới\"" + +msgid "Checking..." +msgstr "Đang kiểm tra ..." + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "Đặt tọa độ" diff --git a/i18n/zh.po b/i18n/zh.po index 68c558db1b..7d141be381 100644 --- a/i18n/zh.po +++ b/i18n/zh.po @@ -1,16 +1,16 @@ # # Translators: # Philip Larsen Donnelly, 2024 -# 晓东 林 <13981924470@126.com>, 2024 -# Viktor Varland , 2024 # easylin , 2024 +# Viktor Varland , 2024 +# 晓东 林 <13981924470@126.com>, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: easylin , 2024\n" +"Last-Translator: 晓东 林 <13981924470@126.com>, 2024\n" "Language-Team: Chinese (https://app.transifex.com/hisp-uio/teams/100509/zh/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -41,6 +41,39 @@ msgstr "" "您在同一域中打开了另一个版本的Capture App。当前,Capture " "App仅支持同时运行一个版本(在同一域中)。如果您想再次使用此版本,请刷新此页面,但是请注意,它将关闭其他版本。" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "编辑事件" + +msgid "New event" +msgstr "新事件" + +msgid "Active enrollments" +msgstr "活跃注册" + +msgid "Completed enrollments" +msgstr "完成注册" + +msgid "Cancelled enrollments" +msgstr "取消注册" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "搜索" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "更多" @@ -86,66 +119,6 @@ msgstr "值正在被验证" msgid "Async field update failed" msgstr "异步字段更新失败" -msgid "A value is required" -msgstr "需要一个值" - -msgid "Please provide a valid number" -msgstr "请提供一个有效的数字" - -msgid "Please provide a valid integer" -msgstr "请提供一个整数" - -msgid "Please provide a positive integer" -msgstr "提供一个正整数" - -msgid "Please provide zero or a positive integer" -msgstr "0或负整数" - -msgid "Please provide a negative integer" -msgstr "负整数" - -msgid "Please provide a valid date" -msgstr "请提供有效的日期" - -msgid "A date in the future is not allowed" -msgstr "不允许将来的日期" - -msgid "Please provide a valid date and time" -msgstr "日期和时间" - -msgid "Please provide a valid time" -msgstr "有效的时间" - -msgid "Please provide an integer between 0 and 100" -msgstr "请提供 0 到 100 之间的整数" - -msgid "Please provide a valid url" -msgstr "请提供有效的URL" - -msgid "Please provide a valid email address" -msgstr "请提供有效的邮箱" - -msgid "Please provide a valid age" -msgstr "请提供有效年龄" - -msgid "Please provide a valid phone number" -msgstr "请提供有效的电话号码" - -msgid "Please provide a valid organisation unit" -msgstr "请提供有效的机构" - -msgid "Please provide valid coordinates" -msgstr "请提供有效坐标" - -msgid "This value already exists" -msgstr "值已经存在" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "自不能大于至" - -msgid "Checking..." -msgstr "检查" - msgid "Area" msgstr "面积" @@ -158,6 +131,12 @@ msgstr "报名" msgid "Complete event" msgstr "完成事件" +msgid "A value is required" +msgstr "需要一个值" + +msgid "Please provide a valid date" +msgstr "请提供有效的日期" + msgid "{{ stageName }} - Basic info" msgstr "{{ stageName }} - 基本信息" @@ -170,8 +149,8 @@ msgstr "{{ stageName }} - 状态" msgid "Please select {{categoryName}}" msgstr "请选择{{categoryName}}" -msgid "A future date is not allowed" -msgstr "将来的日期不允许" +msgid "A date in the future is not allowed" +msgstr "不允许将来的日期" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "在 {{orgUnitName}} 的 {{programName}} 中保存新注册。" @@ -293,9 +272,6 @@ msgstr "是的,放弃更改" msgid "No, cancel" msgstr "不,取消" -msgid "New event" -msgstr "新事件" - msgid "You don't have access to create an event in the current selections" msgstr "您无权在当前选择中创建活动" @@ -508,9 +484,6 @@ msgstr "键入过滤选项" msgid "No match found" msgstr "未找到匹配项" -msgid "Search" -msgstr "搜索" - msgid "Clear" msgstr "清除" @@ -671,7 +644,7 @@ msgstr "在此计划中为 {{teiDisplayName}} 添加新注册。" msgid "" "You do not have permissions to access to this program, registering unit or " "record, contact your administrator for more information." -msgstr "" +msgstr "您没有访问此项目、注册单元或记录的权限,请联系您的管理员获取更多信息。" msgid "{{teiDisplayName}} is not enrolled in this program." msgstr "该项目未报名{{teiDisplayName}} 。" @@ -846,9 +819,6 @@ msgstr "事件" msgid "You don't have access to edit this event" msgstr "您无权编辑此事件" -msgid "Edit event" -msgstr "编辑事件" - msgid "View changelog" msgstr "查看变更日志" @@ -884,15 +854,6 @@ msgstr "事件不能载入" msgid "Organisation unit could not be loaded" msgstr "机构不能载入" -msgid "Dashboard" -msgstr "仪表盘" - -msgid "Edit Event" -msgstr "编辑事件" - -msgid "View Event" -msgstr "查看活动" - msgid "Selected program" msgstr "选择的项目" @@ -918,6 +879,9 @@ msgstr "载入" msgid "An error occurred while loading the form" msgstr "加载表格时发生错误" +msgid "Back to all stages and events" +msgstr "回到所有阶段和事件" + msgid "Possible duplicates found" msgstr "发现可能的重复" @@ -1059,7 +1023,7 @@ msgid "Assigned to" msgstr "指派到" msgid "You don't have access to edit the assigned user" -msgstr "" +msgstr "您没有编辑已分配用户的权限" msgid "Edit" msgstr "编辑" @@ -1068,7 +1032,7 @@ msgid "No one is assigned to this event" msgstr "没有人被分配到的该事件" msgid "You don't have access to assign a user to this event" -msgstr "" +msgstr "您没有为该事件分配用户的权限" msgid "Assign" msgstr "分配" @@ -1154,6 +1118,9 @@ msgstr "设置坐标" msgid "Coordinates" msgstr "坐标" +msgid "Please provide valid coordinates" +msgstr "请提供有效坐标" + msgid "Delete polygon" msgstr "删除多边形" @@ -1241,6 +1208,9 @@ msgstr "警告" msgid "stage not found in rules execution" msgstr "在规则执行中找不到阶段" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "删除事件" @@ -1259,9 +1229,6 @@ msgstr "事件完成" msgid "The event cannot be edited after it has been completed" msgstr "事件完成后不可编辑" -msgid "Back to all stages and events" -msgstr "回到所有阶段和事件" - msgid "Notes about this event" msgstr "事件注意事项" @@ -1402,6 +1369,12 @@ msgstr "调度日期" msgid "Report date" msgstr "报告日期" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "请提供有效的机构" + msgid "Please select a valid event" msgstr "请选择一个有效的事件" @@ -1456,11 +1429,19 @@ msgstr "{{ scheduledEvents }} 已安排" msgid "Stages and Events" msgstr "阶段与活动" +msgid "View linked event" +msgstr "查看链接事件" + msgid "An error occurred while loading the widget." msgstr "加载小部件时发生错误。" -msgid "View linked event" -msgstr "查看链接事件" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" +msgstr "" msgid "Scheduled" msgstr "已经调度" @@ -1495,6 +1476,12 @@ msgstr "改变" msgid "Value" msgstr "价值" +msgid "File" +msgstr "文件" + +msgid "Image" +msgstr "图片(PNG)" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "新的 {{trackedEntityTypeName}} 关系" @@ -1555,6 +1542,46 @@ msgstr "下载数据" msgid "an error occurred loading working lists" msgstr "载入工作列表发生错误" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "出现未知错误。" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "登记日期" @@ -1570,14 +1597,113 @@ msgstr "后续跟踪" msgid "Choose a program stage to filter by {{label}}" msgstr "选择要按 {{label}} 筛选的项目阶段" -msgid "Active enrollments" -msgstr "活跃注册" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." +msgstr "" -msgid "Completed enrollments" -msgstr "完成注册" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." +msgstr "" -msgid "Cancelled enrollments" -msgstr "取消注册" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" +msgstr "" msgid "Working list could not be updated" msgstr "工作清单无法更新" @@ -1588,6 +1714,13 @@ msgstr "加载工作列表时发生错误" msgid "an error occurred loading Tracked entity instance lists" msgstr "加载跟踪的实体实例列表时出错" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "已选择 {{count}} " + +msgid "Deselect all" +msgstr "取消全选" + msgid "Update view" msgstr "更新视图" @@ -1696,6 +1829,60 @@ msgstr "编辑事件时出错,所做的更改未保存" msgid "Error updating the Assignee" msgstr "更新受托人时出错" +msgid "Please provide a valid number" +msgstr "请提供一个有效的数字" + +msgid "Please provide a valid integer" +msgstr "请提供一个整数" + +msgid "Please provide a positive integer" +msgstr "提供一个正整数" + +msgid "Please provide zero or a positive integer" +msgstr "0或负整数" + +msgid "Please provide a negative integer" +msgstr "负整数" + +msgid "Please provide a valid date and time" +msgstr "日期和时间" + +msgid "Please provide a valid time" +msgstr "有效的时间" + +msgid "Please provide an integer between 0 and 100" +msgstr "请提供 0 到 100 之间的整数" + +msgid "Please provide a valid url" +msgstr "请提供有效的URL" + +msgid "Please provide a valid email address" +msgstr "请提供有效的邮箱" + +msgid "Please provide a valid age" +msgstr "请提供有效年龄" + +msgid "Please provide a valid phone number" +msgstr "请提供有效的电话号码" + +msgid "This value already exists" +msgstr "值已经存在" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "自不能大于至" + +msgid "Checking..." +msgstr "检查" + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "设置坐标" diff --git a/i18n/zh_CN.po b/i18n/zh_CN.po index 6a0a80ee90..7748b13cf8 100644 --- a/i18n/zh_CN.po +++ b/i18n/zh_CN.po @@ -1,15 +1,15 @@ # # Translators: # Philip Larsen Donnelly, 2024 -# easylin , 2024 # 晓东 林 <13981924470@126.com>, 2024 +# easylin , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2024-10-25T18:18:11.518Z\n" +"POT-Creation-Date: 2024-12-03T10:58:18.077Z\n" "PO-Revision-Date: 2019-06-27 07:31+0000\n" -"Last-Translator: 晓东 林 <13981924470@126.com>, 2024\n" +"Last-Translator: easylin , 2024\n" "Language-Team: Chinese (China) (https://app.transifex.com/hisp-uio/teams/100509/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -40,6 +40,39 @@ msgstr "" "您在同一域中打开了另一个版本的Capture App。当前,Capture " "App仅支持同时运行一个版本(在同一域中)。如果您想再次使用此版本,请刷新此页面,但是请注意,它将关闭其他版本。" +msgid "Enrollment dashboard" +msgstr "" + +msgid "View event" +msgstr "" + +msgid "Edit event" +msgstr "编辑事件" + +msgid "New event" +msgstr "新事件" + +msgid "Active enrollments" +msgstr "活跃注册" + +msgid "Completed enrollments" +msgstr "完成注册" + +msgid "Cancelled enrollments" +msgstr "取消注册" + +msgid "{{trackedEntityName}} list" +msgstr "" + +msgid "Search" +msgstr "搜索" + +msgid "Working List" +msgstr "" + +msgid "Event list" +msgstr "" + msgid "More" msgstr "更多" @@ -85,66 +118,6 @@ msgstr "值正在被验证" msgid "Async field update failed" msgstr "异步字段更新失败" -msgid "A value is required" -msgstr "需要一个值" - -msgid "Please provide a valid number" -msgstr "请提供一个有效的数字" - -msgid "Please provide a valid integer" -msgstr "请提供一个整数" - -msgid "Please provide a positive integer" -msgstr "提供一个正整数" - -msgid "Please provide zero or a positive integer" -msgstr "0或负整数" - -msgid "Please provide a negative integer" -msgstr "负整数" - -msgid "Please provide a valid date" -msgstr "请提供有效的日期" - -msgid "A date in the future is not allowed" -msgstr "不允许将来的日期" - -msgid "Please provide a valid date and time" -msgstr "日期和时间" - -msgid "Please provide a valid time" -msgstr "有效的时间" - -msgid "Please provide an integer between 0 and 100" -msgstr "请提供 0 到 100 之间的整数" - -msgid "Please provide a valid url" -msgstr "有效的URL" - -msgid "Please provide a valid email address" -msgstr "有效的邮箱" - -msgid "Please provide a valid age" -msgstr "有效的年龄" - -msgid "Please provide a valid phone number" -msgstr "有效的电话号码" - -msgid "Please provide a valid organisation unit" -msgstr "有效的机构" - -msgid "Please provide valid coordinates" -msgstr "有效的坐标" - -msgid "This value already exists" -msgstr "值已经存在" - -msgid "\"From\" cannot be greater than \"To\"" -msgstr "自不能大于至" - -msgid "Checking..." -msgstr "检查" - msgid "Area" msgstr "面积" @@ -157,6 +130,12 @@ msgstr "报名" msgid "Complete event" msgstr "完成事件" +msgid "A value is required" +msgstr "需要一个值" + +msgid "Please provide a valid date" +msgstr "请提供有效的日期" + msgid "{{ stageName }} - Basic info" msgstr "{{ stageName }} - 基本信息" @@ -169,8 +148,8 @@ msgstr "{{ stageName }} - 状态" msgid "Please select {{categoryName}}" msgstr "请选择{{categoryName}}" -msgid "A future date is not allowed" -msgstr "将来的日期不允许" +msgid "A date in the future is not allowed" +msgstr "不允许将来的日期" msgid "Saving a new enrollment in {{programName}} in {{orgUnitName}}." msgstr "在 {{orgUnitName}} 的 {{programName}} 中保存新注册。" @@ -292,9 +271,6 @@ msgstr "是的,放弃更改" msgid "No, cancel" msgstr "不,取消" -msgid "New event" -msgstr "新事件" - msgid "You don't have access to create an event in the current selections" msgstr "您无权在当前选择中创建活动" @@ -507,9 +483,6 @@ msgstr "输入筛选选项" msgid "No match found" msgstr "未找到匹配项" -msgid "Search" -msgstr "搜索" - msgid "Clear" msgstr "清除" @@ -845,9 +818,6 @@ msgstr "事件" msgid "You don't have access to edit this event" msgstr "您无权编辑此活动" -msgid "Edit event" -msgstr "编辑事件" - msgid "View changelog" msgstr "" @@ -883,15 +853,6 @@ msgstr "事件不能载入" msgid "Organisation unit could not be loaded" msgstr "机构不能载入" -msgid "Dashboard" -msgstr "仪表盘" - -msgid "Edit Event" -msgstr "" - -msgid "View Event" -msgstr "" - msgid "Selected program" msgstr "选择的项目" @@ -917,6 +878,9 @@ msgstr "载入" msgid "An error occurred while loading the form" msgstr "" +msgid "Back to all stages and events" +msgstr "回到所有阶段和事件" + msgid "Possible duplicates found" msgstr "发现可能的重复" @@ -1153,6 +1117,9 @@ msgstr "" msgid "Coordinates" msgstr "坐标" +msgid "Please provide valid coordinates" +msgstr "有效的坐标" + msgid "Delete polygon" msgstr "删除多边形" @@ -1240,6 +1207,9 @@ msgstr "警告" msgid "stage not found in rules execution" msgstr "在规则执行中找不到阶段" +msgid "Please provide an valid organisation unit" +msgstr "" + msgid "Delete event" msgstr "删除事件" @@ -1258,9 +1228,6 @@ msgstr "事件完成" msgid "The event cannot be edited after it has been completed" msgstr "" -msgid "Back to all stages and events" -msgstr "回到所有阶段和事件" - msgid "Notes about this event" msgstr "" @@ -1399,6 +1366,12 @@ msgstr "调度日期" msgid "Report date" msgstr "报告日期" +msgid "Please enter a date" +msgstr "" + +msgid "Please provide a valid organisation unit" +msgstr "有效的机构" + msgid "Please select a valid event" msgstr "" @@ -1453,10 +1426,18 @@ msgstr "{{ scheduledEvents }} 已调度" msgid "Stages and Events" msgstr "阶段与活动" +msgid "View linked event" +msgstr "" + msgid "An error occurred while loading the widget." msgstr "" -msgid "View linked event" +msgid "Linked event" +msgstr "" + +msgid "" +"This {{stageName}} event is linked to a {{linkedStageName}} event. Review " +"the linked event details before entering data below" msgstr "" msgid "Scheduled" @@ -1492,6 +1473,12 @@ msgstr "" msgid "Value" msgstr "值" +msgid "File" +msgstr "文件" + +msgid "Image" +msgstr "图片(PNG)" + msgid "New {{trackedEntityTypeName}} relationship" msgstr "" @@ -1552,6 +1539,46 @@ msgstr "下载数据" msgid "an error occurred loading working lists" msgstr "载入工作列表发生错误" +msgid "You do not have access to complete events" +msgstr "" + +msgid "Complete events" +msgstr "" + +msgid "Are you sure you want to complete all active events in selection?" +msgstr "" + +msgid "There are no active events to complete in the current selection." +msgstr "" + +msgid "Error completing events" +msgstr "" + +msgid "There was an error completing the events." +msgstr "" + +msgid "Details (Advanced)" +msgstr "" + +msgid "An unknown error occurred." +msgstr "" + +msgid "An error occurred while completing events" +msgstr "" + +msgid "An error occurred while deleting the events" +msgstr "" + +msgid "You do not have access to delete events" +msgstr "" + +msgid "Delete events" +msgstr "" + +msgid "" +"This cannot be undone. Are you sure you want to delete the selected events?" +msgstr "" + msgid "Registration Date" msgstr "登记日期" @@ -1567,14 +1594,113 @@ msgstr "后续跟踪" msgid "Choose a program stage to filter by {{label}}" msgstr "选择要按 {{label}} 筛选的程序阶段" -msgid "Active enrollments" -msgstr "活跃注册" +msgid "" +"Some enrollments were completed successfully, but there was an error while " +"completing the rest. Please see the details below." +msgstr "" -msgid "Completed enrollments" -msgstr "完成注册" +msgid "" +"There was an error while completing the enrollments. Please see the details " +"below." +msgstr "" -msgid "Cancelled enrollments" -msgstr "取消注册" +msgid "" +"An unexpected error occurred while fetching the enrollments. Please try " +"again." +msgstr "" + +msgid "" +"There are currently no active enrollments in the selection. All enrollments " +"are already completed or cancelled." +msgstr "" + +msgid "" +"This action will complete {{count}} active enrollment in your selection." +msgid_plural "" +"This action will complete {{count}} active enrollment in your selection." +msgstr[0] "" + +msgid "{{count}} enrollment already marked as completed will not be changed." +msgid_plural "" +"{{count}} enrollment already marked as completed will not be changed." +msgstr[0] "" + +msgid "Mark all events within enrollments as complete" +msgstr "" + +msgid "You do not have access to bulk complete enrollments" +msgstr "" + +msgid "Complete enrollments" +msgstr "" + +msgid "Error completing enrollments" +msgstr "" + +msgid "No active enrollments to complete" +msgstr "" + +msgid "Complete {{count}} enrollment" +msgid_plural "Complete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when completing the enrollments" +msgstr "" + +msgid "An unknown error occurred when completing enrollments" +msgstr "" + +msgid "You do not have access to delete enrollments" +msgstr "" + +msgid "Delete enrollments" +msgstr "" + +msgid "Delete selected enrollments" +msgstr "" + +msgid "" +"An error occurred while loading the selected enrollments. Please try again." +msgstr "" + +msgid "" +"This action will permanently delete the selected enrollments, including all " +"associated data and events." +msgstr "" + +msgid "Active enrollments ({{count}})" +msgid_plural "Active enrollments ({{count}})" +msgstr[0] "" + +msgid "Completed enrollments ({{count}})" +msgid_plural "Completed enrollments ({{count}})" +msgstr[0] "" + +msgid "Cancelled enrollments ({{count}})" +msgid_plural "Cancelled enrollments ({{count}})" +msgstr[0] "" + +msgid "Delete {{count}} enrollment" +msgid_plural "Delete {{count}} enrollment" +msgstr[0] "" + +msgid "An error occurred when deleting enrollments" +msgstr "" + +msgid "Delete {{ trackedEntityName }} with all enrollments" +msgstr "" + +msgid "Delete {{count}} {{ trackedEntityName }}" +msgid_plural "Delete {{count}} {{ trackedEntityName }}" +msgstr[0] "" + +msgid "" +"Deleting records will also delete any associated enrollments and events. " +"This cannot be undone. Are you sure you want to delete?" +msgstr "" + +msgid "An error occurred while deleting the records" +msgstr "" msgid "Working list could not be updated" msgstr "工作清单无法更新" @@ -1585,6 +1711,13 @@ msgstr "加载工作列表时发生错误" msgid "an error occurred loading Tracked entity instance lists" msgstr "加载跟踪的实体实例列表时出错" +msgid "{{count}} selected" +msgid_plural "{{count}} selected" +msgstr[0] "{{count}} 个已经选择" + +msgid "Deselect all" +msgstr "取消全选" + msgid "Update view" msgstr "更新视图" @@ -1693,6 +1826,60 @@ msgstr "编辑事件时出错,所做的更改未保存" msgid "Error updating the Assignee" msgstr "" +msgid "Please provide a valid number" +msgstr "请提供一个有效的数字" + +msgid "Please provide a valid integer" +msgstr "请提供一个整数" + +msgid "Please provide a positive integer" +msgstr "提供一个正整数" + +msgid "Please provide zero or a positive integer" +msgstr "0或负整数" + +msgid "Please provide a negative integer" +msgstr "负整数" + +msgid "Please provide a valid date and time" +msgstr "日期和时间" + +msgid "Please provide a valid time" +msgstr "有效的时间" + +msgid "Please provide an integer between 0 and 100" +msgstr "请提供 0 到 100 之间的整数" + +msgid "Please provide a valid url" +msgstr "有效的URL" + +msgid "Please provide a valid email address" +msgstr "有效的邮箱" + +msgid "Please provide a valid age" +msgstr "有效的年龄" + +msgid "Please provide a valid phone number" +msgstr "有效的电话号码" + +msgid "This value already exists" +msgstr "值已经存在" + +msgid "\"From\" cannot be greater than \"To\"" +msgstr "自不能大于至" + +msgid "Checking..." +msgstr "检查" + +msgid "Please provide a valid positive integer" +msgstr "" + +msgid "Please enter a valid time" +msgstr "" + +msgid "Please enter a time" +msgstr "" + msgid "Set coordinate" msgstr "设置坐标" diff --git a/package.json b/package.json index 3af3dfcf5c..13596cdb66 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "capture-app", "homepage": ".", - "version": "101.16.2", + "version": "101.19.2", "cacheVersion": "7", "serverVersion": "38", "license": "BSD-3-Clause", @@ -10,7 +10,7 @@ "packages/rules-engine" ], "dependencies": { - "@dhis2/rules-engine-javascript": "101.16.2", + "@dhis2/rules-engine-javascript": "101.19.2", "@dhis2/app-runtime": "^3.9.3", "@dhis2/d2-i18n": "^1.1.0", "@dhis2/d2-icons": "^1.0.1", @@ -19,6 +19,7 @@ "@dhis2/d2-ui-rich-text": "^7.4.0", "@dhis2/d2-ui-sharing-dialog": "^7.3.3", "@dhis2/ui": "^9.10.1", + "@dhis2-ui/calendar": "^10.0.3", "@joakim_sm/react-infinite-calendar": "^2.4.2", "@material-ui/core": "3.9.4", "@material-ui/icons": "3", @@ -37,7 +38,7 @@ "loglevel": "^1.9.1", "moment": "^2.29.4", "prop-types": "^15.8.1", - "query-string": "^7.1.1", + "query-string": "^9.1.1", "react": "^16.14.0", "react-addons-update": "^15.6.3", "react-dnd": "^14.0.5", @@ -136,6 +137,7 @@ "@dhis2/app-runtime": "^3.10.2", "@babel/preset-react": "7.16.7", "@dhis2/ui": "^9.10.1", + "@dhis2-ui/calendar": "^10.0.3", "@js-temporal/polyfill": "0.4.3", "core-js": "2.5.7", "i18next": "^20.5.0" diff --git a/packages/rules-engine/package.json b/packages/rules-engine/package.json index f2b60b8805..ecf985fbc1 100644 --- a/packages/rules-engine/package.json +++ b/packages/rules-engine/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/rules-engine-javascript", - "version": "101.16.2", + "version": "101.19.2", "license": "BSD-3-Clause", "main": "./build/cjs/index.js", "scripts": { diff --git a/src/core_modules/capture-core-utils/validators/form/date.validator.js b/src/core_modules/capture-core-utils/validators/form/date.validator.js deleted file mode 100644 index fe14203f11..0000000000 --- a/src/core_modules/capture-core-utils/validators/form/date.validator.js +++ /dev/null @@ -1,13 +0,0 @@ -// @flow -import { parseDate } from '../../parsers'; -/** - * - * @export - * @param {string} value - * @param {string} format - * @returns {boolean} - */ -export function isValidDate(value: string, format: string) { - const parseData = parseDate(value, format); - return parseData.isValid; -} diff --git a/src/core_modules/capture-core-utils/validators/form/dateTime.validator.js b/src/core_modules/capture-core-utils/validators/form/dateTime.validator.js deleted file mode 100644 index a6de799acf..0000000000 --- a/src/core_modules/capture-core-utils/validators/form/dateTime.validator.js +++ /dev/null @@ -1,20 +0,0 @@ -// @flow -import { isValidDate } from './date.validator'; -import { isValidTime } from './time.validator'; - -type DateTimeValue = { - date?: ?string, - time?: ?string, -}; - -export function isValidDateTime(value: DateTimeValue, dateFormat: string) { - if (!value) return false; - const date = value.date; - const time = value.time; - - if (!date || !time) { - return false; - } - - return (isValidDate(date, dateFormat) && isValidTime(time)); -} diff --git a/src/core_modules/capture-core-utils/validators/form/index.js b/src/core_modules/capture-core-utils/validators/form/index.js index 65af548dde..3355778be3 100644 --- a/src/core_modules/capture-core-utils/validators/form/index.js +++ b/src/core_modules/capture-core-utils/validators/form/index.js @@ -1,7 +1,5 @@ // @flow export { hasValue } from './compulsory.validator'; -export { isValidDate } from './date.validator'; -export { isValidDateTime } from './dateTime.validator'; export { isValidEmail } from './email.validator'; export { isValidInteger } from './integer.validator'; export { isValidPositiveInteger } from './integerPositive.validator'; @@ -11,7 +9,6 @@ export { isValidNumber } from './number.validator'; export { isValidPercentage } from './percentage.validator'; export { isValidTime } from './time.validator'; export { isValidUrl } from './url.validator'; -export { isValidAge } from './age.validator'; export { isValidPhoneNumber } from './phone.validator'; export { isValidOrgUnit } from './orgUnit.validator'; export { isValidCoordinate } from './coordinate.validator'; diff --git a/src/core_modules/capture-core/components/App/withAppUrlSync.js b/src/core_modules/capture-core/components/App/withAppUrlSync.js index 4f6980e195..9bb3b83e9d 100644 --- a/src/core_modules/capture-core/components/App/withAppUrlSync.js +++ b/src/core_modules/capture-core/components/App/withAppUrlSync.js @@ -1,7 +1,7 @@ // @flow import * as React from 'react'; import { connect } from 'react-redux'; -import { parse, type QueryParameters } from 'query-string'; +import queryString, { type QueryParameters } from 'query-string'; import { paramsSelector } from './appSync.selectors'; import { LoadingMaskForPage } from '../LoadingMasks'; import { viewEventFromUrl } from '../Pages/ViewEvent/ViewEventComponent/viewEvent.actions'; @@ -81,7 +81,7 @@ export const withAppUrlSync = () => (InnerComponent: React.ComponentType) = setPageAndParams() { const { location } = this.props; this.page = location.pathname.substring(1); - this.params = parse(location && location.search); + this.params = queryString.parse(location && location.search); } render() { diff --git a/src/core_modules/capture-core/components/D2Form/D2SectionFields.component.js b/src/core_modules/capture-core/components/D2Form/D2SectionFields.component.js index c5aa1266a8..31d6d45b1a 100644 --- a/src/core_modules/capture-core/components/D2Form/D2SectionFields.component.js +++ b/src/core_modules/capture-core/components/D2Form/D2SectionFields.component.js @@ -11,7 +11,7 @@ import { buildField } from './field/buildField'; import { validationStrategies } from '../../metaData/RenderFoundation/renderFoundation.const'; import type { CustomForm, DataElement } from '../../metaData'; import { messageStateKeys } from '../../reducers/descriptions/rulesEffects.reducerDescription'; -import { validatorTypes } from './field/validators/constants'; +import { validatorTypes } from '../../utils/validation/constants'; import type { QuerySingleResource } from '../../utils/api/api.types'; import { FormFieldPlugin } from './FormFieldPlugin'; import { FormFieldPluginConfig } from '../../metaData/FormFieldPluginConfig'; diff --git a/src/core_modules/capture-core/components/D2Form/D2SectionFields.container.js b/src/core_modules/capture-core/components/D2Form/D2SectionFields.container.js index 0ce87af445..39bfcce74b 100644 --- a/src/core_modules/capture-core/components/D2Form/D2SectionFields.container.js +++ b/src/core_modules/capture-core/components/D2Form/D2SectionFields.container.js @@ -16,7 +16,7 @@ const makeMapStateToProps = () => { const getRulesMessages = makeGetMessages(); const getCompulsory = makeGetCompulsory(); const getDisabled = makeGetDisabled(); - const mapStateToProps = (state: Object, props: { formId: string }) => ({ + const mapStateToProps = (state: Object, props: { formId: string, fieldsMetaData: any }) => ({ values: getSectionValues(state, props), rulesHiddenFields: getHiddenFields(state, props), rulesMessages: getRulesMessages(state, props), diff --git a/src/core_modules/capture-core/components/D2Form/FormBuilder/FormBuilder.component.js b/src/core_modules/capture-core/components/D2Form/FormBuilder/FormBuilder.component.js index f62a5c32f0..9f07004ebb 100644 --- a/src/core_modules/capture-core/components/D2Form/FormBuilder/FormBuilder.component.js +++ b/src/core_modules/capture-core/components/D2Form/FormBuilder/FormBuilder.component.js @@ -11,24 +11,17 @@ import isObject from 'd2-utilizr/lib/isObject'; import defaultClasses from './formBuilder.module.css'; import type { ErrorData, PostProcessErrorMessage } from './formbuilder.types'; import type { PluginContext } from '../FormFieldPlugin/FormFieldPlugin.types'; -import { getValidators } from '../field/validators'; +import { getValidators, validateValue, validatorTypes } from '../../../utils/validation'; +import type { ValidatorContainer } from '../../../utils/validation'; import type { DataElement } from '../../../metaData'; import type { QuerySingleResource } from '../../../utils/api'; -export type ValidatorContainer = { - validator: (value: any, validationContext: ?Object) => boolean | Promise, - message: string, - validatingMessage?: ?string, - type?: ?string, - async?: ?boolean, -}; - export type FieldConfig = { id: string, component: React.ComponentType, plugin?: boolean, props: Object, - validators?: ?Array, + validators?: Array, commitEvent?: ?string, onIsEqual?: ?(newValue: any, oldValue: any) => boolean, }; @@ -36,7 +29,7 @@ export type FieldConfig = { type FieldUI = { touched?: ?boolean, valid?: ?boolean, - errorMessage?: ?string | Array, + errorMessage?: ?string | Array | Array<{[key: string]: string}>, errorType?: ?string, errorData?: ErrorData, validatingMessage?: ?string, @@ -47,7 +40,7 @@ type GetContainerPropsFn = (index: number, fieldsCount: number, field: FieldConf type FieldCommitConfig = {| fieldId: string, - validators?: ?Array, + validators?: Array, onIsEqual?: ?(newValue: any, oldValue: any) => boolean, |} @@ -89,64 +82,22 @@ type Props = { onPostProcessErrorMessage?: PostProcessErrorMessage, }; -type FieldCommitOptions = { +export type FieldCommitOptions = {| touched?: boolean, valid?: boolean, - error?: string | Array, -}; + error?: string | Array | Array<{[key: string]: string}>, + errorCode?: string, +|}; + +export type FieldCommitOptionsExtended = {| + ...FieldCommitOptions, + plugin?: ?boolean, +|}; // container for handling async validations type FieldsValidatingPromiseContainer = { [fieldId: string]: ?{ cancelableValidatingPromise?: ?CancelablePromise, validatingCompleteUid: string } }; export class FormBuilder extends React.Component { - static async validateField( - { validators }: { validators?: ?Array }, - value: any, - validationContext: ?Object, - onIsValidatingInternal: ?Function, - ): Promise<{ valid: boolean, errorMessage?: ?string, errorType?: ?string }> { - if (!validators || validators.length === 0) { - return { - valid: true, - }; - } - - const validatorResult = await validators - .reduce(async (passPromise, currentValidator) => { - const pass = await passPromise; - if (pass === true) { - let result = currentValidator.validator(value, validationContext); - if (result instanceof Promise) { - result = onIsValidatingInternal ? onIsValidatingInternal(currentValidator.validatingMessage, result) : result; - result = await result; - } - - if (result === true || (result && result.valid)) { - return true; - } - return { - message: (result && result.errorMessage) || currentValidator.message, - type: currentValidator.type, - data: result && result.data, - }; - } - return pass; - }, Promise.resolve(true)); - - if (validatorResult !== true) { - return { - valid: false, - errorMessage: validatorResult.message, - errorType: validatorResult.type, - errorData: validatorResult.data, - }; - } - - return { - valid: true, - }; - } - static getAsyncUIState(fieldsUI: { [id: string]: FieldUI }) { return Object.keys(fieldsUI).reduce((accAsyncUIState, fieldId) => { const fieldUI = fieldsUI[fieldId]; @@ -219,12 +170,12 @@ export class FormBuilder extends React.Component { let validationData; try { - validationData = await FormBuilder.validateField( - field, - values[field.id], + validationData = await validateValue({ + validators: field.validators, + value: values[field.id], validationContext, - handleIsValidatingInternal, - ); + postProcessAsyncValidatonInitiation: handleIsValidatingInternal, + }); } catch (reason) { if (reason && isObject(reason) && reason.isCanceled) { validationData = null; @@ -377,7 +328,7 @@ export class FormBuilder extends React.Component { commitFieldUpdateFromDataElement(fieldId: string, value: any, options?: ?FieldCommitOptions) { const { validators, onIsEqual } = this.getFieldProp(fieldId); - + // $FlowFixMe this.commitFieldUpdate({ fieldId, validators, onIsEqual }, value, options); } @@ -387,10 +338,10 @@ export class FormBuilder extends React.Component { const validators = getValidators(fieldMetadata, querySingleResource); // $FlowFixMe - Async handled in business logic - this.commitFieldUpdate({ fieldId, validators }, value, options); + this.commitFieldUpdate({ fieldId, validators }, value, { ...options, plugin: true }); } - async commitFieldUpdate({ fieldId, validators, onIsEqual }: FieldCommitConfig, value: any, options?: ?FieldCommitOptions) { + async commitFieldUpdate({ fieldId, validators, onIsEqual }: FieldCommitConfig, value: any, options?: ?FieldCommitOptionsExtended) { const { onUpdateFieldUIOnly, onUpdateField, @@ -428,49 +379,60 @@ export class FormBuilder extends React.Component { return fieldValidatingPromiseContainer.cancelableValidatingPromise.promise; }; + const updateField = ({ valid, errorMessage, errorType, errorData }) => { + onUpdateField( + value, + { + valid, + touched, + errorMessage, + errorType, + errorData, + }, + fieldId, + id, + fieldValidatingPromiseContainer.validatingCompleteUid, + ); + this.fieldsValidatingPromiseContainer[fieldId] = null; + }; + this.commitUpdateTriggeredForFields[fieldId] = true; - const updatePromise = FormBuilder.validateField( - { validators }, - value, - onGetValidationContext && onGetValidationContext(), - handleIsValidatingInternal, - ) - // $FlowFixMe[prop-missing] automated comment - .then(({ valid, errorMessage, errorType, errorData }) => { - onUpdateField( - value, - { - valid: options?.valid ?? valid, - touched, - errorMessage: options?.error ?? errorMessage, - errorType, - errorData, - }, - fieldId, - id, - fieldValidatingPromiseContainer.validatingCompleteUid, - ); - this.fieldsValidatingPromiseContainer[fieldId] = null; + + options?.plugin && (options.error || options.valid === false) ? + updateField({ + valid: false, + errorMessage: options.error, + errorType: validatorTypes.TYPE_BASE, + errorData: undefined }) : + (await validateValue({ + validators, + value, + validationContext: onGetValidationContext && onGetValidationContext(), + postProcessAsyncValidatonInitiation: handleIsValidatingInternal, + commitOptions: options, }) - .catch((reason) => { - if (!reason || !isObject(reason) || !reason.isCanceled) { - log.error({ reason, fieldId, value }); - onUpdateField( - value, - { - valid: false, - touched: true, - errorMessage: i18n.t('error encountered during field validation'), - errorType: i18n.t('error'), - }, - fieldId, - id, - fieldValidatingPromiseContainer.validatingCompleteUid, - ); - this.fieldsValidatingPromiseContainer[fieldId] = null; - } - }); - await updatePromise; + // $FlowFixMe[prop-missing] automated comment + .then(({ valid, errorMessage, errorType, errorData }) => { + updateField({ valid, errorMessage, errorType, errorData }); + }) + .catch((reason) => { + if (!reason || !isObject(reason) || !reason.isCanceled) { + log.error({ reason, fieldId, value }); + onUpdateField( + value, + { + valid: false, + touched: true, + errorMessage: i18n.t('error encountered during field validation'), + errorType: i18n.t('error'), + }, + fieldId, + id, + fieldValidatingPromiseContainer.validatingCompleteUid, + ); + this.fieldsValidatingPromiseContainer[fieldId] = null; + } + })); } handleUpdateAsyncState = (fieldId: string, asyncStateToAdd: Object) => { diff --git a/src/core_modules/capture-core/components/D2Form/FormBuilder/formbuilder.types.js b/src/core_modules/capture-core/components/D2Form/FormBuilder/formbuilder.types.js index e5e5a78793..99b480e90d 100644 --- a/src/core_modules/capture-core/components/D2Form/FormBuilder/formbuilder.types.js +++ b/src/core_modules/capture-core/components/D2Form/FormBuilder/formbuilder.types.js @@ -7,10 +7,10 @@ export type ErrorData = { attributeValueExistsUnsaved?: ?boolean, }; export type PostProcessErrorMessage = ({ - errorMessage: string | Array, + errorMessage: string | Array | Array<{[key: string]: string}>, errorType: ?string, errorData?: ErrorData, id: string, fieldId: string, fieldLabel: string, -}) => Node; +}) => string | Array | Array<{[key: string]: string}> | Node; diff --git a/src/core_modules/capture-core/components/D2Form/FormBuilder/index.js b/src/core_modules/capture-core/components/D2Form/FormBuilder/index.js index 42434e8133..fab5ff84f6 100644 --- a/src/core_modules/capture-core/components/D2Form/FormBuilder/index.js +++ b/src/core_modules/capture-core/components/D2Form/FormBuilder/index.js @@ -1,4 +1,4 @@ // @flow export { FormBuilder } from './FormBuilder.component'; export type { PostProcessErrorMessage, ErrorData } from './formbuilder.types'; -export type { FieldConfig, ValidatorContainer } from './FormBuilder.component'; +export type { FieldConfig, FieldCommitOptionsExtended } from './FormBuilder.component'; diff --git a/src/core_modules/capture-core/components/D2Form/field/configs/base/configBase.js b/src/core_modules/capture-core/components/D2Form/field/configs/base/configBase.js index 9aeec1d79d..f33d880d64 100644 --- a/src/core_modules/capture-core/components/D2Form/field/configs/base/configBase.js +++ b/src/core_modules/capture-core/components/D2Form/field/configs/base/configBase.js @@ -1,7 +1,7 @@ // @flow import { type ComponentType } from 'react'; -import type { ValidatorContainer } from '../../../FormBuilder'; -import { getValidators } from '../../validators'; +import type { ValidatorContainer } from '../../../../../utils/validation'; +import { getValidators } from '../../../../../utils/validation'; import type { DataElement } from '../../../../../metaData'; import type { QuerySingleResource } from '../../../../../utils/api/api.types'; diff --git a/src/core_modules/capture-core/components/D2Form/field/configs/dateTimeField/getDateTimeFieldConfig.js b/src/core_modules/capture-core/components/D2Form/field/configs/dateTimeField/getDateTimeFieldConfig.js index 9322ab0816..d7a24cb7f3 100644 --- a/src/core_modules/capture-core/components/D2Form/field/configs/dateTimeField/getDateTimeFieldConfig.js +++ b/src/core_modules/capture-core/components/D2Form/field/configs/dateTimeField/getDateTimeFieldConfig.js @@ -11,11 +11,11 @@ export const getDateTimeFieldConfig = (metaData: MetaDataElement, options: Objec const props = createProps({ formHorizontal: options.formHorizontal, fieldLabelMediaBasedClass: options.fieldLabelMediaBasedClass, - dateWidth: options.formHorizontal ? 150 : '100%', - dateMaxWidth: options.formHorizontal ? 150 : 350, + dateWidth: options.formHorizontal ? '150px' : '100%', + dateMaxWidth: options.formHorizontal ? '150px' : '350px', orientation: options.formHorizontal ? orientations.VERTICAL : orientations.HORIZONTAL, shrinkDisabled: options.formHorizontal, - calendarWidth: options.formHorizontal ? 250 : 350, + calendarWidth: options.formHorizontal ? '250px' : '350px', popupAnchorPosition: getCalendarAnchorPosition(options.formHorizontal), }, options, metaData); diff --git a/src/core_modules/capture-core/components/D2Form/field/configs/dateTimeField/getDateTimeFieldConfigForCustomForm.js b/src/core_modules/capture-core/components/D2Form/field/configs/dateTimeField/getDateTimeFieldConfigForCustomForm.js index cd8e1d1d99..86024056fc 100644 --- a/src/core_modules/capture-core/components/D2Form/field/configs/dateTimeField/getDateTimeFieldConfigForCustomForm.js +++ b/src/core_modules/capture-core/components/D2Form/field/configs/dateTimeField/getDateTimeFieldConfigForCustomForm.js @@ -8,8 +8,8 @@ import type { QuerySingleResource } from '../../../../../utils/api/api.types'; export const getDateTimeFieldConfigForCustomForm = (metaData: MetaDataElement, options: Object, querySingleResource: QuerySingleResource) => { const props = createProps({ dateWidth: '100%', - dateMaxWidth: 350, - calendarWidth: 350, + dateMaxWidth: '350px', + calendarWidth: '350px', orientation: orientations.HORIZONTAL, shrinkDisabled: false, }, metaData); diff --git a/src/core_modules/capture-core/components/D2Form/field/validators/index.js b/src/core_modules/capture-core/components/D2Form/field/validators/index.js deleted file mode 100644 index bc50f272c3..0000000000 --- a/src/core_modules/capture-core/components/D2Form/field/validators/index.js +++ /dev/null @@ -1,2 +0,0 @@ -// @flow -export { getValidators } from './getValidators'; diff --git a/src/core_modules/capture-core/components/D2Form/index.js b/src/core_modules/capture-core/components/D2Form/index.js index ac6560e0f2..8117978a25 100644 --- a/src/core_modules/capture-core/components/D2Form/index.js +++ b/src/core_modules/capture-core/components/D2Form/index.js @@ -1,3 +1,4 @@ // @flow export { asyncHandlerActionTypes, asyncUpdateFieldEpic } from './asyncHandlerHOC'; export { D2Form } from './D2Form.container'; +export type { FieldCommitOptionsExtended } from './FormBuilder'; diff --git a/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentDataEntry.component.js b/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentDataEntry.component.js index 9a902bab07..1444a98aea 100644 --- a/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentDataEntry.component.js +++ b/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentDataEntry.component.js @@ -114,8 +114,7 @@ const getEnrollmentDateSettings = () => { calendarMaxMoment: !props.enrollmentMetadata.allowFutureEnrollmentDate ? moment() : undefined, }), getPropName: () => 'enrolledAt', - getValidatorContainers: (props: Object) => - getEnrollmentDateValidatorContainer(props.enrollmentMetadata.allowFutureEnrollmentDate), + getValidatorContainers: getEnrollmentDateValidatorContainer, getPassOnFieldData: () => true, getMeta: () => ({ placement: placements.TOP, @@ -164,8 +163,7 @@ const getIncidentDateSettings = () => { }), getPropName: () => 'occurredAt', getPassOnFieldData: () => true, - getValidatorContainers: (props: Object) => - getIncidentDateValidatorContainer(props.enrollmentMetadata.allowFutureIncidentDate), + getValidatorContainers: getIncidentDateValidatorContainer, getMeta: () => ({ placement: placements.TOP, section: sectionKeysForEnrollmentDataEntry.ENROLLMENT, @@ -419,17 +417,38 @@ export class EnrollmentDataEntryComponent extends React.Component) => { const { programId, orgUnit, firstStageMetaData, formFoundation } = this.props; - this.props.onUpdateField(...args, programId, orgUnit, firstStageMetaData?.stage, formFoundation); - } + this.props.onUpdateField( + ...args, + programId, + orgUnit, + firstStageMetaData?.stage, + formFoundation, + this.getValidationContext, + ); + }; handleUpdateDataEntryField = (...args: Array) => { const { programId, orgUnit, firstStageMetaData, formFoundation } = this.props; - this.props.onUpdateDataEntryField(...args, programId, orgUnit, firstStageMetaData?.stage, formFoundation); + this.props.onUpdateDataEntryField( + ...args, + programId, + orgUnit, + firstStageMetaData?.stage, + formFoundation, + this.getValidationContext, + ); } handleStartAsyncUpdateField = (...args: Array) => { const { programId, orgUnit, firstStageMetaData, formFoundation } = this.props; - this.props.onStartAsyncUpdateField(...args, programId, orgUnit, firstStageMetaData?.stage, formFoundation); + this.props.onStartAsyncUpdateField( + ...args, + programId, + orgUnit, + firstStageMetaData?.stage, + formFoundation, + this.getValidationContext, + ); } render() { diff --git a/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentDataEntry.container.js b/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentDataEntry.container.js index 6df22c0f34..4bf992d94a 100644 --- a/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentDataEntry.container.js +++ b/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentDataEntry.container.js @@ -14,8 +14,11 @@ const mapDispatchToProps = (dispatch: ReduxDispatch) => ({ orgUnit: OrgUnit, stage?: ProgramStage, formFoundation: RenderFoundation, + onGetValidationContext: () => Object, ) => { - dispatch(updateDataEntryFieldBatch(innerAction, programId, orgUnit, stage, formFoundation)); + dispatch( + updateDataEntryFieldBatch(innerAction, programId, orgUnit, stage, formFoundation, onGetValidationContext), + ); }, onUpdateField: ( innerAction: ReduxAction, @@ -23,8 +26,9 @@ const mapDispatchToProps = (dispatch: ReduxDispatch) => ({ orgUnit: OrgUnit, stage?: ProgramStage, formFoundation: RenderFoundation, + onGetValidationContext: () => Object, ) => { - dispatch(updateFieldBatch(innerAction, programId, orgUnit, stage, formFoundation)); + dispatch(updateFieldBatch(innerAction, programId, orgUnit, stage, formFoundation, onGetValidationContext)); }, onStartAsyncUpdateField: ( innerAction: ReduxAction, @@ -34,9 +38,10 @@ const mapDispatchToProps = (dispatch: ReduxDispatch) => ({ orgUnit: OrgUnit, stage?: ProgramStage, formFoundation: RenderFoundation, + onGetValidationContext: () => Object, ) => { const onAsyncUpdateSuccess = (successInnerAction: ReduxAction) => - asyncUpdateSuccessBatch(successInnerAction, dataEntryId, itemId, programId, orgUnit, stage, formFoundation); + asyncUpdateSuccessBatch(successInnerAction, dataEntryId, itemId, programId, orgUnit, stage, formFoundation, onGetValidationContext); const onAsyncUpdateError = (errorInnerAction: ReduxAction) => errorInnerAction; dispatch(startAsyncUpdateFieldForNewEnrollment(innerAction, onAsyncUpdateSuccess, onAsyncUpdateError)); diff --git a/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentWithFirstStageDataEntry/fieldValidators/eventDate.validatorContainersGetter.js b/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentWithFirstStageDataEntry/fieldValidators/eventDate.validatorContainersGetter.js index 3cb0a56c19..2f9290b07a 100644 --- a/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentWithFirstStageDataEntry/fieldValidators/eventDate.validatorContainersGetter.js +++ b/src/core_modules/capture-core/components/DataEntries/Enrollment/EnrollmentWithFirstStageDataEntry/fieldValidators/eventDate.validatorContainersGetter.js @@ -1,14 +1,14 @@ // @flow -import { hasValue } from 'capture-core-utils/validators/form'; import i18n from '@dhis2/d2-i18n'; -import { isValidDate } from '../../../../../utils/validators/form'; +import { hasValue } from 'capture-core-utils/validators/form'; +import { isValidDate } from '../../../../../utils/validation/validators/form'; -const preValidateDate = (value?: ?string) => { +const preValidateDate = (value?: ?string, internalComponentError: ?{error?: ?string, errorCode?: ?string}) => { if (!value) { return true; } - return isValidDate(value); + return isValidDate(value, internalComponentError); }; export const getEventDateValidatorContainers = () => { diff --git a/src/core_modules/capture-core/components/DataEntries/Enrollment/actions/enrollment.actionBatchs.js b/src/core_modules/capture-core/components/DataEntries/Enrollment/actions/enrollment.actionBatchs.js index f84452c7fe..da21783486 100644 --- a/src/core_modules/capture-core/components/DataEntries/Enrollment/actions/enrollment.actionBatchs.js +++ b/src/core_modules/capture-core/components/DataEntries/Enrollment/actions/enrollment.actionBatchs.js @@ -6,11 +6,16 @@ import type { TEIValues, OrgUnit, } from '@dhis2/rules-engine-javascript'; -import { getApplicableRuleEffectsForTrackerProgram, updateRulesEffects } from '../../../../rules'; +import { + getApplicableRuleEffectsForTrackerProgram, + updateRulesEffects, + validateAssignEffects, +} from '../../../../rules'; import { rulesExecutedPostUpdateField } from '../../../DataEntry/actions/dataEntry.actions'; import { TrackerProgram, RenderFoundation, ProgramStage } from '../../../../metaData'; import { startRunRulesPostUpdateField } from '../../../DataEntry'; import { startRunRulesOnUpdateForNewEnrollment } from './enrollment.actions'; +import type { QuerySingleResource } from '../../../../utils/api'; export const batchActionTypes = { RULES_EXECUTED_POST_UPDATE_FIELD_FOR_ENROLLMENT: 'RulesExecutedPostUpdateFieldForEnrollment', @@ -18,7 +23,7 @@ export const batchActionTypes = { UPDATE_DATA_ENTRY_FIELD_NEW_ENROLLMENT_ACTION_BATCH: 'UpdateDataEntryFieldNewEnrollmentActionBatch', }; -export const runRulesOnUpdateFieldBatch = ({ +export const runRulesOnUpdateFieldBatch = async ({ program, formId, dataEntryId, @@ -31,6 +36,8 @@ export const runRulesOnUpdateFieldBatch = ({ stage, formFoundation, currentEvent, + querySingleResource, + onGetValidationContext, }: { program: TrackerProgram, formId: string, @@ -41,9 +48,11 @@ export const runRulesOnUpdateFieldBatch = ({ attributeValues?: TEIValues, extraActions: Array>, uid: string, - stage?: ProgramStage, + stage: ProgramStage, formFoundation?: RenderFoundation, currentEvent?: {[id: string]: any}, + querySingleResource: QuerySingleResource, + onGetValidationContext: () => Object, }) => { const effects = getApplicableRuleEffectsForTrackerProgram({ program, @@ -54,8 +63,16 @@ export const runRulesOnUpdateFieldBatch = ({ attributeValues, formFoundation, }); + + const effectsWithValidations = await validateAssignEffects({ + dataElements: formFoundation ? formFoundation.getElements() : program.attributes, + effects, + querySingleResource, + onGetValidationContext, + }); + return batchActions([ - updateRulesEffects(effects, formId), + updateRulesEffects(effectsWithValidations, formId), rulesExecutedPostUpdateField(dataEntryId, itemId, uid), ...extraActions, ], batchActionTypes.RULES_EXECUTED_POST_UPDATE_FIELD_FOR_ENROLLMENT); @@ -67,15 +84,27 @@ export const updateDataEntryFieldBatch = ( orgUnit: OrgUnit, stage?: ProgramStage, formFoundation: RenderFoundation, + onGetValidationContext: () => Object, ) => { const { dataEntryId, itemId } = innerAction.payload; const uid = uuid(); - return batchActions([ - innerAction, - startRunRulesPostUpdateField(dataEntryId, itemId, uid), - startRunRulesOnUpdateForNewEnrollment(innerAction.payload, uid, programId, orgUnit, stage, formFoundation), - ], batchActionTypes.UPDATE_DATA_ENTRY_FIELD_NEW_ENROLLMENT_ACTION_BATCH); + return batchActions( + [ + innerAction, + startRunRulesPostUpdateField(dataEntryId, itemId, uid), + startRunRulesOnUpdateForNewEnrollment({ + payload: innerAction.payload, + uid, + programId, + orgUnit, + stage, + formFoundation, + onGetValidationContext, + }), + ], + batchActionTypes.UPDATE_DATA_ENTRY_FIELD_NEW_ENROLLMENT_ACTION_BATCH, + ); }; export const updateFieldBatch = ( @@ -84,15 +113,27 @@ export const updateFieldBatch = ( orgUnit: OrgUnit, stage?: ProgramStage, formFoundation: RenderFoundation, + onGetValidationContext: () => Object, ) => { const { dataEntryId, itemId } = innerAction.payload; const uid = uuid(); - return batchActions([ - innerAction, - startRunRulesPostUpdateField(dataEntryId, itemId, uid), - startRunRulesOnUpdateForNewEnrollment(innerAction.payload, uid, programId, orgUnit, stage, formFoundation), - ], batchActionTypes.UPDATE_FIELD_NEW_ENROLLMENT_ACTION_BATCH); + return batchActions( + [ + innerAction, + startRunRulesPostUpdateField(dataEntryId, itemId, uid), + startRunRulesOnUpdateForNewEnrollment({ + payload: innerAction.payload, + uid, + programId, + orgUnit, + stage, + formFoundation, + onGetValidationContext, + }), + ], + batchActionTypes.UPDATE_FIELD_NEW_ENROLLMENT_ACTION_BATCH, + ); }; export const asyncUpdateSuccessBatch = ( @@ -103,12 +144,24 @@ export const asyncUpdateSuccessBatch = ( orgUnit: OrgUnit, stage?: ProgramStage, formFoundation: RenderFoundation, + onGetValidationContext: () => Object, ) => { const uid = uuid(); - return batchActions([ - innerAction, - startRunRulesPostUpdateField(dataEntryId, itemId, uid), - startRunRulesOnUpdateForNewEnrollment({ ...innerAction.payload, dataEntryId, itemId }, uid, programId, orgUnit, stage, formFoundation), - ], batchActionTypes.UPDATE_FIELD_NEW_ENROLLMENT_ACTION_BATCH); + return batchActions( + [ + innerAction, + startRunRulesPostUpdateField(dataEntryId, itemId, uid), + startRunRulesOnUpdateForNewEnrollment({ + payload: { ...innerAction.payload, dataEntryId, itemId }, + uid, + programId, + orgUnit, + stage, + formFoundation, + onGetValidationContext, + }), + ], + batchActionTypes.UPDATE_FIELD_NEW_ENROLLMENT_ACTION_BATCH, + ); }; diff --git a/src/core_modules/capture-core/components/DataEntries/Enrollment/actions/enrollment.actions.js b/src/core_modules/capture-core/components/DataEntries/Enrollment/actions/enrollment.actions.js index 68d8a8cb7e..e0e0bbe343 100644 --- a/src/core_modules/capture-core/components/DataEntries/Enrollment/actions/enrollment.actions.js +++ b/src/core_modules/capture-core/components/DataEntries/Enrollment/actions/enrollment.actions.js @@ -7,16 +7,32 @@ export const actionTypes = { START_RUN_RULES_ON_UPDATE: 'StartRunRulesOnUpdateForNewEnrollment', }; -export const startRunRulesOnUpdateForNewEnrollment = ( +export const startRunRulesOnUpdateForNewEnrollment = ({ + payload, + uid, + programId, + orgUnit, + stage, + formFoundation, + onGetValidationContext, +}: { payload: Object, uid: string, programId: string, orgUnit: OrgUnit, stage?: ProgramStage, formFoundation: RenderFoundation, -) => - actionCreator(actionTypes.START_RUN_RULES_ON_UPDATE)( - { innerPayload: payload, uid, programId, orgUnit, stage, formFoundation }); + onGetValidationContext: () => Object, +}) => + actionCreator(actionTypes.START_RUN_RULES_ON_UPDATE)({ + innerPayload: payload, + uid, + programId, + orgUnit, + stage, + formFoundation, + onGetValidationContext, + }); export const startAsyncUpdateFieldForNewEnrollment = ( innerAction: ReduxAction, diff --git a/src/core_modules/capture-core/components/DataEntries/Enrollment/epics/enrollment.epics.js b/src/core_modules/capture-core/components/DataEntries/Enrollment/epics/enrollment.epics.js index 9bc4da634a..77ee439a01 100644 --- a/src/core_modules/capture-core/components/DataEntries/Enrollment/epics/enrollment.epics.js +++ b/src/core_modules/capture-core/components/DataEntries/Enrollment/epics/enrollment.epics.js @@ -1,7 +1,8 @@ // @flow import type { OrgUnit } from '@dhis2/rules-engine-javascript'; import { ofType } from 'redux-observable'; -import { map } from 'rxjs/operators'; +import { from } from 'rxjs'; +import { map, switchMap } from 'rxjs/operators'; import { batchActionTypes, runRulesOnUpdateFieldBatch } from '../actions/enrollment.actionBatchs'; import { actionTypes } from '../actions/enrollment.actions'; import { getTrackerProgramThrowIfNotFound, ProgramStage, RenderFoundation, Section } from '../../../../metaData'; @@ -9,6 +10,7 @@ import { getCurrentClientMainData, type FieldData } from '../../../../rules'; import { getDataEntryKey } from '../../../DataEntry/common/getDataEntryKey'; import { convertFormToClient } from '../../../../converters'; import { stageMainDataIds, convertToRulesEngineIds } from '../EnrollmentWithFirstStageDataEntry'; +import type { QuerySingleResource } from '../../../../utils/api'; type Context = { dataEntryId: string, @@ -16,7 +18,7 @@ type Context = { uid: string, programId: string, orgUnit: OrgUnit, - stage?: ProgramStage, + stage: ProgramStage, formFoundation: RenderFoundation, } @@ -38,46 +40,62 @@ const splitCurrentClientMainData = (stage, currentClientMainData) => { }, { currentEnrollmentValues: {}, currentEventMainData: {} }); }; -const runRulesOnEnrollmentUpdate = - (store: ReduxStore, context: Context, fieldData?: ?FieldData, searchActions?: any = []) => { - const state = store.value; - const { programId, dataEntryId, itemId, orgUnit, uid, stage, formFoundation } = context; - const formId = getDataEntryKey(dataEntryId, itemId); - const program = getTrackerProgramThrowIfNotFound(programId); - const currentFormData = state.formsValues[formId] || {}; - const convertedValues = formFoundation.convertAndGroupBySection(currentFormData, convertFormToClient); - const attributeValues = convertedValues[Section.groups.ENROLLMENT]; - const currentEventValues = convertedValues[Section.groups.EVENT] || {}; - const currentClientMainData = - getCurrentClientMainData(state, itemId, dataEntryId, formFoundation) || {}; - const { currentEnrollmentValues, currentEventMainData } - = splitCurrentClientMainData(state, currentClientMainData); - const currentEvent = stage - ? { ...currentEventValues, ...currentEventMainData, programStageId: stage.id } : undefined; - - return runRulesOnUpdateFieldBatch({ - program, - formId, - dataEntryId, - itemId, - orgUnit, - enrollmentData: currentEnrollmentValues, - attributeValues, - currentEvent, - extraActions: searchActions, - uid, - stage, - formFoundation: stage ? formFoundation : undefined, - }); - }; +const runRulesOnEnrollmentUpdate = ({ + store, + context, + searchActions = [], + querySingleResource, + onGetValidationContext, +}: { + store: ReduxStore, + context: Context, + searchActions?: any, + querySingleResource: QuerySingleResource, + onGetValidationContext: () => Object, +}) => { + const state = store.value; + const { programId, dataEntryId, itemId, orgUnit, uid, stage, formFoundation } = context; + const formId = getDataEntryKey(dataEntryId, itemId); + const program = getTrackerProgramThrowIfNotFound(programId); + const currentFormData = state.formsValues[formId] || {}; + const convertedValues = formFoundation.convertAndGroupBySection(currentFormData, convertFormToClient); + const attributeValues = convertedValues[Section.groups.ENROLLMENT]; + const currentEventValues = convertedValues[Section.groups.EVENT] || {}; + const currentClientMainData = getCurrentClientMainData(state, itemId, dataEntryId, formFoundation) || {}; + const { currentEnrollmentValues, currentEventMainData } = splitCurrentClientMainData(state, currentClientMainData); + const currentEvent = stage + ? { ...currentEventValues, ...currentEventMainData, programStageId: stage.id } + : undefined; + const runRulesOnUpdateFieldBatchPromise = runRulesOnUpdateFieldBatch({ + program, + formId, + dataEntryId, + itemId, + orgUnit, + enrollmentData: currentEnrollmentValues, + attributeValues, + currentEvent, + extraActions: searchActions, + uid, + stage, + formFoundation: stage ? formFoundation : undefined, + querySingleResource, + onGetValidationContext, + }); + return from(runRulesOnUpdateFieldBatchPromise); +}; -export const runRulesOnEnrollmentDataEntryFieldUpdateEpic = (action$: InputObservable, store: ReduxStore) => +export const runRulesOnEnrollmentDataEntryFieldUpdateEpic = ( + action$: InputObservable, + store: ReduxStore, + { querySingleResource }: ApiUtils, +) => action$.pipe( ofType(batchActionTypes.UPDATE_DATA_ENTRY_FIELD_NEW_ENROLLMENT_ACTION_BATCH), map(actionBatch => actionBatch.payload.find(action => action.type === actionTypes.START_RUN_RULES_ON_UPDATE)), - map((action) => { + switchMap((action) => { const { uid, programId, @@ -85,6 +103,7 @@ export const runRulesOnEnrollmentDataEntryFieldUpdateEpic = (action$: InputObser innerPayload, stage, formFoundation, + onGetValidationContext, } = action.payload; const { @@ -92,24 +111,42 @@ export const runRulesOnEnrollmentDataEntryFieldUpdateEpic = (action$: InputObser itemId, } = innerPayload; - return runRulesOnEnrollmentUpdate(store, { - dataEntryId, - itemId, - uid, - programId, - orgUnit, - stage, - formFoundation, + return runRulesOnEnrollmentUpdate({ + store, + context: { + dataEntryId, + itemId, + uid, + programId, + orgUnit, + stage, + formFoundation, + }, + querySingleResource, + onGetValidationContext, }); })); -export const runRulesOnEnrollmentFieldUpdateEpic = (action$: InputObservable, store: ReduxStore) => +export const runRulesOnEnrollmentFieldUpdateEpic = ( + action$: InputObservable, + store: ReduxStore, + { querySingleResource }: ApiUtils, +) => action$.pipe( ofType(batchActionTypes.UPDATE_FIELD_NEW_ENROLLMENT_ACTION_BATCH), map(actionBatch => actionBatch.payload.find(action => action.type === actionTypes.START_RUN_RULES_ON_UPDATE)), - map((action) => { - const { innerPayload: payload, searchActions, uid, programId, orgUnit, stage, formFoundation } = action.payload; + switchMap((action) => { + const { + innerPayload: payload, + searchActions, + uid, + programId, + orgUnit, + stage, + formFoundation, + onGetValidationContext, + } = action.payload; const { dataEntryId, itemId, elementId, value, uiState } = payload; const fieldData: FieldData = { @@ -118,14 +155,21 @@ export const runRulesOnEnrollmentFieldUpdateEpic = (action$: InputObservable, st valid: uiState.valid, }; - return runRulesOnEnrollmentUpdate(store, { - programId, - orgUnit, - dataEntryId, - itemId, - uid, - stage, - formFoundation, - }, fieldData, searchActions); + return runRulesOnEnrollmentUpdate({ + store, + context: { + programId, + orgUnit, + dataEntryId, + itemId, + uid, + stage, + formFoundation, + }, + fieldData, + searchActions, + querySingleResource, + onGetValidationContext, + }); }), ); diff --git a/src/core_modules/capture-core/components/DataEntries/Enrollment/fieldValidators/enrollmentDate.validatorContainersGetter.js b/src/core_modules/capture-core/components/DataEntries/Enrollment/fieldValidators/enrollmentDate.validatorContainersGetter.js index 731200e7b8..32d0534018 100644 --- a/src/core_modules/capture-core/components/DataEntries/Enrollment/fieldValidators/enrollmentDate.validatorContainersGetter.js +++ b/src/core_modules/capture-core/components/DataEntries/Enrollment/fieldValidators/enrollmentDate.validatorContainersGetter.js @@ -1,30 +1,17 @@ // @flow -import { hasValue } from 'capture-core-utils/validators/form'; import i18n from '@dhis2/d2-i18n'; -import moment from 'moment'; -import { parseDate } from '../../../../utils/converters/date'; - -const isValidEnrollmentDate = (value: string, isFutureDateAllowed: boolean) => { - const dateContainer = parseDate(value); - if (!dateContainer.isValid) { - return false; - } +import { hasValue } from 'capture-core-utils/validators/form'; +import { isValidDate, isValidNonFutureDate } from '../../../../utils/validation/validators/form'; - if (isFutureDateAllowed) { +const isValidEnrollmentDate = (value: string, internalComponentError?: ?{error: ?string, errorCode: ?string}) => { + if (!value) { return true; } - const momentDate = dateContainer.momentDate; - const momentToday = moment(); - // $FlowFixMe -> if parseDate returns isValid true, there should always be a momentDate - const isNotFutureDate = momentDate.isSameOrBefore(momentToday); - return { - valid: isNotFutureDate, - message: i18n.t('A future date is not allowed'), - }; + return isValidDate(value, internalComponentError); }; -export const getEnrollmentDateValidatorContainer = (isFutureEnrollmentDateAllowed: boolean) => { +export const getEnrollmentDateValidatorContainer = () => { const validatorContainers = [ { validator: hasValue, @@ -32,9 +19,12 @@ export const getEnrollmentDateValidatorContainer = (isFutureEnrollmentDateAllowe i18n.t('A value is required'), }, { - validator: (value: string) => isValidEnrollmentDate(value, isFutureEnrollmentDateAllowed), + validator: isValidEnrollmentDate, message: i18n.t('Please provide a valid date'), }, + { validator: isValidNonFutureDate, + message: i18n.t('A date in the future is not allowed'), + }, ]; return validatorContainers; }; diff --git a/src/core_modules/capture-core/components/DataEntries/Enrollment/fieldValidators/incidentDate.validatorContainerGetter.js b/src/core_modules/capture-core/components/DataEntries/Enrollment/fieldValidators/incidentDate.validatorContainerGetter.js index db3331542c..897510621f 100644 --- a/src/core_modules/capture-core/components/DataEntries/Enrollment/fieldValidators/incidentDate.validatorContainerGetter.js +++ b/src/core_modules/capture-core/components/DataEntries/Enrollment/fieldValidators/incidentDate.validatorContainerGetter.js @@ -1,31 +1,18 @@ // @flow -import { hasValue } from 'capture-core-utils/validators/form'; import i18n from '@dhis2/d2-i18n'; -import moment from 'moment'; -import { parseDate } from '../../../../utils/converters/date'; - -const isValidIncidentDate = (value: string, isFutureDateAllowed: boolean) => { - const dateContainer = parseDate(value); - if (!dateContainer.isValid) { - return false; - } +import { hasValue } from 'capture-core-utils/validators/form'; +import { isValidDate, isValidNonFutureDate } from '../../../../utils/validation/validators/form'; - if (isFutureDateAllowed) { +const isValidIncidentDate = (value: string, internalComponentError?: ?{error: ?string, errorCode: ?string}) => { + if (!value) { return true; } - const momentDate = dateContainer.momentDate; - const momentToday = moment(); - // $FlowFixMe -> if parseDate returns isValid true, there should always be a momentDate - const isNotFutureDate = momentDate.isSameOrBefore(momentToday); - return { - valid: isNotFutureDate, - message: i18n.t('A future date is not allowed'), - }; + return isValidDate(value, internalComponentError); }; -export const getIncidentDateValidatorContainer = (isFutureIncidentDateAllowed: boolean) => { +export const getIncidentDateValidatorContainer = () => { const validatorContainers = [ { validator: hasValue, @@ -33,9 +20,12 @@ export const getIncidentDateValidatorContainer = (isFutureIncidentDateAllowed: b i18n.t('A value is required'), }, { - validator: (value: string) => isValidIncidentDate(value, isFutureIncidentDateAllowed), + validator: isValidIncidentDate, message: i18n.t('Please provide a valid date'), }, + { validator: isValidNonFutureDate, + message: i18n.t('A date in the future is not allowed'), + }, ]; return validatorContainers; }; diff --git a/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/DataEntryWrapper/DataEntry/epics/newEventDataEntry.epics.js b/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/DataEntryWrapper/DataEntry/epics/newEventDataEntry.epics.js index 0da25fbb44..006d2a7003 100644 --- a/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/DataEntryWrapper/DataEntry/epics/newEventDataEntry.epics.js +++ b/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/DataEntryWrapper/DataEntry/epics/newEventDataEntry.epics.js @@ -1,6 +1,7 @@ // @flow import { ofType } from 'redux-observable'; -import { map, filter } from 'rxjs/operators'; +import { from } from 'rxjs'; +import { map, filter, switchMap } from 'rxjs/operators'; import { batchActions } from 'redux-batched-actions'; import { type OrgUnit } from '@dhis2/rules-engine-javascript'; import { rulesExecutedPostUpdateField } from '../../../../../DataEntry/actions/dataEntry.actions'; @@ -37,6 +38,8 @@ import { actionTypes as crossPageActionTypes } from '../../../../../Pages/action import { lockedSelectorActionTypes } from '../../../../../LockedSelector/LockedSelector.actions'; import { newPageActionTypes } from '../../../../../Pages/New/NewPage.actions'; import { programCollection } from '../../../../../../metaDataMemoryStores'; +import { validateAssignEffects } from '../../../../../../rules'; +import type { QuerySingleResource } from '../../../../../../utils/api'; export const resetDataEntryForNewEventEpic = (action$: InputObservable) => action$.pipe( @@ -121,14 +124,23 @@ export const resetRecentlyAddedEventsWhenNewEventInDataEntryEpic = (action$: Inp })); -const runRulesForNewSingleEvent = ( +const runRulesForNewSingleEvent = async ({ + store, + dataEntryId, + itemId, + uid, + orgUnit, + fieldData, + querySingleResource, +}: { store: ReduxStore, dataEntryId: string, itemId: string, uid: string, orgUnit: OrgUnit, fieldData?: ?FieldData, -) => { + querySingleResource: QuerySingleResource, +}) => { const state = store.value; const formId = getDataEntryKey(dataEntryId, itemId); @@ -147,35 +159,66 @@ const runRulesForNewSingleEvent = ( currentEvent, }); + const effectsWithValidations = await validateAssignEffects({ + dataElements: foundation.getElements(), + effects, + querySingleResource, + }); + return batchActions([ - updateRulesEffects(effects, formId), + updateRulesEffects(effectsWithValidations, formId), rulesExecutedPostUpdateField(dataEntryId, itemId, uid), ], batchActionTypes.RULES_EFFECTS_ACTIONS_BATCH, ); }; -export const runRulesOnUpdateDataEntryFieldForSingleEventEpic = (action$: InputObservable, store: ReduxStore) => +export const runRulesOnUpdateDataEntryFieldForSingleEventEpic = ( + action$: InputObservable, + store: ReduxStore, + { querySingleResource }: ApiUtils, +) => action$.pipe( ofType(batchActionTypes.UPDATE_DATA_ENTRY_FIELD_NEW_SINGLE_EVENT_ACTION_BATCH), map(actionBatch => actionBatch.payload.find(action => action.type === newEventDataEntryActionTypes.START_RUN_RULES_ON_UPDATE)), - map((action) => { + switchMap((action) => { const { dataEntryId, itemId, uid, orgUnit } = action.payload; - return runRulesForNewSingleEvent(store, dataEntryId, itemId, uid, orgUnit); + const runRulesForNewSingleEventPromise = runRulesForNewSingleEvent({ + store, + dataEntryId, + itemId, + uid, + orgUnit, + querySingleResource, + }); + return from(runRulesForNewSingleEventPromise); })); -export const runRulesOnUpdateFieldForSingleEventEpic = (action$: InputObservable, store: ReduxStore) => +export const runRulesOnUpdateFieldForSingleEventEpic = ( + action$: InputObservable, + store: ReduxStore, + { querySingleResource }: ApiUtils, +) => action$.pipe( ofType(batchActionTypes.UPDATE_FIELD_NEW_SINGLE_EVENT_ACTION_BATCH), map(actionBatch => actionBatch.payload.find(action => action.type === newEventDataEntryActionTypes.START_RUN_RULES_ON_UPDATE)), - map((action) => { + switchMap((action) => { const { dataEntryId, itemId, uid, orgUnit, elementId, value, uiState } = action.payload; const fieldData: FieldData = { elementId, value, valid: uiState.valid, }; - return runRulesForNewSingleEvent(store, dataEntryId, itemId, uid, orgUnit, fieldData); + const runRulesForNewSingleEventPromise = runRulesForNewSingleEvent({ + store, + dataEntryId, + itemId, + uid, + orgUnit, + fieldData, + querySingleResource, + }); + return from(runRulesForNewSingleEventPromise); })); diff --git a/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/DataEntryWrapper/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js b/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/DataEntryWrapper/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js index 31afe2c4da..d1ff0940ed 100644 --- a/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/DataEntryWrapper/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js +++ b/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/DataEntryWrapper/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js @@ -1,14 +1,14 @@ // @flow import { hasValue } from 'capture-core-utils/validators/form'; import i18n from '@dhis2/d2-i18n'; -import { isValidDate } from '../../../../../../utils/validators/form'; +import { isValidDate } from '../../../../../../utils/validation/validators/form'; -const preValidateDate = (value?: ?string) => { +const preValidateDate = (value?: ?string, internalComponentError?: ?{error: ?string, errorCode: ?string}) => { if (!value) { return true; } - return isValidDate(value); + return isValidDate(value, internalComponentError); }; export const getEventDateValidatorContainers = () => { diff --git a/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/SingleEventRegistrationEntry.component.js b/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/SingleEventRegistrationEntry.component.js index 90047ba753..24340325cb 100644 --- a/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/SingleEventRegistrationEntry.component.js +++ b/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/SingleEventRegistrationEntry.component.js @@ -22,4 +22,3 @@ export const SingleEventRegistrationEntryComponent = ({ showAddRelationship, eve ); }; - diff --git a/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/SingleEventRegistrationEntry.container.js b/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/SingleEventRegistrationEntry.container.js index 3c7d2d66d8..3d88627fb9 100644 --- a/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/SingleEventRegistrationEntry.container.js +++ b/src/core_modules/capture-core/components/DataEntries/SingleEventRegistrationEntry/SingleEventRegistrationEntry.container.js @@ -13,13 +13,14 @@ import { defaultDialogProps as dialogConfig } from '../../Dialogs/DiscardDialog. import { getOpenDataEntryActions } from './DataEntryWrapper/DataEntry'; import type { ContainerProps, StateProps, MapStateToProps } from './SingleEventRegistrationEntry.types'; import { useCategoryCombinations } from '../../DataEntryDhis2Helpers/AOC/useCategoryCombinations'; +import { itemId } from './DataEntryWrapper/DataEntry/helpers/constants'; const inEffect = (state: ReduxState) => dataEntryHasChanges(state, 'singleEvent-newEvent') || state.newEventPage.showAddRelationship; const makeMapStateToProps = (): MapStateToProps => { const eventAccessSelector = makeEventAccessSelector(); return (state: ReduxState, { id }: ContainerProps): StateProps => ({ - ready: state.dataEntries[id], + ready: state.dataEntries[id]?.itemId === itemId, showAddRelationship: !!state.newEventPage.showAddRelationship, eventAccess: eventAccessSelector(state), }); diff --git a/src/core_modules/capture-core/components/DataEntry/dataEntryField/internal/DataEntryField.component.js b/src/core_modules/capture-core/components/DataEntry/dataEntryField/internal/DataEntryField.component.js index e20b69cca2..6d25a0c5ed 100644 --- a/src/core_modules/capture-core/components/DataEntry/dataEntryField/internal/DataEntryField.component.js +++ b/src/core_modules/capture-core/components/DataEntry/dataEntryField/internal/DataEntryField.component.js @@ -36,6 +36,8 @@ type Props = { type Options = { touched?: ?boolean, + error?: ?string, + errorCode?: ?string, }; type ContainerProps = { @@ -72,7 +74,7 @@ class DataEntryFieldPlain extends React.Component { handleSet = (value: any, options?: ?Options) => { const { validatorContainers, onUpdateFieldInner, onUpdateField } = this.props; const validationError = - getValidationError(value, validatorContainers); + getValidationError(value, validatorContainers, { error: options?.error, errorCode: options?.errorCode }); onUpdateFieldInner(value, { isValid: !validationError, validationError, diff --git a/src/core_modules/capture-core/components/DataEntry/dataEntryField/internal/dataEntryField.utils.js b/src/core_modules/capture-core/components/DataEntry/dataEntryField/internal/dataEntryField.utils.js index 322dfdd783..f42d00f85e 100644 --- a/src/core_modules/capture-core/components/DataEntry/dataEntryField/internal/dataEntryField.utils.js +++ b/src/core_modules/capture-core/components/DataEntry/dataEntryField/internal/dataEntryField.utils.js @@ -1,14 +1,16 @@ // @flow import i18n from '@dhis2/d2-i18n'; -type Validator = (value: any) => boolean | { valid: boolean, message: ?string }; +type Validator = (value: any, + internalComponentError?: ?{error: ?string, errorCode: ?string}) => + boolean | { valid: boolean, errorMessage?: ?string } | { valid: boolean, message?: ?string }; export type ValidatorContainer = { validator: Validator, message: string, }; -export function getValidationError(value: any, validatorContainers: ?Array) { +export function getValidationError(value: any, validatorContainers: ?Array, internalComponentError?: ?{error: ?string, errorCode: ?string}) { if (!validatorContainers) { return null; } @@ -16,13 +18,13 @@ export function getValidationError(value: any, validatorContainers: ?Array { const validator = validatorContainer.validator; - const result = validator(value); + const result = validator(value, internalComponentError); if (result === true || (result && result.valid)) { return false; } - message = (result && result.message) || validatorContainer.message; + message = (result && result.errorMessage) || (result && result.message) || validatorContainer.message; return true; }); diff --git a/src/core_modules/capture-core/components/FiltersForTypes/Date/DateFilter.component.js b/src/core_modules/capture-core/components/FiltersForTypes/Date/DateFilter.component.js index 09ce95ce70..c326e4477b 100644 --- a/src/core_modules/capture-core/components/FiltersForTypes/Date/DateFilter.component.js +++ b/src/core_modules/capture-core/components/FiltersForTypes/Date/DateFilter.component.js @@ -7,17 +7,16 @@ import { isValidZeroOrPositiveInteger } from 'capture-core-utils/validators/form import { SelectBoxes, orientations } from '../../FormFields/Options/SelectBoxes'; import { OptionSet } from '../../../metaData/OptionSet/OptionSet'; import { Option } from '../../../metaData/OptionSet/Option'; - +import type { UpdatableFilterContent } from '../types'; +import { type DateValue } from './types'; import { FromDateFilter } from './From.component'; import { ToDateFilter } from './To.component'; -import { isValidDate } from '../../../utils/validators/form'; -import { parseDate } from '../../../utils/converters/date'; import { dataElementTypes } from '../../../metaData'; -import type { UpdatableFilterContent } from '../types'; import './calendarFilterStyles.css'; import { mainOptionKeys, mainOptionTranslatedTexts } from './options'; import { getDateFilterData } from './dateFilterDataGetter'; import { RangeFilter } from './RangeFilter.component'; +import { parseDate } from '../../../utils/converters/date'; const getStyles = (theme: Theme) => ({ fromToContainer: { @@ -29,7 +28,7 @@ const getStyles = (theme: Theme) => ({ width: 30, display: 'flex', justifyContent: 'center', - alignItems: 'center', + alignItems: 'start', paddingTop: theme.typography.pxToRem(6), fontSize: theme.typography.body1.fontSize, }, @@ -43,8 +42,8 @@ const getStyles = (theme: Theme) => ({ }); export type Value = ?{ - from?: ?string, - to?: ?string, + from?: ?DateValue, + to?: ?DateValue, main?: ?string, start?: ?string, end?: ?string, @@ -52,9 +51,7 @@ export type Value = ?{ type Props = { onCommitValue: (value: ?{ from?: ?string, to?: ?string }) => void, - onUpdate: (commitValue?: any) => void, value: Value, - type: $Keys, classes: { fromToContainer: string, inputContainer: string, @@ -69,33 +66,33 @@ type State = { submitAttempted: boolean, }; -const getAbsoluteRangeErrors = (fromValue, toValue, type, submitAttempted) => { - let errors = { - minValueError: null, - maxValueError: null, - dateLogicError: null, - }; +// eslint-disable-next-line complexity +const getAbsoluteRangeErrors = (fromValue, toValue, submitAttempted) => { + const fromValueString = fromValue?.value; + const toValueString = toValue?.value; + const isFromValueValid = fromValue?.isValid; + const isToValueValid = toValue?.isValid; - if (!fromValue && !toValue) { - errors = { - ...errors, - dateLogicError: submitAttempted ? i18n.t(DateFilter.errorMessages.ABSOLUTE_RANGE_WITHOUT_VALUES) : null, - }; - } else { - const { isValid: isMinValueValid, error: minValueError } = DateFilter.validateField(fromValue, type); - const { isValid: isMaxValueValid, error: maxValueError } = DateFilter.validateField(toValue, type); - const hasDateLogicError = () => - isMinValueValid && isMaxValueValid && fromValue && toValue && DateFilter.isFromAfterTo(fromValue, toValue); - - errors = { - ...errors, - minValueError, - maxValueError, - dateLogicError: hasDateLogicError() ? i18n.t(DateFilter.errorMessages.FROM_GREATER_THAN_TO) : null, + if (!fromValueString && !toValueString) { + return { + dateLogicError: submitAttempted + ? i18n.t(DateFilter.errorMessages.ABSOLUTE_RANGE_WITHOUT_VALUES) + : null, }; } - return errors; + const hasDateLogicError = + fromValueString && + toValueString && + isFromValueValid && + isToValueValid && + DateFilter.isFromAfterTo(fromValueString, toValueString); + + return { + dateLogicError: hasDateLogicError + ? i18n.t(DateFilter.errorMessages.FROM_GREATER_THAN_TO) + : null, + }; }; const getRelativeRangeErrors = (startValue, endValue, submitAttempted) => { @@ -110,8 +107,8 @@ const getRelativeRangeErrors = (startValue, endValue, submitAttempted) => { bufferLogicError: submitAttempted ? i18n.t(DateFilter.errorMessages.RELATIVE_RANGE_WITHOUT_VALUES) : null, }; } - const { error: startValueError } = DateFilter.validateField(startValue, dataElementTypes.INTEGER_ZERO_OR_POSITIVE); - const { error: endValueError } = DateFilter.validateField(endValue, dataElementTypes.INTEGER_ZERO_OR_POSITIVE); + const { error: startValueError } = DateFilter.validateRelativeRangeValue(startValue); + const { error: endValueError } = DateFilter.validateRelativeRangeValue(endValue); errors = { ...errors, startValueError, @@ -125,18 +122,11 @@ const isAbsoluteRangeFilterValid = (fromValue, toValue) => { return false; } - const parseResultFrom = fromValue ? parseDate(fromValue) : { isValid: true, moment: null }; - const parseResultTo = toValue ? parseDate(toValue) : { isValid: true, moment: null }; - - if (!(parseResultFrom.isValid && parseResultTo.isValid)) { + if ((fromValue && !fromValue.isValid) || (toValue && !toValue.isValid)) { return false; } - const isValidMomentDate = () => - parseResultFrom.momentDate && - parseResultTo.momentDate && - parseResultFrom.momentDate.isAfter(parseResultTo.momentDate); - return !isValidMomentDate(); + return !DateFilter.isFromAfterTo(fromValue?.value, toValue?.value); }; const isRelativeRangeFilterValid = (startValue, endValue) => { @@ -144,8 +134,8 @@ const isRelativeRangeFilterValid = (startValue, endValue) => { return false; } if ( - !DateFilter.validateField(startValue, dataElementTypes.INTEGER_ZERO_OR_POSITIVE).isValid || - !DateFilter.validateField(endValue, dataElementTypes.INTEGER_ZERO_OR_POSITIVE).isValid + !DateFilter.validateRelativeRangeValue(startValue).isValid || + !DateFilter.validateRelativeRangeValue(endValue).isValid ) { return false; } @@ -154,7 +144,7 @@ const isRelativeRangeFilterValid = (startValue, endValue) => { // $FlowFixMe[incompatible-variance] automated comment class DateFilterPlain extends Component implements UpdatableFilterContent { - static validateField(value: ?string, type: $Keys) { + static validateRelativeRangeValue(value: ?string) { if (!value) { return { isValid: true, @@ -162,21 +152,18 @@ class DateFilterPlain extends Component implements UpdatableFilter }; } - // $FlowFixMe dataElementTypes flow error - const typeValidator = DateFilter.validatorForTypes[type]; - const isValid = typeValidator(value); + const isValid = isValidZeroOrPositiveInteger(value); return { isValid, - // $FlowFixMe dataElementTypes flow error - error: isValid ? null : i18n.t(DateFilter.errorMessages[type]), + error: isValid ? null : i18n.t(DateFilter.errorMessages[dataElementTypes.INTEGER_ZERO_OR_POSITIVE]), }; } static isFilterValid( mainValue?: ?string, - fromValue?: ?string, - toValue?: ?string, + fromValue?: ?DateValue, + toValue?: ?DateValue, startValue?: ?string, endValue?: ?string, ) { @@ -199,24 +186,19 @@ class DateFilterPlain extends Component implements UpdatableFilter } toD2DateTextFieldInstance: any; + constructor(props: Props) { super(props); this.state = { submitAttempted: false }; } + static errorMessages = { ABSOLUTE_RANGE_WITHOUT_VALUES: 'Please specify a range', RELATIVE_RANGE_WITHOUT_VALUES: 'Please specify the number of days', FROM_GREATER_THAN_TO: "The From date can't be after the To date", - MIN_GREATER_THAN_MAX: 'Days in the past cannot be greater than days in the future', - [dataElementTypes.DATE]: 'Please provide a valid date', [dataElementTypes.INTEGER_ZERO_OR_POSITIVE]: 'Please provide zero or a positive integer', }; - static validatorForTypes = { - [dataElementTypes.DATE]: isValidDate, - [dataElementTypes.INTEGER_ZERO_OR_POSITIVE]: isValidZeroOrPositiveInteger, - }; - static mainOptionSet = new OptionSet('mainOptions', [ new Option((_this) => { _this.text = mainOptionTranslatedTexts[mainOptionKeys.TODAY]; @@ -251,12 +233,14 @@ class DateFilterPlain extends Component implements UpdatableFilter _this.value = mainOptionKeys.ABSOLUTE_RANGE; }), ]); + static optionSet = new OptionSet('mainOptions', [ new Option((_this) => { _this.text = mainOptionTranslatedTexts[mainOptionKeys.RELATIVE_RANGE]; _this.value = mainOptionKeys.RELATIVE_RANGE; }), ]); + onGetUpdateData(updatedValues?: Value) { const value = typeof updatedValues !== 'undefined' ? updatedValues : this.props.value; @@ -302,23 +286,11 @@ class DateFilterPlain extends Component implements UpdatableFilter } handleEnterKeyInFrom = () => { - this.toD2DateTextFieldInstance.focus(); + this.toD2DateTextFieldInstance && this.toD2DateTextFieldInstance.focus(); }; handleDateSelectedFromCalendarInFrom = () => { - this.toD2DateTextFieldInstance.focus(); - }; - - handleEnterKeyInTo = (value: { [key: string]: string }) => { - // validate with updated values - const values = this.getUpdatedValue(value); - this.setState({ submitAttempted: true }); - - if (values && !DateFilter.isFilterValid(values.main, values.from, values.to, values.start, values.end)) { - this.props.onCommitValue(values); - } else { - this.props.onUpdate(values || null); - } + this.toD2DateTextFieldInstance && this.toD2DateTextFieldInstance.focus(); }; handleFieldBlur = (value: { [key: string]: string }) => { @@ -342,7 +314,6 @@ class DateFilterPlain extends Component implements UpdatableFilter const toValue = values && values.to; const startValue = values && values.start; const endValue = values && values.end; - const type = this.props.type; const errors = { minValueError: null, maxValueError: null, @@ -353,7 +324,7 @@ class DateFilterPlain extends Component implements UpdatableFilter }; if (mainValue === mainOptionKeys.ABSOLUTE_RANGE) { - return { ...errors, ...getAbsoluteRangeErrors(fromValue, toValue, type, submitAttempted) }; + return { ...errors, ...getAbsoluteRangeErrors(fromValue, toValue, submitAttempted) }; } if (mainValue === mainOptionKeys.RELATIVE_RANGE) { @@ -364,8 +335,11 @@ class DateFilterPlain extends Component implements UpdatableFilter render() { const { value, classes, onFocusUpdateButton } = this.props; - const { minValueError, maxValueError, startValueError, endValueError, dateLogicError, bufferLogicError } = + const fromValue = value?.from; + const toValue = value?.to; + const { startValueError, endValueError, dateLogicError, bufferLogicError } = this.getErrors(); + return (
@@ -384,12 +358,12 @@ class DateFilterPlain extends Component implements UpdatableFilter {/* $FlowSuppress: Flow not working 100% with HOCs */} {/* $FlowFixMe[prop-missing] automated comment */}
{i18n.t('to')}
@@ -397,13 +371,12 @@ class DateFilterPlain extends Component implements UpdatableFilter {/* $FlowSuppress: Flow not working 100% with HOCs */} {/* $FlowFixMe[prop-missing] automated comment */}
@@ -424,7 +397,6 @@ class DateFilterPlain extends Component implements UpdatableFilter startValueError={startValueError} endValueError={endValueError} handleFieldBlur={this.handleFieldBlur} - handleEnterKeyInTo={this.handleEnterKeyInTo} />
{dateLogicError}
diff --git a/src/core_modules/capture-core/components/FiltersForTypes/Date/DateFilterManager.component.js b/src/core_modules/capture-core/components/FiltersForTypes/Date/DateFilterManager.component.js index da08dcfca8..928d9fd754 100644 --- a/src/core_modules/capture-core/components/FiltersForTypes/Date/DateFilterManager.component.js +++ b/src/core_modules/capture-core/components/FiltersForTypes/Date/DateFilterManager.component.js @@ -8,7 +8,7 @@ import { mainOptionKeys } from './options'; import { dateFilterTypes } from './constants'; import type { DateFilterData } from './types'; import type { Value } from './DateFilter.component'; -import { areRelativeRangeValuesSupported } from '../../../utils/validators/areRelativeRangeValuesSupported'; +import { areRelativeRangeValuesSupported } from '../../../utils/validation/validators/areRelativeRangeValuesSupported'; type Props = { filter: ?DateFilterData, @@ -28,8 +28,14 @@ export class DateFilterManager extends React.Component { static calculateAbsoluteRangeValueState(filter: DateFilterData) { return { main: mainOptionKeys.ABSOLUTE_RANGE, - from: filter.ge && DateFilterManager.convertDateForEdit(filter.ge), - to: filter.le && DateFilterManager.convertDateForEdit(filter.le), + from: filter.ge ? { + value: filter.ge && DateFilterManager.convertDateForEdit(filter.ge), + isValid: true, + } : undefined, + to: filter.le ? { + value: filter.le && DateFilterManager.convertDateForEdit(filter.le), + isValid: true, + } : undefined, }; } static calculateRelativeRangeValueState(filter: DateFilterData) { @@ -74,7 +80,7 @@ export class DateFilterManager extends React.Component { }; } - handleCommitValue = (value: ?Object) => { + handleCommitValue = (value: ?Value) => { this.setState({ value }); this.props.handleCommitValue && this.props.handleCommitValue(); }; diff --git a/src/core_modules/capture-core/components/FiltersForTypes/Date/End.component.js b/src/core_modules/capture-core/components/FiltersForTypes/Date/End.component.js index cf5a698740..444ba6b26d 100644 --- a/src/core_modules/capture-core/components/FiltersForTypes/Date/End.component.js +++ b/src/core_modules/capture-core/components/FiltersForTypes/Date/End.component.js @@ -22,12 +22,6 @@ class EndRangeFilterPlain extends Component { this.props.onBlur(EndRangeFilterPlain.getValueObject(value)); }; - handleKeyPress = (event: SyntheticKeyboardEvent) => { - if (event.key === 'Enter') { - this.props.onEnterKey(EndRangeFilterPlain.getValueObject(this.props.value || '')); - } - }; - render() { const { error, onBlur, onEnterKey, textFieldRef, errorClass, ...passOnProps } = this.props; return ( @@ -35,7 +29,6 @@ class EndRangeFilterPlain extends Component { {/* $FlowFixMe[cannot-spread-inexact] automated comment */} void, - onEnterKey: () => void, - errorClass: string, + errorClass: ?string, + onBlur: ({ from: DateValue }) => void, }; class FromDateFilterPlain extends Component { - static getValueObject(value: string) { - return { from: value.trim() }; - } - displayOptions: Object; - constructor(props: Props) { - super(props); - this.displayOptions = { - showWeekdays: true, - showHeader: false, - }; + static getValueObject(value: DateValue) { + return { from: { ...value } }; } - handleBlur = (value: string) => { + handleBlur = (value: DateValue) => { this.props.onBlur(FromDateFilterPlain.getValueObject(value)); } - handleKeyPress = (event: SyntheticKeyboardEvent) => { - if (event.key === 'Enter') { - this.props.onEnterKey(); - } - } - render() { - const { error, errorClass, onBlur, onEnterKey, ...passOnProps } = this.props; + const { error, errorClass, onBlur, ...passOnProps } = this.props; return (
{/* $FlowFixMe[cannot-spread-inexact] automated comment */}
- {error} + {error ? i18n.t('Please provide a valid date') : error}
); diff --git a/src/core_modules/capture-core/components/FiltersForTypes/Date/RangeFilter.component.js b/src/core_modules/capture-core/components/FiltersForTypes/Date/RangeFilter.component.js index 32dd4c6fd5..f74c382ff7 100644 --- a/src/core_modules/capture-core/components/FiltersForTypes/Date/RangeFilter.component.js +++ b/src/core_modules/capture-core/components/FiltersForTypes/Date/RangeFilter.component.js @@ -41,7 +41,6 @@ type RangeFilterData = ?{ type Props = { handleFieldBlur: (value: ?Value) => void, - handleEnterKeyInTo: (value: { [key: string]: ?string }) => void, value: RangeFilterData, startValueError?: ?string, endValueError?: ?string, @@ -73,10 +72,6 @@ class RangeFilterPlain extends Component { this.endD2TextFieldInstance.focus(); }; - handleEnterKeyInEnd = (value: { [key: string]: ?string }) => { - this.props.handleEnterKeyInTo && this.props.handleEnterKeyInTo(value); - }; - handleFieldBlur = (value: { [key: string]: ?string }) => { this.props.handleFieldBlur && this.props.handleFieldBlur(this.getUpdatedValue(value)); }; @@ -110,7 +105,6 @@ class RangeFilterPlain extends Component { error={endValueError} errorClass={classes.error} onBlur={this.handleFieldBlur} - onEnterKey={this.handleEnterKeyInEnd} textFieldRef={this.setEndD2TextFieldInstance} /> diff --git a/src/core_modules/capture-core/components/FiltersForTypes/Date/To.component.js b/src/core_modules/capture-core/components/FiltersForTypes/Date/To.component.js index 1a3a7405ef..29a97465ee 100644 --- a/src/core_modules/capture-core/components/FiltersForTypes/Date/To.component.js +++ b/src/core_modules/capture-core/components/FiltersForTypes/Date/To.component.js @@ -2,69 +2,45 @@ import React, { Component } from 'react'; import i18n from '@dhis2/d2-i18n'; import { D2Date } from '../../FormFields/DateAndTime/D2Date/D2Date.component'; -import { anchorPositions, modes, absoluteDirections } from '../../FormFields/DateAndTime/D2Date/d2DatePopup.const'; import { withInternalChangeHandler } from '../../FormFields/withInternalChangeHandler'; +import { type DateValue } from './types/date.types'; type Props = { - value: ?string, + value: ?DateValue, error: ?string, - onBlur: ({ to: string }) => void, - onEnterKey: ({ to: string }) => void, - textFieldRef: (instance: any) => void, - errorClass: string, + errorClass: ?string, + onBlur: ({ to: DateValue }) => void, onFocusUpdateButton: () => void, }; class ToDateFilterPlain extends Component { - static getValueObject(value: string) { - return { to: value.trim() }; + static getValueObject(value: DateValue) { + return { to: { ...value } }; } - displayOptions: Object; - constructor(props: Props) { - super(props); - this.displayOptions = { - showWeekdays: true, - showHeader: false, - }; - } - - handleBlur = (value: string) => { + handleBlur = (value: DateValue) => { this.props.onBlur(ToDateFilterPlain.getValueObject(value)); } - handleKeyPress = (event: SyntheticKeyboardEvent) => { - if (event.key === 'Enter') { - this.props.onEnterKey(ToDateFilterPlain.getValueObject(this.props.value || '')); - } - } - handleDateSelectedFromCalendar = () => { this.props.onFocusUpdateButton(); } render() { - const { error, onBlur, onEnterKey, errorClass, onFocusUpdateButton, ...passOnProps } = this.props; + const { error, errorClass, onBlur, onFocusUpdateButton, ...passOnProps } = this.props; return (
{/* $FlowFixMe[cannot-spread-inexact] automated comment */}
- {error} + {error ? i18n.t('Please provide a valid date') : error}
); diff --git a/src/core_modules/capture-core/components/FiltersForTypes/Date/dateFilterDataGetter.js b/src/core_modules/capture-core/components/FiltersForTypes/Date/dateFilterDataGetter.js index 550418e0d4..f7758cd1b1 100644 --- a/src/core_modules/capture-core/components/FiltersForTypes/Date/dateFilterDataGetter.js +++ b/src/core_modules/capture-core/components/FiltersForTypes/Date/dateFilterDataGetter.js @@ -3,12 +3,12 @@ import { parseNumber } from 'capture-core-utils/parsers'; import { mainOptionKeys } from './options'; import { dateFilterTypes } from './constants'; import { parseDate } from '../../../utils/converters/date'; -import { type AbsoluteDateFilterData, type RelativeDateFilterData } from './types'; +import { type AbsoluteDateFilterData, type RelativeDateFilterData, type DateValue } from './types'; type Value = { main: string, - from?: ?string, - to?: ?string, + from?: ?DateValue, + to?: ?DateValue, start?: ?string, end?: ?string, }; @@ -53,7 +53,7 @@ function convertRelativeRange(value: Value) { function convertSelections(value: Value) { if (value.main === mainOptionKeys.ABSOLUTE_RANGE) { - return convertAbsoluteDate(value.from, value.to); + return convertAbsoluteDate(value?.from?.value, value?.to?.value); } if (value.main === mainOptionKeys.RELATIVE_RANGE) { return convertRelativeRange(value); diff --git a/src/core_modules/capture-core/components/FiltersForTypes/Date/types/date.types.js b/src/core_modules/capture-core/components/FiltersForTypes/Date/types/date.types.js index 18324b9029..b34381b58d 100644 --- a/src/core_modules/capture-core/components/FiltersForTypes/Date/types/date.types.js +++ b/src/core_modules/capture-core/components/FiltersForTypes/Date/types/date.types.js @@ -13,4 +13,10 @@ export type RelativeDateFilterData = {| endBuffer?: number, |}; +export type DateValue = {| + value: ?string, + error?: ?string, + isValid: ?boolean, +|}; + export type DateFilterData = AbsoluteDateFilterData | RelativeDateFilterData; diff --git a/src/core_modules/capture-core/components/FiltersForTypes/Date/types/index.js b/src/core_modules/capture-core/components/FiltersForTypes/Date/types/index.js index d98412bd3f..1e93bcf8de 100644 --- a/src/core_modules/capture-core/components/FiltersForTypes/Date/types/index.js +++ b/src/core_modules/capture-core/components/FiltersForTypes/Date/types/index.js @@ -1,2 +1,2 @@ // @flow -export { AbsoluteDateFilterData, RelativeDateFilterData, DateFilterData } from './date.types'; +export { AbsoluteDateFilterData, RelativeDateFilterData, DateFilterData, DateValue } from './date.types'; diff --git a/src/core_modules/capture-core/components/FiltersForTypes/Numeric/NumericFilter.component.js b/src/core_modules/capture-core/components/FiltersForTypes/Numeric/NumericFilter.component.js index 4450e1a539..7b9c48ba89 100644 --- a/src/core_modules/capture-core/components/FiltersForTypes/Numeric/NumericFilter.component.js +++ b/src/core_modules/capture-core/components/FiltersForTypes/Numeric/NumericFilter.component.js @@ -153,6 +153,10 @@ class NumericFilterPlain extends Component implements UpdatableFilterCont this.props.onCommitValue(this.getUpdatedValue(value)); } + handleFieldChange = (value: {[key: string]: string}) => { + this.props.onCommitValue(this.getUpdatedValue(value)); + } + setMaxD2TextFieldInstance = (instance: any) => { this.maxD2TextFieldInstance = instance; } @@ -195,6 +199,7 @@ class NumericFilterPlain extends Component implements UpdatableFilterCont errorClass={classes.error} onBlur={this.handleFieldBlur} onEnterKey={this.handleEnterKeyInMin} + onChange={this.handleFieldChange} />
implements UpdatableFilterCont onBlur={this.handleFieldBlur} onEnterKey={this.handleEnterKeyInMax} textFieldRef={this.setMaxD2TextFieldInstance} + onChange={this.handleFieldChange} />
diff --git a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2Date.component.js b/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2Date.component.js index 2644c2e809..eacca0a466 100644 --- a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2Date.component.js +++ b/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2Date.component.js @@ -1,207 +1,86 @@ // @flow import * as React from 'react'; -import { withStyles } from '@material-ui/core/styles'; -import { lowerCaseFirstLetter } from 'capture-core-utils/string/lowerCaseFirstLetter'; -import { D2TextField } from '../../Generic/D2TextField.component'; -import { D2DatePopup } from './D2DatePopup.component'; -import { D2DateCalendar } from './D2DateCalendar.component'; +import { CalendarInput } from '@dhis2/ui'; +import { systemSettingsStore } from '../../../../../capture-core/metaDataMemoryStores'; +import { type DateValue } from '../../../FiltersForTypes/Date/types/date.types'; type Props = { - label: string, + label?: ?string, value: ?string, - width: number, + calendar?: string, calendarWidth?: ?number, - calendarHeight?: ?number, inputWidth?: ?number, - onBlur: (value: string) => void, + onBlur: (value: DateValue) => void, onFocus?: ?() => void, onDateSelectedFromCalendar?: () => void, - classes: Object, - textFieldRef?: (instance: D2TextField) => void, + classes?: Object, + disabled?: boolean, }; type State = { - popoverOpen: boolean, + date: ?string, }; -const styles = () => ({ - textField: { - width: '100%', - }, -}); +type Validation = {| + validationCode: string, + validationText: string, + error: boolean, + valid: boolean, +|}; -class D2DatePlain extends React.Component { - static splitPassOnProps(passOnProps: ?Object) { - const splittedProps = { - input: {}, - popup: {}, - calendar: {}, - }; - - if (!passOnProps) { - return splittedProps; - } - - return Object - .keys(passOnProps) - .reduce((accSplittedProps, propKey) => { - let propContainer; - if (propKey.startsWith(D2Date.propContainers.CALENDAR)) { - propContainer = D2Date.propContainers.CALENDAR; - } else if (propKey.startsWith(D2Date.propContainers.POPUP)) { - propContainer = D2Date.propContainers.POPUP; - } else { - propContainer = D2Date.propContainers.INPUT; - } - - const outputKey = lowerCaseFirstLetter(propKey.replace(propContainer, '')); - - accSplittedProps[propContainer][outputKey] = passOnProps[propKey]; - return accSplittedProps; - }, splittedProps); - } - - containerInstance: ?HTMLElement; - handleTextFieldFocus: () => void; - handleDateSelected: (value: string) => void; - handleTextFieldBlur: (value: string) => void; - hidePopover: () => void; - handleDocumentClick: (event: SyntheticEvent) => void; +export class D2Date extends React.Component { + handleDateSelected: (value: {calendarDateString: string}) => void; constructor(props: Props) { super(props); - - this.state = { - popoverOpen: false, - }; - - this.handleTextFieldFocus = this.handleTextFieldFocus.bind(this); this.handleDateSelected = this.handleDateSelected.bind(this); - this.handleTextFieldBlur = this.handleTextFieldBlur.bind(this); - this.hidePopover = this.hidePopover.bind(this); - this.handleDocumentClick = this.handleDocumentClick.bind(this); - } - - componentWillUnmount() { - // $FlowFixMe[incompatible-call] automated comment - document.removeEventListener('click', this.handleDocumentClick); } - static propContainers = { - CALENDAR: 'calendar', - POPUP: 'popup', - INPUT: 'input', - }; - - handleTextFieldFocus() { - // $FlowFixMe[incompatible-call] automated comment - document.removeEventListener('click', this.handleDocumentClick); - - this.setState({ - popoverOpen: true, - }); - - this.props.onFocus && this.props.onFocus(); - } - - handleDateSelected(value: string) { - this.props.onBlur(value); - this.hidePopover(); - this.props.onDateSelectedFromCalendar && this.props.onDateSelectedFromCalendar(); - - // $FlowFixMe[incompatible-call] automated comment - document.removeEventListener('click', this.handleDocumentClick); - } - - handleDocumentClick(event) { - if ((event.target && event.target.className && - event.target.className.startsWith && - event.target.className.startsWith('Cal__')) || - (event.target && event.target.className && - event.target.className.baseVal && event.target.className.baseVal.startsWith('Cal__'))) { - return; - } - - this.hidePopover(); - - // $FlowFixMe[incompatible-call] automated comment - document.removeEventListener('click', this.handleDocumentClick); - } - - handleTextFieldBlur(value: string, event) { - this.props.onBlur(value); - - if (!event.relatedTarget || event.relatedTarget.className !== 'Cal__Container__root') { - this.hidePopover(); - } else { - // $FlowFixMe[incompatible-call] automated comment - document.addEventListener('click', this.handleDocumentClick); + handleDateSelected(value: {calendarDateString: string, validation: Validation}) { + const { calendarDateString: selectedDate, validation } = value || {}; + if (selectedDate !== undefined) { + this.props.onBlur({ + value: selectedDate, + error: validation?.validationText, + isValid: validation?.valid, + }); } - } - - hidePopover() { - this.setState({ - popoverOpen: false, - }); + this.props.onDateSelectedFromCalendar && this.props.onDateSelectedFromCalendar(); } render() { const { - width, + calendar, calendarWidth, - calendarHeight, inputWidth, classes, onBlur, onFocus, onDateSelectedFromCalendar, - textFieldRef, + value, + disabled, ...passOnProps } = this.props; - const { popoverOpen } = this.state; - const textFieldRefPropObject = textFieldRef ? { ref: textFieldRef } : null; - const calculatedInputWidth = inputWidth || width; - const calculatedCalendarWidth = calendarWidth || width; - const splittedPassOnProps = D2Date.splitPassOnProps(passOnProps); - const calculatedCalendarHeight = calendarHeight || 350; + const calendarType = calendar || 'gregory'; + const format = systemSettingsStore.get().dateFormat; return ( -
{ this.containerInstance = containerInstance; }} - style={{ - width, - }} - > - {/* $FlowFixMe[incompatible-type] automated comment */} - + - - -
); } } -export const D2Date = withStyles(styles)(D2DatePlain); diff --git a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2DateCalendar.component.js b/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2DateCalendar.component.js deleted file mode 100644 index e20f89d12a..0000000000 --- a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2DateCalendar.component.js +++ /dev/null @@ -1,158 +0,0 @@ -// @flow -/* eslint-disable class-methods-use-this */ -import React, { Component } from 'react'; -import { withStyles, withTheme } from '@material-ui/core/styles'; -import InfiniteCalendar from '@joakim_sm/react-infinite-calendar'; -import { capitalizeFirstLetter } from 'capture-core-utils/string'; -import '@joakim_sm/react-infinite-calendar/styles.css'; -import './customStyles.css'; -import { parseDate, convertDateObjectToDateFormatString } from '../../../../utils/converters/date'; -import { CurrentLocaleData } from '../../../../utils/localeData/CurrentLocaleData'; -import { getTheme } from './getTheme'; - -type Props = { - onDateSelected: (value: any) => void, - value?: ?string, - minMoment?: ?Object, - maxMoment?: ?Object, - currentWidth: number, - height?: ?number, - classes: Object, - displayOptions?: ?Object, - theme: Object, -}; - -const styles = () => ({ - container: {}, -}); - -class D2DateCalendarPlain extends Component { - handleChange: (e: any, dates: ?Array) => void; - calendarLocaleData: Object; - theme: Object; - displayOptions: Object; - - constructor(props: Props) { - super(props); - this.handleChange = this.handleChange.bind(this); - - const projectLocaleData = CurrentLocaleData.get(); - const currentWidth = this.props.currentWidth; - - this.calendarLocaleData = { - locale: projectLocaleData.dateFnsLocale, - headerFormat: currentWidth >= 400 ? - projectLocaleData.calendarFormatHeaderLong : - projectLocaleData.calendarFormatHeaderShort, - weekdays: projectLocaleData.weekDaysShort.map(day => capitalizeFirstLetter(day)), - blank: projectLocaleData.selectDatesText, - todayLabel: { - long: projectLocaleData.todayLabelLong, - short: projectLocaleData.todayLabelShort, - }, - weekStartsOn: projectLocaleData.weekStartsOn, - }; - - this.theme = getTheme(this.props.theme); - - - this.displayOptions = { - ...D2DateCalendar.displayOptions, - ...this.props.displayOptions, - }; - } - - shouldComponentUpdate(nextProps: Props) { - // Selecting multiple dates, then updating the props to the infiniteCalendar makes the Component "jump" back to the first selected date - if (nextProps.currentWidth !== this.props.currentWidth) { - const projectLocaleData = CurrentLocaleData.get(); - if (nextProps.currentWidth < 400) { - this.calendarLocaleData.headerFormat = projectLocaleData.calendarFormatHeaderShort; - } else { - this.calendarLocaleData.headerFormat = projectLocaleData.calendarFormatHeaderLong; - } - return true; - } - return false; - } - - static displayOptions = { - showHeader: false, - }; - - handleChange(changeDate: Date) { - const dateFormatString = convertDateObjectToDateFormatString(changeDate); - this.props.onDateSelected(dateFormatString); - } - - getValue(inputValue: ?string) { - if (!inputValue) { - return null; - } - - const parseData = parseDate(inputValue); - if (!parseData.isValid) { - return null; - } - - // $FlowFixMe[incompatible-use] automated comment - return parseData.momentDate.toDate(); - } - - getMinMaxProps() { - const minMaxProps: {min?: Date, minDate?: Date, max?: Date, maxDate?: Date} = {}; - - const minMoment = this.props.minMoment; - const maxMoment = this.props.maxMoment; - - if (minMoment) { - const minDate = minMoment.toDate(); - minMaxProps.min = minDate; - minMaxProps.minDate = minDate; - } - - if (maxMoment) { - const maxDate = maxMoment.toDate(); - minMaxProps.max = maxDate; - minMaxProps.maxDate = maxDate; - } - return minMaxProps; - } - - render() { - const { - value, - classes, - currentWidth, - height, - minMoment, - maxMoment, - onDateSelected, - theme, - displayOptions, - ...passOnProps - } = this.props; - - return ( -
- { /* $FlowFixMe */ } - -
- ); - } -} - -export const D2DateCalendar = withTheme()(withStyles(styles)(D2DateCalendarPlain)); diff --git a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2DatePopup.component.js b/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2DatePopup.component.js deleted file mode 100644 index 311391c75b..0000000000 --- a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/D2DatePopup.component.js +++ /dev/null @@ -1,94 +0,0 @@ -// @flow -import * as React from 'react'; -import { withStyles } from '@material-ui/core/styles'; -import { anchorPositions, modes, absoluteDirections } from './d2DatePopup.const'; - -const getStyles = () => ({ - containerAbsolute: { - position: 'relative', - }, - containerInline: {}, - calendarAbsolute: { - position: 'absolute', - zIndex: 201, - }, - calendarInline: {}, -}); - -type Props = { - open: boolean, - children: React.Node, - anchorPosition?: $Values, - mode?: $Values, - absoluteDirection: $Values, - inputWidth: number, - calendarWidth: number, - classes: { - containerAbsolute: string, - containerInline: string, - calendarAbsolute: string, - calendarInline: string, - }, - inputUsesFloatingLabel: boolean, -}; - -class D2DatePopupPlain extends React.Component { - getAbsoluteBottom() { - const inputUsesFloatingLabel = this.props.inputUsesFloatingLabel; - return inputUsesFloatingLabel ? 60 : 40; - } - getAbsoluteVerticalPosition() { - const absoluteDirection = this.props.absoluteDirection; - return absoluteDirection === absoluteDirections.UP ? { bottom: this.getAbsoluteBottom() } : { top: 0 }; - } - calculateMarginLeftInline() { - const { inputWidth, calendarWidth } = this.props; - return calendarWidth - inputWidth; - } - getPopupStyle() { - const { anchorPosition, mode } = this.props; - - let calendarStyle; - if (anchorPosition === anchorPositions.RIGHT) { - calendarStyle = mode === modes.INLINE ? - { marginLeft: `-${this.calculateMarginLeftInline()}px` } : - { ...this.getAbsoluteVerticalPosition(), right: 0 }; - } else { - calendarStyle = mode === modes.INLINE ? { } : { ...this.getAbsoluteVerticalPosition(), left: 0 }; - } - - return calendarStyle; - } - - render() { - const { - open, - mode, - classes, - children, - } = this.props; - - if (!open) { - return null; - } - - const containerClasses = mode === modes.INLINE ? classes.containerInline : classes.containerAbsolute; - const calendarClasses = mode === modes.INLINE ? classes.calendarInline : classes.calendarAbsolute; - const calendarStyle = this.getPopupStyle(); - - return ( -
-
- {children} -
-
- ); - } -} - -export const D2DatePopup = withStyles(getStyles)(D2DatePopupPlain); diff --git a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/customStyles.css b/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/customStyles.css deleted file mode 100644 index fdcb5d1cbb..0000000000 --- a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/customStyles.css +++ /dev/null @@ -1,12 +0,0 @@ -.Cal__Today__root { - align-items: center; - justify-content: center; -} -.Cal__Today__root .Cal__Today__chevron { - position: unset; - top: unset; - margin-left: 5px; - margin-top: 0; - margin-bottom: 0; - margin-right: 0; -} \ No newline at end of file diff --git a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/d2DatePopup.const.js b/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/d2DatePopup.const.js deleted file mode 100644 index 27d68de2ec..0000000000 --- a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/d2DatePopup.const.js +++ /dev/null @@ -1,16 +0,0 @@ -// @flow - -export const anchorPositions = { - LEFT: 'left', - RIGHT: 'right', -}; - -export const absoluteDirections = { - UP: 'up', - DOWN: 'down', -}; - -export const modes = { - ABSOLUTE: 'absolute', - INLINE: 'inline', -}; diff --git a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/getTheme.js b/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/getTheme.js deleted file mode 100644 index ad8c635647..0000000000 --- a/src/core_modules/capture-core/components/FormFields/DateAndTime/D2Date/getTheme.js +++ /dev/null @@ -1,14 +0,0 @@ -// @flow - -export const getTheme = (theme: Theme) => ({ - accentColor: theme.palette.secondary.main, - floatingNav: { - background: 'rgba(0, 30, 64, 0.8)', - chevron: 'rgb(145, 203, 193)', - color: 'white', - }, - headerColor: theme.palette.primary.main, - todayColor: theme.palette.secondary.main, - selectionColor: theme.palette.primary.main, - weekdayColor: theme.palette.primary.main, -}); diff --git a/src/core_modules/capture-core/components/FormFields/New/Fields/AgeField/AgeField.component.js b/src/core_modules/capture-core/components/FormFields/New/Fields/AgeField/AgeField.component.js index c92edaa872..2306b0854d 100644 --- a/src/core_modules/capture-core/components/FormFields/New/Fields/AgeField/AgeField.component.js +++ b/src/core_modules/capture-core/components/FormFields/New/Fields/AgeField/AgeField.component.js @@ -3,7 +3,6 @@ import * as React from 'react'; import { withStyles, withTheme } from '@material-ui/core/styles'; import { AgeField as UIAgeField } from 'capture-ui'; import moment from 'moment'; -import { withCalendarProps } from '../../HOC/withCalendarProps'; import { parseDate, convertMomentToDateFormatString } from '../../../../../utils/converters/date'; import { systemSettingsStore } from '../../../../../metaDataMemoryStores'; @@ -41,18 +40,10 @@ type Props = { innerInputInfo: string, innerInputValidating: string, }, - calendarTheme: Object, - calendarLocale: Object, - calendarOnConvertValueIn: Function, - calendarOnConvertValueOut: Function, } const AgeFieldPlain = (props: Props) => { const { - calendarTheme, - calendarLocale, - calendarOnConvertValueIn, - calendarOnConvertValueOut, ...passOnProps } = props; @@ -62,14 +53,10 @@ const AgeFieldPlain = (props: Props) => { onParseDate={parseDate} onGetFormattedDateStringFromMoment={convertMomentToDateFormatString} moment={moment} - dateCalendarTheme={calendarTheme} - dateCalendarLocale={calendarLocale} - dateCalendarOnConvertValueIn={calendarOnConvertValueIn} - dateCalendarOnConvertValueOut={calendarOnConvertValueOut} datePlaceholder={systemSettingsStore.get().dateFormat.toLowerCase()} {...passOnProps} /> ); }; -export const AgeField = withTheme()(withCalendarProps()(withStyles(getStyles)(AgeFieldPlain))); +export const AgeField = withTheme()(withStyles(getStyles)(AgeFieldPlain)); diff --git a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateField/DateField.component.js b/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateField/DateField.component.js index f5e1f1ed62..8ed4bf9b8c 100644 --- a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateField/DateField.component.js +++ b/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateField/DateField.component.js @@ -2,7 +2,6 @@ import * as React from 'react'; import { withStyles, withTheme } from '@material-ui/core/styles'; import { DateField as UIDateField } from 'capture-ui'; -import { withCalendarProps } from '../../../HOC/withCalendarProps'; import { systemSettingsStore } from '../../../../../../metaDataMemoryStores'; const getStyles = (theme: Theme) => ({ @@ -44,4 +43,4 @@ class DateFieldPlain extends React.Component { } } -export const DateField = withTheme()(withCalendarProps()(withStyles(getStyles)(DateFieldPlain))); +export const DateField = withTheme()(withStyles(getStyles)(DateFieldPlain)); diff --git a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateRangeField/DateRangeField.component.js b/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateRangeField/DateRangeField.component.js index ac892e4aae..496d330d03 100644 --- a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateRangeField/DateRangeField.component.js +++ b/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateRangeField/DateRangeField.component.js @@ -2,7 +2,6 @@ import * as React from 'react'; import { withStyles, withTheme } from '@material-ui/core/styles'; import { DateRangeField as UIDateRangeField } from 'capture-ui'; -import { withCalendarProps } from '../../../HOC/withCalendarProps'; const getStyles = (theme: Theme) => ({ innerInputError: { @@ -49,4 +48,4 @@ const DateRangeFieldPlain = (props: Props) => { ); }; -export const DateRangeField = withTheme()(withCalendarProps()(withStyles(getStyles)(DateRangeFieldPlain))); +export const DateRangeField = withTheme()(withStyles(getStyles)(DateRangeFieldPlain)); diff --git a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateTimeField/DateTimeField.component.js b/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateTimeField/DateTimeField.component.js index 64590c2413..a8d7a72d82 100644 --- a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateTimeField/DateTimeField.component.js +++ b/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateTimeField/DateTimeField.component.js @@ -2,7 +2,6 @@ import * as React from 'react'; import { withStyles, withTheme } from '@material-ui/core/styles'; import { DateTimeField as UIDateTimeField } from 'capture-ui'; -import { withCalendarProps } from '../../../HOC/withCalendarProps'; const getStyles = (theme: Theme) => ({ innerInputError: { @@ -42,4 +41,4 @@ class DateTimeFieldPlain extends React.Component { } } -export const DateTimeField = withTheme()(withCalendarProps()(withStyles(getStyles)(DateTimeFieldPlain))); +export const DateTimeField = withTheme()(withStyles(getStyles)(DateTimeFieldPlain)); diff --git a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateTimeRangeField/DateTimeRangeField.component.js b/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateTimeRangeField/DateTimeRangeField.component.js index c65b6fffd0..852b33525f 100644 --- a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateTimeRangeField/DateTimeRangeField.component.js +++ b/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/DateTimeRangeField/DateTimeRangeField.component.js @@ -2,7 +2,6 @@ import * as React from 'react'; import { withStyles, withTheme } from '@material-ui/core/styles'; import { DateTimeRangeField as UIDateTimeRangeField } from 'capture-ui'; -import { withCalendarProps } from '../../../HOC/withCalendarProps'; const getStyles = (theme: Theme) => ({ innerInputError: { @@ -42,4 +41,4 @@ class DateTimeRangeFieldPlain extends React.Component { } } -export const DateTimeRangeField = withTheme()(withCalendarProps()(withStyles(getStyles)(DateTimeRangeFieldPlain))); +export const DateTimeRangeField = withTheme()(withStyles(getStyles)(DateTimeRangeFieldPlain)); diff --git a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/getCalendarTheme.js b/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/getCalendarTheme.js deleted file mode 100644 index ba5ee04cbb..0000000000 --- a/src/core_modules/capture-core/components/FormFields/New/Fields/DateAndTimeFields/getCalendarTheme.js +++ /dev/null @@ -1,14 +0,0 @@ -// @flow - -export const getCalendarTheme = (theme: Theme) => ({ - accentColor: theme.palette.secondary.main, - floatingNav: { - background: 'rgba(0, 30, 64, 0.8)', - chevron: 'rgb(145, 203, 193)', - color: 'white', - }, - headerColor: theme.palette.primary.main, - todayColor: theme.palette.secondary.main, - selectionColor: theme.palette.primary.main, - weekdayColor: theme.palette.primary.main, -}); diff --git a/src/core_modules/capture-core/components/FormFields/New/HOC/messages/withDisplayMessages.js b/src/core_modules/capture-core/components/FormFields/New/HOC/messages/withDisplayMessages.js index 3aedaa7379..2760ecf654 100644 --- a/src/core_modules/capture-core/components/FormFields/New/HOC/messages/withDisplayMessages.js +++ b/src/core_modules/capture-core/components/FormFields/New/HOC/messages/withDisplayMessages.js @@ -160,7 +160,6 @@ const getDisplayMessagesHOC = (InnerComponent: React.ComponentType) => validatingMessage, ...passOnProps } = this.props; - const messages = this.getMessage(errorMessage, warningMessage, infoMessage, validatingMessage); diff --git a/src/core_modules/capture-core/components/FormFields/New/HOC/withCalendarProps.js b/src/core_modules/capture-core/components/FormFields/New/HOC/withCalendarProps.js deleted file mode 100644 index 54480957dd..0000000000 --- a/src/core_modules/capture-core/components/FormFields/New/HOC/withCalendarProps.js +++ /dev/null @@ -1,69 +0,0 @@ -// @flow -import * as React from 'react'; -import { capitalizeFirstLetter } from 'capture-core-utils/string'; -import { parseDate, convertDateObjectToDateFormatString } from '../../../../utils/converters/date'; -import { getCalendarTheme } from '../Fields/DateAndTimeFields/getCalendarTheme'; -import { CurrentLocaleData } from '../../../../utils/localeData/CurrentLocaleData'; - -type Props = { - theme: Object, - calendarWidth?: ?number, - width: number, -} - -export const withCalendarProps = () => (InnerComponent: React.ComponentType) => - class CalendarPropsHOC extends React.Component { - static convertValueIntoCalendar(inputValue: ?string) { - if (!inputValue) { - return new Date(); - } - - const parseData = parseDate(inputValue); - if (!parseData.isValid) { - return new Date(); - } - - // $FlowFixMe[incompatible-use] automated comment - return parseData.momentDate.toDate(); - } - - static convertValueOutFromCalendar(changeDate: Date) { - return convertDateObjectToDateFormatString(changeDate); - } - - calendarTheme: Object; - calendarLocaleData: Object; - constructor(props: Props) { - super(props); - this.calendarTheme = getCalendarTheme(this.props.theme); - const projectLocaleData = CurrentLocaleData.get(); - const calculatedCalendarWidth = this.props.calendarWidth || this.props.width; - this.calendarLocaleData = { - locale: projectLocaleData.dateFnsLocale, - headerFormat: calculatedCalendarWidth >= 400 ? - projectLocaleData.calendarFormatHeaderLong : - projectLocaleData.calendarFormatHeaderShort, - weekdays: projectLocaleData.weekDaysShort.map(day => capitalizeFirstLetter(day)), - blank: projectLocaleData.selectDatesText, - todayLabel: { - long: projectLocaleData.todayLabelLong, - short: projectLocaleData.todayLabelShort, - }, - weekStartsOn: projectLocaleData.weekStartsOn, - }; - } - - render() { - const { theme, ...passOnProps } = this.props; - return ( - // $FlowFixMe - - ); - } - }; diff --git a/src/core_modules/capture-core/components/FormFields/Options/FormGroup.component.js b/src/core_modules/capture-core/components/FormFields/Options/FormGroup.component.js index 3241b9d7a0..0fe8f70206 100644 --- a/src/core_modules/capture-core/components/FormFields/Options/FormGroup.component.js +++ b/src/core_modules/capture-core/components/FormFields/Options/FormGroup.component.js @@ -6,10 +6,12 @@ const styles = { formGroup: { display: 'flex', flexDirection: 'column', + width: 'fit-content', }, formGroupRow: { display: 'flex', flexDirection: 'row', + width: 'fit-content', }, }; diff --git a/src/core_modules/capture-core/components/ListView/Filters/FilterButton/buttonTextBuilder/converters/dateConverter.js b/src/core_modules/capture-core/components/ListView/Filters/FilterButton/buttonTextBuilder/converters/dateConverter.js index 3ff9d3289b..4dce8ba7a9 100644 --- a/src/core_modules/capture-core/components/ListView/Filters/FilterButton/buttonTextBuilder/converters/dateConverter.js +++ b/src/core_modules/capture-core/components/ListView/Filters/FilterButton/buttonTextBuilder/converters/dateConverter.js @@ -4,7 +4,8 @@ import { pipe } from 'capture-core-utils'; import moment from 'moment'; import { convertMomentToDateFormatString } from '../../../../../../utils/converters/date'; import type { DateFilterData, AbsoluteDateFilterData } from '../../../../../FiltersForTypes'; -import { areRelativeRangeValuesSupported } from '../../../../../../utils/validators/areRelativeRangeValuesSupported'; +import { areRelativeRangeValuesSupported } + from '../../../../../../utils/validation/validators/areRelativeRangeValuesSupported'; const periods = { TODAY: 'TODAY', diff --git a/src/core_modules/capture-core/components/Pages/EnrollmentEditEvent/PageLayout/DefaultPageLayout.constants.js b/src/core_modules/capture-core/components/Pages/EnrollmentEditEvent/PageLayout/DefaultPageLayout.constants.js index e4c0feb93d..0a8065a405 100644 --- a/src/core_modules/capture-core/components/Pages/EnrollmentEditEvent/PageLayout/DefaultPageLayout.constants.js +++ b/src/core_modules/capture-core/components/Pages/EnrollmentEditEvent/PageLayout/DefaultPageLayout.constants.js @@ -22,10 +22,6 @@ export const WidgetsForEnrollmentEventEdit: $ReadOnly<{ [key: string]: WidgetCon export const DefaultPageLayout: PageLayoutConfig = { leftColumn: [ - { - type: WidgetTypes.COMPONENT, - name: 'TwoEventWorkspace', - }, { type: WidgetTypes.COMPONENT, name: 'EditEventWorkspace', diff --git a/src/core_modules/capture-core/components/Pages/common/EnrollmentOverviewDomain/EnrollmentPageLayout/DefaultEnrollmentLayout.types.js b/src/core_modules/capture-core/components/Pages/common/EnrollmentOverviewDomain/EnrollmentPageLayout/DefaultEnrollmentLayout.types.js index 922a2071fc..cbb1bea87a 100644 --- a/src/core_modules/capture-core/components/Pages/common/EnrollmentOverviewDomain/EnrollmentPageLayout/DefaultEnrollmentLayout.types.js +++ b/src/core_modules/capture-core/components/Pages/common/EnrollmentOverviewDomain/EnrollmentPageLayout/DefaultEnrollmentLayout.types.js @@ -8,7 +8,6 @@ type DefaultComponents = 'QuickActions' | 'AssigneeWidget' | 'NewEventWorkspace' | 'EditEventWorkspace' - | 'TwoEventWorkspace' | 'EnrollmentNote' | 'EventNote' | 'TrackedEntityRelationship' diff --git a/src/core_modules/capture-core/components/Pages/common/WidgetEventEditWrapper/WidgetEventEditWrapper.js b/src/core_modules/capture-core/components/Pages/common/WidgetEventEditWrapper/WidgetEventEditWrapper.js index 2968d8b1ef..aa99aae4e4 100644 --- a/src/core_modules/capture-core/components/Pages/common/WidgetEventEditWrapper/WidgetEventEditWrapper.js +++ b/src/core_modules/capture-core/components/Pages/common/WidgetEventEditWrapper/WidgetEventEditWrapper.js @@ -1,5 +1,6 @@ // @flow import React from 'react'; +import { IconArrowLeft24, Button } from '@dhis2/ui'; import i18n from '@dhis2/d2-i18n'; import { pageStatuses } from '../../EnrollmentEditEvent/EnrollmentEditEventPage.constants'; import { IncompleteSelectionsMessage } from '../../../IncompleteSelectionsMessage'; @@ -16,6 +17,7 @@ export const WidgetEventEditWrapper = ({ pageStatus, ...passOnProps }: WidgetPro const { programId, stageId, + onGoBack, } = passOnProps; const { @@ -56,12 +58,20 @@ export const WidgetEventEditWrapper = ({ pageStatus, ...passOnProps }: WidgetPro } return ( - + <> +
+ +
+ + ); }; diff --git a/src/core_modules/capture-core/components/UrlSync/withUrlSync.js b/src/core_modules/capture-core/components/UrlSync/withUrlSync.js index c452f2a92c..ecb9ed1599 100644 --- a/src/core_modules/capture-core/components/UrlSync/withUrlSync.js +++ b/src/core_modules/capture-core/components/UrlSync/withUrlSync.js @@ -3,7 +3,7 @@ * @namespace UrlSync */ import * as React from 'react'; -import { parse, type QueryParameters } from 'query-string'; +import queryString, { type QueryParameters } from 'query-string'; import { pageFetchesOrgUnitUsingTheOldWay } from '../../utils/url'; type Props = { @@ -96,7 +96,7 @@ const getUrlSyncer = ( isOutOfSync() { const syncSpecification = onGetSyncSpecification(this.props); const { history: { location }, statePage, urlPage } = this.props; - const locationParams = parse(location && location.search); + const locationParams = queryString.parse(location && location.search); const urlParamsAreOutOfSync = this.paramsNeedsUpdate(syncSpecification, locationParams); const urlPathnameIsOutOfSync = urlPage !== statePage; diff --git a/src/core_modules/capture-core/components/WidgetEnrollmentEventNew/DataEntry/epics/dataEntryRules.epics.js b/src/core_modules/capture-core/components/WidgetEnrollmentEventNew/DataEntry/epics/dataEntryRules.epics.js index 73e0160c03..f582f16368 100644 --- a/src/core_modules/capture-core/components/WidgetEnrollmentEventNew/DataEntry/epics/dataEntryRules.epics.js +++ b/src/core_modules/capture-core/components/WidgetEnrollmentEventNew/DataEntry/epics/dataEntryRules.epics.js @@ -1,6 +1,7 @@ // @flow import { ofType } from 'redux-observable'; -import { map } from 'rxjs/operators'; +import { map, switchMap } from 'rxjs/operators'; +import { from } from 'rxjs'; import { batchActions } from 'redux-batched-actions'; import type { OrgUnit } from '@dhis2/rules-engine-javascript'; import i18n from '@dhis2/d2-i18n'; @@ -15,22 +16,34 @@ import { getCurrentClientMainData, getApplicableRuleEffectsForTrackerProgram, updateRulesEffects, + validateAssignEffects, type FieldData, } from '../../../../rules'; import { getDataEntryKey } from '../../../DataEntry/common/getDataEntryKey'; import type { RulesExecutionDependenciesClientFormatted } from '../../common.types'; import { getLocationQuery } from '../../../../utils/routing'; +import type { QuerySingleResource } from '../../../../utils/api'; -const runRulesForNewEvent = ( +const runRulesForNewEvent = async ({ + store, + dataEntryId, + itemId, + uid, + orgUnit, + rulesExecutionDependenciesClientFormatted, + fieldData, + querySingleResource, +}: { store: ReduxStore, dataEntryId: string, itemId: string, uid: string, orgUnit: OrgUnit, - history: Object, - { events, attributeValues, enrollmentData }: RulesExecutionDependenciesClientFormatted, + rulesExecutionDependenciesClientFormatted: RulesExecutionDependenciesClientFormatted, fieldData?: ?FieldData, -) => { + querySingleResource: QuerySingleResource, +}) => { + const { events, attributeValues, enrollmentData } = rulesExecutionDependenciesClientFormatted; const state = store.value; const formId = getDataEntryKey(dataEntryId, itemId); const { programId, stageId } = getLocationQuery(); @@ -47,7 +60,7 @@ const runRulesForNewEvent = ( const currentEventMainData = getCurrentClientMainData(state, itemId, dataEntryId, foundation); const currentEvent = { ...currentEventValues, ...currentEventMainData, programStageId }; - const ruleEffects = getApplicableRuleEffectsForTrackerProgram({ + const effects = getApplicableRuleEffectsForTrackerProgram({ program, stage, orgUnit, @@ -57,40 +70,55 @@ const runRulesForNewEvent = ( enrollmentData, }); + const effectsWithValidations = await validateAssignEffects({ + dataElements: foundation.getElements(), + effects, + querySingleResource, + }); + return batchActions([ - updateRulesEffects(ruleEffects, formId), + updateRulesEffects(effectsWithValidations, formId), rulesExecutedPostUpdateField(dataEntryId, itemId, uid), ], newEventWidgetDataEntryBatchActionTypes.RULES_EFFECTS_ACTIONS_BATCH, ); }; -export const runRulesOnUpdateDataEntryFieldForNewEnrollmentEventEpic = (action$: InputObservable, store: ReduxStore, { history }: ApiUtils) => +export const runRulesOnUpdateDataEntryFieldForNewEnrollmentEventEpic = ( + action$: InputObservable, + store: ReduxStore, + { querySingleResource }: ApiUtils, +) => action$.pipe( ofType(newEventWidgetDataEntryBatchActionTypes.UPDATE_DATA_ENTRY_FIELD_ADD_EVENT_ACTION_BATCH), map(actionBatch => actionBatch.payload .find(action => action.type === newEventWidgetDataEntryActionTypes.RULES_ON_UPDATE_EXECUTE)), - map((action) => { + switchMap((action) => { const { dataEntryId, itemId, uid, orgUnit, rulesExecutionDependenciesClientFormatted } = action.payload; - return runRulesForNewEvent( + const runRulesForNewEventPromise = runRulesForNewEvent({ store, dataEntryId, itemId, uid, orgUnit, - history, rulesExecutionDependenciesClientFormatted, - ); + querySingleResource, + }); + return from(runRulesForNewEventPromise); })); -export const runRulesOnUpdateFieldForNewEnrollmentEventEpic = (action$: InputObservable, store: ReduxStore, { history }: ApiUtils) => +export const runRulesOnUpdateFieldForNewEnrollmentEventEpic = ( + action$: InputObservable, + store: ReduxStore, + { querySingleResource }: ApiUtils, +) => action$.pipe( ofType(newEventWidgetDataEntryBatchActionTypes.FIELD_UPDATE_BATCH), map(actionBatch => actionBatch.payload .find(action => action.type === newEventWidgetDataEntryActionTypes.RULES_ON_UPDATE_EXECUTE)), - map((action) => { + switchMap((action) => { const { dataEntryId, itemId, @@ -107,14 +135,16 @@ export const runRulesOnUpdateFieldForNewEnrollmentEventEpic = (action$: InputObs value, valid: uiState.valid, }; - return runRulesForNewEvent( + + const runRulesForNewEventPromise = runRulesForNewEvent({ store, dataEntryId, itemId, uid, orgUnit, - history, rulesExecutionDependenciesClientFormatted, fieldData, - ); + querySingleResource, + }); + return from(runRulesForNewEventPromise); })); diff --git a/src/core_modules/capture-core/components/WidgetEnrollmentEventNew/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js b/src/core_modules/capture-core/components/WidgetEnrollmentEventNew/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js index 8bda3e79ef..046217b02a 100644 --- a/src/core_modules/capture-core/components/WidgetEnrollmentEventNew/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js +++ b/src/core_modules/capture-core/components/WidgetEnrollmentEventNew/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js @@ -1,14 +1,14 @@ // @flow import { hasValue } from 'capture-core-utils/validators/form'; import i18n from '@dhis2/d2-i18n'; -import { isValidDate } from '../../../../utils/validators/form'; +import { isValidDate } from '../../../../utils/validation/validators/form'; -const preValidateDate = (value?: ?string) => { +const preValidateDate = (value?: ?string, internalComponentError?: ?{error: ?string, errorCode: ?string}) => { if (!value) { return true; } - return isValidDate(value); + return isValidDate(value, internalComponentError); }; export const getEventDateValidatorContainers = () => { diff --git a/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/epics/editEventDataEntry.epics.js b/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/epics/editEventDataEntry.epics.js index 05515b4bcc..6ff85dc625 100644 --- a/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/epics/editEventDataEntry.epics.js +++ b/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/epics/editEventDataEntry.epics.js @@ -1,7 +1,8 @@ // @flow import i18n from '@dhis2/d2-i18n'; +import { from } from 'rxjs'; import { ofType } from 'redux-observable'; -import { map } from 'rxjs/operators'; +import { map, switchMap } from 'rxjs/operators'; import { batchActions } from 'redux-batched-actions'; import type { OrgUnit } from '@dhis2/rules-engine-javascript'; import { rulesExecutedPostUpdateField } from '../../../DataEntry/actions/dataEntry.actions'; @@ -16,6 +17,7 @@ import { getApplicableRuleEffectsForEventProgram, getApplicableRuleEffectsForTrackerProgram, updateRulesEffects, + validateAssignEffects, type FieldData, } from '../../../../rules'; import { getStageFromEvent } from '../../../../metaData/helpers/getStageFromEvent'; @@ -23,8 +25,9 @@ import { EventProgram, TrackerProgram } from '../../../../metaData/Program'; import { getDataEntryKey } from '../../../DataEntry/common/getDataEntryKey'; import { prepareEnrollmentEventsForRulesEngine } from '../../../../events/prepareEnrollmentEvents'; import { getEnrollmentForRulesEngine, getAttributeValuesForRulesEngine } from '../../helpers'; +import type { QuerySingleResource } from '../../../../utils/api'; -const runRulesForEditSingleEvent = ({ +const runRulesForEditSingleEvent = async ({ store, dataEntryId, itemId, @@ -32,6 +35,7 @@ const runRulesForEditSingleEvent = ({ orgUnit, fieldData, programId, + querySingleResource, }: { store: ReduxStore, dataEntryId: string, @@ -40,6 +44,7 @@ const runRulesForEditSingleEvent = ({ programId: string, orgUnit: OrgUnit, fieldData?: ?FieldData, + querySingleResource: QuerySingleResource }) => { const state = store.value; const formId = getDataEntryKey(dataEntryId, itemId); @@ -91,33 +96,56 @@ const runRulesForEditSingleEvent = ({ }); } + const effectsWithValidations = await validateAssignEffects({ + dataElements: foundation.getElements(), + effects, + querySingleResource, + }); + return batchActions([ - updateRulesEffects(effects, formId), + updateRulesEffects(effectsWithValidations, formId), rulesExecutedPostUpdateField(dataEntryId, itemId, uid), ], editEventDataEntryBatchActionTypes.RULES_EFFECTS_ACTIONS_BATCH); }; -export const runRulesOnUpdateDataEntryFieldForEditSingleEventEpic = (action$: InputObservable, store: ReduxStore) => +export const runRulesOnUpdateDataEntryFieldForEditSingleEventEpic = ( + action$: InputObservable, + store: ReduxStore, + { querySingleResource }: ApiUtils, +) => // $FlowSuppress action$.pipe( ofType(editEventDataEntryBatchActionTypes.UPDATE_DATA_ENTRY_FIELD_EDIT_SINGLE_EVENT_ACTION_BATCH), map(actionBatch => actionBatch.payload.find(action => action.type === editEventDataEntryActionTypes.START_RUN_RULES_ON_UPDATE), ), - map((action) => { + switchMap((action) => { const { dataEntryId, itemId, uid, orgUnit, programId } = action.payload; - return runRulesForEditSingleEvent({ store, dataEntryId, itemId, uid, orgUnit, programId }); + const runRulesForEditSingleEventPromise = runRulesForEditSingleEvent({ + store, + dataEntryId, + itemId, + uid, + orgUnit, + programId, + querySingleResource, + }); + return from(runRulesForEditSingleEventPromise); })); -export const runRulesOnUpdateFieldForEditSingleEventEpic = (action$: InputObservable, store: ReduxStore) => +export const runRulesOnUpdateFieldForEditSingleEventEpic = ( + action$: InputObservable, + store: ReduxStore, + { querySingleResource }: ApiUtils, +) => // $FlowSuppress action$.pipe( ofType(editEventDataEntryBatchActionTypes.UPDATE_FIELD_EDIT_SINGLE_EVENT_ACTION_BATCH), map(actionBatch => actionBatch.payload.find(action => action.type === editEventDataEntryActionTypes.START_RUN_RULES_ON_UPDATE), ), - map((action) => { + switchMap((action) => { const { elementId, value, @@ -133,7 +161,7 @@ export const runRulesOnUpdateFieldForEditSingleEventEpic = (action$: InputObserv value, valid: uiState.valid, }; - return runRulesForEditSingleEvent({ + const runRulesForEditSingleEventPromise = runRulesForEditSingleEvent({ store, dataEntryId, itemId, @@ -141,6 +169,8 @@ export const runRulesOnUpdateFieldForEditSingleEventEpic = (action$: InputObserv orgUnit, fieldData, programId, + querySingleResource, }); + return from(runRulesForEditSingleEventPromise); })); diff --git a/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js b/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js index 821d0c2752..c5117776e5 100644 --- a/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js +++ b/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/eventDate.validatorContainersGetter.js @@ -1,14 +1,14 @@ // @flow -import { hasValue } from 'capture-core-utils/validators/form'; import i18n from '@dhis2/d2-i18n'; -import { isValidDate } from '../../../../utils/validators/form'; +import { hasValue } from 'capture-core-utils/validators/form'; +import { isValidDate } from '../../../../utils/validation/validators/form'; -const preValidateDate = (value?: ?string) => { +const preValidateDate = (value?: ?string, internalComponentError: ?{error?: ?string, errorCode?: ?string}) => { if (!value) { return true; } - return isValidDate(value); + return isValidDate(value, internalComponentError); }; export const getEventDateValidatorContainers = () => { diff --git a/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/index.js b/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/index.js new file mode 100644 index 0000000000..1d1e26c9a9 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/index.js @@ -0,0 +1,5 @@ +// @flow +export { getCategoryOptionsValidatorContainers } from './categoryOptions.validatorContainersGetter'; +export { getEventDateValidatorContainers } from './eventDate.validatorContainersGetter'; +export { getNoteValidatorContainers } from './note.validatorContainersGetter'; +export { getOrgUnitValidatorContainers } from './orgUnit.validatorContainersGetter'; diff --git a/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/orgUnit.validatorContainersGetter.js b/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/orgUnit.validatorContainersGetter.js new file mode 100644 index 0000000000..b438a4a494 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetEventEdit/DataEntry/fieldValidators/orgUnit.validatorContainersGetter.js @@ -0,0 +1,15 @@ +// @flow +import { isValidOrgUnit } from 'capture-core-utils/validators/form'; +import i18n from '@dhis2/d2-i18n'; + +const validateOrgUnit = (value?: ?Object) => isValidOrgUnit(value); + +export const getOrgUnitValidatorContainers = () => { + const validatorContainers = [ + { + validator: validateOrgUnit, + message: i18n.t('Please provide an valid organisation unit'), + }, + ]; + return validatorContainers; +}; diff --git a/src/core_modules/capture-core/components/WidgetEventEdit/ViewEventDataEntry/ViewEventDataEntry.component.js b/src/core_modules/capture-core/components/WidgetEventEdit/ViewEventDataEntry/ViewEventDataEntry.component.js index 550f589dc4..eed050d621 100644 --- a/src/core_modules/capture-core/components/WidgetEventEdit/ViewEventDataEntry/ViewEventDataEntry.component.js +++ b/src/core_modules/capture-core/components/WidgetEventEdit/ViewEventDataEntry/ViewEventDataEntry.component.js @@ -139,6 +139,27 @@ const buildReportDateSettingsFn = () => { return reportDateSettings; }; +const buildOrgUnitSettingsFn = () => { + const dataElement = new DataElement((o) => { + o.type = dataElementTypes.ORGANISATION_UNIT; + }); + + const orgUnitSettings = { + getComponent: () => viewModeComponent, + getComponentProps: (props: Object) => createComponentProps(props, { + label: i18n.t('Organisation unit'), + valueConverter: value => dataElement.convertValue(value, valueConvertFn), + }), + getPropName: () => 'orgUnitId', + getMeta: () => ({ + placement: placements.TOP, + section: dataEntrySectionNames.BASICINFO, + }), + }; + + return orgUnitSettings; +}; + const buildScheduleDateSettingsFn = () => { const dataElement = new DataElement((o) => { o.type = dataElementTypes.DATE; @@ -245,7 +266,8 @@ const AOCFieldBuilderHOC = withAOCFieldBuilder({})(withDataEntryFields(getCatego const CleanUpHOC = withCleanUp()(AOCFieldBuilderHOC); const GeometryField = withDataEntryFieldIfApplicable(buildGeometrySettingsFn())(CleanUpHOC); const ScheduleDateField = withDataEntryField(buildScheduleDateSettingsFn())(GeometryField); -const ReportDateField = withDataEntryField(buildReportDateSettingsFn())(ScheduleDateField); +const OrgUnitField = withDataEntryField(buildOrgUnitSettingsFn())(ScheduleDateField); +const ReportDateField = withDataEntryField(buildReportDateSettingsFn())(OrgUnitField); const CompletableDataEntry = withDataEntryField(buildCompleteFieldSettingsFn())(ReportDateField); const DataEntryWrapper = withBrowserBackWarning()(CompletableDataEntry); diff --git a/src/core_modules/capture-core/components/WidgetEventEdit/ViewEventDataEntry/viewEventDataEntry.actions.js b/src/core_modules/capture-core/components/WidgetEventEdit/ViewEventDataEntry/viewEventDataEntry.actions.js index a3252ab790..65b90ecf13 100644 --- a/src/core_modules/capture-core/components/WidgetEventEdit/ViewEventDataEntry/viewEventDataEntry.actions.js +++ b/src/core_modules/capture-core/components/WidgetEventEdit/ViewEventDataEntry/viewEventDataEntry.actions.js @@ -23,7 +23,7 @@ import type { EnrollmentData, AttributeValue, } from '../../Pages/common/EnrollmentOverviewDomain/useCommonEnrollmentDomainData'; -import { getEventDateValidatorContainers } from '../DataEntry/fieldValidators/eventDate.validatorContainersGetter'; +import { getEventDateValidatorContainers, getOrgUnitValidatorContainers } from '../DataEntry/fieldValidators'; import { getCachedSingleResourceFromKeyAsync } from '../../../metaDataMemoryStoreBuilders/baseBuilder/singleResourceFromKeyGetter'; import { userStores } from '../../../storageControllers/stores'; import { FEATURES, hasAPISupportForFeature } from '../../../../capture-core-utils'; @@ -67,6 +67,11 @@ export const loadViewEventDataEntry = type: 'DATE', validatorContainers: getEventDateValidatorContainers(), }, + { + id: 'orgUnitId', + type: 'ORGANISATION_UNIT', + validatorContainers: getOrgUnitValidatorContainers(), + }, { id: 'scheduledAt', type: 'DATE', diff --git a/src/core_modules/capture-core/components/WidgetEventEdit/WidgetEventEdit.container.js b/src/core_modules/capture-core/components/WidgetEventEdit/WidgetEventEdit.container.js index 2a6cb8be80..21b2e372ea 100644 --- a/src/core_modules/capture-core/components/WidgetEventEdit/WidgetEventEdit.container.js +++ b/src/core_modules/capture-core/components/WidgetEventEdit/WidgetEventEdit.container.js @@ -1,40 +1,41 @@ // @flow import React, { type ComponentType, useEffect, useState } from 'react'; import { dataEntryIds, dataEntryKeys } from 'capture-core/constants'; -import { useDispatch, useSelector } from 'react-redux'; +import { useSelector } from 'react-redux'; import { - Button, + spacersNum, colors, - FlyoutMenu, - IconArrowLeft24, - IconEdit24, - IconMore16, - MenuItem, spacers, - spacersNum, } from '@dhis2/ui'; import { withStyles } from '@material-ui/core'; -import i18n from '@dhis2/d2-i18n'; -import { ConditionalTooltip } from 'capture-core/components/Tooltips/ConditionalTooltip'; -import { useAvailableProgramStages, useEnrollmentEditEventPageMode } from 'capture-core/hooks'; +import { useEnrollmentEditEventPageMode, useAvailableProgramStages } from 'capture-core/hooks'; import { useCoreOrgUnit } from 'capture-core/metadataRetrieval/coreOrgUnit'; -import type { ComponentProps, PlainProps } from './widgetEventEdit.types'; -import { startShowEditEventDataEntry } from './WidgetEventEdit.actions'; +import type { PlainProps, ComponentProps } from './widgetEventEdit.types'; import { Widget } from '../Widget'; import { EditEventDataEntry } from './EditEventDataEntry/'; import { ViewEventDataEntry } from './ViewEventDataEntry/'; import { LoadingMaskElementCenter } from '../LoadingMasks'; -import { NonBundledDhis2Icon } from '../NonBundledDhis2Icon'; -import { getProgramEventAccess } from '../../metaData'; -import { useCategoryCombinations } from '../DataEntryDhis2Helpers/AOC/useCategoryCombinations'; -import { OverflowButton } from '../Buttons'; import { EventChangelogWrapper } from './EventChangelogWrapper'; import { FEATURES, useFeature } from '../../../capture-core-utils'; import { inMemoryFileStore } from '../DataEntry/file/inMemoryFileStore'; -import { eventStatuses } from './constants/status.const'; -import { useAuthorities } from '../../utils/authority/useAuthorities'; +import { WidgetHeader } from './WidgetHeader'; +import { WidgetTwoEventWorkspace, WidgetTwoEventWorkspaceWrapperTypes } from '../WidgetTwoEventWorkspace'; const styles = { + container: { + backgroundColor: 'white', + borderRadius: 3, + borderStyle: 'solid', + borderColor: colors.grey400, + borderWidth: 1, + '& > div:nth-child(2)': { + margin: spacersNum.dp16, + borderRadius: 3, + borderStyle: 'solid', + borderColor: colors.grey400, + borderWidth: 1, + }, + }, header: { display: 'flex', alignItems: 'center', @@ -73,7 +74,6 @@ export const WidgetEventEditPlain = ({ initialScheduleDate, stage, formFoundation, - onGoBack, onCancelEditEvent, onHandleScheduleSave, onSaveExternal, @@ -90,146 +90,91 @@ export const WidgetEventEditPlain = ({ classes, }: PlainProps) => { useEffect(() => inMemoryFileStore.clear, []); - const dispatch = useDispatch(); const supportsChangelog = useFeature(FEATURES.changelogs); const { currentPageMode } = useEnrollmentEditEventPageMode(eventStatus); const { orgUnit, error } = useCoreOrgUnit(orgUnitId); const [changeLogIsOpen, setChangeLogIsOpen] = useState(false); - const [actionsIsOpen, setActionsIsOpen] = useState(false); // "Edit event"-button depends on loadedValues. Delay rendering component until loadedValues has been initialized. const loadedValues = useSelector(({ viewEventPage }) => viewEventPage.loadedValues); - const eventAccess = getProgramEventAccess(programId, stageId); - const { hasAuthority } = useAuthorities({ authorities: ['F_UNCOMPLETE_EVENT'] }); - const blockEntryForm = stage.blockEntryForm && !hasAuthority && eventStatus === eventStatuses.COMPLETED; - const disableEdit = !eventAccess?.write || blockEntryForm; - - const tooltipContent = blockEntryForm ? - i18n.t('The event cannot be edited after it has been completed') : - i18n.t('You don\'t have access to edit this event'); - const availableProgramStages = useAvailableProgramStages(stage, teiId, enrollmentId, programId); - const { programCategory } = useCategoryCombinations(programId); if (error) { return error.errorComponent; } - const { icon, name } = stage; return orgUnit && loadedValues ? ( -
-
- - - {currentPageMode === dataEntryKeys.VIEW && ( -
- - - - - {supportsChangelog && ( - setActionsIsOpen(prev => !prev)} - icon={} - small - secondary - dataTest={'widget-event-edit-overflow-button'} - component={( - - { - setChangeLogIsOpen(true); - setActionsIsOpen(false); - }} - /> - - )} - /> - )} -
- )} -
- - {icon && ( -
- +
+ ) : ( +
+
)} - {name} -
- } - noncollapsible - > - {currentPageMode === dataEntryKeys.VIEW ? ( -
-
- ) : ( -
- -
- )} - + + {supportsChangelog && changeLogIsOpen && ( { + useEffect(() => inMemoryFileStore.clear, []); + const dispatch = useDispatch(); + + const supportsChangelog = useFeature(FEATURES.changelogs); + const { currentPageMode } = useEnrollmentEditEventPageMode(eventStatus); + const [actionsIsOpen, setActionsIsOpen] = useState(false); + + const eventAccess = getProgramEventAccess(programId, stage.id); + const { hasAuthority } = useAuthorities({ authorities: ['F_UNCOMPLETE_EVENT'] }); + const blockEntryForm = stage.blockEntryForm && !hasAuthority && eventStatus === eventStatuses.COMPLETED; + const disableEdit = !eventAccess?.write || blockEntryForm; + + const tooltipContent = blockEntryForm + ? i18n.t('The event cannot be edited after it has been completed') + : i18n.t("You don't have access to edit this event"); + + const { programCategory } = useCategoryCombinations(programId); + + const { icon, name } = stage; + + return ( + <> + {icon && ( +
+ +
+ )} + {name} +
+ {currentPageMode === dataEntryKeys.VIEW && ( +
+ + + + + {supportsChangelog && ( + setActionsIsOpen(prev => !prev)} + icon={} + small + secondary + dataTest={'widget-event-edit-overflow-button'} + component={ + + { + setChangeLogIsOpen(true); + setActionsIsOpen(false); + }} + /> + + } + /> + )} +
+ )} +
+ + ); +}; + +export const WidgetHeader: ComponentType = withStyles(styles)(WidgetHeaderPlain); diff --git a/src/core_modules/capture-core/components/WidgetEventEdit/WidgetHeader/WidgetHeader.types.js b/src/core_modules/capture-core/components/WidgetEventEdit/WidgetHeader/WidgetHeader.types.js new file mode 100644 index 0000000000..df70f89e0e --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetEventEdit/WidgetHeader/WidgetHeader.types.js @@ -0,0 +1,16 @@ +// @flow +import type { OrgUnit } from '@dhis2/rules-engine-javascript'; +import { ProgramStage } from '../../../metaData'; + +export type PlainProps = {| + eventStatus?: string, + stage: ProgramStage, + programId: string, + orgUnit: OrgUnit, + setChangeLogIsOpen: (toggle: boolean) => void, +|}; + +export type Props = {| + ...PlainProps, + ...CssClasses, +|}; diff --git a/src/core_modules/capture-core/components/WidgetEventEdit/WidgetHeader/index.js b/src/core_modules/capture-core/components/WidgetEventEdit/WidgetHeader/index.js new file mode 100644 index 0000000000..efff17d3ce --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetEventEdit/WidgetHeader/index.js @@ -0,0 +1,2 @@ +// @flow +export { WidgetHeader } from './WidgetHeader.container'; diff --git a/src/core_modules/capture-core/components/WidgetEventSchedule/ScheduleDate/ScheduleDate.component.js b/src/core_modules/capture-core/components/WidgetEventSchedule/ScheduleDate/ScheduleDate.component.js index 7975d8ff0e..b68eddd145 100644 --- a/src/core_modules/capture-core/components/WidgetEventSchedule/ScheduleDate/ScheduleDate.component.js +++ b/src/core_modules/capture-core/components/WidgetEventSchedule/ScheduleDate/ScheduleDate.component.js @@ -14,11 +14,10 @@ import { import type { Props } from './scheduleDate.types'; import labelTypeClasses from './dataEntryFieldLabels.module.css'; import { InfoBox } from '../InfoBox'; -import { convertStringToDateFormat } from '../../../utils/converters/date'; import { baseInputStyles } from '../ScheduleOrgUnit/commonProps'; -const LabelledRequiredDateField = withDefaultFieldContainer()( +const OrgUnitFieldForForm = withDefaultFieldContainer()( withLabel({ onGetCustomFieldLabeClass: () => labelTypeClasses.dateLabel, })( @@ -49,7 +48,7 @@ const ScheduleDatePlain = ({ <> {!hideDueDate && ( <> - { }} onFocus={() => { }} onRemoveFocus={() => { }} - onBlur={(e) => { setScheduleDate(convertStringToDateFormat(e)); }} + onBlur={(e, internalComponentError) => { + const { error } = internalComponentError; + if (error) { + setScheduleDate(''); + return; + } + setScheduleDate(e); + }} />
{ const dataEntryId = 'trackedEntityProfile'; const itemId = 'edit'; + const dataEngine = useDataEngine(); + const querySingleResource = makeQuerySingleResource(dataEngine.query.bind(dataEngine)); const dispatch = useDispatch(); const [saveAttempted, setSaveAttempted] = useState(false); + const onGetValidationContext = useCallback( + () => ({ + programId: programAPI.id, + orgUnitId, + trackedEntityInstanceId, + trackedEntityTypeId: programAPI.trackedEntityType.id, + }), + [programAPI, orgUnitId, trackedEntityInstanceId], + ); + const context = useLifecycle({ programAPI, orgUnitId, @@ -41,8 +58,19 @@ export const DataEntry = ({ const { formValidated, errorsMessages, warningsMessages } = useFormValidations(dataEntryId, itemId, saveAttempted); const onUpdateFormField = useCallback( - (...args: Array) => dispatch(getUpdateFieldActions(context, ...args)), - [dispatch, context], + (innerAction: ReduxAction) => { + const uid = uuid(); + onDisable(); + dispatch(startRunRulesPostUpdateField(dataEntryId, itemId, uid)); + + getUpdateFieldActions({ context, querySingleResource, onGetValidationContext, innerAction, uid }).then( + (actions) => { + onEnable(); + return dispatch(actions); + }, + ); + }, + [dispatch, querySingleResource, context, onGetValidationContext, onDisable, onEnable], ); const onUpdateFormFieldAsync = useCallback( (innerAction: ReduxAction) => { @@ -50,15 +78,6 @@ export const DataEntry = ({ }, [dispatch], ); - const getValidationContext = useCallback( - () => ({ - programId: programAPI.id, - orgUnitId, - trackedEntityInstanceId, - trackedEntityTypeId: programAPI.trackedEntityType.id, - }), - [programAPI, orgUnitId, trackedEntityInstanceId], - ); const onSave = useCallback(() => { setSaveAttempted(true); @@ -107,7 +126,7 @@ export const DataEntry = ({ onUpdateFormField={onUpdateFormField} onUpdateFormFieldAsync={onUpdateFormFieldAsync} modalState={modalState} - onGetValidationContext={getValidationContext} + onGetValidationContext={onGetValidationContext} errorsMessages={errorsMessages} warningsMessages={warningsMessages} orgUnit={{ id: orgUnitId }} diff --git a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/ProgramRules/getRulesActionsForTEI.js b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/ProgramRules/getRulesActionsForTEI.js index 74aa721f08..03c2aff309 100644 --- a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/ProgramRules/getRulesActionsForTEI.js +++ b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/ProgramRules/getRulesActionsForTEI.js @@ -12,7 +12,13 @@ import type { } from '@dhis2/rules-engine-javascript'; import { rulesEngine } from '../../../../rules/rulesEngine'; import type { RenderFoundation } from '../../../../metaData'; -import { updateRulesEffects, postProcessRulesEffects, buildEffectsHierarchy } from '../../../../rules'; +import { + updateRulesEffects, + postProcessRulesEffects, + buildEffectsHierarchy, + validateAssignEffects, +} from '../../../../rules'; +import type { QuerySingleResource } from '../../../../utils/api'; const getEnrollmentForRulesExecution = enrollment => enrollment && { @@ -36,12 +42,48 @@ const getDataElementsForRulesExecution = (dataElements: ?DataElements) => {}, ); -const getRulesActions = (rulesEffects: OutputEffects, foundation: RenderFoundation, formId: string) => { - const effectsHierarchy = buildEffectsHierarchy(postProcessRulesEffects(rulesEffects, foundation)); - return [updateRulesEffects(effectsHierarchy, formId)]; +export const getRulesActionsForTEI = ({ + foundation, + formId, + orgUnit, + enrollmentData, + teiValues, + trackedEntityAttributes, + optionSets, + rulesContainer, + otherEvents, + dataElements, + userRoles, +}: { + foundation: RenderFoundation, + formId: string, + orgUnit: OrgUnit, + enrollmentData?: ?Enrollment, + teiValues?: ?TEIValues, + trackedEntityAttributes: ?TrackedEntityAttributes, + optionSets: OptionSets, + rulesContainer: ProgramRulesContainer, + otherEvents?: ?EventsData, + dataElements: ?DataElements, + userRoles: Array, +}) => { + const effects: OutputEffects = rulesEngine.getProgramRuleEffects({ + programRulesContainer: rulesContainer, + currentEvent: null, + otherEvents, + dataElements: getDataElementsForRulesExecution(dataElements), + trackedEntityAttributes, + selectedEnrollment: getEnrollmentForRulesExecution(enrollmentData), + selectedEntity: teiValues, + selectedOrgUnit: orgUnit, + selectedUserRoles: userRoles, + optionSets, + }); + const effectsHierarchy = buildEffectsHierarchy(postProcessRulesEffects(effects, foundation)); + return updateRulesEffects(effectsHierarchy, formId); }; -export const getRulesActionsForTEI = ({ +export const getRulesActionsForTEIAsync = async ({ foundation, formId, orgUnit, @@ -53,6 +95,8 @@ export const getRulesActionsForTEI = ({ otherEvents, dataElements, userRoles, + querySingleResource, + onGetValidationContext, }: { foundation: RenderFoundation, formId: string, @@ -65,6 +109,8 @@ export const getRulesActionsForTEI = ({ otherEvents?: ?EventsData, dataElements: ?DataElements, userRoles: Array, + querySingleResource: QuerySingleResource, + onGetValidationContext: () => Object, }) => { const effects: OutputEffects = rulesEngine.getProgramRuleEffects({ programRulesContainer: rulesContainer, @@ -78,5 +124,12 @@ export const getRulesActionsForTEI = ({ selectedUserRoles: userRoles, optionSets, }); - return getRulesActions(effects, foundation, formId); + const effectsHierarchy = buildEffectsHierarchy(postProcessRulesEffects(effects, foundation)); + const effectsWithValidations = await validateAssignEffects({ + dataElements: foundation.getElements(), + effects: effectsHierarchy, + querySingleResource, + onGetValidationContext, + }); + return updateRulesEffects(effectsWithValidations, formId); }; diff --git a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/ProgramRules/index.js b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/ProgramRules/index.js index a088da2ddb..494f821921 100644 --- a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/ProgramRules/index.js +++ b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/ProgramRules/index.js @@ -1,3 +1,3 @@ // @flow export { buildRulesContainer } from './rulesContainer'; -export { getRulesActionsForTEI } from './getRulesActionsForTEI'; +export { getRulesActionsForTEI, getRulesActionsForTEIAsync } from './getRulesActionsForTEI'; diff --git a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/dataEntry.actions.js b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/dataEntry.actions.js index 331f6e1a4d..f326ab200c 100644 --- a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/dataEntry.actions.js +++ b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/dataEntry.actions.js @@ -1,5 +1,4 @@ // @flow -import { v4 as uuid } from 'uuid'; import { batchActions } from 'redux-batched-actions'; import type { OrgUnit, @@ -18,10 +17,10 @@ import type { FieldData } from '../../../rules'; import { getCurrentClientValues } from '../../../rules'; import { loadNewDataEntry } from '../../DataEntry/actions/dataEntryLoadNew.actions'; import { rulesExecutedPostUpdateField } from '../../DataEntry/actions/dataEntry.actions'; -import { startRunRulesPostUpdateField } from '../../DataEntry'; -import { getRulesActionsForTEI } from './ProgramRules'; +import { getRulesActionsForTEIAsync } from './ProgramRules'; import { addFormData } from '../../D2Form/actions/form.actions'; import type { Geometry } from './helpers/types'; +import type { QuerySingleResource } from '../../../utils/api'; export const TEI_MODAL_STATE = { OPEN: 'Open', @@ -65,8 +64,19 @@ type Context = { state: ReduxState, }; -export const getUpdateFieldActions = (context: Context, innerAction: ReduxAction) => { - const uid = uuid(); +export const getUpdateFieldActions = async ({ + context, + querySingleResource, + onGetValidationContext, + innerAction, + uid, +}: { + context: Context, + querySingleResource: QuerySingleResource, + onGetValidationContext: () => Object, + innerAction: ReduxAction, + uid: string +}) => { const { orgUnit, trackedEntityAttributes, @@ -87,7 +97,7 @@ export const getUpdateFieldActions = (context: Context, innerAction: ReduxAction }; const formId = `${dataEntryId}-${itemId}`; const currentTEIValues = getCurrentClientValues(state, formFoundation, formId, fieldData); - const rulesActions = getRulesActionsForTEI({ + const rulesActions = await getRulesActionsForTEIAsync({ foundation: formFoundation, formId, orgUnit, @@ -99,14 +109,15 @@ export const getUpdateFieldActions = (context: Context, innerAction: ReduxAction otherEvents, dataElements, userRoles, + querySingleResource, + onGetValidationContext, }); return batchActions( [ innerAction, - ...rulesActions, + rulesActions, rulesExecutedPostUpdateField(dataEntryId, itemId, uid), - startRunRulesPostUpdateField(dataEntryId, itemId, uid), ], dataEntryActionTypes.UPDATE_FIELD_PROFILE_ACTION_BATCH, ); diff --git a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/dataEntry.types.js b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/dataEntry.types.js index ddb4f533c9..a5a7ef9c4c 100644 --- a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/dataEntry.types.js +++ b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/dataEntry.types.js @@ -13,7 +13,7 @@ export type PlainProps = {| formFoundation: any, onCancel: () => void, onSave: () => void, - onUpdateFormField: () => void, + onUpdateFormField: (innerAction: ReduxAction) => void, onUpdateFormFieldAsync: (innerAction: ReduxAction) => void, onGetValidationContext: () => Object, modalState: string, @@ -29,6 +29,7 @@ export type Props = {| dataEntryFormConfig: ?DataEntryFormConfig, onCancel: () => void, onDisable: () => void, + onEnable: () => void, clientAttributesWithSubvalues: Array, trackedEntityInstanceId: string, onSaveSuccessActionType?: string, diff --git a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/hooks/useLifecycle.js b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/hooks/useLifecycle.js index 0847eda23d..16a8ff9cea 100644 --- a/src/core_modules/capture-core/components/WidgetProfile/DataEntry/hooks/useLifecycle.js +++ b/src/core_modules/capture-core/components/WidgetProfile/DataEntry/hooks/useLifecycle.js @@ -89,7 +89,7 @@ export const useLifecycle = ({ Object.entries(rulesContainer).length > 0 ) { dispatch( - ...getRulesActionsForTEI({ + getRulesActionsForTEI({ foundation: formFoundation, formId: `${dataEntryId}-${itemId}`, orgUnit, diff --git a/src/core_modules/capture-core/components/WidgetProfile/WidgetProfile.component.js b/src/core_modules/capture-core/components/WidgetProfile/WidgetProfile.component.js index f63800dd43..c94ed1cdb6 100644 --- a/src/core_modules/capture-core/components/WidgetProfile/WidgetProfile.component.js +++ b/src/core_modules/capture-core/components/WidgetProfile/WidgetProfile.component.js @@ -140,6 +140,8 @@ const WidgetProfilePlain = ({
); }; + const handleOnDisable = useCallback(() => setTeiModalState(TEI_MODAL_STATE.OPEN_DISABLE), [setTeiModalState]); + const handleOnEnable = useCallback(() => setTeiModalState(TEI_MODAL_STATE.OPEN), [setTeiModalState]); return (
@@ -179,7 +181,8 @@ const WidgetProfilePlain = ({ <> setTeiModalState(TEI_MODAL_STATE.CLOSE)} - onDisable={() => setTeiModalState(TEI_MODAL_STATE.OPEN_DISABLE)} + onDisable={handleOnDisable} + onEnable={handleOnEnable} programAPI={program} dataEntryFormConfig={dataEntryFormConfig} orgUnitId={orgUnitId} diff --git a/src/core_modules/capture-core/components/WidgetRelatedStages/FormComponents/DateFieldForRelatedStages.js b/src/core_modules/capture-core/components/WidgetRelatedStages/FormComponents/DateFieldForRelatedStages.js index d605f177cc..cbb55a1ef5 100644 --- a/src/core_modules/capture-core/components/WidgetRelatedStages/FormComponents/DateFieldForRelatedStages.js +++ b/src/core_modules/capture-core/components/WidgetRelatedStages/FormComponents/DateFieldForRelatedStages.js @@ -1,6 +1,5 @@ // @flow import React, { useState } from 'react'; -import { convertStringToDateFormat } from '../../../utils/converters/date'; import { DateField, withDefaultFieldContainer, @@ -16,7 +15,7 @@ import type { RelatedStageDataValueStates } from '../WidgetRelatedStages.types'; type Props = {| scheduledLabel: string, relatedStagesDataValues: RelatedStageDataValueStates, - onBlurDateField: (value: string) => void, + onBlurDateField: (value: string, internalComponentError?: {error: ?string, errorCode: ?string}) => void, saveAttempted: boolean, errorMessages: ErrorMessagesForRelatedStages, |} @@ -43,16 +42,16 @@ export const DateFieldForRelatedStages = ({ }: Props) => { const [touched, setTouched] = useState(false); - const onBlur = (event) => { + const onBlur = (event, internalComponentError) => { setTouched(true); - onBlurDateField(event); + onBlurDateField(event, internalComponentError); }; const shouldShowError = (touched || saveAttempted); return ( {}} onFocus={() => {}} diff --git a/src/core_modules/capture-core/components/WidgetRelatedStages/ScheduleInOrgUnit/ScheduleInOrgUnit.component.js b/src/core_modules/capture-core/components/WidgetRelatedStages/ScheduleInOrgUnit/ScheduleInOrgUnit.component.js index 33c556f0ed..310e5f7100 100644 --- a/src/core_modules/capture-core/components/WidgetRelatedStages/ScheduleInOrgUnit/ScheduleInOrgUnit.component.js +++ b/src/core_modules/capture-core/components/WidgetRelatedStages/ScheduleInOrgUnit/ScheduleInOrgUnit.component.js @@ -3,7 +3,6 @@ import React from 'react'; import type { ComponentType } from 'react'; import { withStyles } from '@material-ui/core'; import { colors, spacers, spacersNum } from '@dhis2/ui'; -import { convertStringToDateFormat } from '../../../utils/converters/date'; import { DateFieldForRelatedStages, OrgUnitSelectorForRelatedStages } from '../FormComponents'; import type { ErrorMessagesForRelatedStages } from '../RelatedStagesActions'; import type { RelatedStageDataValueStates } from '../WidgetRelatedStages.types'; @@ -52,10 +51,11 @@ export const ScheduleInOrgUnitPlain = ({ scheduledLabel, classes, }: Props) => { - const onBlurDateField = (e) => { + const onBlurDateField = (e, internalComponentError) => { setRelatedStagesDataValues(prevValues => ({ ...prevValues, - scheduledAt: convertStringToDateFormat(e), + scheduledAt: e, + scheduledAtFormatError: internalComponentError, })); }; diff --git a/src/core_modules/capture-core/components/WidgetRelatedStages/WidgetRelatedStages.component.js b/src/core_modules/capture-core/components/WidgetRelatedStages/WidgetRelatedStages.component.js index 722515d992..4c3013ca3c 100644 --- a/src/core_modules/capture-core/components/WidgetRelatedStages/WidgetRelatedStages.component.js +++ b/src/core_modules/capture-core/components/WidgetRelatedStages/WidgetRelatedStages.component.js @@ -34,6 +34,7 @@ const WidgetRelatedStagesPlain = ({ const [relatedStageDataValues, setRelatedStageDataValues] = useState({ linkMode: undefined, scheduledAt: '', + scheduledAtFormatError: undefined, orgUnit: undefined, linkedEventId: undefined, }); @@ -62,10 +63,11 @@ const WidgetRelatedStagesPlain = ({ }; const formIsValid = useCallback(() => { - const { scheduledAt, orgUnit, linkedEventId, linkMode } = relatedStageDataValues; + const { scheduledAt, scheduledAtFormatError, orgUnit, linkedEventId, linkMode } = relatedStageDataValues; return relatedStageWidgetIsValid({ linkMode, scheduledAt, + scheduledAtFormatError, orgUnit, linkedEventId, setErrorMessages: addErrorMessage, diff --git a/src/core_modules/capture-core/components/WidgetRelatedStages/WidgetRelatedStages.types.js b/src/core_modules/capture-core/components/WidgetRelatedStages/WidgetRelatedStages.types.js index 6f9288bb30..0274e06456 100644 --- a/src/core_modules/capture-core/components/WidgetRelatedStages/WidgetRelatedStages.types.js +++ b/src/core_modules/capture-core/components/WidgetRelatedStages/WidgetRelatedStages.types.js @@ -24,6 +24,7 @@ export type Props = {| export type RelatedStageDataValueStates = {| linkMode: ?$Keys, scheduledAt: string, + scheduledAtFormatError: ?{error: ?string, errorCode: ?string}, orgUnit: ?{ path: string, id: string, diff --git a/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/ValidationFunctions.js b/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/ValidationFunctions.js index b02e1f5ae5..219e354ded 100644 --- a/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/ValidationFunctions.js +++ b/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/ValidationFunctions.js @@ -1,29 +1,36 @@ // @flow import i18n from '@dhis2/d2-i18n'; -import { systemSettingsStore } from '../../../metaDataMemoryStores'; -import { isValidDate, isValidOrgUnit } from '../../../../capture-core-utils/validators/form'; +import { isValidOrgUnit } from '../../../../capture-core-utils/validators/form'; +import { isValidDate } from '../../../utils/validation/validators/form'; import { actions as RelatedStageModes } from '../constants'; type Props = { scheduledAt: ?string, + scheduledAtFormatError: ?{error: ?string, errorCode: ?string}, orgUnit: ?Object, linkedEventId: ?string, setErrorMessages: (messages: Object) => void, }; -export const isScheduledDateValid = (scheduledDate: string) => { - const dateFormat = systemSettingsStore.get().dateFormat; - return isValidDate(scheduledDate, dateFormat); +export const isScheduledDateValid = (scheduledDate: ?string, scheduledAtFormatError: ?{error: ?string, errorCode: ?string}) => { + if (!scheduledDate) { + return { valid: false, errorMessage: i18n.t('Please enter a date') }; + } + const { valid, errorMessage } = isValidDate(scheduledDate, scheduledAtFormatError); + return { + valid, + errorMessage, + }; }; const scheduleInOrgUnit = (props) => { - const { scheduledAt, orgUnit, setErrorMessages } = props ?? {}; - const scheduledAtIsValid = !!scheduledAt && isScheduledDateValid(scheduledAt); + const { scheduledAt, scheduledAtFormatError, orgUnit, setErrorMessages } = props ?? {}; + const { valid: scheduledAtIsValid, errorMessage } = isScheduledDateValid(scheduledAt, scheduledAtFormatError); const orgUnitIsValid = isValidOrgUnit(orgUnit); if (!scheduledAtIsValid) { setErrorMessages({ - scheduledAt: i18n.t('Please provide a valid date'), + scheduledAt: errorMessage, }); } else { setErrorMessages({ diff --git a/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/relatedStageEventIsValid.js b/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/relatedStageEventIsValid.js index 21e7693f2f..f9f63ac48c 100644 --- a/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/relatedStageEventIsValid.js +++ b/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/relatedStageEventIsValid.js @@ -8,6 +8,7 @@ import { ValidationFunctionsByLinkMode } from './ValidationFunctions'; export const relatedStageWidgetIsValid = ({ linkMode, scheduledAt, + scheduledAtFormatError, orgUnit, linkedEventId, setErrorMessages, @@ -25,6 +26,7 @@ export const relatedStageWidgetIsValid = ({ return validationFunction({ scheduledAt, + scheduledAtFormatError, orgUnit, linkedEventId, setErrorMessages, diff --git a/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/relatedStageEventIsValid.types.js b/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/relatedStageEventIsValid.types.js index c97648e958..1c5e56a676 100644 --- a/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/relatedStageEventIsValid.types.js +++ b/src/core_modules/capture-core/components/WidgetRelatedStages/relatedStageEventIsValid/relatedStageEventIsValid.types.js @@ -5,6 +5,7 @@ import { actions as LinkModes } from '../constants'; export type RelatedStageIsValidProps = {| linkMode: ?$Keys, scheduledAt: ?string, + scheduledAtFormatError: ?{error: ?string, errorCode: ?string}, orgUnit: ?{ id: string, name: string, diff --git a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/hooks/helpers.js b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/hooks/helpers.js index 74ae039f19..9d7f31f63f 100644 --- a/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/hooks/helpers.js +++ b/src/core_modules/capture-core/components/WidgetStagesAndEvents/Stages/Stage/StageDetail/hooks/helpers.js @@ -1,6 +1,7 @@ // @flow import React from 'react'; import moment from 'moment'; +import i18n from '@dhis2/d2-i18n'; import { statusTypes, translatedStatusTypes } from 'capture-core/events/statusTypes'; import { convertMomentToDateFormatString } from '../../../../../../utils/converters/date'; import { getSubValues } from '../../getEventDataWithSubValue'; @@ -25,10 +26,14 @@ const getEventStatus = (event: ApiEnrollmentEvent) => { } if (event.status === statusTypes.SCHEDULE) { - if (!event.scheduledAt || !daysUntilDueDate) { + if (!event.scheduledAt) { return { status: statusTypes.SCHEDULE, options: undefined }; } + if (daysUntilDueDate === 0) { + return { status: statusTypes.SCHEDULE, options: i18n.t('Today') }; + } + if (daysUntilDueDate < 14) { return { status: statusTypes.SCHEDULE, options: dueDateFromNow }; } diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/WidgetHeader.container.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/WidgetHeader.container.js new file mode 100644 index 0000000000..129dedd9ec --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/WidgetHeader.container.js @@ -0,0 +1,76 @@ +// @flow +import React, { type ComponentType, useState } from 'react'; +import { useHistory } from 'react-router-dom'; +import { FlyoutMenu, IconMore16, MenuItem, spacersNum } from '@dhis2/ui'; +import i18n from '@dhis2/d2-i18n'; +import { withStyles } from '@material-ui/core/'; +import { OverflowButton } from '../../Buttons'; +import { buildUrlQueryString } from '../../../utils/routing'; +import { EnrollmentPageKeys } + from '../../Pages/common/EnrollmentOverviewDomain/EnrollmentPageLayout/DefaultEnrollmentLayout.constants'; +import { NonBundledDhis2Icon } from '../../NonBundledDhis2Icon'; +import type { PlainProps, Props } from './WidgetHeader.types'; + +const styles = { + menu: { + marginLeft: 'auto', + }, + icon: { + marginRight: spacersNum.dp8, + }, +}; + + +const WidgetHeaderPlain = ({ linkedStage, linkedEvent, orgUnitId, currentPage, classes }: Props) => { + const [actionsIsOpen, setActionsIsOpen] = useState(false); + const { push } = useHistory(); + const { icon } = linkedStage; + return ( + <> + {icon && ( +
+ +
+ )} + {linkedStage.name} + {currentPage === EnrollmentPageKeys.VIEW_EVENT && ( +
+ setActionsIsOpen(prev => !prev)} + icon={} + small + secondary + dataTest={'widget-event-navigate-to-linked-event'} + component={ + + { + push( + `/enrollmentEventEdit?${buildUrlQueryString({ + eventId: linkedEvent.event, + orgUnitId, + })}`, + ); + setActionsIsOpen(false); + }} + /> + + } + /> +
+ )} + + ); +}; + +export const WidgetHeader: ComponentType = withStyles(styles)(WidgetHeaderPlain); + diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/WidgetHeader.types.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/WidgetHeader.types.js new file mode 100644 index 0000000000..9a8b8d460f --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/WidgetHeader.types.js @@ -0,0 +1,17 @@ +// @flow +import { EnrollmentPageKeys } + from '../../Pages/common/EnrollmentOverviewDomain/EnrollmentPageLayout/DefaultEnrollmentLayout.constants'; +import type { ProgramStage } from '../../../metaData'; + +export type PlainProps = {| + orgUnitId: string, + linkedEvent: { event: string }, + linkedStage: ProgramStage, + currentPage: $Values | string, +|}; + +export type Props = {| + ...PlainProps, + ...CssClasses, +|}; + diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/index.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/index.js new file mode 100644 index 0000000000..efff17d3ce --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetHeader/index.js @@ -0,0 +1,2 @@ +// @flow +export { WidgetHeader } from './WidgetHeader.container'; diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspace.container.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspace.container.js index a889aace6b..645f84064a 100644 --- a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspace.container.js +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspace.container.js @@ -1,55 +1,23 @@ // @flow -import React, { useState } from 'react'; -import { useHistory } from 'react-router-dom'; -import { colors, FlyoutMenu, IconMore16, MenuItem, spacersNum } from '@dhis2/ui'; +import React from 'react'; import i18n from '@dhis2/d2-i18n'; -import { withStyles } from '@material-ui/core/'; import type { Props } from './WidgetTwoEventWorkspace.types'; import { useMetadataForProgramStage } from '../DataEntries/common/ProgramStage/useMetadataForProgramStage'; import { Widget } from '../Widget'; import { useLinkedEventByOriginId } from './hooks/useLinkedEventByOriginId'; import { WidgetTwoEventWorkspaceComponent } from './WidgetTwoEventWorkspace.component'; -import { OverflowButton } from '../Buttons'; -import { buildUrlQueryString } from '../../utils/routing'; -import { - EnrollmentPageKeys, -} from '../Pages/common/EnrollmentOverviewDomain/EnrollmentPageLayout/DefaultEnrollmentLayout.constants'; -import { NonBundledDhis2Icon } from '../NonBundledDhis2Icon'; import { useClientDataValues } from './hooks/useClientDataValues'; +import { WidgetWrapper } from './WidgetWrapper'; +import { WidgetHeader } from './WidgetHeader'; -const styles = { - menu: { - display: 'flex', - alignItems: 'center', - padding: spacersNum.dp8, - justifyContent: 'end', - background: colors.white, - borderTopLeftRadius: 3, - borderTopRightRadius: 3, - borderStyle: 'solid', - borderColor: colors.grey400, - borderWidth: 1, - borderBottomWidth: 0, - }, - header: { - display: 'flex', - alignItems: 'center', - padding: spacersNum.dp8, - }, - icon: { - marginRight: spacersNum.dp8, - }, -}; - -const WidgetTwoEventWorkspacePlain = ({ +export const WidgetTwoEventWorkspace = ({ eventId, programId, orgUnitId, currentPage, - classes, + stage, + type, }: Props) => { - const [actionsIsOpen, setActionsIsOpen] = useState(false); - const { push } = useHistory(); const { linkedEvent, dataValues, @@ -59,7 +27,7 @@ const WidgetTwoEventWorkspacePlain = ({ const { formFoundation, - stage, + stage: linkedStage, isLoading: isLoadingMetadata, isError: isMetadataError, } = useMetadataForProgramStage({ @@ -89,69 +57,34 @@ const WidgetTwoEventWorkspacePlain = ({ ); } - if (!linkedEvent || !formFoundation || !stage) { + if (!linkedEvent || !formFoundation || !linkedStage) { return null; } return ( -
- {currentPage === EnrollmentPageKeys.VIEW_EVENT && ( -
- setActionsIsOpen(prev => !prev)} - icon={} - small - secondary - dataTest={'widget-event-navigate-to-linked-event'} - component={( - - { - push(`/enrollmentEventEdit?${buildUrlQueryString({ - eventId: linkedEvent.event, - orgUnitId, - })}`); - setActionsIsOpen(false); - }} - /> - - )} + + } + noncollapsible + > + -
- )} - - - {stage.icon && ( -
- -
- )} - {stage.name} -
- } - noncollapsible - > - - -
+ + } + /> ); }; - -export const WidgetTwoEventWorkspace = withStyles( - styles, -)(WidgetTwoEventWorkspacePlain); diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspace.types.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspace.types.js index 52aff39ded..c79a68c5d5 100644 --- a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspace.types.js +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspace.types.js @@ -2,13 +2,17 @@ import { EnrollmentPageKeys, } from '../Pages/common/EnrollmentOverviewDomain/EnrollmentPageLayout/DefaultEnrollmentLayout.constants'; +import { WidgetTwoEventWorkspaceWrapperTypes } from './index'; +import type { ProgramStage } from '../../metaData'; -type PlainProps = {| +export type Props = {| programId: string, eventId: string, orgUnitId: string, stageId: string, - currentPage: $Values, + currentPage: $Values | string, + stage?: ProgramStage, + type?: $Values, |} export type LinkedEvent = {| @@ -18,7 +22,3 @@ export type LinkedEvent = {| orgUnit: string, |} -export type Props = {| - ...PlainProps, - ...CssClasses, -|} diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspaceWrapper.const.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspaceWrapper.const.js new file mode 100644 index 0000000000..421d827ca5 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetTwoEventWorkspaceWrapper.const.js @@ -0,0 +1,5 @@ +// @flow + +export const WidgetTwoEventWorkspaceWrapperTypes = { + EDIT_EVENT: 'editEvent', +}; diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/WidgetWrapper.container.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/WidgetWrapper.container.js new file mode 100644 index 0000000000..dcc0defdc9 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/WidgetWrapper.container.js @@ -0,0 +1,74 @@ +// @flow +import React from 'react'; +import { colors, spacersNum, IconLink16 } from '@dhis2/ui'; +import i18n from '@dhis2/d2-i18n'; +import { withStyles } from '@material-ui/core/'; +import type { Props } from './WidgetWrapper.types'; +import { WidgetTwoEventWorkspaceWrapperTypes } from '../index'; + +const styles = { + container: { + width: 'fit-content', + marginBottom: '16px', + margin: '16px', + }, + header: { + display: 'flex', + alignItems: 'center', + paddingBottom: spacersNum.dp16, + fontWeight: 500, + fontSize: 16, + color: colors.grey800, + }, + referalResponse: { + padding: spacersNum.dp16, + backgroundColor: colors.blue100, + borderRadius: '3px', + }, + linkedEvent: { + color: colors.blue900, + verticalAlign: 'middle', + display: 'flex', + fontSize: '16px', + fontWeight: '500', + }, + icon: { + marginRight: spacersNum.dp8, + }, + decription: { + margin: `${spacersNum.dp8}px 0`, + }, +}; + +const WidgetWrapperPlain = ({ widget, type, stage, linkedStage, classes }: Props) => { + if (type === WidgetTwoEventWorkspaceWrapperTypes.EDIT_EVENT) { + return ( +
+
{stage?.name}
+
+
+ + + +
{i18n.t('Linked event')}
+
+
+ {i18n.t( + 'This {{stageName}} event is linked to a {{linkedStageName}} event. Review the linked event details before entering data below', + { + linkedStageName: linkedStage?.name, + stageName: stage?.name, + interpolation: { escapeValue: false }, + }, + )} +
+ {widget} +
+
+ ); + } + + return <>{widget}; +}; + +export const WidgetWrapper = withStyles(styles)(WidgetWrapperPlain); diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/WidgetWrapper.types.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/WidgetWrapper.types.js new file mode 100644 index 0000000000..ae72f04aa3 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/WidgetWrapper.types.js @@ -0,0 +1,15 @@ +// @flow +import { WidgetTwoEventWorkspaceWrapperTypes } from '../index'; +import type { ProgramStage } from '../../../metaData'; + +type PlainProps = {| + widget: any, + linkedStage: ProgramStage, + stage?: ProgramStage, + type?: $Values, +|}; + +export type Props = {| + ...PlainProps, + ...CssClasses, +|}; diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/index.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/index.js new file mode 100644 index 0000000000..adb87f9498 --- /dev/null +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/WidgetWrapper/index.js @@ -0,0 +1,2 @@ +// @flow +export { WidgetWrapper } from './WidgetWrapper.container'; diff --git a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/index.js b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/index.js index 27320f9e8c..b057d60b99 100644 --- a/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/index.js +++ b/src/core_modules/capture-core/components/WidgetTwoEventWorkspace/index.js @@ -1,3 +1,4 @@ // @flow export { WidgetTwoEventWorkspace } from './WidgetTwoEventWorkspace.container'; +export { WidgetTwoEventWorkspaceWrapperTypes } from './WidgetTwoEventWorkspaceWrapper.const'; diff --git a/src/core_modules/capture-core/components/WorkingLists/EventWorkingLists/helpers/eventFilters/apiEventFilterToClientConfigConverter/convertToClientConfig.js b/src/core_modules/capture-core/components/WorkingLists/EventWorkingLists/helpers/eventFilters/apiEventFilterToClientConfigConverter/convertToClientConfig.js index 42bdd39aee..d34d81ab1e 100644 --- a/src/core_modules/capture-core/components/WorkingLists/EventWorkingLists/helpers/eventFilters/apiEventFilterToClientConfigConverter/convertToClientConfig.js +++ b/src/core_modules/capture-core/components/WorkingLists/EventWorkingLists/helpers/eventFilters/apiEventFilterToClientConfigConverter/convertToClientConfig.js @@ -26,7 +26,8 @@ import type { ColumnsMetaForDataFetching, ClientConfig, } from '../../../types'; -import { areRelativeRangeValuesSupported } from '../../../../../../utils/validators/areRelativeRangeValuesSupported'; +import { areRelativeRangeValuesSupported } + from '../../../../../../utils/validation/validators/areRelativeRangeValuesSupported'; const getTextFilter = (filter: ApiDataFilterText): TextFilterData => { const value = filter.like; diff --git a/src/core_modules/capture-core/components/WorkingLists/TeiWorkingLists/helpers/TEIFilters/apiTEIFilterToClientConfigConverter/convertToClientFilters.js b/src/core_modules/capture-core/components/WorkingLists/TeiWorkingLists/helpers/TEIFilters/apiTEIFilterToClientConfigConverter/convertToClientFilters.js index 6730b1eba4..33863ea4f5 100644 --- a/src/core_modules/capture-core/components/WorkingLists/TeiWorkingLists/helpers/TEIFilters/apiTEIFilterToClientConfigConverter/convertToClientFilters.js +++ b/src/core_modules/capture-core/components/WorkingLists/TeiWorkingLists/helpers/TEIFilters/apiTEIFilterToClientConfigConverter/convertToClientFilters.js @@ -19,7 +19,8 @@ import type { ApiTrackerQueryCriteria, TeiColumnsMetaForDataFetching, } from '../../../types'; -import { areRelativeRangeValuesSupported } from '../../../../../../utils/validators/areRelativeRangeValuesSupported'; +import { areRelativeRangeValuesSupported } + from '../../../../../../utils/validation/validators/areRelativeRangeValuesSupported'; import { DATE_TYPES, ASSIGNEE_MODES, MAIN_FILTERS } from '../../../constants'; import { ADDITIONAL_FILTERS } from '../../../helpers'; diff --git a/src/core_modules/capture-core/components/WorkingLists/WorkingListsCommon/helpers/buildFilterQueryArgs/filterConverters/dateConverter.js b/src/core_modules/capture-core/components/WorkingLists/WorkingListsCommon/helpers/buildFilterQueryArgs/filterConverters/dateConverter.js index c5c59e7675..4930ba75bb 100644 --- a/src/core_modules/capture-core/components/WorkingLists/WorkingListsCommon/helpers/buildFilterQueryArgs/filterConverters/dateConverter.js +++ b/src/core_modules/capture-core/components/WorkingLists/WorkingListsCommon/helpers/buildFilterQueryArgs/filterConverters/dateConverter.js @@ -8,7 +8,8 @@ import type { RelativeDateFilterData, AbsoluteDateFilterData, } from '../../../../../ListView'; -import { areRelativeRangeValuesSupported } from '../../../../../../utils/validators/areRelativeRangeValuesSupported'; +import { areRelativeRangeValuesSupported } + from '../../../../../../utils/validation/validators/areRelativeRangeValuesSupported'; const periods = { TODAY: 'TODAY', diff --git a/src/core_modules/capture-core/converters/clientToView.js b/src/core_modules/capture-core/converters/clientToView.js index 2849a02b01..fb7728f723 100644 --- a/src/core_modules/capture-core/converters/clientToView.js +++ b/src/core_modules/capture-core/converters/clientToView.js @@ -52,13 +52,11 @@ function convertImageForDisplay(clientValue: ImageClientValue) { return ; } -function convertOrgUnitForDisplay(clientValue: { id: string }) { - return ( - - ); +function convertOrgUnitForDisplay(clientValue: { id: string } | string) { + const orgUnitId = typeof clientValue === 'string' ? clientValue : clientValue.id; + return ; } - const valueConvertersForType = { [dataElementTypes.NUMBER]: stringifyNumber, [dataElementTypes.INTEGER]: stringifyNumber, diff --git a/src/core_modules/capture-core/converters/formToClient.js b/src/core_modules/capture-core/converters/formToClient.js index adca6b5b72..61c286d4d2 100644 --- a/src/core_modules/capture-core/converters/formToClient.js +++ b/src/core_modules/capture-core/converters/formToClient.js @@ -24,8 +24,8 @@ function convertDateTime(formValue: DateTimeValue): ?string { const hours = momentTime.hour(); const minutes = momentTime.minute(); - const parsedDate = parseDate(editedDate); - if (!parsedDate.isValid) return null; + const parsedDate = editedDate ? parseDate(editedDate) : null; + if (!(parsedDate && parsedDate.isValid)) return null; // $FlowFixMe[incompatible-type] automated comment const momentDateTime: moment$Moment = parsedDate.momentDate; momentDateTime.hour(hours); diff --git a/src/core_modules/capture-core/reducers/descriptions/form.reducerDescription.js b/src/core_modules/capture-core/reducers/descriptions/form.reducerDescription.js index 30dd29a15f..bed2120f6e 100644 --- a/src/core_modules/capture-core/reducers/descriptions/form.reducerDescription.js +++ b/src/core_modules/capture-core/reducers/descriptions/form.reducerDescription.js @@ -1,6 +1,6 @@ // @flow import { effectActions } from '@dhis2/rules-engine-javascript'; -import type { AssignOutputEffect } from '@dhis2/rules-engine-javascript'; +import type { AssignOutputEffectWithValidations } from '../../rules'; import { createReducerDescription } from '../../trackerRedux'; import { asyncHandlerActionTypes } from '../../components/D2Form'; import { actionTypes as fieldActionTypes } from '../../components/D2Form/D2SectionFields.actions'; @@ -63,7 +63,7 @@ export const formsValuesDesc = createReducerDescription({ return newState; }, [rulesEffectsActionTypes.UPDATE_RULES_EFFECTS]: (state, action) => { - const assignEffects: { [id: string]: Array } = + const assignEffects: { [id: string]: Array } = action.payload.rulesEffects && action.payload.rulesEffects[effectActions.ASSIGN_VALUE]; if (!assignEffects) { return state; @@ -76,7 +76,7 @@ export const formsValuesDesc = createReducerDescription({ ...state[payload.formId], ...Object.keys(assignEffects).reduce((acc, id) => { const effectsForId = assignEffects[id]; - const value = effectsForId[effectsForId.length - 1].value; + const value = effectsForId[0].value; acc[id] = value; return acc; }, {}), @@ -206,24 +206,29 @@ export const formsSectionsFieldsUIDesc = createReducerDescription({ [rulesEffectsActionTypes.UPDATE_RULES_EFFECTS]: (state, action) => { const { formId, rulesEffects } = action.payload; const formSectionFields = state[formId]; - const assignEffects: { [id: string]: Array } = + const assignEffects: { [id: string]: Array } = rulesEffects && rulesEffects[effectActions.ASSIGN_VALUE]; - if (!assignEffects || !formSectionFields) { + if (!assignEffects) { return state; } const updatedFields = Object.keys(assignEffects).reduce((acc, id) => { - if (formSectionFields[id]) { + const effect = assignEffects[id][0]; + const isEffectWithValidations = effect.hasOwnProperty('valid'); + if (formSectionFields?.[id] && isEffectWithValidations) { acc[id] = { - valid: true, - errorData: undefined, - errorMessage: undefined, - errorType: undefined, - modified: true, + valid: effect.valid, + errorData: effect.errorData, + errorMessage: effect.errorMessage, + errorType: effect.errorType, touched: true, validatingMessage: null, }; + } else { + acc[id] = { + touched: true, + }; } return acc; }, {}); diff --git a/src/core_modules/capture-core/rules/index.js b/src/core_modules/capture-core/rules/index.js index 7eedf9ff6d..96467328c2 100644 --- a/src/core_modules/capture-core/rules/index.js +++ b/src/core_modules/capture-core/rules/index.js @@ -10,3 +10,5 @@ export type { FieldData } from './inputHelpers'; export { postProcessRulesEffects } from './postProcessRulesEffects'; export { buildEffectsHierarchy } from './buildEffectsHierarchy'; export { filterApplicableRuleEffects } from './filterApplicableRuleEffects'; +export { validateAssignEffects } from './validateAssignEffects'; +export type { AssignOutputEffectWithValidations } from './validateAssignEffects'; diff --git a/src/core_modules/capture-core/rules/validateAssignEffects.js b/src/core_modules/capture-core/rules/validateAssignEffects.js new file mode 100644 index 0000000000..62f71694d7 --- /dev/null +++ b/src/core_modules/capture-core/rules/validateAssignEffects.js @@ -0,0 +1,63 @@ +// @flow +import { errorCreator } from 'capture-core-utils'; +import { effectActions } from '@dhis2/rules-engine-javascript'; +import log from 'loglevel'; +import type { AssignOutputEffect } from '@dhis2/rules-engine-javascript'; +import { type DataElement } from '../metaData'; +import type { QuerySingleResource } from '../utils/api'; +import { getValidators } from '../utils/validation/getValidators'; +import type { Validations } from '../utils/validation/validateValue'; +import { validateValue } from '../utils/validation/validateValue'; + +export type AssignOutputEffectWithValidations = { + [metaDataId: string]: Array, +}; + +export const validateAssignEffects = async ({ + dataElements, + effects, + querySingleResource, + onGetValidationContext, +}: { + dataElements: Array, + effects: Object, + querySingleResource: QuerySingleResource, + onGetValidationContext?: () => Object, +}): Promise => { + const assignEffects: {| [metaDataId: string]: Array |} = effects[effectActions.ASSIGN_VALUE]; + if (!assignEffects) { + return effects; + } + + const assignEffectsWithValidations = await dataElements.reduce(async (passPromise, metaData: DataElement) => { + const acc = await passPromise; + if (!assignEffects[metaData.id]) { + return acc; + } + + const effectsForId = assignEffects[metaData.id]; + const lastIndex = effectsForId.length - 1; + const value = effectsForId[lastIndex].value; + const validators = getValidators(metaData, querySingleResource); + const validationContext = onGetValidationContext && onGetValidationContext(); + + try { + const validatorResult = await validateValue({ validators, value, validationContext }); + const effectWithValidation = Object.assign({}, effectsForId[lastIndex], validatorResult); + + acc[metaData.id] = [effectWithValidation]; + return acc; + } catch (error) { + log.error( + errorCreator('an error occured while validating the assigned program rule effect')({ + metaData, + lastIndex, + error, + }), + ); + return acc; + } + }, Promise.resolve({})); + + return { ...effects, [effectActions.ASSIGN_VALUE]: assignEffectsWithValidations }; +}; diff --git a/src/core_modules/capture-core/components/D2Form/field/validators/constants/index.js b/src/core_modules/capture-core/utils/validation/constants/index.js similarity index 100% rename from src/core_modules/capture-core/components/D2Form/field/validators/constants/index.js rename to src/core_modules/capture-core/utils/validation/constants/index.js diff --git a/src/core_modules/capture-core/components/D2Form/field/validators/constants/validatorTypes.const.js b/src/core_modules/capture-core/utils/validation/constants/validatorTypes.const.js similarity index 100% rename from src/core_modules/capture-core/components/D2Form/field/validators/constants/validatorTypes.const.js rename to src/core_modules/capture-core/utils/validation/constants/validatorTypes.const.js diff --git a/src/core_modules/capture-core/components/D2Form/field/validators/getValidators.js b/src/core_modules/capture-core/utils/validation/getValidators.js similarity index 91% rename from src/core_modules/capture-core/components/D2Form/field/validators/getValidators.js rename to src/core_modules/capture-core/utils/validation/getValidators.js index be3c6b8e16..7f65ac02c1 100644 --- a/src/core_modules/capture-core/components/D2Form/field/validators/getValidators.js +++ b/src/core_modules/capture-core/utils/validation/getValidators.js @@ -25,16 +25,23 @@ import { getDateRangeValidator, getDateTimeRangeValidator, getTimeRangeValidator, -} from '../../../../utils/validators/form'; -import { dataElementTypes, type DateDataElement, type DataElement } from '../../../../metaData'; +} from './validators/form'; +import { dataElementTypes, type DateDataElement, type DataElement } from '../../metaData'; import { validatorTypes } from './constants'; -import type { QuerySingleResource } from '../../../../utils/api/api.types'; +import type { QuerySingleResource } from '../../utils/api/api.types'; -type Validator = (value: any) => Promise | boolean | { valid: boolean, errorMessage?: any}; +type Validator = ( + value: any, + validationContext: ?Object, + internalError?: ?{ + error?: ?string, + errorCode?: ?string, + } +) => Promise | boolean | { valid: boolean, errorMessage?: any, data?: any }; export type ValidatorContainer = { validator: Validator, - message: string, + message: string | Object, type?: string, validatingMessage?: string, } @@ -118,7 +125,7 @@ const validatorsForTypes = { type: validatorTypes.TYPE_BASE, }, { - validator: (value: string, allowFutureDate) => (allowFutureDate ? true : isValidNonFutureDate(value)), + validator: isValidNonFutureDate, type: validatorTypes.TYPE_EXTENDED, message: errorMessages.DATE_FUTURE_NOT_ALLOWED, }], @@ -205,28 +212,28 @@ const validatorsForTypes = { }], }; -function buildTypeValidators(metaData: DataElement | DateDataElement): ?Array { +function buildTypeValidators(metaData: DataElement | DateDataElement): Array { // $FlowFixMe dataElementTypes flow error let validatorContainersForType = validatorsForTypes[metaData.type] ? validatorsForTypes[metaData.type] : []; validatorContainersForType = validatorContainersForType.map(validatorContainer => ({ ...validatorContainer, - validator: (value: any) => { + validator: (value: any, internalComponentError?: ?{error: ?string, errorCode: ?string}) => { if (!value && value !== 0 && value !== false) { return true; } const toValidateValue = isString(value) ? value.trim() : value; // $FlowFixMe dataElementTypes flow error - return validatorContainer.validator(toValidateValue, metaData.allowFutureDate); + return validatorContainer.validator(toValidateValue, internalComponentError); }, })); return validatorContainersForType; } -function buildCompulsoryValidator(metaData: DataElement): Array { +function buildCompulsoryValidator(metaData: DataElement): Array { return metaData.compulsory ? [ @@ -243,12 +250,12 @@ function buildCompulsoryValidator(metaData: DataElement): Array { +): Array { return metaData.unique ? [ { - validator: (value: any, contextProps: ?Object) => { + validator: (value: any, internalComponentError?: ?{error: ?string, errorCode: ?string}, contextProps: ?Object) => { if (!value && value !== 0 && value !== false) { return true; } @@ -265,7 +272,7 @@ function buildUniqueValidator( } export const getValidators = -(metaData: DataElement, querySingleResource: QuerySingleResource): Array => [ +(metaData: DataElement, querySingleResource: QuerySingleResource): Array => [ buildCompulsoryValidator, buildTypeValidators, buildUniqueValidator, diff --git a/src/core_modules/capture-core/utils/validation/index.js b/src/core_modules/capture-core/utils/validation/index.js new file mode 100644 index 0000000000..aa54c5ad24 --- /dev/null +++ b/src/core_modules/capture-core/utils/validation/index.js @@ -0,0 +1,6 @@ +// @flow +export { getValidators } from './getValidators'; +export { validateValue } from './validateValue'; +export { validatorTypes } from './constants'; + +export type { ValidatorContainer } from './getValidators'; diff --git a/src/core_modules/capture-core/utils/validation/validateValue.js b/src/core_modules/capture-core/utils/validation/validateValue.js new file mode 100644 index 0000000000..c91bf08fda --- /dev/null +++ b/src/core_modules/capture-core/utils/validation/validateValue.js @@ -0,0 +1,70 @@ +// @flow +import type { ValidatorContainer } from './getValidators'; +import type { FieldCommitOptionsExtended } from '../../components/D2Form'; + +export type Validations = { + valid: boolean, + errorMessage?: ?string, + errorType?: ?string, + errorData?: Object, +}; + +export const validateValue = async ({ + validators, + value, + validationContext, + postProcessAsyncValidatonInitiation, + commitOptions, +}: { + validators?: Array, + value: any, + validationContext: ?Object, + postProcessAsyncValidatonInitiation?: Function, + commitOptions?: ?FieldCommitOptionsExtended, +}): Promise => { + if (!validators || validators.length === 0) { + return { + valid: true, + }; + } + + const validatorResult = await validators.reduce(async (passPromise, currentValidator) => { + const pass = await passPromise; + if (pass === true) { + let result = currentValidator.validator( + value, + { error: commitOptions?.error, errorCode: commitOptions?.errorCode }, + validationContext, + ); + if (result instanceof Promise) { + result = postProcessAsyncValidatonInitiation + ? postProcessAsyncValidatonInitiation(currentValidator.validatingMessage, result) + : result; + result = await result; + } + + if (result === true || (result && result.valid)) { + return true; + } + return { + message: (result && result.errorMessage) || currentValidator.message, + type: currentValidator.type, + data: result && result.data, + }; + } + return pass; + }, Promise.resolve(true)); + + if (validatorResult !== true) { + return { + valid: false, + errorMessage: validatorResult.message, + errorType: validatorResult.type, + errorData: validatorResult.data, + }; + } + + return { + valid: true, + }; +}; diff --git a/src/core_modules/capture-core/utils/validators/areRelativeRangeValuesSupported.js b/src/core_modules/capture-core/utils/validation/validators/areRelativeRangeValuesSupported.js similarity index 100% rename from src/core_modules/capture-core/utils/validators/areRelativeRangeValuesSupported.js rename to src/core_modules/capture-core/utils/validation/validators/areRelativeRangeValuesSupported.js diff --git a/src/core_modules/capture-core-utils/validators/form/age.validator.js b/src/core_modules/capture-core/utils/validation/validators/form/ageValidator.js similarity index 64% rename from src/core_modules/capture-core-utils/validators/form/age.validator.js rename to src/core_modules/capture-core/utils/validation/validators/form/ageValidator.js index 8006279562..3986f22ebb 100644 --- a/src/core_modules/capture-core-utils/validators/form/age.validator.js +++ b/src/core_modules/capture-core/utils/validation/validators/form/ageValidator.js @@ -1,12 +1,7 @@ // @flow -import { isValidZeroOrPositiveInteger } from './integerZeroOrPositive.validator'; -import { isValidDate } from './date.validator'; -/** - * - * @export - * @param {string} value - * @returns {boolean} - */ +import i18n from '@dhis2/d2-i18n'; +import { isValidZeroOrPositiveInteger } from 'capture-core-utils/validators/form'; +import { isValidDate } from './dateValidator'; type AgeValues = { date?: ?string, @@ -16,10 +11,10 @@ type AgeValues = { } const errorMessages = { - date: 'Please provide a valid date', - years: 'Please provide a valid positive integer', - months: 'Please provide a valid positive integer', - days: 'Please provide a valid positive integer', + date: i18n.t('Please provide a valid date'), + years: i18n.t('Please provide a valid positive integer'), + months: i18n.t('Please provide a valid positive integer'), + days: i18n.t('Please provide a valid positive integer'), }; @@ -50,8 +45,9 @@ function validateNumbers(years: ?string, months: ?string, days: ?string) { return { valid: true }; } -function validateDate(date: ?string, dateFormat: string) { - return (!date || isValidDate(date, dateFormat)) ? +function validateDate(date: ?string, internalComponentError?: ?{error: ?string, errorCode: ?string}) { + const { valid } = isValidDate(date, internalComponentError); + return valid ? { valid: true } : { valid: false, errorMessage: { date: errorMessages.date } }; } @@ -60,7 +56,8 @@ function isAllEmpty(value: AgeValues) { return (!value.date && !value.years && !value.months && !value.days); } -export function isValidAge(value: AgeValues, dateFormat: string) { + +export function isValidAge(value: Object, internalComponentError?: ?{error: ?string, errorCode: ?string}) { if (isAllEmpty(value)) { return false; } @@ -72,5 +69,6 @@ export function isValidAge(value: AgeValues, dateFormat: string) { ); if (!numberResult.valid) return numberResult; - return validateDate(value.date, dateFormat); + + return validateDate(value.date, internalComponentError); } diff --git a/src/core_modules/capture-core/utils/validation/validators/form/dateTimeValidator.js b/src/core_modules/capture-core/utils/validation/validators/form/dateTimeValidator.js new file mode 100644 index 0000000000..f35bd67c25 --- /dev/null +++ b/src/core_modules/capture-core/utils/validation/validators/form/dateTimeValidator.js @@ -0,0 +1,63 @@ +// @flow +import i18n from '@dhis2/d2-i18n'; +import { isValidTime } from 'capture-core-utils/validators/form'; +import { isValidDate } from './dateValidator'; + +type DateTimeValue = { + date?: ?string, + time?: ?string, +}; + +type ValidationResult = { + valid: boolean, + errorMessage?: { + timeError?: ?string, + dateError?: ?string + }, + data?: any, +}; + +const CUSTOM_VALIDATION_MESSAGES = { + INVALID_TIME: i18n.t('Please enter a valid time'), + MISSING_TIME: i18n.t('Please enter a time'), + MISSING_DATE: i18n.t('Please enter a date'), +}; + +export function isValidDateTime(value: DateTimeValue, + internalComponentError?: ?{error: ?string, errorCode: ?string}): ValidationResult { + if (!value) { + return { valid: true }; + } + + const { date, time } = value; + let dateError = ''; + let timeError = ''; + let isValid = true; + + if (!date) { + dateError = CUSTOM_VALIDATION_MESSAGES.MISSING_DATE; + isValid = false; + } else { + const dateValidation = isValidDate(date, internalComponentError); + if (!dateValidation.valid) { + dateError = dateValidation?.errorMessage; + isValid = false; + } + } + + if (!time) { + timeError = CUSTOM_VALIDATION_MESSAGES.MISSING_TIME; + isValid = false; + } else if (!isValidTime(time)) { + timeError = CUSTOM_VALIDATION_MESSAGES.INVALID_TIME; + isValid = false; + } + + return { + valid: isValid, + errorMessage: { + timeError, + dateError, + }, + }; +} diff --git a/src/core_modules/capture-core/utils/validation/validators/form/dateValidator.js b/src/core_modules/capture-core/utils/validation/validators/form/dateValidator.js new file mode 100644 index 0000000000..ef12190f5b --- /dev/null +++ b/src/core_modules/capture-core/utils/validation/validators/form/dateValidator.js @@ -0,0 +1,20 @@ +// @flow + +export function isValidDate(value: ?string, internalComponentError?: ?{error: ?string, errorCode: ?string}) { + if (!value) { + return { valid: false, errorMessage: null }; + } + + if (internalComponentError && internalComponentError?.errorCode === 'INVALID_DATE_MORE_THAN_MAX') { + return { valid: true, errorMessage: null }; + } + + if (internalComponentError?.error) { + return { + valid: false, + errorMessage: internalComponentError?.error, + }; + } + + return { valid: true, errorMessage: null }; +} diff --git a/src/core_modules/capture-core/utils/validators/form/getDateRangeValidator.js b/src/core_modules/capture-core/utils/validation/validators/form/getDateRangeValidator.js similarity index 94% rename from src/core_modules/capture-core/utils/validators/form/getDateRangeValidator.js rename to src/core_modules/capture-core/utils/validation/validators/form/getDateRangeValidator.js index e82e219f27..c76d738184 100644 --- a/src/core_modules/capture-core/utils/validators/form/getDateRangeValidator.js +++ b/src/core_modules/capture-core/utils/validation/validators/form/getDateRangeValidator.js @@ -1,6 +1,6 @@ // @flow import { isValidDate } from './dateValidator'; -import { parseDate } from '../../converters/date'; +import { parseDate } from '../../../converters/date'; /** * * @export diff --git a/src/core_modules/capture-core/utils/validators/form/getDateTimeRangeValidator.js b/src/core_modules/capture-core/utils/validation/validators/form/getDateTimeRangeValidator.js similarity index 97% rename from src/core_modules/capture-core/utils/validators/form/getDateTimeRangeValidator.js rename to src/core_modules/capture-core/utils/validation/validators/form/getDateTimeRangeValidator.js index 0953479053..154749b666 100644 --- a/src/core_modules/capture-core/utils/validators/form/getDateTimeRangeValidator.js +++ b/src/core_modules/capture-core/utils/validation/validators/form/getDateTimeRangeValidator.js @@ -1,6 +1,6 @@ // @flow import { isValidDateTime } from './dateTimeValidator'; -import { parseDate } from '../../converters/date'; +import { parseDate } from '../../../converters/date'; function isValidDateTimeWithEmptyCheck(value: ?Object) { return value && isValidDateTime(value); diff --git a/src/core_modules/capture-core/utils/validators/form/getNumberRangeValidator.js b/src/core_modules/capture-core/utils/validation/validators/form/getNumberRangeValidator.js similarity index 100% rename from src/core_modules/capture-core/utils/validators/form/getNumberRangeValidator.js rename to src/core_modules/capture-core/utils/validation/validators/form/getNumberRangeValidator.js diff --git a/src/core_modules/capture-core/utils/validators/form/getTimeRangeValidator.js b/src/core_modules/capture-core/utils/validation/validators/form/getTimeRangeValidator.js similarity index 100% rename from src/core_modules/capture-core/utils/validators/form/getTimeRangeValidator.js rename to src/core_modules/capture-core/utils/validation/validators/form/getTimeRangeValidator.js diff --git a/src/core_modules/capture-core/utils/validators/form/index.js b/src/core_modules/capture-core/utils/validation/validators/form/index.js similarity index 100% rename from src/core_modules/capture-core/utils/validators/form/index.js rename to src/core_modules/capture-core/utils/validation/validators/form/index.js diff --git a/src/core_modules/capture-core/utils/validation/validators/form/isValidNonFutureDate.js b/src/core_modules/capture-core/utils/validation/validators/form/isValidNonFutureDate.js new file mode 100644 index 0000000000..a2ad362fb6 --- /dev/null +++ b/src/core_modules/capture-core/utils/validation/validators/form/isValidNonFutureDate.js @@ -0,0 +1,21 @@ +// @flow +import i18n from '@dhis2/d2-i18n'; + +const CUSTOM_VALIDATION_MESSAGES = { + INVALID_DATE_MORE_THAN_MAX: i18n.t('A date in the future is not allowed'), +}; + +export const isValidNonFutureDate = (value: string, internalComponentError?: ?{error: ?string, errorCode: ?string}) => { + if (!value) { + return true; + } + + if (internalComponentError && internalComponentError?.errorCode === 'INVALID_DATE_MORE_THAN_MAX') { + return { + valid: false, + errorMessage: CUSTOM_VALIDATION_MESSAGES.INVALID_DATE_MORE_THAN_MAX, + }; + } + + return true; +}; diff --git a/src/core_modules/capture-core/utils/validators/form/ageValidator.js b/src/core_modules/capture-core/utils/validators/form/ageValidator.js deleted file mode 100644 index f2653017fc..0000000000 --- a/src/core_modules/capture-core/utils/validators/form/ageValidator.js +++ /dev/null @@ -1,8 +0,0 @@ -// @flow -import { isValidAge as isValidAgeCore } from 'capture-core-utils/validators/form'; -import { systemSettingsStore } from '../../../metaDataMemoryStores'; - -export function isValidAge(value: Object) { - const format = systemSettingsStore.get().dateFormat; - return isValidAgeCore(value, format); -} diff --git a/src/core_modules/capture-core/utils/validators/form/dateTimeValidator.js b/src/core_modules/capture-core/utils/validators/form/dateTimeValidator.js deleted file mode 100644 index 5db8270a2b..0000000000 --- a/src/core_modules/capture-core/utils/validators/form/dateTimeValidator.js +++ /dev/null @@ -1,8 +0,0 @@ -// @flow -import { isValidDateTime as isValidDateTimeCore } from 'capture-core-utils/validators/form'; -import { systemSettingsStore } from '../../../metaDataMemoryStores'; - -export function isValidDateTime(value: Object) { - const dateFormat = systemSettingsStore.get().dateFormat; - return isValidDateTimeCore(value, dateFormat); -} diff --git a/src/core_modules/capture-core/utils/validators/form/dateValidator.js b/src/core_modules/capture-core/utils/validators/form/dateValidator.js deleted file mode 100644 index 65416c8532..0000000000 --- a/src/core_modules/capture-core/utils/validators/form/dateValidator.js +++ /dev/null @@ -1,8 +0,0 @@ -// @flow -import { isValidDate as isValidDateCore } from 'capture-core-utils/validators/form'; -import { systemSettingsStore } from '../../../metaDataMemoryStores'; - -export function isValidDate(value: string) { - const format = systemSettingsStore.get().dateFormat; - return isValidDateCore(value, format); -} diff --git a/src/core_modules/capture-core/utils/validators/form/isValidNonFutureDate.js b/src/core_modules/capture-core/utils/validators/form/isValidNonFutureDate.js deleted file mode 100644 index 3827f2ee12..0000000000 --- a/src/core_modules/capture-core/utils/validators/form/isValidNonFutureDate.js +++ /dev/null @@ -1,18 +0,0 @@ -// @flow -import i18n from '@dhis2/d2-i18n'; -import moment from 'moment'; -import { parseDate } from '../../converters/date'; - -export const isValidNonFutureDate = (value: string) => { - const { isValid, momentDate } = parseDate(value); - - if (!isValid) { - return isValid; - } - - return { - // $FlowFixMe -> if parseDate returns isValid true, there should always be a momentDate - valid: momentDate.isSameOrBefore(moment()), - message: i18n.t('A future date is not allowed'), - }; -}; diff --git a/src/core_modules/capture-ui/AgeField/AgeField.component.js b/src/core_modules/capture-ui/AgeField/AgeField.component.js index ccf1bbaad9..a125ea8900 100644 --- a/src/core_modules/capture-ui/AgeField/AgeField.component.js +++ b/src/core_modules/capture-ui/AgeField/AgeField.component.js @@ -26,11 +26,17 @@ type InputMessageClasses = { } type DateParser = (value: string) => { isValid: boolean, momentDate: any }; + type DateStringFromMomentFormatter = (momentValue: Object) => string; +type ValidationOptions = { + error?: ?string, + errorCode?: ?string, +}; + type Props = { value: ?AgeValues, - onBlur: (value: ?AgeValues) => void, + onBlur: (value: ?AgeValues, options: ?ValidationOptions) => void, onChange: (value: ?AgeValues) => void, onRemoveFocus: () => void, orientation: $Values, @@ -141,7 +147,7 @@ class D2AgeFieldPlain extends Component { this.props.onBlur(calculatedValues); } - handleDateBlur = (date: ?string) => { + handleDateBlur = (date: ?string, options: ?ValidationOptions) => { const { onParseDate, onGetFormattedDateStringFromMoment, onRemoveFocus, moment } = this.props; onRemoveFocus && onRemoveFocus(); const calculatedValues = date ? getCalculatedValues( @@ -149,7 +155,7 @@ class D2AgeFieldPlain extends Component { onParseDate, onGetFormattedDateStringFromMoment, moment) : null; - this.props.onBlur(calculatedValues); + this.props.onBlur(calculatedValues, options); } renderMessage = (key: string) => { @@ -200,17 +206,13 @@ class D2AgeFieldPlain extends Component { value, onBlur, shrinkDisabled, - dateCalendarOnConvertValueIn, - dateCalendarOnConvertValueOut, dateCalendarWidth, - datePopupAnchorPosition, - dateCalendarTheme, - dateCalendarLocale, datePlaceholder, moment, onParseDate, ...passOnProps } = this.props; + const dateInputContainerClass = classNames( { [defaultClasses.ageDateInputContainerHorizontal]: !isVertical }, ); @@ -222,11 +224,6 @@ class D2AgeFieldPlain extends Component { value={currentValues.date} onChange={date => onChange({ ...currentValues, date })} calendarWidth={dateCalendarWidth} - popupAnchorPosition={datePopupAnchorPosition} - calendarTheme={dateCalendarTheme} - calendarLocale={dateCalendarLocale} - calendarOnConvertValueIn={dateCalendarOnConvertValueIn} - calendarOnConvertValueOut={dateCalendarOnConvertValueOut} placeholder={datePlaceholder} {...passOnProps} /> diff --git a/src/core_modules/capture-ui/DateAndTimeFields/DateField/Date.component.js b/src/core_modules/capture-ui/DateAndTimeFields/DateField/Date.component.js index c3d3517db0..b48ee77ae5 100644 --- a/src/core_modules/capture-ui/DateAndTimeFields/DateField/Date.component.js +++ b/src/core_modules/capture-ui/DateAndTimeFields/DateField/Date.component.js @@ -1,144 +1,62 @@ // @flow -import React, { createRef } from 'react'; -import { DatePopup } from './DatePopup.component'; -import { DateCalendar } from './DateCalendar.component'; -import { lowerCaseFirstLetter } from '../../internal/utils/string/lowerCaseFirstLetter'; -import { DateInput } from '../../internal/DateInput/DateInput.component'; +import React from 'react'; +import { CalendarInput } from '@dhis2/ui'; +import { systemSettingsStore } from '../../../capture-core/metaDataMemoryStores'; + +type ValidationOptions = { + error?: ?string, + errorCode?: ?string, +}; type Props = { - value: ?string, + value: ?Object, width: number, - maxWidth?: ?number, - calendarWidth?: ?number, - calendarHeight?: ?number, - inputWidth?: ?number, + maxWidth?: ?string, + calendarWidth?: ?string, + inputWidth?: ?string, disabled?: ?boolean, - onBlur: (value: string) => void, + onBlur: (value: Object, options: ValidationOptions) => void, onFocus?: ?() => void, onDateSelectedFromCalendar?: () => void, + calendar?: string, + placeholder?: string, + label?: string, + calendarMaxMoment?: any, + innerMessage?: any }; +type Validation = {| + validationCode: ?string, + validationText: ?string, + error?: boolean, + valid: boolean, +|}; + type State = { - popoverOpen: boolean, + calendarError: ?Validation, }; -export class DateField extends React.Component { - static splitPassOnProps(passOnProps: ?Object) { - const splittedProps = { - input: {}, - popup: {}, - calendar: {}, - }; - - if (!passOnProps) { - return splittedProps; - } - - return Object - .keys(passOnProps) - .reduce((accSplittedProps, propKey) => { - let propContainer; - if (propKey.startsWith(DateField.propContainers.CALENDAR)) { - propContainer = DateField.propContainers.CALENDAR; - } else if (propKey.startsWith(DateField.propContainers.POPUP)) { - propContainer = DateField.propContainers.POPUP; - } else { - propContainer = DateField.propContainers.INPUT; - } - - const outputKey = lowerCaseFirstLetter(propKey.replace(propContainer, '')); - accSplittedProps[propContainer][outputKey] = passOnProps[propKey]; - return accSplittedProps; - }, splittedProps); - } +const formatDate = (date: any, dateFormat: string): ?string => + (dateFormat === 'dd-MM-yyyy' ? date?.format('DD-MM-YYYY') : date?.format('YYYY-MM-DD')); - containerInstance: ?HTMLElement; - handleTextFieldFocus: () => void; - handleDateSelected: (value: string) => void; - handleTextFieldBlur: (event: SyntheticEvent) => void; - hidePopover: () => void; - handleDocumentClick: (event: MouseEvent) => void; - calendarWrapperDOMElementRef: { current: ?HTMLDivElement }; +export class DateField extends React.Component { + handleDateSelected: (value: {calendarDateString: string}) => void; constructor(props: Props) { super(props); - this.state = { - popoverOpen: false, - }; - - this.handleTextFieldFocus = this.handleTextFieldFocus.bind(this); this.handleDateSelected = this.handleDateSelected.bind(this); - this.handleTextFieldBlur = this.handleTextFieldBlur.bind(this); - this.hidePopover = this.hidePopover.bind(this); - this.handleDocumentClick = this.handleDocumentClick.bind(this); - - this.calendarWrapperDOMElementRef = createRef(); } - componentWillUnmount() { - document.removeEventListener('click', this.handleDocumentClick); - } - - static propContainers = { - CALENDAR: 'calendar', - POPUP: 'popup', - INPUT: 'input', - }; - - handleTextFieldFocus() { - document.removeEventListener('click', this.handleDocumentClick); - - this.setState({ - popoverOpen: true, - }); + handleDateSelected(value: { calendarDateString: string, validation: Validation}) { + const { calendarDateString: date, validation } = value || {}; + this.props.onBlur( + date, { + error: validation?.validationText, + errorCode: validation?.validationCode, + }); - this.props.onFocus && this.props.onFocus(); - } - - handleDateSelected(value: string) { - this.props.onBlur(value); - this.hidePopover(); this.props.onDateSelectedFromCalendar && this.props.onDateSelectedFromCalendar(); - document.removeEventListener('click', this.handleDocumentClick); - } - - handleDocumentClick({ target }: MouseEvent) { - const calendarWrapperDOMElement = this.calendarWrapperDOMElementRef.current; - - if (!calendarWrapperDOMElement) { - throw Error('calendar wrapper DOM element not found'); - } - - if (target === calendarWrapperDOMElement || - (target instanceof Node && calendarWrapperDOMElement.contains(target))) { - return; - } - - this.hidePopover(); - document.removeEventListener('click', this.handleDocumentClick); - } - - handleTextFieldBlur({ relatedTarget, currentTarget }: SyntheticFocusEvent) { - const calendarWrapperDOMElement = this.calendarWrapperDOMElementRef.current; - - if (!calendarWrapperDOMElement) { - throw Error('calendar wrapper DOM element not found'); - } - - if (relatedTarget === calendarWrapperDOMElement || - (relatedTarget instanceof Node && calendarWrapperDOMElement.contains(relatedTarget))) { - document.addEventListener('click', this.handleDocumentClick); - } else { - this.props.onBlur(currentTarget.value); - this.hidePopover(); - } - } - - hidePopover() { - this.setState({ - popoverOpen: false, - }); } render() { @@ -146,61 +64,43 @@ export class DateField extends React.Component { width, maxWidth, calendarWidth, - calendarHeight, inputWidth, - onBlur, - onFocus, - onDateSelectedFromCalendar, - ...passOnProps + calendar, + calendarMaxMoment, + value, + innerMessage, } = this.props; - const { popoverOpen } = this.state; + const calculatedInputWidth = inputWidth || width; const calculatedCalendarWidth = calendarWidth || width; - const splittedPassOnProps = DateField.splitPassOnProps(passOnProps); - const calculatedCalendarHeight = calendarHeight || 350; + const calendarType = calendar || 'gregory'; + const format = systemSettingsStore.get().dateFormat; + const errorProps = innerMessage && innerMessage.messageType === 'error' + ? { error: !!innerMessage.message?.dateInnerErrorMessage, + validationText: innerMessage.message?.dateInnerErrorMessage } + : {}; return (
{ this.containerInstance = containerInstance; }} style={{ width, maxWidth, }} > - { /* // $FlowFixMe */} - {/* $FlowFixMe[prop-missing] automated comment */} - -
- { /* // $FlowFixMe */} - {/* $FlowFixMe[prop-missing] automated comment */} - - { /* // $FlowFixMe */} - {/* $FlowFixMe[prop-missing] automated comment */} - - -
); } diff --git a/src/core_modules/capture-ui/DateAndTimeFields/DateField/DateCalendar.component.js b/src/core_modules/capture-ui/DateAndTimeFields/DateField/DateCalendar.component.js deleted file mode 100644 index 73fb27a7c6..0000000000 --- a/src/core_modules/capture-ui/DateAndTimeFields/DateField/DateCalendar.component.js +++ /dev/null @@ -1,98 +0,0 @@ -// @flow -/* eslint-disable class-methods-use-this */ -import React, { Component } from 'react'; -import moment from 'moment'; -import InfiniteCalendar from '@joakim_sm/react-infinite-calendar'; -import '@joakim_sm/react-infinite-calendar/styles.css'; -import './customStyles.css'; - -type Props = { - onDateSelected: (value: any) => void, - value?: ?string, - minMoment?: Object, - maxMoment?: Object, - currentWidth: number, - height?: ?number, - classes: Object, - displayOptions?: ?Object, - calendarTheme: Object, - onConvertValueIn: (inputValue: ?string) => Date, - onConvertValueOut: (date: Date) => string, -}; - -export class DateCalendar extends Component { - handleChange: (e: any, dates: ?Array) => void; - displayOptions: Object; - - constructor(props: Props) { - super(props); - this.handleChange = this.handleChange.bind(this); - - this.displayOptions = { - ...DateCalendar.displayOptions, - ...this.props.displayOptions, - }; - } - - shouldComponentUpdate() { - return false; - } - - static displayOptions = { - showHeader: true, - showMonthsForYears: false, - }; - - handleChange(changeDate: Date) { - const changeDateInLocalFormat = this.props.onConvertValueOut(changeDate); - this.props.onDateSelected(changeDateInLocalFormat); - } - - getValue(inputValue: ?string) { - return this.props.onConvertValueIn(inputValue); - } - - getMinMaxProps() { - const { minMoment = moment('1900-01-01'), maxMoment = moment('2099-12-31') } = this.props; - - const minDate = minMoment.toDate(); - const maxDate = maxMoment.toDate(); - - return { - min: minDate, - minDate, - max: maxDate, - maxDate, - }; - } - - render() { - const { - value, - classes, - currentWidth, - height, - minMoment, - maxMoment, - onDateSelected, - displayOptions, - ...passOnProps - } = this.props; - - return ( -
- { /* $FlowFixMe */} - -
- ); - } -} diff --git a/src/core_modules/capture-ui/DateAndTimeFields/DateField/DatePopup.component.js b/src/core_modules/capture-ui/DateAndTimeFields/DateField/DatePopup.component.js deleted file mode 100644 index db9e3aef4a..0000000000 --- a/src/core_modules/capture-ui/DateAndTimeFields/DateField/DatePopup.component.js +++ /dev/null @@ -1,87 +0,0 @@ -// @flow -import * as React from 'react'; -import { anchorPositions, modes, absoluteDirections } from './datePopup.const'; -import defaultClasses from './datePopup.module.css'; - -type Props = { - open: boolean, - children: React.Node, - anchorPosition?: $Values, - mode?: $Values, - absoluteDirection: $Values, - inputWidth: number, - calendarWidth: number, - inputUsesFloatingLabel: boolean, -}; - -export class DatePopup extends React.Component { - getAbsoluteBottom() { - const inputUsesFloatingLabel = this.props.inputUsesFloatingLabel; - return inputUsesFloatingLabel ? 60 : 40; - } - getAbsoluteVerticalPosition() { - const absoluteDirection = this.props.absoluteDirection; - return absoluteDirection === absoluteDirections.UP ? { bottom: this.getAbsoluteBottom() } : { top: 0 }; - } - calculateMarginLeftInline() { - const { inputWidth, calendarWidth } = this.props; - return calendarWidth - inputWidth; - } - getPopupStyle() { - const { anchorPosition, mode } = this.props; - - let calendarStyle; - if (anchorPosition === anchorPositions.RIGHT) { - calendarStyle = this.getRightCalendarStyle(mode); - } else if (anchorPosition === anchorPositions.CENTER) { - calendarStyle = this.getCenterCalendarStyle(mode); - } else { - calendarStyle = this.getLeftCalendarStyle(mode); - } - return calendarStyle; - } - - getRightCalendarStyle = (mode: ?$Values) => - (mode === modes.INLINE ? - { marginLeft: `-${this.calculateMarginLeftInline()}px` } : - { ...this.getAbsoluteVerticalPosition(), right: 0 } - ); - - getLeftCalendarStyle = (mode: ?$Values) => - (mode === modes.INLINE ? { } : { ...this.getAbsoluteVerticalPosition(), left: 0 }); - - getCenterCalendarStyle = (mode: ?$Values) => - (mode === modes.INLINE ? - { marginLeft: `-${(this.calculateMarginLeftInline() / 2)}px` } : - { ...this.getAbsoluteVerticalPosition(), left: '50%', transform: 'translate(-50%, 0)' } - ); - - render() { - const { - open, - mode, - children, - } = this.props; - - if (!open) { - return null; - } - - const containerClasses = mode === modes.INLINE ? defaultClasses.containerInline : defaultClasses.containerAbsolute; - const calendarClasses = mode === modes.INLINE ? defaultClasses.calendarInline : defaultClasses.calendarAbsolute; - const calendarStyle = this.getPopupStyle(); - - return ( -
-
- {children} -
-
- ); - } -} diff --git a/src/core_modules/capture-ui/DateAndTimeFields/DateField/datePopup.const.js b/src/core_modules/capture-ui/DateAndTimeFields/DateField/datePopup.const.js deleted file mode 100644 index 592588264e..0000000000 --- a/src/core_modules/capture-ui/DateAndTimeFields/DateField/datePopup.const.js +++ /dev/null @@ -1,17 +0,0 @@ -// @flow - -export const anchorPositions = { - LEFT: 'left', - RIGHT: 'right', - CENTER: 'center', -}; - -export const absoluteDirections = { - UP: 'up', - DOWN: 'down', -}; - -export const modes = { - ABSOLUTE: 'absolute', - INLINE: 'inline', -}; diff --git a/src/core_modules/capture-ui/DateAndTimeFields/DateField/datePopup.module.css b/src/core_modules/capture-ui/DateAndTimeFields/DateField/datePopup.module.css deleted file mode 100644 index 23ae546712..0000000000 --- a/src/core_modules/capture-ui/DateAndTimeFields/DateField/datePopup.module.css +++ /dev/null @@ -1,8 +0,0 @@ -.containerAbsolute { - position: relative; -} - -.calendarAbsolute { - position: absolute; - z-index: 201; -} \ No newline at end of file diff --git a/src/core_modules/capture-ui/DateAndTimeFields/DateTimeField/DateTime.component.js b/src/core_modules/capture-ui/DateAndTimeFields/DateTimeField/DateTime.component.js index 7ee422ba37..a97077e1ff 100644 --- a/src/core_modules/capture-ui/DateAndTimeFields/DateTimeField/DateTime.component.js +++ b/src/core_modules/capture-ui/DateAndTimeFields/DateTimeField/DateTime.component.js @@ -3,7 +3,6 @@ import React, { Component } from 'react'; import i18n from '@dhis2/d2-i18n'; import classNames from 'classnames'; import defaultClasses from './dateTime.module.css'; - import { orientations } from '../../constants/orientations.const'; import { DateTimeDate } from '../../internal/DateTimeInput/DateTimeDate.component'; import { DateTimeTime } from '../../internal/DateTimeInput/DateTimeTime.component'; @@ -14,24 +13,28 @@ type Value = { }; type Props = { - onBlur: (value: ?Value, options: Object) => void, + onBlur: (value: ?Value, options: Object, internalError: Object) => void, onChange: (value: ?Value) => void, value: Value, - dateMaxWidth: any, - dateWidth: any, + dateMaxWidth: string, + dateWidth: string, calendarWidth?: ?number, orientation: $Values, - calendarTheme: Object, - calendarLocale: Object, - calendarOnConvertValueIn: Function, - calendarOnConvertValueOut: Function, - popupAnchorPosition?: ?any, classes: Object, dateLabel: string, timeLabel: string, + innerMessage: Object +}; + +type State = { + dateError: ?{ + error?: ?string, + errorCode?: ?string + }, }; -export class DateTimeField extends Component { + +export class DateTimeField extends Component { handleTimeChange: (timeValue: string) => void; handleDateChange: (dateValue: string) => void; handleTimeBlur: (timeValue: string) => void; @@ -45,6 +48,9 @@ export class DateTimeField extends Component { constructor(props: Props) { super(props); + this.state = { + dateError: { error: null, errorCode: null }, + }; this.handleTimeChange = this.handleTimeChange.bind(this); this.handleDateChange = this.handleDateChange.bind(this); this.handleTimeBlur = this.handleTimeBlur.bind(this); @@ -71,20 +77,32 @@ export class DateTimeField extends Component { const currentValue = this.getValue(); this.handleBlur({ time: timeValue, - date: currentValue.date, - }, !!currentValue.date); + date: this.props.value?.date, + }, { + touched: !!currentValue.date, + error: this.state.dateError?.error, + errorCode: this.state.dateError?.errorCode, + }); } - handleDateBlur(dateValue: string) { + handleDateBlur(dateValue: string, options: ?Object) { this.touchedFields.add('dateTouched'); - const currentValue = this.getValue(); - this.handleBlur({ - time: currentValue.time, - date: dateValue, - }, !!currentValue.time); + this.setState(() => ({ + dateError: { error: options?.error, errorCode: options?.errorCode }, + }), () => { + const currentValue = this.getValue(); + this.handleBlur({ + time: currentValue.time, + date: dateValue, + }, { + touched: !!currentValue.date, + error: this.state.dateError?.error, + errorCode: this.state.dateError?.errorCode, + }); + }); } - handleBlur(value: Value, otherFieldHasValue: boolean) { + handleBlur(value: Value, otherFieldHasValue: Object) { const onBlur = this.props.onBlur; const touched = this.touchedFields.size === 2; if (!value.date && !value.time) { @@ -94,7 +112,9 @@ export class DateTimeField extends Component { return; } onBlur(value, { - touched: touched || otherFieldHasValue, + touched: touched || otherFieldHasValue.touched, + error: otherFieldHasValue?.error, + errorCode: otherFieldHasValue?.errorCode, }); } @@ -106,18 +126,15 @@ export class DateTimeField extends Component { dateMaxWidth, dateWidth, calendarWidth, - popupAnchorPosition, - calendarTheme, - calendarLocale, - calendarOnConvertValueIn, - calendarOnConvertValueOut, classes, orientation, onBlur, dateLabel, timeLabel, onChange, + innerMessage, ...passOnProps } = this.props; + const isVertical = orientation === orientations.VERTICAL; const currentValue = this.getValue(); const dateValue = currentValue.date; @@ -144,25 +161,26 @@ export class DateTimeField extends Component { onChange={this.handleDateChange} onBlur={this.handleDateBlur} label={dateLabel} - calendarTheme={calendarTheme} - popupAnchorPosition={popupAnchorPosition} - calendarLocale={calendarLocale} - calendarOnConvertValueIn={calendarOnConvertValueIn} - calendarOnConvertValueOut={calendarOnConvertValueOut} classes={classes} + innerMessage={innerMessage} {...passOnProps} /> +
{innerMessage?.message?.dateError}
- {/* $FlowFixMe[cannot-spread-inexact] automated comment */} - +
+ {/* $FlowFixMe[cannot-spread-inexact] automated comment */} + +
{innerMessage?.message?.timeError}
+
); diff --git a/src/core_modules/capture-ui/internal/AgeInput/AgeDateInput.component.js b/src/core_modules/capture-ui/internal/AgeInput/AgeDateInput.component.js index 69b6018ca7..4940f4d3fc 100644 --- a/src/core_modules/capture-ui/internal/AgeInput/AgeDateInput.component.js +++ b/src/core_modules/capture-ui/internal/AgeInput/AgeDateInput.component.js @@ -1,6 +1,5 @@ // @flow import React, { Component } from 'react'; -import moment from 'moment'; import { DateField } from '../../DateAndTimeFields/DateField/Date.component'; import typeof { orientations } from '../../constants/orientations.const'; import { withFocusSaver } from '../../HOC/withFocusSaver'; @@ -19,9 +18,8 @@ class AgeDateInputPlain extends Component { // $FlowFixMe[cannot-spread-inexact] automated comment diff --git a/src/core_modules/capture-ui/internal/DateTimeInput/DateTimeDate.component.js b/src/core_modules/capture-ui/internal/DateTimeInput/DateTimeDate.component.js index b1202d9335..0200268e59 100644 --- a/src/core_modules/capture-ui/internal/DateTimeInput/DateTimeDate.component.js +++ b/src/core_modules/capture-ui/internal/DateTimeInput/DateTimeDate.component.js @@ -1,18 +1,19 @@ // @flow import React from 'react'; import { withFocusSaver } from '../../HOC/withFocusSaver'; -import { DateField } from '../../DateAndTimeFields/DateField/Date.component'; +import { withTextFieldFocusHandler } from '../TextInput/withFocusHandler'; import { withShrinkLabel } from '../../HOC/withShrinkLabel'; - +import { DateField } from '../../DateAndTimeFields/DateField/Date.component'; function DateTimeDatePlain(props) { const { value, ...passOnProps } = props; + return ( ); } -export const DateTimeDate = withFocusSaver()(withShrinkLabel()(DateTimeDatePlain)); +export const DateTimeDate = withFocusSaver()(withShrinkLabel()(withTextFieldFocusHandler()(DateTimeDatePlain))); diff --git a/src/core_modules/capture-ui/internal/DateTimeInput/DateTimeTime.component.js b/src/core_modules/capture-ui/internal/DateTimeInput/DateTimeTime.component.js index d3e13858b3..4d6f7784b5 100644 --- a/src/core_modules/capture-ui/internal/DateTimeInput/DateTimeTime.component.js +++ b/src/core_modules/capture-ui/internal/DateTimeInput/DateTimeTime.component.js @@ -1,8 +1,8 @@ // @flow import React from 'react'; +import { InputField } from '@dhis2-ui/input'; import { withFocusSaver } from '../../HOC/withFocusSaver'; import { withTextFieldFocusHandler } from '../TextInput/withFocusHandler'; -import { TextInput } from '../TextInput/TextInput.component'; import { withShrinkLabel } from '../../HOC/withShrinkLabel'; type Props = { @@ -12,23 +12,28 @@ type Props = { class DateTimeTimePlain extends React.Component { handleBlur = (event) => { - this.props.onBlur(event.currentTarget.value); + this.props.onBlur(event.value); } handleChange = (event) => { - this.props.onChange && this.props.onChange(event.currentTarget.value); + this.props.onChange && this.props.onChange(event.value); } render() { // $FlowFixMe[prop-missing] automated comment - const { onBlur, onChange, value, ...passOnProps } = this.props; + const { onBlur, onChange, value, innerMessage, ...passOnProps } = this.props; + const errorProps = innerMessage + ? { error: !!innerMessage.message?.errorMessage?.timeError, validationText: innerMessage.message?.errorMessage?.timeError } + : {}; + return ( - // $FlowFixMe[cannot-spread-inexact] automated comment - ); } diff --git a/src/core_modules/capture-ui/internal/TextInput/TextInput.component.js b/src/core_modules/capture-ui/internal/TextInput/TextInput.component.js index 0dd99c6715..8f56586745 100644 --- a/src/core_modules/capture-ui/internal/TextInput/TextInput.component.js +++ b/src/core_modules/capture-ui/internal/TextInput/TextInput.component.js @@ -31,8 +31,8 @@ export const TextInput = (props: Props) => { /> : // $FlowFixMe[cannot-spread-inexact] automated comment diff --git a/src/core_modules/capture-ui/internal/TextInput/withFocusHandler.js b/src/core_modules/capture-ui/internal/TextInput/withFocusHandler.js index e66c7ab510..fac5f24e69 100644 --- a/src/core_modules/capture-ui/internal/TextInput/withFocusHandler.js +++ b/src/core_modules/capture-ui/internal/TextInput/withFocusHandler.js @@ -7,7 +7,7 @@ type Props = { onSetFocus: () => void, onRemoveFocus: () => void, inFocus: boolean, - onBlur?: ?(event: SyntheticEvent) => void, + onBlur?: ?(event: SyntheticEvent, rest?: ?Object) => void, onFocus: () => void, classes: { inputWrapperFocused: string, @@ -17,9 +17,9 @@ type Props = { export const withTextFieldFocusHandler = () => (InnerCompnent: React.ComponentType) => class FocusHandlerHOC extends React.Component { - handleBlur = (event: SyntheticEvent) => { + handleBlur = (event: SyntheticEvent, rest?: ?Object) => { this.props.onRemoveFocus(); - this.props.onBlur && this.props.onBlur(event); + this.props.onBlur && this.props.onBlur(event, rest); } handleFocus = () => { diff --git a/yarn.lock b/yarn.lock index 5c8b6775b8..4c2c7b3910 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11,9 +11,9 @@ uuid "^8.3.2" "@actions/http-client@^2.0.1": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.0.tgz#f8239f375be6185fcd07765efdcf0031ad5df1a0" - integrity sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg== + version "2.2.1" + resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.1.tgz#ed3fe7a5a6d317ac1d39886b0bb999ded229bb38" + integrity sha512-KhC/cZsq7f8I4LfZSJKgCvEwfkE8o1538VoBeoGzokVLLnbFDEAdFD3UhoMklxo2un9NJVBdANOresx7vTHlHw== dependencies: tunnel "^0.0.6" undici "^5.25.4" @@ -24,12 +24,12 @@ integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== "@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" "@apideck/better-ajv-errors@^0.3.1": version "0.3.6" @@ -47,34 +47,34 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.8.3": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.8.3": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" + integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== "@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.17.8", "@babel/core@^7.6.2", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" - integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.7" - "@babel/parser" "^7.23.6" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -90,69 +90,68 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.23.6", "@babel/generator@^7.7.2", "@babel/generator@^7.7.4": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== +"@babel/generator@^7.25.0", "@babel/generator@^7.7.2", "@babel/generator@^7.7.4": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" + integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" + "@babel/types" "^7.25.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== dependencies: - "@babel/types" "^7.22.15" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6", "@babel/helper-create-class-features-plugin@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz#b2e6826e0e20d337143655198b79d58fdc9bd43d" - integrity sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253" + integrity sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/traverse" "^7.25.0" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" + integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-annotate-as-pure" "^7.24.7" regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz#64df615451cb30e94b59a9696022cffac9a10088" - integrity sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA== +"@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -160,172 +159,165 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" +"@babel/helper-member-expression-to-functions@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" + integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== + dependencies: + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.8" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + +"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e" + integrity sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-wrap-function" "^7.25.0" + "@babel/traverse" "^7.25.0" + +"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" + integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/traverse" "^7.25.0" + +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + +"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + +"@babel/helper-wrap-function@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81" + integrity sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ== + dependencies: + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/helpers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" + integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== +"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.14.7", "@babel/parser@^7.18.8", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3", "@babel/parser@^7.7.0", "@babel/parser@^7.7.5", "@babel/parser@^7.9.4": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" + integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.25.2" -"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" + integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA== dependencies: - "@babel/types" "^7.23.0" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.3" -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" - integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helpers@^7.23.7": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" - integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz#cd0c583e01369ef51676bdb3d7b603e17d2b3f73" + integrity sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA== dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.14.7", "@babel/parser@^7.18.8", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6", "@babel/parser@^7.7.0", "@babel/parser@^7.7.5", "@babel/parser@^7.9.4": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" - integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" - integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz#749bde80356b295390954643de7635e0dffabe73" + integrity sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" - integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" - integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz#3a82a70e7cb7294ad2559465ebcb871dfbf078fb" + integrity sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.0" "@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.8.3": version "7.18.6" @@ -336,13 +328,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.16.4": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.7.tgz#1d827902cbd3d9054e54fb2f2056cdd1eaa0e368" - integrity sha512-b1s5JyeMvqj7d9m9KhJNHKc18gEJiSyVzVX3bwbiPalQBQpuvfPh6lA9F7Kk/dWH0TIiXRpB9yicwijY6buPng== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz#7e2dcfeda4a42596b57c4c9de1f5176bbfc532e3" + integrity sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.23.7" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-decorators" "^7.23.3" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-decorators" "^7.24.7" "@babel/plugin-proposal-nullish-coalescing-operator@^7.1.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": version "7.18.6" @@ -383,12 +375,12 @@ integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== "@babel/plugin-proposal-throw-expressions@^7.7.4": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.23.3.tgz#acb23c5ffc0cae31d5a52b26e678d1b9a69dbc5b" - integrity sha512-aAQebpCm3+qUMJ3ug9B5G26Z5VsaE955lGWrZMhAIPFhK/Cv7bL9GbWgdEXmel/jlHTRvwcYRnfzJS2prsPdVg== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.24.7.tgz#8a386bcb77965d82f5b926508b27919d9ac9450f" + integrity sha512-Rh4WoHyWKgsxvdkEMqDEZtKuGnZw+JwicMCvcZaIjYaQ3fK+a8JZYLhgcac9dKcL47Xqf+SG3MopTx+8BACdrQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-throw-expressions" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-throw-expressions" "^7.24.7" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -418,12 +410,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz#a1d351d6c25bfdcf2e16f99b039101bc0ffcb0ca" - integrity sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA== +"@babel/plugin-syntax-decorators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz#e4f8a0a8778ccec669611cd5aed1ed8e6e3a6fcf" + integrity sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -439,26 +431,26 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.23.3", "@babel/plugin-syntax-flow@^7.7.4": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz#084564e0f3cc21ea6c70c44cff984a1c0509729a" - integrity sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA== +"@babel/plugin-syntax-flow@^7.24.7", "@babel/plugin-syntax-flow@^7.7.4": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz#d1759e84dd4b437cf9fae69b4c06c41d7625bfb7" + integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-assertions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" - integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-attributes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" - integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -481,12 +473,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-jsx@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" - integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== +"@babel/plugin-syntax-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -537,12 +529,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-throw-expressions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.23.3.tgz#46077241577243b00ddd465f627242c492bf935c" - integrity sha512-P7zUpjwebv09kxTCG0Gp0TMa8luPG4t2Q5gylayLeRHHwfUR4jgjYgx/X9DYPF81/W5aYpYOzX2kQnChAFFp8Q== +"@babel/plugin-syntax-throw-expressions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.24.7.tgz#30887b54c478120831bc95881e73ec1984584930" + integrity sha512-b1bdlAmUTy9VQ/g2cnBuJFwd7jeARNW2F65c9Gcn8qyNYGuVy/cYyqpiSL6SVmUAJTDbIYL2FzlZ8nH1qUCBXA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" @@ -551,12 +543,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.23.3", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" - integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== +"@babel/plugin-syntax-typescript@^7.24.7", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" + integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -566,484 +558,492 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" - integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz#3aa0b4f2fa3788b5226ef9346cf6d16ec61f99cd" - integrity sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA== +"@babel/plugin-transform-async-generator-functions@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf" + integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-remap-async-to-generator" "^7.25.0" "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/traverse" "^7.25.0" -"@babel/plugin-transform-async-to-generator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" - integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" -"@babel/plugin-transform-block-scoped-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" - integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" - integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== +"@babel/plugin-transform-block-scoping@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz#23a6ed92e6b006d26b1869b1c91d1b917c2ea2ac" + integrity sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-class-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" - integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-static-block@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" - integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.23.8": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz#d08ae096c240347badd68cdf1b6d1624a6435d92" - integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== +"@babel/plugin-transform-classes@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e" + integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/traverse" "^7.25.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" - integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" - integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== +"@babel/plugin-transform-destructuring@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" + integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-dotall-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" - integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-duplicate-keys@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" - integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dynamic-import@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" - integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz#809af7e3339466b49c034c683964ee8afb3e2604" + integrity sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" - integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-export-namespace-from@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" - integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.16.7", "@babel/plugin-transform-flow-strip-types@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz#cfa7ca159cc3306fab526fc67091556b51af26ff" - integrity sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q== +"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.16.7", "@babel/plugin-transform-flow-strip-types@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz#b3aa251db44959b7a7c82abcd6b4225dec7d2258" + integrity sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-flow" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-flow" "^7.24.7" -"@babel/plugin-transform-for-of@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" - integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" - integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== +"@babel/plugin-transform-function-name@^7.25.1": + version "7.25.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37" + integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA== dependencies: - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.1" -"@babel/plugin-transform-json-strings@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" - integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" - integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== +"@babel/plugin-transform-literals@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3" + integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-logical-assignment-operators@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" - integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" - integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-amd@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" - integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.1.0", "@babel/plugin-transform-modules-commonjs@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" - integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== +"@babel/plugin-transform-modules-commonjs@^7.1.0", "@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" + integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-module-transforms" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-simple-access" "^7.24.7" -"@babel/plugin-transform-modules-systemjs@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" - integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== +"@babel/plugin-transform-modules-systemjs@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz#8f46cdc5f9e5af74f3bd019485a6cbe59685ea33" + integrity sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw== dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-module-transforms" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.0" -"@babel/plugin-transform-modules-umd@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" - integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-new-target@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" - integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" - integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" - integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" - integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== dependencies: - "@babel/compat-data" "^7.23.3" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-parameters" "^7.24.7" -"@babel/plugin-transform-object-super@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" - integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" -"@babel/plugin-transform-optional-catch-binding@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" - integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" - integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== +"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" + integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" - integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" - integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" - integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" - integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz#5efc001d07ef0f7da0d73c3a86c132f73d28e43c" - integrity sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw== + version "7.25.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz#71a665ed16ce618067d05f4a98130207349d82ae" + integrity sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.16.7": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" - integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b" + integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-react-jsx-development@^7.16.7": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" + integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.24.7" -"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.22.5": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== +"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz#e37e8ebfa77e9f0b16ba07fadcb6adb47412227a" + integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/types" "^7.25.2" "@babel/plugin-transform-react-pure-annotations@^7.16.7": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" - integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" + integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-regenerator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" - integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" - integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-runtime@^7.16.4": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz#52bbd20054855beb9deae3bee9ceb05289c343e6" - integrity sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw== - dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.7" - babel-plugin-polyfill-corejs3 "^0.8.7" - babel-plugin-polyfill-regenerator "^0.5.4" + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz#00a5bfaf8c43cf5c8703a8a6e82b59d9c58f38ca" + integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" - integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" - integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" - integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-template-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" - integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typeof-symbol@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" - integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== +"@babel/plugin-transform-typeof-symbol@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" + integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-typescript@^7.23.3": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" - integrity sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== +"@babel/plugin-transform-typescript@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz#237c5d10de6d493be31637c6b9fa30b6c5461add" + integrity sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.23.6" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-typescript" "^7.23.3" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-syntax-typescript" "^7.24.7" -"@babel/plugin-transform-unicode-escapes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" - integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-property-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" - integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" - integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-sets-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" - integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.14.7", "@babel/preset-env@^7.16.11", "@babel/preset-env@^7.16.4": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.8.tgz#7d6f8171ea7c221ecd28059e65ad37c20e441e3e" - integrity sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c" + integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-option" "^7.24.8" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.0" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.23.3" - "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -1055,69 +1055,70 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.7" - "@babel/plugin-transform-async-to-generator" "^7.23.3" - "@babel/plugin-transform-block-scoped-functions" "^7.23.3" - "@babel/plugin-transform-block-scoping" "^7.23.4" - "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-class-static-block" "^7.23.4" - "@babel/plugin-transform-classes" "^7.23.8" - "@babel/plugin-transform-computed-properties" "^7.23.3" - "@babel/plugin-transform-destructuring" "^7.23.3" - "@babel/plugin-transform-dotall-regex" "^7.23.3" - "@babel/plugin-transform-duplicate-keys" "^7.23.3" - "@babel/plugin-transform-dynamic-import" "^7.23.4" - "@babel/plugin-transform-exponentiation-operator" "^7.23.3" - "@babel/plugin-transform-export-namespace-from" "^7.23.4" - "@babel/plugin-transform-for-of" "^7.23.6" - "@babel/plugin-transform-function-name" "^7.23.3" - "@babel/plugin-transform-json-strings" "^7.23.4" - "@babel/plugin-transform-literals" "^7.23.3" - "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" - "@babel/plugin-transform-member-expression-literals" "^7.23.3" - "@babel/plugin-transform-modules-amd" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-modules-systemjs" "^7.23.3" - "@babel/plugin-transform-modules-umd" "^7.23.3" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" - "@babel/plugin-transform-numeric-separator" "^7.23.4" - "@babel/plugin-transform-object-rest-spread" "^7.23.4" - "@babel/plugin-transform-object-super" "^7.23.3" - "@babel/plugin-transform-optional-catch-binding" "^7.23.4" - "@babel/plugin-transform-optional-chaining" "^7.23.4" - "@babel/plugin-transform-parameters" "^7.23.3" - "@babel/plugin-transform-private-methods" "^7.23.3" - "@babel/plugin-transform-private-property-in-object" "^7.23.4" - "@babel/plugin-transform-property-literals" "^7.23.3" - "@babel/plugin-transform-regenerator" "^7.23.3" - "@babel/plugin-transform-reserved-words" "^7.23.3" - "@babel/plugin-transform-shorthand-properties" "^7.23.3" - "@babel/plugin-transform-spread" "^7.23.3" - "@babel/plugin-transform-sticky-regex" "^7.23.3" - "@babel/plugin-transform-template-literals" "^7.23.3" - "@babel/plugin-transform-typeof-symbol" "^7.23.3" - "@babel/plugin-transform-unicode-escapes" "^7.23.3" - "@babel/plugin-transform-unicode-property-regex" "^7.23.3" - "@babel/plugin-transform-unicode-regex" "^7.23.3" - "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.25.0" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.25.0" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.25.0" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.8" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.0" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.25.1" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.25.2" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.8" + "@babel/plugin-transform-modules-systemjs" "^7.25.0" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.8" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.8" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.7" - babel-plugin-polyfill-corejs3 "^0.8.7" - babel-plugin-polyfill-regenerator "^0.5.4" - core-js-compat "^3.31.0" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.37.1" semver "^6.3.1" "@babel/preset-flow@^7.0.0": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.23.3.tgz#8084e08b9ccec287bd077ab288b286fab96ffab1" - integrity sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.24.7.tgz#eef5cb8e05e97a448fc50c16826f5612fe512c06" + integrity sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-flow-strip-types" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-flow-strip-types" "^7.24.7" "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" @@ -1141,20 +1142,20 @@ "@babel/plugin-transform-react-pure-annotations" "^7.16.7" "@babel/preset-typescript@^7.1.0", "@babel/preset-typescript@^7.16.0", "@babel/preset-typescript@^7.6.0": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" - integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" + integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-typescript" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.24.7" "@babel/register@^7.0.0": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.23.7.tgz#485a5e7951939d21304cae4af1719fdb887bc038" - integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.24.6.tgz#59e21dcc79e1d04eed5377633b0f88029a6bef9e" + integrity sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" @@ -1167,35 +1168,32 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.21.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@^7.9.6": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e" - integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@^7.9.6": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" + integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.3.3": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/traverse@^7.23.7", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2", "@babel/traverse@^7.7.4": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" - integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.6" - "@babel/types" "^7.23.6" +"@babel/template@^7.24.7", "@babel/template@^7.25.0", "@babel/template@^7.3.3": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2", "@babel/traverse@^7.7.4": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" + integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.2" debug "^4.3.1" globals "^11.1.0" @@ -1207,23 +1205,23 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.4": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" - integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.4": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" + integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" "@badeball/cypress-configuration@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@badeball/cypress-configuration/-/cypress-configuration-6.1.0.tgz#26141be2395089a3d79fd886da489ac366a070d6" - integrity sha512-30M6frVmhP8MUKscg8CEWnPbDLYDRHswUdny1ajRJlW/kdlMZ5da+eDnzMW3qUW73JfqLRk1pteejwlcZOt0GQ== + version "6.1.1" + resolved "https://registry.yarnpkg.com/@badeball/cypress-configuration/-/cypress-configuration-6.1.1.tgz#9772173061d2c71c0e79823a5312ec43651f98cb" + integrity sha512-0IcJFMiCRo33Ofrvxxojt5QRJWyxApymHuuy981FeXnOGz4UsWKgr/hRupeXkw2cKXvah+j+880kXliygxPOSQ== dependencies: "@babel/parser" "^7.18.8" debug "^4.3.2" - esbuild "^0.14.23" + esbuild "^0.19.4" glob "^7.1.6" minimatch "^3.0.4" node-hook "^1.0.0" @@ -1402,6 +1400,21 @@ dependencies: chalk "^4.0.0" +"@csstools/css-parser-algorithms@^2.7.1": + version "2.7.1" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#6d93a8f7d8aeb7cd9ed0868f946e46f021b6aa70" + integrity sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw== + +"@csstools/css-tokenizer@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz#1d8b2e200197cf5f35ceb07ca2dade31f3a00ae8" + integrity sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg== + +"@csstools/media-query-list-parser@^2.1.13": + version "2.1.13" + resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz#f00be93f6bede07c14ddf51a168ad2748e4fe9e5" + integrity sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA== + "@csstools/normalize.css@*": version "12.1.1" resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.1.1.tgz#f0ad221b7280f3fc814689786fd9ee092776ef8f" @@ -1513,6 +1526,11 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== +"@csstools/selector-specificity@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz#63085d2995ca0f0e55aa8b8a07d69bfd48b844fe" + integrity sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA== + "@cucumber/ci-environment@9.2.0": version "9.2.0" resolved "https://registry.yarnpkg.com/@cucumber/ci-environment/-/ci-environment-9.2.0.tgz#3942f39d6a7595295256d97a88d39d02469ba50f" @@ -1669,9 +1687,9 @@ uuid "^8.3.2" "@cypress/webpack-preprocessor@^6.0.0": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-6.0.1.tgz#5369527c063b2f4718a125ddbd163c5775086e06" - integrity sha512-WVNeFVSnFKxE3WZNRIriduTgqJRpevaiJIPlfqYTTzfXRD7X1Pv4woDE+G4caPV9bJqVKmVFiwzrXMRNeJxpxA== + version "6.0.2" + resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-6.0.2.tgz#58a96aa4dbff7433dd37d24ed47e413aa3d3fabb" + integrity sha512-0+1+4iy4W9PE6R5ywBNKAZoFp8Sf//w3UJ+CKTqkcAjA29b+dtsD0iFT70DsYE0BMqUM1PO7HXFGbXllQ+bRAA== dependencies: bluebird "3.7.1" debug "^4.3.4" @@ -1685,647 +1703,795 @@ debug "^3.1.0" lodash.once "^4.1.1" -"@dhis2-ui/alert@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/alert/-/alert-9.10.1.tgz#c15d851cdf6e15b1a6240c5af9f4308817e7c126" - integrity sha512-jSS+RDM8HLtlHx/SOMDAn50Te+mafevUuM2Emt4z/Lwb3wslps7LYjdwfI9yE+OLML9yjmJQWEhgChMIvwNNfg== +"@dhis2-ui/alert@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/alert/-/alert-9.11.0.tgz#01456616ad601b9c5ff5d71dfb5db102f46e5743" + integrity sha512-jka/E26RkLJexYhi934yj8hpIvdI/mOnFzjwca0kDxnCaJ9JCz/j6x0BklrzRFFt/gGJ9aldG1mVX7fGtIEEvw== + dependencies: + "@dhis2-ui/portal" "9.11.0" + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/box@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/box/-/box-10.0.3.tgz#2a2885d3d27449963d56bdff7d3185c031ac447c" + integrity sha512-lGMkAWRwKUNwTe71sAlcsieUozRbEdBT9tyVJjkm4Ldp9DsgtvKfOSaevHMGo0hLMPkbrJg7a2A5xOyAeUzGdQ== + dependencies: + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "10.0.3" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/box@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/box/-/box-9.11.0.tgz#92391d2d8bbdb3bdd2714d93e7d519dc041f1db9" + integrity sha512-/ds/LWG8P995QRDHhkVvCS8ao6tOpssAwqFY2PiaRIl2J39b6bmfIVfIQldldiKO1IK05oJmRSCmCx8TfHE9ig== + dependencies: + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "9.11.0" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/button@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/button/-/button-10.0.3.tgz#d797a8aa8f9f8ad9555522393ab22cf6b9d22f10" + integrity sha512-0bKWNWMbSuvXR48VGc2sl92bF3lCSZKY1E9xkknNBkPoHaXnepRGWcd2tNYmHPVp59CEHgOME2YCiEazn2pKng== dependencies: - "@dhis2-ui/portal" "9.10.1" + "@dhis2-ui/layer" "10.0.3" + "@dhis2-ui/loader" "10.0.3" + "@dhis2-ui/popper" "10.0.3" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "10.0.3" + "@dhis2/ui-icons" "10.0.3" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/box@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/box/-/box-9.10.1.tgz#67c311156b762c4ecd39532ec36713e229f2ba27" - integrity sha512-MwjhsiXGVLV2D7BmRlc5npK7MLJZsEcR62Fw/YWln0lIXd2GP5EA6vtXaabWV0XC/ZZFjdE9KetNZsgr1amkrQ== +"@dhis2-ui/button@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/button/-/button-9.11.0.tgz#ee6a5dec0e44da72a654c546a6c685dbcdc33245" + integrity sha512-b5cA+v0uv+5Dj6CXPiFavOUSgiNLKXRBg6OjeZatUTIsoO59UpOxQoVp4cCo8/kZkBBUyuwsMYO2AHuIarTucQ== dependencies: + "@dhis2-ui/layer" "9.11.0" + "@dhis2-ui/loader" "9.11.0" + "@dhis2-ui/popper" "9.11.0" + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/calendar@9.11.0", "@dhis2-ui/calendar@^10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/calendar/-/calendar-10.0.3.tgz#726560825eb0919db8018097608075a46bd9b638" + integrity sha512-yxLESkgO+PlCdkREqzCKGq5KXmKtUjMkRWb6LY3hkpYZ0DmHCrqUpIHGqm/cxA3xo812km2SwpoKgVbmP+T6YA== + dependencies: + "@dhis2-ui/button" "10.0.3" + "@dhis2-ui/card" "10.0.3" + "@dhis2-ui/input" "10.0.3" + "@dhis2-ui/layer" "10.0.3" + "@dhis2-ui/popper" "10.0.3" + "@dhis2/multi-calendar-dates" "2.0.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "10.0.3" + "@dhis2/ui-icons" "10.0.3" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/button@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/button/-/button-9.10.1.tgz#ccdedc218a966db70d1bf723cdd224d8e6b3e93f" - integrity sha512-Xa52rE9aiXt/6w2ElbqermFq2P+0V+isyNz7wELtFmGI9G+ASvqr0aIO4ePG2/qu/qknhLO1U3SA4RmlrkFLpw== +"@dhis2-ui/card@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/card/-/card-10.0.3.tgz#968ccada671eb351c225a9fc5ee18bca6be1a23c" + integrity sha512-ldMyDmDSWztubwgP/4IKjXFP4YgMIfFI1gRuMkvLJYx5CcpcqnZqULeunHM6+47d6mP2oD7a38Mly1+GPbjY6A== dependencies: - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/loader" "9.10.1" - "@dhis2-ui/popper" "9.10.1" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "10.0.3" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/calendar@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/calendar/-/calendar-9.10.1.tgz#7683f05fef63b6841403f746f32a52891e323d64" - integrity sha512-tzFJWHMqdvvOsGTLttyqfAWMWH6aabt/4nIfRYJyCGvEIOdZLx62S2tZZjjtFwUpVtIN06+cunaGv8XHwmvlxQ== - dependencies: - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/card" "9.10.1" - "@dhis2-ui/input" "9.10.1" - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/popper" "9.10.1" - "@dhis2/multi-calendar-dates" "^1.2.3" +"@dhis2-ui/card@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/card/-/card-9.11.0.tgz#17b40d55240a1fb5c34345b0d16e63ab984cfdb6" + integrity sha512-phjsyukZfmxKqqtRxVRuFJdc30S7XfEkEmQv11wWnAjGVl2YxIWKm8SAGShpu0gC8susJg0GBhY7Ts+h5cRvQg== + dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/card@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/card/-/card-9.10.1.tgz#d4814458245444f95bc0a6c1fd88679e1ffba01c" - integrity sha512-Aj9ZvKJbRoDy3DqhYO9/phOiX/bC+gCyk4E0leMxtJx7he7pfdGCfpRHNyxEuy7tEi8WaVaMzfnb8lNzsv/nUw== +"@dhis2-ui/center@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/center/-/center-9.11.0.tgz#f3d5a302fb2227a78a8430a706a90a43eae92665" + integrity sha512-LEAW1wlpArkA63sko/24H8C4AHYTGFolIMYjcAFX1GR2xBcFpj/4VQRQFK6P9POtrSv+syVlfw51g9zBfhYi9A== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/center@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/center/-/center-9.10.1.tgz#5628692b2aeff42870c0e0619aafac5dcab0777d" - integrity sha512-pmASts6pNktt0NKetShhTMje3ZKBD1k7xr4dx6fhhNfw96PgM2fYxXCn8vNQK9HkKyY0K65tX/u8Q1oegXMFKw== +"@dhis2-ui/checkbox@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/checkbox/-/checkbox-9.11.0.tgz#05d59ac1403a93c44bee2e2e04b008f1851ebeb7" + integrity sha512-jPn/3DCUNLar8EEgUI01h100POtob6GxkcpTkMsRqngN4f+QTAPZGVORVFjd+2nAAG/msHXaqnNqmfwkaKPsaA== dependencies: + "@dhis2-ui/field" "9.11.0" + "@dhis2-ui/required" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/checkbox@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/checkbox/-/checkbox-9.10.1.tgz#4ee2112c3972beca38a9897ecb82dfd3b307710e" - integrity sha512-sNERu2S3rrmxl8wnWoNDSq5jv5D43ncYu2prbG8mP27yaZ5Jx+9cy5seLVOh719zZvC0cQiADjXoFt8Lslj/eA== +"@dhis2-ui/chip@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/chip/-/chip-9.11.0.tgz#1e8b4276872b8737ed1607588867d0f6d9800e13" + integrity sha512-jc/CCohXhbTT91AagWIxieybSyAR9Mo91vMjRHbe8qzVua40WezAazhjLCd82ynGjEzHWMryaK7om1VK5hbM9A== dependencies: - "@dhis2-ui/field" "9.10.1" - "@dhis2-ui/required" "9.10.1" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/chip@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/chip/-/chip-9.10.1.tgz#b530093e9ef2c6bfa85f556512a1b43a9b0c9e77" - integrity sha512-VZ4+WM63wZPVWF8J2gpw2IQXI04VlEsijwd7aBeux4JUhTv0rJkyUfGWYR2PSSDh2xAZWsJHmkOiwS+Bguv31w== +"@dhis2-ui/cover@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/cover/-/cover-9.11.0.tgz#ea8280dfcb2444111cd0e1da87c566d5813dc1c3" + integrity sha512-mwb15H2gJNOO9ZDZEQclfrvKbb0TvLn3n7BMErR8+Z9oE9j8ycMI/Ks6Itov94dIX2Es+1cHZFMDLJUOTtI+yg== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/cover@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/cover/-/cover-9.10.1.tgz#c668649399b4b9e9aaffb0209cfa98c868c3b986" - integrity sha512-sU9s3dOQd1kfClZcwPVjG6zBW0l4i91xZvJSODqbFtSX0Tz7OmNwWAC23xYoXl6TaizCk+1iKG5iB2aiay9yuQ== +"@dhis2-ui/css@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/css/-/css-9.11.0.tgz#4540c4795b146b3c92feae5ccbca99b198d66fb2" + integrity sha512-TsLR1Jw7fjTqszrybAdw1ouAdV3hPX9v3JJE/iWqTKPHfTSxtEj201jHAqpNWjxiIgEzPJ2AG61fUh44+Iiibw== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/css@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/css/-/css-9.10.1.tgz#d94b659e3f00c7d353b9f53ab786ebd0dc6fc4cb" - integrity sha512-ZJWv9zRVzl5/08s5WMHPV1WZLhVYDekMvmQNSoBRkLDoitZOtxfTx5ytsgStBpjWPK6lxwCKhh4D7ArI0gQCqA== +"@dhis2-ui/divider@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/divider/-/divider-9.11.0.tgz#af514387024824102dbdb352058809f1d54c8901" + integrity sha512-zDFjs2BZF3Dra8cpYypYmvYTnFgItHoFOAGs1JfVlvTcWGpaggf1ah8BcxqFSxOg7rgL0CGtF9uLujGNdbla5g== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/divider@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/divider/-/divider-9.10.1.tgz#a6fa0af3b02cc28d35180b784cc53ccd5d710173" - integrity sha512-o1OAah4EQMX72cXV/A0dfcORqKDbbbzcSW5jWuFIreAuqC0XRutoDUOaF2NWi2mc4AJsI37o7M1+0w8MCjtOOA== +"@dhis2-ui/field@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/field/-/field-10.0.3.tgz#e2721efbcaaec159774f046d96ebcade8129fccf" + integrity sha512-Lh7VyFCCCycR0DIygWcDvff1/4c0RMfQFp8svfFRYbC8jscaeBsqqbR082wFjbvwVn9uUYB45eu+1HJLKwDviQ== dependencies: + "@dhis2-ui/box" "10.0.3" + "@dhis2-ui/help" "10.0.3" + "@dhis2-ui/label" "10.0.3" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "10.0.3" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/field@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/field/-/field-9.10.1.tgz#732d289d274c11f853c8fc399de9703ccb0da327" - integrity sha512-7VOU28pkqkPlcTfD1FWSOLRcmIi4DMSo0ElPA8HwPE8eiBj52XPUQ1LMCuBiosS5sCAeUC74108dNQidTgY+OQ== +"@dhis2-ui/field@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/field/-/field-9.11.0.tgz#c57c623ea4ad32a6440062ed4ee81e2130d80f75" + integrity sha512-pVFNqiKVgsefxpgfMnrM6mU9ZM1qZtRAZsDjzooYIlh1r0nUQt01GKgn0TTdyICIoqO3lNLxvxNA5SXv9QRqfQ== dependencies: - "@dhis2-ui/box" "9.10.1" - "@dhis2-ui/help" "9.10.1" - "@dhis2-ui/label" "9.10.1" + "@dhis2-ui/box" "9.11.0" + "@dhis2-ui/help" "9.11.0" + "@dhis2-ui/label" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/file-input@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/file-input/-/file-input-9.10.1.tgz#f1c38080c4f65a35b8383508a22b34bfd0596b05" - integrity sha512-VyXsOs+JSK7P+QFf1byGFWDjs2bIbD2XF1FhbVlEsAwPJ9gLYnwYqkyRNI3VcSg8vbTw1VgYmEd4ODjbQjGMOw== +"@dhis2-ui/file-input@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/file-input/-/file-input-9.11.0.tgz#77735de2a87f734a4041f4a397911313dc816df6" + integrity sha512-CWp34b6hMc67V5KJow5orPzLTVJzFnudouXYQEiPd3fUHJa4xRYW+GvbL+uY46VvF+GSB82eP5+z4PTgicZWxA== dependencies: - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/field" "9.10.1" - "@dhis2-ui/label" "9.10.1" - "@dhis2-ui/loader" "9.10.1" - "@dhis2-ui/status-icon" "9.10.1" + "@dhis2-ui/button" "9.11.0" + "@dhis2-ui/field" "9.11.0" + "@dhis2-ui/label" "9.11.0" + "@dhis2-ui/loader" "9.11.0" + "@dhis2-ui/status-icon" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/header-bar@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/header-bar/-/header-bar-9.10.1.tgz#a3b75bb45630f0576bfa411719749eff928fdc24" - integrity sha512-9rDwuL2fO1Zo25Zc2aTjG/h6+k55kPsduh7jvJEqQ1440silP3PrKygPBLvJMxJFHGfhwIsDPa6JC4sONOne3g== - dependencies: - "@dhis2-ui/box" "9.10.1" - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/card" "9.10.1" - "@dhis2-ui/center" "9.10.1" - "@dhis2-ui/divider" "9.10.1" - "@dhis2-ui/input" "9.10.1" - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/loader" "9.10.1" - "@dhis2-ui/logo" "9.10.1" - "@dhis2-ui/menu" "9.10.1" - "@dhis2-ui/modal" "9.10.1" - "@dhis2-ui/user-avatar" "9.10.1" +"@dhis2-ui/header-bar@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/header-bar/-/header-bar-9.11.0.tgz#aeac3955e407e4c398daa81ae3231b52bcd18870" + integrity sha512-1NRznu2gluvAc1Kd5Ogt7K7rlfvvlvouUYGC9kn+mLYHj/h6T+eeTOS8Y0uEJLgmfuuklm2omZ+ASUIY3A7+iA== + dependencies: + "@dhis2-ui/box" "9.11.0" + "@dhis2-ui/button" "9.11.0" + "@dhis2-ui/card" "9.11.0" + "@dhis2-ui/center" "9.11.0" + "@dhis2-ui/divider" "9.11.0" + "@dhis2-ui/input" "9.11.0" + "@dhis2-ui/layer" "9.11.0" + "@dhis2-ui/loader" "9.11.0" + "@dhis2-ui/logo" "9.11.0" + "@dhis2-ui/menu" "9.11.0" + "@dhis2-ui/modal" "9.11.0" + "@dhis2-ui/user-avatar" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" moment "^2.29.1" prop-types "^15.7.2" -"@dhis2-ui/help@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/help/-/help-9.10.1.tgz#e4d9999a15c95e070f78a5bc9cb8f1534859d8d2" - integrity sha512-Ky7ry3KlQBYGY/3Yi2kb3vLq55FYO0ZI9NDBfALtHBsYa/E6ql5Adc2SsL6+1kVSxjXZ5H5Rvg9eg62rz/Rhrg== +"@dhis2-ui/help@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/help/-/help-10.0.3.tgz#2d7782499e9ba4135f1dd1650e35ddc03b90610b" + integrity sha512-iNQRXfzDq5z9GGcnA01y5VxLXzWHzG+hRf/L/l0tZCV2xqRwirHwFi1KVazVKShQxYvXBGMMr2GwqpiRg9I7oA== + dependencies: + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "10.0.3" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/help@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/help/-/help-9.11.0.tgz#071ed4ff473cbc423b7a1f51c7217b6bbf057974" + integrity sha512-/n1bnolladI44ZVSzxKvt6SnsAlVK9G76uT1pTMNyMRDHCIpZc8070HADv+2GGD5YbwSpltClgy+3U4xPz14/A== + dependencies: + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "9.11.0" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/input@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/input/-/input-10.0.3.tgz#b57f3b7659156163e3641a8927fa6633c57d0468" + integrity sha512-MhtjU9OMKXl1YXwMlQKUsuG+641a994GzKiFR0RcYsEW0/yVaFwyOEfnRBwzZhGwSnnSl2KE24MTPqSotBAQLg== + dependencies: + "@dhis2-ui/box" "10.0.3" + "@dhis2-ui/field" "10.0.3" + "@dhis2-ui/input" "10.0.3" + "@dhis2-ui/loader" "10.0.3" + "@dhis2-ui/status-icon" "10.0.3" + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "10.0.3" + "@dhis2/ui-icons" "10.0.3" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/input@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/input/-/input-9.11.0.tgz#4dd6efc15c82605468a3e1211f0b182bd5c66a08" + integrity sha512-jx3scjWkhO3s7SzaTfYUOYpOacGfS9317fGEshrirdkh6+jzLF+qbWLM9BX/hf63JfU4iPZC4cZzr0yWgxohDg== + dependencies: + "@dhis2-ui/box" "9.11.0" + "@dhis2-ui/field" "9.11.0" + "@dhis2-ui/input" "9.11.0" + "@dhis2-ui/loader" "9.11.0" + "@dhis2-ui/status-icon" "9.11.0" + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/intersection-detector@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/intersection-detector/-/intersection-detector-9.11.0.tgz#cad6dc8095cdfc9db133fd8a46d19e90130e4f07" + integrity sha512-Dr1WUDvcWbKFFu2DoCwfLwokM/d1oQApEkbAmUBSkAv9uWx61VgLlH/Z3I/Pr/VSJuBR3zWSpmVbduLlFs1Avg== + dependencies: + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "9.11.0" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/label@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/label/-/label-10.0.3.tgz#1787ff36b0f5ab0aa362b2809a5af4029f326099" + integrity sha512-HFo5Onguwx/sv+Iz6hFJ1xiKiwXLdH0BCpJXBgYaNyKFLkgbprEHaBW9ZOM/e9cVX5jlodE5z5b9hIdgjzw9Yg== + dependencies: + "@dhis2-ui/required" "10.0.3" + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "10.0.3" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/label@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/label/-/label-9.11.0.tgz#286e9b1b79ef7cf45d500a893b4c0fd6b11eeaec" + integrity sha512-wOlHjghmey9nbytOKHHfwzaUzxqgXcmTzy7ntkRBsmqVMdJ07+pL7iFId4EFNdGz2aGPGPAs1qmMEqDJPoz3eA== dependencies: + "@dhis2-ui/required" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/input@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/input/-/input-9.10.1.tgz#b683732e6b1b0672516c7927f23c87090cc72f11" - integrity sha512-yfZfIlvDfuWpM9YNtB2J6toRjbrzdcKefIExyOIBdgmTamFzp8fCCVUnSUfO3VEdBCM4fqWcHBLDA6/hU5iQpA== +"@dhis2-ui/layer@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/layer/-/layer-10.0.3.tgz#1066f606ce7b44bff365f2937d4432f8353f729f" + integrity sha512-qOygPIbQRthhigtQH+uebq4PRLtkvYHRAzYt8YxtKo4rwTbLWqAmfwZ03rbogLTzkPortZonPcczLoOzR+tskw== dependencies: - "@dhis2-ui/box" "9.10.1" - "@dhis2-ui/field" "9.10.1" - "@dhis2-ui/input" "9.10.1" - "@dhis2-ui/loader" "9.10.1" - "@dhis2-ui/status-icon" "9.10.1" + "@dhis2-ui/portal" "10.0.3" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "10.0.3" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/intersection-detector@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/intersection-detector/-/intersection-detector-9.10.1.tgz#767227650e4436262c91d9d670aa279aca998d3f" - integrity sha512-42RMPz5evHh9Uyu6XleYPGu5PiwkXCN9ZnQhlL1kyAksOtxVxwWyHNk5n7XRjyo9X50CAwcZGtRlXgKavcQ9Nw== +"@dhis2-ui/layer@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/layer/-/layer-9.11.0.tgz#ffc80120cf38236ec04291e1bb992549c4e685fd" + integrity sha512-jCrgn2n4QlxTY7GRhwgrDqTbMaju7SDUGrrqOTBZXg8bCoVBazqh3dgUUWogOVJ8UH6ob+tycfXvbUf0lJClNg== dependencies: + "@dhis2-ui/portal" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/label@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/label/-/label-9.10.1.tgz#b4d9de56e9e209d94937c09e83f356bab717a6b3" - integrity sha512-v/bJCTK+zw0tzQ0S1gHFXhxgfbREKcFaEWQKJpn94Woh/ws/uMo+UNd3BIf7iCylCXz/V5/MVCgJhjDjJnB/Ww== +"@dhis2-ui/legend@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/legend/-/legend-9.11.0.tgz#f8c8201ae9da75c815810715d3aca38e03fb585d" + integrity sha512-MxpJbao+t1qhUrStLhLAn2+Xt2G2gyoiHEf7BeF85opf5HsY+9Xbki1RemP69ixe906czCKD2gieZxNNpdQYBw== dependencies: - "@dhis2-ui/required" "9.10.1" + "@dhis2-ui/required" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/layer@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/layer/-/layer-9.10.1.tgz#8f7867ccb62af0b0af5b8a25767e693ee585d38f" - integrity sha512-fV98uG359y1LqKjulStTrc8MJClQ7Ub3RUJ8DgXe/mrps12Ads9SyqN68bPX1Mr++2Ks4IbtC88vRM+XmW0wyA== +"@dhis2-ui/loader@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/loader/-/loader-10.0.3.tgz#56fe040123db30e822221e45d3fd384f18c5fbca" + integrity sha512-4ENjQrUO1jM2p/+gRjTqaliOpXjSo8pTv9YvZHyOA6HGptWudk+s5NXSNyqUkDwJB2pnAMxKFs4Rd5JOKHdujg== dependencies: - "@dhis2-ui/portal" "9.10.1" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "10.0.3" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/legend@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/legend/-/legend-9.10.1.tgz#8521c229fa46e1926cb9587a6b0c6c5482f6bcf0" - integrity sha512-w/RrHS6yvi+W872lTw9NZqJMbuYz1FmyP7d3E4uAOxGM7n7dEnfKWgRQhG+GYG935mYLl+aYv0szS36uDgCusg== +"@dhis2-ui/loader@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/loader/-/loader-9.11.0.tgz#f0a2f8f0646efd9bce632194eb68bba0f1512c2e" + integrity sha512-98M8KmGYYeROkGE/rZ8e3BHQKgfk7ZsZmYrhr6JyEYUWoW+rDHeR/a5bprbMmie//+ePdOx2UxZUJKIDUZEPvw== dependencies: - "@dhis2-ui/required" "9.10.1" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/loader@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/loader/-/loader-9.10.1.tgz#1a48b05a9e8c31d7819f66d22b27288a076cfc02" - integrity sha512-lMlmtyGQGxu48oBVhZGT9USOB5yEqzgSAkTZg/vd+byHm5oMM2m8KNJTH7RT2HHg2Du24E4L2n9+W6ZSAwhMyA== +"@dhis2-ui/logo@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/logo/-/logo-9.11.0.tgz#2ff0058cc6dffcb0dcf6182e70429d0fa710dcd4" + integrity sha512-R0nebCjwHeYbq0+N2xje1NOTI6bcUB16riSNBBimyZAQXqEWUyiuqxISf49UUG+Ed7UjkcMnJe6AmL+Yoemfug== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/logo@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/logo/-/logo-9.10.1.tgz#b4bd80780786c35a85c1fe2d7888862df3e97213" - integrity sha512-hW1PJGG+l6fHI9XHjOH9565LwUpWaYhELgi+Gjutbcyil0xY4DHO/Nd6YxTui2V5RwnZsFNHEbOJlJRG1oXNbQ== +"@dhis2-ui/menu@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/menu/-/menu-9.11.0.tgz#33b5f74e193d36dd4a13175bfeaafdaa6ae8373d" + integrity sha512-613Yb3IK2JQGrOTP6caCRkSTqqrOkL0K1Frsv0Uzhts066bZQaIT7drL0T+vIFv0+sgRSGyfBSfTrYQofxnKYQ== dependencies: + "@dhis2-ui/card" "9.11.0" + "@dhis2-ui/divider" "9.11.0" + "@dhis2-ui/layer" "9.11.0" + "@dhis2-ui/popper" "9.11.0" + "@dhis2-ui/portal" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/menu@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/menu/-/menu-9.10.1.tgz#e9d7ef056680ceb3b385940d433d88be02ed6c77" - integrity sha512-Wy2z3FIIX1vhReQucG3aLUtEmjFgCtNDf09U8a+JUjXLmrKH41fcMVvz4mkzmGy4jQf60Przp4tXOpmLwehkHA== +"@dhis2-ui/modal@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/modal/-/modal-9.11.0.tgz#c16b04787641e9f64d385c55959fa8f5537f1acf" + integrity sha512-GDg7uad+/eLvadJEXjVoHTlEfrd639QmVVdjEcvC+RtHOOXKjlR3wpm+FvgUSbw7zhXpcZ68LNdga9X9bjn14Q== dependencies: - "@dhis2-ui/card" "9.10.1" - "@dhis2-ui/divider" "9.10.1" - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/popper" "9.10.1" - "@dhis2-ui/portal" "9.10.1" + "@dhis2-ui/card" "9.11.0" + "@dhis2-ui/center" "9.11.0" + "@dhis2-ui/layer" "9.11.0" + "@dhis2-ui/portal" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/modal@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/modal/-/modal-9.10.1.tgz#63453611171a61541d3bb07df9b78697e40ec1aa" - integrity sha512-tvpyQPKqjP42mRJE+Nm33YxgCQkVwDHkLsxkxdaKUj9cMAkQs2hcvD3+QlzuHLf3uVtwPrfKxUM6L79AJIo4RA== +"@dhis2-ui/node@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/node/-/node-9.11.0.tgz#d4cc2b0ca1b653247bf3bf90a9e4152780f61253" + integrity sha512-GfI9ecBzJGeZnS6fLiS19eAg+w9hIXOC5sk69S5NOEKDbCU+CWR97GSpb71RBiq9QZuNBtNEZU7Vqa01+G041Q== dependencies: - "@dhis2-ui/card" "9.10.1" - "@dhis2-ui/center" "9.10.1" - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/portal" "9.10.1" + "@dhis2-ui/loader" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/node@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/node/-/node-9.10.1.tgz#d70d639edec02dffd1a7fbd3871c10b9463b30e2" - integrity sha512-AvsVsoclCVTq6MFwTejDLDhk+mehOkL8XdpJAWxZ7G0vcS+/xqukHxuVQXgEGOyCpZNPDaIgvz+BPRS+Qf38cA== +"@dhis2-ui/notice-box@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/notice-box/-/notice-box-9.11.0.tgz#2bd5c4a13a9d021c2d694f94ee6520276ccc533f" + integrity sha512-xEfsxFVoiMxVjqvf9QyB7w83cwraS+aS1HaOXTySvseOd+jSk7YlYAQJ2RQbGmik7rsSlyNMXbWoJ9TaJ8Y/pg== dependencies: - "@dhis2-ui/loader" "9.10.1" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/notice-box@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/notice-box/-/notice-box-9.10.1.tgz#0bc013d64da1f1e523c7bcd167987cbe94770947" - integrity sha512-I8n/4qfDlRaoOVpaFEtPwYRx/h6Ee9k+C9Kr3fxflD+lPMfm2O7b6UkoOoY0lKpAQyO1zHkMbIzgJ1o09s9akA== +"@dhis2-ui/organisation-unit-tree@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/organisation-unit-tree/-/organisation-unit-tree-9.11.0.tgz#c626c71cac19ba93241a6e36fad2d261f3307c32" + integrity sha512-2mYpgBPjmNlkCnCLrDmmPtC1rs07uxlEeqULTCiqRcbbWzEYL2S+fAao5IiOrlzXR9JIVlG7P8htMYNfj48tJQ== dependencies: + "@dhis2-ui/checkbox" "9.11.0" + "@dhis2-ui/loader" "9.11.0" + "@dhis2-ui/node" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/organisation-unit-tree@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/organisation-unit-tree/-/organisation-unit-tree-9.10.1.tgz#8798f023cd9c14e8b586b1249fca92d27d31b3c5" - integrity sha512-Yk6jzVQ36LP+sRXDYA2c+IUGAKS1lO5A8tx79EUQZfMfBnh1TSUAMN7BPtg4BrZmL2Hp+LrKQs32RZLmR6sa8A== +"@dhis2-ui/pagination@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/pagination/-/pagination-9.11.0.tgz#6967b1241ec3c36855e4570125e202752a6db577" + integrity sha512-HllIE5IVsNK1vM9wxRDfrLtxrrMWOxDEV+8B6QKG9qLXubfoFZL6+b5MGHo/mzDzY+7LxxBpiowoYaj52QMFYQ== dependencies: - "@dhis2-ui/checkbox" "9.10.1" - "@dhis2-ui/loader" "9.10.1" - "@dhis2-ui/node" "9.10.1" + "@dhis2-ui/button" "9.11.0" + "@dhis2-ui/select" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/pagination@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/pagination/-/pagination-9.10.1.tgz#8ae88b47642d8a0a87cdeb99d6a0607f9185ad8b" - integrity sha512-wmMYYrquaZp5EgUugGIJCyUQ1h6BMHMfFXM4g7KTpvh5n6o9vnElQeWy58EPaL8QDAqk//zsyQMEAXm/YwSbyg== +"@dhis2-ui/popover@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/popover/-/popover-9.11.0.tgz#c6af553735f6c441c59514841f732f3f3ec86371" + integrity sha512-jad3kEqIyvhKQ4YBUGIbvcnFinED9ywgIfp0AG7sP3t80S15/aso+kTPyZ06Tgt/Slk6o6vHEuUy5SSpgnaLcw== dependencies: - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/select" "9.10.1" + "@dhis2-ui/layer" "9.11.0" + "@dhis2-ui/popper" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/popover@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/popover/-/popover-9.10.1.tgz#edc06a2208a14a9cf69b1217fd9d4bb9f8f3be4a" - integrity sha512-LHxCXotEkqAoBQcax3DICyo/AotLG/gaNzc9iPwan4/hHOiwy5ciwMNh9RycyT90WqtPmTtDBDJFS90BRv5sxw== +"@dhis2-ui/popper@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/popper/-/popper-10.0.3.tgz#fc161b1d00c199b71bd562af693faa5ac7a6002c" + integrity sha512-X8Cd8NqRTCl9RqwpX4tK0vhnYB3GMUQWZ5LrFo507M6zqOk8MldOb/x7ThnhFB7TCH4aK+95qLj2p+Jm8KB7yA== dependencies: - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/popper" "9.10.1" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "10.0.3" + "@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/popper@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/popper/-/popper-9.10.1.tgz#841ac08c79f81b6cbf3761c1a6aea261e1612f6e" - integrity sha512-kTfXQsiYcqw2/gRmxbFuFSiYL2giGMxebgHsP/ikONcsM+QNBBtVwEu70uEdfoNMTKrevjssAnhUjB8mPgjwuA== +"@dhis2-ui/popper@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/popper/-/popper-9.11.0.tgz#6b08e1f32588384b408cb6fdc6ba65369fd0e392" + integrity sha512-RIUSd0qmV0gCE1aTX9kUv8hYbat/5wUECFAhMF/0mqkDZAqTGpyQDFHFTPwAc37wNaxOXb8z6dDMozaNn5OpQA== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" "@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.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/portal/-/portal-9.10.1.tgz#fd3d45eecbf73281cfc682b4d9c0c7ed47b2fe39" - integrity sha512-0qkHHrOAkyH1mV3C1kAV6SA9c632yfE2DsMb48kTii4wuKqWvXAXoGsqQ12SqyLgvRHgrxaEd0nt1Ap/C8gRQA== +"@dhis2-ui/portal@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/portal/-/portal-10.0.3.tgz#0f88544145f45d6c4f1e61166b2609e05defd5fd" + integrity sha512-5pY2RfkTxntYzNeG88+2CQDPXZCxXl4aafYM+bBrmcgG9JSAtn5rLaKGtlKzK9GA0H849ce6W9mSDICMA/w2Sw== dependencies: classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/radio@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/radio/-/radio-9.10.1.tgz#c44f0df810b246758b166988e91cc3e5ac4eabb8" - integrity sha512-VWpR+i4wIVK4SCYrBkA1V6bJaePBVqSvPimPQ22bIhxxWpmK9eOrn3+nSnZi3Fx5HT+UF/axg1Ez49HFPgPulw== +"@dhis2-ui/portal@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/portal/-/portal-9.11.0.tgz#4a3e874d701f1a5b872e717abcad645e073efc16" + integrity sha512-z0hhTMtUK8pQvA9cl6VU2QYvlEFPamxPT3MWGKcfhUTkPj/zrA0ovKWRZwrcEN0AoXb3bqc6TsS6szJL0ohi1Q== + dependencies: + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/radio@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/radio/-/radio-9.11.0.tgz#e9fbdcfd3fc8e6cbc0107c00606c275fe19d56b6" + integrity sha512-YAI/uow1R+LwANKfMOdOqXYBrrRowf23fQDgZNDvdxVAYU3BxHBoCKhx/14qyslcHv6/pwDLghvDUw0un5suOA== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/required@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/required/-/required-9.10.1.tgz#0755f646334eb6425c67bbb20c47b89e79025691" - integrity sha512-vhMUNxaVYfpniR5iofy579sR29m+H/qHkaCscKE2p7B7FmhEGWwN2H+N/CVOAMsAVSgHaMHoGgfM9r44Va0ClA== +"@dhis2-ui/required@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/required/-/required-10.0.3.tgz#4820ba88c1770c50823b2b2a53a63702e92cec90" + integrity sha512-8Vl/Zx/XtRN1o2KeULQTdbeOP31qfYJLQtkQbiHxfWJFf+c7KPdI1rcxthopRIMGzOacKgO4352pSrAo5qbawA== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "10.0.3" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/segmented-control@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/segmented-control/-/segmented-control-9.10.1.tgz#ca4daf18d46d43d1cb46a40204430d85c5bd5dc4" - integrity sha512-LPf2Zrf2aGRxvsmI0lE3+hbE+pZC+ujoT+E+4M8OO+Xue9ssbJf5yLv6t6jqAjpRT8IoGSGTZA2rckl29at6sg== +"@dhis2-ui/required@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/required/-/required-9.11.0.tgz#71f2dc7cdbb5b9bd412316af5ccb611caf261484" + integrity sha512-2fThUG/+wdOeQeuZD52M/TdMTCRSdxPxt2IIdkc9MUC+MmvMieJOFjYTzaHaItSqy0huNnOEvmaHEOTcERae/Q== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/select@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/select/-/select-9.10.1.tgz#c8e7083632e44c26874ff9e4d2ca05db80028989" - integrity sha512-eHr1zkVBjjC1mLPnYUKjMdxqQteXGIA4L0viKq7ab34GttZVu3fuuVhg+cV0XjZm03YWex0nmwbSlk00oDjnJQ== - dependencies: - "@dhis2-ui/box" "9.10.1" - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/card" "9.10.1" - "@dhis2-ui/checkbox" "9.10.1" - "@dhis2-ui/chip" "9.10.1" - "@dhis2-ui/field" "9.10.1" - "@dhis2-ui/input" "9.10.1" - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/loader" "9.10.1" - "@dhis2-ui/popper" "9.10.1" - "@dhis2-ui/status-icon" "9.10.1" - "@dhis2-ui/tooltip" "9.10.1" +"@dhis2-ui/segmented-control@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/segmented-control/-/segmented-control-9.11.0.tgz#97b80b28543039a7c75914df9fe8147d9141b6d3" + integrity sha512-Ejv6/zCa7o9PFK9BvroSio0DgSZt2Ue7Q89MkJYee7yH5dAe6uuCcZ8/lrtpOWOoqEQtDpsrAF6bU5LVjSsAng== + dependencies: + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "9.11.0" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2-ui/select@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/select/-/select-9.11.0.tgz#8f09f3500a37d9ad63d9bdb58ec9cfe224626fff" + integrity sha512-sfOZMR+7LaxfLseYyyqrGKBiZEuUCI/IDJXvakIaCqQGhSjjkY5Y8FC6LMZl/0TQUP8yCIjKaqBaUukLZxN6jQ== + dependencies: + "@dhis2-ui/box" "9.11.0" + "@dhis2-ui/button" "9.11.0" + "@dhis2-ui/card" "9.11.0" + "@dhis2-ui/checkbox" "9.11.0" + "@dhis2-ui/chip" "9.11.0" + "@dhis2-ui/field" "9.11.0" + "@dhis2-ui/input" "9.11.0" + "@dhis2-ui/layer" "9.11.0" + "@dhis2-ui/loader" "9.11.0" + "@dhis2-ui/popper" "9.11.0" + "@dhis2-ui/status-icon" "9.11.0" + "@dhis2-ui/tooltip" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/selector-bar@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/selector-bar/-/selector-bar-9.10.1.tgz#6dbc1759ed17fb487b704e2f0d177601844b4cc8" - integrity sha512-K9z/rJML4owFYkrZ6uzpOAvtuJXQ5Thyo4Pb3vQGCM8ORbGKme4QewU8UA9AP4aiU5zDDJjZF1+K0ft+7ugITQ== - dependencies: - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/card" "9.10.1" - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/popper" "9.10.1" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" +"@dhis2-ui/selector-bar@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/selector-bar/-/selector-bar-9.11.0.tgz#a9ef657f0ecacce87e67e343ccbe60813067186c" + integrity sha512-7VqBu0GSk9By+5Z4B6R2lNEPHUyXjOWWV2fgD29jH8zj7Z65XffJS/A1da8M33uSFX3sstOkpyZVHo71vx0cAA== + dependencies: + "@dhis2-ui/button" "9.11.0" + "@dhis2-ui/card" "9.11.0" + "@dhis2-ui/layer" "9.11.0" + "@dhis2-ui/popper" "9.11.0" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" "@testing-library/react" "^12.1.2" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/sharing-dialog@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/sharing-dialog/-/sharing-dialog-9.10.1.tgz#d73a7b2f013719b7abfc958078369d6c596c4d41" - integrity sha512-yvvF3zav5b8a5ZCTtWX0Clped4dvlR9OXnnurgZPLGcELFIQRnW1ttusVhBNGHIJfItCeX3vRYhB0a/j1sXAmw== - dependencies: - "@dhis2-ui/box" "9.10.1" - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/card" "9.10.1" - "@dhis2-ui/divider" "9.10.1" - "@dhis2-ui/input" "9.10.1" - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/menu" "9.10.1" - "@dhis2-ui/modal" "9.10.1" - "@dhis2-ui/notice-box" "9.10.1" - "@dhis2-ui/popper" "9.10.1" - "@dhis2-ui/select" "9.10.1" - "@dhis2-ui/tab" "9.10.1" - "@dhis2-ui/tooltip" "9.10.1" - "@dhis2-ui/user-avatar" "9.10.1" +"@dhis2-ui/sharing-dialog@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/sharing-dialog/-/sharing-dialog-9.11.0.tgz#9adf070335b45b99c718642a887e6f3bc8e3bcad" + integrity sha512-5LSZhO13dXZ5jOSpN2GlAlBfcZmRBrgye13cKvYgEWy+n1CWe4nJwQLYtfYoH5rItCBsjfS4/ouAFu6/koOPcg== + dependencies: + "@dhis2-ui/box" "9.11.0" + "@dhis2-ui/button" "9.11.0" + "@dhis2-ui/card" "9.11.0" + "@dhis2-ui/divider" "9.11.0" + "@dhis2-ui/input" "9.11.0" + "@dhis2-ui/layer" "9.11.0" + "@dhis2-ui/menu" "9.11.0" + "@dhis2-ui/modal" "9.11.0" + "@dhis2-ui/notice-box" "9.11.0" + "@dhis2-ui/popper" "9.11.0" + "@dhis2-ui/select" "9.11.0" + "@dhis2-ui/tab" "9.11.0" + "@dhis2-ui/tooltip" "9.11.0" + "@dhis2-ui/user-avatar" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" "@react-hook/size" "^2.1.2" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/status-icon@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/status-icon/-/status-icon-9.10.1.tgz#e23274968cd304d23770dca9970d5036c758ce53" - integrity sha512-l9H5eplY9Q/02ItoEDKG70z06lODG9Rc5jgOBQN8WS9K0U67Ux/BYcJuyXUGz77ai8C+LQru1A9Bq7Kug7zr6w== +"@dhis2-ui/status-icon@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2-ui/status-icon/-/status-icon-10.0.3.tgz#4d772fdfc35c8e3d559afeaeff5a07015e5364bb" + integrity sha512-LZC+ALg1qYx4Zxl5uvlib0nGJ+eRihRULycUQasQq1UT+nIL/Dyf4Y7GJwQ3rdIy2gq9Sr4eDIhYsn+OBIhi9w== dependencies: - "@dhis2-ui/loader" "9.10.1" + "@dhis2-ui/loader" "10.0.3" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "10.0.3" + "@dhis2/ui-icons" "10.0.3" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/switch@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/switch/-/switch-9.10.1.tgz#886cb5955274526331e6fa07127c4d8f236403f7" - integrity sha512-ZcbCJJlv9VG8BuQQ0Hhw2JueJjbFuIm5tXozmC9GaTd2F2v1FDHsMJpIenY+RcgK/SWRbCF6iYdyONBw2nn29g== +"@dhis2-ui/status-icon@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/status-icon/-/status-icon-9.11.0.tgz#2387a0ed48ecd9d09a76fd30ed249efa6df9ee00" + integrity sha512-EUEwH+Q3Z+Y0bdra94NmyqDyUz3gSOijEhIX3BPfk7mesvY9mLp87PvBaSfHJIHf1xywTI/Py067Et6MLPUR2w== dependencies: - "@dhis2-ui/field" "9.10.1" - "@dhis2-ui/required" "9.10.1" + "@dhis2-ui/loader" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/tab@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/tab/-/tab-9.10.1.tgz#8e9b6d1b7610617981bbc24a02ff87b150a00c8d" - integrity sha512-SghJvw5EImrFB7yOlOtBqQX0N8w8y8OAivSIsqScF/ejTR8m7dSRrWXLBBawfo0ht6dOs9l0Fje3Ej0MU+40yA== +"@dhis2-ui/switch@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/switch/-/switch-9.11.0.tgz#2eb848cbf0471375912ee48849d1beb949eedf45" + integrity sha512-norlPc5z/YCNVIHTqU/BpKii+c6biSAXV1Sv+wlfh2eXTa78+lFUNOG8RoO5lQCUmOC1bZd5+L1BjUwh6MlOVw== dependencies: - "@dhis2-ui/tooltip" "9.10.1" + "@dhis2-ui/field" "9.11.0" + "@dhis2-ui/required" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/table@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/table/-/table-9.10.1.tgz#51c8e4973c1174edcf94627b3a5513340be85b12" - integrity sha512-nWSWN16EHnF1Q6UGP36P5xmYxxhcKPl706XLcBbNGbSULY4a90hXQJnCcuWAoulSgZtC7D7XhiwcD8diNY2Q1w== +"@dhis2-ui/tab@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/tab/-/tab-9.11.0.tgz#4e475d915aec266919d4c4fc73f58a6144312901" + integrity sha512-ijjxbxOeFe6iOQEZ/bICEjTDnq9PNkBSnO74rR/PImrPvsHUU+d2ZOSYWkh3TwFL9QQ76Vb9NwcAo6eSOGdVOw== dependencies: + "@dhis2-ui/tooltip" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/tag@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/tag/-/tag-9.10.1.tgz#8bad6d9e6f9ef3aa761bc98c3cbed9455261e633" - integrity sha512-iiZu51CQSBOWkkYk56iiVuzieFbHjUC55YDkJpHHb2QhgU+6LzacTltP3vOBWIw/BKaMWLkQjvf/XyjWHJd3/Q== +"@dhis2-ui/table@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/table/-/table-9.11.0.tgz#4c37dc4f334ceb49e1d11a3c9839ee229f2e9bd9" + integrity sha512-qc2OtBe9LqDCci3wJM7y4JSA5S3AfubxnySMMJPPEo7jilb6aAEheYFKjfmRXdUP+GxMUdOh4hCUQ22LAG1i9A== dependencies: "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/text-area@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/text-area/-/text-area-9.10.1.tgz#b4e54872f85fa3825d8bfea0d2c7772e6a3b5c65" - integrity sha512-kTOXmANxFYR2+FO4ZrUnxOSxuQXcNcVSUTa/Em/X7cOzoqeDK5VeQ0HB3PnppFEMk3cBnbHTOlixlm8EwQQJ9Q== +"@dhis2-ui/tag@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/tag/-/tag-9.11.0.tgz#f1c292d72a84e6e04cdbe4ae16d16ff95f28579a" + integrity sha512-FMN/1NmHyKUdFNdw2E7Bc1UnAFhyljGTwD3DXegY5ncEYBafWQjzLXyQtHJTlu58VfdBwwQ/nIG9qChJj6w2zQ== dependencies: - "@dhis2-ui/box" "9.10.1" - "@dhis2-ui/field" "9.10.1" - "@dhis2-ui/loader" "9.10.1" - "@dhis2-ui/status-icon" "9.10.1" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/tooltip@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/tooltip/-/tooltip-9.10.1.tgz#598008b4c8eedf397ad76c313f1c6ab121af6a84" - integrity sha512-2kbvbo319mR5NHbfwcL4cVndwE97VQXgsllOFXe++0ywGwwCqvo/uQDbA6Fpzdc5CfiFnGshMPbz4HAGiHB+9g== +"@dhis2-ui/text-area@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/text-area/-/text-area-9.11.0.tgz#e3568e70f9b0ecd45f4e92820f59184db5fdda4b" + integrity sha512-UPTK0PKiicU0OjfyMcNCN8znlrGicUyMY2MoSC1n2Tck2S0JUaCbG4Daski8uCMdss/2ZIra/k6vlP/KWzlHzw== dependencies: - "@dhis2-ui/popper" "9.10.1" - "@dhis2-ui/portal" "9.10.1" + "@dhis2-ui/box" "9.11.0" + "@dhis2-ui/field" "9.11.0" + "@dhis2-ui/loader" "9.11.0" + "@dhis2-ui/status-icon" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-icons" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/transfer@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/transfer/-/transfer-9.10.1.tgz#1c70b0a9be82d3b60202e3ff872ecb1456106df9" - integrity sha512-v09uS4XwOUBz/taPxA3R5lCIGQAVRDb1DFmZqTlSAA2/UES3SsyjFoEdITO0LGpJilSc8Zw7wVlsVbMRDC7JbA== +"@dhis2-ui/tooltip@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/tooltip/-/tooltip-9.11.0.tgz#53095be4ebe458f0b8e22c55f50ddef7fea28255" + integrity sha512-zyGF3J0bpUC3JJM8WK9C+lm5x7fNGnzH0xrgYRP1TbcI/2RJNzlNsWr/pfNfHNqRqSwseai7Q2ssQWyADkuqPQ== dependencies: - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/field" "9.10.1" - "@dhis2-ui/input" "9.10.1" - "@dhis2-ui/intersection-detector" "9.10.1" - "@dhis2-ui/loader" "9.10.1" + "@dhis2-ui/popper" "9.11.0" + "@dhis2-ui/portal" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2-ui/user-avatar@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2-ui/user-avatar/-/user-avatar-9.10.1.tgz#c0998148e52dedbe8f0da00e886c09726a4946c5" - integrity sha512-uGLzEl7C3/fjJ9A1/t5+Rw4fKaj7sh7tAMXGSKytBYOMHkTPEXCRK1jGrGGKP4+dJVJPqRBvyBGGd7bd7ZwGvQ== +"@dhis2-ui/transfer@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/transfer/-/transfer-9.11.0.tgz#f5d445ea46ecad95c47f90ab61648b1b1082cbc7" + integrity sha512-sSmhqSKcuCZSXG4pgLTPNJuY/K8oSGg92x7sHXQfrLFbrnsSenD6ckJjnMt4hWXNHW3xPbG5jVlB+CHWKCLrYQ== dependencies: + "@dhis2-ui/button" "9.11.0" + "@dhis2-ui/field" "9.11.0" + "@dhis2-ui/input" "9.11.0" + "@dhis2-ui/intersection-detector" "9.11.0" + "@dhis2-ui/loader" "9.11.0" "@dhis2/prop-types" "^3.1.2" - "@dhis2/ui-constants" "9.10.1" + "@dhis2/ui-constants" "9.11.0" classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2/app-adapter@10.4.0": - version "10.4.0" - resolved "https://registry.yarnpkg.com/@dhis2/app-adapter/-/app-adapter-10.4.0.tgz#befb3e9ee09a4f2d064a6dc0c590bffaf5a7ca7c" - integrity sha512-dqjrK8FtshofMp4LzMV6J1Oj3c2/pyl6m+gOYx65Ynr7FPk20QybMNPEWnpmeWQbhI1iMf/OV/O6MzTiezfUfQ== +"@dhis2-ui/user-avatar@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2-ui/user-avatar/-/user-avatar-9.11.0.tgz#82bf405f33d912961ae7447820140e510907fa57" + integrity sha512-4mK1eYYwe54rCsoDxxEqHlSMDYm0G6Ls5UXKmgi07nGvUL9QM2gUEW8J/FPmQDgFcXiBKAZpAbu5yc7d48lIbg== dependencies: - "@dhis2/pwa" "10.4.0" + "@dhis2/prop-types" "^3.1.2" + "@dhis2/ui-constants" "9.11.0" + classnames "^2.3.1" + prop-types "^15.7.2" + +"@dhis2/app-adapter@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@dhis2/app-adapter/-/app-adapter-10.5.0.tgz#f27d6905e93a392ba2dfe5d31ec22e745f4d82ff" + integrity sha512-cPqY21QrcnSi8Kicn+TuP7HWPFMgKJ1BLMZOvPOSW/zpjzm2udZvp7LCO8qmsgCKvuMilvwVcL9Oeo/Sk9ISSA== + dependencies: + "@dhis2/pwa" "10.5.0" moment "^2.24.0" -"@dhis2/app-runtime@^3.10.0-alpha.2", "@dhis2/app-runtime@^3.10.2", "@dhis2/app-runtime@^3.9.3": - version "3.10.2" - resolved "https://registry.yarnpkg.com/@dhis2/app-runtime/-/app-runtime-3.10.2.tgz#e82639bd68234bdeaf2f6d3c256dcdfcdd267da2" - integrity sha512-GiftKk8ZTXlPElXAgVJn41Vj6E1vEGTPGrjrqU7j41ZTYsg+tUcCkISNt1woe5l7E+8+y+9Fy4bgqSsBOAEUvg== +"@dhis2/app-runtime@^3.10.2", "@dhis2/app-runtime@^3.9.3": + version "3.10.6" + resolved "https://registry.yarnpkg.com/@dhis2/app-runtime/-/app-runtime-3.10.6.tgz#10add0b8a2e1de06777e6e78c681a3a8f15ba058" + integrity sha512-WfC+AHkw0V3V3/wyLPHoTyAf8i4btLl/R2nMBVs3NEXLwA9mekG/gXs7AEPnK2/p6FVoqXMDwJHEH2b8Iw4UFw== dependencies: - "@dhis2/app-service-alerts" "3.10.2" - "@dhis2/app-service-config" "3.10.2" - "@dhis2/app-service-data" "3.10.2" - "@dhis2/app-service-offline" "3.10.2" - "@dhis2/app-service-plugin" "3.10.2" + "@dhis2/app-service-alerts" "3.10.6" + "@dhis2/app-service-config" "3.10.6" + "@dhis2/app-service-data" "3.10.6" + "@dhis2/app-service-offline" "3.10.6" + "@dhis2/app-service-plugin" "3.10.6" -"@dhis2/app-service-alerts@3.10.2": - version "3.10.2" - resolved "https://registry.yarnpkg.com/@dhis2/app-service-alerts/-/app-service-alerts-3.10.2.tgz#0e07c3530606f81ab998a20f2c478600b6027a77" - integrity sha512-2IqaawnlOzYVJLBF2AKVQJ4cuxJNZD7FK0XE0XOv1WwFs70h6bp23MQueIJ/QHxLo7lamE0FC22m4diM4P0CuA== +"@dhis2/app-service-alerts@3.10.6": + version "3.10.6" + resolved "https://registry.yarnpkg.com/@dhis2/app-service-alerts/-/app-service-alerts-3.10.6.tgz#47e65d7ed57a4bd801a513b0f71d0ed2839ea363" + integrity sha512-2r9IUBp5Z5zuSqjTEWpt+rx7tP5AqrtkPJ8ZVOKW5YBn1DB4bQ5ti9GOevHM4othr7Mrmt22UADPgfEkfc7XzQ== -"@dhis2/app-service-config@3.10.2": - version "3.10.2" - resolved "https://registry.yarnpkg.com/@dhis2/app-service-config/-/app-service-config-3.10.2.tgz#be52676068e31cdb1fe3f8ddabb8153e1cd6e3e6" - integrity sha512-Crw7Tx4yg4qWw3qYxNCIye77IaY2HUYyDmDKPVVWzgmrcSGxpunv/NtsUg12pxrVfVLnqlH9L6AF9A6hO0afmw== +"@dhis2/app-service-config@3.10.6": + version "3.10.6" + resolved "https://registry.yarnpkg.com/@dhis2/app-service-config/-/app-service-config-3.10.6.tgz#bf952156329ab48d6da407522c6e06072fdf896a" + integrity sha512-Z/rSBjCc8kP78QYhKNyGoCafGfwpqMDg8mV2x/H6CavgEicOa+qHX3bkKV6+fC9Sw2FnsWHRemxYRkgbW/BD3g== -"@dhis2/app-service-data@3.10.2": - version "3.10.2" - resolved "https://registry.yarnpkg.com/@dhis2/app-service-data/-/app-service-data-3.10.2.tgz#e94d45d87cab5e156decfe9e92e3153e5df68ba0" - integrity sha512-+ESLrVEDQKXBaQmpaCq78RonkqJM2BliykaO4QBeOc4ilWohaqYajue1Ntg4uV2KrdkCylBdMDwGYjsak0G7hg== +"@dhis2/app-service-data@3.10.6": + version "3.10.6" + resolved "https://registry.yarnpkg.com/@dhis2/app-service-data/-/app-service-data-3.10.6.tgz#2f3f522b4a5a8c8d531f8901cca502323e566042" + integrity sha512-9RH3Dn0shcVdF7itgKy9cK3yMEcyP5xXjNzYPGzWf+3q9aGlzjh22pHE4p+C9OV+SeVO2q+5GcNOk7rdZvS+Cg== dependencies: react-query "^3.13.11" -"@dhis2/app-service-offline@3.10.2": - version "3.10.2" - resolved "https://registry.yarnpkg.com/@dhis2/app-service-offline/-/app-service-offline-3.10.2.tgz#082279b7045e702c2eecda751d762225313156b0" - integrity sha512-bTp+CCRbyKt/0QADj0O6wLNWhi+6QDkjt2+sfpv3M8oKcftjaQDqedVoypZRA0nqvSdVL2ehtTzqMrrxu6jtZQ== +"@dhis2/app-service-offline@3.10.6": + version "3.10.6" + resolved "https://registry.yarnpkg.com/@dhis2/app-service-offline/-/app-service-offline-3.10.6.tgz#e1d83520bb292fc51b24eab65d05e1c9fa1e2ad6" + integrity sha512-179QXdUOFgPPIOhY5HD+C6GzzJDvhR8GW7jXT4LtjCeO/4EbA3r9sycyrYpLZL66GtpGHkeV5g4slxM1t+63cw== dependencies: lodash "^4.17.21" -"@dhis2/app-service-plugin@3.10.2": - version "3.10.2" - resolved "https://registry.yarnpkg.com/@dhis2/app-service-plugin/-/app-service-plugin-3.10.2.tgz#09de64ee59017c86c8dab96a0d2ca0d915ae9d31" - integrity sha512-FqR6ILmvAXT2n1SzCZknT+5jJRdajg1dBegWAu3xqZXAntsM4wvFLCx6EtjS5LO2Kga9VZ+TJmVr2UFX1330CQ== +"@dhis2/app-service-plugin@3.10.6": + version "3.10.6" + resolved "https://registry.yarnpkg.com/@dhis2/app-service-plugin/-/app-service-plugin-3.10.6.tgz#1c6792b6d051c4b3301d76d083c3364424140a83" + integrity sha512-um4ONieW+xpWfagt+QNF4ZtzzFpm8KeA9tlBomamOfhGIpi9mkCWtaY0Mw2IUWO+d0Uh4cfmeQV6w6jOX6xJzw== dependencies: post-robot "^10.0.46" -"@dhis2/app-shell@10.4.0": - version "10.4.0" - resolved "https://registry.yarnpkg.com/@dhis2/app-shell/-/app-shell-10.4.0.tgz#66cf2148bc2e92f741f7ef0dd08ef955f2c40707" - integrity sha512-XROGP/co8IZJF//xHUY/m6EZhIh+6g4Wk/ItTgrkYnBbz69JWXB2Zo/M/b2nx3TKOKbz9FeVXVeH7liWHKkaug== +"@dhis2/app-shell@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@dhis2/app-shell/-/app-shell-10.5.0.tgz#d8d56352147aee008bae2cbeeb4ede5e5936d80f" + integrity sha512-zXUPH/Frbq7gsd+XJ9lTwla9cTb1oUOwmakJyN+nteTPY4IihpNR9qpwixpH/J9qSW68owhl8NR+ZLLm3dHtsw== dependencies: - "@dhis2/app-adapter" "10.4.0" - "@dhis2/app-runtime" "^3.10.0-alpha.2" + "@dhis2/app-adapter" "10.5.0" + "@dhis2/app-runtime" "^3.10.2" "@dhis2/d2-i18n" "^1.1.1" - "@dhis2/pwa" "10.4.0" + "@dhis2/pwa" "10.5.0" "@dhis2/ui" "^8.12.3" classnames "^2.2.6" moment "^2.29.1" @@ -2340,9 +2506,9 @@ typescript "^3.6.3" "@dhis2/cli-app-scripts@^10.4.0": - version "10.4.0" - resolved "https://registry.yarnpkg.com/@dhis2/cli-app-scripts/-/cli-app-scripts-10.4.0.tgz#3a80ccc7c10b0804e8d76f7df40ece48d30d5f17" - integrity sha512-QMx+5UEEEb0AELzeZ5oZcxb8dv0hpzHS3/ily67oRchVdGB1K1stl0MwQF7CdbCS4ejGtU+2c5ODWFoBD0cWFA== + version "10.5.0" + resolved "https://registry.yarnpkg.com/@dhis2/cli-app-scripts/-/cli-app-scripts-10.5.0.tgz#d967963a9ea6fecfc64944c575fb5e1916ef7b5c" + integrity sha512-3FSFLLLWYQVsDGx4EsdwwiOgtbBO1+RYacvuElTUbXsgUsqs8cZafb3kBmXeb/08jANLpynJGs0xtWic+90iIQ== dependencies: "@babel/core" "^7.6.2" "@babel/plugin-proposal-class-properties" "^7.8.3" @@ -2351,7 +2517,7 @@ "@babel/preset-env" "^7.14.7" "@babel/preset-react" "^7.0.0" "@babel/preset-typescript" "^7.6.0" - "@dhis2/app-shell" "10.4.0" + "@dhis2/app-shell" "10.5.0" "@dhis2/cli-helpers-engine" "^3.2.0" "@jest/core" "^27.0.6" "@pmmmwh/react-refresh-webpack-plugin" "^0.5.4" @@ -2409,9 +2575,9 @@ yargs "^13.1.0" "@dhis2/cli-helpers-engine@^3.0.0", "@dhis2/cli-helpers-engine@^3.2.0", "@dhis2/cli-helpers-engine@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@dhis2/cli-helpers-engine/-/cli-helpers-engine-3.2.1.tgz#80d3f5b50ae223e5ed3f91550c81c30c3d7741a7" - integrity sha512-8VRM7KMuiGudogiKmpD7dfjp4Y9aSmmh1dGnTq57kdIQLw/o3CqGqz61BSw41SN/t9hxZvYAy8fBaujPAgL1sQ== + version "3.2.2" + resolved "https://registry.yarnpkg.com/@dhis2/cli-helpers-engine/-/cli-helpers-engine-3.2.2.tgz#e3ab24d3da46c7ecb79a31cb332548ebdac72d1c" + integrity sha512-zMBm33WzYbjmb/eqIfpZS1ZZWbFaRHoHZoVhKWvOX0TDAEmdPtEmfG5fc5keV3CU9lDBIyXCfmca0KJeNvs5/w== dependencies: chalk "^3.0.0" cross-spawn "^7.0.3" @@ -2424,9 +2590,9 @@ yargs "^13.1.0" "@dhis2/cli-style@^10.4.1": - version "10.5.1" - resolved "https://registry.yarnpkg.com/@dhis2/cli-style/-/cli-style-10.5.1.tgz#cf2df63b5eb203e3e3cec867bb9ba53b0d6f2ed6" - integrity sha512-epMQFxX+A7HzivXMqX5pHSJqP/CRw94HHWOZ+ab8Ug930Y3gF8YG1QtXgfvdMFz7u+LfQlLujj+DgVa/6W5GTQ== + version "10.7.3" + resolved "https://registry.yarnpkg.com/@dhis2/cli-style/-/cli-style-10.7.3.tgz#38cd2b6672fca44d9e72c64583ce7550e123686a" + integrity sha512-uqlJwV2hegPNgxpoqWH5nZhqBSvPH2GJ0Uoeaw7OpiHKFauOFUTuUiy6MGwUZqtgEAbmcq0DbyDexNQ/UqHQLQ== dependencies: "@commitlint/cli" "^12.1.4" "@commitlint/config-conventional" "^13.1.0" @@ -2437,14 +2603,20 @@ eslint-config-prettier "^8.3.0" eslint-plugin-import "^2.22.1" eslint-plugin-react "^7.31.10" + eslint-plugin-react-hooks "^4.6.2" fast-glob "^3.2.5" find-up "^5.0.0" fs-extra "^10.0.0" husky "^7.0.2" micromatch "^4.0.4" perfy "^1.1.5" + postcss "^8.4.38" + postcss-styled-jsx "^1.0.1" + postcss-syntax "^0.36.2" prettier "^2.4.1" semver "^7.3.5" + stylelint "^16.3.1" + stylelint-use-logical "^2.1.2" yargs "^16.2.0" "@dhis2/cli-utils-cypress@^9.0.2": @@ -2457,16 +2629,16 @@ jscodeshift "^0.11.0" "@dhis2/cypress-commands@^10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@dhis2/cypress-commands/-/cypress-commands-10.0.3.tgz#dae315cc839ff57965f307c2d2d34277c19592d4" - integrity sha512-K+GJtnzZGg62Qe67d/5Fl662s5VXnvhB55TTDoTcL/7Euawxyo1FC7ZrLXJExM2C1z0ic5WfZ7MH6EUsS6OfqQ== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@dhis2/cypress-commands/-/cypress-commands-10.0.6.tgz#2ef6a5bc0a737703993f63b9465d00727a1d0ff6" + integrity sha512-TNmOO5sKcz20BVcx/lEAJU0WiKX7OUZbKfAJfPzAPo875RU247YTH91FheCEPoG0o1dZrQ6IMNDhurdBV+daHQ== dependencies: jscodeshift "^0.11.0" "@dhis2/cypress-plugins@^10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@dhis2/cypress-plugins/-/cypress-plugins-10.0.3.tgz#83403aca333e2b356f7ea92c272d3ca00d00276d" - integrity sha512-MYIkWI/kCR4hoqvD+spmbXcdoNL/EFX3HZuyRCGUErj5ChJmyWX7jQtDq/twd7GFRma0IqwTtOwaiKAxLRv/Nw== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@dhis2/cypress-plugins/-/cypress-plugins-10.0.6.tgz#d405f96d0de2c58b77931ef5fd212c7c263cfd49" + integrity sha512-7NjQrXPT2K6OiabVu58+ljrGpdOOe78yL1LclQlmIJRs9gT2dcWB9RrgeGSSXaY5KCeuXYG/unkF15a1u1FKbw== "@dhis2/d2-i18n@^1.1.0", "@dhis2/d2-i18n@^1.1.1", "@dhis2/d2-i18n@^1.1.3": version "1.1.3" @@ -2546,10 +2718,10 @@ recompose "^0.26.0" rxjs "^5.5.7" -"@dhis2/multi-calendar-dates@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@dhis2/multi-calendar-dates/-/multi-calendar-dates-1.2.3.tgz#ef36bc80b34eaaa7f7cefa51b443528c019ff2d2" - integrity sha512-K3E9yAH/SPXi1O7RWuK7bznYTa1v3x4Ys0ihpMWnKH++OLMx76yK/1H1m9v7NgQvMry29ATQMJh0n/vJSg+EpA== +"@dhis2/multi-calendar-dates@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@dhis2/multi-calendar-dates/-/multi-calendar-dates-2.0.0.tgz#febf04f873670960804d38c9ebaa1cadf8050db3" + integrity sha512-pxu81kkkh70tB+CyAub41ulpNJPHyxDGwH2pdcc+NUqrKu4OTQr5ScdCBL2MndShrEKj9J6qj9zKVagvvymH5w== dependencies: "@dhis2/d2-i18n" "^1.1.3" "@js-temporal/polyfill" "0.4.3" @@ -2560,10 +2732,10 @@ resolved "https://registry.yarnpkg.com/@dhis2/prop-types/-/prop-types-3.1.2.tgz#65b8ad2da8cd2f72bc8b951049a6c9d1b97af3e9" integrity sha512-eM0jjLOWvtXWqSFp5YC4DHFpkP8Y1D2eUwGV7MBWjni+o27oesVan+oT7WHeOeLdlAd4acRJrnaaAyB4Ck1wGQ== -"@dhis2/pwa@10.4.0": - version "10.4.0" - resolved "https://registry.yarnpkg.com/@dhis2/pwa/-/pwa-10.4.0.tgz#1b21b79b1a8c85aed9c73e4655e1bb1f4d3d3d95" - integrity sha512-iNq4imbSBnIv2YBkrtljsAHV/Q934ZxZVfUiffGWAAiS9gqhrD1iQ9dhCRl4nq/X71sIRR28aK7CDlwql31OrQ== +"@dhis2/pwa@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@dhis2/pwa/-/pwa-10.5.0.tgz#356193d8fb3b151ec4e258b544c75b8a8b20cf80" + integrity sha512-+Yzm5us8rDbRCtsziriWAGLhzm+ADEqg96MMaCBbzkxYJ6L4axB3f24Y/pHMlgeXM7xtG8grHAHqo/kbz5LFSA== dependencies: idb "^6.0.0" workbox-core "^6.1.5" @@ -2571,93 +2743,110 @@ workbox-routing "^6.1.5" workbox-strategies "^6.1.5" -"@dhis2/ui-constants@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-9.10.1.tgz#f9491b1a5af1483b85aa43b120e4f782e15eb33d" - integrity sha512-FB1AgraRWC35lpEPAZvuJJmFqi69xwJBe3gIwHaFs8LHA9bah4yt67E8VRHvQWDrGQgyUU8uirXmG9jLQ/Fm3Q== +"@dhis2/ui-constants@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-10.0.3.tgz#c2703847dc94d727a0e7d7bb03f4f3de29f1d543" + integrity sha512-c2j2JPF/ipyg/S4yPbPa5giU01J9hNulRio9KKJ7TuAufiv7lkwy2mFRnJhHYBPD4jEKVtkSSKl1DTcKAgkeaA== + dependencies: + prop-types "^15.7.2" + +"@dhis2/ui-constants@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-9.11.0.tgz#0f41339dca04c95d026c278d17ff795cbe500020" + integrity sha512-uN0vH+HXtnVYmFGj0fARrsouKxMTEKHmq1aGuIbxK49+AcnMtxUirqXwuYx6wc/lJTl+MqdHKGqwTgJvEJ3TGQ== dependencies: prop-types "^15.7.2" -"@dhis2/ui-forms@9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-9.10.1.tgz#52cfc6c8d0feab615749217a37b882eea70eeeff" - integrity sha512-9LEECuQaVG6IEj4TJRgV1DvCTFZYMd20uoAn0aA8Zz1kBU+agk4OwSXlBR04A/tovD8tK32AyFEUZalkRN2oEA== - dependencies: - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/checkbox" "9.10.1" - "@dhis2-ui/field" "9.10.1" - "@dhis2-ui/file-input" "9.10.1" - "@dhis2-ui/input" "9.10.1" - "@dhis2-ui/radio" "9.10.1" - "@dhis2-ui/select" "9.10.1" - "@dhis2-ui/switch" "9.10.1" - "@dhis2-ui/text-area" "9.10.1" +"@dhis2/ui-forms@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-9.11.0.tgz#4b71be63e5e671dff29a49a9cf906375d2d7ce2d" + integrity sha512-A/gL3QJByckMHeSAnLCpU5FcvBp3l+H16YpJXhNYYHXistaxPfSCwzO+VITl+MBJCi30umbe4hN/rVWjiTw60Q== + dependencies: + "@dhis2-ui/button" "9.11.0" + "@dhis2-ui/checkbox" "9.11.0" + "@dhis2-ui/field" "9.11.0" + "@dhis2-ui/file-input" "9.11.0" + "@dhis2-ui/input" "9.11.0" + "@dhis2-ui/radio" "9.11.0" + "@dhis2-ui/select" "9.11.0" + "@dhis2-ui/switch" "9.11.0" + "@dhis2-ui/text-area" "9.11.0" "@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.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-9.10.1.tgz#d930ecf48e17969ba51617ff2880133266a77a46" - integrity sha512-OUnShRkXRewIfEq0EPEXR1Phc1PTZOMDATkNUiYr+6Zy1IOxENa1dmeN58mAXlZIxxFH6Fd5wQIqax/iqz40PQ== +"@dhis2/ui-icons@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-10.0.3.tgz#70666c96943fdcafed99afaaaae00a16debc2e3a" + integrity sha512-ax7b+UDdGhkY2MJ/dndEs18N0qxi4IzFlu6VTF8OoGTvBflyf4KkG6jHLQY4nfdHzM5O5uY2jCETdfwWFVoUNg== + +"@dhis2/ui-icons@9.11.0": + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-9.11.0.tgz#f9ca73d12b26ba3dd1a1ccb381cc3fc39ec15044" + integrity sha512-1XTls+m5xyQKDTgsQ+ehtLOgUdHqIAmKuwSkTf9/LtFpa/Wt2t9waKI7KIZYUL1MhPXSd0d9k2eEClPhseH+4Q== "@dhis2/ui@^8.12.3", "@dhis2/ui@^9.10.1": - version "9.10.1" - resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-9.10.1.tgz#66b8384f22eb44313fd1f34c76c8615ec5b91e76" - integrity sha512-Zb5cwoNEfi5VGySow8WA+3LE1VD9mdDMK35Fj4Wg+Q3nL9JknxUUl2cLafZaTqjytyHE2AIel/n5RyqlYtun+Q== - dependencies: - "@dhis2-ui/alert" "9.10.1" - "@dhis2-ui/box" "9.10.1" - "@dhis2-ui/button" "9.10.1" - "@dhis2-ui/calendar" "9.10.1" - "@dhis2-ui/card" "9.10.1" - "@dhis2-ui/center" "9.10.1" - "@dhis2-ui/checkbox" "9.10.1" - "@dhis2-ui/chip" "9.10.1" - "@dhis2-ui/cover" "9.10.1" - "@dhis2-ui/css" "9.10.1" - "@dhis2-ui/divider" "9.10.1" - "@dhis2-ui/field" "9.10.1" - "@dhis2-ui/file-input" "9.10.1" - "@dhis2-ui/header-bar" "9.10.1" - "@dhis2-ui/help" "9.10.1" - "@dhis2-ui/input" "9.10.1" - "@dhis2-ui/intersection-detector" "9.10.1" - "@dhis2-ui/label" "9.10.1" - "@dhis2-ui/layer" "9.10.1" - "@dhis2-ui/legend" "9.10.1" - "@dhis2-ui/loader" "9.10.1" - "@dhis2-ui/logo" "9.10.1" - "@dhis2-ui/menu" "9.10.1" - "@dhis2-ui/modal" "9.10.1" - "@dhis2-ui/node" "9.10.1" - "@dhis2-ui/notice-box" "9.10.1" - "@dhis2-ui/organisation-unit-tree" "9.10.1" - "@dhis2-ui/pagination" "9.10.1" - "@dhis2-ui/popover" "9.10.1" - "@dhis2-ui/popper" "9.10.1" - "@dhis2-ui/portal" "9.10.1" - "@dhis2-ui/radio" "9.10.1" - "@dhis2-ui/required" "9.10.1" - "@dhis2-ui/segmented-control" "9.10.1" - "@dhis2-ui/select" "9.10.1" - "@dhis2-ui/selector-bar" "9.10.1" - "@dhis2-ui/sharing-dialog" "9.10.1" - "@dhis2-ui/switch" "9.10.1" - "@dhis2-ui/tab" "9.10.1" - "@dhis2-ui/table" "9.10.1" - "@dhis2-ui/tag" "9.10.1" - "@dhis2-ui/text-area" "9.10.1" - "@dhis2-ui/tooltip" "9.10.1" - "@dhis2-ui/transfer" "9.10.1" - "@dhis2-ui/user-avatar" "9.10.1" - "@dhis2/ui-constants" "9.10.1" - "@dhis2/ui-forms" "9.10.1" - "@dhis2/ui-icons" "9.10.1" + version "9.11.0" + resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-9.11.0.tgz#da8d4791ca7bc6ceb7d681ce6b743f51dc8987a3" + integrity sha512-vO1GhzbhOHJBVPLjFHyxH4JTbcf5z8xas5iyoRry+tUzDB81CGRB4Hz9C73w8Kw6lyOicrDP/B/keKk9LpDLSQ== + dependencies: + "@dhis2-ui/alert" "9.11.0" + "@dhis2-ui/box" "9.11.0" + "@dhis2-ui/button" "9.11.0" + "@dhis2-ui/calendar" "9.11.0" + "@dhis2-ui/card" "9.11.0" + "@dhis2-ui/center" "9.11.0" + "@dhis2-ui/checkbox" "9.11.0" + "@dhis2-ui/chip" "9.11.0" + "@dhis2-ui/cover" "9.11.0" + "@dhis2-ui/css" "9.11.0" + "@dhis2-ui/divider" "9.11.0" + "@dhis2-ui/field" "9.11.0" + "@dhis2-ui/file-input" "9.11.0" + "@dhis2-ui/header-bar" "9.11.0" + "@dhis2-ui/help" "9.11.0" + "@dhis2-ui/input" "9.11.0" + "@dhis2-ui/intersection-detector" "9.11.0" + "@dhis2-ui/label" "9.11.0" + "@dhis2-ui/layer" "9.11.0" + "@dhis2-ui/legend" "9.11.0" + "@dhis2-ui/loader" "9.11.0" + "@dhis2-ui/logo" "9.11.0" + "@dhis2-ui/menu" "9.11.0" + "@dhis2-ui/modal" "9.11.0" + "@dhis2-ui/node" "9.11.0" + "@dhis2-ui/notice-box" "9.11.0" + "@dhis2-ui/organisation-unit-tree" "9.11.0" + "@dhis2-ui/pagination" "9.11.0" + "@dhis2-ui/popover" "9.11.0" + "@dhis2-ui/popper" "9.11.0" + "@dhis2-ui/portal" "9.11.0" + "@dhis2-ui/radio" "9.11.0" + "@dhis2-ui/required" "9.11.0" + "@dhis2-ui/segmented-control" "9.11.0" + "@dhis2-ui/select" "9.11.0" + "@dhis2-ui/selector-bar" "9.11.0" + "@dhis2-ui/sharing-dialog" "9.11.0" + "@dhis2-ui/switch" "9.11.0" + "@dhis2-ui/tab" "9.11.0" + "@dhis2-ui/table" "9.11.0" + "@dhis2-ui/tag" "9.11.0" + "@dhis2-ui/text-area" "9.11.0" + "@dhis2-ui/tooltip" "9.11.0" + "@dhis2-ui/transfer" "9.11.0" + "@dhis2-ui/user-avatar" "9.11.0" + "@dhis2/ui-constants" "9.11.0" + "@dhis2/ui-forms" "9.11.0" + "@dhis2/ui-icons" "9.11.0" prop-types "^15.7.2" +"@dual-bundle/import-meta-resolve@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#519c1549b0e147759e7825701ecffd25e5819f7b" + integrity sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg== + "@emotion/is-prop-valid@^0.7.3": version "0.7.3" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz#a6bf4fa5387cbba59d44e698a4680f481a8da6cc" @@ -2670,121 +2859,231 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + "@esbuild/android-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + "@esbuild/android-arm@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + "@esbuild/android-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + "@esbuild/darwin-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + "@esbuild/darwin-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + "@esbuild/freebsd-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + "@esbuild/freebsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + "@esbuild/linux-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + "@esbuild/linux-arm@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + "@esbuild/linux-ia32@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== -"@esbuild/linux-loong64@0.14.54": - version "0.14.54" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" - integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== "@esbuild/linux-loong64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + "@esbuild/linux-mips64el@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + "@esbuild/linux-ppc64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + "@esbuild/linux-riscv64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + "@esbuild/linux-s390x@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + "@esbuild/linux-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + "@esbuild/netbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + "@esbuild/openbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + "@esbuild/sunos-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + "@esbuild/win32-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + "@esbuild/win32-ia32@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + "@esbuild/win32-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -2833,9 +3132,9 @@ integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== "@fastify/busboy@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" - integrity sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== "@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": version "9.3.0" @@ -3133,42 +3432,42 @@ react-transition-group "^1.1.3" recompose "^0.22.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== +"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: - "@jridgewell/set-array" "^1.0.1" + "@jridgewell/set-array" "^1.2.1" "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.20" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -3182,9 +3481,9 @@ tslib "^2.3.1" "@jsdoc/salty@^0.2.1": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.7.tgz#98ddce519fd95d7bee605a658fabf6e8cbf7556d" - integrity sha512-mh8LbS9d4Jq84KLw8pzho7XC2q2/IJGiJss3xwRoLD1A+EE16SjN4PfaG4jRCzKegTFLlN0Zd8SdUPE6XdoPFg== + version "0.2.8" + resolved "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.8.tgz#8d29923a9429694a437a50ab75004b576131d597" + integrity sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg== dependencies: lodash "^4.17.21" @@ -3194,9 +3493,9 @@ integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== "@leichtgewicht/ip-codec@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== "@ls-lint/ls-lint@^1.10.0": version "1.11.2" @@ -3652,9 +3951,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== dependencies: "@babel/types" "^7.20.7" @@ -3696,7 +3995,15 @@ "@types/eslint" "*" "@types/estree" "*" -"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": +"@types/eslint@*": + version "9.6.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.0.tgz#51d4fe4d0316da9e9f2c80884f2c20ed5fb022ff" + integrity sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint@^7.29.0 || ^8.4.1": version "8.56.11" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.11.tgz#e2ff61510a3b9454b3329fe7731e3b4c6f780041" integrity sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q== @@ -3715,9 +4022,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.41" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6" - integrity sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA== + version "4.19.5" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" + integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -3760,9 +4067,9 @@ integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== "@types/http-proxy@^1.17.8": - version "1.17.14" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" - integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + version "1.17.15" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.15.tgz#12118141ce9775a6499ecb4c01d02f90fc839d36" + integrity sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ== dependencies: "@types/node" "*" @@ -3809,9 +4116,9 @@ indefinite-observable "^1.0.1" "@types/linkify-it@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.5.tgz#1e78a3ac2428e6d7e6c05c1665c242023a4601d8" - integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw== + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" + integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== "@types/markdown-it@^12.2.3": version "12.2.3" @@ -3822,14 +4129,9 @@ "@types/mdurl" "*" "@types/mdurl@*": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.5.tgz#3e0d2db570e9fb6ccb2dc8fde0be1d79ac810d39" - integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA== - -"@types/mime@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" - integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" + integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== "@types/mime@^1": version "1.3.5" @@ -3849,16 +4151,16 @@ "@types/node" "*" "@types/node@*": - version "20.10.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.7.tgz#40fe8faf25418a75de9fe68a8775546732a3a901" - integrity sha512-fRbIKb8C/Y2lXxB5eVMj4IU7xpdox0Lh8bUPEdtLysaylsml1hOOx1+STloRs/B9nf7C6kPRmmg/V7aQW7usNg== + version "22.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.1.0.tgz#6d6adc648b5e03f0e83c78dc788c2b037d0ad94b" + integrity sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw== dependencies: - undici-types "~5.26.4" + undici-types "~6.13.0" "@types/node@^16.18.39": - version "16.18.70" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.70.tgz#d4c819be1e9f8b69a794d6f2fd929d9ff76f6d4b" - integrity sha512-8eIk20G5VVVQNZNouHjLA2b8utE2NvGybLjMaF4lyhA9uhGwnmXF8o+icdXKGSQSNANJewXva/sFUoZLwAaYAg== + version "16.18.104" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.104.tgz#33d5f4886c54133af0ff02445e57c5254025ee53" + integrity sha512-OF3keVCbfPlkzxnnDBUZJn1RiCJzKeadjiW0xTEb0G1SUJ5gDVb3qnzZr2T4uIFvsbKJbXy1v2DN7e2zaEY7jQ== "@types/normalize-package-data@^2.4.0": version "2.4.4" @@ -3876,9 +4178,9 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prop-types@*": - version "15.7.11" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" - integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== + version "15.7.12" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" + integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== "@types/q@^1.5.1": version "1.5.8" @@ -3886,9 +4188,9 @@ integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw== "@types/qs@*": - version "6.9.11" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.11.tgz#208d8a30bc507bd82e03ada29e4732ea46a6bbda" - integrity sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ== + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== "@types/range-parser@*": version "1.2.7" @@ -3920,21 +4222,20 @@ "@types/react" "*" "@types/react@*": - version "18.2.47" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.47.tgz#85074b27ab563df01fbc3f68dc64bf7050b0af40" - integrity sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ== + version "18.3.3" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" + integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== dependencies: "@types/prop-types" "*" - "@types/scheduler" "*" csstype "^3.0.2" "@types/react@^17": - version "17.0.74" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.74.tgz#ea93059a55e5cfc7a76e7712fe8db5317dd29ee3" - integrity sha512-nBtFGaeTMzpiL/p73xbmCi00SiCQZDTJUk9ZuHOLtil3nI+y7l269LHkHIAYpav99ZwGnPJzuJsJpfLXjiQ52g== + version "17.0.80" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.80.tgz#a5dfc351d6a41257eb592d73d3a85d3b7dbcbb41" + integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== dependencies: "@types/prop-types" "*" - "@types/scheduler" "*" + "@types/scheduler" "^0.16" csstype "^3.0.2" "@types/resolve@1.17.1": @@ -3949,7 +4250,7 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== -"@types/scheduler@*": +"@types/scheduler@^0.16": version "0.16.8" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== @@ -3975,13 +4276,13 @@ "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" - integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== dependencies: "@types/http-errors" "*" - "@types/mime" "*" "@types/node" "*" + "@types/send" "*" "@types/sinonjs__fake-timers@8.1.1": version "8.1.1" @@ -4021,9 +4322,9 @@ integrity sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA== "@types/ws@^8.5.5": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + version "8.5.12" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" + integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== dependencies: "@types/node" "*" @@ -4040,9 +4341,9 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== dependencies: "@types/yargs-parser" "*" @@ -4558,14 +4859,14 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: - fast-deep-equal "^3.1.1" + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.2.2" ansi-align@^3.0.0: version "3.0.1" @@ -4804,25 +5105,27 @@ array-unique@^0.3.2: integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== array.prototype.filter@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e" - integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== + version "1.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.4.tgz#bef83fde8a36a14d3de988c43563e0f5249962bf" + integrity sha512-r+mCJ7zXgXElgR4IRC+fkvNCeoaavWBs6EdCso5Tbcf+iEMKzBU/His60lt34WEZ9vlb8wDkZvQGcVI5GwkfoQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" es-array-method-boxes-properly "^1.0.0" + es-object-atoms "^1.0.0" is-string "^1.0.7" array.prototype.find@^2.1.1, array.prototype.find@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.2.tgz#e862cf891e725d8f2a10e5e42d750629faaabd32" - integrity sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg== + version "2.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.3.tgz#675a233dbcd9b65ecf1fb3f915741aebc45461e6" + integrity sha512-fO/ORdOELvjbbeIfZfzrXFMhYHGofRGqd+am9zm3tZ4GlJINj/pA2eITyfd65Vg6+ZbHd/Cys7stpoRSWtQFdA== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" array.prototype.findlast@^1.2.5: version "1.2.5" @@ -4837,15 +5140,16 @@ array.prototype.findlast@^1.2.5: es-shim-unscopables "^1.0.2" array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" @@ -4868,14 +5172,16 @@ array.prototype.flatmap@^1.3.2: es-shim-unscopables "^1.0.0" array.prototype.reduce@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" - integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== + version "1.0.7" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz#6aadc2f995af29cb887eb866d981dc85ab6f7dc7" + integrity sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" es-array-method-boxes-properly "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" is-string "^1.0.7" array.prototype.tosorted@^1.1.4: @@ -4999,15 +5305,15 @@ author-regex@^1.0.0: integrity sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g== autoprefixer@^10.4.13: - version "10.4.19" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" - integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== + version "10.4.20" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== dependencies: - browserslist "^4.23.0" - caniuse-lite "^1.0.30001599" + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" fraction.js "^4.3.7" normalize-range "^0.1.2" - picocolors "^1.0.0" + picocolors "^1.0.1" postcss-value-parser "^4.2.0" autosuggest-highlight@^3.3.4: @@ -5030,9 +5336,9 @@ aws-sign2@~0.7.0: integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + version "1.13.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.1.tgz#bb5f8b8a20739f6ae1caeaf7eea2c7913df8048e" + integrity sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA== axe-core@^4.9.1: version "4.10.0" @@ -5047,11 +5353,11 @@ axios@^0.25.0: follow-redirects "^1.14.7" axios@^1.6.1: - version "1.6.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" - integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== + version "1.7.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.3.tgz#a1125f2faf702bc8e8f2104ec3a76fab40257d85" + integrity sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw== dependencies: - follow-redirects "^1.15.4" + follow-redirects "^1.15.6" form-data "^4.0.0" proxy-from-env "^1.1.0" @@ -5194,44 +5500,44 @@ babel-plugin-macros@^3.1.0: resolve "^1.19.0" babel-plugin-module-resolver@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.0.tgz#2b7fc176bd55da25f516abf96015617b4f70fc73" - integrity sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q== + version "5.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.2.tgz#cdeac5d4aaa3b08dd1ac23ddbf516660ed2d293e" + integrity sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg== dependencies: - find-babel-config "^2.0.0" - glob "^8.0.3" + find-babel-config "^2.1.1" + glob "^9.3.3" pkg-up "^3.1.0" reselect "^4.1.7" - resolve "^1.22.1" + resolve "^1.22.8" babel-plugin-named-asset-import@^0.3.8: version "0.3.8" resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== -babel-plugin-polyfill-corejs2@^0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz#679d1b94bf3360f7682e11f2cb2708828a24fe8c" - integrity sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ== +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.4" + "@babel/helper-define-polyfill-provider" "^0.6.2" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz#941855aa7fdaac06ed24c730a93450d2b2b76d04" - integrity sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA== +babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" + integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.4" - core-js-compat "^3.33.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" + core-js-compat "^3.38.0" -babel-plugin-polyfill-regenerator@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz#c6fc8eab610d3a11eb475391e52584bacfc020f4" - integrity sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg== +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.4" + "@babel/helper-define-polyfill-provider" "^0.6.2" babel-plugin-react-require@^3.1.3: version "3.1.3" @@ -5358,6 +5664,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +balanced-match@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9" + integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== + base64-arraybuffer-es6@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/base64-arraybuffer-es6/-/base64-arraybuffer-es6-0.7.0.tgz#dbe1e6c87b1bf1ca2875904461a7de40f21abc86" @@ -5424,9 +5735,9 @@ big.js@^5.2.2: integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== bl@^4.0.3: version "4.1.0" @@ -5452,10 +5763,10 @@ bluebird@^3.5.3, bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" content-type "~1.0.5" @@ -5465,7 +5776,7 @@ body-parser@1.20.2: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.11.0" + qs "6.13.0" raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -5542,12 +5853,12 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" brcast@^3.0.1: version "3.0.2" @@ -5573,14 +5884,14 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: - version "4.23.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed" - integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.23.1, browserslist@^4.23.3: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== dependencies: - caniuse-lite "^1.0.30001640" - electron-to-chromium "^1.4.820" - node-releases "^2.0.14" + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" update-browserslist-db "^1.1.0" bser@2.1.1: @@ -5729,10 +6040,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001640: - version "1.0.30001644" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001644.tgz#bcd4212a7a03bdedba1ea850b8a72bfe4bec2395" - integrity sha512-YGvlOZB4QhZuiis+ETS0VXR+MExbFf4fZYYeMTEE0aTQd/RdIjkTyZjLrbYVKnHzppDvnOhritRVv+i7Go6mHw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646: + version "1.0.30001651" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138" + integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== capital-case@^1.0.4: version "1.0.4" @@ -5857,9 +6168,9 @@ cheerio@^1.0.0-rc.3: parse5-htmlparser2-tree-adapter "^7.0.0" chokidar@^3.3.0, chokidar@^3.4.2, chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -5877,9 +6188,9 @@ chownr@^1.1.4: integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== ci-info@^2.0.0: version "2.0.0" @@ -5892,9 +6203,9 @@ ci-info@^3.2.0: integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" + integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== class-autobind@^0.1.4: version "0.1.4" @@ -5945,7 +6256,7 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-table3@0.6.3, cli-table3@~0.6.1: +cli-table3@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== @@ -5954,6 +6265,15 @@ cli-table3@0.6.3, cli-table3@~0.6.1: optionalDependencies: "@colors/colors" "1.5.0" +cli-table3@~0.6.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" + integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + cli-table@^0.3.11: version "0.3.11" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" @@ -6111,7 +6431,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colord@^2.9.1: +colord@^2.9.1, colord@^2.9.3: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== @@ -6371,17 +6691,17 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.35.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.0.tgz#c149a3d1ab51e743bc1da61e39cb51f461a41873" - integrity sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw== +core-js-compat@^3.37.1, core-js-compat@^3.38.0: + version "3.38.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.0.tgz#d93393b1aa346b6ee683377b0c31172ccfe607aa" + integrity sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A== dependencies: - browserslist "^4.22.2" + browserslist "^4.23.3" core-js-pure@^3.23.3: - version "3.35.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.35.0.tgz#4660033304a050215ae82e476bd2513a419fbb34" - integrity sha512-f+eRYmkou59uh7BPcyJ8MC76DiGhspj1KMxVIcF24tzP8NA9HVa1uC7BTW2tgx7E1QVCzDzsgp7kArrzhlz8Ew== + version "3.38.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.38.0.tgz#bc802cd152e33d5b0ec733b656c71cb847cac701" + integrity sha512-8balb/HAXo06aHP58mZMtXgD8vcnXz9tUDePgqBgJgKdmTlMt+jw3ujqniuBDQXMvTzxnMpxHFeuSM3g1jWQuQ== core-js@2.5.7, core-js@^1.0.0, core-js@^2.4.0, core-js@^3.19.2, core-js@^3.6.4: version "2.5.7" @@ -6428,7 +6748,17 @@ cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: import-fresh "^3.3.0" js-yaml "^4.1.0" parse-json "^5.2.0" - path-type "^4.0.0" + path-type "^4.0.0" + +cosmiconfig@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== + dependencies: + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" crc32-stream@^3.0.1: version "3.0.1" @@ -6506,6 +6836,11 @@ css-declaration-sorter@^6.3.1: resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== +css-functions-list@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.2.tgz#9a54c6dd8416ed25c1079cd88234e927526c1922" + integrity sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ== + css-has-pseudo@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" @@ -6614,6 +6949,14 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + css-vendor@^0.3.8: version "0.3.8" resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-0.3.8.tgz#6421cfd3034ce664fe7673972fd0119fc28941fa" @@ -6889,9 +7232,9 @@ date-fns@^2.30.0: "@babel/runtime" "^7.21.0" dayjs@^1.10.4: - version "1.11.10" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + version "1.11.12" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.12.tgz#5245226cc7f40a15bf52e0b99fd2a04669ccac1d" + integrity sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg== debounce@^1.1.0: version "1.2.1" @@ -6905,10 +7248,10 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== dependencies: ms "2.1.2" @@ -6937,11 +7280,16 @@ decimal.js@^10.2.1: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: +decode-uri-component@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== +decode-uri-component@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz#2ac4859663c704be22bf7db760a1494a49ab2cc5" + integrity sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ== + decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" @@ -7106,9 +7454,9 @@ detect-port-alt@^1.1.6: debug "^2.6.0" detect-port@^1.3.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" - integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + version "1.6.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.6.1.tgz#45e4073997c5f292b957cb678fb0bb8ed4250a67" + integrity sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q== dependencies: address "^1.0.1" debug "4" @@ -7474,10 +7822,10 @@ ejs@^3.1.5, ejs@^3.1.6: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.820: - version "1.5.3" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.3.tgz#032bbb8661c0449656fd896e805c8f7150229a0f" - integrity sha512-QNdYSS5i8D9axWp/6XIezRObRHqaav/ur9z1VzCDUCH1XIFOr9WQk5xmgunhsTpjjgDy3oLxO/WMOVZlpUQrlA== +electron-to-chromium@^1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz#03bfdf422bdd2c05ee2657efedde21264a1a566b" + integrity sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA== emittery@^0.10.2: version "0.10.2" @@ -7524,6 +7872,11 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + encoding@^0.1.11, encoding@^0.1.12: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -7588,40 +7941,45 @@ entities@~2.1.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== +env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + enzyme-adapter-react-16@^1.15.6: - version "1.15.7" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.7.tgz#a737e6d8e2c147e9da5acf957755be7634f76201" - integrity sha512-LtjKgvlTc/H7adyQcj+aq0P0H07LDL480WQl1gU512IUyaDo/sbOaNDdZsJXYW2XaoPqrLLE9KbZS+X2z6BASw== + version "1.15.8" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.8.tgz#1aecb5daadaae33d32c5b8b78566d7cf45dc49d8" + integrity sha512-uYGC31eGZBp5nGsr4nKhZKvxGQjyHGjS06BJsUlWgE29/hvnpgCsT1BJvnnyny7N3GIIVyxZ4O9GChr6hy2WQA== dependencies: - enzyme-adapter-utils "^1.14.1" - enzyme-shallow-equal "^1.0.5" - has "^1.0.3" - object.assign "^4.1.4" - object.values "^1.1.5" + enzyme-adapter-utils "^1.14.2" + enzyme-shallow-equal "^1.0.7" + hasown "^2.0.0" + object.assign "^4.1.5" + object.values "^1.1.7" prop-types "^15.8.1" react-is "^16.13.1" react-test-renderer "^16.0.0-0" - semver "^5.7.0" + semver "^5.7.2" -enzyme-adapter-utils@^1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.1.tgz#f30db15dafc22e0ccd44f5acc8d93be29218cdcf" - integrity sha512-JZgMPF1QOI7IzBj24EZoDpaeG/p8Os7WeBZWTJydpsH7JRStc7jYbHE4CmNQaLqazaGFyLM8ALWA3IIZvxW3PQ== +enzyme-adapter-utils@^1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.2.tgz#1d012e6261accbe7d406db098bb4d8dfdce8c003" + integrity sha512-1ZC++RlsYRaiOWE5NRaF5OgsMt7F5rn/VuaJIgc7eW/fmgg8eS1/Ut7EugSPPi7VMdWMLcymRnMF+mJUJ4B8KA== dependencies: airbnb-prop-types "^2.16.0" - function.prototype.name "^1.1.5" - has "^1.0.3" - object.assign "^4.1.4" - object.fromentries "^2.0.5" + function.prototype.name "^1.1.6" + hasown "^2.0.0" + object.assign "^4.1.5" + object.fromentries "^2.0.7" prop-types "^15.8.1" - semver "^5.7.1" + semver "^6.3.1" -enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz#5528a897a6ad2bdc417c7221a7db682cd01711ba" - integrity sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg== +enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz#4e3aa678022387a68e6c47aff200587851885b5e" + integrity sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg== dependencies: - has "^1.0.3" + hasown "^2.0.0" object-is "^1.1.5" enzyme@^3.11.0: @@ -7676,7 +8034,7 @@ error-stack-parser@^2.0.6, error-stack-parser@^2.1.4: dependencies: stackframe "^1.3.4" -es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2, es-abstract@^1.23.3: +es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== @@ -7781,9 +8139,9 @@ es-iterator-helpers@^1.0.19: safe-array-concat "^1.1.2" es-module-lexer@^1.2.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" - integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + version "1.5.4" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== es-object-atoms@^1.0.0: version "1.0.0" @@ -7792,7 +8150,7 @@ es-object-atoms@^1.0.0: dependencies: es-errors "^1.3.0" -es-set-tostringtag@^2.0.3: +es-set-tostringtag@^2.0.1, es-set-tostringtag@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== @@ -7817,133 +8175,6 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild-android-64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" - integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== - -esbuild-android-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" - integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== - -esbuild-darwin-64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" - integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== - -esbuild-darwin-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" - integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== - -esbuild-freebsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" - integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== - -esbuild-freebsd-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" - integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== - -esbuild-linux-32@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" - integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== - -esbuild-linux-64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" - integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== - -esbuild-linux-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" - integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== - -esbuild-linux-arm@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" - integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== - -esbuild-linux-mips64le@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" - integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== - -esbuild-linux-ppc64le@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" - integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== - -esbuild-linux-riscv64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" - integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== - -esbuild-linux-s390x@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" - integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== - -esbuild-netbsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" - integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== - -esbuild-openbsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" - integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== - -esbuild-sunos-64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" - integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== - -esbuild-windows-32@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" - integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== - -esbuild-windows-64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" - integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== - -esbuild-windows-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" - integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== - -esbuild@^0.14.23: - version "0.14.54" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" - integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== - optionalDependencies: - "@esbuild/linux-loong64" "0.14.54" - esbuild-android-64 "0.14.54" - esbuild-android-arm64 "0.14.54" - esbuild-darwin-64 "0.14.54" - esbuild-darwin-arm64 "0.14.54" - esbuild-freebsd-64 "0.14.54" - esbuild-freebsd-arm64 "0.14.54" - esbuild-linux-32 "0.14.54" - esbuild-linux-64 "0.14.54" - esbuild-linux-arm "0.14.54" - esbuild-linux-arm64 "0.14.54" - esbuild-linux-mips64le "0.14.54" - esbuild-linux-ppc64le "0.14.54" - esbuild-linux-riscv64 "0.14.54" - esbuild-linux-s390x "0.14.54" - esbuild-netbsd-64 "0.14.54" - esbuild-openbsd-64 "0.14.54" - esbuild-sunos-64 "0.14.54" - esbuild-windows-32 "0.14.54" - esbuild-windows-64 "0.14.54" - esbuild-windows-arm64 "0.14.54" - esbuild@^0.17.18: version "0.17.19" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" @@ -7972,6 +8203,35 @@ esbuild@^0.17.18: "@esbuild/win32-ia32" "0.17.19" "@esbuild/win32-x64" "0.17.19" +esbuild@^0.19.4: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" @@ -8111,9 +8371,9 @@ eslint-import-resolver-webpack@^0.13.2: semver "^5.7.2" eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== dependencies: debug "^3.2.7" @@ -8198,7 +8458,7 @@ eslint-plugin-jsx-a11y@^6.5.1: safe-regex-test "^1.0.3" string.prototype.includes "^2.0.0" -eslint-plugin-react-hooks@4.6.2, eslint-plugin-react-hooks@^4.3.0: +eslint-plugin-react-hooks@4.6.2, eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== @@ -8560,36 +8820,36 @@ expect@^27.5.1: jest-message-util "^27.5.1" express@^4.17.3: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + version "4.21.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915" + integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.2.0" + finalhandler "1.3.1" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.10" proxy-addr "~2.0.7" - qs "6.11.0" + qs "6.13.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.2" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -8679,7 +8939,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -8700,10 +8960,20 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-uri@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + +fastest-levenshtein@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + fastq@^1.6.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.16.0.tgz#83b9a9375692db77a822df081edb6a9cf6839320" - integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" @@ -8774,6 +9044,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-entry-cache@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-9.0.0.tgz#4478e7ceaa5191fa9676a2daa7030211c31b1e7e" + integrity sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw== + dependencies: + flat-cache "^5.0.0" + file-loader@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" @@ -8820,17 +9097,17 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== +filter-obj@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-5.1.0.tgz#5bd89676000a713d7db2e197f660274428e524ed" + integrity sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng== final-form@^4.20.2: version "4.20.10" @@ -8839,25 +9116,25 @@ final-form@^4.20.2: dependencies: "@babel/runtime" "^7.10.0" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== dependencies: debug "2.6.9" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" on-finished "2.4.1" parseurl "~1.3.3" statuses "2.0.1" unpipe "~1.0.0" -find-babel-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-2.0.0.tgz#a8216f825415a839d0f23f4d18338a1cc966f701" - integrity sha512-dOKT7jvF3hGzlW60Gc3ONox/0rRZ/tz7WCil0bqA1In/3I8f1BctpXahRnEKDySZqci7u+dqq93sZST9fOJpFw== +find-babel-config@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-2.1.1.tgz#93703fc8e068db5e4c57592900c5715dd04b7e5b" + integrity sha512-5Ji+EAysHGe1OipH7GN4qDjok5Z1uw5KAwDCbicU/4wyTZY7CqOCzcWbG7J5ad9mazq67k89fXlbc1MuIfl9uA== dependencies: - json5 "^2.1.1" + json5 "^2.2.3" path-exists "^4.0.0" find-cache-dir@^2.0.0: @@ -8930,10 +9207,18 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== +flat-cache@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-5.0.0.tgz#26c4da7b0f288b408bb2b506b2cb66c240ddf062" + integrity sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ== + dependencies: + flatted "^3.3.1" + keyv "^4.5.4" + +flatted@^3.2.9, flatted@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== flow-bin@^0.132.0: version "0.132.0" @@ -8941,9 +9226,9 @@ flow-bin@^0.132.0: integrity sha512-S1g/vnAyNaLUdajmuUHCMl30qqye12gS6mr4LVyswf1k+JDF4efs6SfKmptuvnpitF3LGCVf0TIffChP8ljwnw== flow-parser@0.*: - version "0.226.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.226.0.tgz#d552ab6762342e0e2b112fc937dd70b59e5e5d05" - integrity sha512-YlH+Y/P/5s0S7Vg14RwXlJMF/JsGfkG7gcKB/zljyoqaPNX9YVsGzx+g6MLTbhZaWbPhs4347aTpmSb9GgiPtw== + version "0.243.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.243.0.tgz#4a55047035a4fa0fa7215348b9d7b4ea276abb04" + integrity sha512-HCDBfH+kZcY5etWYeAqatjW78gkIryzb9XixRsA8lGI1uyYc7aCpElkkO4H+KIpoyQMiY0VAZPI4cyac3wQe8w== flush-write-stream@^1.0.2: version "1.1.1" @@ -8953,7 +9238,7 @@ flush-write-stream@^1.0.2: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.14.7, follow-redirects@^1.15.4: +follow-redirects@^1.0.0, follow-redirects@^1.14.7, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -8978,9 +9263,9 @@ for-own@^0.1.4: for-in "^1.0.1" foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== dependencies: cross-spawn "^7.0.0" signal-exit "^4.0.1" @@ -9107,9 +9392,9 @@ fs-mkdirp-stream@^1.0.0: through2 "^2.0.3" fs-monkey@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" - integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== + version "1.0.6" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" + integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== fs.realpath@^1.0.0: version "1.0.0" @@ -9126,7 +9411,7 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.2, function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: +function.prototype.name@^1.1.2, function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== @@ -9179,7 +9464,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -9354,16 +9639,15 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== +glob@^9.3.3: + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== dependencies: fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" glob@~7.1.1: version "7.1.7" @@ -9425,11 +9709,12 @@ globals@^9.18.0: integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== dependencies: - define-properties "^1.1.3" + define-properties "^1.2.1" + gopd "^1.0.1" globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: version "11.1.0" @@ -9443,6 +9728,11 @@ globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +globjoin@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" + integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== + globule@^1.0.0: version "1.3.4" resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.4.tgz#7c11c43056055a75a6e68294453c17f2796170fb" @@ -9725,9 +10015,9 @@ html-encoding-sniffer@^2.0.1: whatwg-encoding "^1.0.5" html-entities@^2.1.0, html-entities@^2.3.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" - integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== + version "2.5.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" + integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== html-escaper@^2.0.0: version "2.0.2" @@ -9747,6 +10037,11 @@ html-minifier-terser@^6.0.2: relateurl "^0.2.7" terser "^5.10.0" +html-tags@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" + integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== + html-webpack-plugin@^5.5.0: version "5.6.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" @@ -9836,9 +10131,9 @@ http-proxy-agent@^4.0.1: debug "4" http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz#915f236d92ae98ef48278a95dedf17e991936ec6" + integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -9902,9 +10197,9 @@ husky@^8.0.1: integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + version "1.1.0" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz#1797bf50369588b47b72ca6d5e65374607cf4436" + integrity sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw== i18next-conv@^9: version "9.2.1" @@ -9997,10 +10292,10 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.8, ignore@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== +ignore@^5.1.8, ignore@^5.2.0, ignore@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== immer@^9.0.7: version "9.0.21" @@ -10031,9 +10326,9 @@ import-lazy@^2.1.0: integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -10142,9 +10437,9 @@ ipaddr.js@1.9.1: integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== is-absolute@^1.0.0: version "1.0.0" @@ -10236,11 +10531,11 @@ is-ci@^3.0.0: ci-info "^3.2.0" is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" + integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== dependencies: - hasown "^2.0.0" + hasown "^2.0.2" is-data-descriptor@^1.0.1: version "1.0.1" @@ -10394,10 +10689,10 @@ is-installed-globally@^0.4.0, is-installed-globally@~0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" -is-map@^2.0.1, is-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== +is-map@^2.0.2, is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== is-module@^1.0.0: version "1.0.0" @@ -10489,6 +10784,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -10529,10 +10829,10 @@ is-root@^2.1.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-set@^2.0.1, is-set@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== +is-set@^2.0.2, is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: version "1.0.3" @@ -10611,10 +10911,10 @@ is-valid-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" integrity sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA== -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== is-weakref@^1.0.2: version "1.0.2" @@ -10623,13 +10923,13 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-weakset@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" - integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== +is-weakset@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" + integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" + call-bind "^1.0.7" + get-intrinsic "^1.2.4" is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" @@ -10746,9 +11046,9 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -10774,9 +11074,9 @@ jackspeak@^3.1.2: "@pkgjs/parseargs" "^0.11.0" jake@^10.8.5: - version "10.8.7" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" - integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== dependencies: async "^3.2.3" chalk "^4.0.2" @@ -11271,9 +11571,9 @@ jiti@^1.20.0, jiti@^1.21.0: integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== joi@^17.11.0: - version "17.12.2" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.2.tgz#283a664dabb80c7e52943c557aab82faea09f521" - integrity sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw== + version "17.13.3" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" + integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== dependencies: "@hapi/hoek" "^9.3.0" "@hapi/topo" "^5.1.0" @@ -11490,7 +11790,7 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.1, json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: +json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -11756,7 +12056,7 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" -keyv@^4.5.3: +keyv@^4.5.3, keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -11799,6 +12099,11 @@ klona@^2.0.4, klona@^2.0.5: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== +known-css-properties@^0.34.0: + version "0.34.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.34.0.tgz#ccd7e9f4388302231b3f174a8b1d5b1f7b576cea" + integrity sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ== + knuth-shuffle-seeded@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz#01f1b65733aa7540ee08d8b0174164d22081e4e1" @@ -11807,9 +12112,9 @@ knuth-shuffle-seeded@^1.0.6: seed-random "~2.2.0" language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + version "0.3.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== language-tags@^1.0.9: version "1.0.9" @@ -11826,9 +12131,9 @@ latest-version@^5.0.0: package-json "^6.3.0" launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + version "2.8.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.8.1.tgz#3bda72af213ec9b46b170e39661916ec66c2f463" + integrity sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA== dependencies: picocolors "^1.0.0" shell-quote "^1.8.1" @@ -11961,9 +12266,9 @@ loader-utils@^2.0.0, loader-utils@^2.0.4: json5 "^2.1.2" loader-utils@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + version "3.3.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" + integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== locate-path@^2.0.0: version "2.0.0" @@ -12312,12 +12617,12 @@ marked@^4.0.10: integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== match-sorter@^6.0.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.1.tgz#98cc37fda756093424ddf3cbc62bfe9c75b92bda" - integrity sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw== + version "6.3.4" + resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.4.tgz#afa779d8e922c81971fbcb4781c7003ace781be7" + integrity sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg== dependencies: - "@babel/runtime" "^7.12.5" - remove-accents "0.4.2" + "@babel/runtime" "^7.23.8" + remove-accents "0.5.0" material-ui@^0.20.0: version "0.20.2" @@ -12341,11 +12646,21 @@ math-random@^1.0.1: resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== +mathml-tag-names@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" + integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + mdn-data@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" @@ -12373,6 +12688,11 @@ memory-fs@^0.2.0: resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" integrity sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== +meow@^13.2.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f" + integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA== + meow@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -12390,10 +12710,10 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: version "2.0.0" @@ -12448,12 +12768,12 @@ micromatch@^3.1.10: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" microseconds@0.2.0: @@ -12461,11 +12781,16 @@ microseconds@0.2.0: resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39" integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== +"mime-db@>= 1.43.0 < 2": + version "1.53.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" + integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== + mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" @@ -12520,6 +12845,13 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + minimatch@^9.0.4: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" @@ -12556,6 +12888,11 @@ minipass@^2.6.0, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" @@ -12759,10 +13096,10 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" @@ -12852,9 +13189,9 @@ nth-check@^2.0.1: boolbase "^1.0.0" nwsapi@^2.2.0: - version "2.2.7" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" - integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== + version "2.2.12" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" + integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== oauth-sign@~0.9.0: version "0.9.0" @@ -12881,17 +13218,17 @@ object-hash@^3.0.0: integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== object-inspect@^1.13.1, object-inspect@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + call-bind "^1.0.7" + define-properties "^1.2.1" object-keys@^1.1.1: version "1.1.1" @@ -12924,7 +13261,7 @@ object.entries@^1.1.1, object.entries@^1.1.2, object.entries@^1.1.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -object.fromentries@^2.0.5, object.fromentries@^2.0.7, object.fromentries@^2.0.8: +object.fromentries@^2.0.7, object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -12935,25 +13272,26 @@ object.fromentries@^2.0.5, object.fromentries@^2.0.7, object.fromentries@^2.0.8: es-object-atoms "^1.0.0" object.getownpropertydescriptors@^2.1.0: - version "2.1.7" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" - integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== + version "2.1.8" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz#2f1fe0606ec1a7658154ccd4f728504f69667923" + integrity sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A== dependencies: array.prototype.reduce "^1.0.6" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - safe-array-concat "^1.0.0" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + gopd "^1.0.1" + safe-array-concat "^1.1.2" object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" object.omit@^2.0.0: version "2.0.1" @@ -12970,7 +13308,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.5, object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0: +object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== @@ -13323,7 +13661,7 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.1: +path-scurry@^1.11.1, path-scurry@^1.6.1: version "1.11.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== @@ -13331,10 +13669,10 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== path-to-regexp@^1.7.0: version "1.8.0" @@ -13975,6 +14313,16 @@ postcss-replace-overflow-wrap@^4.0.0: resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== +postcss-resolve-nested-selector@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.5.tgz#799bce8b8cfc46958020dc1335a146abf951cbf6" + integrity sha512-tum2m18S22ZSNjXatMG0FSk5ZL83pTttymeJx5Gzxg7RU0s1jNDU9rXltro4osQrukjyNormcb07IEjqEyPNaA== + +postcss-safe-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#6273d4e5149e286db5a45bc6cf6eafcad464014a" + integrity sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg== + postcss-selector-not@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" @@ -13990,6 +14338,11 @@ postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-select cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-styled-jsx@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-styled-jsx/-/postcss-styled-jsx-1.0.1.tgz#07c17ca3bc574a06627103bb5dd475006c2d0d9e" + integrity sha512-508Vg2A0pHQstRxz8eoNYiT+RiCZdgE4EqN0x8oiPIZ/a6pp5q2NYefL39RRG8ORlxDehLHU3u/EOpux0kuATQ== + postcss-svgo@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" @@ -13998,6 +14351,11 @@ postcss-svgo@^5.1.0: postcss-value-parser "^4.2.0" svgo "^2.7.0" +postcss-syntax@^0.36.2: + version "0.36.2" + resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" + integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== + postcss-unique-selectors@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" @@ -14018,10 +14376,10 @@ postcss@^7.0.35: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: - version "8.4.40" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.40.tgz#eb81f2a4dd7668ed869a6db25999e02e9ad909d8" - integrity sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q== +postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.4, postcss@^8.4.40: + version "8.4.41" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" + integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== dependencies: nanoid "^3.3.7" picocolors "^1.0.1" @@ -14122,13 +14480,16 @@ prompts@^2.0.1, prompts@^2.4.2: sisteransi "^1.0.5" prop-types-exact@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" - integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== + version "1.2.5" + resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.5.tgz#f275e7dc0d629c2f7414782e8189b3e2d2e9e158" + integrity sha512-wHDhA5TSSvU07gdzsdeT/FZg6zay94K4Y7swSK4YsRG3moWB0Qsp9g1Y5BBausP1HF8K4UeVe2Xt7ZFJByKp6A== dependencies: - has "^1.0.3" - object.assign "^4.1.0" - reflect.ownkeys "^0.2.0" + call-bind "^1.0.7" + es-errors "^1.3.0" + hasown "^2.0.2" + isarray "^2.0.5" + object.assign "^4.1.5" + reflect.ownkeys "^1.1.4" prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" @@ -14207,12 +14568,12 @@ q@^1.1.2, q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: - side-channel "^1.0.4" + side-channel "^1.0.6" qs@~6.10.3: version "6.10.5" @@ -14226,15 +14587,14 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -query-string@^7.1.1: - version "7.1.3" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" - integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== +query-string@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-9.1.1.tgz#dbfebb4196aeb2919915f2b2b81b91b965cf03a0" + integrity sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg== dependencies: - decode-uri-component "^0.2.2" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" + decode-uri-component "^0.4.1" + filter-obj "^5.1.0" + split-on-first "^3.0.0" querystringify@^2.1.1: version "2.2.0" @@ -14899,21 +15259,28 @@ reflect-metadata@0.1.13: integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== reflect.getprototypeof@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" - integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + version "1.0.6" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" + integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.1" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +reflect.ownkeys@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-1.1.4.tgz#3cf21da448f2aff8aba63ca601f65c99482e692c" + integrity sha512-iUNmtLgzudssL+qnTUosCmnq3eczlrVd1wXrgx/GhiI/8FvwrTYWtCJ9PNvWIRX+4ftupj2WUfB5mu5s9t6LnA== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + es-set-tostringtag "^2.0.1" globalthis "^1.0.3" - which-builtin-type "^1.1.3" - -reflect.ownkeys@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - integrity sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg== regenerate-unicode-properties@^10.1.0: version "10.1.1" @@ -15034,10 +15401,10 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== -remove-accents@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" - integrity sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA== +remove-accents@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.5.0.tgz#77991f37ba212afba162e375b627631315bed687" + integrity sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A== remove-accents@^0.4.2: version "0.4.4" @@ -15243,7 +15610,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.22.8: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -15292,9 +15659,9 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + version "1.4.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" @@ -15321,9 +15688,9 @@ rollup-plugin-terser@^7.0.0: terser "^5.0.0" rollup@^2.43.1: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + version "2.79.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" + integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== optionalDependencies: fsevents "~2.3.2" @@ -15368,7 +15735,7 @@ rxjs@^7.0.0, rxjs@^7.5.1, rxjs@^7.5.5, rxjs@^7.8.1: dependencies: tslib "^2.1.0" -safe-array-concat@^1.0.0, safe-array-concat@^1.1.2: +safe-array-concat@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== @@ -15509,7 +15876,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1, semver@^5.7.2: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.6.0, semver@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -15538,10 +15905,10 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semve resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" depd "2.0.0" @@ -15584,15 +15951,15 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== dependencies: - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.18.0" + send "0.19.0" set-blocking@^2.0.0: version "2.0.0" @@ -15898,9 +16265,9 @@ spdx-correct@^3.0.0: spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0: version "3.0.1" @@ -15911,9 +16278,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.16" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" - integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== + version "3.0.18" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" + integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== spdy-transport@^3.0.0: version "3.0.0" @@ -15938,10 +16305,10 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== +split-on-first@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-3.0.0.tgz#f04959c9ea8101b9b0bbf35a61b9ebea784a23e7" + integrity sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -16027,14 +16394,9 @@ stop-iteration-iterator@^1.0.0: internal-slot "^1.0.4" stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" + integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== string-argv@^0.3.1: version "0.3.2" @@ -16231,7 +16593,7 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^7.0.1: +strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== @@ -16288,9 +16650,9 @@ strip-json-comments@~2.0.1: integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== style-loader@^3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" - integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== + version "3.3.4" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" + integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== styled-jsx@^4, styled-jsx@^4.0.1: version "4.0.1" @@ -16314,6 +16676,56 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" +stylelint-use-logical@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/stylelint-use-logical/-/stylelint-use-logical-2.1.2.tgz#60296915cc27aa1292fbff9a29391c9a1d877563" + integrity sha512-4ffvPNk/swH4KS3izExWuzQOuzLmi0gb0uOhvxWJ20vDA5W5xKCjcHHtLoAj1kKvTIX6eGIN5xGtaVin9PD0wg== + +stylelint@^16.3.1: + version "16.8.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.8.1.tgz#7d4b2d7922771dd0514446a66f04e954f1dfa444" + integrity sha512-O8aDyfdODSDNz/B3gW2HQ+8kv8pfhSu7ZR7xskQ93+vI6FhKKGUJMQ03Ydu+w3OvXXE0/u4hWU4hCPNOyld+OA== + dependencies: + "@csstools/css-parser-algorithms" "^2.7.1" + "@csstools/css-tokenizer" "^2.4.1" + "@csstools/media-query-list-parser" "^2.1.13" + "@csstools/selector-specificity" "^3.1.1" + "@dual-bundle/import-meta-resolve" "^4.1.0" + balanced-match "^2.0.0" + colord "^2.9.3" + cosmiconfig "^9.0.0" + css-functions-list "^3.2.2" + css-tree "^2.3.1" + debug "^4.3.6" + fast-glob "^3.3.2" + fastest-levenshtein "^1.0.16" + file-entry-cache "^9.0.0" + global-modules "^2.0.0" + globby "^11.1.0" + globjoin "^0.1.4" + html-tags "^3.3.1" + ignore "^5.3.1" + imurmurhash "^0.1.4" + is-plain-object "^5.0.0" + known-css-properties "^0.34.0" + mathml-tag-names "^2.1.3" + meow "^13.2.0" + micromatch "^4.0.7" + normalize-path "^3.0.0" + picocolors "^1.0.1" + postcss "^8.4.40" + postcss-resolve-nested-selector "^0.1.4" + postcss-safe-parser "^7.0.0" + postcss-selector-parser "^6.1.1" + postcss-value-parser "^4.2.0" + resolve-from "^5.0.0" + string-width "^4.2.3" + strip-ansi "^7.1.0" + supports-hyperlinks "^3.0.0" + svg-tags "^1.0.0" + table "^6.8.2" + write-file-atomic "^5.0.1" + stylis-rule-sheet@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" @@ -16371,6 +16783,14 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" +supports-hyperlinks@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#c711352a5c89070779b4dad54c05a2f14b15c94b" + integrity sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -16381,6 +16801,11 @@ svg-parser@^2.0.2: resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== + svgo@^1.2.2: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" @@ -16433,10 +16858,10 @@ synthetic-dom@^1.4.0: resolved "https://registry.yarnpkg.com/synthetic-dom/-/synthetic-dom-1.4.0.tgz#d988d7a4652458e2fc8706a875417af913e4dd34" integrity sha512-mHv51ZsmZ+ShT/4s5kg+MGUIhY7Ltq4v03xpN1c8T1Krb5pScsh/lzEjyhrVD0soVDbThbd2e+4dD9vnDG4rhg== -table@^6.0.9: - version "6.8.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== +table@^6.0.9, table@^6.8.2: + version "6.8.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -16450,9 +16875,9 @@ taffydb@2.6.2: integrity sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA== tailwindcss@^3.0.2: - version "3.4.7" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.7.tgz#6092f18767f5933f59375b9afe558e592fc77201" - integrity sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ== + version "3.4.9" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.9.tgz#9e04cddce1924d530df62af37d3520f0e2a9d85e" + integrity sha512-1SEOvRr6sSdV5IDf9iC+NU4dhwdqzF4zKKq3sAbasUWHEM6lsMhX+eNN5gkPx1BvLFEnZQEUFbXnGj8Qlp83Pg== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" @@ -16573,9 +16998,9 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.1, terser-webpack-plugi terser "^5.26.0" terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: - version "5.26.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.26.0.tgz#ee9f05d929f4189a9c28a0feb889d96d50126fe1" - integrity sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== + version "5.31.5" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.5.tgz#e48b7c65f32d2808e7dad803e4586a0bc3829b87" + integrity sha512-YPmas0L0rE1UyLL/llTWA0SiDOqIcAQYLeUj7cJYzXHlRTAnMSg9pPe4VJ5PlKvTrPQsdVFuiRiwyeNlYgwh2Q== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -16647,14 +17072,13 @@ throttleit@^1.0.0: integrity sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ== through2-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" - integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.1.0.tgz#4a1b45d2b76b3ac93ec137951e372c268efc1a4e" + integrity sha512-VhZsTsfrIJjyUi6GeecnwcOJlmoqgIdGFDjqnV5ape+F1DN8GejfPO66XyIhoinxmxGImiUTrq9RwpTN5yszGA== dependencies: - through2 "~2.0.0" - xtend "~4.0.0" + through2 "^4.0.2" -through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0: +through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -16670,7 +17094,7 @@ through2@^3.0.1: inherits "^2.0.4" readable-stream "2 || 3" -through2@^4.0.0: +through2@^4.0.0, through2@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== @@ -16693,9 +17117,9 @@ tiny-case@^1.0.3: integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== tiny-invariant@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" - integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== + version "1.3.3" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== tiny-warning@^1.0.0, tiny-warning@^1.0.2: version "1.0.3" @@ -16710,11 +17134,9 @@ tmp@^0.0.33: os-tmpdir "~1.0.2" tmp@^0.2.1, tmp@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== tmpl@1.0.5: version "1.0.5" @@ -16794,9 +17216,9 @@ toposort@^2.0.2: integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== tough-cookie@^4.0.0, tough-cookie@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== dependencies: psl "^1.1.33" punycode "^2.1.1" @@ -16871,9 +17293,9 @@ tslib@^1.8.1, tslib@^1.9.0: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== tslib@~2.1.0: version "2.1.0" @@ -17052,9 +17474,9 @@ typeson@^6.0.0, typeson@^6.1.0: integrity sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA== ua-parser-js@^0.7.18, ua-parser-js@^0.7.30: - version "0.7.37" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.37.tgz#e464e66dac2d33a7a1251d7d7a99d6157ec27832" - integrity sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA== + version "0.7.38" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.38.tgz#f497d8a4dc1fec6e854e5caa4b2f9913422ef054" + integrity sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -17062,9 +17484,9 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== uglify-js@^3.1.4: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + version "3.19.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.1.tgz#2d5df6a0872c43da43187968308d7741d44b8056" + integrity sha512-y/2wiW+ceTYR2TSSptAhfnEtpLaQ4Ups5zrjB2d3kuVxHj16j/QJwPl5PvuGy9uARb39J0+iKxcRPvtpsx4A4A== unbox-primitive@^1.0.2: version "1.0.2" @@ -17087,14 +17509,14 @@ underscore@1.12.1: integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== underscore@~1.13.2: - version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== + version "1.13.7" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.7.tgz#970e33963af9a7dda228f17ebe8399e5fbe63a10" + integrity sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" + integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== undici@^5.25.4: version "5.28.4" @@ -17693,12 +18115,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.4.tgz#592796260602fc3514a1b5ee7fa29319b72380c3" + integrity sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w== dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" is-async-function "^2.0.0" is-date-object "^1.0.5" is-finalizationregistry "^1.0.2" @@ -17707,25 +18129,25 @@ which-builtin-type@^1.1.3: is-weakref "^1.0.2" isarray "^2.0.5" which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" + which-collection "^1.0.2" + which-typed-array "^1.1.15" -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== +which-collection@^1.0.1, which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -18005,15 +18427,23 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-file-atomic@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + ws@^7.4.6: version "7.5.10" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.13.0: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" - integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== xdg-basedir@^3.0.0: version "3.0.0" @@ -18040,7 +18470,7 @@ xmlcreate@^2.0.4: resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== -xtend@~4.0.0, xtend@~4.0.1: +xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==