fix(frontend): keep asset and homepage filters in DOM
This commit is contained in:
1 parent
a0adddce59
commit
7308f055c7
23 files changed
+362
-305
No files matched your search
+63
-25
@@ -528,7 +528,18 @@
|
||||
var item = document.createElement('button');
|
||||
item.type = 'button';
|
||||
item.className = 'uc-transfer-user';
|
||||
item.innerHTML = '<img' + window.aksrtGetLazyImageAttr('lazy_avatar', u.avatar || '', 'uc-transfer-user__avatar', 'sm') + ' alt=""><span>' + (u.display_name || u.user_login) + '</span><span class="muted-2-color em09">@' + (u.user_login || '') + '</span>';
|
||||
var avatar = document.createElement('img');
|
||||
avatar.className = 'uc-transfer-user__avatar';
|
||||
avatar.alt = '';
|
||||
avatar.src = String(u.avatar || '');
|
||||
item.appendChild(avatar);
|
||||
var displayName = document.createElement('span');
|
||||
displayName.textContent = String(u.display_name || u.user_login || '');
|
||||
item.appendChild(displayName);
|
||||
var login = document.createElement('span');
|
||||
login.className = 'muted-2-color em09';
|
||||
login.textContent = '@' + String(u.user_login || '');
|
||||
item.appendChild(login);
|
||||
item.addEventListener('click', function () {
|
||||
if (recipientInput) recipientInput.value = String(u.id);
|
||||
if (selected) selected.textContent = '已选择:' + (u.display_name || u.user_login);
|
||||
@@ -737,31 +748,58 @@
|
||||
}
|
||||
|
||||
function initAssetTabs() {
|
||||
var nav = document.querySelectorAll('[data-aksrt-asset-tab]');
|
||||
if (!nav.length) return;
|
||||
nav.forEach(function (link) {
|
||||
if (link.dataset.aksrtAssetTabBound === 'true') return;
|
||||
link.dataset.aksrtAssetTabBound = 'true';
|
||||
link.addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
var key = link.getAttribute('data-aksrt-asset-tab');
|
||||
document.querySelectorAll('.uc-asset-tabs__nav [data-aksrt-asset-tab]').forEach(function (a) {
|
||||
var li = a.closest('li');
|
||||
if (!li) return;
|
||||
var aKey = a.getAttribute('data-aksrt-asset-tab');
|
||||
var on = aKey === key || (key === 'points_date' && aKey === 'points_free');
|
||||
li.classList.toggle('active', on);
|
||||
});
|
||||
var tabs = document.querySelector('.uc-asset-tabs');
|
||||
if (tabs && typeof tabs.scrollIntoView === 'function') {
|
||||
tabs.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||
}
|
||||
document.querySelectorAll('[data-aksrt-asset-pane]').forEach(function (pane) {
|
||||
var on = pane.getAttribute('data-aksrt-asset-pane') === key;
|
||||
pane.classList.toggle('is-active', on);
|
||||
pane.hidden = !on;
|
||||
});
|
||||
if (document.documentElement.dataset.aksrtAssetTabsBound === 'true') return;
|
||||
document.documentElement.dataset.aksrtAssetTabsBound = 'true';
|
||||
|
||||
function select(key) {
|
||||
document.querySelectorAll('.uc-asset-tabs__nav [data-aksrt-asset-tab]').forEach(function (link) {
|
||||
var li = link.closest('li');
|
||||
if (!li) return;
|
||||
var linkKey = link.getAttribute('data-aksrt-asset-tab');
|
||||
li.classList.toggle('active', linkKey === key || (key === 'points_date' && linkKey === 'points_free'));
|
||||
});
|
||||
document.querySelectorAll('[data-aksrt-asset-pane]').forEach(function (pane) {
|
||||
var active = pane.getAttribute('data-aksrt-asset-pane') === key;
|
||||
pane.classList.toggle('is-active', active);
|
||||
pane.hidden = !active;
|
||||
});
|
||||
}
|
||||
|
||||
function loadPage(key, page) {
|
||||
var panel = document.querySelector('#panel-credits');
|
||||
var rest = (window.aksrtData && (window.aksrtData.restUrl || window.aksrtData.apiUrl)) || '';
|
||||
if (!panel || !rest) return;
|
||||
panel.classList.add('is-loading');
|
||||
var url = rest.replace(/\/$/, '') + '/user-center/panel/credits?asset=' + encodeURIComponent(key) + '&page=' + encodeURIComponent(page);
|
||||
fetch(url, {
|
||||
credentials: 'same-origin',
|
||||
headers: { 'X-WP-Nonce': (window.aksrtData && (window.aksrtData.restNonce || window.aksrtData.nonce)) || '' }
|
||||
}).then(function (response) {
|
||||
return response.json().then(function (payload) {
|
||||
if (!response.ok || !payload || !payload.success || !payload.data || typeof payload.data.html !== 'string') throw new Error('asset-page-load-failed');
|
||||
panel.innerHTML = payload.data.html;
|
||||
if (window.jQuery) jQuery(document).trigger('post_ajax.ed', [panel]);
|
||||
if (typeof window.auto_fun === 'function') window.auto_fun();
|
||||
select(key);
|
||||
});
|
||||
}).catch(function () {
|
||||
notyf('记录加载失败,请重试', 'danger');
|
||||
}).finally(function () {
|
||||
panel.classList.remove('is-loading');
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener('click', function (e) {
|
||||
var pageButton = e.target.closest('[data-aksrt-asset-page]');
|
||||
if (pageButton) {
|
||||
e.preventDefault();
|
||||
loadPage(pageButton.getAttribute('data-aksrt-asset-key') || 'points', parseInt(pageButton.getAttribute('data-aksrt-asset-page') || '1', 10) || 1);
|
||||
return;
|
||||
}
|
||||
var link = e.target.closest('[data-aksrt-asset-tab]');
|
||||
if (!link) return;
|
||||
e.preventDefault();
|
||||
select(link.getAttribute('data-aksrt-asset-tab'));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user