From 48949ca63cd154c7b91fd1761e6f0d8cc92c2f61 Mon Sep 17 00:00:00 2001 From: Meis Date: Thu, 8 Feb 2024 12:46:17 -0700 Subject: [PATCH 01/54] fix: [CrumbTrail] Allow conditional entries --- src/components/CrumbTrail.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/CrumbTrail.tsx b/src/components/CrumbTrail.tsx index 0e4a2ce86..da8f0497f 100644 --- a/src/components/CrumbTrail.tsx +++ b/src/components/CrumbTrail.tsx @@ -26,6 +26,8 @@ function CrumbTrail({ children }: CrumbTrailProperties): JSX.Element | null { items.length > 0 ? 'ml-[10px]' : null, ); + if (!child) return; + items.push( / From 240aff4b8896bf1c8d9290783591a818486e50a8 Mon Sep 17 00:00:00 2001 From: Meis Date: Thu, 8 Feb 2024 12:58:52 -0700 Subject: [PATCH 02/54] fix: [UpdateInstitutionProfile] - [Add] Fetch Institution data - [Add] Breadcrumb to return to View page --- .../Filing/UpdateFinancialProfile/index.tsx | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/pages/Filing/UpdateFinancialProfile/index.tsx b/src/pages/Filing/UpdateFinancialProfile/index.tsx index 09b44603a..2a39104da 100644 --- a/src/pages/Filing/UpdateFinancialProfile/index.tsx +++ b/src/pages/Filing/UpdateFinancialProfile/index.tsx @@ -1,20 +1,29 @@ import { zodResolver } from '@hookform/resolvers/zod'; -import { submitUpdateFinancialProfile } from 'api/requests'; +import { + submitUpdateFinancialProfile, + fetchInstitutionDetails, +} from 'api/requests'; +import { useQuery } from '@tanstack/react-query'; import useSblAuth from 'api/useSblAuth'; +import CrumbTrail from 'components/CrumbTrail'; import FieldGroup from 'components/FieldGroup'; import FormButtonGroup from 'components/FormButtonGroup'; import FormErrorHeader from 'components/FormErrorHeader'; import FormHeaderWrapper from 'components/FormHeaderWrapper'; import FormWrapper from 'components/FormWrapper'; import InputEntry from 'components/InputEntry'; +import { LoadingContent } from 'components/Loading'; import SectionIntro from 'components/SectionIntro'; import { Button, Checkbox, + Link, List, ListItem, TextIntroduction, } from 'design-system-react'; +import type { JSXElement } from 'design-system-react/dist/types/jsxElement'; +import { useError500 } from 'pages/Error/Error500'; import type { CheckboxOption, UFPSchema, @@ -27,6 +36,7 @@ import { import { scrollToElement } from 'pages/ProfileForm/ProfileFormUtils'; import { Controller as FormController, useForm } from 'react-hook-form'; +import { useParams } from 'react-router-dom'; // TODO: Decide on properties to inherit // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -41,8 +51,15 @@ const defaultValues: UFPSchema = { // TODO: Decide on properties to use // eslint-disable-next-line @typescript-eslint/no-unused-vars -function UpdateFinancialProfile(properties: Properties): JSX.Element { +function UpdateFinancialProfile(properties: Properties): JSXElement { const auth = useSblAuth(); + const { lei } = useParams(); + const redirect500 = useError500(); + + const { isLoading, isError, data } = useQuery( + [`institution-details-${lei}`], + async () => fetchInstitutionDetails(auth, lei), + ); const { register, @@ -58,6 +75,14 @@ function UpdateFinancialProfile(properties: Properties): JSX.Element { // Used for error scrolling const formErrorHeaderId = 'UFPFormErrorHeader'; + if (isLoading) return ; + if (isError) + return redirect500({ + message: 'Unable to fetch institution details.', + }); + + // TODO: use data + console.log('Institution data:', data); // NOTE: This function is used for submitting the multipart/formData const onSubmitButtonAction = async (): Promise => { @@ -94,6 +119,16 @@ function UpdateFinancialProfile(properties: Properties): JSX.Element {
+ + + Platform home + + {lei ? ( + + View Institution + + ) : null} + Date: Thu, 8 Feb 2024 13:14:53 -0700 Subject: [PATCH 03/54] fix: [UpdateInstitutionProfile] - [Add] Review FI details --- src/pages/Filing/UpdateFinancialProfile/index.tsx | 13 +++++-------- .../FinancialInstitutionDetails.tsx | 12 ++++++++++-- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/pages/Filing/UpdateFinancialProfile/index.tsx b/src/pages/Filing/UpdateFinancialProfile/index.tsx index 2a39104da..eeb44cff2 100644 --- a/src/pages/Filing/UpdateFinancialProfile/index.tsx +++ b/src/pages/Filing/UpdateFinancialProfile/index.tsx @@ -37,6 +37,7 @@ import { scrollToElement } from 'pages/ProfileForm/ProfileFormUtils'; import { Controller as FormController, useForm } from 'react-hook-form'; import { useParams } from 'react-router-dom'; +import FinancialInstitutionDetails from '../ViewInstitutionProfile/FinancialInstitutionDetails'; // TODO: Decide on properties to inherit // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -81,9 +82,6 @@ function UpdateFinancialProfile(properties: Properties): JSXElement { message: 'Unable to fetch institution details.', }); - // TODO: use data - console.log('Institution data:', data); - // NOTE: This function is used for submitting the multipart/formData const onSubmitButtonAction = async (): Promise => { const passesValidation = await trigger(); @@ -141,11 +139,10 @@ function UpdateFinancialProfile(properties: Properties): JSXElement { /> - - To update the email domains for your financial institution, contact - our support staff. To update any other data in this section, visit - GLEIF. - +
diff --git a/src/pages/Filing/ViewInstitutionProfile/FinancialInstitutionDetails.tsx b/src/pages/Filing/ViewInstitutionProfile/FinancialInstitutionDetails.tsx index ffc566bdd..777d3f44e 100644 --- a/src/pages/Filing/ViewInstitutionProfile/FinancialInstitutionDetails.tsx +++ b/src/pages/Filing/ViewInstitutionProfile/FinancialInstitutionDetails.tsx @@ -20,8 +20,10 @@ const formatAddressStreet = (street: string): ReactElement | undefined => { export function FinancialInstitutionDetails({ data, + heading, }: { data: InstitutionDetailsApiType; + heading?: ReactNode; }): JSX.Element { const domains = data.domains ?? []; const domainString = domains @@ -31,7 +33,7 @@ export function FinancialInstitutionDetails({ return ( <> - Financial institution details + {heading} To make a change to the email domains for your financial institution,{' '} @@ -57,7 +59,9 @@ export function FinancialInstitutionDetails({ {data.is_active?.toString()} + + {data.is_active ? 'Active' : 'Inactive'} + } /> @@ -66,4 +70,8 @@ export function FinancialInstitutionDetails({ ); } +FinancialInstitutionDetails.defaultProps = { + heading: 'Financial institution details', +}; + export default FinancialInstitutionDetails; From d0a4a628279abd7cff0c649fec6889dea40122aa Mon Sep 17 00:00:00 2001 From: Meis Date: Thu, 22 Feb 2024 12:49:41 -0700 Subject: [PATCH 04/54] feat: [UpdateFinancialProfile] Display FinancialInstitutionDetails --- .../Filing/UpdateFinancialProfile/index.tsx | 84 ++++--------------- .../FinancialInstitutionDetails.tsx | 2 +- 2 files changed, 15 insertions(+), 71 deletions(-) diff --git a/src/pages/Filing/UpdateFinancialProfile/index.tsx b/src/pages/Filing/UpdateFinancialProfile/index.tsx index eeb44cff2..068b5d0f6 100644 --- a/src/pages/Filing/UpdateFinancialProfile/index.tsx +++ b/src/pages/Filing/UpdateFinancialProfile/index.tsx @@ -1,33 +1,20 @@ import { zodResolver } from '@hookform/resolvers/zod'; +import { useQuery } from '@tanstack/react-query'; import { - submitUpdateFinancialProfile, fetchInstitutionDetails, + submitUpdateFinancialProfile, } from 'api/requests'; -import { useQuery } from '@tanstack/react-query'; import useSblAuth from 'api/useSblAuth'; import CrumbTrail from 'components/CrumbTrail'; -import FieldGroup from 'components/FieldGroup'; import FormButtonGroup from 'components/FormButtonGroup'; import FormErrorHeader from 'components/FormErrorHeader'; import FormHeaderWrapper from 'components/FormHeaderWrapper'; import FormWrapper from 'components/FormWrapper'; -import InputEntry from 'components/InputEntry'; import { LoadingContent } from 'components/Loading'; -import SectionIntro from 'components/SectionIntro'; -import { - Button, - Checkbox, - Link, - List, - ListItem, - TextIntroduction, -} from 'design-system-react'; +import { Button, Link, TextIntroduction } from 'design-system-react'; import type { JSXElement } from 'design-system-react/dist/types/jsxElement'; import { useError500 } from 'pages/Error/Error500'; -import type { - CheckboxOption, - UFPSchema, -} from 'pages/Filing/UpdateFinancialProfile/types'; +import type { UFPSchema } from 'pages/Filing/UpdateFinancialProfile/types'; import { checkboxOptions, ufpSchema, @@ -35,9 +22,9 @@ import { import { scrollToElement } from 'pages/ProfileForm/ProfileFormUtils'; -import { Controller as FormController, useForm } from 'react-hook-form'; +import { useForm } from 'react-hook-form'; import { useParams } from 'react-router-dom'; -import FinancialInstitutionDetails from '../ViewInstitutionProfile/FinancialInstitutionDetails'; +import { FinancialInstitutionDetails } from '../ViewInstitutionProfile/FinancialInstitutionDetails'; // TODO: Decide on properties to inherit // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -63,9 +50,9 @@ function UpdateFinancialProfile(properties: Properties): JSXElement { ); const { - register, - control, - setValue, + // register, + // control, + // setValue, trigger, getValues, formState: { errors: formErrors }, @@ -122,7 +109,11 @@ function UpdateFinancialProfile(properties: Properties): JSXElement { Platform home {lei ? ( - + View Institution ) : null} @@ -144,53 +135,6 @@ function UpdateFinancialProfile(properties: Properties): JSXElement { data={data} /> - - - - {checkboxOptions.map((option: CheckboxOption): JSX.Element => { - const onChange = ( - event: React.ChangeEvent, - ): void => { - setValue(`checkboxes.${option.id}`, event.target.checked); - }; - return ( - - ( - // @ts-expect-error TS error should be fixed in DSR Repo - - )} - control={control} - name={`checkboxes.${option.id}`} - // TODO: Add special rules or remove this comment - // rules={{ required: 'This field is required' }} - /> - - ); - })} - - - Break - - - - - -