implemented a quick and dirty command palette

This commit is contained in:
Chris Kruining 2024-10-22 13:57:49 +02:00
parent a6fc5720d4
commit e363ee1844
No known key found for this signature in database
GPG key ID: EB894A3560CCCAD2
4 changed files with 302 additions and 36 deletions

View file

@ -1,27 +1,39 @@
import { Title } from "@solidjs/meta";
import { ParentProps, Show } from "solid-js";
import { Component, createEffect, createMemo, createSignal, For, ParentProps, Show } from "solid-js";
import { BsTranslate } from "solid-icons/bs";
import { FilesProvider } from "~/features/file";
import { MenuProvider, asMenuRoot } from "~/features/menu";
import { CommandPalette, CommandPaletteApi, MenuProvider, asMenuRoot, useMenu } from "~/features/menu";
import { isServer } from "solid-js/web";
import { A } from "@solidjs/router";
import { createCommand, Modifier } from "~/features/command";
asMenuRoot // prevents removal of import
export default function Editor(props: ParentProps) {
const supported = isServer || typeof window.showDirectoryPicker === 'function';
const [commandPalette, setCommandPalette] = createSignal<CommandPaletteApi>();
return <MenuProvider>
const supported = isServer || typeof window.showDirectoryPicker === 'function';
const commands = [
createCommand('open command palette', () => {
commandPalette()?.show();
}, { key: 'p', modifier: Modifier.Control | Modifier.Shift }),
];
return <MenuProvider commands={commands}>
<Title>Translation-Tool</Title>
<nav use:asMenuRoot>
<A class="logo" href="/"><BsTranslate /></A>
</nav>
<main inert={commandPalette()?.open()}>
<nav use:asMenuRoot>
<A class="logo" href="/"><BsTranslate /></A>
</nav>
<Show when={supported} fallback={<span>too bad, so sad. Your browser does not support the File Access API</span>}>
<FilesProvider>
{props.children}
</FilesProvider>
</Show>
<Show when={supported} fallback={<span>too bad, so sad. Your browser does not support the File Access API</span>}>
<FilesProvider>
{props.children}
</FilesProvider>
</Show>
</main>
<CommandPalette api={setCommandPalette} />
</MenuProvider>
}