From 2f537580452e4fd7963a077f7dd0d567186ee706 Mon Sep 17 00:00:00 2001 From: space-nuko <24979496+space-nuko@users.noreply.github.com> Date: Sat, 29 Apr 2023 14:12:20 -0700 Subject: [PATCH] Context menu thing --- src/lib/components/ComfyApp.svelte | 1 - src/lib/components/ComfyUIPane.svelte | 55 ++++++++++++++++++++-- src/lib/components/WidgetContainer.svelte | 32 ++++++++----- src/lib/components/menu/ContextMenu.svelte | 47 ++++++++++++++++++ src/lib/components/menu/Icon.svelte | 3 ++ src/lib/components/menu/Menu.svelte | 45 ++++++++++++++++++ src/lib/components/menu/MenuDivider.svelte | 9 ++++ src/lib/components/menu/MenuOption.svelte | 50 ++++++++++++++++++++ src/lib/components/menu/menu.ts | 3 ++ src/lib/stores/layoutState.ts | 6 ++- 10 files changed, 234 insertions(+), 17 deletions(-) create mode 100644 src/lib/components/menu/ContextMenu.svelte create mode 100644 src/lib/components/menu/Icon.svelte create mode 100644 src/lib/components/menu/Menu.svelte create mode 100644 src/lib/components/menu/MenuDivider.svelte create mode 100644 src/lib/components/menu/MenuOption.svelte create mode 100644 src/lib/components/menu/menu.ts diff --git a/src/lib/components/ComfyApp.svelte b/src/lib/components/ComfyApp.svelte index 30896d3..a8df899 100644 --- a/src/lib/components/ComfyApp.svelte +++ b/src/lib/components/ComfyApp.svelte @@ -177,7 +177,6 @@ diff --git a/src/lib/components/ComfyUIPane.svelte b/src/lib/components/ComfyUIPane.svelte index dd0cf7d..88f5bac 100644 --- a/src/lib/components/ComfyUIPane.svelte +++ b/src/lib/components/ComfyUIPane.svelte @@ -1,4 +1,5 @@ -
+
+{#if showMenu} + + + + + + + + Look! An icon! + + +{/if} + diff --git a/src/lib/components/WidgetContainer.svelte b/src/lib/components/WidgetContainer.svelte index 37df5e9..3aa9c66 100644 --- a/src/lib/components/WidgetContainer.svelte +++ b/src/lib/components/WidgetContainer.svelte @@ -22,6 +22,7 @@ let widget: WidgetLayout | null = null; let widgetState: WidgetUIState | null = null; let children: IDragItem[] | null = null; + let showHandles: boolean = false; const flipDurationMs = 100; $: if (dragItem) { @@ -38,6 +39,10 @@ } } + $: showHandles = $uiState.uiEditMode === "widgets" // TODO + && zIndex > 1 + && !$layoutState.isMenuOpen + function handleConsider(evt: any) { children = layoutState.updateChildren(dragItem, evt.detail.items) // console.log(dragItems); @@ -49,6 +54,9 @@ }; const startDrag = (evt: MouseEvent) => { + if (evt.button === 2) + return; + const dragItemId: string = evt.target.dataset["dragItemId"]; const item = $layoutState.allItems[dragItemId].dragItem if (evt.ctrlKey) { @@ -79,12 +87,12 @@
1}> + class:container-edit-outline={$uiState.uiEditMode === "widgets" && zIndex > 1}> {#if container.attrs.showTitle} -
- {#if $uiState.uiEditMode === "containers" && zIndex > 1} + {#if showHandles}
{/if} @@ -131,7 +139,7 @@ >
- {#if $uiState.uiEditMode ==="widgets" && zIndex > 1} + {#if showHandles}
{/if} {/if} @@ -197,10 +205,12 @@ } } - .container, .widget { - &.selected { - background: var(--color-yellow-200); - } + .widget.selected { + background: var(--color-yellow-200); + } + + .container.selected > :global(.block) { + background: var(--color-yellow-300); } .is-executing { @@ -286,7 +296,7 @@ border-width: 2px; border-style: dashed !important; margin: 0.2em; - padding: 1.2em; + padding: 0.2em; } .widget-edit-outline { diff --git a/src/lib/components/menu/ContextMenu.svelte b/src/lib/components/menu/ContextMenu.svelte new file mode 100644 index 0000000..a4c963a --- /dev/null +++ b/src/lib/components/menu/ContextMenu.svelte @@ -0,0 +1,47 @@ + + +{#if showMenu} + + + + + + + + Look! An icon! + + +{/if} + + diff --git a/src/lib/components/menu/Icon.svelte b/src/lib/components/menu/Icon.svelte new file mode 100644 index 0000000..0af8dc8 --- /dev/null +++ b/src/lib/components/menu/Icon.svelte @@ -0,0 +1,3 @@ + + + diff --git a/src/lib/components/menu/Menu.svelte b/src/lib/components/menu/Menu.svelte new file mode 100644 index 0000000..6322a94 --- /dev/null +++ b/src/lib/components/menu/Menu.svelte @@ -0,0 +1,45 @@ + + + + + + diff --git a/src/lib/components/menu/MenuDivider.svelte b/src/lib/components/menu/MenuDivider.svelte new file mode 100644 index 0000000..13041d5 --- /dev/null +++ b/src/lib/components/menu/MenuDivider.svelte @@ -0,0 +1,9 @@ +
+ + diff --git a/src/lib/components/menu/MenuOption.svelte b/src/lib/components/menu/MenuOption.svelte new file mode 100644 index 0000000..bb7cca9 --- /dev/null +++ b/src/lib/components/menu/MenuOption.svelte @@ -0,0 +1,50 @@ + + +
+ {#if text} + {text} + {:else} + + {/if} +
+ + diff --git a/src/lib/components/menu/menu.ts b/src/lib/components/menu/menu.ts new file mode 100644 index 0000000..108b2fd --- /dev/null +++ b/src/lib/components/menu/menu.ts @@ -0,0 +1,3 @@ +const key = {}; + +export { key }; diff --git a/src/lib/stores/layoutState.ts b/src/lib/stores/layoutState.ts index f351bf2..fbf5ce8 100644 --- a/src/lib/stores/layoutState.ts +++ b/src/lib/stores/layoutState.ts @@ -16,7 +16,8 @@ export type LayoutState = { root: IDragItem | null, allItems: Record, currentId: number, - currentSelection: IDragItem[] + currentSelection: DragItemID[], + isMenuOpen: boolean } export type Attributes = { @@ -62,7 +63,8 @@ const store: Writable = writable({ root: null, allItems: [], currentId: 0, - currentSelection: [] + currentSelection: [], + isMenuOpen: false }) function findDefaultContainerForInsertion(): ContainerLayout | null {