diff --git a/web/app/[workspaceSlug]/(projects)/projects/(list)/header.tsx b/web/app/[workspaceSlug]/(projects)/projects/(list)/header.tsx index 21e0d6b40..04c697781 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(list)/header.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(list)/header.tsx @@ -1,6 +1,6 @@ "use client"; -import { useCallback, useRef, useState } from "react"; +import { useCallback, useEffect, useRef, useState } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; import { Search, Briefcase, X, ListFilter } from "lucide-react"; @@ -82,6 +82,10 @@ export const ProjectsListHeader = observer(() => { } }; + useEffect(() => { + if (searchQuery.trim() !== "") setIsSearchOpen(true); + }, [searchQuery]); + const isFiltersApplied = calculateTotalFilters(filters ?? {}) !== 0; return ( diff --git a/web/core/components/cycles/cycles-view-header.tsx b/web/core/components/cycles/cycles-view-header.tsx index adb0eea4b..5fe815a79 100644 --- a/web/core/components/cycles/cycles-view-header.tsx +++ b/web/core/components/cycles/cycles-view-header.tsx @@ -1,4 +1,4 @@ -import { useCallback, useRef, useState } from "react"; +import { useCallback, useEffect, useRef, useState } from "react"; import { observer } from "mobx-react"; // icons import { ListFilter, Search, X } from "lucide-react"; @@ -63,6 +63,10 @@ export const CyclesViewHeader: React.FC = observer((props) => { const isFiltersApplied = calculateTotalFilters(currentProjectFilters ?? {}) !== 0; + useEffect(() => { + if (searchQuery.trim() !== "") setIsSearchOpen(true); + }, [searchQuery]); + return (
{!isSearchOpen && ( diff --git a/web/core/components/modules/module-view-header.tsx b/web/core/components/modules/module-view-header.tsx index 26235db9e..71418a2cc 100644 --- a/web/core/components/modules/module-view-header.tsx +++ b/web/core/components/modules/module-view-header.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { FC, useCallback, useRef, useState } from "react"; +import React, { FC, useCallback, useEffect, useRef, useState } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; // icons @@ -26,13 +26,10 @@ import { usePlatformOS } from "@/hooks/use-platform-os"; export const ModuleViewHeader: FC = observer(() => { // refs const inputRef = useRef(null); - // router const { projectId } = useParams(); - // hooks const { isMobile } = usePlatformOS(); - // store hooks const { workspace: { workspaceMemberIds }, @@ -85,6 +82,10 @@ export const ModuleViewHeader: FC = observer(() => { if (isSearchOpen && searchQuery.trim() === "") setIsSearchOpen(false); }); + useEffect(() => { + if (searchQuery.trim() !== "") setIsSearchOpen(true); + }, [searchQuery]); + const isFiltersApplied = calculateTotalFilters(filters ?? {}) !== 0 || displayFilters?.favorites; return ( diff --git a/web/core/components/pages/list/search-input.tsx b/web/core/components/pages/list/search-input.tsx index 1f79e818f..ea31617d3 100644 --- a/web/core/components/pages/list/search-input.tsx +++ b/web/core/components/pages/list/search-input.tsx @@ -1,4 +1,4 @@ -import { FC, useState, useRef } from "react"; +import { FC, useState, useRef, useEffect } from "react"; import { Search, X } from "lucide-react"; // helpers import { cn } from "@/helpers/common.helper"; @@ -31,6 +31,10 @@ export const PageSearchInput: FC = (props) => { } }; + useEffect(() => { + if (searchQuery.trim() !== "") setIsSearchOpen(true); + }, [searchQuery]); + return ( <> {!isSearchOpen && ( diff --git a/web/core/components/views/view-list-header.tsx b/web/core/components/views/view-list-header.tsx index 6d36dfef9..adbae785e 100644 --- a/web/core/components/views/view-list-header.tsx +++ b/web/core/components/views/view-list-header.tsx @@ -1,4 +1,4 @@ -import React, { useRef, useState } from "react"; +import React, { useEffect, useRef, useState } from "react"; import { observer } from "mobx-react"; // icons import { Search, X } from "lucide-react"; @@ -11,10 +11,9 @@ import useOutsideClickDetector from "@/hooks/use-outside-click-detector"; export const ViewListHeader = observer(() => { // states const [isSearchOpen, setIsSearchOpen] = useState(false); - // const [isSearchOpen, setIsSearchOpen] = useState(searchQuery !== "" ? true : false); // refs const inputRef = useRef(null); - + // store hooks const { searchQuery, updateSearchQuery } = useProjectView(); // handlers @@ -33,6 +32,10 @@ export const ViewListHeader = observer(() => { if (isSearchOpen && searchQuery.trim() === "") setIsSearchOpen(false); }); + useEffect(() => { + if (searchQuery.trim() !== "") setIsSearchOpen(true); + }, [searchQuery]); + return (