5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 18:29:53 +08:00
wails/v3/internal/runtime/desktop/wml.js
Lea Anthony c415c1b321
Added Wails ML experiment
added Window.Close to js runtime
2023-02-15 20:58:57 +11:00

72 lines
2.2 KiB
JavaScript

import {Emit} from "./events";
import {Question} from "./dialogs";
function sendEvent(event) {
let _ = Emit({name: event} );
}
function addWMLEventListeners() {
const elements = document.querySelectorAll('[data-wml-event]');
for (let i = 0; i < elements.length; i++) {
const element = elements[i];
const eventType = element.getAttribute('data-wml-event');
const confirm = element.getAttribute('data-wml-confirm');
let callback = function () {
if (confirm) {
Question({Title: "Confirm", Message:confirm, Buttons:[{Label:"Yes"},{Label:"No", IsDefault:true}]}).then(function (result) {
if (result !== "No") {
sendEvent(eventType);
}
});
return;
}
sendEvent(eventType);
}
// Remove existing listeners
element.removeEventListener("click", callback);
// Add new listener
element.addEventListener("click", callback);
}
}
function callWindowMethod(method) {
if (wails.Window[method] === undefined) {
console.log("Window method " + method + " not found");
}
wails.Window[method]();
}
function addWMLWindowListeners() {
const elements = document.querySelectorAll('[data-wml-window]');
for (let i = 0; i < elements.length; i++) {
const element = elements[i];
const windowMethod = element.getAttribute('data-wml-window');
const confirm = element.getAttribute('data-wml-confirm');
let callback = function () {
if (confirm) {
Question({Title: "Confirm", Message:confirm, Buttons:[{Label:"Yes"},{Label:"No", IsDefault:true}]}).then(function (result) {
if (result !== "No") {
callWindowMethod(windowMethod);
}
});
return;
}
callWindowMethod(windowMethod);
}
// Remove existing listeners
element.removeEventListener("click", callback);
// Add new listener
element.addEventListener("click", callback);
}
}
export function addEventListeners() {
addWMLEventListeners();
addWMLWindowListeners();
}