mirror of
https://github.com/bunkerity/bunkerized-nginx
synced 2023-12-13 21:30:18 +01:00
Merge pull request #429 from syrk4web/staging
change and fix service logic
This commit is contained in:
commit
922b32b2ee
12 changed files with 290 additions and 315 deletions
|
@ -859,10 +859,6 @@ h6 {
|
|||
z-index: -10;
|
||||
}
|
||||
|
||||
.z-0 {
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.z-10 {
|
||||
z-index: 10;
|
||||
}
|
||||
|
@ -992,16 +988,6 @@ h6 {
|
|||
margin-right: 0.75rem;
|
||||
}
|
||||
|
||||
.mx-4 {
|
||||
margin-left: 1rem;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
.my-1\.5 {
|
||||
margin-top: 0.375rem;
|
||||
margin-bottom: 0.375rem;
|
||||
}
|
||||
|
||||
.mb-2 {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
@ -1130,10 +1116,6 @@ h6 {
|
|||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
.mb-1\.5 {
|
||||
margin-bottom: 0.375rem;
|
||||
}
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
}
|
||||
|
@ -1473,6 +1455,16 @@ h6 {
|
|||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.translate-y-0\.5 {
|
||||
--tw-translate-y: 0.125rem;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.translate-y-0 {
|
||||
--tw-translate-y: 0px;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.translate-x-1 {
|
||||
--tw-translate-x: 0.25rem;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
|
@ -1498,16 +1490,6 @@ h6 {
|
|||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.translate-y-0\.5 {
|
||||
--tw-translate-y: 0.125rem;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.translate-y-0 {
|
||||
--tw-translate-y: 0px;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.rotate-12 {
|
||||
--tw-rotate: 12deg;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
|
@ -1547,16 +1529,6 @@ h6 {
|
|||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.scale-y-110 {
|
||||
--tw-scale-y: 1.1;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.scale-y-125 {
|
||||
--tw-scale-y: 1.25;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.transform {
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
@ -1796,10 +1768,6 @@ h6 {
|
|||
border-style: solid;
|
||||
}
|
||||
|
||||
.\!border-solid {
|
||||
border-style: solid !important;
|
||||
}
|
||||
|
||||
.border-dashed {
|
||||
border-style: dashed;
|
||||
}
|
||||
|
@ -1895,10 +1863,6 @@ h6 {
|
|||
background-color: rgb(58 65 111 / 0.1);
|
||||
}
|
||||
|
||||
.bg-slate-700\/50 {
|
||||
background-color: rgb(52 71 103 / 0.5);
|
||||
}
|
||||
|
||||
.bg-none {
|
||||
background-image: none;
|
||||
}
|
||||
|
@ -2274,11 +2238,6 @@ h6 {
|
|||
line-height: 1.75rem;
|
||||
}
|
||||
|
||||
.text-2xl {
|
||||
font-size: 1.5rem;
|
||||
line-height: 2rem;
|
||||
}
|
||||
|
||||
.text-3xl {
|
||||
font-size: 1.875rem;
|
||||
line-height: 2.25rem;
|
||||
|
@ -2300,6 +2259,10 @@ h6 {
|
|||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.lowercase {
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
.capitalize {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
@ -2308,6 +2271,11 @@ h6 {
|
|||
font-style: italic;
|
||||
}
|
||||
|
||||
.ordinal {
|
||||
--tw-ordinal: ordinal;
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
}
|
||||
|
||||
.leading-default {
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
@ -2751,11 +2719,6 @@ h6 {
|
|||
background-color: rgb(8 85 119 / 0.05);
|
||||
}
|
||||
|
||||
.hover\:bg-gray-200:hover {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(233 236 239 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.hover\:bg-blue-500\/80:hover {
|
||||
background-color: rgb(94 114 228 / 0.8);
|
||||
}
|
||||
|
@ -2864,10 +2827,22 @@ h6 {
|
|||
opacity: 0.85;
|
||||
}
|
||||
|
||||
.disabled\:pointer-events-none:disabled {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.disabled\:cursor-not-allowed:disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.disabled\:cursor-none:disabled {
|
||||
cursor: none;
|
||||
}
|
||||
|
||||
.disabled\:cursor-default:disabled {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.disabled\:border-gray-400:disabled {
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgb(206 212 218 / var(--tw-border-opacity));
|
||||
|
@ -2947,15 +2922,15 @@ h6 {
|
|||
background-color: rgb(5 17 57 / 0.3);
|
||||
}
|
||||
|
||||
.dark .dark\:bg-slate-700\/50 {
|
||||
background-color: rgb(52 71 103 / 0.5);
|
||||
}
|
||||
|
||||
.dark .dark\:bg-gray-800 {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(37 47 64 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.dark .dark\:bg-slate-700\/50 {
|
||||
background-color: rgb(52 71 103 / 0.5);
|
||||
}
|
||||
|
||||
.dark .dark\:bg-gradient-to-r {
|
||||
background-image: linear-gradient(to right, var(--tw-gradient-stops));
|
||||
}
|
||||
|
@ -2987,22 +2962,6 @@ h6 {
|
|||
fill: #495057;
|
||||
}
|
||||
|
||||
.dark .dark\:stroke-slate-700 {
|
||||
stroke: #344767;
|
||||
}
|
||||
|
||||
.dark .dark\:stroke-gray-400 {
|
||||
stroke: #ced4da;
|
||||
}
|
||||
|
||||
.dark .dark\:stroke-gray-700 {
|
||||
stroke: #495057;
|
||||
}
|
||||
|
||||
.dark .dark\:stroke-gray-500 {
|
||||
stroke: #adb5bd;
|
||||
}
|
||||
|
||||
.dark .dark\:stroke-gray-600 {
|
||||
stroke: #6c757d;
|
||||
}
|
||||
|
@ -3117,11 +3076,6 @@ h6 {
|
|||
background-color: rgb(8 85 119 / 0.2);
|
||||
}
|
||||
|
||||
.dark .dark\:hover\:bg-slate-700:hover {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(52 71 103 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.dark .dark\:hover\:bg-slate-700\/50:hover {
|
||||
background-color: rgb(52 71 103 / 0.5);
|
||||
}
|
||||
|
|
|
@ -29,12 +29,14 @@ class Download {
|
|||
|
||||
async sendFileToDL(jobName, fileName) {
|
||||
window.open(
|
||||
`${location.href}/download?job_name=${jobName}&file_name=${fileName}`
|
||||
`${location.href.replace(
|
||||
"cache",
|
||||
"jobs"
|
||||
)}/download?job_name=${jobName}&file_name=${fileName}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const setModal = new FolderModal("cache");
|
||||
const setEditor = new FolderEditor();
|
||||
const setFolderNav = new FolderNav("cache");
|
||||
|
|
|
@ -21,27 +21,30 @@ class Menu {
|
|||
|
||||
class News {
|
||||
constructor() {
|
||||
this.BASE_URL = "https://www.staging.bunkerweb.io/";
|
||||
this.BASE_URL = "https://www.bunkerweb.io/";
|
||||
this.init();
|
||||
}
|
||||
|
||||
init() {
|
||||
window.addEventListener("load", async () => {
|
||||
try {
|
||||
const res = await fetch(
|
||||
"https://www.staging.bunkerweb.io/api/posts/0/2",
|
||||
{
|
||||
headers: {
|
||||
method: "GET",
|
||||
},
|
||||
}
|
||||
);
|
||||
return await this.render(res);
|
||||
} catch (err) {}
|
||||
window.addEventListener("load", () => {
|
||||
const res = fetch("https://www.bunkerweb.io/api/posts/0/1", {
|
||||
headers: {
|
||||
method: "GET",
|
||||
Accept: "application/json",
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
})
|
||||
.then((res) => {
|
||||
console.log("data");
|
||||
const data = res.data;
|
||||
console.log(data);
|
||||
this.render(res);
|
||||
})
|
||||
.catch((err) => console.log(err));
|
||||
});
|
||||
}
|
||||
|
||||
async render(lastNews) {
|
||||
render(lastNews) {
|
||||
const newsContainer = document.querySelector("[news-container]");
|
||||
//remove default message
|
||||
newsContainer.textContent = "";
|
||||
|
|
|
@ -250,7 +250,7 @@ class FetchLogs {
|
|||
|
||||
//get settings
|
||||
setSettings() {
|
||||
this.instanceName = this.instance.textContent;
|
||||
this.instanceName = this.instance.textContent.trim();
|
||||
//get range date
|
||||
this.fromDate = Date.parse(this.fromDateInp.value)
|
||||
? Date.parse(this.fromDateInp.value)
|
||||
|
|
|
@ -20,18 +20,19 @@ class ServiceModal {
|
|||
this.formDelete = this.modal.querySelector("[services-modal-form-delete]");
|
||||
//container
|
||||
this.container = document.querySelector("main");
|
||||
//general inputs
|
||||
this.inputs = this.modal.querySelectorAll("input[default-value]");
|
||||
this.selects = this.modal.querySelectorAll("select[default-value]");
|
||||
this.lastGroup = "";
|
||||
this.lastAction = "";
|
||||
|
||||
this.init();
|
||||
}
|
||||
|
||||
//store default config data on DOM
|
||||
//to update modal data on new button click
|
||||
|
||||
getActionAndServName(target) {
|
||||
const action = target.closest("button").getAttribute("services-action");
|
||||
const serviceName = target.closest("button").getAttribute("services-name");
|
||||
|
||||
return [action, serviceName];
|
||||
}
|
||||
|
||||
init() {
|
||||
this.modal.addEventListener("click", (e) => {
|
||||
//close
|
||||
|
@ -43,152 +44,112 @@ class ServiceModal {
|
|||
});
|
||||
|
||||
this.container.addEventListener("click", (e) => {
|
||||
//actions
|
||||
//edit action
|
||||
try {
|
||||
if (e.target.closest("button").hasAttribute("services-action")) {
|
||||
//do nothing if same btn and service as before
|
||||
const isLastSame = this.isLastServAndAct(e.target);
|
||||
if (isLastSame) return;
|
||||
//else set the good form
|
||||
const action = e.target
|
||||
.closest("button")
|
||||
.getAttribute("services-action");
|
||||
const serviceName = e.target
|
||||
.closest("button")
|
||||
.getAttribute("services-name");
|
||||
|
||||
if (action === "edit" || action === "new") {
|
||||
this.setForm(action, serviceName, this.formNewEdit);
|
||||
}
|
||||
|
||||
if (action === "delete")
|
||||
this.setForm(action, serviceName, this.formDelete);
|
||||
|
||||
//get custom settings of service and apply it to modal settings
|
||||
if (action === "edit") {
|
||||
const servicesSettings = e.target
|
||||
.closest("[services-service]")
|
||||
.querySelector("[services-settings]")
|
||||
.getAttribute("value");
|
||||
const obj = JSON.parse(servicesSettings);
|
||||
this.updateModalData(obj);
|
||||
}
|
||||
//open modal when all done
|
||||
|
||||
if (action === "new") this.addOneMultGroup();
|
||||
if (
|
||||
e.target.closest("button").getAttribute("services-action") === "edit"
|
||||
) {
|
||||
//set form info and right form
|
||||
const [action, serviceName] = this.getActionAndServName(e.target);
|
||||
this.setForm(action, serviceName, this.formNewEdit);
|
||||
//get service data and parse it
|
||||
//multiple type logic is launch at same time on relate class
|
||||
const servicesSettings = e.target
|
||||
.closest("[services-service]")
|
||||
.querySelector("[services-settings]")
|
||||
.getAttribute("value");
|
||||
const obj = JSON.parse(servicesSettings);
|
||||
this.updateModalData(obj);
|
||||
//show modal
|
||||
this.openModal();
|
||||
}
|
||||
} catch (err) {}
|
||||
//new action
|
||||
try {
|
||||
if (
|
||||
e.target.closest("button").getAttribute("services-action") === "new"
|
||||
) {
|
||||
//set form info and right form
|
||||
const [action, serviceName] = this.getActionAndServName(e.target);
|
||||
this.setForm(action, serviceName, this.formNewEdit);
|
||||
//set default value with method default
|
||||
this.setSettingsDefault();
|
||||
//server name is unset
|
||||
const inpServName = document.querySelector("input#SERVER_NAME");
|
||||
inpServName.value = "";
|
||||
//show modal
|
||||
this.openModal();
|
||||
}
|
||||
} catch (err) {}
|
||||
//delete action
|
||||
try {
|
||||
if (
|
||||
e.target.closest("button").getAttribute("services-action") ===
|
||||
"delete"
|
||||
) {
|
||||
//set form info and right form
|
||||
const [action, serviceName] = this.getActionAndServName(e.target);
|
||||
this.setForm(action, serviceName, this.formDelete);
|
||||
//show modal
|
||||
this.openModal();
|
||||
}
|
||||
} catch (err) {}
|
||||
});
|
||||
}
|
||||
|
||||
addOneMultGroup() {
|
||||
const settings = document.querySelector("[services-modal-form]");
|
||||
const multAddBtns = settings.querySelectorAll("[services-multiple-add]");
|
||||
multAddBtns.forEach((btn) => {
|
||||
//check if already one (SCHEMA exclude so length >= 2)
|
||||
const plugin = btn.closest("[plugin-item]");
|
||||
if (plugin.querySelectorAll("[services-settings-multiple]").length >= 2)
|
||||
setSettingsDefault() {
|
||||
const inps = this.modal.querySelectorAll("input");
|
||||
inps.forEach((inp) => {
|
||||
//form related values are excludes
|
||||
const inpName = inp.getAttribute("name");
|
||||
if (
|
||||
inpName === "csrf_token" ||
|
||||
inpName === "SERVER_NAME" ||
|
||||
inpName === "OLD_SERVER_NAME" ||
|
||||
inpName === "operation"
|
||||
)
|
||||
return;
|
||||
btn.click();
|
||||
});
|
||||
}
|
||||
|
||||
isLastServAndAct(target) {
|
||||
const serviceName = target.closest("button").getAttribute("services-name");
|
||||
const serviceAction = target
|
||||
.closest("button")
|
||||
.getAttribute("services-action");
|
||||
|
||||
if (this.lastGroup === serviceName && this.lastAction === serviceAction) {
|
||||
this.openModal();
|
||||
return true;
|
||||
} else {
|
||||
this.lastGroup = serviceName;
|
||||
this.lastAction = serviceAction;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
setDefaultValue() {
|
||||
this.inputs.forEach((inp) => {
|
||||
let defaultVal = "";
|
||||
try {
|
||||
defaultVal = inp.getAttribute("default-value");
|
||||
} catch (err) {
|
||||
defaultVal = "";
|
||||
}
|
||||
|
||||
let defaultMethod = "ui";
|
||||
try {
|
||||
defaultMethod = inp.getAttribute("default-method");
|
||||
} catch (err) {
|
||||
defaultMethod = "ui";
|
||||
}
|
||||
//SET METHOD
|
||||
this.setDisabled(inp, defaultMethod);
|
||||
//for all other settings values
|
||||
const defaultMethod = "default";
|
||||
const defaultVal = inp.getAttribute("default-value") || "";
|
||||
|
||||
//SET VALUE
|
||||
if (inp.getAttribute("type") === "checkbox") {
|
||||
inp.checked = defaultVal === "yes" ? true : false;
|
||||
inp.setAttribute("value", defaultVal);
|
||||
inp.value = defaultVal;
|
||||
inp.setAttribute("method", defaultMethod);
|
||||
}
|
||||
|
||||
if (inp.getAttribute("type") !== "checkbox") {
|
||||
inp.setAttribute("value", defaultVal);
|
||||
inp.setAttribute("method", defaultMethod);
|
||||
}
|
||||
|
||||
//SET METHOD
|
||||
this.setDisabled(inp, defaultMethod);
|
||||
});
|
||||
|
||||
this.selects.forEach((select) => {
|
||||
let defaultVal = "";
|
||||
try {
|
||||
defaultVal = select.getAttribute("default-value");
|
||||
} catch (err) {
|
||||
defaultVal = "";
|
||||
}
|
||||
const selects = this.modal.querySelectorAll("select");
|
||||
selects.forEach((select) => {
|
||||
const defaultMethod = "default";
|
||||
const defaultVal = select.getAttribute("default-value") || "";
|
||||
|
||||
let defaultMethod = "ui";
|
||||
try {
|
||||
defaultMethod = select.getAttribute("default-method");
|
||||
} catch (err) {
|
||||
defaultMethod = "ui";
|
||||
}
|
||||
document
|
||||
.querySelector(
|
||||
`[setting-select=${select.getAttribute("setting-select-default")}]`
|
||||
)
|
||||
.removeAttribute("disabled");
|
||||
|
||||
if (defaultMethod === "ui" || defaultMethod === "default") {
|
||||
document
|
||||
.querySelector(
|
||||
`[setting-select=${select.getAttribute("setting-select-default")}]`
|
||||
)
|
||||
.removeAttribute("disabled");
|
||||
} else {
|
||||
document
|
||||
.querySelector(
|
||||
`[setting-select=${select.getAttribute("setting-select-default")}]`
|
||||
)
|
||||
.setAttribute("disabled", "");
|
||||
}
|
||||
select.parentElement
|
||||
.querySelector(
|
||||
`button[setting-select-dropdown-btn][value='${defaultVal}']`
|
||||
)
|
||||
.click();
|
||||
|
||||
this.setDisabled(select, defaultMethod);
|
||||
});
|
||||
|
||||
//server name always enabled for default
|
||||
this.setNameSetting("ui", "");
|
||||
}
|
||||
|
||||
setNameSetting(method, value) {
|
||||
const nameInp = document.querySelector('input[name="SERVER_NAME"]');
|
||||
|
||||
if (method === "ui" || method === "default") {
|
||||
nameInp.removeAttribute("disabled");
|
||||
} else {
|
||||
nameInp.setAttribute("disabled", "");
|
||||
}
|
||||
|
||||
nameInp.value = value;
|
||||
}
|
||||
|
||||
setDisabled(inp, method) {
|
||||
|
@ -280,9 +241,17 @@ class ServiceModal {
|
|||
const inps = this.modal.querySelectorAll(`[name='${key}']`);
|
||||
|
||||
inps.forEach((inp) => {
|
||||
//form related values are excludes
|
||||
const inpName = inp.getAttribute("name");
|
||||
if (
|
||||
inpName === "csrf_token" ||
|
||||
inpName === "SERVER_NAME" ||
|
||||
inpName === "OLD_SERVER_NAME" ||
|
||||
inpName === "operation"
|
||||
)
|
||||
return;
|
||||
|
||||
//SET DISABLED / ENABLED
|
||||
this.setDisabled(inp, method);
|
||||
//SET VALUE
|
||||
//for regular input
|
||||
if (
|
||||
inp.tagName === "INPUT" &&
|
||||
|
@ -290,6 +259,7 @@ class ServiceModal {
|
|||
) {
|
||||
inp.setAttribute("value", value);
|
||||
inp.value = value;
|
||||
inp.setAttribute("method", method);
|
||||
}
|
||||
//for checkbox
|
||||
if (
|
||||
|
@ -298,11 +268,14 @@ class ServiceModal {
|
|||
) {
|
||||
inp.checked = value === "yes" ? true : false;
|
||||
inp.setAttribute("value", value);
|
||||
if (inpt.hasAttribute("disabled")) {
|
||||
const hidden_inpt = inpt
|
||||
inp.setAttribute("method", method);
|
||||
|
||||
if (inp.hasAttribute("disabled")) {
|
||||
const hidden_inp = inp
|
||||
.closest("div[checkbox-handler]")
|
||||
.querySelector("input[type='hidden']");
|
||||
hidden_inpt.setAttribute("value", value);
|
||||
hidden_inp.setAttribute("value", value);
|
||||
hidden_inp.setAttribute("method", method);
|
||||
}
|
||||
}
|
||||
//for select
|
||||
|
@ -312,15 +285,14 @@ class ServiceModal {
|
|||
`button[setting-select-dropdown-btn][value='${value}']`
|
||||
)
|
||||
.click();
|
||||
inp.setAttribute("method", method);
|
||||
}
|
||||
|
||||
//check disabled/enabled after setting values and methods
|
||||
this.setDisabled(inp, method);
|
||||
});
|
||||
} catch (err) {}
|
||||
}
|
||||
//name setting value
|
||||
this.setNameSetting(
|
||||
settings["SERVER_NAME"]["method"],
|
||||
settings["SERVER_NAME"]["value"]
|
||||
);
|
||||
}
|
||||
|
||||
//UTILS
|
||||
|
@ -335,6 +307,9 @@ class ServiceModal {
|
|||
}
|
||||
|
||||
openModal() {
|
||||
//switch to first setting
|
||||
document.querySelector("button[tab-handler]").click();
|
||||
//show modal el
|
||||
this.modal.classList.add("flex");
|
||||
this.modal.classList.remove("hidden");
|
||||
}
|
||||
|
@ -345,42 +320,9 @@ class Multiple {
|
|||
this.prefix = prefix;
|
||||
this.container = document.querySelector("main");
|
||||
this.modalForm = document.querySelector(`[${this.prefix}-modal-form]`);
|
||||
this.lastGroup = "";
|
||||
this.init();
|
||||
}
|
||||
|
||||
sortMultipleByContainerAndSuffixe(obj) {
|
||||
const sortMultiples = {};
|
||||
for (const [name, value] of Object.entries(obj)) {
|
||||
//split name and check if there is a suffixe
|
||||
const splitName = name.split("_");
|
||||
//suffixe start with number 1, if none give arbitrary 0 value to store on same group
|
||||
const isSuffixe = !isNaN(splitName[splitName.length - 1]) ? true : false;
|
||||
const suffixe = isSuffixe ? splitName[splitName.length - 1] : "0";
|
||||
//remove suffix if exists and query related name_SCHEMA to get container info
|
||||
const nameSuffixLess = isSuffixe
|
||||
? name.replace(`_${splitName[splitName.length - 1]}`, "").trim()
|
||||
: name.trim();
|
||||
const relateSetting = document.querySelector(
|
||||
`[setting-container=${nameSuffixLess}_SCHEMA]`
|
||||
);
|
||||
const relateCtnr = relateSetting.closest("[services-settings-multiple]");
|
||||
const relateCtnrName = relateCtnr.getAttribute(
|
||||
"services-settings-multiple"
|
||||
);
|
||||
//then we sort the setting on the right container name by suffixe number
|
||||
if (!(relateCtnrName in sortMultiples)) {
|
||||
sortMultiples[relateCtnrName] = {};
|
||||
}
|
||||
|
||||
if (!(suffixe in sortMultiples[relateCtnrName])) {
|
||||
sortMultiples[relateCtnrName][suffixe] = {};
|
||||
}
|
||||
sortMultiples[relateCtnrName][suffixe][name] = value;
|
||||
}
|
||||
return sortMultiples;
|
||||
}
|
||||
|
||||
init() {
|
||||
window.addEventListener("load", () => {
|
||||
this.hiddenIfNoMultiples();
|
||||
|
@ -392,13 +334,6 @@ class Multiple {
|
|||
if (
|
||||
e.target.closest("button").getAttribute("services-action") === "edit"
|
||||
) {
|
||||
//avoid reupdate if same service
|
||||
const serviceName = e.target
|
||||
.closest("button")
|
||||
.getAttribute("services-name");
|
||||
if (this.lastGroup === serviceName) return;
|
||||
//else
|
||||
this.lastGroup = serviceName;
|
||||
//remove all multiples
|
||||
this.removePrevMultiples();
|
||||
//get multiple service values and parse as obj
|
||||
|
@ -414,6 +349,15 @@ class Multiple {
|
|||
this.setMultipleToDOM(sortMultiples);
|
||||
}
|
||||
} catch (err) {}
|
||||
//new button
|
||||
try {
|
||||
if (
|
||||
e.target.closest("button").getAttribute("services-action") === "new"
|
||||
) {
|
||||
this.removePrevMultiples();
|
||||
this.addOneMultGroup();
|
||||
}
|
||||
} catch (err) {}
|
||||
});
|
||||
|
||||
this.modalForm.addEventListener("click", (e) => {
|
||||
|
@ -455,7 +399,7 @@ class Multiple {
|
|||
//clone schema to create a group with new num
|
||||
const schemaClone = schema.cloneNode(true);
|
||||
this.changeCloneSuffix(schemaClone, setNum);
|
||||
|
||||
this.setDisabled();
|
||||
this.showClone(schema, schemaClone);
|
||||
//insert new group before first one
|
||||
//show all groups
|
||||
|
@ -495,6 +439,50 @@ class Multiple {
|
|||
});
|
||||
}
|
||||
|
||||
sortMultipleByContainerAndSuffixe(obj) {
|
||||
const sortMultiples = {};
|
||||
for (const [name, value] of Object.entries(obj)) {
|
||||
//split name and check if there is a suffixe
|
||||
const splitName = name.split("_");
|
||||
//suffixe start with number 1, if none give arbitrary 0 value to store on same group
|
||||
const isSuffixe = !isNaN(splitName[splitName.length - 1]) ? true : false;
|
||||
const suffixe = isSuffixe ? splitName[splitName.length - 1] : "0";
|
||||
//remove suffix if exists and query related name_SCHEMA to get container info
|
||||
const nameSuffixLess = isSuffixe
|
||||
? name.replace(`_${splitName[splitName.length - 1]}`, "").trim()
|
||||
: name.trim();
|
||||
const relateSetting = document.querySelector(
|
||||
`[setting-container=${nameSuffixLess}_SCHEMA]`
|
||||
);
|
||||
const relateCtnr = relateSetting.closest("[services-settings-multiple]");
|
||||
const relateCtnrName = relateCtnr.getAttribute(
|
||||
"services-settings-multiple"
|
||||
);
|
||||
//then we sort the setting on the right container name by suffixe number
|
||||
if (!(relateCtnrName in sortMultiples)) {
|
||||
sortMultiples[relateCtnrName] = {};
|
||||
}
|
||||
|
||||
if (!(suffixe in sortMultiples[relateCtnrName])) {
|
||||
sortMultiples[relateCtnrName][suffixe] = {};
|
||||
}
|
||||
sortMultiples[relateCtnrName][suffixe][name] = value;
|
||||
}
|
||||
return sortMultiples;
|
||||
}
|
||||
|
||||
addOneMultGroup() {
|
||||
const settings = document.querySelector("[services-modal-form]");
|
||||
const multAddBtns = settings.querySelectorAll("[services-multiple-add]");
|
||||
multAddBtns.forEach((btn) => {
|
||||
//check if already one (SCHEMA exclude so length >= 2)
|
||||
const plugin = btn.closest("[plugin-item]");
|
||||
if (plugin.querySelectorAll("[services-settings-multiple]").length >= 2)
|
||||
return;
|
||||
btn.click();
|
||||
});
|
||||
}
|
||||
|
||||
showMultByAtt(att) {
|
||||
const multContainers = document.querySelectorAll(
|
||||
`[services-settings-multiple^=${att}]`
|
||||
|
@ -635,6 +623,17 @@ class Multiple {
|
|||
try {
|
||||
const inps = settingContainer.querySelectorAll("input");
|
||||
inps.forEach((inp) => {
|
||||
//form related values are excludes
|
||||
const inpName = inp.getAttribute("name");
|
||||
if (
|
||||
inpName === "csrf_token" ||
|
||||
inpName === "SERVER_NAME" ||
|
||||
inpName === "OLD_SERVER_NAME" ||
|
||||
inpName === "operation"
|
||||
)
|
||||
return;
|
||||
|
||||
//for settings input
|
||||
if (inp.getAttribute("type") === "checkbox") {
|
||||
inp.checked = value === "yes" ? true : false;
|
||||
if (inp.hasAttribute("disabled")) {
|
||||
|
@ -646,7 +645,7 @@ class Multiple {
|
|||
}
|
||||
|
||||
inp.value = value;
|
||||
inp.setAttribute("default-method", method);
|
||||
inp.setAttribute("method", method);
|
||||
});
|
||||
} catch (err) {}
|
||||
//update select
|
||||
|
@ -667,7 +666,7 @@ class Multiple {
|
|||
? option.setAttribute("selected")
|
||||
: option.removeAttribute("selected");
|
||||
}
|
||||
select.setAttribute("default-method", method);
|
||||
select.setAttribute("method", method);
|
||||
} catch (err) {}
|
||||
}
|
||||
|
||||
|
@ -687,27 +686,31 @@ class Multiple {
|
|||
settings.forEach((setting) => {
|
||||
//replace input info
|
||||
try {
|
||||
const inp = setting.querySelector("input");
|
||||
const method = inp.getAttribute("default-method");
|
||||
if (method === "ui" || method === "default") {
|
||||
inp.removeAttribute("disabled");
|
||||
} else {
|
||||
inp.setAttribute("disabled", "");
|
||||
}
|
||||
const inps = setting.querySelectorAll("input");
|
||||
inps.forEach((inp) => {
|
||||
const method = inp.getAttribute("method") || "default";
|
||||
if (method === "ui" || method === "default") {
|
||||
inp.removeAttribute("disabled");
|
||||
} else {
|
||||
inp.setAttribute("disabled", "");
|
||||
}
|
||||
});
|
||||
} catch (err) {}
|
||||
//or select
|
||||
try {
|
||||
const select = setting.querySelector("select");
|
||||
const method = select.getAttribute("default-method");
|
||||
const name = select.getAttribute("services-setting-select-default");
|
||||
const selDOM = document.querySelector(
|
||||
`button[services-setting-select='${name}']`
|
||||
);
|
||||
if (method === "ui" || method === "default") {
|
||||
selDOM.setAttribute("disabled", "");
|
||||
} else {
|
||||
selDOM.setAttribute("disabled", "");
|
||||
}
|
||||
const selects = setting.querySelectorAll("select");
|
||||
selects.forEach((select) => {
|
||||
const method = select.getAttribute("method") || "default";
|
||||
const name = select.getAttribute("services-setting-select-default");
|
||||
const selDOM = document.querySelector(
|
||||
`button[services-setting-select='${name}']`
|
||||
);
|
||||
if (method === "ui" || method === "default") {
|
||||
selDOM.removeAttribute("disabled", "");
|
||||
} else {
|
||||
selDOM.setAttribute("disabled", "");
|
||||
}
|
||||
});
|
||||
} catch (err) {}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -3,8 +3,8 @@ const plugin = require("tailwindcss/plugin");
|
|||
module.exports = {
|
||||
content: [
|
||||
"./templates/*.{html,js}",
|
||||
"./templates/components/*.{html,js}",
|
||||
"./static/js/*.js",
|
||||
"./static/js/utils/*.js",
|
||||
],
|
||||
|
||||
presets: [],
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<!-- stats card -->
|
||||
<a
|
||||
href="https://github.com/bunkerity/bunkerweb"
|
||||
class="dark:brightness-110 max-h-none sm:max-h-28 hover:scale-102 transition col-span-12 sm:col-span-6 lg:col-span-4 flex p-4 justify-between w-full shadow-md break-words bg-white dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
class="dark:brightness-110 max-h-none sm:max-h-28 hover:scale-102 transition col-span-12 md:col-span-6 2xl:col-span-4 flex p-4 justify-between w-full shadow-md break-words bg-white dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
>
|
||||
<!-- text -->
|
||||
<div>
|
||||
|
@ -54,7 +54,7 @@
|
|||
<!-- stats card -->
|
||||
<a
|
||||
href="{% if current_endpoint == 'instances' %}javascript:void(0){% else %}loading?next={{ url_for('instances') }}{% endif %}"
|
||||
class="dark:brightness-110 max-h-none sm:max-h-28 hover:scale-102 transition col-span-12 sm:col-span-6 lg:col-span-4 flex p-4 justify-between w-full shadow-md break-words bg-white dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
class="dark:brightness-110 max-h-none sm:max-h-28 hover:scale-102 transition col-span-12 md:col-span-6 2xl:col-span-4 flex p-4 justify-between w-full shadow-md break-words bg-white dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
>
|
||||
<!-- text -->
|
||||
<div>
|
||||
|
@ -93,7 +93,7 @@
|
|||
<!-- stats card -->
|
||||
<a
|
||||
href="{% if current_endpoint == 'services' %}javascript:void(0){% else %}loading?next={{ url_for('services') }}{% endif %}"
|
||||
class="dark:brightness-110 max-h-none sm:max-h-28 hover:scale-102 transition col-span-12 sm:col-span-6 lg:col-span-4 flex p-4 justify-between w-full shadow-md break-words bg-white dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
class="dark:brightness-110 max-h-none sm:max-h-28 hover:scale-102 transition col-span-12 md:col-span-6 2xl:col-span-4 flex p-4 justify-between w-full shadow-md break-words bg-white dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
>
|
||||
<!-- text -->
|
||||
<div>
|
||||
|
@ -140,7 +140,7 @@
|
|||
<!-- stats card-->
|
||||
<a
|
||||
href="{% if current_endpoint == 'services' %}javascript:void(0){% else %}loading?next={{ url_for('services') }}{% endif %}"
|
||||
class="dark:brightness-110 max-h-none sm:max-h-28 h-full hover:scale-102 transition col-span-12 sm:col-span-6 lg:col-span-4 flex p-4 justify-between w-full shadow-md break-words bg-white dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
class="dark:brightness-110 max-h-none sm:max-h-28 h-full hover:scale-102 transition col-span-12 md:col-span-6 2xl:col-span-4 flex p-4 justify-between w-full shadow-md break-words bg-white dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
>
|
||||
<!-- text -->
|
||||
<div>
|
||||
|
|
|
@ -22,9 +22,14 @@
|
|||
alt="main logo"
|
||||
/>
|
||||
{%if message %}
|
||||
<h1 class="text-center absolute mt-6 font-bold text-white text-2xl">
|
||||
{%endif%}
|
||||
</h1>
|
||||
<div class="w-full flex justify-center">
|
||||
<p
|
||||
class="lowercase text-center absolute mt-6 font-normal text-white text-xl"
|
||||
>
|
||||
{{ message }}
|
||||
</p>
|
||||
</div>
|
||||
{%endif%}
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
@ -26,7 +26,10 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
|
|||
id="logs-instance"
|
||||
name="logs-instance"
|
||||
{{current_endpoint}}-setting-select-text="instances"
|
||||
>none
|
||||
>
|
||||
{% for instance in instances %} {% if loop.first %} {% if
|
||||
instance.name %} {{instance.name}} {%else%} no instance {%endif%}
|
||||
{%endif%} {% endfor %}
|
||||
</span>
|
||||
<!-- chevron -->
|
||||
<svg
|
||||
|
@ -129,7 +132,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
|
|||
<h5
|
||||
class="my-1 transition duration-300 ease-in-out dark:opacity-90 text-sm sm:text-md font-bold m-0 dark:text-gray-300"
|
||||
>
|
||||
Update Delay
|
||||
Live update
|
||||
</h5>
|
||||
<div checkbox-handler="live-update" class="relative mb-7 md:mb-0">
|
||||
<input
|
||||
|
@ -137,14 +140,21 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
|
|||
name="live-update"
|
||||
default-method="default"
|
||||
default-value="no"
|
||||
class="z-0 relative cursor-pointer dark:border-slate-600 dark:bg-slate-700 z-10 checked:z-0 w-5 h-5 ease text-base rounded-1.4 checked:bg-primary checked:border-primary dark:checked:bg-primary dark:checked:border-primary duration-250 float-left mt-1 appearance-none border border-gray-300 bg-white bg-contain bg-center bg-no-repeat align-top transition-all disabled:bg-gray-400 disabled:border-gray-400 dark:disabled:bg-gray-800 dark:disabled:border-gray-800 disabled:text-gray-700 dark:disabled:text-gray-300"
|
||||
class="relative cursor-pointer disabled:cursor-default disabled:pointer-events-none dark:border-slate-600 dark:bg-slate-700 z-10 checked:z-0 w-5 h-5 ease text-base rounded-1.4 checked:bg-primary checked:border-primary dark:checked:bg-primary dark:checked:border-primary duration-250 float-left mt-1 appearance-none border border-gray-300 bg-white bg-contain bg-center bg-no-repeat align-top transition-all disabled:bg-gray-400 disabled:border-gray-400 dark:disabled:bg-gray-800 dark:disabled:border-gray-800 disabled:text-gray-700 dark:disabled:text-gray-300"
|
||||
type="checkbox"
|
||||
pattern="^(yes|no)$"
|
||||
value="no"
|
||||
/>
|
||||
<input
|
||||
type="hidden"
|
||||
name="live-update"
|
||||
default-method="default"
|
||||
default-value="no"
|
||||
value="no"
|
||||
/>
|
||||
<svg
|
||||
checkbox-handler="live-update"
|
||||
class="-z-10 cursor-pointer absolute fill-white dark:fill-gray-300 left-0 top-0 translate-x-1 translate-y-2 h-3 w-3"
|
||||
class="pointer-events-none absolute fill-white dark:fill-gray-300 left-0 top-0 translate-x-1 translate-y-2 h-3 w-3"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
|
|
|
@ -118,7 +118,7 @@ include "plugins-modal.html" %}
|
|||
<!-- filter -->
|
||||
<div
|
||||
{{current_endpoint}}-filter
|
||||
class="p-4 col-span-12 md:col-span-6 2xl:col-span-4 relative min-w-0 break-words bg-white shadow-xl dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
class="p-4 col-span-12 2xl:col-span-4 relative min-w-0 break-words bg-white shadow-xl dark:bg-slate-850 dark:shadow-dark-xl rounded-2xl bg-clip-border"
|
||||
>
|
||||
<h5 class="mb-2 font-bold dark:text-white">FILTER</h5>
|
||||
<div class="grid grid-cols-12 gap-x-4 gap-y-2">
|
||||
|
|
|
@ -71,14 +71,14 @@
|
|||
<button
|
||||
services-modal-close
|
||||
type="button"
|
||||
class="dark:brightness-90 mb-4 mr-3 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-red-500 hover:bg-red-500/80 focus:bg-red-500/80 leading-normal text-md ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
|
||||
class="dark:brightness-90 mb-4 mr-3 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-sky-500 hover:bg-sky-500/80 focus:bg-sky-500/80 leading-normal text-md ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
|
||||
>
|
||||
Close
|
||||
</button>
|
||||
<button
|
||||
services-modal-submit
|
||||
type="submit"
|
||||
class="dark:brightness-90 mb-4 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-sky-500 hover:bg-sky-500/80 focus:bg-sky-500/80 leading-normal text-md ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
|
||||
class="dark:brightness-90 mb-4 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-green-500 hover:bg-green-500/80 focus:bg-green-500/80 leading-normal text-md ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
|
||||
>
|
||||
Save
|
||||
</button>
|
||||
|
@ -96,7 +96,7 @@
|
|||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||
<input type="hidden" value="server_name" name="SERVER_NAME" />
|
||||
<input type="hidden" value="delete" name="operation" />
|
||||
<div>
|
||||
<div class="flex justify-center">
|
||||
<p
|
||||
services-modal-text
|
||||
class="mx-2 mb-2 mt-8 font-semibold font-sans leading-normal uppercase text-sm"
|
||||
|
@ -107,13 +107,13 @@
|
|||
<button
|
||||
services-modal-close
|
||||
type="button"
|
||||
class="dark:brightness-90 mr-3 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-red-500 hover:bg-red-500/80 focus:bg-red-500/80 leading-normal text-md ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
|
||||
class="dark:brightness-90 mr-3 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-sky-500 hover:bg-sky-500/80 focus:bg-sky-500/80 leading-normal text-md ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
|
||||
>
|
||||
Close
|
||||
</button>
|
||||
<button
|
||||
type="submit"
|
||||
class="dark:brightness-90 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-sky-500 hover:bg-sky-500/80 focus:bg-sky-500/80 leading-normal text-md ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
|
||||
class="dark:brightness-90 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-red-500 hover:bg-red-500/80 focus:bg-red-500/80 leading-normal text-md ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
|
||||
>
|
||||
Delete
|
||||
</button>
|
||||
|
|
|
@ -176,9 +176,7 @@
|
|||
!= 'default' %} disabled {% endif %} {% if global_config[setting]['value'] and
|
||||
global_config[setting]['value'] == 'yes' or not
|
||||
global_config[setting]['value'] and value['default'] == 'yes' %} checked {%
|
||||
endif %} id="checkbox-{{value['id']}}" class="{% if
|
||||
global_config[setting]['method'] != 'ui' and global_config[setting]['method']
|
||||
!= 'default' %} pointer-events-none {% else %} cursor-pointer {% endif %}
|
||||
endif %} id="checkbox-{{value['id']}}" class="cursor-pointer disabled:cursor-default disabled:pointer-events-none
|
||||
relative dark:border-slate-600 dark:bg-slate-700 z-10 checked:z-0 w-5 h-5 ease
|
||||
text-base rounded-1.4 checked:bg-primary checked:border-primary
|
||||
dark:checked:bg-primary dark:checked:border-primary duration-250 float-left
|
||||
|
@ -197,7 +195,7 @@
|
|||
!= 'default' %}{{global_config[setting]['value']}}{% else %}no{% endif %}" default-method="default" />
|
||||
<svg
|
||||
checkbox-handler="{{value['id']}}"
|
||||
class="pointer-events-none {% if global_config[setting]['method'] != 'ui' and global_config[setting]['method'] != 'default' %} pointer-events-none {% else %} cursor-pointer {% endif %} absolute fill-white dark:fill-gray-300 left-0 top-0 translate-x-1 translate-y-2 h-3 w-3"
|
||||
class="pointer-events-none absolute fill-white dark:fill-gray-300 left-0 top-0 translate-x-1 translate-y-2 h-3 w-3"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
|
@ -387,7 +385,7 @@
|
|||
<input id="{{setting}}_SCHEMA" name="{{setting}}_SCHEMA"
|
||||
default-method="default"
|
||||
default-value="{{value['default']}}" {% if value['default'] == 'yes' %} checked {%
|
||||
endif %} id="checkbox-{{value['id']}}" class="relative cursor-pointer
|
||||
endif %} id="checkbox-{{value['id']}}" class="relative cursor-pointer disabled:cursor-default disabled:pointer-events-none
|
||||
dark:border-slate-600 dark:bg-slate-700 z-10 checked:z-0 w-5 h-5 ease
|
||||
text-base rounded-1.4 checked:bg-primary checked:border-primary
|
||||
dark:checked:bg-primary dark:checked:border-primary duration-250 float-left
|
||||
|
@ -400,7 +398,7 @@
|
|||
<input type="hidden" name="{{setting}}_SCHEMA" value="no" default-value="no" default-method="default" />
|
||||
<svg
|
||||
checkbox-handler="{{value['id']}}"
|
||||
class="pointer-events-none cursor-pointer absolute fill-white dark:fill-gray-300 left-0 top-0 translate-x-1 translate-y-2 h-3 w-3"
|
||||
class="pointer-events-none absolute fill-white dark:fill-gray-300 left-0 top-0 translate-x-1 translate-y-2 h-3 w-3"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
|
|
Loading…
Reference in a new issue