From 4089ba01e0881c89a72332e13bc3a80b6bddec2a Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 29 Jun 2026 22:15:55 +0000
Subject: [PATCH] =DashboardManager overhaul. A bit easier to modify the output of pages. Still have to get the account pages to work as expected, as well as verify the integrations and others are working - but registrar/content pages work as expected. Also fixed up the table generation in CRUD.js and CRUDSkeleton.php
---
assets/js/concise/Tabs.js | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/assets/js/concise/Tabs.js b/assets/js/concise/Tabs.js
index 3828671..d3559d8 100644
--- a/assets/js/concise/Tabs.js
+++ b/assets/js/concise/Tabs.js
@@ -10,6 +10,7 @@
this.tabs = new Map();
this.hasHash = false;
+ this.shouldNotify = true;
this.init();
}
init() {
@@ -37,6 +38,9 @@
const tab = e.target.closest(this.selectors.tab);
if (tab) {
+ if (tab.dataset.skip) {
+ delete config.preCheck;
+ }
this.switchTab(tab.dataset.tab, config);
}
}
@@ -72,7 +76,7 @@
ui.sections.forEach(section => {
if (section.querySelector('.tabs')) {
options.hasChildren = true;
- this.registerTab(section, {parent: tabsId});
+ this.registerTab(section, {parent: tabsId, ... options});
}
});
@@ -83,7 +87,8 @@
let config = {
id: tabsId,
ui: ui,
- updateURL: options.updateURL ?? true
+ updateURL: options.updateURL ?? true,
+ ... options
};
if (Object.hasOwn(options, 'preCheck')) {
config.preCheck = options.preCheck;
@@ -93,8 +98,10 @@
ui.nav.addEventListener('click', this.clickHandler);
ui.select?.addEventListener('change', this.changeHandler);
this.tabs.set(tabsId, config);
+ this.shouldNotify = false;
this.determineActiveTab(config);
+ this.shouldNotify = true;
return config;
}
@@ -153,7 +160,6 @@
config = (typeof config === 'string') ? this.tabs.get(config) : config;
if (!config) return;
let activeTab = config.ui.sections.filter(section => section.classList.contains('active'));
-
if (Object.hasOwn(config, 'preCheck') && !config.preCheck(activeTab[0], tab, config)) return;
if (document.activeElement && this.isInTabs(document.activeElement, config)) document.activeElement.blur();
@@ -197,7 +203,9 @@
if (config?.updateURL) this.updateURL(config);
if (config.ui.select) this.maybeUpdateSelect(tab, config);
- this.a11y.announce(`Switched to ${tab} tab`);
+ if (this.shouldNotify) {
+ this.a11y.announce(`Switched to ${tab} tab`);
+ }
}
updateChildTabs(id) {
Array.from(this.tabs.values()).filter(conf => conf.parent === id).forEach(inst => {
--
Gitblit v1.10.0