From 920a5921c7be293437e2dbae1b5a4c0ea7610458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Alby?= Date: Mon, 16 May 2022 10:03:04 +0200 Subject: [PATCH] Merge pull request #7883 from overleaf/ii-institution-autocomplete Institution autocomplete GitOrigin-RevId: f0a42794ce9071ec7c0c5c2c4d499e8a027811f8 --- .../settings/components/emails/add-email.tsx | 34 ++-- .../emails/add-email/country-input.tsx | 2 +- .../emails/add-email/institution-fields.tsx | 79 ++++++--- .../emails/add-email/university-name.tsx | 25 +++ .../components/emails/downshift-input.tsx | 2 +- .../emails/institution-and-role.tsx | 34 ++-- .../stories/settings/helpers/emails.js | 17 +- .../emails-section-add-new-email.test.tsx | 152 +++++++++++++++++- 8 files changed, 293 insertions(+), 52 deletions(-) create mode 100644 services/web/frontend/js/features/settings/components/emails/add-email/university-name.tsx diff --git a/services/web/frontend/js/features/settings/components/emails/add-email.tsx b/services/web/frontend/js/features/settings/components/emails/add-email.tsx index 694571d8df..f8b594dcd7 100644 --- a/services/web/frontend/js/features/settings/components/emails/add-email.tsx +++ b/services/web/frontend/js/features/settings/components/emails/add-email.tsx @@ -50,22 +50,27 @@ function AddEmail() { setNewEmailMatchedInstitution(institution || null) } + const getSelectedKnownUniversityId = (): number | undefined => { + if (countryCode) { + return universities[countryCode]?.find( + ({ name }) => name === universityName + )?.id + } + + return newEmailMatchedInstitution?.university.id + } + const handleAddNewEmail = () => { - const selectedKnownUniversity = countryCode - ? universities[countryCode]?.find(({ name }) => name === universityName) - : undefined - - const knownUniversityData = universityName && - selectedKnownUniversity && { - university: { - id: selectedKnownUniversity.id, - }, - role, - department, - } - + const selectedKnownUniversityId = getSelectedKnownUniversityId() + const knownUniversityData = selectedKnownUniversityId && { + university: { + id: selectedKnownUniversityId, + }, + role, + department, + } const unknownUniversityData = universityName && - !selectedKnownUniversity && { + !selectedKnownUniversityId && { university: { name: universityName, country_code: countryCode, @@ -136,6 +141,7 @@ function AddEmail() { setRole={setRole} department={department} setDepartment={setDepartment} + newEmailMatchedInstitution={newEmailMatchedInstitution} /> diff --git a/services/web/frontend/js/features/settings/components/emails/add-email/country-input.tsx b/services/web/frontend/js/features/settings/components/emails/add-email/country-input.tsx index 6cb9f165d9..b676f56ddf 100644 --- a/services/web/frontend/js/features/settings/components/emails/add-email/country-input.tsx +++ b/services/web/frontend/js/features/settings/components/emails/add-email/country-input.tsx @@ -52,7 +52,7 @@ function Downshift({ setValue, inputRef }: CountryInputProps) { } )} > -
+
{/* eslint-disable-next-line jsx-a11y/label-has-for */}