Skip to content

Commit dea68e9

Browse files
authored
Extract re-usable SearchBox component (#3507)
1 parent a6b3d38 commit dea68e9

4 files changed

Lines changed: 41 additions & 28 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { useState } from "react";
2+
3+
import type { Meta } from "@storybook/react";
4+
5+
import { SearchBox as SearchBoxComponent } from "../../view/common/SearchBox";
6+
7+
export default {
8+
title: "Search Box",
9+
component: SearchBoxComponent,
10+
argTypes: {
11+
value: {
12+
control: {
13+
disable: true,
14+
},
15+
},
16+
},
17+
} as Meta<typeof SearchBoxComponent>;
18+
19+
export const SearchBox = () => {
20+
const [value, setValue] = useState("");
21+
22+
return (
23+
<SearchBoxComponent
24+
value={value}
25+
placeholder="Filter by x/y/z..."
26+
onChange={setValue}
27+
/>
28+
);
29+
};

extensions/ql-vscode/src/stories/variant-analysis/RepositoriesSearch.stories.tsx

Lines changed: 0 additions & 23 deletions
This file was deleted.

extensions/ql-vscode/src/view/variant-analysis/RepositoriesSearch.tsx renamed to extensions/ql-vscode/src/view/common/SearchBox.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
import { useCallback } from "react";
22
import { styled } from "styled-components";
33
import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react";
4-
import { Codicon } from "../common";
4+
import { Codicon } from "./icon";
55

66
const TextField = styled(VSCodeTextField)`
77
width: 100%;
88
`;
99

1010
type Props = {
1111
value: string;
12+
placeholder: string;
1213
onChange: (value: string) => void;
1314

1415
className?: string;
1516
};
1617

17-
export const RepositoriesSearch = ({ value, onChange, className }: Props) => {
18+
export const SearchBox = ({
19+
value,
20+
placeholder,
21+
onChange,
22+
className,
23+
}: Props) => {
1824
const handleInput = useCallback(
1925
(e: InputEvent) => {
2026
const target = e.target as HTMLInputElement;
@@ -26,7 +32,7 @@ export const RepositoriesSearch = ({ value, onChange, className }: Props) => {
2632

2733
return (
2834
<TextField
29-
placeholder="Filter by repository owner/name"
35+
placeholder={placeholder}
3036
value={value}
3137
onInput={handleInput}
3238
className={className}

extensions/ql-vscode/src/view/variant-analysis/RepositoriesSearchSortRow.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
RepositoriesFilterSortState,
77
SortKey,
88
} from "../../variant-analysis/shared/variant-analysis-filter-sort";
9-
import { RepositoriesSearch } from "./RepositoriesSearch";
9+
import { SearchBox } from "../common/SearchBox";
1010
import { RepositoriesSort } from "./RepositoriesSort";
1111
import { RepositoriesFilter } from "./RepositoriesFilter";
1212
import { RepositoriesResultFormat } from "./RepositoriesResultFormat";
@@ -29,7 +29,7 @@ const Container = styled.div`
2929
margin-bottom: 1em;
3030
`;
3131

32-
const RepositoriesSearchColumn = styled(RepositoriesSearch)`
32+
const RepositoriesSearchColumn = styled(SearchBox)`
3333
flex: 3;
3434
`;
3535

@@ -99,6 +99,7 @@ export const RepositoriesSearchSortRow = ({
9999
<Container>
100100
<RepositoriesSearchColumn
101101
value={filterSortValue.searchValue}
102+
placeholder="Filter by repository owner/name"
102103
onChange={handleSearchValueChange}
103104
/>
104105
<RepositoriesFilterColumn

0 commit comments

Comments
 (0)