mirror of
https://github.com/ND-Framework/ND_Core.git
synced 2026-08-17 05:56:01 +01:00
feat: admin group panel
This commit is contained in:
46
ui/modules/close.js
Normal file
46
ui/modules/close.js
Normal file
@@ -0,0 +1,46 @@
|
||||
import { fetchCallback } from "./fetch.js";
|
||||
|
||||
let isOpen = false;
|
||||
|
||||
export function closeUI() {
|
||||
if (!isOpen) return;
|
||||
isOpen = false;
|
||||
document.body.style.opacity = "0";
|
||||
setTimeout(() => {
|
||||
fetchCallback("hide");
|
||||
}, 400);
|
||||
}
|
||||
|
||||
export function setOpen(state) {
|
||||
isOpen = state;
|
||||
}
|
||||
|
||||
document.addEventListener("keydown", (e) => {
|
||||
if (e.key === "Escape") closeUI();
|
||||
});
|
||||
|
||||
document.addEventListener("click", (event) => {
|
||||
const mainPage = document.querySelector(".main-page");
|
||||
const editPanel = document.querySelector(".edit-panel");
|
||||
if (!mainPage || !editPanel) return;
|
||||
|
||||
const mainRect = mainPage.getBoundingClientRect();
|
||||
const editRect = editPanel.getBoundingClientRect();
|
||||
|
||||
const insideMainPage =
|
||||
event.clientX >= mainRect.left &&
|
||||
event.clientX <= mainRect.right &&
|
||||
event.clientY >= mainRect.top &&
|
||||
event.clientY <= mainRect.bottom;
|
||||
|
||||
const insideEditPanel =
|
||||
event.clientX >= editRect.left &&
|
||||
event.clientX <= editRect.right &&
|
||||
event.clientY >= editRect.top &&
|
||||
event.clientY <= editRect.bottom;
|
||||
|
||||
if (!insideMainPage && !insideEditPanel) {
|
||||
closeUI();
|
||||
}
|
||||
});
|
||||
|
||||
9
ui/modules/fetch.js
Normal file
9
ui/modules/fetch.js
Normal file
@@ -0,0 +1,9 @@
|
||||
export function fetchCallback(name, data, cb) {
|
||||
fetch(`https://${GetParentResourceName()}/${name}`, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json; charset=UTF-8" },
|
||||
body: JSON.stringify(data)
|
||||
}).then(resp => resp.json()).then(resp => {
|
||||
if (cb) cb(resp);
|
||||
});
|
||||
}
|
||||
15
ui/modules/listener.js
Normal file
15
ui/modules/listener.js
Normal file
@@ -0,0 +1,15 @@
|
||||
const nuiMessages = {};
|
||||
|
||||
window.addEventListener("message", function(event) {
|
||||
const item = event.data;
|
||||
const listener = nuiMessages[item.type];
|
||||
if (!listener) return;
|
||||
for (let i = 0; i < listener.length; i++) {
|
||||
listener[i](item);
|
||||
}
|
||||
});
|
||||
|
||||
export function nuiMessage(name, cb) {
|
||||
if (!nuiMessages[name]) nuiMessages[name] = [];
|
||||
nuiMessages[name].push(cb);
|
||||
}
|
||||
Reference in New Issue
Block a user