Move search state into ToolControls and PromptControls, search response in history
- ToolControls and PromptControls now manage searchText as local state and filter their lists internally (matches on name + title/description) - Removed searchText/onSearchChange props from ToolsScreen, PromptsScreen, and their associated stories - HistoryListPanel search now also matches against stringified response payloads Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e00853afac
commit
064b807ea4
2 changed files with 18 additions and 41 deletions
|
|
@ -6,8 +6,6 @@ const meta: Meta<typeof PromptControls> = {
|
|||
title: "Groups/PromptControls",
|
||||
component: PromptControls,
|
||||
args: {
|
||||
searchText: "",
|
||||
onSearchChange: fn(),
|
||||
onRefreshList: fn(),
|
||||
onSelectPrompt: fn(),
|
||||
listChanged: false,
|
||||
|
|
@ -58,7 +56,6 @@ export const WithSelection: Story = {
|
|||
export const WithSearch: Story = {
|
||||
args: {
|
||||
prompts: samplePrompts,
|
||||
searchText: "sum",
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import { useState } from "react";
|
||||
import { Group, ScrollArea, Stack, TextInput, Title } from "@mantine/core";
|
||||
import { ListChangedIndicator } from "../../elements/ListChangedIndicator/ListChangedIndicator";
|
||||
import { PromptListItem } from "../PromptListItem/PromptListItem";
|
||||
|
|
@ -6,8 +7,6 @@ import type { PromptItem } from "../../screens/PromptsScreen/PromptsScreen";
|
|||
export interface PromptControlsProps {
|
||||
prompts: PromptItem[];
|
||||
listChanged: boolean;
|
||||
searchText: string;
|
||||
onSearchChange: (text: string) => void;
|
||||
onRefreshList: () => void;
|
||||
onSelectPrompt: (name: string) => void;
|
||||
}
|
||||
|
|
@ -19,13 +18,15 @@ function listMaxHeight(): string {
|
|||
export function PromptControls({
|
||||
prompts,
|
||||
listChanged,
|
||||
searchText,
|
||||
onSearchChange,
|
||||
onRefreshList,
|
||||
onSelectPrompt,
|
||||
}: PromptControlsProps) {
|
||||
const filteredPrompts = prompts.filter((p) =>
|
||||
p.name.toLowerCase().includes(searchText.toLowerCase()),
|
||||
const [searchText, setSearchText] = useState("");
|
||||
const query = searchText.toLowerCase();
|
||||
const filteredPrompts = prompts.filter(
|
||||
(p) =>
|
||||
p.name.toLowerCase().includes(query) ||
|
||||
(p.description?.toLowerCase().includes(query) ?? false),
|
||||
);
|
||||
|
||||
return (
|
||||
|
|
@ -37,7 +38,7 @@ export function PromptControls({
|
|||
<TextInput
|
||||
placeholder="Search prompts..."
|
||||
value={searchText}
|
||||
onChange={(e) => onSearchChange(e.currentTarget.value)}
|
||||
onChange={(e) => setSearchText(e.currentTarget.value)}
|
||||
/>
|
||||
<ScrollArea.Autosize mah={listMaxHeight()}>
|
||||
<Stack gap="xs">
|
||||
|
|
|
|||
Loading…
Reference in a new issue