From 5dd59da4d8397890bd36addbd1c2399892b069a1 Mon Sep 17 00:00:00 2001 From: Shreeyash Shrestha Date: Wed, 11 Mar 2026 16:55:12 +0545 Subject: [PATCH 1/4] feat(surge-eru): update in eru surge page - add options to select contribution type in update ERU form - group list from ns contribution in readiness info modal - filter national societies in ERU Type card to only which holds the ERU --- app/src/utils/constants.ts | 4 + .../EruReadinessForm/EruInputItem/index.tsx | 109 ++++++++------ app/src/views/EruReadinessForm/schema.ts | 1 + .../EmergencyResponseUnitCard/i18n.json | 8 +- .../EmergencyResponseUnitCard/index.tsx | 134 +++++++++++------- .../EruReadinessList/index.tsx | 45 ++++++ .../NationalSocietyCard/i18n.json | 8 +- .../NationalSocietyCard/index.tsx | 101 ++++++++----- .../ReadinessIconList/i18n.json | 8 ++ .../ReadinessIconList/index.tsx | 36 +++++ .../EmergencyResponseUnitReadiness/index.tsx | 9 +- 11 files changed, 324 insertions(+), 139 deletions(-) create mode 100644 app/src/views/SurgeOverview/EmergencyResponseUnit/EmergencyResponseUnitReadiness/EruReadinessList/index.tsx create mode 100644 app/src/views/SurgeOverview/EmergencyResponseUnit/EmergencyResponseUnitReadiness/ReadinessIconList/i18n.json create mode 100644 app/src/views/SurgeOverview/EmergencyResponseUnit/EmergencyResponseUnitReadiness/ReadinessIconList/index.tsx diff --git a/app/src/utils/constants.ts b/app/src/utils/constants.ts index e35e2e9d77..4848debfa0 100644 --- a/app/src/utils/constants.ts +++ b/app/src/utils/constants.ts @@ -176,6 +176,10 @@ export const SURGE_ALERT_STATUS_OPEN = 0 satisfies SurgeAlertTypeEnum; export const SURGE_ALERT_STATUS_STOOD_DOWN = 1 satisfies SurgeAlertTypeEnum; export const SURGE_ALERT_STATUS_CLOSED = 2 satisfies SurgeAlertTypeEnum; +type TypeOfNsContributionEnum = components<'read'>['schemas']['DeploymentsEruReadinessNsContributionEnumKey']; +export const NS_CONTRIBUTION_HOLDS_ERU = 1 satisfies TypeOfNsContributionEnum; +export const NS_CONTRIBUTION_SUPPORTS_ERU = 2 satisfies TypeOfNsContributionEnum; + export const NUM_X_AXIS_TICKS_MIN = 3; export const NUM_X_AXIS_TICKS_MAX = 12; diff --git a/app/src/views/EruReadinessForm/EruInputItem/index.tsx b/app/src/views/EruReadinessForm/EruInputItem/index.tsx index 6c8cbdfbba..4a95f95ba7 100644 --- a/app/src/views/EruReadinessForm/EruInputItem/index.tsx +++ b/app/src/views/EruReadinessForm/EruInputItem/index.tsx @@ -1,10 +1,12 @@ import { useMemo } from 'react'; import { InputSection, + ListView, RadioInput, TextArea, } from '@ifrc-go/ui'; import { useTranslation } from '@ifrc-go/ui/hooks'; +import { stringValueSelector } from '@ifrc-go/ui/utils'; import { randomString } from '@togglecorp/fujs'; import { type ArrayError, @@ -19,18 +21,17 @@ import { type GoApiResponse } from '#utils/restRequest'; import { type PartialEruItem } from '../schema'; import i18n from './i18n.json'; -import styles from './styles.module.css'; type GlobalEnumsResponse = GoApiResponse<'/api/v2/global-enums/'>; type ReadinessOption = NonNullable[number]; +type ContributionOption = NonNullable[number]; function readinessKeySelector(option: ReadinessOption) { return option.key; } - -function readinessLabelSelector(option: ReadinessOption) { - return option.value; +function contributionKeySelector(option: ContributionOption) { + return option.key; } const defaultCollectionValue: PartialEruItem = { @@ -57,6 +58,7 @@ function EruInputItem(props: Props) { const { deployments_eru_type: eruTypeOptions, deployments_eru_readiness_status, + deployments_eru_readiness_ns_contribution: nsContributionOptions, } = useGlobalEnums(); const onFieldChange = useFormObject( @@ -76,50 +78,65 @@ function EruInputItem(props: Props) { return ( - - - -