diff --git a/app.config.ts b/app.config.ts index e97501a..329c488 100644 --- a/app.config.ts +++ b/app.config.ts @@ -4,7 +4,25 @@ import { VitePWA } from 'vite-plugin-pwa' export default defineConfig({ vite: { plugins: [ - VitePWA({ registerType: 'autoUpdate' }), + VitePWA({ + mode: 'development', + // srcDir: 'src', + // filename: 'claims-sw.ts', + strategies: 'injectManifest', + registerType: 'autoUpdate', + base: '/', + manifest: { + name: 'Translation tool', + short_name: 'T_tool', + theme_color: '#f0f', + icons: [], + }, + devOptions: { + enabled: true, + type: 'module', + navigateFallback: 'index.html', + }, + }), ] } }); diff --git a/src/app.css b/src/app.css index 507ad65..cbaddda 100644 --- a/src/app.css +++ b/src/app.css @@ -78,6 +78,7 @@ body { grid-auto-flow: column; justify-content: start; position: relative; + z-index: 10; gap: .5em; padding-inline-start: 1em; diff --git a/src/components/filetree.tsx b/src/components/filetree.tsx index e6a9f33..999ffaa 100644 --- a/src/components/filetree.tsx +++ b/src/components/filetree.tsx @@ -1,7 +1,7 @@ import { Accessor, Component, createContext, createSignal, For, JSX, Show, useContext } from "solid-js"; -import css from "./filetree.module.css"; import { AiFillFile, AiFillFolder, AiFillFolderOpen } from "solid-icons/ai"; import { SelectionProvider, selectable } from "~/features/selectable"; +import css from "./filetree.module.css"; export interface FileEntry { name: string; @@ -45,15 +45,15 @@ interface TreeContextType { const TreeContext = createContext(); -export const Tree: Component<{ entries: Entry[], children: (file: Accessor) => JSX.Element, open: TreeContextType['open'] }> = (props) => { - const [selection, setSelection] = createSignal(); +export const Tree: Component<{ entries: Entry[], children: (file: Accessor) => JSX.Element, open?: TreeContextType['open'] }> = (props) => { + const [selection, setSelection] = createSignal([]); // createEffect(() => { - // console.log(selection()); + // console.log(selection()); // }); const context = { - open: props.open, + open: props.open ?? (() => { }), // open(file: File) { // console.log(`open ${file.name}`) // }, diff --git a/src/components/sidebar.module.css b/src/components/sidebar.module.css index 2b91599..903f28b 100644 --- a/src/components/sidebar.module.css +++ b/src/components/sidebar.module.css @@ -15,6 +15,10 @@ overflow: auto clip; } + &.open > .content { + inline-size: max-content; + } + &.closed > .content { inline-size: 0; } diff --git a/src/components/sidebar.tsx b/src/components/sidebar.tsx index 4b1b4e9..8ea473a 100644 --- a/src/components/sidebar.tsx +++ b/src/components/sidebar.tsx @@ -1,13 +1,15 @@ import { TbLayoutSidebarLeftCollapse, TbLayoutSidebarLeftExpand } from "solid-icons/tb"; -import { createMemo, createSignal, ParentComponent, Show } from "solid-js"; +import { createMemo, createSignal, ParentComponent, Show, splitProps } from "solid-js"; import { Dynamic } from "solid-js/web"; import css from "./sidebar.module.css"; -export const Sidebar: ParentComponent<{ as?: string, open?: boolean, name?: string }> = (props) => { - const [open, setOpen] = createSignal(props.open ?? true); - const name = createMemo(() => props.name ?? 'sidebar'); +export const Sidebar: ParentComponent<{ as?: string, open?: boolean, name?: string } & Record> = (props) => { + const [local, forwarded] = splitProps(props, ['as', 'open', 'name', 'class']); - return + const [open, setOpen] = createSignal(local.open ?? true); + const name = createMemo(() => local.name ?? 'sidebar'); + + return