From 1770a9bf6e2c7f47fe11bb703f6b7219b8168273 Mon Sep 17 00:00:00 2001 From: VandeurenGlenn <8685280+VandeurenGlenn@users.noreply.github.com> Date: Tue, 18 Jun 2024 18:33:02 +0200 Subject: [PATCH] Shell: ui cleanup & move actions to api --- src/shell.ts | 222 ++++++++++++++++++++------------------------------- 1 file changed, 87 insertions(+), 135 deletions(-) diff --git a/src/shell.ts b/src/shell.ts index e9cc799..19c99bb 100644 --- a/src/shell.ts +++ b/src/shell.ts @@ -25,8 +25,9 @@ import '@vandeurenglenn/lit-elements/icon-set.js' import '@vandeurenglenn/lit-elements/icon.js' import state from './state.js' import { Color } from './symbols/default-options.js' -import jsPDF from 'jspdf' -import { version } from 'commander' +import './elements/actions/project-actions.js' +import '@vandeurenglenn/lit-elements/tabs.js' +import '@vandeurenglenn/lit-elements/tab.js' declare global { interface HTMLElementTagNameMap { @@ -54,6 +55,9 @@ export class AppShell extends LitElement { @query('cadle-actions') actions + @query('project-drawer') + projectDrawer + @query('draw-field') field @@ -176,6 +180,24 @@ export class AppShell extends LitElement { onhashchange = this.#onhashchange.bind(this) this.#onhashchange() + + this.addEventListener('drop', this.#drop.bind(this)) + this.addEventListener('dragover', this.#dragover.bind(this)) + + // this.addEventListener('mousedown', () => { + // const target = this.shadowRoot.querySelector('[open]') + // if (target) target.open = false + // }) + } + + #dragover(event) { + event.preventDefault() + this.setAttribute('show-drop', '') + } + + #drop(event) { + event.preventDefault() + console.log(event) } #debang(possibleBangedHash) { @@ -255,16 +277,16 @@ export class AppShell extends LitElement { } if (action === 'create-project') { - await this.savePage() - this.projectName = this.dialog.querySelector('md-filled-text-field').value - this.projectsStore.set(new TextEncoder().encode(this.projectName), { + await cadleShell.savePage() + cadleShell.projectName = cadleShell.dialog.querySelector('md-filled-text-field').value + cadleShell.projectsStore.set(new TextEncoder().encode(cadleShell.projectName), { creationTime: new Date().getTime(), pages: [] }) - this._projectsProvider.setValue([...this.projects, this.projectName]) - this.project = await this.projectsStore.get(this.projectName) - this.loadPage(this.project.pages[0]?.name) + cadleShell._projectsProvider.setValue([...cadleShell.projects, cadleShell.projectName]) + cadleShell.project = await cadleShell.projectsStore.get(cadleShell.projectName) + cadleShell.loadPage(cadleShell.project.pages[0]?.name) location.hash = '#!/draw' } @@ -280,7 +302,7 @@ export class AppShell extends LitElement { } async createProject() { - this.dialog.innerHTML = ` + cadleShell.dialog.innerHTML = `