补充主题静态资源与归档模板
This commit is contained in:
1 parent
1268a55dd0
commit
3247db7ed1
265 files changed
+59174
No files matched your search
@@ -0,0 +1,70 @@
|
||||
/**
|
||||
* AKSRT User Home — 公开用户主页专属脚本
|
||||
*
|
||||
* 负责公开主页 Tab 切换和 URL 同步。
|
||||
*/
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
function initUserHomeTabs() {
|
||||
var tabContainer = document.querySelector('.dashboard--public .dashboard-tabs');
|
||||
if (!tabContainer) return;
|
||||
|
||||
var tabs = tabContainer.querySelectorAll('[data-tab]');
|
||||
var panels = {};
|
||||
var defaultTab = tabs.length ? tabs[0].getAttribute('data-tab') : 'posts';
|
||||
|
||||
tabs.forEach(function(tab) {
|
||||
var name = tab.getAttribute('data-tab');
|
||||
var panel = document.getElementById('panel-' + name);
|
||||
if (panel) {
|
||||
panels[name] = { tab: tab, panel: panel };
|
||||
}
|
||||
});
|
||||
|
||||
function switchTo(name) {
|
||||
if (!panels[name]) name = defaultTab;
|
||||
|
||||
Object.keys(panels).forEach(function(key) {
|
||||
var active = key === name;
|
||||
panels[key].tab.classList.toggle('is-active', active);
|
||||
panels[key].tab.setAttribute('aria-selected', active ? 'true' : 'false');
|
||||
panels[key].panel.classList.toggle('is-active', active);
|
||||
panels[key].panel.hidden = !active;
|
||||
});
|
||||
}
|
||||
|
||||
function tabFromUrl() {
|
||||
var m = window.location.search.match(/[?&]tab=([^&]+)/);
|
||||
return m ? decodeURIComponent(m[1]) : defaultTab;
|
||||
}
|
||||
|
||||
function updateUrl(name) {
|
||||
if (!window.history.replaceState) return;
|
||||
var u = new URL(window.location);
|
||||
if (name === defaultTab) {
|
||||
u.searchParams.delete('tab');
|
||||
} else {
|
||||
u.searchParams.set('tab', name);
|
||||
}
|
||||
window.history.replaceState({}, '', u);
|
||||
}
|
||||
|
||||
tabs.forEach(function(tab) {
|
||||
tab.addEventListener('click', function() {
|
||||
var name = this.getAttribute('data-tab');
|
||||
switchTo(name);
|
||||
updateUrl(name);
|
||||
});
|
||||
});
|
||||
|
||||
switchTo(tabFromUrl());
|
||||
}
|
||||
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', initUserHomeTabs);
|
||||
} else {
|
||||
initUserHomeTabs();
|
||||
}
|
||||
})();
|
||||
Reference in new issue
Block a user