diff --git a/src/components/CreateObjectForm.tsx b/src/components/CreateObjectForm.tsx index ce90ef1..dbb4819 100644 --- a/src/components/CreateObjectForm.tsx +++ b/src/components/CreateObjectForm.tsx @@ -16,6 +16,8 @@ interface CreateObjectFormProps { setSelectedType: (type: string) => void; selectedList: string; setSelectedList: (listId: string) => void; + listSearchText: string; + setListSearchText: (searchText: string) => void; isLoading: boolean; draftValues: CreateObjectFormValues; enableDrafts: boolean; @@ -31,6 +33,8 @@ export default function CreateObjectForm({ setSelectedType, selectedList, setSelectedList, + listSearchText, + setListSearchText, isLoading, draftValues, enableDrafts, @@ -170,10 +174,12 @@ export default function CreateObjectForm({ title="Collection" value={selectedList} onChange={setSelectedList} + onSearchTextChange={setListSearchText} + throttle={true} storeValue={true} info="Select the collection where the object will be added" > - + {!listSearchText && } {lists.map((list) => ( ))} diff --git a/src/components/EmptyViewObject.tsx b/src/components/EmptyViewObject.tsx index 5a103f4..09ccef3 100644 --- a/src/components/EmptyViewObject.tsx +++ b/src/components/EmptyViewObject.tsx @@ -31,6 +31,8 @@ export default function EmptyViewObject({ title, contextValues }: EmptyViewObjec setSelectedType, selectedList, setSelectedList, + listSearchText, + setListSearchText, isLoading, } = useCreateObjectData(draftValues); @@ -65,6 +67,8 @@ export default function EmptyViewObject({ title, contextValues }: EmptyViewObjec setSelectedType={setSelectedType} selectedList={selectedList} setSelectedList={setSelectedList} + listSearchText={listSearchText} + setListSearchText={setListSearchText} isLoading={isLoading} draftValues={draftValues} enableDrafts={false} diff --git a/src/create-object.tsx b/src/create-object.tsx index 7e69f69..23d2692 100644 --- a/src/create-object.tsx +++ b/src/create-object.tsx @@ -54,6 +54,8 @@ function CreateObject({ draftValues, launchContext }: CreateObjectProps) { setSelectedType, selectedList, setSelectedList, + listSearchText, + setListSearchText, isLoading, } = useCreateObjectData(mergedValues); @@ -68,6 +70,8 @@ function CreateObject({ draftValues, launchContext }: CreateObjectProps) { setSelectedType={setSelectedType} selectedList={selectedList} setSelectedList={setSelectedList} + listSearchText={listSearchText} + setListSearchText={setListSearchText} isLoading={isLoading} draftValues={mergedValues} enableDrafts={true} diff --git a/src/hooks/useCreateObjectData.ts b/src/hooks/useCreateObjectData.ts index 313df2e..223db5e 100644 --- a/src/hooks/useCreateObjectData.ts +++ b/src/hooks/useCreateObjectData.ts @@ -10,12 +10,14 @@ export function useCreateObjectData(initialValues?: CreateObjectFormValues) { const [selectedSpace, setSelectedSpace] = useState(initialValues?.space || ""); const [selectedType, setSelectedType] = useState(initialValues?.type || ""); const [selectedList, setSelectedList] = useState(initialValues?.list || ""); + const [listSearchText, setListSearchText] = useState(""); + const { spaces, spacesError, isLoadingSpaces } = useSpaces(); const { objects: lists, objectsError: listsError, isLoadingObjects: isLoadingLists, - } = useSearch(selectedSpace, "", ["ot-collection"]); + } = useSearch(selectedSpace, listSearchText, ["ot-collection"]); const restrictedTypes = [ "ot-audio", @@ -62,6 +64,8 @@ export function useCreateObjectData(initialValues?: CreateObjectFormValues) { setSelectedType, selectedList, setSelectedList, + listSearchText, + setListSearchText, isLoading, }; }