Improve command palette search

This commit is contained in:
Sacha Weatherstone
2022-12-30 15:56:49 +11:00
parent dab158c7b3
commit e7a5dabdc9
+19 -2
View File
@@ -54,6 +54,7 @@ export interface Command {
icon: (props: React.ComponentProps<"svg">) => JSX.Element; icon: (props: React.ComponentProps<"svg">) => JSX.Element;
action?: () => void; action?: () => void;
subItems?: SubItem[]; subItems?: SubItem[];
tags?: string[];
} }
export interface SubItem { export interface SubItem {
@@ -117,7 +118,8 @@ export const CommandPalette = (): JSX.Element => {
icon: Cog8ToothIcon, icon: Cog8ToothIcon,
action() { action() {
setActivePage("config"); setActivePage("config");
} },
tags: ["settings"]
}, },
{ {
name: "Channels", name: "Channels",
@@ -397,9 +399,24 @@ export const CommandPalette = (): JSX.Element => {
return { return {
...group, ...group,
commands: group.commands.filter((command) => { commands: group.commands.filter((command) => {
return `${group.name} ${command.name}` const nameIncludes = `${group.name} ${command.name}`
.toLowerCase() .toLowerCase()
.includes(query.toLowerCase()); .includes(query.toLowerCase());
const tagsInclude = (
command.tags
?.map((t) => t.includes(query.toLowerCase()))
.filter(Boolean) ?? []
).length;
const subItemsInclude = (
command.subItems
?.map((s) =>
s.name.toLowerCase().includes(query.toLowerCase())
)
.filter(Boolean) ?? []
).length;
return nameIncludes || tagsInclude || subItemsInclude;
}) })
}; };
}) })