start adding aria

This commit is contained in:
Jordan Blasenhauer 2023-12-20 12:10:33 +01:00
parent 7fbf17a0ea
commit e3d21c647a
17 changed files with 225 additions and 131 deletions

View file

@ -26,10 +26,16 @@ class Menu {
toggle() {
this.sidebarEl.classList.toggle("-translate-x-full");
if (this.sidebarEl.classList.contains("-translate-x-full")) {
this.sidebarEl.setAttribute("aria-expanded", "false");
} else {
this.sidebarEl.setAttribute("aria-expanded", "true");
}
}
close() {
this.sidebarEl.classList.add("-translate-x-full");
this.sidebarEl.setAttribute("aria-expanded", "false");
}
}
@ -66,7 +72,7 @@ class News {
news.photo.url,
news.excerpt,
news.tags,
news.date,
news.date
);
let cleanHTML = DOMPurify.sanitize(cardHTML);
//add to DOM
@ -131,16 +137,23 @@ class Sidebar {
this.closeBtn = document.querySelector(btnCloseAtt);
this.openBtn.addEventListener("click", this.open.bind(this));
this.closeBtn.addEventListener("click", this.close.bind(this));
init();
}
init() {
this.sidebarEl.setAttribute("aria-expand", "false");
}
open() {
this.sidebarEl.classList.add("translate-x-0");
this.sidebarEl.classList.remove("translate-x-90");
this.sidebarEl.setAttribute("aria-expand", "true");
}
close() {
this.sidebarEl.classList.add("translate-x-90");
this.sidebarEl.classList.remove("translate-x-0");
this.sidebarEl.setAttribute("aria-expand", "false");
}
}
@ -180,7 +193,7 @@ class darkMode {
};
const send = await fetch(
`${location.href.split("/").slice(0, -1).join("/")}/darkmode`,
data,
data
);
}
}
@ -220,7 +233,7 @@ class FlashMsg {
flashEl.remove();
//update count
this.flashCount.textContent = document.querySelectorAll(
"[data-flash-message]",
"[data-flash-message]"
).length;
}
} catch (err) {}
@ -313,7 +326,7 @@ class Banner {
this.bannerEl.querySelector(
`[role="listitem"][data-id="${
+visibleEl.getAttribute("data-id") + 1
}"]`,
}"]`
) || this.bannerEl.querySelector(`[role="listitem"][data-id="0"]`);
// Hide current one
@ -382,7 +395,7 @@ const setMenu = new Menu();
const setNewsSidebar = new Sidebar(
"[data-sidebar-info]",
"[data-sidebar-info-open]",
"[data-sidebar-info-close]",
"[data-sidebar-info-close]"
);
const setCheckbox = new Checkbox();
@ -393,7 +406,7 @@ const setDisabledPop = new DisabledPop();
const setFlashSidebar = new Sidebar(
"[data-flash-sidebar]",
"[data-flash-sidebar-open]",
"[data-flash-sidebar-close]",
"[data-flash-sidebar-close]"
);
const setNews = new News();
const setDarkM = new darkMode();

View file

@ -45,7 +45,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
class="leading-normal text-sm"
>
<button
type="button"
class="dark:text-gray-500 text-gray-600 after:float-right after:pl-2 after:text-gray-600 dark:after:text-gray-500 after:content-['/']"
>
{{current_endpoint}}
@ -63,7 +63,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
data-{{current_endpoint}}-add-folder
class="rounded transition hidden flex-col items-center mx-2 p-2 md:py-4 md:px-6 relative cursor-pointer hover:bg-gray-100 dark:hover:bg-slate-800"
>
<button type="button">
<button >
<svg
class="relative dark:brightness-125 h-8 w-8 lg:h-9 lg:w-9 fill-primary stroke-gray-100 dark:stroke-gray-600"
xmlns="http://www.w3.org/2000/svg"
@ -90,7 +90,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
data-{{current_endpoint}}-add-file
class="rounded transition hidden flex-col items-center mx-2 p-2 md:py-4 md:px-6 relative cursor-pointer hover:bg-gray-100 dark:hover:bg-slate-800"
>
<button type="button">
<button >
<svg
class="-translate-x-1 relative dark:brightness-125 h-8 w-8 lg:h-9 lg:w-9 fill-primary stroke-gray-100 dark:stroke-gray-600"
xmlns="http://www.w3.org/2000/svg"
@ -226,7 +226,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
<!-- view button-->
<button
role="tab"
type="button"
value="view"
data-{{current_endpoint}}-action-dropdown-btn="{{child['name']}}"
class="duration-300 border-gray-300 hover:brightness-90 bg-white text-white my-0 relative px-6 py-2 text-center align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300 w-full border-t rounded-t border-b border-l border-r hover:bg-gray-100"
@ -265,7 +265,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
child['type'] == "folder" and child['can_edit'] == True %}
<button
role="tab"
type="button"
value="edit"
data-{{current_endpoint}}-action-dropdown-btn="{{child['name']}}"
class="duration-300 border-gray-300 hover:brightness-90 bg-white my-0 relative px-6 py-2 text-center align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 w-full border-b border-l border-r hover:bg-gray-100"
@ -290,7 +290,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
{% if current_endpoint == "cache" %}
<button
role="tab"
type="button"
value="download"
data-{{current_endpoint}}-download="{{child['name'].split('/')[0]}}"
data-{{current_endpoint}}-file="{{child['name'].split('/')[1]}}"
@ -313,7 +313,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
{%else%}
<button
role="tab"
type="button"
value="download"
data-{{current_endpoint}}-action-dropdown-btn="{{child['name']}}"
class="duration-300 border-gray-300 hover:brightness-90 bg-white text-white my-0 relative px-6 py-2 text-center align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300 w-full border-b border-l border-r hover:bg-gray-100"
@ -339,7 +339,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
{% if child['can_delete'] == True %}
<button
role="tab"
type="button"
value="delete"
data-{{current_endpoint}}-action-dropdown-btn="{{child['name']}}"
class="bg-white duration-300 border-gray-300 hover:brightness-90 text-white my-0 relative px-6 py-2 text-center align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300 w-full border-b border-l border-r hover:bg-gray-100"
@ -431,7 +431,7 @@ data-{{current_endpoint}}-modal
<div class="mt-4 w-full justify-end flex">
<button
data-{{current_endpoint}}-modal-close
type="button"
class="close-btn text-xs mr-2"
>
Close

View file

@ -5,7 +5,8 @@
class="transition-all group group-hover hover:brightness-75 dark:hover:brightness-105 fixed top-[4.5rem] right-20 sm:right-24 xl:right-24 z-990"
>
<button
type="button"
aria-controls="sidebar-flash"
aria-label="Open flash action sidebar"
data-flash-sidebar-open
class="transition scale-90 sm:scale-100 dark:brightness-95 p-3 text-xl bg-white shadow-sm cursor-pointer rounded-circle text-slate-700"
>
@ -31,20 +32,23 @@
<!-- right sidebar -->
<aside
id="sidebar-flash"
data-flash-sidebar
aria-expanded="false"
class="translate-x-90 -right-0 transition z-sticky dark:bg-slate-850 dark:brightness-110 shadow-3xl max-w-full w-90 ease fixed top-0 left-auto flex h-full min-w-0 flex-col break-words rounded-none border-0 bg-white bg-clip-border px-0.5"
>
<!-- close btn-->
<svg
data-flash-sidebar-close
class="cursor-pointer fill-gray-600 dark:fill-gray-300 dark:opacity-80 absolute h-8 w-8 top-4 right-4"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 320 512"
>
<path
d="M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z"
/>
</svg>
<button aria-label="close flash sidebar" data-flash-sidebar-close>
<svg
class="pointer-events-none fill-gray-600 dark:fill-gray-300 dark:opacity-80 absolute h-8 w-8 top-4 right-4"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 320 512"
>
<path
d="M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z"
/>
</svg>
</button>
<!-- close btn-->
<!-- header -->
@ -74,6 +78,8 @@
<!-- flash message-->
{% for category, message in messages %}
<div
role="alert"
aria-description="flash feedback message"
data-flash-message
class="{% if category == 'error' %}bg-red-500 {%else%} bg-green-500 {%endif %} my-2 border relative p-4 w-11/12 min-h-20 rounded-lg hover:scale-102 transition shadow-md break-words dark:brightness-90"
>
@ -84,8 +90,8 @@
<h5 class="text-lg mb-0 text-white">Success</h5>
{%endif%}
<button
aria-label="close flash message"
data-close-flash-message
type="button"
class="absolute right-8 top-2"
>
<svg

View file

@ -7,7 +7,7 @@
<h5 class="transition duration-300 ease-in-out 0 ml-2 font-bold text-md uppercase dark:text-white/90 mb-0">CONFIGS</h5>
<!-- search inpt-->
<div class="flex relative col-span-12 sm:col-span-6 lg:col-span-4 3xl:col-span-3">
<label class="sr-only" for="settings-filter">filter settings</label>
<input
type="text"
id="settings-filter"

View file

@ -36,6 +36,8 @@
<!-- end text -->
<!-- icon -->
<div
role="img"
aria-label="version"
class="dark:brightness-90 inline-block w-12 h-12 text-center rounded-circle bg-secondary"
>
<svg
@ -75,6 +77,8 @@
<!-- end text -->
<!-- icon -->
<div
role="img"
aria-label="instances"
class="dark:brightness-90 inline-block w-12 h-12 text-center rounded-circle bg-red-500"
>
<svg
@ -122,6 +126,8 @@
<!-- end text -->
<!-- icon -->
<div
role="img"
aria-label="services"
class="dark:brightness-90 inline-block w-12 h-12 text-center rounded-circle bg-orange-500"
>
<svg
@ -162,7 +168,11 @@
</div>
<!-- end text -->
<!-- icon -->
<div class="inline-block w-12 h-12 text-center rounded-circle bg-yellow-500">
<div
role="img"
aria-label="plugins"
class="inline-block w-12 h-12 text-center rounded-circle bg-yellow-500"
>
<svg
class="scale-50 -translate-y-1.5 leading-none text-lg relative fill-white"
xmlns="http://www.w3.org/2000/svg"

View file

@ -31,9 +31,10 @@ instances_batched %}
<!-- end state and title-->
<!-- detail list -->
<div class="grid grid-cols-1 gap-2 mt-4 mb-6 ml-1">
<div role="grid" class="grid grid-cols-1 gap-2 mt-4 mb-6 ml-1">
<!-- detail -->
<div
role="gridcell"
class="flex flex-col items-center sm:flex-row col-span-1 py-1 sm:py-0"
>
<p
@ -50,6 +51,7 @@ instances_batched %}
<!-- end detail -->
<!-- detail -->
<div
role="gridcell"
class="flex flex-col items-center sm:flex-row col-span-1 py-1 sm:py-0"
>
<p

View file

@ -46,6 +46,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
>
Search
</h5>
<label for="keyword" class="sr-only">search</label>
<input
type="text"
id="keyword"
@ -66,11 +67,12 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
Success state
</h5>
<button
aria-controls="filter-state"
data-{{current_endpoint}}-setting-select="success"
type="button"
class="disabled:opacity-75 dark:disabled:text-gray-300 disabled:text-gray-700 disabled:bg-gray-400 disabled:border-gray-400 dark:disabled:bg-gray-800 dark:disabled:border-gray-800 duration-300 ease-in-out dark:opacity-90 dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300 focus:border-green-500 flex justify-between align-middle items-center text-left text-sm leading-5.6 ease w-full rounded-lg border border-solid border-gray-300 bg-white bg-clip-padding px-1.5 py-1 md:px-3 font-normal text-gray-700 transition-all placeholder:text-gray-500"
>
<span
aria-label="current filter state value"
id="{{current_endpoint}}-success"
data-name="{{current_endpoint}}-success"
data-{{current_endpoint}}-setting-select-text="success"
@ -91,28 +93,30 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
<!-- end chevron -->
<!-- dropdown-->
<div
id="filter-state"
role="listbox"
data-{{current_endpoint}}-setting-select-dropdown="success"
class="hidden z-100 absolute h-full flex-col w-full translate-y-16"
>
<button
role="option"
data-{{current_endpoint}}-setting-select-dropdown-btn="success"
type="button"
value="all"
class="border-t rounded-t border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:text-gray-300 dark:bg-primary bg-primary text-gray-300"
>
all
</button>
<button
role="option"
data-{{current_endpoint}}-setting-select-dropdown-btn="success"
type="button"
value="false"
class="border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
false
</button>
<button
role="option"
data-{{current_endpoint}}-setting-select-dropdown-btn="success"
type="button"
value="true"
class="rounded-b border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
@ -130,11 +134,12 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
Reload state
</h5>
<button
aria-controls="filter-reload"
data-{{current_endpoint}}-setting-select="reload"
type="button"
class="disabled:opacity-75 dark:disabled:text-gray-300 disabled:text-gray-700 disabled:bg-gray-400 disabled:border-gray-400 dark:disabled:bg-gray-800 dark:disabled:border-gray-800 duration-300 ease-in-out dark:opacity-90 dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300 focus:border-green-500 flex justify-between align-middle items-center text-left text-sm leading-5.6 ease w-full rounded-lg border border-solid border-gray-300 bg-white bg-clip-padding px-1.5 py-1 md:px-3 font-normal text-gray-700 transition-all placeholder:text-gray-500"
>
<span
aria-label="current reload filter value"
id="{{current_endpoint}}-reload"
data-name="{{current_endpoint}}-reload"
data-{{current_endpoint}}-setting-select-text="reload"
@ -155,28 +160,30 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
<!-- end chevron -->
<!-- dropdown-->
<div
id="filter-reload"
role="listbox"
data-{{current_endpoint}}-setting-select-dropdown="reload"
class="hidden z-100 absolute h-full flex-col w-full translate-y-16"
>
<button
role="option"
data-{{current_endpoint}}-setting-select-dropdown-btn="reload"
type="button"
value="all"
class="border-t rounded-t border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:text-gray-300 dark:bg-primary bg-primary text-gray-300"
>
all
</button>
<button
role="option"
data-{{current_endpoint}}-setting-select-dropdown-btn="reload"
type="button"
value="false"
class="border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
false
</button>
<button
role="option"
data-{{current_endpoint}}-setting-select-dropdown-btn="reload"
type="button"
value="true"
class="rounded-b border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
@ -229,25 +236,29 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
</p>
<!-- end header-->
<!-- list -->
<ul class="col-span-12 w-full" data-{{current_endpoint}}-list>
<ul role="grid" class="col-span-12 w-full" data-{{current_endpoint}}-list>
{% for job_name, value in jobs.items() %}
<!-- job item-->
<li
role="row"
class="items-center grid grid-cols-12 border-b border-gray-300 py-2.5"
>
<p
role="gridcell"
class="dark:text-gray-400 dark:opacity-80 text-sm col-span-3 m-0 my-1"
data-{{current_endpoint}}-name
>
{{job_name}}
</p>
<p
role="gridcell"
class="dark:text-gray-400 dark:opacity-80 text-sm col-span-3 m-0 my-1"
data-{{current_endpoint}}-last_run
>
{{value['last_run']}}
</p>
<p
role="gridcell"
class="dark:text-gray-400 dark:opacity-80 text-sm col-span-1 m-0 my-1"
data-{{current_endpoint}}-every
>
@ -255,6 +266,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
</p>
{% if value["reload"] %}
<p
role="gridcell"
class="ml-6 dark:text-gray-400 dark:opacity-80 text-sm col-span-1 m-0 my-1"
data-{{current_endpoint}}-reload="true"
>
@ -271,6 +283,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
{%endif %} {% if not value["reload"] %}
<p
role="gridcell"
class="ml-6 dark:text-gray-400 dark:opacity-80 text-sm col-span-1 m-0 my-1"
data-{{current_endpoint}}-reload="false"
>
@ -286,6 +299,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
</p>
{% endif %} {% if value["success"] %}
<p
role="gridcell"
class="ml-6 dark:text-gray-400 dark:opacity-80 text-sm col-span-1 m-0 my-1"
data-{{current_endpoint}}-success="true"
>
@ -301,6 +315,7 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
</p>
{% elif not value["success"] %}
<p
role="gridcell"
class="ml-6 dark:text-gray-400 dark:opacity-80 text-sm col-span-1 m-0 my-1"
data-{{current_endpoint}}-success="false"
>
@ -316,13 +331,13 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
</p>
{% endif %}
<div
role="gridcell"
class="relative dark:text-gray-400 text-sm col-span-3 m-0 my-1"
data-{{current_endpoint}}-files
>
{% if value['cache']%}
<button
data-{{current_endpoint}}-setting-select="{{job_name}}"
type="button"
class="py-1 text-sm disabled:opacity-75 dark:disabled:text-gray-300 disabled:text-gray-700 disabled:bg-gray-400 disabled:border-gray-400 dark:disabled:bg-gray-800 dark:disabled:border-gray-800 duration-300 ease-in-out dark:opacity-90 dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300 focus:border-green-500 flex justify-between align-middle items-center text-left leading-6 ease w-full rounded-lg border border-solid border-gray-300 bg-white bg-clip-padding px-1.5 md:px-3 font-normal text-gray-700 transition-all placeholder:text-gray-500"
>
<span
@ -354,7 +369,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip() %}
data-{{current_endpoint}}-download="{{job_name}}"
data-{{current_endpoint}}-file="{{file['file_name']}}"
data-{{current_endpoint}}-setting-select-dropdown-btn="{{job_name}}"
type="button"
value="list"
class="{% if loop.index == loop.length %}rounded-b-lg {% endif %}{% if loop.first %}rounded-t-lg{% endif %} border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:text-gray-300 bg-white dark:bg-slate-700 text-gray-700"
>

View file

@ -28,13 +28,14 @@
<!-- flash message-->
{% for category, message in messages %}
<div
role="alert"
aria-description="login message alert"
data-flash-message
class="p-4 mb-1 md:mb-3 md:mr-3 z-[1001] flex flex-col fixed bottom-0 right-0 w-full md:w-1/2 max-w-[300px] min-h-20 bg-white rounded-lg dark:brightness-110 hover:scale-102 transition shadow-md break-words dark:bg-slate-850 dark:shadow-dark-xl bg-clip-border"
>
<button
data-close-flash-message
role="close alert message"
type="button"
class="absolute right-7 top-1.5"
>
<svg

View file

@ -17,7 +17,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
</h5>
<button
data-{{current_endpoint}}-setting-select="instances"
type="button"
class="disabled:opacity-75 dark:disabled:text-gray-300 disabled:text-gray-700 disabled:bg-gray-400 disabled:border-gray-400 dark:disabled:bg-gray-800 dark:disabled:border-gray-800 duration-300 ease-in-out dark:opacity-90 dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300 focus:border-green-500 flex justify-between align-middle items-center text-left text-sm leading-5.6 ease w-full rounded-lg border border-solid border-gray-300 bg-white bg-clip-padding px-1.5 py-1 md:px-3 font-normal text-gray-700 transition-all placeholder:text-gray-500"
>
<span
@ -50,7 +49,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
{% for instance in instances %}
<button
data-{{current_endpoint}}-setting-select-dropdown-btn="instances"
type="button"
value="{{instance.name}}"
data-_type="{{instance._type}}"
class="{% if loop.index == 1 %} border-t rounded-t {% endif %} {% if loop.index == loop.length %}rounded-b {% endif %} border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
@ -154,7 +152,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
<div class="col-span-12 w-full justify-center flex mt-2">
<button
data-submit-date
type="button"
id="submit-settings"
class="tracking-widest dark:brightness-125 hover:brightness-75 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-gradient-to-tl bg-primary leading-normal text-xs ease-in shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
>
@ -162,7 +159,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
</button>
<button
data-submit-live="no"
type="button"
id="submit-settings"
class="hidden tracking-widest dark:brightness-125 hover:brightness-75 inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-gradient-to-tl bg-primary leading-normal text-xs ease-in shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
>
@ -207,7 +203,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
</h5>
<button
data-{{current_endpoint}}-setting-select="types"
type="button"
class="disabled:opacity-75 dark:disabled:text-gray-300 disabled:text-gray-700 disabled:bg-gray-400 disabled:border-gray-400 dark:disabled:bg-gray-800 dark:disabled:border-gray-800 duration-300 ease-in-out dark:opacity-90 dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300 focus:border-green-500 flex justify-between align-middle items-center text-left text-sm leading-5.6 ease w-full rounded-lg border border-solid border-gray-300 bg-white bg-clip-padding px-1.5 py-1 md:px-3 font-normal text-gray-700 transition-all placeholder:text-gray-500"
>
<span
@ -236,7 +231,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
>
<button
data-{{current_endpoint}}-setting-select-dropdown-btn="types"
type="button"
value="all"
class="border-t rounded-t border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:text-gray-300 dark:bg-primary bg-primary text-gray-300"
>
@ -244,7 +238,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
</button>
<button
data-{{current_endpoint}}-setting-select-dropdown-btn="types"
type="button"
value="message"
class="border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
@ -252,7 +245,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
</button>
<button
data-{{current_endpoint}}-setting-select-dropdown-btn="types"
type="button"
value="error"
class="border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
@ -260,7 +252,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
</button>
<button
data-{{current_endpoint}}-setting-select-dropdown-btn="types"
type="button"
value="warn"
class="border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
@ -268,7 +259,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
</button>
<button
data-{{current_endpoint}}-setting-select-dropdown-btn="types"
type="button"
value="info"
class="border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
@ -276,7 +266,6 @@ url_for(request.endpoint)[1:].split("/")[-1].strip().replace('_', '-') %}
</button>
<button
data-{{current_endpoint}}-setting-select-dropdown-btn="types"
type="button"
value="misc"
class="rounded-b border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>

View file

@ -3,7 +3,8 @@
<!-- float button-->
<button
type="button"
aria-controls="sidebar-menu"
aria-label="Open menu sidebar"
data-sidebar-menu-toggle
class="transition-all scale-90 sm:scale-100 dark:brightness-95 dark:hover:brightness-105 hover:brightness-75 xl:hidden fixed p-3 text-xl bg-white shadow-sm cursor-pointer top-16 sm:top-[4.5rem] right-5 sm:right-6 z-990 rounded-circle text-slate-700"
>
@ -25,24 +26,27 @@
data-sidebar-menu
class="transition-all mt-[4.5rem] fixed flex inset-y-0 flex-wrap justify-between w-full p-0 my-4 overflow-y-auto antialiased duration-200 -translate-x-full bg-white border-0 shadow-xl dark:shadow-none dark:bg-slate-850 dark:brightness-110 max-w-64 z-[1000] xl:ml-6 rounded-2xl xl:left-0 xl:translate-x-0"
aria-expanded="false"
id="sidebar-menu"
>
<!-- close btn-->
<svg
data-sidebar-menu-close
class="xl:hidden cursor-pointer fill-gray-600 dark:fill-gray-300 dark:opacity-80 absolute h-6 w-6 top-4 right-4"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 320 512"
>
<path
d="M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z"
/>
</svg>
<button aria-label="close menu sidebar" data-sidebar-menu-close>
<svg
class="xl:hidden pointer-events-none fill-gray-600 dark:fill-gray-300 dark:opacity-80 absolute h-6 w-6 top-4 right-4"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 320 512"
>
<path
d="M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z"
/>
</svg>
</button>
<!-- close btn-->
<!-- top sidebar -->
<div class="w-full">
<!-- logo and version -->
<div class="h-19">
<a
aria-label="link to home"
class="flex justify-center px-8 py-6 m-0 text-sm whitespace-nowrap dark:text-white text-slate-700"
href="{% if current_endpoint == 'home' %}javascript:void(0){% else %}loading?next={{ url_for('home') }}{% endif %}"
>
@ -479,7 +483,10 @@
<!-- social-->
<ul class="flex justify-center align-middle w-full mb-4">
<li class="mx-2 w-6">
<a href="https://twitter.com/bunkerity" target="_blank"
<a
aria-label="link to twitter"
href="https://twitter.com/bunkerity"
target="_blank"
><svg
class="hover:opacity-80"
fill="#1DA1F2"
@ -492,7 +499,10 @@
></a>
</li>
<li class="mx-2.5 w-6">
<a href="https://www.linkedin.com/company/bunkerity/" target="_blank"
<a
aria-label="link to linkedin"
href="https://www.linkedin.com/company/bunkerity/"
target="_blank"
><svg
fill="#0A63BC"
class="hover:opacity-80 dark:brightness-110"
@ -505,7 +515,10 @@
></a>
</li>
<li class="mx-2.5 w-6 -translate-y-1">
<a href="https://discord.gg/fTf46FmtyD" target="_blank"
<a
aria-label="link to discord"
href="https://discord.gg/fTf46FmtyD"
target="_blank"
><svg
class="translate-y-1 hover:opacity-80"
fill="#5562EA"
@ -518,7 +531,10 @@
></a>
</li>
<li class="mx-2.5 w-6">
<a href="https://github.com/bunkerity" target="_blank"
<a
aria-label="link to github"
href="https://github.com/bunkerity"
target="_blank"
><svg
class="hover:opacity-80 dark:fill-gray-600"
fill="#171A1F"

View file

@ -1,7 +1,8 @@
<!-- float button-->
<button
type="button"
data-sidebar-info-open
aria-controls="sidebar-news"
aria-label="Open news sidebar"
class="transition-all scale-90 sm:scale-100 dark:brightness-95 dark:hover:brightness-105 hover:brightness-75 fixed p-3 text-xl bg-white shadow-sm cursor-pointer top-[4.5rem] right-5 sm:right-40 xl:right-6 z-990 rounded-circle text-slate-700"
>
<svg
@ -18,20 +19,23 @@
<!-- right sidebar -->
<aside
id="sidebar-news"
aria-expanded="false"
data-sidebar-info
class="translate-x-90 -right-0 transition z-sticky dark:bg-slate-850 dark:brightness-110 shadow-3xl max-w-full w-90 ease fixed top-0 left-auto flex h-full min-w-0 flex-col break-words rounded-none border-0 bg-white bg-clip-border px-0.5"
>
<!-- close btn-->
<svg
data-sidebar-info-close
class="cursor-pointer fill-gray-600 dark:fill-gray-300 dark:opacity-80 absolute h-8 w-8 top-4 right-4"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 320 512"
>
<path
d="M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z"
/>
</svg>
<button aria-label="close news sidebar" data-sidebar-info-close>
<svg
class="pointer-events-none fill-gray-600 dark:fill-gray-300 dark:opacity-80 absolute h-8 w-8 top-4 right-4"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 320 512"
>
<path
d="M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z"
/>
</svg>
</button>
<!-- close btn-->
<!-- header -->
@ -43,6 +47,7 @@
<!-- close button -->
<div class="float-right mt-6">
<button
aria-label="close news sidebar"
data-sidebar-info-close
class="inline-block p-0 mb-4 text-sm font-bold leading-normal text-center uppercase align-middle transition-all ease-in bg-transparent border-0 rounded-lg shadow-none cursor-pointer hover:-translate-y-px tracking-tight-rem bg-150 bg-x-25 active:opacity-85 dark:text-white text-slate-700"
>
@ -78,6 +83,7 @@
>
<h5 class="mb-4 dark:text-white font-bold">JOIN THE NEWSLETTER</h5>
<div class="flex">
<label for="EMAIL" class="hidden">EMAIL</label>
<input
type="text"
id="newsletter-email"
@ -94,12 +100,15 @@
data-checkbox-handler="newsletter-check"
class="relative mb-7 md:mb-0"
>
<label class="hidden" for="newsletter-check">agree privacy</label>
<input
id="newsletter-check"
name="newsletter-check"
class="mr-2 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"
type="checkbox"
data-pattern="^(yes|no)$"
value="no"
required
/>
<svg
data-checkbox-handler="newsletter-check"
@ -126,7 +135,6 @@
<button
type="submit"
formtarget="_blank"
type="button"
class="dark:brightness-125 hover:brightness-75 w-full inline-block px-6 py-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer bg-gradient-to-tl bg-primary leading-normal text-xs ease-in tracking-wide shadow-xs bg-150 bg-x-25 hover:-translate-y-px active:opacity-85 hover:shadow-md"
>
Subscribe

View file

@ -124,6 +124,7 @@ include "plugins_modal.html" %}
>
Search
</h5>
<label for="keyword" class="sr-only">search</label>
<input
type="text"
id="keyword"
@ -144,10 +145,11 @@ include "plugins_modal.html" %}
</h5>
<button
data-{{current_endpoint}}-setting-select="types"
type="button"
aria-controls="filter-types"
class="disabled:opacity-75 dark:disabled:text-gray-300 disabled:text-gray-700 disabled:bg-gray-400 disabled:border-gray-400 dark:disabled:bg-gray-800 dark:disabled:border-gray-800 duration-300 ease-in-out dark:opacity-90 dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300 focus:border-green-500 flex justify-between align-middle items-center text-left text-sm leading-5.6 ease w-full rounded-lg border border-solid border-gray-300 bg-white bg-clip-padding px-1.5 py-1 md:px-3 font-normal text-gray-700 transition-all placeholder:text-gray-500"
>
<span
aria-label="current type"
id="types"
data-name="types"
data-{{current_endpoint}}-setting-select-text="types"
@ -168,28 +170,30 @@ include "plugins_modal.html" %}
<!-- end chevron -->
<!-- dropdown-->
<div
id="filter-types"
role="listbox"
data-{{current_endpoint}}-setting-select-dropdown="types"
class="hidden z-100 absolute h-full flex-col w-full translate-y-16"
>
<button
role="option"
data-{{current_endpoint}}-setting-select-dropdown-btn="types"
type="button"
value="all"
class="border-t rounded-t border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:text-gray-300 dark:bg-primary bg-primary text-gray-300"
>
all
</button>
<button
role="option"
data-{{current_endpoint}}-setting-select-dropdown-btn="types"
type="button"
value="internal"
class="border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
internal
</button>
<button
role="option"
data-{{current_endpoint}}-setting-select-dropdown-btn="types"
type="button"
value="external"
class="border-b border-l border-r border-gray-300 dark:hover:brightness-90 hover:brightness-90 bg-white text-gray-700 my-0 relative py-2 px-3 text-left align-middle transition-all rounded-none cursor-pointer leading-normal text-sm ease-in tracking-tight-rem dark:border-slate-600 dark:bg-slate-700 dark:text-gray-300"
>
@ -223,6 +227,7 @@ include "plugins_modal.html" %}
<div class="flex items-center">
{% if plugin['page']%}
<a
aria-label="plugin page link"
class="hover:-translate-y-px"
href="{{request.url_root}}plugins?plugin_id={{plugin['id']}}"
>
@ -240,7 +245,7 @@ include "plugins_modal.html" %}
<button
data-{{current_endpoint}}-action="delete"
name="{{plugin['id']}}"
type="button"
aria-label="delete plugin"
class="z-20 mx-2 inline-block font-bold text-left text-white uppercase align-middle transition-all cursor-pointer text-xs ease-in tracking-tight-rem hover:-translate-y-px"
>
<svg

View file

@ -14,7 +14,11 @@
>
DELETE PLUGINS
</p>
<button class="-translate-y-1" type="button" data-plugins-modal-close>
<button
aria-label="close modal"
class="-translate-y-1"
data-plugins-modal-close
>
<svg
class="transition duration-300 ease-in-out dark:opacity-90 h-6 w-6 sm:h-7 sm:w-7 fill-slate-800 dark:fill-gray-300"
xmlns="http://www.w3.org/2000/svg"
@ -39,6 +43,7 @@
<input type="hidden" value="delete" name="operation" id="operation" />
<div>
<p
aria-description="delete plugin message"
data-plugins-modal-text
class="text-center mx-2 mb-2 mt-8 font-semibold font-sans leading-normal uppercase text-sm"
></p>
@ -47,7 +52,6 @@
<div class="w-full justify-center flex mt-10">
<button
data-plugins-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"
>
Close

View file

@ -38,14 +38,12 @@
</h5>
<h6 class="text-center sm:text-left mb-2 font-semibold text-gray-600 dark:text-white/80">{{ service["SERVER_NAME"]['method'] }}</h5>
<!-- detail list -->
<div
<div role="grid"
class="w-full grid grid-cols-12 justify-items-center sm:justify-items-start gap-2 mt-4 mb-6 ml-3 sm:ml-1"
>
<!-- detail -->
<div class="flex items-center col-span-12 sm:col-span-6">
<div role="gridcell" class="flex items-center col-span-12 sm:col-span-6">
<p
class="transition duration-300 ease-in-out dark:opacity-90 font-bold mb-0 font-sans text-sm leading-normal uppercase dark:text-gray-500 "
>
@ -55,6 +53,7 @@
class="transition duration-300 ease-in-out dark:opacity-90 pl-2 mb-0 font-sans text-sm font-semibold leading-normal uppercase dark:text-gray-500 "
>
{% if service['USE_REVERSE_PROXY']['value'] == 'yes' %}
<span class="sr-only">yes</span>
<svg
class="h-4 w-4 fill-green-500"
xmlns="http://www.w3.org/2000/svg"
@ -65,6 +64,7 @@
/>
</svg>
{% else %}
<span class="sr-only">no</span>
<svg
class="h-4 w-4 fill-red-500"
xmlns="http://www.w3.org/2000/svg"
@ -80,7 +80,7 @@
</div>
<!-- end detail -->
<!-- detail -->
<div class="flex items-center col-span-12 sm:col-span-6">
<div role="gridcell" class="flex items-center col-span-12 sm:col-span-6">
<p
class="transition duration-300 ease-in-out dark:opacity-90 font-bold mb-0 font-sans text-sm leading-normal uppercase dark:text-gray-500 "
>
@ -90,6 +90,8 @@
class="transition duration-300 ease-in-out dark:opacity-90 pl-2 mb-0 font-sans text-sm font-semibold leading-normal uppercase dark:text-gray-500 "
>
{% if service['SERVE_FILES']['value'] == 'yes' %}
<span class="sr-only">yes</span>
<svg
class="h-4 w-4 fill-green-500"
xmlns="http://www.w3.org/2000/svg"
@ -100,6 +102,8 @@
/>
</svg>
{% else %}
<span class="sr-only">no</span>
<svg
class="h-4 w-4 fill-red-500"
xmlns="http://www.w3.org/2000/svg"
@ -114,7 +118,7 @@
</div>
<!-- end detail -->
<!-- detail -->
<div class="flex items-center col-span-12 sm:col-span-6">
<div role="gridcell" class="flex items-center col-span-12 sm:col-span-6">
<p
class="transition duration-300 ease-in-out dark:opacity-90 font-bold mb-0 font-sans text-sm leading-normal uppercase dark:text-gray-500 "
>
@ -124,6 +128,7 @@
class="transition duration-300 ease-in-out dark:opacity-90 pl-2 mb-0 font-sans text-sm font-semibold leading-normal uppercase dark:text-gray-500 "
>
{% if service['REMOTE_PHP']['value'] != '' %}
<span class="sr-only">yes</span>
<svg
class="h-4 w-4 fill-green-500"
xmlns="http://www.w3.org/2000/svg"
@ -134,6 +139,7 @@
/>
</svg>
{% else %}
<span class="sr-only">no</span>
<svg
class="h-4 w-4 fill-red-500"
xmlns="http://www.w3.org/2000/svg"
@ -148,7 +154,7 @@
</div>
<!-- end detail -->
<!-- detail -->
<div class="flex items-center col-span-12 sm:col-span-6">
<div role="gridcell" class="flex items-center col-span-12 sm:col-span-6">
<p
class="transition duration-300 ease-in-out dark:opacity-90 font-bold mb-0 font-sans text-sm leading-normal uppercase dark:text-gray-500 "
>
@ -158,6 +164,7 @@
class="transition duration-300 ease-in-out dark:opacity-90 pl-2 mb-0 font-sans text-sm font-semibold leading-normal uppercase dark:text-gray-500 "
>
{% if service['AUTO_LETS_ENCRYPT']['value'] == 'yes' or service['USE_CUSTOM_SSL']['value'] == 'yes' or service['GENERATE_SELF_SIGNED_SSL']['value'] == 'yes' %}
<span class="sr-only">yes</span>
<svg
class="h-4 w-4 fill-green-500"
xmlns="http://www.w3.org/2000/svg"
@ -168,6 +175,7 @@
/>
</svg>
{% else %}
<span class="sr-only">no</span>
<svg
class="h-4 w-4 fill-red-500"
xmlns="http://www.w3.org/2000/svg"
@ -182,7 +190,7 @@
</div>
<!-- end detail -->
<!-- detail -->
<div class="flex items-center col-span-12 sm:col-span-6">
<div role="gridcell" class="flex items-center col-span-12 sm:col-span-6">
<p
class="transition duration-300 ease-in-out dark:opacity-90 font-bold mb-0 font-sans text-sm leading-normal uppercase dark:text-gray-500 "
>
@ -192,6 +200,7 @@
class="transition duration-300 ease-in-out dark:opacity-90 pl-2 mb-0 font-sans text-sm font-semibold leading-normal uppercase dark:text-gray-500 "
>
{% if service['USE_MODSECURITY']['value'] == 'yes' %}
<span class="sr-only">yes</span>
<svg
class="h-4 w-4 fill-green-500"
xmlns="http://www.w3.org/2000/svg"
@ -202,6 +211,7 @@
/>
</svg>
{% else %}
<span class="sr-only">no</span>
<svg
class="h-4 w-4 fill-red-500"
xmlns="http://www.w3.org/2000/svg"
@ -216,7 +226,7 @@
</div>
<!-- end detail -->
<!-- detail -->
<div class="flex items-center col-span-12 sm:col-span-6">
<div role="gridcell" class="flex items-center col-span-12 sm:col-span-6">
<p
class="transition duration-300 ease-in-out dark:opacity-90 font-bold mb-0 font-sans text-sm leading-normal uppercase dark:text-gray-500 "
>
@ -226,6 +236,7 @@
class="transition duration-300 ease-in-out dark:opacity-90 pl-2 mb-0 font-sans text-sm font-semibold leading-normal uppercase dark:text-gray-500 "
>
{% if service['USE_BAD_BEHAVIOR']['value'] == 'yes' %}
<span class="sr-only">yes</span>
<svg
class="h-4 w-4 fill-green-500"
xmlns="http://www.w3.org/2000/svg"
@ -236,6 +247,7 @@
/>
</svg>
{% else %}
<span class="sr-only">no</span>
<svg
class="h-4 w-4 fill-red-500"
xmlns="http://www.w3.org/2000/svg"
@ -250,7 +262,7 @@
</div>
<!-- end detail -->
<!-- detail -->
<div class="flex items-center col-span-12 sm:col-span-6">
<div role="gridcell" class="flex items-center col-span-12 sm:col-span-6">
<p
class="transition duration-300 ease-in-out dark:opacity-90 font-bold mb-0 font-sans text-sm leading-normal uppercase dark:text-gray-500 "
>
@ -259,7 +271,9 @@
<p
class="transition duration-300 ease-in-out dark:opacity-90 pl-2 mb-0 font-sans text-sm font-semibold leading-normal uppercase dark:text-gray-500 "
>
{% if service['USE_LIMIT_REQ']['value'] == 'yes' %}
{% if service['USE_LIMIT_REQ']['value'] == 'yes' %}$
<span class="sr-only">yes</span>
<svg
class="h-4 w-4 fill-green-500"
xmlns="http://www.w3.org/2000/svg"
@ -270,6 +284,8 @@
/>
</svg>
{% else %}
<span class="sr-only">no</span>
<svg
class="h-4 w-4 fill-red-500"
xmlns="http://www.w3.org/2000/svg"
@ -284,7 +300,7 @@
</div>
<!-- end detail -->
<!-- detail -->
<div class="flex items-center col-span-12 sm:col-span-6">
<div role="gridcell" class="flex items-center col-span-12 sm:col-span-6">
<p
class="font-bold mb-0 font-sans text-sm leading-normal uppercase dark:text-gray-500"
>
@ -294,6 +310,7 @@
class="transition duration-300 ease-in-out dark:opacity-90 pl-2 mb-0 font-sans text-sm font-semibold leading-normal uppercase dark:text-gray-500 "
>
{% if service['USE_DNSBL']['value'] == 'yes' %}
<span class="sr-only">yes</span>
<svg
class="h-4 w-4 fill-green-500"
xmlns="http://www.w3.org/2000/svg"
@ -304,6 +321,7 @@
/>
</svg>
{% else %}
<span class="sr-only">no</span>
<svg
class="h-4 w-4 fill-red-500"
xmlns="http://www.w3.org/2000/svg"
@ -322,7 +340,7 @@
<!-- button list-->
<div class="relative w-full flex justify-center sm:justify-end">
<a href="http://{{service["SERVER_NAME"]['value']}}"
<a aria-label="access service url" href="http://{{service["SERVER_NAME"]['value']}}"
target="_blank"
class="dark:brightness-90 z-20 mx-1 bg-sky-500 hover:bg-sky-500/80 focus:bg-sky-500/80 inline-block p-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer leading-normal text-xs ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 active:opacity-85 hover:shadow-md"
>
@ -340,7 +358,7 @@
<button
data-services-action="edit"
type="button"
aria-label="edit service settings"
data-services-name="{{service["SERVER_NAME"]['value']}}"
class="dark:brightness-90 z-20 mx-1 bg-yellow-500 hover:bg-yellow-500/80 focus:bg-yellow-500/80 inline-block p-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer leading-normal text-xs ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 active:opacity-85 hover:shadow-md"
@ -355,7 +373,7 @@
{% if service["SERVER_NAME"]['method'] == "ui" %}
<button
data-services-action="delete"
type="button"
aria-label="delete service"
data-services-name="{{service["SERVER_NAME"]['value']}}"
class="dark:brightness-90 z-20 mx-1 bg-red-500 hover:bg-red-500/80 focus:bg-red-500/80 inline-block p-3 font-bold text-center text-white uppercase align-middle transition-all rounded-lg cursor-pointer leading-normal text-xs ease-in tracking-tight-rem shadow-xs bg-150 bg-x-25 active:opacity-85 hover:shadow-md"
>

View file

@ -15,7 +15,11 @@
>
SERVICE MODAL
</p>
<button class="-translate-y-1" type="button" data-services-modal-close>
<button
class="-translate-y-1"
aria-label="close modal"
data-services-modal-close
>
<svg
class="transition duration-300 ease-in-out dark:opacity-90 h-6 w-6 sm:h-7 sm:w-7 fill-slate-800 dark:fill-gray-300"
xmlns="http://www.w3.org/2000/svg"
@ -40,6 +44,7 @@
<div
class="flex relative col-span-12 sm:col-span-6 lg:col-span-4 3xl:col-span-3"
>
<label class="sr-only" for="settings-filter">search</label>
<input
type="text"
id="settings-filter"

View file

@ -50,7 +50,7 @@ data-plugin-item="{{plugin['id']}}"
/>
</svg>
<!-- popover -->
<div class="popover-settings-container hidden"
<div role="alert" aria-description="show detail" class="popover-settings-container hidden"
data-popover-content="{{ value["label"] }}"
>
<p class="popover-settings-text" >{{value['help']}}
@ -63,6 +63,7 @@ data-plugin-item="{{plugin['id']}}"
<!-- input -->
{% if value["type"] != "select" and value["type"] != "check" %}
<div class="relative flex items-center">
<label class="sr-only" for="{{setting}}">{{setting}}</label>
<input
{% if setting == "SERVER_NAME" %}required{%endif%}
data-default-value="{{global_config[setting]['value']}}" data-default-method="{{global_config[setting]['method']}}"
@ -99,22 +100,22 @@ data-plugin-item="{{plugin['id']}}"
<!--custom-->
<div data-select-container class="relative">
<button
<button
{% if global_config[setting]['method'] != 'ui' and global_config[setting]['method'] != 'default' %} disabled {% endif %} data-setting-select="{{value['id']}}"
data-default-value="{{global_config[setting]['value']}}"
data-default-method="{{global_config[setting]['method']}}"
type="button"
aria-controls="{{settings}}-dropdown"
class="custom-select-btn"
>
{% for item in value['select'] %} {% if global_config[setting]['value'] and
global_config[setting]['value'] == item %}
<span
<span
data-setting-select-text="{{value['id']}}"
data-value="{{global_config[setting]['value']}}"
>{{global_config[setting]['value']}}</span
>
{% elif not global_config[setting]['value'] and value['default'] == item %}
<span
<span aria-label="current value"
data-setting-select-text="{{value['id']}}"
data-value="{{value['default']}}"
>{{value['default']}}</span
@ -135,14 +136,15 @@ data-plugin-item="{{plugin['id']}}"
</button>
<!-- dropdown-->
<div
id="{{settings}}-dropdown"
role="listbox"
data-setting-select-dropdown="{{value['id']}}"
class="hidden z-[20] absolute h-full flex-col w-full mt-2"
>
{% for item in value['select'] %} {% if global_config[setting]['value'] and
global_config[setting]['value'] == item or not global_config[setting]['value']
and value['default'] == item %}
<button
type="button"
<button role="option"
value="{{item}}"
data-setting-select-dropdown-btn="{{value['id']}}"
type="button"
@ -151,8 +153,7 @@ data-plugin-item="{{plugin['id']}}"
{{item}}
</button>
{% else %}
<button
type="button"
<button role="option"
value="{{item}}"
data-setting-select-dropdown-btn="{{value['id']}}"
type="button"
@ -170,6 +171,7 @@ data-plugin-item="{{plugin['id']}}"
<!-- checkbox -->
{% if value["type"] == "check" %}
<div data-checkbox-handler="{{value['id']}}" class="relative mb-7 md:mb-0 z-10 ">
<label class="sr-only" for="{{setting}}">{{setting}}</label>
<input id="{{setting}}" name="{{setting}}"
data-default-method="{% if setting in ["AUTOCONF_MODE", "SWARM_MODE", "KUBERNETES_MODE"] %}mode{% else %}{{global_config[setting]['method']}}{% endif %}"
data-default-value="{{global_config[setting]['value']}}"
@ -200,7 +202,7 @@ data-plugin-item="{{plugin['id']}}"
<!-- end checkbox -->
<!-- invalid feedback -->
<div class="hidden text-sm dark:text-red-500">
<div role="alert" aria-label="show when invalid input" class="hidden text-sm dark:text-red-500">
{{value['label']}} is invalid and must match this pattern:
{{value['regex']|safe}}
</div>
@ -266,7 +268,7 @@ data-plugin-item="{{plugin['id']}}"
/>
</svg>
<!-- popover -->
<div class="popover-settings-container hidden"
<div role="alert" aria-description="show detail" class="popover-settings-container hidden"
data-popover-content="{{ value["label"] }}"
>
<p class="popover-settings-text" >{{value['help']}}
@ -279,6 +281,7 @@ data-plugin-item="{{plugin['id']}}"
<!-- input -->
{% if value["type"] != "select" and value["type"] != "check" %}
<div class="relative flex items-center">
<label class="sr-only" for="{{setting}}_SCHEMA">{{setting}}</label>
<input
data-default-value="{{value['default']}}" data-default-method="default" id="{{setting}}_SCHEMA" name="{{setting}}_SCHEMA"
class="regular-input"
@ -315,11 +318,11 @@ data-plugin-item="{{plugin['id']}}"
<button
data-setting-select="{{value['id']}}"
data-default-value="{{value['default']}}"
type="button"
aria-controls="{{settings}}-dropdown"
class="custom-select-btn"
>
{% for item in value['select'] %} {% if value['default'] == item %}
<span
<span aria-label="current value"
data-setting-select-text="{{value['id']}}"
data-value="{{value['default']}}"
>{{value['default']}}</span
@ -339,26 +342,24 @@ data-plugin-item="{{plugin['id']}}"
<!-- end chevron -->
</button>
<!-- dropdown-->
<div
<div id="{{settings}}-dropdown"
role="listbox"
data-setting-select-dropdown="{{value['id']}}"
class="hidden z-[20] absolute h-full flex-col w-full mt-2"
>
{% for item in value['select'] %} {% if value['default'] == item %}
<button
type="button"
<button role="option"
value="{{item}}"
data-setting-select-dropdown-btn="{{value['id']}}"
type="button"
class="active custom-dropdown-btn {% if loop.index == 1 %} border-t rounded-t {% endif %} {% if loop.index == loop.length %}rounded-b {% endif %}"
>
{{item}}
</button>
{% else %}
<button
type="button"
role="option"
value="{{item}}"
data-setting-select-dropdown-btn="{{value['id']}}"
type="button"
class="custom-dropdown-btn {% if loop.index == 1 %} border-t rounded-t {% endif %} {% if loop.index == loop.length %}rounded-b {% endif %}"
>
{{item}}
@ -373,6 +374,7 @@ data-plugin-item="{{plugin['id']}}"
<!-- checkbox -->
{% if value["type"] == "check" %}
<div data-checkbox-handler="{{value['id']}}" class="relative mb-7 md:mb-0">
<label class="sr-only" for="{{setting}}_SCHEMA">{{setting}}</label>
<input id="{{setting}}_SCHEMA" name="{{setting}}_SCHEMA"
data-default-method="default"
data-default-value="{{value['default']}}" {% if value['default'] == 'yes' %} checked {%
@ -394,7 +396,7 @@ data-plugin-item="{{plugin['id']}}"
<!-- end checkbox -->
<!-- invalid feedback -->
<div class="hidden text-sm dark:text-red-500">
<div role="alert" aria-label="show when invalid" class="hidden text-sm dark:text-red-500">
{{value['label']}} is invalid and must match this pattern:
{{value['regex']|safe}}
</div>

View file

@ -11,7 +11,7 @@
and check_settings(plugin["settings"], "global") %}
<button role="tab"
data-tab-handler="{{ plugin['id'] }}"
type="button"
class="{% if loop.first %}active{% endif %} settings-tabs-tab-btn"
>
<span class="w-full flex justify-between items-center">
@ -46,10 +46,10 @@
<div class="md:hidden relative col-span-12 h-full">
<button
data-tab-dropdown-btn
type="button"
aria-controls="tab-dropdown-mobile"
class="settings-tabs-mobile-btn"
>
<span class="settings-tabs-mobile-btn-text">{% if current_endpoint == "global-config" %}general {% endif %} </span>
<span aria-label="current tab" class="settings-tabs-mobile-btn-text">{% if current_endpoint == "global-config" %}general {% endif %} </span>
<!-- chevron -->
<svg
@ -64,7 +64,8 @@
<!-- end chevron -->
</button>
<!-- dropdown-->
<div
<div id="tab-dropdown-mobile" role="listbox"
data-tab-dropdown
class="hidden z-100 absolute flex-col w-full overflow-hidden overflow-y-auto max-h-90"
>
@ -74,18 +75,18 @@
and check_settings(plugin["settings"], "global") %}
{% if loop.first %}
<button
<button role="option"
data-tab-handler-mobile="{{ plugin['id'] }}"
type="button"
data-select="false"
id="edit-{{current_endpoint}}-{{ plugin['id'] }}-tab"
class="active first settings-tabs-mobile-dropdown-btn">
{{ plugin["name"] }}
</button>
{% else %}
<button
<button role="option"
data-tab-handler-mobile="{{ plugin['id'] }}"
type="button"
data-select="false"
id="edit-{{current_endpoint}}-{{ plugin['id'] }}-tab"
class="settings-tabs-mobile-dropdown-btn {% if loop.index == loop.length %}rounded-b {% endif %}">