对小工具进行了一些修复

This commit is contained in:
kate522 committed 2026-08-26 11:06:05 +08:00
1 parent c6b1acfe0e
commit 523af723ae
12 files changed
+433 -37

No files matched your search

+10
View File
@@ -98,6 +98,16 @@
align-items: center;
}
.aksrt-widget-remote-picker { position: relative; }
.aksrt-widget-remote-picker > select { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.aksrt-widget-remote-picker__selected { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 6px; }
.aksrt-widget-remote-picker__tag { padding: 4px 8px; border: 1px solid #c3c4c7; border-radius: 3px; background: #f6f7f7; color: #2c3338; cursor: pointer; }
.aksrt-widget-remote-picker__tag::after { margin-left: 6px; color: #787c82; content: "×"; }
.aksrt-widget-remote-picker__results { position: absolute; z-index: 20; right: 0; left: 0; max-height: 210px; overflow-y: auto; border: 1px solid #8c8f94; border-top: 0; background: #fff; box-shadow: 0 4px 8px rgba(0, 0, 0, .12); }
.aksrt-widget-remote-picker__result, .aksrt-widget-remote-picker__status { display: block; width: 100%; padding: 7px 9px; border: 0; background: #fff; color: #2c3338; text-align: left; }
.aksrt-widget-remote-picker__result { cursor: pointer; }
.aksrt-widget-remote-picker__result:hover, .aksrt-widget-remote-picker__result:focus { background: #f0f6fc; color: #135e96; }
.aksrt-widget-upload {
display: flex;
flex-wrap: wrap;
+62
View File
@@ -16,11 +16,73 @@
const output = this.parentElement.querySelector('output');
if (output) this.addEventListener('input', () => { output.textContent = this.value; });
});
initRemoteSelects($root);
evaluateDependencies($root);
updateWidgetTitle($root);
updatePlacementWarning($root);
}
function initRemoteSelects(root) {
$(root).find('select.aksrt-widget-remote-select').each(function () {
const $select = $(this);
if ($select.data('remote-ready')) return;
$select.data('remote-ready', true);
const $picker = $('<div class="aksrt-widget-remote-picker"></div>');
const $selected = $('<div class="aksrt-widget-remote-picker__selected"></div>');
const $search = $('<input type="search" class="widefat aksrt-widget-remote-picker__search" autocomplete="off">').attr('placeholder', String($select.data('placeholder') || '输入关键词以搜索'));
const $results = $('<div class="aksrt-widget-remote-picker__results" role="listbox" hidden></div>');
$select.wrap($picker);
$select.after($selected, $search, $results);
const renderSelected = () => {
$selected.empty();
$select.find('option:selected').each(function () {
const $tag = $('<button type="button" class="aksrt-widget-remote-picker__tag"></button>').text($(this).text()).attr('aria-label', `移除 ${$(this).text()}`);
$tag.on('click', () => { $(this).remove(); $select.trigger('change'); renderSelected(); });
$selected.append($tag);
});
};
let timer = 0;
$search.on('input', function () {
window.clearTimeout(timer);
const query = String(this.value || '').trim();
const minLength = Number($select.data('min-length') || 0);
if (query.length < minLength) { $results.prop('hidden', true).empty(); return; }
timer = window.setTimeout(() => {
$results.prop('hidden', false).empty().append($('<span class="aksrt-widget-remote-picker__status"></span>').text(config.i18n?.loading || '正在加载…'));
$.post(config.ajaxUrl, {
action: config.searchAction,
nonce: config.nonce,
source: $select.data('option-source'),
queryArgs: $select.attr('data-query-args') || '{}',
search: query,
}).done((response) => {
$results.empty();
const items = response?.success && Array.isArray(response.data?.results) ? response.data.results : [];
if (!items.length) { $results.append($('<span class="aksrt-widget-remote-picker__status"></span>').text('未找到匹配内容')); return; }
items.forEach((item) => {
const id = String(item.id || '');
const text = String(item.text || `#${id}`);
const $button = $('<button type="button" class="aksrt-widget-remote-picker__result" role="option"></button>').text(text);
$button.on('click', () => {
let $option = $select.find('option').filter(function () { return String(this.value) === id; }).first();
if (!$option.length) $option = $('<option></option>').val(id).text(text).appendTo($select);
$option.prop('selected', true);
$select.trigger('change');
renderSelected();
$search.val('').trigger('focus');
$results.prop('hidden', true).empty();
});
$results.append($button);
});
}).fail(() => $results.empty().append($('<span class="aksrt-widget-remote-picker__status"></span>').text(config.i18n?.error || '加载失败,请重试。')));
}, 250);
});
renderSelected();
});
}
function updateWidgetTitle(root) {
const $root = $(root);
const title = String($root.find('.aksrt-widget-field[data-field-id="title"] input').first().val() || '').trim();
+23 -5
View File
@@ -99,15 +99,27 @@
.aksrt-widget-text-title { padding: 18px 0; }.aksrt-widget-text-title.is-center { text-align: center; }.aksrt-widget-text-title.is-right { text-align: right; }
.aksrt-widget-text-title h2 { margin: 0; font-size: clamp(26px,4vw,44px); line-height: 1.25; }.aksrt-widget-text-title p { margin: 12px 0 0; color: var(--muted-color,#8a8c98); line-height: 1.8; }
.aksrt-widget-buttons { display: flex; flex-wrap: wrap; gap: var(--aksrt-button-gap,10px); }.aksrt-widget-buttons.is-center { justify-content: center; }.aksrt-widget-buttons.is-right { justify-content: flex-end; }
.aksrt-widget-button { display: inline-flex; min-height: 40px; padding: 9px 18px; align-items: center; justify-content: center; gap: 7px; border: 0; border-radius: 9px; background: var(--focus-color,#ff5473); color: #fff !important; font-weight: 600; cursor: pointer; transition: filter .2s, transform .2s; }
.aksrt-widget-button:hover { filter: brightness(1.07); transform: translateY(-1px); }.aksrt-widget-button.is-secondary { background: rgba(127,127,127,.12); color: inherit !important; }
.aksrt-user-card__guest-actions .aksrt-widget-button, .aksrt-user-card__actions > .aksrt-widget-button { display: inline-flex; min-height: 40px; padding: 9px 18px; align-items: center; justify-content: center; gap: 7px; border: 0; border-radius: 9px; background: var(--focus-color,#ff5473); color: #fff !important; font-weight: 600; cursor: pointer; transition: filter .2s, transform .2s; }
.aksrt-user-card__guest-actions .aksrt-widget-button:hover, .aksrt-user-card__actions > .aksrt-widget-button:hover { filter: brightness(1.07); transform: translateY(-1px); }.aksrt-user-card__guest-actions .aksrt-widget-button.is-secondary { background: rgba(127,127,127,.12); color: inherit !important; }
.aksrt-widget-gap { height: var(--aksrt-gap); }
.aksrt-widget-tag-cloud { display: flex; flex-wrap: wrap; gap: 8px; }.aksrt-widget-tag-cloud a { padding: 6px 11px; border-radius: 6px; background: rgba(127,127,127,.1); font-size: 13px; transition: background .2s,color .2s; }.aksrt-widget-tag-cloud a:hover { background: var(--focus-color,#ff5473); color: #fff; }.aksrt-widget-tag-cloud small { margin-left: 5px; opacity: .65; }
.aksrt-widget-comments { display: grid; gap: 15px; margin: 0; padding: 0; list-style: none; }.aksrt-widget-comments li { display: flex; gap: 11px; }.aksrt-widget-comments__avatar img { width: 42px; height: 42px; border-radius: 50%; }.aksrt-widget-comments p { margin: 3px 0; color: var(--muted-color,#8a8c98); font-size: 13px; line-height: 1.55; }.aksrt-widget-comments__source { font-size: 12px; opacity: .65; }
.aksrt-widget-links { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; }.aksrt-widget-links a { display: flex; flex-direction: column; gap: 4px; padding: 10px 8px; border-radius: var(--main-radius,8px); background: var(--muted-border-color,#f2f3f5); color:var(--key-color,#333); }.aksrt-widget-links small { color: var(--muted-color,#8a8c98); }.aksrt-widget-links--simple { display: flex; flex-wrap: wrap; }.aksrt-widget-links--simple a { padding: 5px 9px; box-shadow: none; background: transparent; }
.aksrt-widget-notice { display: flex; height: 48px; align-items: center; gap: 12px; padding: 0 15px; overflow: hidden; border-radius: var(--main-radius,8px); background: var(--main-bg-color,#fff); box-shadow: 0 0 10px var(--main-shadow,rgba(116,116,116,.08)); }.aksrt-widget-notice .swiper { height: 48px; flex: 1; }.aksrt-widget-notice .swiper-slide, .aksrt-widget-notice .swiper-slide a { display: flex; height: 48px; align-items: center; gap: 10px; }.aksrt-widget-notice .swiper-slide span { overflow: hidden; color: var(--muted-color,#8a8c98); text-overflow: ellipsis; white-space: nowrap; }
.aksrt-widget-swiper { position: relative; }
.widget-buttons-wrap { margin: calc(0px - var(--pc-gap, 10px)); }
.widget-buttons-wrap > div { margin: var(--pc-gap, 10px); }
.widget-buttons-wrap .but { width: var(--pc-width, auto); }
.widget-buttons-wrap.align-center { justify-content: center; }
.widget-buttons-wrap.align-right { justify-content: flex-end; }
.widget-buttons-wrap.align-left { justify-content: flex-start; }
.widget-buttons.pc-size-small .but { padding: .3em .6em; }
.widget-buttons.pc-size-medium .but { padding: 8px 16px; }
.widget-buttons.pc-size-large .but { padding: 12px 24px; }
.swiper-bulletin { padding: .1em 6px; background: var(--this-bg); }
.swiper-bulletin .new-swiper { line-height: 2.4em; height: 2.4em; overflow: hidden; }
.swiper-bulletin a { color: var(--this-color); }
.bulletin-icon { background: var(--this-color); width: 26px; height: 26px; text-align: center; border-radius: 30px; color: #fff; font-size: 18px; }
.swiper-bulletin[class*="b-"] .bulletin-icon { color: var(--this-bg); }
.swiper-bulletin[class*="jb-"] .bulletin-icon { color: var(--this-bg-b); }
.aksrt-term-card { display: block; overflow: hidden; border-radius: var(--aksrt-widget-radius); background: var(--main-bg-color,#fff); box-shadow: 0 0 10px var(--main-shadow,rgba(116,116,116,.08)); }.aksrt-term-card__media { display: block; aspect-ratio: 16/9; background: var(--muted-border-color,#eee); }.aksrt-term-card__media img { width: 100%; height: 100%; object-fit: cover; }.aksrt-term-card__body { display: flex; flex-direction: column; gap: 5px; padding: 14px; }.aksrt-term-card__body small { min-height: 38px; color: var(--muted-color,#8a8c98); }.aksrt-term-card__body em { font-size: 12px; color: var(--focus-color,#ff5473); font-style: normal; }
.aksrt-term-aggregation { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 15px; }.aksrt-term-aggregation__card { padding: 15px; border-radius: var(--aksrt-widget-radius); background: var(--main-bg-color,#fff); box-shadow: 0 0 10px var(--main-shadow,rgba(116,116,116,.08)); }.aksrt-term-aggregation header a { display: flex; justify-content: space-between; }.aksrt-term-aggregation header span { color: var(--muted-color,#8a8c98); font-size: 13px; }.aksrt-term-aggregation ul { display: grid; gap: 10px; margin: 14px 0 0; padding: 0; list-style: none; }.aksrt-term-aggregation li a { display: flex; align-items: center; gap: 10px; }.aksrt-term-aggregation li img { width: 55px; height: 42px; border-radius: 6px; object-fit: cover; }
@@ -133,6 +145,12 @@
.aksrt-widget-grid { grid-template-columns: repeat(var(--aksrt-cols-m,1),minmax(0,1fr)); gap: 10px; }
.aksrt-widget__header { align-items: flex-start; flex-direction: column; }.aksrt-widget__title-links { justify-content: flex-start; }
.aksrt-widget-links { grid-template-columns: repeat(2,minmax(0,1fr)); }
.widget-buttons-wrap { margin: calc(0px - var(--m-gap, 5px)); }
.widget-buttons-wrap > div { margin: var(--m-gap, 5px); }
.widget-buttons-wrap .but { width: var(--m-width, auto); }
.widget-buttons.m-size-small .but { padding: .3em .6em; }
.widget-buttons.m-size-medium .but { padding: 8px 16px; }
.widget-buttons.m-size-large .but { padding: 12px 24px; }
.aksrt-widget-partners__track { grid-template-rows: repeat(var(--aksrt-partner-rows-m),70px); }
.aksrt-term-aggregation, .aksrt-feature-intro__panels article, .aksrt-slider-combo { grid-template-columns: 1fr; }
.aksrt-highlight--large { grid-column: auto; }