egroupware_official/kdots/js/app.ts

67 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-04-25 19:35:34 +02:00
/**
* app.ts is auto-built
*/
import {EgwFramework} from "./EgwFramework";
import {EgwFrameworkApp} from "./EgwFrameworkApp";
2024-07-10 23:48:50 +02:00
import {EgwDarkmodeToggle} from "./EgwDarkmodeToggle";
2024-04-25 19:35:34 +02:00
document.addEventListener('DOMContentLoaded', () =>
{
2024-07-10 23:48:50 +02:00
// Not sure what's up here, but it makes sure everything is loaded
if(!window.customElements.get("egw-framework"))
{
window.customElements.define("egw-framework", EgwFramework);
}
if(!window.customElements.get("egw-app"))
{
window.customElements.define("egw-app", EgwFrameworkApp);
}
2024-07-10 23:48:50 +02:00
if(!window.customElements.get("egw-darkmode-toggle"))
{
window.customElements.define("egw-darkmode-toggle", EgwDarkmodeToggle);
}
2024-04-25 19:35:34 +02:00
/* Set up listener on avatar menu */
const avatarMenu = document.querySelector("#topmenu_info_user_avatar");
if(avatarMenu)
2024-04-25 19:35:34 +02:00
{
avatarMenu.addEventListener("sl-select", (e : CustomEvent) =>
{
// allowing javascript urls in topmenu and sidebox only under CSP by binding click handlers to them
const href_regexp = /^javascript:([^\(]+)\((.*)?\);?$/;
let matches = e.detail.item.value.replaceAll(/%27/g, "'").replaceAll(/%22/g, '"').match(href_regexp);
let args = [];
if(matches.length > 1)
{
matches[2] = typeof matches[2] == "undefined" ? [] : matches[2];
try
{
args = JSON.parse('[' + matches[2] + ']');
}
catch(e)
{
// deal with '-enclosed strings (JSON allows only ")
args = JSON.parse('[' + matches[2].replace(/','/g, '","').replace(/((^|,)'|'(,|$))/g, '$2"$3') + ']');
}
args.unshift(matches[1]);
if(matches[1] !== 'void')
{
return et2_call.apply(this, args);
}
return false;
}
window.egw.open_link(e.detail.item.value);
});
}
});
2025-02-10 22:49:23 +01:00
/*
2025-02-04 00:55:56 +01:00
class KDots extends fw_desktop
{
}
2025-02-10 22:49:23 +01:00
window['fw_kdots'] = new KDots();
*/