mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-04 21:23:07 +00:00
Merge pull request #225 from illia1f/fix/project-picker-dropdown
fix: project picker dropdown highlights first item instead of current project
This commit is contained in:
@@ -69,6 +69,7 @@ export function ProjectSelectorWithOptions({
|
|||||||
filteredProjects,
|
filteredProjects,
|
||||||
} = useProjectPicker({
|
} = useProjectPicker({
|
||||||
projects,
|
projects,
|
||||||
|
currentProject,
|
||||||
isProjectPickerOpen,
|
isProjectPickerOpen,
|
||||||
setIsProjectPickerOpen,
|
setIsProjectPickerOpen,
|
||||||
setCurrentProject,
|
setCurrentProject,
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import type { Project } from '@/lib/electron';
|
|||||||
|
|
||||||
interface UseProjectPickerProps {
|
interface UseProjectPickerProps {
|
||||||
projects: Project[];
|
projects: Project[];
|
||||||
|
currentProject: Project | null;
|
||||||
isProjectPickerOpen: boolean;
|
isProjectPickerOpen: boolean;
|
||||||
setIsProjectPickerOpen: (value: boolean | ((prev: boolean) => boolean)) => void;
|
setIsProjectPickerOpen: (value: boolean | ((prev: boolean) => boolean)) => void;
|
||||||
setCurrentProject: (project: Project) => void;
|
setCurrentProject: (project: Project) => void;
|
||||||
@@ -10,6 +11,7 @@ interface UseProjectPickerProps {
|
|||||||
|
|
||||||
export function useProjectPicker({
|
export function useProjectPicker({
|
||||||
projects,
|
projects,
|
||||||
|
currentProject,
|
||||||
isProjectPickerOpen,
|
isProjectPickerOpen,
|
||||||
setIsProjectPickerOpen,
|
setIsProjectPickerOpen,
|
||||||
setCurrentProject,
|
setCurrentProject,
|
||||||
@@ -27,22 +29,32 @@ export function useProjectPicker({
|
|||||||
return projects.filter((project) => project.name.toLowerCase().includes(query));
|
return projects.filter((project) => project.name.toLowerCase().includes(query));
|
||||||
}, [projects, projectSearchQuery]);
|
}, [projects, projectSearchQuery]);
|
||||||
|
|
||||||
// Reset selection when filtered results change
|
// Reset selection when filtered results change and project picker is open
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setSelectedProjectIndex(0);
|
if (!isProjectPickerOpen) {
|
||||||
}, [filteredProjects.length, projectSearchQuery]);
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Reset search query when dropdown closes
|
if (!projectSearchQuery.trim()) {
|
||||||
|
const currentIndex = currentProject
|
||||||
|
? filteredProjects.findIndex((p) => p.id === currentProject.id)
|
||||||
|
: -1;
|
||||||
|
if (currentIndex !== -1) {
|
||||||
|
setSelectedProjectIndex(currentIndex);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setSelectedProjectIndex(0);
|
||||||
|
}, [isProjectPickerOpen, filteredProjects.length, projectSearchQuery, currentProject]);
|
||||||
|
|
||||||
|
// Reset search query when dropdown closes, set to current project index when it opens
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!isProjectPickerOpen) {
|
if (!isProjectPickerOpen) {
|
||||||
setProjectSearchQuery('');
|
setProjectSearchQuery('');
|
||||||
setSelectedProjectIndex(0);
|
setSelectedProjectIndex(0);
|
||||||
}
|
} else {
|
||||||
}, [isProjectPickerOpen]);
|
// Focus the search input when dropdown opens
|
||||||
|
|
||||||
// Focus the search input when dropdown opens
|
|
||||||
useEffect(() => {
|
|
||||||
if (isProjectPickerOpen) {
|
|
||||||
// Small delay to ensure the dropdown is rendered
|
// Small delay to ensure the dropdown is rendered
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
projectSearchInputRef.current?.focus();
|
projectSearchInputRef.current?.focus();
|
||||||
|
|||||||
Reference in New Issue
Block a user