From 6746f5479204c84f29988d824c2c0a3a2fa21284 Mon Sep 17 00:00:00 2001
From: Yangshun Tay <tay.yang.shun@gmail.com>
Date: Sun, 30 Oct 2022 10:07:38 +0800
Subject: [PATCH] [portal][ui] allow value to be specified for comapnies and
 job titles typeahead

---
 apps/portal/src/components/shared/CompaniesTypeahead.tsx | 3 +++
 apps/portal/src/components/shared/JobTitlesTypahead.tsx  | 3 +++
 packages/ui/src/Typeahead/Typeahead.tsx                  | 6 ++++--
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/apps/portal/src/components/shared/CompaniesTypeahead.tsx b/apps/portal/src/components/shared/CompaniesTypeahead.tsx
index cd54f4e5..619d9a55 100644
--- a/apps/portal/src/components/shared/CompaniesTypeahead.tsx
+++ b/apps/portal/src/components/shared/CompaniesTypeahead.tsx
@@ -11,6 +11,7 @@ type Props = Readonly<{
   onSelect: (option: TypeaheadOption | null) => void;
   placeholder?: string;
   required?: boolean;
+  value?: TypeaheadOption | null;
 }>;
 
 export default function CompaniesTypeahead({
@@ -19,6 +20,7 @@ export default function CompaniesTypeahead({
   isLabelHidden,
   placeholder,
   required,
+  value,
 }: Props) {
   const [query, setQuery] = useState('');
   const companies = trpc.useQuery([
@@ -47,6 +49,7 @@ export default function CompaniesTypeahead({
       placeholder={placeholder}
       required={required}
       textSize="inherit"
+      value={value}
       onQueryChange={setQuery}
       onSelect={onSelect}
     />
diff --git a/apps/portal/src/components/shared/JobTitlesTypahead.tsx b/apps/portal/src/components/shared/JobTitlesTypahead.tsx
index d266deb4..b5221262 100644
--- a/apps/portal/src/components/shared/JobTitlesTypahead.tsx
+++ b/apps/portal/src/components/shared/JobTitlesTypahead.tsx
@@ -10,6 +10,7 @@ type Props = Readonly<{
   onSelect: (option: TypeaheadOption | null) => void;
   placeholder?: string;
   required?: boolean;
+  value?: TypeaheadOption | null;
 }>;
 
 export default function JobTitlesTypeahead({
@@ -18,6 +19,7 @@ export default function JobTitlesTypeahead({
   isLabelHidden,
   placeholder,
   required,
+  value,
 }: Props) {
   const [query, setQuery] = useState('');
   const options = Object.entries(JobTitleLabels)
@@ -42,6 +44,7 @@ export default function JobTitlesTypeahead({
       placeholder={placeholder}
       required={required}
       textSize="inherit"
+      value={value}
       onQueryChange={setQuery}
       onSelect={onSelect}
     />
diff --git a/packages/ui/src/Typeahead/Typeahead.tsx b/packages/ui/src/Typeahead/Typeahead.tsx
index bf16f07c..bce6fb32 100644
--- a/packages/ui/src/Typeahead/Typeahead.tsx
+++ b/packages/ui/src/Typeahead/Typeahead.tsx
@@ -37,7 +37,7 @@ type Props = Readonly<{
   onSelect: (option: TypeaheadOption | null) => void;
   options: ReadonlyArray<TypeaheadOption>;
   textSize?: TypeaheadTextSize;
-  value?: TypeaheadOption;
+  value?: TypeaheadOption | null;
 }> &
   Readonly<Attributes>;
 
@@ -90,6 +90,8 @@ export default function Typeahead({
   return (
     <div>
       <Combobox
+        // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+        // @ts-ignore
         by="id"
         disabled={disabled}
         // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -104,7 +106,7 @@ export default function Typeahead({
         onChange={(newValue) => {
           // eslint-disable-next-line @typescript-eslint/ban-ts-comment
           // @ts-ignore
-          onSelect(newValue as TypeaheadOption);
+          onSelect(newValue as TypeaheadOption | null);
         }}>
         <Combobox.Label
           className={clsx(