From 6bb19980e61af3ba04f56b42ad515122564cd4c3 Mon Sep 17 00:00:00 2001 From: nathan Date: Fri, 31 May 2024 10:22:13 -0600 Subject: [PATCH] Framework WIP - App menu progress - Fix loading into iframe --- kdots/js/EgwFramework.ts | 2 +- kdots/js/EgwFrameworkApp.styles.ts | 7 +++++++ kdots/js/EgwFrameworkApp.ts | 24 ++++++++++++++---------- kdots/js/app.ts | 9 ++++++--- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/kdots/js/EgwFramework.ts b/kdots/js/EgwFramework.ts index eb5764c7d6..9f4396636c 100644 --- a/kdots/js/EgwFramework.ts +++ b/kdots/js/EgwFramework.ts @@ -228,7 +228,7 @@ export class EgwFramework extends LitElement } if(url) { - existing.url = url; + existing.load(url); } return existing; } diff --git a/kdots/js/EgwFrameworkApp.styles.ts b/kdots/js/EgwFrameworkApp.styles.ts index e9894083ff..0091090120 100644 --- a/kdots/js/EgwFrameworkApp.styles.ts +++ b/kdots/js/EgwFrameworkApp.styles.ts @@ -213,5 +213,12 @@ export default css` } } + /* End layout */ + + /* Styling */ + + .egw_fw_app__header sl-icon[name="three-dots-vertical"] { + padding: var(--sl-spacing-small); + } ` \ No newline at end of file diff --git a/kdots/js/EgwFrameworkApp.ts b/kdots/js/EgwFrameworkApp.ts index d724bced96..13ed7dde4e 100644 --- a/kdots/js/EgwFrameworkApp.ts +++ b/kdots/js/EgwFrameworkApp.ts @@ -174,7 +174,7 @@ export class EgwFrameworkApp extends LitElement return result } - protected load(url) + public load(url) { if(!url) { @@ -184,6 +184,7 @@ export class EgwFrameworkApp extends LitElement } return; } + this.url = url; let targetUrl = ""; this.useIframe = true; let matches = url.match(/\/index.php\?menuaction=([A-Za-z0-9_\.]*.*&ajax=true.*)$/); @@ -239,13 +240,12 @@ export class EgwFrameworkApp extends LitElement this.loadingPromise = new Promise((resolve, reject) => { const timeout = setTimeout(() => reject(this.name + " load failed"), 5000); - this.addEventListener("load", () => + render(this._iframeTemplate(), this); + this.querySelector("iframe").addEventListener("load", () => { clearTimeout(timeout); resolve() }, {once: true}); - - render(this._iframeTemplate(), this); }); // Might have just changed useIFrame, need to update to show that this.requestUpdate(); @@ -578,12 +578,7 @@ export class EgwFrameworkApp extends LitElement // Just one thing, don't bother with submenu if(menu["entries"].length == 1) { - return html` - this.egw.open_link(menu["entries"][0]["item_link"])} - > - ${menu["title"]} - `; + return this._sideboxMenuItemTemplate({...menu["entries"][0], lang_item: menu["title"]}) } return html` @@ -598,6 +593,11 @@ export class EgwFrameworkApp extends LitElement })}`; } + /** + * An individual sub-item in the 3-dots menu + * @param item + * @returns {TemplateResult<1>} + */ _sideboxMenuItemTemplate(item) { if(item["lang_item"] == "
") @@ -607,8 +607,12 @@ export class EgwFrameworkApp extends LitElement } return html` this.egw.open_link(item["item_link"])} > + ${typeof item["icon_or_star"] == "string" && item["icon_or_star"].endsWith("bullet.svg") ? nothing : html` + + `} ${item["lang_item"]} `; diff --git a/kdots/js/app.ts b/kdots/js/app.ts index aae923a579..5131ff337f 100644 --- a/kdots/js/app.ts +++ b/kdots/js/app.ts @@ -19,8 +19,11 @@ document.addEventListener('DOMContentLoaded', () => } /* Set up listener on avatar menu */ const avatarMenu = document.querySelector("#topmenu_info_user_avatar"); - avatarMenu.addEventListener("sl-select", (e : CustomEvent) => + if(avatarMenu) { - window.egw.open_link(e.detail.item.value); - }); + avatarMenu.addEventListener("sl-select", (e : CustomEvent) => + { + window.egw.open_link(e.detail.item.value); + }); + } }); \ No newline at end of file