refactor: rename the theme brand and every identifier from AKSRT to Jio

Full-project rename. `git grep -i aksrt` is now empty apart from the
DBMigrator 3.3.0 changelog note that documents the rename itself.

Code identifiers
- PHP namespace AKSRT\ -> Jio\ (composer PSR-4 + 378 declarations)
- global constants AKSRT_* -> JIO_* (VERSION/DIR/URI, PAY_TYPE_*, CAPTCHA_*)
- procedural functions, hooks, options, meta keys, table names,
  cookies, query vars, ajax actions and nonces: aksrt_ -> jio_
- text domain aksrt -> jio; Theme Name -> Jio
- JS globals: aksrtData/aksrtAdminData/... -> jioData/jioAdminData/...,
  window.AKSRTCaptcha & friends -> window.JioCaptcha, Aksrt* -> Jio*
- Vue components Aks*.vue -> Jio*.vue (15 files renamed + imports)
- CSS classes/data-attrs/custom properties: aksrt- -> jio-
- REST namespace aksrt/v1 -> jio/v1 (incl. payment gateway callbacks)

Storage layer
- DB tables {prefix}aksrt_* -> {prefix}jio_*; SCHEMA_VERSION 3.2.0 -> 3.3.0
  so dbDelta creates the new names on install
- widget id_base aksrt_widget_* -> jio_widget_*
- uninstall.php drop list rebuilt from the actual migrator tables
  (dropped 3 stale entries, added the 17 missing ones)

Removed
- hardcoded https://api.aksrt.com/version.json default update endpoint;
  get_endpoint() now reads the 「更新端点」 setting and do_check() no-ops
  when it is empty

Files renamed: inc/helpers/aksrt-*.php -> jio-*.php (54),
assets/admin/src/components/form/Aks*.vue -> Jio*.vue (15).
Build artifacts regenerated: assets/css/build, assets/js/runtime,
assets/admin/build.

Verified: audit-psr4-paths errors=0, audit-admin-contracts errors=0
(warnings=56, unchanged baseline), 813/813 widget-system tests,
44/44 phpunit, php -l clean across all PHP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-11-01 20:05:04 +08:00
1 parent 5b16bc6e15
commit 35bb96e82f
997 files changed
+28216 -28188

No files matched your search

+1 -1
View File
@@ -2,7 +2,7 @@
'use strict';
var api = factory();
if (typeof module === 'object' && module.exports) module.exports = api;
else root.AKSRTWidgetAdminCore = api;
else root.JioWidgetAdminCore = api;
})(typeof globalThis !== 'undefined' ? globalThis : this, function () {
'use strict';
+84 -84
View File
@@ -2,7 +2,7 @@
(function ($) {
'use strict';
const config = window.aksrtWidgetAdmin || {};
const config = window.jioWidgetAdmin || {};
const t = (key) => (config.i18n && config.i18n[key]) || key;
function post(action, data) {
@@ -27,8 +27,8 @@
}
function reloadButton() {
return $('<p class="aksrt-wie-modal__reload-wrap"></p>').append(
$('<button type="button" class="button button-primary aksrt-wie-modal__reload"></button>').text(t('reloadPage'))
return $('<p class="jio-wie-modal__reload-wrap"></p>').append(
$('<button type="button" class="button button-primary jio-wie-modal__reload"></button>').text(t('reloadPage'))
);
}
@@ -54,10 +54,10 @@
}
function importModeHtml(name) {
return `<div class="aksrt-wie-modal__import-mode">
<div class="aksrt-wie-modal__import-mode-title description"></div>
<label class="aksrt-wie-modal__import-mode-row"><input type="radio" name="${name}" value="replace"> <span data-mode-label="replace"></span></label>
<label class="aksrt-wie-modal__import-mode-row"><input type="radio" name="${name}" value="append" checked> <span data-mode-label="append"></span></label>
return `<div class="jio-wie-modal__import-mode">
<div class="jio-wie-modal__import-mode-title description"></div>
<label class="jio-wie-modal__import-mode-row"><input type="radio" name="${name}" value="replace"> <span data-mode-label="replace"></span></label>
<label class="jio-wie-modal__import-mode-row"><input type="radio" name="${name}" value="append" checked> <span data-mode-label="append"></span></label>
</div>`;
}
@@ -66,27 +66,27 @@
function ensure() {
if ($modal) return $modal;
$modal = $(`<div id="${opts.id}" class="aksrt-wie-modal${opts.extraClass ? ' ' + opts.extraClass : ''}" aria-hidden="true">
<div class="aksrt-wie-modal__backdrop" data-aksrt-wie-close></div>
<div class="aksrt-wie-modal__dialog" role="dialog" aria-modal="true">
<button type="button" class="aksrt-wie-modal__close" data-aksrt-wie-close aria-label="${t('close')}">&times;</button>
$modal = $(`<div id="${opts.id}" class="jio-wie-modal${opts.extraClass ? ' ' + opts.extraClass : ''}" aria-hidden="true">
<div class="jio-wie-modal__backdrop" data-jio-wie-close></div>
<div class="jio-wie-modal__dialog" role="dialog" aria-modal="true">
<button type="button" class="jio-wie-modal__close" data-jio-wie-close aria-label="${t('close')}">&times;</button>
${opts.bodyHtml}
${opts.actionsHtml}
<p class="aksrt-wie-modal__result" aria-live="polite"></p>
<p class="jio-wie-modal__result" aria-live="polite"></p>
</div>
</div>`).appendTo('body');
$modal.find('.aksrt-wie-modal__import-mode-title').text(t('importModeLabel'));
$modal.find('.jio-wie-modal__import-mode-title').text(t('importModeLabel'));
$modal.find('[data-mode-label="replace"]').text(t('importModeReplace'));
$modal.find('[data-mode-label="append"]').text(t('importModeAppend'));
$modal.find('.aksrt-wie-modal__cancel').text(t('close'));
$modal.on('click', '[data-aksrt-wie-close], .aksrt-wie-modal__cancel', close);
$modal.find('.jio-wie-modal__cancel').text(t('close'));
$modal.on('click', '[data-jio-wie-close], .jio-wie-modal__cancel', close);
if (opts.onInit) opts.onInit($modal);
return $modal;
}
function open() {
ensure().find('input[name$="-import-mode"][value="append"]').prop('checked', true);
clearResult($modal.find('.aksrt-wie-modal__result'));
clearResult($modal.find('.jio-wie-modal__result'));
$modal.addClass('is-open').attr('aria-hidden', 'false');
}
@@ -94,25 +94,25 @@
if ($modal) $modal.removeClass('is-open').attr('aria-hidden', 'true');
}
return { ensure, open, close, $result: () => ensure().find('.aksrt-wie-modal__result') };
return { ensure, open, close, $result: () => ensure().find('.jio-wie-modal__result') };
}
const state = { mode: 'export', sidebarId: '', templateSidebarId: '' };
const ioModal = createModal({
id: 'aksrt-wie-modal',
bodyHtml: `<h3 class="aksrt-wie-modal__title"></h3>
<p class="aksrt-wie-modal__hint description"></p>
<textarea class="aksrt-wie-modal__textarea" spellcheck="false"></textarea>
${importModeHtml('aksrt-wie-import-mode')}`,
actionsHtml: `<p class="aksrt-wie-modal__actions">
<button type="button" class="button aksrt-wie-modal__copy"></button>
<button type="button" class="button button-primary aksrt-wie-modal__submit"></button>
<button type="button" class="button aksrt-wie-modal__cancel"></button>
id: 'jio-wie-modal',
bodyHtml: `<h3 class="jio-wie-modal__title"></h3>
<p class="jio-wie-modal__hint description"></p>
<textarea class="jio-wie-modal__textarea" spellcheck="false"></textarea>
${importModeHtml('jio-wie-import-mode')}`,
actionsHtml: `<p class="jio-wie-modal__actions">
<button type="button" class="button jio-wie-modal__copy"></button>
<button type="button" class="button button-primary jio-wie-modal__submit"></button>
<button type="button" class="button jio-wie-modal__cancel"></button>
</p>`,
onInit($modal) {
$modal.find('.aksrt-wie-modal__copy').on('click', function () {
const textarea = $modal.find('.aksrt-wie-modal__textarea')[0];
$modal.find('.jio-wie-modal__copy').on('click', function () {
const textarea = $modal.find('.jio-wie-modal__textarea')[0];
textarea.select();
textarea.setSelectionRange(0, textarea.value.length);
try {
@@ -122,26 +122,26 @@
window.alert(t('copyFail'));
}
});
$modal.find('.aksrt-wie-modal__submit').on('click', submitImport);
$modal.find('.jio-wie-modal__submit').on('click', submitImport);
},
});
const templateModal = createModal({
id: 'aksrt-wie-template-modal',
extraClass: 'aksrt-wie-template-layer',
bodyHtml: `<h3 class="aksrt-wie-modal__title"></h3>
<div class="aksrt-wie-modal__hint description"></div>
<div class="aksrt-wie-template-list-wrap"><p class="aksrt-wie-template-list-status description"></p><div class="aksrt-wie-template-list"></div></div>
${importModeHtml('aksrt-wie-template-import-mode')}`,
actionsHtml: `<p class="aksrt-wie-modal__actions">
<button type="button" class="button button-primary aksrt-wie-template-submit"></button>
<button type="button" class="button aksrt-wie-modal__cancel"></button>
id: 'jio-wie-template-modal',
extraClass: 'jio-wie-template-layer',
bodyHtml: `<h3 class="jio-wie-modal__title"></h3>
<div class="jio-wie-modal__hint description"></div>
<div class="jio-wie-template-list-wrap"><p class="jio-wie-template-list-status description"></p><div class="jio-wie-template-list"></div></div>
${importModeHtml('jio-wie-template-import-mode')}`,
actionsHtml: `<p class="jio-wie-modal__actions">
<button type="button" class="button button-primary jio-wie-template-submit"></button>
<button type="button" class="button jio-wie-modal__cancel"></button>
</p>`,
onInit($modal) {
$modal.find('.aksrt-wie-modal__title').text(t('templateModalTitle'));
$modal.find('.jio-wie-modal__title').text(t('templateModalTitle'));
// templateHint is server-built, escaped translation markup.
$modal.find('.aksrt-wie-modal__hint').html(t('templateHint'));
$modal.find('.aksrt-wie-template-submit').text(t('templateSubmit')).on('click', submitTemplate);
$modal.find('.jio-wie-modal__hint').html(t('templateHint'));
$modal.find('.jio-wie-template-submit').text(t('templateSubmit')).on('click', submitTemplate);
},
});
@@ -150,19 +150,19 @@
state.sidebarId = sidebarId;
const $modal = ioModal.ensure();
const isExport = mode === 'export';
$modal.find('.aksrt-wie-modal__title').text(t(isExport ? 'exportTitle' : 'importTitle'));
$modal.find('.aksrt-wie-modal__hint').text(t(isExport ? 'exportHint' : 'importHint'));
$modal.find('.aksrt-wie-modal__textarea').prop('readonly', isExport).val('');
$modal.find('.aksrt-wie-modal__copy').toggle(isExport).text(t('copy'));
$modal.find('.aksrt-wie-modal__submit').toggle(!isExport).text(t('submitImport')).prop('disabled', false);
$modal.find('.aksrt-wie-modal__import-mode').toggle(!isExport);
$modal.find('.jio-wie-modal__title').text(t(isExport ? 'exportTitle' : 'importTitle'));
$modal.find('.jio-wie-modal__hint').text(t(isExport ? 'exportHint' : 'importHint'));
$modal.find('.jio-wie-modal__textarea').prop('readonly', isExport).val('');
$modal.find('.jio-wie-modal__copy').toggle(isExport).text(t('copy'));
$modal.find('.jio-wie-modal__submit').toggle(!isExport).text(t('submitImport')).prop('disabled', false);
$modal.find('.jio-wie-modal__import-mode').toggle(!isExport);
ioModal.open();
if (isExport) fetchExport();
}
function fetchExport() {
const $textarea = ioModal.ensure().find('.aksrt-wie-modal__textarea').val(t('loadingExport'));
post('aksrt_widgets_export_sidebar', { sidebar_id: state.sidebarId })
const $textarea = ioModal.ensure().find('.jio-wie-modal__textarea').val(t('loadingExport'));
post('jio_widgets_export_sidebar', { sidebar_id: state.sidebarId })
.done((res) => {
if (res?.success && res.data?.json_text) {
$textarea.val(res.data.json_text);
@@ -179,17 +179,17 @@
function submitImport() {
const $modal = ioModal.ensure();
const mode = $modal.find('input[name="aksrt-wie-import-mode"]:checked').val() || 'append';
const mode = $modal.find('input[name="jio-wie-import-mode"]:checked').val() || 'append';
if (!window.confirm(t(mode === 'append' ? 'confirmImportAppend' : 'confirmImportReplace'))) return;
const raw = String($modal.find('.aksrt-wie-modal__textarea').val() || '').trim();
const raw = String($modal.find('.jio-wie-modal__textarea').val() || '').trim();
if (!raw) {
showError(ioModal.$result(), t('pasteJsonFirst'));
return;
}
withButtonLoading($modal.find('.aksrt-wie-modal__submit'), t('loadingImport'), t('submitImport'), () =>
post('aksrt_widgets_import_sidebar', { sidebar_id: state.sidebarId, json: raw, import_mode: mode })
withButtonLoading($modal.find('.jio-wie-modal__submit'), t('loadingImport'), t('submitImport'), () =>
post('jio_widgets_import_sidebar', { sidebar_id: state.sidebarId, json: raw, import_mode: mode })
.done((res) => {
if (res?.success) $modal.find('.aksrt-wie-modal__textarea').val('');
if (res?.success) $modal.find('.jio-wie-modal__textarea').val('');
renderImportResult(ioModal.$result(), res, false);
})
.fail((xhr) => showError(ioModal.$result(), failMessage(null, xhr, 'networkError')))
@@ -197,30 +197,30 @@
}
function templateItem(template) {
const $meta = $('<span class="aksrt-wie-template-item-meta"></span>')
.append($('<span class="aksrt-wie-template-item-title"></span>').text(template.title || template.id));
if (template.desc) $meta.append($('<span class="aksrt-wie-template-item-desc"></span>').text(template.desc));
const $meta = $('<span class="jio-wie-template-item-meta"></span>')
.append($('<span class="jio-wie-template-item-title"></span>').text(template.title || template.id));
if (template.desc) $meta.append($('<span class="jio-wie-template-item-desc"></span>').text(template.desc));
if (template.remind) {
$meta.append($('<span class="aksrt-wie-template-item-remind"></span>')
$meta.append($('<span class="jio-wie-template-item-remind"></span>')
.append('<span class="dashicons dashicons-info-outline" aria-hidden="true"></span>')
.append(document.createTextNode(template.remind)));
}
if (Array.isArray(template.modules) && template.modules.length) {
$meta.append($('<span class="aksrt-wie-template-item-modules"></span>').text(template.modules.map((module) => module.title).join(' / ')));
$meta.append($('<span class="jio-wie-template-item-modules"></span>').text(template.modules.map((module) => module.title).join(' / ')));
}
const $label = $('<label class="aksrt-wie-template-item-label"></label>')
.append($('<input type="radio" name="aksrt-wie-template-id">').val(template.id))
const $label = $('<label class="jio-wie-template-item-label"></label>')
.append($('<input type="radio" name="jio-wie-template-id">').val(template.id))
.append($meta);
return $('<div class="aksrt-wie-template-item"></div>').append($('<div class="aksrt-wie-template-item-row"></div>').append($label));
return $('<div class="jio-wie-template-item"></div>').append($('<div class="jio-wie-template-item-row"></div>').append($label));
}
function openTemplateModal(sidebarId) {
state.templateSidebarId = sidebarId;
const $modal = templateModal.ensure();
const $list = $modal.find('.aksrt-wie-template-list').empty();
const $status = $modal.find('.aksrt-wie-template-list-status').text(t('templateLoadingList'));
const $list = $modal.find('.jio-wie-template-list').empty();
const $status = $modal.find('.jio-wie-template-list-status').text(t('templateLoadingList'));
templateModal.open();
post('aksrt_widgets_list_templates')
post('jio_widgets_list_templates')
.done((res) => {
const templates = res?.success ? res.data?.templates : null;
$status.text(Array.isArray(templates) && templates.length ? '' : t('templateEmpty'));
@@ -231,30 +231,30 @@
function submitTemplate() {
const $modal = templateModal.ensure();
const $picked = $modal.find('input[name="aksrt-wie-template-id"]:checked');
const $picked = $modal.find('input[name="jio-wie-template-id"]:checked');
if (!$picked.length) {
window.alert(t('templatePick'));
return;
}
const templateId = String($picked.val());
const mode = $modal.find('input[name="aksrt-wie-template-import-mode"]:checked').val() || 'append';
const title = $picked.closest('.aksrt-wie-template-item').find('.aksrt-wie-template-item-title').text().trim() || templateId;
const mode = $modal.find('input[name="jio-wie-template-import-mode"]:checked').val() || 'append';
const title = $picked.closest('.jio-wie-template-item').find('.jio-wie-template-item-title').text().trim() || templateId;
const message = t('confirmTemplate').replace('{title}', title).replace('{mode}', t(mode === 'append' ? 'importModeAppend' : 'importModeReplace'));
if (!window.confirm(message)) return;
withButtonLoading($modal.find('.aksrt-wie-template-submit'), t('loadingImport'), t('templateSubmit'), () =>
post('aksrt_widgets_import_template', { sidebar_id: state.templateSidebarId, template_id: templateId, import_mode: mode })
withButtonLoading($modal.find('.jio-wie-template-submit'), t('loadingImport'), t('templateSubmit'), () =>
post('jio_widgets_import_template', { sidebar_id: state.templateSidebarId, template_id: templateId, import_mode: mode })
.done((res) => renderImportResult(templateModal.$result(), res, true))
.fail((xhr) => showError(templateModal.$result(), failMessage(null, xhr, 'networkError')))
);
}
function injectToolbar($anchor, sidebarId) {
if (!$anchor?.length || !sidebarId || $anchor.next('.aksrt-wie-toolbar').length) return;
const $toolbar = $('<div class="aksrt-wie-toolbar"></div>');
if (!$anchor?.length || !sidebarId || $anchor.next('.jio-wie-toolbar').length) return;
const $toolbar = $('<div class="jio-wie-toolbar"></div>');
[['export', 'exportModules'], ['import', 'importModules'], ['template', 'importTemplate']].forEach(([action, label]) => {
$('<button type="button" class="button button-small"></button>')
.text(t(label))
.attr('data-aksrt-wie-action', action)
.attr('data-jio-wie-action', action)
.attr('data-sidebar-id', sidebarId)
.appendTo($toolbar);
});
@@ -262,49 +262,49 @@
}
function scanWidgetsScreen() {
$('.widgets-holder-wrap:not(#available-widgets):not(.inactive-sidebar):not(.is-aksrt-wie)').each(function () {
$('.widgets-holder-wrap:not(#available-widgets):not(.inactive-sidebar):not(.is-jio-wie)').each(function () {
const $wrap = $(this);
const $sortables = $wrap.find('.widgets-sortables').first();
const sidebarId = String($sortables.attr('id') || '');
if (!sidebarId) return;
const $description = $sortables.find('.sidebar-description .description').first();
$wrap.addClass('is-aksrt-wie');
$wrap.addClass('is-jio-wie');
injectToolbar($description.length ? $description : $sortables.find('.description').first(), sidebarId);
});
}
function scanCustomizer() {
const prefix = 'sub-accordion-section-sidebar-widgets-';
$('.control-section-sidebar:not(.is-aksrt-wie)').each(function () {
$('.control-section-sidebar:not(.is-jio-wie)').each(function () {
const $section = $(this);
const sectionId = String($section.attr('id') || '');
if (!sectionId.startsWith(prefix) || sectionId.length === prefix.length) return;
$section.addClass('is-aksrt-wie');
$section.addClass('is-jio-wie');
const $description = $section.find('.section-meta .description').first();
injectToolbar($description.length ? $description : $section.find('.accordion-section-title, .customize-section-title').first(), sectionId.slice(prefix.length));
});
$('.customize-control-widget_form:not(.is-aksrt-wie)').each(function () {
$('.customize-control-widget_form:not(.is-jio-wie)').each(function () {
const $nav = $(this).find('.widget-reorder-nav').first();
if (!$nav.length) return;
$('<span class="aksrt-wie-btn-delete dashicons-trash" tabindex="0" role="button"></span>').text(t('removeModule')).appendTo($nav);
$(this).addClass('is-aksrt-wie');
$('<span class="jio-wie-btn-delete dashicons-trash" tabindex="0" role="button"></span>').text(t('removeModule')).appendTo($nav);
$(this).addClass('is-jio-wie');
});
}
$(document)
.on('click', '[data-aksrt-wie-action]', function () {
const action = String($(this).data('aksrt-wie-action'));
.on('click', '[data-jio-wie-action]', function () {
const action = String($(this).data('jio-wie-action'));
const sidebarId = String($(this).data('sidebar-id') || '');
if (!sidebarId) return;
if (action === 'template') openTemplateModal(sidebarId);
else openIoModal(action, sidebarId);
})
.on('click keydown', '.aksrt-wie-btn-delete', function (event) {
.on('click keydown', '.jio-wie-btn-delete', function (event) {
if (event.type === 'keydown' && event.key !== 'Enter' && event.key !== ' ') return;
event.preventDefault();
$(this).closest('.customize-control-widget_form').find('.widget-control-remove').first().trigger('click');
})
.on('click', '.aksrt-wie-modal__reload', () => window.location.reload())
.on('click', '.jio-wie-modal__reload', () => window.location.reload())
.on('keydown', (event) => {
if (event.key !== 'Escape') return;
ioModal.close();
+149 -149
View File
@@ -1,72 +1,72 @@
.aksrt-widget-form {
--aksrt-field-border: #dcdcde;
--aksrt-field-accent: #0991f5;
.jio-widget-form {
--jio-field-border: #dcdcde;
--jio-field-accent: #0991f5;
display: grid;
gap: 0;
padding: 0 0 8px;
}
.aksrt-widget-field {
.jio-widget-field {
min-width: 0;
padding: 11px 0;
border-bottom: 1px solid #eee;
}
.aksrt-widget-field[hidden] {
.jio-widget-field[hidden] {
display: none !important;
}
.aksrt-widget-field__label {
.jio-widget-field__label {
display: block;
margin-bottom: 6px;
font-weight: 600;
color: #0991f5;
}
.customize-control-widget_form .aksrt-widget-field__label { color: inherit; }
.customize-control-widget_form .jio-widget-field__label { color: inherit; }
.aksrt-widget-field .description {
.jio-widget-field .description {
margin: -2px 0 7px;
font-size: 12px;
}
.aksrt-widget-field--switcher {
.jio-widget-field--switcher {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
column-gap: 12px;
}
.aksrt-widget-field--switcher .aksrt-widget-field__label { margin: 0; }
.aksrt-widget-field--switcher .description { grid-column: 1 / -1; grid-row: 2; }
.aksrt-widget-field--switcher > .aksrt-widget-switch { grid-column: 2; grid-row: 1; }
.jio-widget-field--switcher .jio-widget-field__label { margin: 0; }
.jio-widget-field--switcher .description { grid-column: 1 / -1; grid-row: 2; }
.jio-widget-field--switcher > .jio-widget-switch { grid-column: 2; grid-row: 1; }
/* Reference CSF row modifiers. */
.aksrt-widget-field.is-compact { margin-top: -12px; padding-top: 0; border-top: 0; }
.aksrt-widget-field__subtitle { margin: 0 0 5px; color: #646970; font-size: 12px; }
.aksrt-widget-field.is-inline .aksrt-widget-choices--radio label > span { padding: 0; border: 0; background: none; box-shadow: none; }
.aksrt-widget-field.is-inline .aksrt-widget-choices--radio { gap: 4px 14px; }
.aksrt-widget-field--content { padding: 10px 0; color: #50575e; }
.aksrt-widget-field--subheading { padding: 10px 12px; margin: 6px 0 0; border: 0; background: #f6f7f9; color: #0991f5; font-weight: 600; }
.aksrt-widget-field--submessage { padding: 8px 12px; margin: 8px 0; border: 0; border-radius: 4px; font-size: 13px; }
.aksrt-widget-field--submessage-normal { background: #f5f5f5; color: #555; }
.aksrt-widget-field--submessage-success { background: rgba(18, 185, 40, .1); color: #12b928; }
.aksrt-widget-field--submessage-info { background: rgba(41, 151, 247, .1); color: #2997f7; }
.aksrt-widget-field--submessage-warning { background: rgba(255, 156, 57, .1); color: #e18c47; }
.aksrt-widget-field--submessage-danger { background: rgba(255, 69, 69, .1); color: #ff4646; }
.aksrt-widget-field .c-yellow { color: #fc844c; }
.jio-widget-field.is-compact { margin-top: -12px; padding-top: 0; border-top: 0; }
.jio-widget-field__subtitle { margin: 0 0 5px; color: #646970; font-size: 12px; }
.jio-widget-field.is-inline .jio-widget-choices--radio label > span { padding: 0; border: 0; background: none; box-shadow: none; }
.jio-widget-field.is-inline .jio-widget-choices--radio { gap: 4px 14px; }
.jio-widget-field--content { padding: 10px 0; color: #50575e; }
.jio-widget-field--subheading { padding: 10px 12px; margin: 6px 0 0; border: 0; background: #f6f7f9; color: #0991f5; font-weight: 600; }
.jio-widget-field--submessage { padding: 8px 12px; margin: 8px 0; border: 0; border-radius: 4px; font-size: 13px; }
.jio-widget-field--submessage-normal { background: #f5f5f5; color: #555; }
.jio-widget-field--submessage-success { background: rgba(18, 185, 40, .1); color: #12b928; }
.jio-widget-field--submessage-info { background: rgba(41, 151, 247, .1); color: #2997f7; }
.jio-widget-field--submessage-warning { background: rgba(255, 156, 57, .1); color: #e18c47; }
.jio-widget-field--submessage-danger { background: rgba(255, 69, 69, .1); color: #ff4646; }
.jio-widget-field .c-yellow { color: #fc844c; }
.aksrt-widget-switch {
.jio-widget-switch {
display: inline-flex;
cursor: pointer;
}
.aksrt-widget-switch input {
.jio-widget-switch input {
position: absolute;
opacity: 0;
}
.aksrt-widget-switch span {
.jio-widget-switch span {
position: relative;
width: 38px;
height: 22px;
@@ -75,7 +75,7 @@
transition: background .18s ease;
}
.aksrt-widget-switch span::after {
.jio-widget-switch span::after {
content: "";
position: absolute;
top: 3px;
@@ -87,154 +87,154 @@
transition: transform .18s ease;
}
.aksrt-widget-switch input:checked + span { background: var(--aksrt-field-accent); }
.aksrt-widget-switch input:checked + span::after { transform: translateX(16px); }
.aksrt-widget-switch input:focus-visible + span { outline: 2px solid #72aee6; outline-offset: 2px; }
.jio-widget-switch input:checked + span { background: var(--jio-field-accent); }
.jio-widget-switch input:checked + span::after { transform: translateX(16px); }
.jio-widget-switch input:focus-visible + span { outline: 2px solid #72aee6; outline-offset: 2px; }
.aksrt-widget-choices {
.jio-widget-choices {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.aksrt-widget-choices label input {
.jio-widget-choices label input {
position: absolute;
opacity: 0;
}
.aksrt-widget-choices label > span {
.jio-widget-choices label > span {
display: block;
padding: 5px 10px;
border: 1px solid var(--aksrt-field-border);
border: 1px solid var(--jio-field-border);
border-radius: 4px;
background: #f7f8fa;
cursor: pointer;
}
.aksrt-widget-choices label input:checked + span {
border-color: var(--aksrt-field-accent);
color: var(--aksrt-field-accent);
box-shadow: 0 0 0 1px var(--aksrt-field-accent);
.jio-widget-choices label input:checked + span {
border-color: var(--jio-field-accent);
color: var(--jio-field-accent);
box-shadow: 0 0 0 1px var(--jio-field-accent);
}
.aksrt-widget-choices label input:focus-visible + span { outline: 2px solid #72aee6; outline-offset: 2px; }
.jio-widget-choices label input:focus-visible + span { outline: 2px solid #72aee6; outline-offset: 2px; }
.aksrt-widget-choices--palette { display: grid; grid-template-columns: repeat(auto-fill, minmax(46px, 1fr)); gap: 5px; }
.aksrt-widget-choices--palette label > span { padding: 4px; text-align: center; }
.aksrt-widget-palette-choice { display: grid; justify-items: center; gap: 3px; }
.aksrt-widget-palette-choice i { display: block; width: 100%; height: 18px; border: 1px solid rgba(0, 0, 0, .12); border-radius: 3px; }
.aksrt-widget-palette-choice small { font-size: 10px; line-height: 1.2; }
.jio-widget-choices--palette { display: grid; grid-template-columns: repeat(auto-fill, minmax(46px, 1fr)); gap: 5px; }
.jio-widget-choices--palette label > span { padding: 4px; text-align: center; }
.jio-widget-palette-choice { display: grid; justify-items: center; gap: 3px; }
.jio-widget-palette-choice i { display: block; width: 100%; height: 18px; border: 1px solid rgba(0, 0, 0, .12); border-radius: 3px; }
.jio-widget-palette-choice small { font-size: 10px; line-height: 1.2; }
.aksrt-widget-number,
.aksrt-widget-link,
.aksrt-widget-background {
.jio-widget-number,
.jio-widget-link,
.jio-widget-background {
display: grid;
gap: 7px;
}
.aksrt-widget-number {
.jio-widget-number {
grid-template-columns: minmax(0, 1fr) 50px;
align-items: center;
}
.aksrt-widget-upload {
.jio-widget-upload {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 7px;
}
.aksrt-widget-upload img {
.jio-widget-upload img {
width: 100%;
max-height: 150px;
border-radius: 6px;
object-fit: cover;
}
.aksrt-widget-upload .widefat { flex: 1 1 100%; }
.jio-widget-upload .widefat { flex: 1 1 100%; }
.aksrt-widget-spacing {
.jio-widget-spacing {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 6px;
}
.aksrt-widget-spacing--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.jio-widget-spacing--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.aksrt-widget-spacing label span {
.jio-widget-spacing label span {
display: block;
margin-bottom: 3px;
color: #646970;
text-align: center;
}
.aksrt-widget-repeater__row,
.aksrt-widget-nested {
.jio-widget-repeater__row,
.jio-widget-nested {
margin-bottom: 9px;
border: 1px solid var(--aksrt-field-border);
border: 1px solid var(--jio-field-border);
border-radius: 4px;
background: #fff;
}
.aksrt-widget-repeater__bar {
.jio-widget-repeater__bar {
display: flex;
align-items: center;
gap: 7px;
padding: 8px 10px;
border-bottom: 1px solid var(--aksrt-field-border);
border-bottom: 1px solid var(--jio-field-border);
background: #f9fafc;
}
.aksrt-widget-repeater__bar::-webkit-details-marker { display: none; }
.aksrt-widget-repeater__bar { list-style: none; cursor: pointer; }
.aksrt-widget-repeater__bar::after { content: "\f140"; margin-left: auto; font: 20px/1 dashicons; color: #646970; }
.aksrt-widget-repeater__row[open] > .aksrt-widget-repeater__bar::after { content: "\f142"; }
.aksrt-widget-repeater__bar .dashicons { cursor: move; }
.aksrt-widget-repeater__bar strong { flex: 1; }
.aksrt-widget-repeater__remove:disabled { visibility: hidden; }
.aksrt-widget-repeater__add:disabled { opacity: .55; cursor: not-allowed; }
.aksrt-widget-repeater__fields,
.aksrt-widget-nested__body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 10px; }
.aksrt-widget-nested > summary { padding: 9px 10px; font-weight: 600; cursor: pointer; }
.jio-widget-repeater__bar::-webkit-details-marker { display: none; }
.jio-widget-repeater__bar { list-style: none; cursor: pointer; }
.jio-widget-repeater__bar::after { content: "\f140"; margin-left: auto; font: 20px/1 dashicons; color: #646970; }
.jio-widget-repeater__row[open] > .jio-widget-repeater__bar::after { content: "\f142"; }
.jio-widget-repeater__bar .dashicons { cursor: move; }
.jio-widget-repeater__bar strong { flex: 1; }
.jio-widget-repeater__remove:disabled { visibility: hidden; }
.jio-widget-repeater__add:disabled { opacity: .55; cursor: not-allowed; }
.jio-widget-repeater__fields,
.jio-widget-nested__body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 10px; }
.jio-widget-nested > summary { padding: 9px 10px; font-weight: 600; cursor: pointer; }
/* Keep accordions inside the narrow sidebar column: grid/flex items default to min-width:auto and grow to their widest child. */
.aksrt-widget-form,
.aksrt-widget-link,
.aksrt-widget-background { grid-template-columns: minmax(0, 1fr); }
.aksrt-widget-repeater,
.aksrt-widget-repeater__row,
.aksrt-widget-nested,
.aksrt-widget-nested__body > *,
.aksrt-widget-repeater__fields > * { min-width: 0; max-width: 100%; box-sizing: border-box; }
.aksrt-widget-form input:not([type="checkbox"]):not([type="radio"]),
.aksrt-widget-form select,
.aksrt-widget-form textarea { max-width: 100%; box-sizing: border-box; }
.aksrt-widget-background select { width: 100%; }
.aksrt-widget-repeater__title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jio-widget-form,
.jio-widget-link,
.jio-widget-background { grid-template-columns: minmax(0, 1fr); }
.jio-widget-repeater,
.jio-widget-repeater__row,
.jio-widget-nested,
.jio-widget-nested__body > *,
.jio-widget-repeater__fields > * { min-width: 0; max-width: 100%; box-sizing: border-box; }
.jio-widget-form input:not([type="checkbox"]):not([type="radio"]),
.jio-widget-form select,
.jio-widget-form textarea { max-width: 100%; box-sizing: border-box; }
.jio-widget-background select { width: 100%; }
.jio-widget-repeater__title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.aksrt-widget-form input[type="text"],
.aksrt-widget-form input[type="url"],
.aksrt-widget-form input[type="number"],
.aksrt-widget-form select,
.aksrt-widget-form textarea {
.jio-widget-form input[type="text"],
.jio-widget-form input[type="url"],
.jio-widget-form input[type="number"],
.jio-widget-form select,
.jio-widget-form textarea {
min-height: 32px;
border-color: #d5d8dc;
border-radius: 3px;
box-shadow: none;
}
.aksrt-widget-form input:focus,
.aksrt-widget-form select:focus,
.aksrt-widget-form textarea:focus {
.jio-widget-form input:focus,
.jio-widget-form select:focus,
.jio-widget-form textarea:focus {
border-color: #0991f5;
box-shadow: 0 0 0 1px #0991f5;
}
.aksrt-widget-form .button { min-height: 32px; line-height: 30px; border-radius: 3px; }
.aksrt-widget-form .button-primary { background: #0991f5; border-color: #087bcf; }
.jio-widget-form .button { min-height: 32px; line-height: 30px; border-radius: 3px; }
.jio-widget-form .button-primary { background: #0991f5; border-color: #087bcf; }
.aksrt-widget-form-lazy { padding: 10px 0; }
.aksrt-widget-form-lazy__status:empty { display: none; }
.jio-widget-form-lazy { padding: 10px 0; }
.jio-widget-form-lazy__status:empty { display: none; }
/* Reference t-notice boxes (lazy form status). */
.t-notice { padding: 8px 12px; border-radius: 4px; font-size: 13px; line-height: 1.5; }
@@ -242,68 +242,68 @@
.t-notice.t-error { background: rgba(255, 69, 69, .1); color: #ff4646; }
/* Sidebar toolbar: export / import / template import. */
.aksrt-wie-toolbar { margin: 8px 0 12px; }
.aksrt-wie-toolbar .button { margin-right: 6px; margin-bottom: 4px; }
.aksrt-wie-btn-delete { display: inline-flex; align-items: center; gap: 2px; margin-left: 8px; color: #b32d2e; font-size: 12px; cursor: pointer; }
.aksrt-wie-btn-delete::before { font: normal 16px/1 dashicons; content: ' 182'; }
.aksrt-wie-btn-delete:hover,
.aksrt-wie-btn-delete:focus { color: #d63638; }
.jio-wie-toolbar { margin: 8px 0 12px; }
.jio-wie-toolbar .button { margin-right: 6px; margin-bottom: 4px; }
.jio-wie-btn-delete { display: inline-flex; align-items: center; gap: 2px; margin-left: 8px; color: #b32d2e; font-size: 12px; cursor: pointer; }
.jio-wie-btn-delete::before { font: normal 16px/1 dashicons; content: ' 182'; }
.jio-wie-btn-delete:hover,
.jio-wie-btn-delete:focus { color: #d63638; }
/* WIE modal shell. */
.aksrt-wie-modal { display: none; position: fixed; inset: 0; z-index: 1000100; align-items: center; justify-content: center; padding: 20px; box-sizing: border-box; }
.aksrt-wie-modal.is-open { display: flex; }
.aksrt-wie-modal__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, .45); }
.aksrt-wie-modal__dialog { position: relative; z-index: 1; width: 100%; max-width: min(920px, 96vw); max-height: 90vh; overflow: auto; padding: 18px 20px 16px; box-sizing: border-box; border: 1px solid #c3c4c7; border-radius: 6px; background: #fff; box-shadow: 0 8px 32px rgba(0, 0, 0, .14); }
.aksrt-wie-modal__close { position: absolute; top: 10px; right: 10px; width: 2em; height: 2em; padding: 0; border: none; background: transparent; color: #646970; font-size: 20px; line-height: 1; cursor: pointer; }
.aksrt-wie-modal__close:hover { color: #1d2327; }
.aksrt-wie-modal__title { margin: 0 32px 10px 0; font-size: 16px; line-height: 1.3; }
.aksrt-wie-modal__hint { margin: 0 0 10px; font-size: 13px; }
.aksrt-wie-modal__import-mode { display: flex; flex-wrap: wrap; gap: 16px; align-items: baseline; margin: 0 0 12px; padding: 10px 12px; border: 1px solid #dcdcde; border-radius: 4px; background: #f6f7f7; }
.aksrt-wie-modal__import-mode-title { margin: 0 0 8px; font-weight: 600; }
.aksrt-wie-modal__import-mode-row { display: block; margin: 6px 0 0; cursor: pointer; }
.aksrt-wie-modal__import-mode-row input { margin-right: 6px; vertical-align: middle; }
.aksrt-wie-modal__textarea { width: 100%; min-height: 240px; box-sizing: border-box; font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 1.45; }
.aksrt-wie-modal__actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 12px 0 0; }
.aksrt-wie-modal__result { margin: 10px 0 0; font-size: 13px; }
.aksrt-wie-modal__result.is-ok { color: #008a20; }
.aksrt-wie-modal__result.is-warn { color: #996800; }
.aksrt-wie-modal__result.is-err { color: #d63638; }
.aksrt-wie-modal__reload-wrap { margin: 12px 0 0; }
.aksrt-wie-remind { margin-bottom: 10px; color: #fc844c; font-size: .9em; }
.aksrt-wie-remind b { color: inherit; }
.jio-wie-modal { display: none; position: fixed; inset: 0; z-index: 1000100; align-items: center; justify-content: center; padding: 20px; box-sizing: border-box; }
.jio-wie-modal.is-open { display: flex; }
.jio-wie-modal__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, .45); }
.jio-wie-modal__dialog { position: relative; z-index: 1; width: 100%; max-width: min(920px, 96vw); max-height: 90vh; overflow: auto; padding: 18px 20px 16px; box-sizing: border-box; border: 1px solid #c3c4c7; border-radius: 6px; background: #fff; box-shadow: 0 8px 32px rgba(0, 0, 0, .14); }
.jio-wie-modal__close { position: absolute; top: 10px; right: 10px; width: 2em; height: 2em; padding: 0; border: none; background: transparent; color: #646970; font-size: 20px; line-height: 1; cursor: pointer; }
.jio-wie-modal__close:hover { color: #1d2327; }
.jio-wie-modal__title { margin: 0 32px 10px 0; font-size: 16px; line-height: 1.3; }
.jio-wie-modal__hint { margin: 0 0 10px; font-size: 13px; }
.jio-wie-modal__import-mode { display: flex; flex-wrap: wrap; gap: 16px; align-items: baseline; margin: 0 0 12px; padding: 10px 12px; border: 1px solid #dcdcde; border-radius: 4px; background: #f6f7f7; }
.jio-wie-modal__import-mode-title { margin: 0 0 8px; font-weight: 600; }
.jio-wie-modal__import-mode-row { display: block; margin: 6px 0 0; cursor: pointer; }
.jio-wie-modal__import-mode-row input { margin-right: 6px; vertical-align: middle; }
.jio-wie-modal__textarea { width: 100%; min-height: 240px; box-sizing: border-box; font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 1.45; }
.jio-wie-modal__actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 12px 0 0; }
.jio-wie-modal__result { margin: 10px 0 0; font-size: 13px; }
.jio-wie-modal__result.is-ok { color: #008a20; }
.jio-wie-modal__result.is-warn { color: #996800; }
.jio-wie-modal__result.is-err { color: #d63638; }
.jio-wie-modal__reload-wrap { margin: 12px 0 0; }
.jio-wie-remind { margin-bottom: 10px; color: #fc844c; font-size: .9em; }
.jio-wie-remind b { color: inherit; }
/* Template picker layer. */
.aksrt-wie-template-layer { z-index: 1000120; }
.aksrt-wie-template-list-wrap { margin-bottom: 12px; }
.aksrt-wie-template-list { display: flex; flex-wrap: wrap; gap: 10px; max-height: 42vh; overflow: auto; }
.aksrt-wie-template-item { flex: 1 1 30%; min-width: 360px; }
.aksrt-wie-template-item-row { display: flex; gap: 8px; align-items: flex-start; height: 100%; }
.aksrt-wie-template-item-label { display: flex; flex: 1 1 auto; gap: 10px; align-items: flex-start; min-width: 0; height: stretch; margin: 0; padding: 10px 12px; border: 1px solid #efeeee; border-radius: 8px; background: #fbfbfb; cursor: pointer; }
.aksrt-wie-template-item-label:hover { background: #f7fbfe; }
.aksrt-wie-template-item-label input[type="radio"] { flex-shrink: 0; margin-top: 3px; }
.aksrt-wie-template-item-meta { display: flex; flex-direction: column; gap: 4px; }
.aksrt-wie-template-item-title { font-weight: 600; }
.aksrt-wie-template-item-desc { color: #646970; font-size: 12px; line-height: 1.4; }
.aksrt-wie-template-item-remind { color: #fc844c; font-size: 12px; line-height: 1.4; }
.aksrt-wie-template-item-modules { margin: 0; padding-left: 1.2em; font-size: 12px; line-height: 1.5; color: #50575e; }
.jio-wie-template-layer { z-index: 1000120; }
.jio-wie-template-list-wrap { margin-bottom: 12px; }
.jio-wie-template-list { display: flex; flex-wrap: wrap; gap: 10px; max-height: 42vh; overflow: auto; }
.jio-wie-template-item { flex: 1 1 30%; min-width: 360px; }
.jio-wie-template-item-row { display: flex; gap: 8px; align-items: flex-start; height: 100%; }
.jio-wie-template-item-label { display: flex; flex: 1 1 auto; gap: 10px; align-items: flex-start; min-width: 0; height: stretch; margin: 0; padding: 10px 12px; border: 1px solid #efeeee; border-radius: 8px; background: #fbfbfb; cursor: pointer; }
.jio-wie-template-item-label:hover { background: #f7fbfe; }
.jio-wie-template-item-label input[type="radio"] { flex-shrink: 0; margin-top: 3px; }
.jio-wie-template-item-meta { display: flex; flex-direction: column; gap: 4px; }
.jio-wie-template-item-title { font-weight: 600; }
.jio-wie-template-item-desc { color: #646970; font-size: 12px; line-height: 1.4; }
.jio-wie-template-item-remind { color: #fc844c; font-size: 12px; line-height: 1.4; }
.jio-wie-template-item-modules { margin: 0; padding-left: 1.2em; font-size: 12px; line-height: 1.5; color: #50575e; }
@media (max-width: 600px) {
.aksrt-wie-modal { padding: 10px; }
.aksrt-wie-template-item { min-width: 100%; }
.jio-wie-modal { padding: 10px; }
.jio-wie-template-item { min-width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
.aksrt-widget-switch span,
.aksrt-widget-switch span::after { transition: none; }
.jio-widget-switch span,
.jio-widget-switch span::after { transition: none; }
}
/* terms: searchable multi-select with drag ordering */
.aksrt-widget-terms .aksrt-widget-terms__selected { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }
.aksrt-widget-terms .aksrt-widget-terms__selected:empty { display: none; }
.aksrt-widget-terms .aksrt-widget-terms__chip { display: inline-flex; align-items: center; gap: 3px; padding: 2px 6px; border-radius: 4px; background: #f0f0f1; border: 1px solid #dcdcde; font-size: 12px; cursor: move; }
.aksrt-widget-terms .aksrt-widget-terms__chip .dashicons { font-size: 14px; width: 14px; height: 14px; }
.aksrt-widget-terms .aksrt-widget-terms__remove { border: 0; background: none; cursor: pointer; line-height: 1; padding: 0 0 0 2px; text-decoration: none; }
.aksrt-widget-terms .aksrt-widget-terms__search { margin-bottom: 6px; }
.aksrt-widget-terms .aksrt-widget-terms__options { max-height: 180px; overflow-y: auto; border: 1px solid #dcdcde; border-radius: 4px; padding: 4px 8px; background: #fff; }
.aksrt-widget-terms .aksrt-widget-terms__option { display: block; padding: 2px 0; }
.jio-widget-terms .jio-widget-terms__selected { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }
.jio-widget-terms .jio-widget-terms__selected:empty { display: none; }
.jio-widget-terms .jio-widget-terms__chip { display: inline-flex; align-items: center; gap: 3px; padding: 2px 6px; border-radius: 4px; background: #f0f0f1; border: 1px solid #dcdcde; font-size: 12px; cursor: move; }
.jio-widget-terms .jio-widget-terms__chip .dashicons { font-size: 14px; width: 14px; height: 14px; }
.jio-widget-terms .jio-widget-terms__remove { border: 0; background: none; cursor: pointer; line-height: 1; padding: 0 0 0 2px; text-decoration: none; }
.jio-widget-terms .jio-widget-terms__search { margin-bottom: 6px; }
.jio-widget-terms .jio-widget-terms__options { max-height: 180px; overflow-y: auto; border: 1px solid #dcdcde; border-radius: 4px; padding: 4px 8px; background: #fff; }
.jio-widget-terms .jio-widget-terms__option { display: block; padding: 2px 0; }
+58 -58
View File
@@ -1,20 +1,20 @@
(function ($) {
'use strict';
const config = window.aksrtWidgetAdmin || {};
const core = window.AKSRTWidgetAdminCore;
const config = window.jioWidgetAdmin || {};
const core = window.JioWidgetAdminCore;
function initForm(root) {
const $root = $(root);
$root.find('.aksrt-widget-color').wpColorPicker();
$root.find('.aksrt-widget-repeater__rows').sortable({
$root.find('.jio-widget-color').wpColorPicker();
$root.find('.jio-widget-repeater__rows').sortable({
handle: '.dashicons-move',
axis: 'y',
update: renumberRepeaters,
});
$root.find('.aksrt-widget-terms__selected').sortable({
items: '.aksrt-widget-terms__chip',
update: () => $root.find('.aksrt-widget-terms').each((_i, el) => syncTerms(el)),
$root.find('.jio-widget-terms__selected').sortable({
items: '.jio-widget-terms__chip',
update: () => $root.find('.jio-widget-terms').each((_i, el) => syncTerms(el)),
});
$root.find('input[type="range"]').each(function () {
const output = this.parentElement.querySelector('output');
@@ -28,25 +28,25 @@
/* terms 字段:以“已选标签”为唯一真源,同步隐藏输入(选择顺序)与复选框。 */
function syncTerms(wrap) {
const $wrap = $(wrap);
const ids = $wrap.find('.aksrt-widget-terms__chip').map((_i, el) => String($(el).data('term-id'))).get();
$wrap.find('.aksrt-widget-terms__value').val(ids.join(',')).trigger('change');
$wrap.find('.aksrt-widget-terms__option input').each(function () {
const ids = $wrap.find('.jio-widget-terms__chip').map((_i, el) => String($(el).data('term-id'))).get();
$wrap.find('.jio-widget-terms__value').val(ids.join(',')).trigger('change');
$wrap.find('.jio-widget-terms__option input').each(function () {
this.checked = ids.indexOf(String(this.value)) !== -1;
});
}
function addTermChip(wrap, id, name) {
const $selected = $(wrap).find('.aksrt-widget-terms__selected');
if ($selected.find(`.aksrt-widget-terms__chip[data-term-id="${id}"]`).length) return;
const chip = $(`<span class="aksrt-widget-terms__chip" data-term-id="${id}"><span class="dashicons dashicons-move" aria-hidden="true"></span></span>`);
const $selected = $(wrap).find('.jio-widget-terms__selected');
if ($selected.find(`.jio-widget-terms__chip[data-term-id="${id}"]`).length) return;
const chip = $(`<span class="jio-widget-terms__chip" data-term-id="${id}"><span class="dashicons dashicons-move" aria-hidden="true"></span></span>`);
chip.append(document.createTextNode(name));
chip.append('<button type="button" class="button-link-delete aksrt-widget-terms__remove" aria-label="移除">×</button>');
chip.append('<button type="button" class="button-link-delete jio-widget-terms__remove" aria-label="移除">×</button>');
$selected.append(chip);
}
function updateWidgetTitle(root) {
const $root = $(root);
const title = String($root.find('.aksrt-widget-field[data-field-id="title"] input').first().val() || '').trim();
const title = String($root.find('.jio-widget-field[data-field-id="title"] input').first().val() || '').trim();
if (!title) return;
$root.closest('.widget').find('.widget-title h3, .widget-title-action + h3').first().contents().filter(function () {
return this.nodeType === Node.TEXT_NODE;
@@ -86,18 +86,18 @@
/* Lazy placeholder status uses the reference t-notice box (t-loading / t-error). */
function setLazyStatus($container, type, message) {
const $notice = $('<div class="t-notice"></div>').addClass(`t-${type}`).text(message);
$container.find('.aksrt-widget-form-lazy__status').empty().append($notice);
$container.find('.jio-widget-form-lazy__status').empty().append($notice);
}
function renumberRepeaters(_event, ui) {
const $form = $(ui?.item || this).closest('.aksrt-widget-form');
$form.find('.aksrt-widget-repeater__rows').each(function () {
$(this).children('.aksrt-widget-repeater__row').each(function (index) {
const $form = $(ui?.item || this).closest('.jio-widget-form');
$form.find('.jio-widget-repeater__rows').each(function () {
$(this).children('.jio-widget-repeater__row').each(function (index) {
this.dataset.rowIndex = String(index);
});
});
$form.find('[name]').each(function () {
const rowIndexes = $(this).parents('.aksrt-widget-repeater__row').get().reverse().map((row) => Number(row.dataset.rowIndex || 0));
const rowIndexes = $(this).parents('.jio-widget-repeater__row').get().reverse().map((row) => Number(row.dataset.rowIndex || 0));
if (!rowIndexes.length) return;
this.name = core.replaceRepeaterIndexes(this.name, rowIndexes);
});
@@ -105,12 +105,12 @@
}
function updateRepeaterTitles($form) {
$form.find('.aksrt-widget-repeater__rows').each(function () {
$(this).children('.aksrt-widget-repeater__row').each(function (index) {
$form.find('.jio-widget-repeater__rows').each(function () {
$(this).children('.jio-widget-repeater__row').each(function (index) {
const $row = $(this);
const $title = $row.find('.aksrt-widget-repeater__title').first();
const $title = $row.find('.jio-widget-repeater__title').first();
const prefix = String($title.data('title-prefix') || '项目');
const $firstControl = $row.children('.aksrt-widget-repeater__fields').find('input:not([type="hidden"]), select, textarea').first();
const $firstControl = $row.children('.jio-widget-repeater__fields').find('input:not([type="hidden"]), select, textarea').first();
const value = String($firstControl.val() || '').trim();
$title.text(prefix + (index + 1) + (value ? ':' + value : ''));
});
@@ -118,18 +118,18 @@
}
function updateRepeaterControls($root) {
$root.filter('.aksrt-widget-repeater').add($root.find('.aksrt-widget-repeater')).each(function () {
$root.filter('.jio-widget-repeater').add($root.find('.jio-widget-repeater')).each(function () {
const $repeater = $(this);
const count = $repeater.children('.aksrt-widget-repeater__rows').children('.aksrt-widget-repeater__row').length;
const count = $repeater.children('.jio-widget-repeater__rows').children('.jio-widget-repeater__row').length;
const min = Number($repeater.data('min-items') || 0);
const max = Number($repeater.data('max-items') || 50);
$repeater.children('.aksrt-widget-repeater__rows').children('.aksrt-widget-repeater__row').children('.aksrt-widget-repeater__bar').children('.aksrt-widget-repeater__remove').prop('disabled', count <= min);
$repeater.children('.aksrt-widget-repeater__add').prop('disabled', count >= max);
$repeater.children('.jio-widget-repeater__rows').children('.jio-widget-repeater__row').children('.jio-widget-repeater__bar').children('.jio-widget-repeater__remove').prop('disabled', count <= min);
$repeater.children('.jio-widget-repeater__add').prop('disabled', count >= max);
});
}
function fieldValue($form, id) {
const $field = $form.find(`.aksrt-widget-field[data-field-id="${CSS.escape(id)}"]`).first();
const $field = $form.find(`.jio-widget-field[data-field-id="${CSS.escape(id)}"]`).first();
const $checked = $field.find('input:checked').first();
if ($checked.length) return String($checked.val());
return String($field.find('input,select,textarea').first().val() ?? '');
@@ -138,7 +138,7 @@
function evaluateDependencies($form) {
$form.find('[data-dependency]').each(function () {
const rule = core.parseDependency(this.dataset.dependency || '[]');
const $row = $(this).closest('.aksrt-widget-repeater__row');
const $row = $(this).closest('.jio-widget-repeater__row');
const scope = $row.length ? $row : $form;
const ids = Array.isArray(rule[0]) ? rule[0].map((part) => part[0]) : String(rule[0] || '').split('|');
const current = {};
@@ -150,18 +150,18 @@
$(document)
.on('click', '.widget-top', function () {
const $widget = $(this).closest('.widget, .customize-control-widget_form');
window.setTimeout(() => $widget.find('.aksrt-widget-form-lazy').each(function () { loadForm(this); }), 20);
window.setTimeout(() => $widget.find('.jio-widget-form-lazy').each(function () { loadForm(this); }), 20);
})
.on('change input', '.aksrt-widget-form input, .aksrt-widget-form select, .aksrt-widget-form textarea', function () {
const $form = $(this).closest('.aksrt-widget-form');
.on('change input', '.jio-widget-form input, .jio-widget-form select, .jio-widget-form textarea', function () {
const $form = $(this).closest('.jio-widget-form');
evaluateDependencies($form);
updateWidgetTitle($form);
updateRepeaterTitles($form);
})
.on('click', '.aksrt-widget-repeater__add', function () {
const $repeater = $(this).closest('.aksrt-widget-repeater');
.on('click', '.jio-widget-repeater__add', function () {
const $repeater = $(this).closest('.jio-widget-repeater');
const max = Number($repeater.data('max-items') || 50);
const $rows = $repeater.children('.aksrt-widget-repeater__rows');
const $rows = $repeater.children('.jio-widget-repeater__rows');
if ($rows.children().length >= max) return;
const index = $rows.children().length;
const token = String($repeater.data('index-token') || '__index__');
@@ -171,38 +171,38 @@
renumberRepeaters.call($rows[0]);
updateRepeaterControls($repeater);
})
.on('click', '.aksrt-widget-repeater__remove', function (event) {
.on('click', '.jio-widget-repeater__remove', function (event) {
event.preventDefault();
event.stopPropagation();
const $repeater = $(this).closest('.aksrt-widget-repeater');
const $rows = $repeater.children('.aksrt-widget-repeater__rows');
if ($rows.children('.aksrt-widget-repeater__row').length <= Number($repeater.data('min-items') || 0)) return;
$(this).closest('.aksrt-widget-repeater__row').remove();
const $repeater = $(this).closest('.jio-widget-repeater');
const $rows = $repeater.children('.jio-widget-repeater__rows');
if ($rows.children('.jio-widget-repeater__row').length <= Number($repeater.data('min-items') || 0)) return;
$(this).closest('.jio-widget-repeater__row').remove();
renumberRepeaters.call($rows[0]);
updateRepeaterControls($repeater);
})
.on('click', '.aksrt-widget-terms__remove', function () {
$(this).closest('.aksrt-widget-terms__chip').remove();
syncTerms($(this).closest('.aksrt-widget-terms'));
.on('click', '.jio-widget-terms__remove', function () {
$(this).closest('.jio-widget-terms__chip').remove();
syncTerms($(this).closest('.jio-widget-terms'));
})
.on('change', '.aksrt-widget-terms__option input', function () {
const wrap = this.closest('.aksrt-widget-terms');
const option = this.closest('.aksrt-widget-terms__option');
.on('change', '.jio-widget-terms__option input', function () {
const wrap = this.closest('.jio-widget-terms');
const option = this.closest('.jio-widget-terms__option');
const id = String(this.value);
const name = (option.querySelector('[data-term-name]') || option).getAttribute('data-term-name');
if (this.checked) addTermChip(wrap, id, name || id);
else $(wrap).find('.aksrt-widget-terms__chip').filter((_index, chip) => String($(chip).data('term-id')) === id).remove();
else $(wrap).find('.jio-widget-terms__chip').filter((_index, chip) => String($(chip).data('term-id')) === id).remove();
syncTerms(wrap);
})
.on('input', '.aksrt-widget-terms__search', function () {
.on('input', '.jio-widget-terms__search', function () {
const needle = this.value.trim().toLowerCase();
$(this).closest('.aksrt-widget-terms').find('.aksrt-widget-terms__option').each(function () {
$(this).closest('.jio-widget-terms').find('.jio-widget-terms__option').each(function () {
const name = String(this.getAttribute('data-term-name') || '').toLowerCase();
this.hidden = needle !== '' && name.indexOf(needle) === -1;
});
})
.on('click', '.aksrt-widget-upload__choose', function () {
const $wrap = $(this).closest('.aksrt-widget-upload');
.on('click', '.jio-widget-upload__choose', function () {
const $wrap = $(this).closest('.jio-widget-upload');
const frame = wp.media({ title: $wrap.data('media-library') === 'video' ? '选择视频' : '选择图片', library: $wrap.data('media-library') ? { type: $wrap.data('media-library') } : undefined, multiple: false });
frame.on('select', () => {
const attachment = frame.state().get('selection').first().toJSON();
@@ -214,14 +214,14 @@
});
frame.open();
})
.on('click', '.aksrt-widget-upload__remove', function () {
const $wrap = $(this).closest('.aksrt-widget-upload');
.on('click', '.jio-widget-upload__remove', function () {
const $wrap = $(this).closest('.jio-widget-upload');
$wrap.find('input[type="url"]').val('').trigger('change');
$wrap.find('img').remove();
});
$(document).on('widget-added widget-updated', function (_event, widget) {
$(widget).find('.aksrt-widget-form-lazy').each(function () { loadForm(this); });
$(widget).find('.jio-widget-form-lazy').each(function () { loadForm(this); });
});
if (window.wp?.customize?.bind) {
@@ -229,14 +229,14 @@
$('#customize-theme-controls').on('expanded', function (_event, section) {
if (!section || !String(section.id || section).includes('sidebar-widgets')) return;
window.setTimeout(function () {
$('.customize-control-widget_form .aksrt-widget-form-lazy').each(function () { loadForm(this); });
$('.customize-control-widget_form .jio-widget-form-lazy').each(function () { loadForm(this); });
}, 100);
});
});
}
$(function () {
$('.aksrt-widget-form').each(function () { initForm(this); });
$('.widget.open .aksrt-widget-form-lazy').each(function () { loadForm(this); });
$('.jio-widget-form').each(function () { initForm(this); });
$('.widget.open .jio-widget-form-lazy').each(function () { loadForm(this); });
});
})(jQuery);
+94 -94
View File
@@ -1,61 +1,61 @@
.aksrt-widget {
--aksrt-widget-bg-light: transparent;
--aksrt-widget-bg-dark: transparent;
--aksrt-widget-radius: var(--main-radius, 8px);
margin: var(--aksrt-widget-space-top, 0) var(--aksrt-widget-space-right, 0) var(--aksrt-widget-space-bottom, 20px) var(--aksrt-widget-space-left, 0);
background-color: var(--aksrt-widget-bg-light);
background-image: var(--aksrt-widget-bg-image-light, none);
.jio-widget {
--jio-widget-bg-light: transparent;
--jio-widget-bg-dark: transparent;
--jio-widget-radius: var(--main-radius, 8px);
margin: var(--jio-widget-space-top, 0) var(--jio-widget-space-right, 0) var(--jio-widget-space-bottom, 20px) var(--jio-widget-space-left, 0);
background-color: var(--jio-widget-bg-light);
background-image: var(--jio-widget-bg-image-light, none);
background-position: center;
background-size: cover;
color: var(--theme-color, #2d2d35);
}
.aksrt-widget.aksrt-panel {
.jio-widget.jio-panel {
clear: both;
padding: 15px;
border-radius: var(--main-radius, 8px);
background-color: var(--main-bg-color, #fff);
box-shadow: 0 0 10px var(--main-shadow, rgba(116, 116, 116, .08));
}
.aksrt-widget__inner.container { position: relative; }
.dark-theme .aksrt-widget,
[data-theme="dark"] .aksrt-widget { background-color: var(--aksrt-widget-bg-dark); background-image: var(--aksrt-widget-bg-image-dark, none); color: #e7e7ea; }
.aksrt-widget *, .aksrt-widget *::before, .aksrt-widget *::after { box-sizing: border-box; }
.aksrt-widget img, .aksrt-widget video { max-width: 100%; }
.aksrt-widget a { text-decoration: none; }
.aksrt-widget button, .aksrt-widget input { font: inherit; }
.aksrt-widget :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline: 3px solid var(--focus-color, #ff5473) !important; outline-offset: 3px; }
.dark-theme .aksrt-widget :where(a, button, input, select, textarea, [tabindex]):focus-visible,
[data-theme="dark"] .aksrt-widget :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline-color: #ffd166 !important; }
.aksrt-widget__header { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 10px; }
.aksrt-widget__header--big { display: block; text-align: center; margin-bottom: 30px; }
.aksrt-widget__title { position: relative; margin: 0; padding-bottom: 8px; font-size: 15px; line-height: 1.35; font-weight: 700; }
.aksrt-widget__title::before { position:absolute; bottom:3px; left:0; width:40px; height:3px; border-radius:5px; background:var(--theme-color,var(--focus-color,#ff5473)); box-shadow:1px 1px 3px -1px var(--theme-color,var(--focus-color,#ff5473)); content:""; }
.aksrt-widget__header--big .aksrt-widget__title { padding:0; font-size: clamp(28px, 4vw, 42px); }
.aksrt-widget__header--big .aksrt-widget__title::before { content:none; }
.aksrt-widget__title mark { padding: 0; background: transparent; color: var(--focus-color, #ff5473); }
.aksrt-widget__subtitle { margin: 7px 0 0; color: var(--muted-color, #8a8c98); }
.aksrt-widget__title-links { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.aksrt-widget__title-links a { padding: 5px 11px; border-radius: 4px; background: var(--muted-border-color, #f2f3f5); color:var(--muted-color,#777); font-size: 13px; }
.dark-theme .aksrt-widget__title-links a, [data-theme="dark"] .aksrt-widget__title-links a { background: #292a30; }
.aksrt-widget-grid { display: grid; grid-template-columns: repeat(var(--aksrt-cols, 3), minmax(0, 1fr)); gap: 15px; }
.aksrt-widget__empty, .aksrt-widget-request-error { padding: 28px 18px; border: 1px dashed rgba(127,127,127,.25); border-radius: var(--aksrt-widget-radius); color: var(--muted-color, #8a8c98); text-align: center; }
.aksrt-widget-request-error button { margin-left: 10px; padding: 5px 12px; border: 0; border-radius: 999px; cursor: pointer; }
.aksrt-widget--affix { position: sticky; top: 76px; }
.aksrt-widget--only-mobile { display: none; }
.jio-widget__inner.container { position: relative; }
.dark-theme .jio-widget,
[data-theme="dark"] .jio-widget { background-color: var(--jio-widget-bg-dark); background-image: var(--jio-widget-bg-image-dark, none); color: #e7e7ea; }
.jio-widget *, .jio-widget *::before, .jio-widget *::after { box-sizing: border-box; }
.jio-widget img, .jio-widget video { max-width: 100%; }
.jio-widget a { text-decoration: none; }
.jio-widget button, .jio-widget input { font: inherit; }
.jio-widget :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline: 3px solid var(--focus-color, #ff5473) !important; outline-offset: 3px; }
.dark-theme .jio-widget :where(a, button, input, select, textarea, [tabindex]):focus-visible,
[data-theme="dark"] .jio-widget :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline-color: #ffd166 !important; }
.jio-widget__header { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 10px; }
.jio-widget__header--big { display: block; text-align: center; margin-bottom: 30px; }
.jio-widget__title { position: relative; margin: 0; padding-bottom: 8px; font-size: 15px; line-height: 1.35; font-weight: 700; }
.jio-widget__title::before { position:absolute; bottom:3px; left:0; width:40px; height:3px; border-radius:5px; background:var(--theme-color,var(--focus-color,#ff5473)); box-shadow:1px 1px 3px -1px var(--theme-color,var(--focus-color,#ff5473)); content:""; }
.jio-widget__header--big .jio-widget__title { padding:0; font-size: clamp(28px, 4vw, 42px); }
.jio-widget__header--big .jio-widget__title::before { content:none; }
.jio-widget__title mark { padding: 0; background: transparent; color: var(--focus-color, #ff5473); }
.jio-widget__subtitle { margin: 7px 0 0; color: var(--muted-color, #8a8c98); }
.jio-widget__title-links { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.jio-widget__title-links a { padding: 5px 11px; border-radius: 4px; background: var(--muted-border-color, #f2f3f5); color:var(--muted-color,#777); font-size: 13px; }
.dark-theme .jio-widget__title-links a, [data-theme="dark"] .jio-widget__title-links a { background: #292a30; }
.jio-widget-grid { display: grid; grid-template-columns: repeat(var(--jio-cols, 3), minmax(0, 1fr)); gap: 15px; }
.jio-widget__empty, .jio-widget-request-error { padding: 28px 18px; border: 1px dashed rgba(127,127,127,.25); border-radius: var(--jio-widget-radius); color: var(--muted-color, #8a8c98); text-align: center; }
.jio-widget-request-error button { margin-left: 10px; padding: 5px 12px; border: 0; border-radius: 999px; cursor: pointer; }
.jio-widget--affix { position: sticky; top: 76px; }
.jio-widget--only-mobile { display: none; }
.aksrt-widget-search { display: flex; min-height: 42px; padding: 4px; border: 1px solid var(--main-border-color,rgba(127,127,127,.18)); border-radius: var(--main-radius,8px); background: var(--main-bg-color, #fff); }
.aksrt-widget-search label { flex: 1; display: flex; }
.aksrt-widget-search input { width: 100%; padding: 8px 12px; border: 0; outline: 0; background: transparent; color: inherit; }
.aksrt-widget-search button { display: flex; align-items: center; gap: 7px; padding: 7px 14px; border: 0; border-radius: var(--mini-radius,4px); background: var(--focus-color, #ff5473); color: #fff; cursor: pointer; }
.aksrt-widget-search--compact button span { display: none; }
.aksrt-widget-search--large { min-height: 58px; border-radius: 14px; }
.jio-widget-search { display: flex; min-height: 42px; padding: 4px; border: 1px solid var(--main-border-color,rgba(127,127,127,.18)); border-radius: var(--main-radius,8px); background: var(--main-bg-color, #fff); }
.jio-widget-search label { flex: 1; display: flex; }
.jio-widget-search input { width: 100%; padding: 8px 12px; border: 0; outline: 0; background: transparent; color: inherit; }
.jio-widget-search button { display: flex; align-items: center; gap: 7px; padding: 7px 14px; border: 0; border-radius: var(--mini-radius,4px); background: var(--focus-color, #ff5473); color: #fff; cursor: pointer; }
.jio-widget-search--compact button span { display: none; }
.jio-widget-search--large { min-height: 58px; border-radius: 14px; }
.aksrt-widget-quote { margin: 0; padding: 12px 15px; border-radius: var(--aksrt-widget-radius); background: var(--main-bg-color, #fff); color: var(--main-color, inherit); box-shadow: 0 0 10px var(--main-shadow, rgba(116,116,116,.08)); }
.aksrt-widget-quote .yiyan { line-height: 1.8; }
.aksrt-widget-quote .yiyan .en { font-size: .9em; opacity: .8; }
.aksrt-widget-quote.is-loading { opacity: .65; }
.jio-widget-quote { margin: 0; padding: 12px 15px; border-radius: var(--jio-widget-radius); background: var(--main-bg-color, #fff); color: var(--main-color, inherit); box-shadow: 0 0 10px var(--main-shadow, rgba(116,116,116,.08)); }
.jio-widget-quote .yiyan { line-height: 1.8; }
.jio-widget-quote .yiyan .en { font-size: .9em; opacity: .8; }
.jio-widget-quote.is-loading { opacity: .65; }
/* The AKSRT base stylesheet already carries Zibll's icon-card and utility rules.
/* The Jio base stylesheet already carries Zibll's icon-card and utility rules.
* Restore the one renamed primitive used verbatim by these two widget renderers. */
.zib-widget { clear:both; margin-bottom:20px; padding:15px; 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)); }
.zib-widget.padding-10 { padding:10px; }
@@ -64,46 +64,46 @@
.zib-widget.posts-mini-lists .relative > .tab-nav-theme ~ .scroll-x-prev,
.zib-widget.posts-mini-lists .relative > .tab-nav-theme ~ .scroll-x-next { top:10px; }
.zib-widget-wrap { padding:var(--aksrt-widget-space-top,0) var(--aksrt-widget-space-right,0) var(--aksrt-widget-space-bottom,0) var(--aksrt-widget-space-left,0); background-color:var(--aksrt-widget-bg-light,transparent); background-image:var(--aksrt-widget-bg-image-light,none); background-position:center; background-size:cover; }
.dark-theme .zib-widget-wrap, [data-theme="dark"] .zib-widget-wrap { background-color:var(--aksrt-widget-bg-dark,var(--aksrt-widget-bg-light,transparent)); background-image:var(--aksrt-widget-bg-image-dark,var(--aksrt-widget-bg-image-light,none)); }
.zib-widget-wrap { padding:var(--jio-widget-space-top,0) var(--jio-widget-space-right,0) var(--jio-widget-space-bottom,0) var(--jio-widget-space-left,0); background-color:var(--jio-widget-bg-light,transparent); background-image:var(--jio-widget-bg-image-light,none); background-position:center; background-size:cover; }
.dark-theme .zib-widget-wrap, [data-theme="dark"] .zib-widget-wrap { background-color:var(--jio-widget-bg-dark,var(--jio-widget-bg-light,transparent)); background-image:var(--jio-widget-bg-image-dark,var(--jio-widget-bg-image-light,none)); }
.zib-widget-wrap .widget-container { position:relative; }
.aksrt-user-widget-wrap :where(a, button, input, select, textarea, [tabindex]):focus-visible,
.aksrt-tab-posts-wrap :where(a, button, input, select, textarea, [tabindex]):focus-visible,
.aksrt-posts-wrap :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline:3px solid var(--focus-color,#ff5473) !important; outline-offset:3px; }
.dark-theme :is(.aksrt-user-widget-wrap, .aksrt-tab-posts-wrap) :where(a, button, input, select, textarea, [tabindex]):focus-visible,
.dark-theme .aksrt-posts-wrap :where(a, button, input, select, textarea, [tabindex]):focus-visible,
[data-theme="dark"] :is(.aksrt-user-widget-wrap, .aksrt-tab-posts-wrap, .aksrt-posts-wrap) :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline-color:#ffd166 !important; }
.jio-user-widget-wrap :where(a, button, input, select, textarea, [tabindex]):focus-visible,
.jio-tab-posts-wrap :where(a, button, input, select, textarea, [tabindex]):focus-visible,
.jio-posts-wrap :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline:3px solid var(--focus-color,#ff5473) !important; outline-offset:3px; }
.dark-theme :is(.jio-user-widget-wrap, .jio-tab-posts-wrap) :where(a, button, input, select, textarea, [tabindex]):focus-visible,
.dark-theme .jio-posts-wrap :where(a, button, input, select, textarea, [tabindex]):focus-visible,
[data-theme="dark"] :is(.jio-user-widget-wrap, .jio-tab-posts-wrap, .jio-posts-wrap) :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline-color:#ffd166 !important; }
.user-card.zib-widget { padding:0; overflow:hidden; }
.user-card.widget .user-info > .text-center > p:not(.muted-color) { white-space:nowrap; }
.user-card.widget .user-info > .text-center > p:not(.muted-color) .but { white-space:nowrap; }
@media (max-width:767px) {
.zib-widget-wrap { padding:var(--aksrt-widget-space-m-top,0) var(--aksrt-widget-space-m-right,0) var(--aksrt-widget-space-m-bottom,0) var(--aksrt-widget-space-m-left,0); }
.zib-widget-wrap { padding:var(--jio-widget-space-m-top,0) var(--jio-widget-space-m-right,0) var(--jio-widget-space-m-bottom,0) var(--jio-widget-space-m-left,0); }
}
.aksrt-widget-video { position: relative; overflow: hidden; border-radius: var(--aksrt-widget-radius); background: #000; aspect-ratio: 16 / 9; }
.aksrt-widget-video--4-3 { aspect-ratio: 4 / 3; }.aksrt-widget-video--1-1 { aspect-ratio: 1; }.aksrt-widget-video--auto { aspect-ratio: auto; }
.aksrt-widget-video video, .aksrt-widget-video__player, .aksrt-widget-video .dplayer { width: 100%; height: 100%; }
.aksrt-widget-media-error { position: absolute; inset: auto 15px 15px; color: #fff; }
.aksrt-widget-embed { position: relative; height: 0; padding-bottom: var(--aksrt-embed-ratio, 56.25%); overflow: hidden; border-radius: var(--aksrt-widget-radius); background: #111; }
.aksrt-widget-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.jio-widget-video { position: relative; overflow: hidden; border-radius: var(--jio-widget-radius); background: #000; aspect-ratio: 16 / 9; }
.jio-widget-video--4-3 { aspect-ratio: 4 / 3; }.jio-widget-video--1-1 { aspect-ratio: 1; }.jio-widget-video--auto { aspect-ratio: auto; }
.jio-widget-video video, .jio-widget-video__player, .jio-widget-video .dplayer { width: 100%; height: 100%; }
.jio-widget-media-error { position: absolute; inset: auto 15px 15px; color: #fff; }
.jio-widget-embed { position: relative; height: 0; padding-bottom: var(--jio-embed-ratio, 56.25%); overflow: hidden; border-radius: var(--jio-widget-radius); background: #111; }
.jio-widget-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.aksrt-media-card { position: relative; display: block; overflow: hidden; min-height: 180px; 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-media-card__media { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: #eceef2; }
.aksrt-media-card__media img, .aksrt-media-card__media video { width: 100%; height: 100%; object-fit: cover; transition: transform .35s; }
.aksrt-media-card:hover .aksrt-media-card__media img { transform: scale(1.04); }
.aksrt-media-card__image--dark { display: none; }
.dark-theme .aksrt-media-card__image--dark, [data-theme="dark"] .aksrt-media-card__image--dark { display: block; }
.dark-theme .aksrt-media-card__image--dark ~ .aksrt-media-card__image, [data-theme="dark"] .aksrt-media-card__image--dark ~ .aksrt-media-card__image { display: none; }
.aksrt-media-card__body { display: flex; flex-direction: column; gap: 5px; padding: 14px 16px 16px; }
.aksrt-media-card__body small { color: var(--muted-color, #8a8c98); }
.jio-media-card { position: relative; display: block; overflow: hidden; min-height: 180px; border-radius: var(--jio-widget-radius); background: var(--main-bg-color, #fff); box-shadow: 0 0 10px var(--main-shadow,rgba(116,116,116,.08)); }
.jio-media-card__media { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: #eceef2; }
.jio-media-card__media img, .jio-media-card__media video { width: 100%; height: 100%; object-fit: cover; transition: transform .35s; }
.jio-media-card:hover .jio-media-card__media img { transform: scale(1.04); }
.jio-media-card__image--dark { display: none; }
.dark-theme .jio-media-card__image--dark, [data-theme="dark"] .jio-media-card__image--dark { display: block; }
.dark-theme .jio-media-card__image--dark ~ .jio-media-card__image, [data-theme="dark"] .jio-media-card__image--dark ~ .jio-media-card__image { display: none; }
.jio-media-card__body { display: flex; flex-direction: column; gap: 5px; padding: 14px 16px 16px; }
.jio-media-card__body small { color: var(--muted-color, #8a8c98); }
.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-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-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; }
.jio-widget-text-title { padding: 18px 0; }.jio-widget-text-title.is-center { text-align: center; }.jio-widget-text-title.is-right { text-align: right; }
.jio-widget-text-title h2 { margin: 0; font-size: clamp(26px,4vw,44px); line-height: 1.25; }.jio-widget-text-title p { margin: 12px 0 0; color: var(--muted-color,#8a8c98); line-height: 1.8; }
.jio-widget-gap { height: var(--jio-gap); }
.jio-widget-tag-cloud { display: flex; flex-wrap: wrap; gap: 8px; }.jio-widget-tag-cloud a { padding: 6px 11px; border-radius: 6px; background: rgba(127,127,127,.1); font-size: 13px; transition: background .2s,color .2s; }.jio-widget-tag-cloud a:hover { background: var(--focus-color,#ff5473); color: #fff; }.jio-widget-tag-cloud small { margin-left: 5px; opacity: .65; }
.jio-widget-links { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; }.jio-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); }.jio-widget-links small { color: var(--muted-color,#8a8c98); }.jio-widget-links--simple { display: flex; flex-wrap: wrap; }.jio-widget-links--simple a { padding: 5px 9px; box-shadow: none; background: transparent; }
.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); }
@@ -121,39 +121,39 @@
.swiper-bulletin[class*="jb-"] .bulletin-icon { color: var(--this-bg-b); }
.aksrt-pricing-card { position: relative; display: flex; flex-direction: column; padding: 20px; border: 1px solid var(--main-border-color,rgba(127,127,127,.13)); 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-pricing-card.is-featured { border-color: var(--focus-color,#ff5473); }.aksrt-pricing-card__badge { position: absolute; top: 12px; right: 12px; padding: 4px 9px; border-radius: 999px; background: var(--focus-color,#ff5473); color: #fff; font-size: 12px; }.aksrt-pricing-card h3 { margin: 0 0 12px; }.aksrt-pricing-card__price { font-size: 34px; font-weight: 800; }.aksrt-pricing-card p { color: var(--muted-color,#8a8c98); }.aksrt-pricing-card ul { flex: 1; display: grid; gap: 9px; margin: 15px 0 22px; padding: 0; list-style: none; }.aksrt-pricing-card li i { margin-right: 8px; color: #22c55e; }
.aksrt-reviews .swiper-slide { width: min(390px,86vw); height: auto; }.aksrt-review-card { height: 100%; padding: 20px; 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-review-card__rating { color: #f6b73c; }.aksrt-review-card blockquote { min-height: 80px; margin: 15px 0; line-height: 1.75; }.aksrt-review-card footer { display: flex; align-items: center; gap: 11px; }.aksrt-review-card__avatar { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }.aksrt-review-card footer span { display: flex; flex-direction: column; }.aksrt-review-card footer small { color: var(--muted-color,#8a8c98); }
.aksrt-faq { max-width: 880px; margin: auto; }.aksrt-faq__search { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; padding: 10px 14px; border: 1px solid rgba(127,127,127,.16); border-radius: 10px; }.aksrt-faq__search input { width: 100%; border: 0; outline: 0; background: transparent; color: inherit; }.aksrt-faq__items { display: grid; gap: 10px; }.aksrt-faq__item { overflow: hidden; border: 1px solid rgba(127,127,127,.13); border-radius: 10px; background: var(--main-bg,#fff); }.aksrt-faq__item > button { display: flex; width: 100%; justify-content: space-between; padding: 15px 17px; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }.aksrt-faq__item > div { padding: 0 17px 17px; color: var(--muted-color,#8a8c98); line-height: 1.75; }
.aksrt-stat { padding: 22px; text-align: center; }.aksrt-stat > strong { display: block; color: var(--focus-color,#ff5473); font-size: clamp(32px,5vw,52px); }.aksrt-stat h3 { margin: 5px 0; }.aksrt-stat p { margin: 0; color: var(--muted-color,#8a8c98); }.aksrt-highlight--large { grid-column: span 2; }.aksrt-tilt-case { transform-style: preserve-3d; }.aksrt-tilt-case .aksrt-media-card__body { transform: translateZ(20px); }
.aksrt-feature-intro__tabs { display: flex; justify-content: center; gap: 8px; margin-bottom: 18px; }.aksrt-feature-intro__tabs button { padding: 7px 14px; border: 0; border-radius: 999px; background: rgba(127,127,127,.1); color: inherit; cursor: pointer; }.aksrt-feature-intro__tabs button[aria-selected="true"] { background: var(--focus-color,#ff5473); color: #fff; }.aksrt-feature-intro__panels article { display: grid; grid-template-columns: 1.15fr 1fr; align-items: center; gap: 34px; }.aksrt-feature-intro__copy p, .aksrt-feature-intro__copy li { color: var(--muted-color,#8a8c98); line-height: 1.7; }
.jio-pricing-card { position: relative; display: flex; flex-direction: column; padding: 20px; border: 1px solid var(--main-border-color,rgba(127,127,127,.13)); 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)); }.jio-pricing-card.is-featured { border-color: var(--focus-color,#ff5473); }.jio-pricing-card__badge { position: absolute; top: 12px; right: 12px; padding: 4px 9px; border-radius: 999px; background: var(--focus-color,#ff5473); color: #fff; font-size: 12px; }.jio-pricing-card h3 { margin: 0 0 12px; }.jio-pricing-card__price { font-size: 34px; font-weight: 800; }.jio-pricing-card p { color: var(--muted-color,#8a8c98); }.jio-pricing-card ul { flex: 1; display: grid; gap: 9px; margin: 15px 0 22px; padding: 0; list-style: none; }.jio-pricing-card li i { margin-right: 8px; color: #22c55e; }
.jio-reviews .swiper-slide { width: min(390px,86vw); height: auto; }.jio-review-card { height: 100%; padding: 20px; 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)); }.jio-review-card__rating { color: #f6b73c; }.jio-review-card blockquote { min-height: 80px; margin: 15px 0; line-height: 1.75; }.jio-review-card footer { display: flex; align-items: center; gap: 11px; }.jio-review-card__avatar { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }.jio-review-card footer span { display: flex; flex-direction: column; }.jio-review-card footer small { color: var(--muted-color,#8a8c98); }
.jio-faq { max-width: 880px; margin: auto; }.jio-faq__search { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; padding: 10px 14px; border: 1px solid rgba(127,127,127,.16); border-radius: 10px; }.jio-faq__search input { width: 100%; border: 0; outline: 0; background: transparent; color: inherit; }.jio-faq__items { display: grid; gap: 10px; }.jio-faq__item { overflow: hidden; border: 1px solid rgba(127,127,127,.13); border-radius: 10px; background: var(--main-bg,#fff); }.jio-faq__item > button { display: flex; width: 100%; justify-content: space-between; padding: 15px 17px; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }.jio-faq__item > div { padding: 0 17px 17px; color: var(--muted-color,#8a8c98); line-height: 1.75; }
.jio-stat { padding: 22px; text-align: center; }.jio-stat > strong { display: block; color: var(--focus-color,#ff5473); font-size: clamp(32px,5vw,52px); }.jio-stat h3 { margin: 5px 0; }.jio-stat p { margin: 0; color: var(--muted-color,#8a8c98); }.jio-highlight--large { grid-column: span 2; }.jio-tilt-case { transform-style: preserve-3d; }.jio-tilt-case .jio-media-card__body { transform: translateZ(20px); }
.jio-feature-intro__tabs { display: flex; justify-content: center; gap: 8px; margin-bottom: 18px; }.jio-feature-intro__tabs button { padding: 7px 14px; border: 0; border-radius: 999px; background: rgba(127,127,127,.1); color: inherit; cursor: pointer; }.jio-feature-intro__tabs button[aria-selected="true"] { background: var(--focus-color,#ff5473); color: #fff; }.jio-feature-intro__panels article { display: grid; grid-template-columns: 1.15fr 1fr; align-items: center; gap: 34px; }.jio-feature-intro__copy p, .jio-feature-intro__copy li { color: var(--muted-color,#8a8c98); line-height: 1.7; }
.aksrt-user-ranking { display: grid; gap: 11px; margin: 0; padding: 0; list-style: none; }.aksrt-user-ranking li { display: flex; align-items: center; gap: 9px; }.aksrt-user-ranking__index { width: 24px; text-align: center; color: var(--muted-color,#8a8c98); font-weight: 700; }.aksrt-user-ranking__index.is-top { color: #f59e0b; }.aksrt-user-tile { display: flex; min-width: 0; flex: 1; align-items: center; gap: 10px; }.aksrt-user-tile img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }.aksrt-user-tile span { display: flex; min-width: 0; flex-direction: column; }.aksrt-user-tile strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.aksrt-user-tile small { color: var(--muted-color,#8a8c98); }.aksrt-user-list { --aksrt-cols: 4; }.aksrt-user-list article { padding: 14px; border-radius: 10px; background: var(--main-bg,#fff); box-shadow: 0 6px 20px rgba(31,35,48,.06); }
.jio-user-ranking { display: grid; gap: 11px; margin: 0; padding: 0; list-style: none; }.jio-user-ranking li { display: flex; align-items: center; gap: 9px; }.jio-user-ranking__index { width: 24px; text-align: center; color: var(--muted-color,#8a8c98); font-weight: 700; }.jio-user-ranking__index.is-top { color: #f59e0b; }.jio-user-tile { display: flex; min-width: 0; flex: 1; align-items: center; gap: 10px; }.jio-user-tile img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }.jio-user-tile span { display: flex; min-width: 0; flex-direction: column; }.jio-user-tile strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.jio-user-tile small { color: var(--muted-color,#8a8c98); }.jio-user-list { --jio-cols: 4; }.jio-user-list article { padding: 14px; border-radius: 10px; background: var(--main-bg,#fff); box-shadow: 0 6px 20px rgba(31,35,48,.06); }
@media (max-width: 767px) {
.aksrt-widget { margin: var(--aksrt-widget-space-m-top,0) var(--aksrt-widget-space-m-right,0) var(--aksrt-widget-space-m-bottom,15px) var(--aksrt-widget-space-m-left,0); }
.aksrt-widget--only-pc { display: none; }.aksrt-widget--only-mobile { display: block; }
.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)); }
.jio-widget { margin: var(--jio-widget-space-m-top,0) var(--jio-widget-space-m-right,0) var(--jio-widget-space-m-bottom,15px) var(--jio-widget-space-m-left,0); }
.jio-widget--only-pc { display: none; }.jio-widget--only-mobile { display: block; }
.jio-widget-grid { grid-template-columns: repeat(var(--jio-cols-m,1),minmax(0,1fr)); gap: 10px; }
.jio-widget__header { align-items: flex-start; flex-direction: column; }.jio-widget__title-links { justify-content: flex-start; }
.jio-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-feature-intro__panels article { grid-template-columns: 1fr; }
.aksrt-highlight--large { grid-column: auto; }
.aksrt-widget-gap { height: var(--aksrt-gap-m); }.aksrt-pricing-card.is-featured { transform: none; }
.aksrt-user-list { --aksrt-cols-m: 1; }
.jio-feature-intro__panels article { grid-template-columns: 1fr; }
.jio-highlight--large { grid-column: auto; }
.jio-widget-gap { height: var(--jio-gap-m); }.jio-pricing-card.is-featured { transform: none; }
.jio-user-list { --jio-cols-m: 1; }
}
@media (prefers-reduced-motion: reduce) {
.aksrt-widget *, .aksrt-widget *::before, .aksrt-widget *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
.jio-widget *, .jio-widget *::before, .jio-widget *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
@media (forced-colors: active) {
.aksrt-widget :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline-color: Highlight !important; }
.jio-widget :where(a, button, input, select, textarea, [tabindex]):focus-visible { outline-color: Highlight !important; }
}
.aksrt-widget--animate { animation: aksrt-widget-fade .55s both; }.aksrt-widget--animate-slideup { animation-name: aksrt-widget-slideup; }.aksrt-widget--animate-slidedown { animation-name: aksrt-widget-slidedown; }.aksrt-widget--animate-slideright { animation-name: aksrt-widget-slideright; }.aksrt-widget--animate-slideleft { animation-name: aksrt-widget-slideleft; }.aksrt-widget--animate-zoomin { animation-name: aksrt-widget-zoomin; }.aksrt-widget--animate-zoomout { animation-name: aksrt-widget-zoomout; }.aksrt-widget--animate-repeat { animation-iteration-count: infinite; animation-duration: 2s; }
.jio-widget--animate { animation: jio-widget-fade .55s both; }.jio-widget--animate-slideup { animation-name: jio-widget-slideup; }.jio-widget--animate-slidedown { animation-name: jio-widget-slidedown; }.jio-widget--animate-slideright { animation-name: jio-widget-slideright; }.jio-widget--animate-slideleft { animation-name: jio-widget-slideleft; }.jio-widget--animate-zoomin { animation-name: jio-widget-zoomin; }.jio-widget--animate-zoomout { animation-name: jio-widget-zoomout; }.jio-widget--animate-repeat { animation-iteration-count: infinite; animation-duration: 2s; }
/* Zibll modern widget contracts */
.widget-tab-post .tab-content > .tab-pane { display: none; }
@@ -161,7 +161,7 @@
.widget-tab-post, .term-aggregation { line-height:1.42857143; }
/* Public typography overrides Bootstrap headings. Match the reference widget
* without changing article headings elsewhere on the page. */
.aksrt-tab-posts-wrap, .aksrt-posts-wrap { font-size:14px; line-height:1.42857143; color:var(--main-color,#4e5358); }
.jio-tab-posts-wrap, .jio-posts-wrap { font-size:14px; line-height:1.42857143; color:var(--main-color,#4e5358); }
.widget-tab-post .item-heading, .widget-main-post .item-heading { font-weight:500; color:inherit; }
.widget-tab-post .item-heading.font-bold, .widget-main-post .item-heading.font-bold { font-weight:700; }
.widget-tab-post .posts-mini, .widget-main-post .posts-mini { vertical-align:baseline; }
@@ -274,4 +274,4 @@
.widget-slider-graphic .widget-graphic-cover > .row > [class*="col-"] { height: auto; }
.widget-slider-graphic .cover-col .graphic-text { font-size: var(--font-size-sm, 14px); font-weight: var(--font-weight-sm, normal); color: var(--color-sm, inherit); }
}
@keyframes aksrt-widget-fade { from { opacity: 0; } }@keyframes aksrt-widget-slideup { from { opacity:0;transform:translateY(25px); } }@keyframes aksrt-widget-slidedown { from { opacity:0;transform:translateY(-25px); } }@keyframes aksrt-widget-slideright { from { opacity:0;transform:translateX(-25px); } }@keyframes aksrt-widget-slideleft { from { opacity:0;transform:translateX(25px); } }@keyframes aksrt-widget-zoomin { from { opacity:0;transform:scale(.9); } }@keyframes aksrt-widget-zoomout { from { opacity:0;transform:scale(1.1); } }
@keyframes jio-widget-fade { from { opacity: 0; } }@keyframes jio-widget-slideup { from { opacity:0;transform:translateY(25px); } }@keyframes jio-widget-slidedown { from { opacity:0;transform:translateY(-25px); } }@keyframes jio-widget-slideright { from { opacity:0;transform:translateX(-25px); } }@keyframes jio-widget-slideleft { from { opacity:0;transform:translateX(25px); } }@keyframes jio-widget-zoomin { from { opacity:0;transform:scale(.9); } }@keyframes jio-widget-zoomout { from { opacity:0;transform:scale(1.1); } }
+20 -20
View File
@@ -1,11 +1,11 @@
(function () {
'use strict';
var config = window.aksrtWidgets || {};
var config = window.jioWidgets || {};
var reducedMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
function once(el, key) {
var name = 'aksrt' + key;
var name = 'jio' + key;
if (el.dataset[name]) return false;
el.dataset[name] = '1';
return true;
@@ -35,24 +35,24 @@
}
function initVideo(el) {
// 幂等标记落在 data-aksrt-widget-video;data-aksrt-video 是
// AksrtVideoPlayer 的自动初始化契约,被扫到会在容器里再挂一个无源播放器。
// 幂等标记落在 data-jio-widget-video;data-jio-video 是
// JioVideoPlayer 的自动初始化契约,被扫到会在容器里再挂一个无源播放器。
if (!once(el, 'WidgetVideo')) return;
var fallback = el.querySelector('video');
if (fallback) {
fallback.addEventListener('error', function () {
var message = el.querySelector('.aksrt-widget-media-error');
var message = el.querySelector('.jio-widget-media-error');
if (message) message.hidden = false;
});
}
function mountPlayer(event) {
if (typeof window.DPlayer !== 'function' || el.aksrtPlayer) return;
if (typeof window.DPlayer !== 'function' || el.jioPlayer) return;
if (event) event.preventDefault();
var holder = document.createElement('div');
holder.className = 'aksrt-widget-video__player';
holder.className = 'jio-widget-video__player';
el.insertBefore(holder, fallback || el.firstChild);
try {
el.aksrtPlayer = new window.DPlayer({
el.jioPlayer = new window.DPlayer({
container: holder,
autoplay: el.dataset.autoplay === '1' && !reducedMotion,
video: {
@@ -61,7 +61,7 @@
type: videoType(el.dataset.videoUrl || '')
}
});
if (el.dataset.muted === '1' && el.aksrtPlayer.video) el.aksrtPlayer.video.muted = true;
if (el.dataset.muted === '1' && el.jioPlayer.video) el.jioPlayer.video.muted = true;
if (fallback) fallback.hidden = true;
} catch (error) {
holder.remove();
@@ -76,12 +76,12 @@
function initQuote(figure) {
if (!once(figure, 'Quote')) return;
if (window.AksrtYiyan) window.AksrtYiyan.init(figure);
if (window.JioYiyan) window.JioYiyan.init(figure);
}
function errorMarkup(page, append) {
var i18n = config.i18n || {};
return '<div class="aksrt-widget-request-error" role="alert"><span>' + (i18n.error || '加载失败,请重试。') + '</span><button type="button" data-widget-retry data-retry-page="' + page + '" data-retry-append="' + (append ? '1' : '0') + '">' + (i18n.retry || '重试') + '</button></div>';
return '<div class="jio-widget-request-error" role="alert"><span>' + (i18n.error || '加载失败,请重试。') + '</span><button type="button" data-widget-retry data-retry-page="' + page + '" data-retry-append="' + (append ? '1' : '0') + '">' + (i18n.retry || '重试') + '</button></div>';
}
function itemsUrl(widget, instance, page, segment) {
@@ -104,7 +104,7 @@
}
function fallbackLoader() {
var text = (window.aksrtData && aksrtData.ajaxLoading) || '加载中...';
var text = (window.jioData && jioData.ajaxLoading) || '加载中...';
var node = document.createElement('div');
node.className = 'post_ajax_loader';
node.setAttribute('role', 'status');
@@ -148,7 +148,7 @@
var instance = owner.dataset.instance || container.dataset.instance;
var segment = container.dataset.segment || owner.dataset.segment || '';
if (!widget || !instance || !config.restUrl || container.dataset.loading === '1') return;
container.querySelectorAll(':scope > .aksrt-widget-request-error').forEach(function (error) { error.remove(); });
container.querySelectorAll(':scope > .jio-widget-request-error').forEach(function (error) { error.remove(); });
setBusy(container, true);
var previous = [];
if (!append) {
@@ -286,7 +286,7 @@
function initFaq(faq) {
if (!once(faq, 'Faq')) return;
faq.addEventListener('click', function (event) {
var button = event.target.closest('.aksrt-faq__item > button');
var button = event.target.closest('.jio-faq__item > button');
if (!button) return;
var expanded = button.getAttribute('aria-expanded') === 'true';
button.setAttribute('aria-expanded', expanded ? 'false' : 'true');
@@ -296,7 +296,7 @@
var search = faq.querySelector('input[type="search"]');
if (search) search.addEventListener('input', function () {
var needle = search.value.trim().toLowerCase();
faq.querySelectorAll('.aksrt-faq__item').forEach(function (item) { item.hidden = needle && String(item.dataset.search || '').toLowerCase().indexOf(needle) === -1; });
faq.querySelectorAll('.jio-faq__item').forEach(function (item) { item.hidden = needle && String(item.dataset.search || '').toLowerCase().indexOf(needle) === -1; });
});
}
@@ -356,16 +356,16 @@
function scan(root) {
var scope = root || document;
scope.querySelectorAll('.aksrt-widget-video[data-video-url]').forEach(initVideo);
scope.querySelectorAll('.aksrt-widget-quote').forEach(initQuote);
scope.querySelectorAll('.jio-widget-video[data-video-url]').forEach(initVideo);
scope.querySelectorAll('.jio-widget-quote').forEach(initQuote);
if (scope.matches && scope.matches('[data-widget-items]')) initItems(scope);
scope.querySelectorAll('[data-widget-items]').forEach(initItems);
scope.querySelectorAll('.widget-tab-post').forEach(initTabs);
scope.querySelectorAll('.aksrt-faq').forEach(initFaq);
scope.querySelectorAll('.aksrt-feature-intro').forEach(initFeatures);
scope.querySelectorAll('.jio-faq').forEach(initFaq);
scope.querySelectorAll('.jio-feature-intro').forEach(initFeatures);
scope.querySelectorAll('[data-count-up]').forEach(initCount);
scope.querySelectorAll('.widget-slider-graphic').forEach(measureSliderGraphic);
if (typeof window.VanillaTilt !== 'undefined') scope.querySelectorAll('[data-aksrt-tilt]').forEach(function (el) { if (once(el, 'Tilt')) window.VanillaTilt.init(el); });
if (typeof window.VanillaTilt !== 'undefined') scope.querySelectorAll('[data-jio-tilt]').forEach(function (el) { if (once(el, 'Tilt')) window.VanillaTilt.init(el); });
}
function ready() {
+1 -1
View File
@@ -1,6 +1,6 @@
# Widget third-party assets
Only libraries requested by the 37-widget registry are shipped. The five player/tilt files are pinned byte-for-byte from the frozen reference directory `C:\Users\Xing\Desktop\legacy\js\libs`; Swiper was already bundled by AKSRT and is shared with the new widget runtime.
Only libraries requested by the 37-widget registry are shipped. The five player/tilt files are pinned byte-for-byte from the frozen reference directory `C:\Users\Xing\Desktop\legacy\js\libs`; Swiper was already bundled by Jio and is shared with the new widget runtime.
| Asset | Upstream | License | SHA-256 |
|---|---|---|---|