More mobile overhauling

This commit is contained in:
space-nuko
2023-05-31 16:58:34 -05:00
parent 6f3275da00
commit d8ac97cb87
8 changed files with 85 additions and 30 deletions

View File

@@ -56,7 +56,16 @@
let loading = true; let loading = true;
let lastSize = Number.POSITIVE_INFINITY; let lastSize = Number.POSITIVE_INFINITY;
$: f7 && f7.setDarkMode($interfaceState.isDarkMode)
onMount(async () => { onMount(async () => {
let isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
$interfaceState.isDarkMode = isDarkMode;
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
$interfaceState.isDarkMode = event.matches;
});
appSetupPromise = app.setup().then(() => { appSetupPromise = app.setup().then(() => {
loading = false loading = false
}); });
@@ -112,7 +121,7 @@
// } // }
// }, // },
{ {
path: '/workflows/:workflowID/', path: '/workflows/:workflowIndex/',
component: WorkflowPage, component: WorkflowPage,
options: { options: {
props: { app } props: { app }
@@ -135,8 +144,23 @@
tapHold: true tapHold: true
} }
} }
let body;
const bindBody = (node) => (body = node);
function setDarkClass(isDark: boolean) {
if (!body)
return;
if (isDark) {
body.classList.add("dark");
} else {
body.classList.remove("dark");
}
};
$: setDarkClass($interfaceState.isDarkMode);
</script> </script>
<svelte:body use:bindBody />
<App theme="auto" name="ComfyBox" {...f7params}> <App theme="auto" name="ComfyBox" {...f7params}>
{#if appSetupPromise} {#if appSetupPromise}
{#await appSetupPromise} {#await appSetupPromise}

View File

@@ -34,7 +34,8 @@ function notifyf7(text: string, options: NotifyOptions) {
text: text, text: text,
closeOnClick: true, closeOnClick: true,
closeTimeout, closeTimeout,
on on,
icon: options.imageUrl
}); });
notification.open(); notification.open();
} }

View File

@@ -16,6 +16,8 @@ export type InterfaceState = {
selectedWorkflowID: WorkflowInstID | null selectedWorkflowID: WorkflowInstID | null
showingWorkflow: boolean showingWorkflow: boolean
isDarkMode: boolean
} }
type InterfaceStateOps = { type InterfaceStateOps = {
@@ -34,7 +36,9 @@ const store: Writable<InterfaceState> = writable(
isJumpingToNode: false, isJumpingToNode: false,
selectedWorkflowID: null, selectedWorkflowID: null,
showingWorkflow: false showingWorkflow: false,
isDarkMode: false,
}) })
const debounceDrag = debounce(() => { store.update(s => { s.showIndicator = false; return s }) }, 1000) const debounceDrag = debounce(() => { store.update(s => { s.showIndicator = false; return s }) }, 1000)

View File

@@ -102,4 +102,8 @@
#comfy-file-input { #comfy-file-input {
display: none; display: none;
} }
:global(.dark .toolbar.color-red) {
background: var(--neutral-700) !important;
}
</style> </style>

View File

@@ -3,7 +3,7 @@
import queueState from "$lib/stores/queueState"; import queueState from "$lib/stores/queueState";
import workflowState, { ComfyBoxWorkflow } from "$lib/stores/workflowState"; import workflowState, { ComfyBoxWorkflow } from "$lib/stores/workflowState";
import { getNodeInfo } from "$lib/utils" import { getNodeInfo } from "$lib/utils"
import { Image, LayoutTextSidebarReverse } from "svelte-bootstrap-icons"; import { LayoutTextSidebarReverse, Image, Grid } from "svelte-bootstrap-icons";
import { Link, Toolbar } from "framework7-svelte" import { Link, Toolbar } from "framework7-svelte"
import ProgressBar from "$lib/components/ProgressBar.svelte"; import ProgressBar from "$lib/components/ProgressBar.svelte";
@@ -86,6 +86,7 @@
let toolbarCount = 0; let toolbarCount = 0;
$: toolbarCount = $interfaceState.showingWorkflow ? 2 : 1; $: toolbarCount = $interfaceState.showingWorkflow ? 2 : 1;
const ICON_SIZE = "1.5rem";
</script> </script>
<div class="bottom" style:--toolbarCount={toolbarCount}> <div class="bottom" style:--toolbarCount={toolbarCount}>
@@ -106,10 +107,16 @@
{/if} {/if}
</div> </div>
</div> </div>
<Toolbar bottom> <Toolbar bottom tabbar color="blue" class={toolbarCount > 1 ? "hasGenToolbar" : ""}>
<Link transition="f7-dive" href="/about/">Tab 1</Link> <Link transition="f7-dive" href="/about/">
<Link transition="f7-dive" href={centerHref} tabLinkActive><Image /></Link> <LayoutTextSidebarReverse width={ICON_SIZE} height={ICON_SIZE} />
<Link transition="f7-dive" href="/login/"><LayoutTextSidebarReverse /></Link> </Link>
<Link transition="f7-dive" href={centerHref} tabLinkActive>
<Image width={ICON_SIZE} height={ICON_SIZE} />
</Link>
<Link transition="f7-dive" href="/login/">
<Grid width={ICON_SIZE} height={ICON_SIZE} />
</Link>
</Toolbar> </Toolbar>
{#if $interfaceState.showIndicator} {#if $interfaceState.showIndicator}
<Indicator value={$interfaceState.indicatorValue} /> <Indicator value={$interfaceState.indicatorValue} />
@@ -120,6 +127,22 @@
display: none; display: none;
} }
:global(.progressbar.color-blue) {
background: var(--neutral-400) !important;
}
:global(.dark .progressbar.color-blue) {
background: var(--neutral-500) !important;
}
:global(.dark .toolbar.color-blue) {
background: var(--neutral-800) !important;
}
:global(.dark .toolbar.color-blue.hasGenToolbar) {
border-top: 2px solid var(--neutral-600);
}
.bottom { .bottom {
--toolbarCount: 1; --toolbarCount: 1;
position: absolute; position: absolute;
@@ -141,7 +164,8 @@
.node-name { .node-name {
flex-grow: 1; flex-grow: 1;
background-color: var(--secondary-300); background-color: var(--comfy-node-name-background);
color: var(--comfy-node-name-foreground);
padding: 0.2em; padding: 0.2em;
display: flex; display: flex;
justify-content: center; justify-content: center;

View File

@@ -9,7 +9,7 @@
import { onMount } from "svelte"; import { onMount } from "svelte";
import GenToolbar from '../GenToolbar.svelte' import GenToolbar from '../GenToolbar.svelte'
export let workflowID: WorkflowInstID; export let workflowIndex: number;
export let app: ComfyApp export let app: ComfyApp
let workflow: ComfyBoxWorkflow; let workflow: ComfyBoxWorkflow;
@@ -17,7 +17,13 @@
let title = "" let title = ""
function onPageBeforeIn() { function onPageBeforeIn() {
$interfaceState.selectedWorkflowID = workflowID; workflow = $workflowState.openedWorkflows[workflowIndex-1]
if (workflow) {
$interfaceState.selectedWorkflowID = workflow.id;
}
else {
$interfaceState.selectedWorkflowID = null;
}
$interfaceState.showingWorkflow = true; $interfaceState.showingWorkflow = true;
} }
@@ -25,14 +31,8 @@
$interfaceState.showingWorkflow = false; $interfaceState.showingWorkflow = false;
} }
$: {
workflow = workflowState.getWorkflow(workflowID);
if (workflow) {
workflowState.setActiveWorkflow(app.lCanvas, workflow.id);
}
}
$: layoutState = workflow?.layout; $: layoutState = workflow?.layout;
$: title = workflow?.attrs?.title || `Workflow: ${workflowID}`; $: title = workflow?.attrs?.title || `Workflow: ${workflow?.id || workflowIndex}`;
$: if (layoutState && $layoutState.root) { $: if (layoutState && $layoutState.root) {
root = $layoutState.root root = $layoutState.root

View File

@@ -32,8 +32,8 @@
{#if $workflowState.openedWorkflows} {#if $workflowState.openedWorkflows}
<List strong inset dividersIos class="components-list searchbar-found"> <List strong inset dividersIos class="components-list searchbar-found">
{#each $workflowState.openedWorkflows as workflow} {#each $workflowState.openedWorkflows as workflow, i}
<ListItem link="/workflows/{workflow.id}/" transition="f7-cover" title={workflow.attrs.title || `Workflow: ${workflow.id}`}> <ListItem link="/workflows/{i+1}/" transition="f7-cover" title={workflow.attrs.title || `Workflow: ${workflow.id}`}>
<svelte:fragment slot="media"> <svelte:fragment slot="media">
<div on:pointerdown={(e) => onClickDelete(workflow, e)}> <div on:pointerdown={(e) => onClickDelete(workflow, e)}>
<XCircle width="1.5em" height="1.5em" /> <XCircle width="1.5em" height="1.5em" />

View File

@@ -77,11 +77,9 @@ body {
--comfy-node-name-foreground: var(--body-text-color); --comfy-node-name-foreground: var(--body-text-color);
--comfy-spinner-main-color: var(--neutral-600); --comfy-spinner-main-color: var(--neutral-600);
--comfy-spinner-accent-color: var(--secondary-600); --comfy-spinner-accent-color: var(--secondary-600);
}
.mobile { --f7-navbar-color: var(--body-text-color);
--comfy-progress-bar-background: lightgrey; --f7-navbar-bg-color: var(--neutral-800);
--comfy-progress-bar-foreground: #B3D8A9
} }
@mixin square-button { @mixin square-button {