Improve command palette search

This commit is contained in:
Sacha Weatherstone
2022-12-30 15:56:49 +11:00
parent dab158c7b3
commit e7a5dabdc9

View File

@@ -54,6 +54,7 @@ export interface Command {
icon: (props: React.ComponentProps<"svg">) => JSX.Element;
action?: () => void;
subItems?: SubItem[];
tags?: string[];
}
export interface SubItem {
@@ -117,7 +118,8 @@ export const CommandPalette = (): JSX.Element => {
icon: Cog8ToothIcon,
action() {
setActivePage("config");
}
},
tags: ["settings"]
},
{
name: "Channels",
@@ -397,9 +399,24 @@ export const CommandPalette = (): JSX.Element => {
return {
...group,
commands: group.commands.filter((command) => {
return `${group.name} ${command.name}`
const nameIncludes = `${group.name} ${command.name}`
.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;
})
};
})