cleaning up search override functionality
This commit is contained in:
parent
7339dfef9c
commit
dd5db8acc1
4 changed files with 42 additions and 4 deletions
|
|
@ -50,6 +50,7 @@ export const filterAccentClasses: Record<FilterColor, string> = {
|
||||||
|
|
||||||
export function KnowledgeFilterPanel() {
|
export function KnowledgeFilterPanel() {
|
||||||
const {
|
const {
|
||||||
|
queryOverride,
|
||||||
selectedFilter,
|
selectedFilter,
|
||||||
parsedFilterData,
|
parsedFilterData,
|
||||||
setSelectedFilter,
|
setSelectedFilter,
|
||||||
|
|
@ -320,6 +321,7 @@ export function KnowledgeFilterPanel() {
|
||||||
className="font-mono placeholder:font-mono"
|
className="font-mono placeholder:font-mono"
|
||||||
onChange={(e) => setQuery(e.target.value)}
|
onChange={(e) => setQuery(e.target.value)}
|
||||||
rows={2}
|
rows={2}
|
||||||
|
disabled={!!queryOverride}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,13 @@
|
||||||
|
|
||||||
import { themeQuartz, type ColDef } from "ag-grid-community";
|
import { themeQuartz, type ColDef } from "ag-grid-community";
|
||||||
import { AgGridReact, type CustomCellRendererProps } from "ag-grid-react";
|
import { AgGridReact, type CustomCellRendererProps } from "ag-grid-react";
|
||||||
import { Cloud, FileIcon, Search, X } from "lucide-react";
|
import { ArrowRight, Cloud, FileIcon, Search, X } from "lucide-react";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
import {
|
import {
|
||||||
type ChangeEvent,
|
type ChangeEvent,
|
||||||
FormEvent,
|
FormEvent,
|
||||||
useCallback,
|
useCallback,
|
||||||
|
useEffect,
|
||||||
useRef,
|
useRef,
|
||||||
useState,
|
useState,
|
||||||
} from "react";
|
} from "react";
|
||||||
|
|
@ -28,6 +29,7 @@ import { filterAccentClasses } from "@/components/knowledge-filter-panel";
|
||||||
import GoogleDriveIcon from "../settings/icons/google-drive-icon";
|
import GoogleDriveIcon from "../settings/icons/google-drive-icon";
|
||||||
import OneDriveIcon from "../settings/icons/one-drive-icon";
|
import OneDriveIcon from "../settings/icons/one-drive-icon";
|
||||||
import SharePointIcon from "../settings/icons/share-point-icon";
|
import SharePointIcon from "../settings/icons/share-point-icon";
|
||||||
|
import { cn } from "@/lib/utils";
|
||||||
|
|
||||||
// Function to get the appropriate icon for a connector type
|
// Function to get the appropriate icon for a connector type
|
||||||
function getSourceIcon(connectorType?: string) {
|
function getSourceIcon(connectorType?: string) {
|
||||||
|
|
@ -244,6 +246,11 @@ function SearchPage() {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Reset the query text when the selected filter changes
|
||||||
|
useEffect(() => {
|
||||||
|
setSearchQueryInput(queryOverride);
|
||||||
|
}, [queryOverride]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="flex flex-col h-full">
|
<div className="flex flex-col h-full">
|
||||||
|
|
@ -257,7 +264,7 @@ function SearchPage() {
|
||||||
className="flex flex-1 gap-3 max-w-full"
|
className="flex flex-1 gap-3 max-w-full"
|
||||||
onSubmit={handleSearch}
|
onSubmit={handleSearch}
|
||||||
>
|
>
|
||||||
<div className="primary-input min-h-10 !flex items-center flex-nowrap focus-within:border-foreground transition-colors !p-[0.3rem] max-w-[min(640px,100%)] min-w-[100px]">
|
<div className="primary-input group/input min-h-10 !flex items-center flex-nowrap focus-within:border-foreground transition-colors !p-[0.3rem] max-w-[min(640px,100%)] min-w-[100px]">
|
||||||
{selectedFilter?.name && (
|
{selectedFilter?.name && (
|
||||||
<div
|
<div
|
||||||
title={selectedFilter?.name}
|
title={selectedFilter?.name}
|
||||||
|
|
@ -288,6 +295,29 @@ function SearchPage() {
|
||||||
setSearchQueryInput(e.target.value)
|
setSearchQueryInput(e.target.value)
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
{queryOverride && (
|
||||||
|
<Button
|
||||||
|
variant="ghost"
|
||||||
|
className="h-full !px-1.5 !py-0"
|
||||||
|
type="button"
|
||||||
|
onClick={() => {
|
||||||
|
setSearchQueryInput("");
|
||||||
|
setQueryOverride("");
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<X className="h-4 w-4" />
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
<Button
|
||||||
|
variant="ghost"
|
||||||
|
className={cn(
|
||||||
|
"h-full !px-1.5 !py-0 hidden group-focus-within/input:block",
|
||||||
|
searchQueryInput && "block"
|
||||||
|
)}
|
||||||
|
type="submit"
|
||||||
|
>
|
||||||
|
<ArrowRight className="h-4 w-4" />
|
||||||
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
{/* <Button
|
{/* <Button
|
||||||
type="submit"
|
type="submit"
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ export function LayoutWrapper({ children }: { children: React.ReactNode }) {
|
||||||
</header>
|
</header>
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
"app-grid-cols-arrangement group",
|
"app-grid-cols-arrangement",
|
||||||
isPanelOpen && isOnKnowledgePage && !isMenuOpen && "filters-open",
|
isPanelOpen && isOnKnowledgePage && !isMenuOpen && "filters-open",
|
||||||
isMenuOpen && "notifications-open"
|
isMenuOpen && "notifications-open"
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import React, {
|
||||||
createContext,
|
createContext,
|
||||||
type ReactNode,
|
type ReactNode,
|
||||||
useContext,
|
useContext,
|
||||||
|
useEffect,
|
||||||
useState,
|
useState,
|
||||||
} from "react";
|
} from "react";
|
||||||
|
|
||||||
|
|
@ -75,7 +76,7 @@ export function KnowledgeFilterProvider({
|
||||||
useState<ParsedQueryData | null>(null);
|
useState<ParsedQueryData | null>(null);
|
||||||
const [isPanelOpen, setIsPanelOpen] = useState(false);
|
const [isPanelOpen, setIsPanelOpen] = useState(false);
|
||||||
const [createMode, setCreateMode] = useState(false);
|
const [createMode, setCreateMode] = useState(false);
|
||||||
const [queryOverride, setQueryOverride] = useState('');
|
const [queryOverride, setQueryOverride] = useState("");
|
||||||
|
|
||||||
const setSelectedFilter = (filter: KnowledgeFilter | null) => {
|
const setSelectedFilter = (filter: KnowledgeFilter | null) => {
|
||||||
setSelectedFilterState(filter);
|
setSelectedFilterState(filter);
|
||||||
|
|
@ -139,6 +140,11 @@ export function KnowledgeFilterProvider({
|
||||||
setCreateMode(false);
|
setCreateMode(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Clear the search override when we change filters
|
||||||
|
useEffect(() => {
|
||||||
|
setQueryOverride("");
|
||||||
|
}, [selectedFilter]);
|
||||||
|
|
||||||
const value: KnowledgeFilterContextType = {
|
const value: KnowledgeFilterContextType = {
|
||||||
selectedFilter,
|
selectedFilter,
|
||||||
parsedFilterData,
|
parsedFilterData,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue