Skip to content

Commit ed6bc5b

Browse files
authored
Merge pull request #486 from WilsontheWolf/main
feat: project search
2 parents 042a32c + 0afd790 commit ed6bc5b

File tree

1 file changed

+24
-28
lines changed

1 file changed

+24
-28
lines changed

src/components/Dashboard.tsx

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,15 @@ export const Dashboard = ({
8484
"<link>",
8585
);
8686

87+
const [search, setSearch] = useState("");
8788
const combobox = useCombobox({
8889
onDropdownClose: () => {
8990
combobox.resetSelectedOption();
91+
setSearch("");
9092
},
9193
onDropdownOpen: () => {
9294
combobox.updateSelectedOptionIndex("active");
95+
combobox.focusSearchInput();
9396
},
9497
});
9598

@@ -167,39 +170,32 @@ export const Dashboard = ({
167170
: t("dashboard.projectsFilter")}
168171
</Input.Placeholder>
169172
)}
170-
<Combobox.EventsTarget>
171-
<PillsInput.Field
172-
type="hidden"
173-
onBlur={() => {
174-
combobox.closeDropdown();
175-
}}
176-
onKeyDown={(event) => {
177-
if (event.key === "Backspace") {
178-
event.preventDefault();
179-
setSelectedProjects((projects) =>
180-
projects.slice(0, projects.length - 1),
181-
);
182-
}
183-
}}
184-
/>
185-
</Combobox.EventsTarget>
186173
</Pill.Group>
187174
</PillsInput>
188175
</Combobox.DropdownTarget>
189176
<Combobox.Dropdown>
177+
<Combobox.Search
178+
value={search}
179+
onChange={(event) => {
180+
setSearch(event.currentTarget.value);
181+
}}
182+
placeholder="Search"
183+
/>
190184
<Combobox.Options>
191-
{unfilteredProjectNames.map((projectName) => (
192-
<Combobox.Option
193-
value={projectName}
194-
key={projectName}
195-
active={selectedProjects.includes(projectName)}
196-
>
197-
{selectedProjects.includes(projectName) && (
198-
<CheckIcon size={12} style={{ marginInlineEnd: 6 }} />
199-
)}
200-
<span>{projectName}</span>
201-
</Combobox.Option>
202-
))}
185+
{unfilteredProjectNames
186+
.filter((p) => p.toLowerCase().includes(search.toLowerCase()))
187+
.map((projectName) => (
188+
<Combobox.Option
189+
value={projectName}
190+
key={projectName}
191+
active={selectedProjects.includes(projectName)}
192+
>
193+
{selectedProjects.includes(projectName) && (
194+
<CheckIcon size={12} style={{ marginInlineEnd: 6 }} />
195+
)}
196+
<span>{projectName}</span>
197+
</Combobox.Option>
198+
))}
203199
</Combobox.Options>
204200
</Combobox.Dropdown>
205201
</Combobox>

0 commit comments

Comments
 (0)