From 9eb0fcd441fc0329441a4ec9bc7feed311770445 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Sun, 26 Mar 2023 10:09:28 -0700 Subject: [PATCH] Floating sidebar --- src-tauri/Cargo.toml | 3 +- src-tauri/src/main.rs | 3 +- src-web/assets/icons/Icons.afdesign | Bin 0 -> 22385 bytes src-web/components/Overlay.tsx | 41 ++++++++++ src-web/components/Workspace.tsx | 107 +++++++++++++++++++------ src-web/components/WorkspaceHeader.tsx | 9 ++- src-web/components/core/Dialog.tsx | 73 ++++++++--------- src-web/components/core/Dropdown.tsx | 4 +- src-web/lib/constants.ts | 1 + 9 files changed, 172 insertions(+), 69 deletions(-) create mode 100644 src-web/assets/icons/Icons.afdesign create mode 100644 src-web/components/Overlay.tsx diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 28ac1ac9..b5550f3f 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -7,7 +7,8 @@ license = "MIT" repository = "https://github.com/gschier/yaak-app" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[profile.release] +strip = true # Automatically strip symbols from the binary. [build-dependencies] tauri-build = { version = "1.2", features = [] } diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 30c71d88..4ea8dff2 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -491,8 +491,9 @@ fn main() { create_dir_all(dir.clone()).expect("Problem creating App directory!"); let p = dir.join("db.sqlite"); - let p_string = p.to_string_lossy().replace(' ', " % 20"); + let p_string = p.to_string_lossy().replace(' ', "%20"); let url = format!("sqlite://{}?mode=rwc", p_string); + println!("Connecting to database at {}", url); tauri::async_runtime::block_on(async move { let pool = SqlitePoolOptions::new() .connect(url.as_str()) diff --git a/src-web/assets/icons/Icons.afdesign b/src-web/assets/icons/Icons.afdesign new file mode 100644 index 0000000000000000000000000000000000000000..5561d0fb929626341d6d83220a8c339a2575c4d5 GIT binary patch literal 22385 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 void; + portalName: string; + open: boolean; + zIndex?: keyof typeof zIndexes; +} + +const zIndexes: Record = { + 10: 'z-10', + 20: 'z-20', + 30: 'z-30', + 40: 'z-40', + 50: 'z-50', +}; + +export function Overlay({ zIndex = 30, open, children, onClick, portalName }: Props) { + return ( + + {open && ( + +
+ {children} + + )} + + ); +} diff --git a/src-web/components/Workspace.tsx b/src-web/components/Workspace.tsx index b5059642..322422c8 100644 --- a/src-web/components/Workspace.tsx +++ b/src-web/components/Workspace.tsx @@ -1,10 +1,20 @@ import classnames from 'classnames'; -import type { CSSProperties, MouseEvent as ReactMouseEvent } from 'react'; -import React, { useCallback, useMemo, useRef, useState } from 'react'; +import { motion } from 'framer-motion'; +import type { + CSSProperties, + HTMLAttributes, + MouseEvent as ReactMouseEvent, + ReactNode, +} from 'react'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { useWindowSize } from 'react-use'; import { useSidebarDisplay } from '../hooks/useSidebarDisplay'; +import { WINDOW_FLOATING_SIDEBAR_WIDTH } from '../lib/constants'; +import { Overlay } from './Overlay'; import { RequestResponse } from './RequestResponse'; import { ResizeHandle } from './ResizeHandle'; import { Sidebar } from './Sidebar'; +import { SidebarDisplayToggle } from './SidebarDisplayToggle'; import { WorkspaceHeader } from './WorkspaceHeader'; const side = { gridArea: 'side' }; @@ -14,12 +24,23 @@ const drag = { gridArea: 'drag' }; export default function Workspace() { const sidebar = useSidebarDisplay(); - + const windowSize = useWindowSize(); + const [floating, setFloating] = useState(false); const [isResizing, setIsResizing] = useState(false); const moveState = useRef<{ move: (e: MouseEvent) => void; up: (e: MouseEvent) => void } | null>( null, ); + useEffect(() => { + if (windowSize.width <= WINDOW_FLOATING_SIDEBAR_WIDTH) { + setFloating(true); + sidebar.hide(); + } else { + setFloating(false); + sidebar.show(); + } + }, [windowSize.width]); + const unsub = () => { if (moveState.current !== null) { document.documentElement.removeEventListener('mousemove', moveState.current.move); @@ -55,46 +76,86 @@ export default function Workspace() { const sideWidth = sidebar.hidden ? 0 : sidebar.width; const styles = useMemo( () => ({ - gridTemplate: ` + gridTemplate: floating + ? ` + ' ${head.gridArea}' auto + ' ${body.gridArea}' minmax(0,1fr) + / 1fr` + : ` ' ${head.gridArea} ${head.gridArea} ${head.gridArea}' auto ' ${side.gridArea} ${drag.gridArea} ${body.gridArea}' minmax(0,1fr) / ${sideWidth}px 0 1fr`, }), - [sideWidth], + [sideWidth, floating], ); return (
-
-
-
- -
- + + {floating ? ( + + + + + + + + + ) : ( + <> +
+ +
+ + + )}
); } + +interface HeaderSizeProps extends HTMLAttributes { + children: ReactNode; +} + +function HeaderSize({ className, ...props }: HeaderSizeProps) { + return ( +
+ ); +} diff --git a/src-web/components/WorkspaceHeader.tsx b/src-web/components/WorkspaceHeader.tsx index 2d5a118a..404d2a8c 100644 --- a/src-web/components/WorkspaceHeader.tsx +++ b/src-web/components/WorkspaceHeader.tsx @@ -1,7 +1,6 @@ import classnames from 'classnames'; import { memo } from 'react'; import { useActiveRequest } from '../hooks/useActiveRequest'; -import { useSidebarDisplay } from '../hooks/useSidebarDisplay'; import { IconButton } from './core/IconButton'; import { HStack } from './core/Stacks'; import { RequestSettingsDropdown } from './RequestSettingsDropdown'; @@ -15,8 +14,12 @@ interface Props { export const WorkspaceHeader = memo(function WorkspaceHeader({ className }: Props) { const activeRequest = useActiveRequest(); return ( - - + + diff --git a/src-web/components/core/Dialog.tsx b/src-web/components/core/Dialog.tsx index f2712630..13e34d95 100644 --- a/src-web/components/core/Dialog.tsx +++ b/src-web/components/core/Dialog.tsx @@ -1,7 +1,7 @@ import classnames from 'classnames'; import { motion } from 'framer-motion'; import type { ReactNode } from 'react'; -import { Portal } from '../Portal'; +import { Overlay } from '../Overlay'; import { IconButton } from './IconButton'; import { HStack, VStack } from './Stacks'; @@ -25,43 +25,38 @@ export function Dialog({ description, }: Props) { return ( - - {open && ( - -
onOpenChange(false)} - className="fixed inset-0 bg-gray-600/60 dark:bg-black/50" - /> -
-
- onOpenChange(false)} - title="Close dialog" - aria-label="Close" - icon="x" - size="sm" - className="ml-auto absolute right-1 top-1" - /> - - -
{title}
-
- {description &&
{description}
} -
{children}
-
-
-
- - )} - + onOpenChange(false)} portalName="dialog"> +
+
+ + onOpenChange(false)} + title="Close dialog" + aria-label="Close" + icon="x" + size="sm" + className="ml-auto absolute right-1 top-1" + /> + + +
{title}
+
+ {description &&
{description}
} +
{children}
+
+
+
+
+
); } diff --git a/src-web/components/core/Dropdown.tsx b/src-web/components/core/Dropdown.tsx index 703b9b06..76b326db 100644 --- a/src-web/components/core/Dropdown.tsx +++ b/src-web/components/core/Dropdown.tsx @@ -161,8 +161,8 @@ function Menu({ className, items, onClose, triggerRect }: MenuProps) {