مدیاویکی:Common.js: تفاوت میان نسخهها
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
| (۱۴ نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد) | |||
| خط ۱: | خط ۱: | ||
(function () { | |||
/* | /* ========================================================= | ||
سیستم تستهای تعاملی ویکیداد | |||
نسخه مرکزی — هماهنگ با Master ماده ۱۵ | |||
========================================================= */ | |||
'use strict'; | |||
/* ========================================================= | |||
ابزارهای کمکی | |||
========================================================= */ | |||
function getTestOptions(test) { | |||
return test.find('.wd-test-option').filter(function () { | |||
return $(this).closest('.wd-test')[0] === test[0]; | |||
}); | |||
} | |||
function getTestResult(test) { | |||
return test.find('.wd-test-result').filter(function () { | |||
return $(this).closest('.wd-test')[0] === test[0]; | |||
}).first(); | |||
} | |||
function getTestAnswer(test) { | |||
return test.find('.wd-test-answer').filter(function () { | |||
return $(this).closest('.wd-test')[0] === test[0]; | |||
}).first(); | |||
} | |||
function normalizeAnswer(value) { | |||
value = $.trim(value || ''); | |||
/* | |||
* پاسخ میتواند مستقیماً «الف» باشد | |||
* یا در بعضی شرایط با فاصله/نشانه همراه باشد. | |||
*/ | |||
var match = value.match( | |||
/^(الف|ب|ج|د|ه|هـ|و)/ | |||
); | |||
if (match) { | |||
return match[1]; | |||
} | |||
return value.charAt(0); | |||
} | |||
/* ========================================================= | |||
آمادهسازی تستها | |||
========================================================= */ | |||
function initWikidadTests() { | |||
$('.wd-test').each(function () { | |||
var test = $(this); | |||
if (test.hasClass('wd-test-ready')) { | |||
return; | |||
} | |||
test.addClass('wd-test-ready'); | |||
var | var options = getTestOptions(test); | ||
/* | /* | ||
* اگر پاسخ | * اگر تست قبلاً پاسخ داده شده باشد، | ||
* | * وضعیت را حفظ میکنیم. | ||
*/ | */ | ||
if (test.hasClass('wd-test-finished')) { | |||
options.prop('disabled', true); | |||
return; | return; | ||
| خط ۷۷: | خط ۱۰۱: | ||
/* | /* | ||
* | * طراحی پایه گزینهها | ||
* | |||
* رنگها مطابق طراحی ماده ۱۵ | |||
*/ | */ | ||
options.css({ | |||
'display': 'block', | |||
'width': '100%', | |||
' | 'box-sizing': 'border-box', | ||
'padding': '10px 13px', | |||
); | 'margin': '7px 0', | ||
'border': '1px solid #d9dfdc', | |||
'border-radius': '6px', | |||
'background': '#ffffff', | |||
'color': '#455a64', | |||
'cursor': 'pointer', | |||
'font-family': 'inherit', | |||
'font-size': '13.5px', | |||
'line-height': '1.9', | |||
'text-align': 'right', | |||
'direction': 'rtl', | |||
'transition': | |||
'background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease' | |||
}); | |||
/* | /* | ||
* | * نتیجه در شروع مخفی باشد. | ||
*/ | */ | ||
var result = getTestResult(test); | |||
result.css({ | |||
'display': 'none', | |||
'visibility': 'hidden', | |||
'opacity': '0' | |||
}); | |||
/* | /* | ||
* | * پاسخ و تحلیل در شروع مخفی باشد. | ||
*/ | */ | ||
var answer = getTestAnswer(test); | |||
answer.css({ | |||
'display': 'none', | |||
'visibility': 'hidden', | |||
'opacity': '0' | |||
}); | |||
}); | |||
} | |||
/* ========================================================= | |||
اجرای آمادهسازی | |||
========================================================= */ | |||
$(document).ready(function () { | |||
initWikidadTests(); | |||
}); | |||
/* ========================================================= | |||
افکت ساده هنگام قرار گرفتن موس روی گزینه | |||
========================================================= */ | |||
$(document).on( | |||
'mouseenter', | |||
'.wd-test:not(.wd-test-finished) .wd-test-option', | |||
function () { | |||
var option = $(this); | |||
if (option.prop('disabled')) { | |||
return; | |||
} | |||
option.css({ | |||
'background': '#faf8fc', | |||
'border-color': '#cfc4d9', | |||
'box-shadow': '0 1px 3px rgba(80,60,90,.06)' | |||
}); | |||
} | |||
); | |||
$(document).on( | |||
'mouseleave', | |||
'.wd-test:not(.wd-test-finished) .wd-test-option', | |||
function () { | |||
var | var option = $(this); | ||
if (option.prop('disabled')) { | |||
return; | |||
} | |||
option.css({ | |||
'background': '#ffffff', | |||
'border-color': '#d9dfdc', | |||
'box-shadow': 'none' | |||
}); | |||
} | |||
); | |||
/* ========================================================= | |||
کلیک روی گزینه | |||
========================================================= */ | |||
$(document).on( | |||
'click', | |||
'.wd-test-option', | |||
function (event) { | |||
event.preventDefault(); | |||
event.stopPropagation(); | |||
var option = $(this); | |||
var test = option.closest('.wd-test'); | |||
/* | |||
* تست معتبر نیست. | |||
*/ | |||
if (!test.length) { | |||
return; | |||
} | } | ||
/* | /* | ||
* | * اگر قبلاً پاسخ داده شده، | ||
* | * دیگر امکان تغییر پاسخ وجود ندارد. | ||
*/ | */ | ||
if (test.hasClass('wd-test-finished')) { | |||
return; | |||
} | |||
/* | |||
* جلوگیری از چندبار کلیک سریع | |||
*/ | |||
if (option.prop('disabled')) { | |||
return; | |||
} | |||
/* | /* | ||
* | * گزینههای همین تست | ||
*/ | */ | ||
var options = getTestOptions(test); | |||
' | /* | ||
* پاسخ صحیح از data-answer الگوی تست | |||
*/ | |||
var correctAnswer = normalizeAnswer( | |||
test.attr('data-answer') || '' | |||
); | ); | ||
/* | /* | ||
* | * اگر data-answer خالی بود، | ||
* از data-correct خود گزینهها استفاده میکنیم. | |||
* | |||
* این fallback باعث میشود ساختار جدید | |||
* Python نیز مستقیماً قابل استفاده باشد. | |||
*/ | */ | ||
if (!correctAnswer) { | |||
var optionContainer = | |||
option.closest('.wd-test-options'); | |||
correctAnswer = normalizeAnswer( | |||
optionContainer.attr('data-correct') || '' | |||
); | |||
} | |||
/* | /* | ||
* پاسخ انتخابشده | |||
* پاسخ | |||
*/ | */ | ||
var selectedAnswer = normalizeAnswer( | |||
option.attr('data-option') || '' | |||
); | |||
/* | |||
* اگر data-option وجود نداشت، | |||
* از متن گزینه استخراج شود. | |||
*/ | |||
if (!selectedAnswer) { | |||
selectedAnswer = normalizeAnswer( | |||
option.text() | |||
); | ); | ||
} | |||
message | |||
/* | |||
* تعیین درست / غلط | |||
*/ | |||
var isCorrect = | |||
selectedAnswer === correctAnswer; | |||
) | |||
/* | |||
* نتیجه و پاسخ همین تست | |||
*/ | |||
var result = getTestResult(test); | |||
var resultMessage = | |||
result.find('.wd-test-result-message').first(); | |||
var answer = getTestAnswer(test); | |||
/* ================================================= | |||
پاک کردن وضعیت قبلی گزینهها | |||
================================================= */ | |||
options.css({ | |||
'background': '#ffffff', | |||
'border-color': '#d9dfdc', | |||
'color': '#455a64', | |||
'font-weight': 'normal', | |||
'box-shadow': 'none' | |||
}); | |||
/* ================================================= | |||
مشخص کردن گزینه انتخابشده | |||
================================================= */ | |||
if (isCorrect) { | |||
option.css({ | |||
'background': '#edf8f5', | |||
'border-color': '#527d77', | |||
'color': '#405b56', | |||
'font-weight': 'bold', | |||
'box-shadow': '0 1px 3px rgba(82,125,119,.10)' | |||
}); | |||
} | |||
else { | |||
option.css({ | |||
'background': '#fff2f2', | |||
'border-color': '#b44a4a', | |||
'color': '#9b3838', | |||
'font-weight': 'bold', | |||
'box-shadow': '0 1px 3px rgba(180,74,74,.10)' | |||
}); | |||
/* | /* | ||
* | * پاسخ صحیح را نیز پیدا و سبز میکنیم. | ||
*/ | */ | ||
options.each(function () { | |||
var item = $(this); | |||
var itemAnswer = | |||
normalizeAnswer( | |||
item.attr('data-option') || '' | |||
); | |||
if (!itemAnswer) { | |||
itemAnswer = | |||
normalizeAnswer( | |||
item.text() | |||
); | |||
} | |||
if (itemAnswer === correctAnswer) { | |||
item.css({ | |||
'background': '#edf8f5', | |||
'border-color': '#527d77', | |||
'color': '#405b56', | |||
'font-weight': 'bold', | |||
'box-shadow': | |||
'0 1px 3px rgba(82,125,119,.10)' | |||
}); | |||
} | |||
}); | |||
} | } | ||
/ | /* ================================================= | ||
نمایش پیام نتیجه | |||
================================================= */ | |||
result.css({ | |||
'display': 'block', | |||
'visibility': 'visible', | |||
'opacity': '1', | |||
'padding': '10px 13px', | |||
'border-radius': '6px' | |||
}); | |||
if (isCorrect) { | |||
result.css({ | |||
'background': '#edf8f5', | |||
'border-right': '3px solid #527d77' | |||
}); | |||
resultMessage | |||
.text('✓ پاسخ شما صحیح است.') | |||
.css({ | |||
'display': 'block', | |||
'visibility': 'visible', | |||
'opacity': '1', | |||
'color': '#527d77', | |||
'font-weight': 'bold' | |||
}); | |||
} | |||
else { | else { | ||
result.css({ | |||
' | |||
); | 'background': '#fff5f5', | ||
'border-right': '3px solid #b44a4a' | |||
}); | |||
resultMessage | |||
.text('✕ پاسخ شما نادرست است.') | |||
.css({ | |||
'display': 'block', | |||
'visibility': 'visible', | |||
'opacity': '1', | |||
'color': '#b44a4a', | |||
'font-weight': 'bold' | |||
}); | |||
} | |||
/* ================================================= | |||
نمایش پاسخ صحیح و تحلیل | |||
================================================= */ | |||
if (answer.length) { | |||
answer.css({ | |||
'display': 'block', | |||
'visibility': 'visible', | |||
'opacity': '1' | |||
}); | |||
} | } | ||
/* ================================================= | |||
قفل کردن همه گزینههای همین تست | |||
================================================= */ | |||
options.prop('disabled', true); | |||
options.css({ | |||
'cursor': 'default' | |||
}); | |||
/* | |||
* علامت پایان تست | |||
*/ | |||
test | |||
.addClass('wd-test-finished') | |||
.attr('data-answered', 'true'); | |||
/* | |||
* ثبت وضعیت روی خود option container | |||
*/ | |||
test.find('.wd-test-options').first() | |||
.attr('data-answered', 'true'); | |||
} | } | ||
| خط ۲۸۲: | خط ۵۳۸: | ||
/ | /* ========================================================= | ||
مشاهده / بستن متن نسخه قانون | |||
========================================================= */ | |||
$(document).on( | |||
$( document ).on( | |||
'click', | 'click', | ||
'.wd-version-toggle', | '.wd-version-toggle', | ||
function () { | function () { | ||
var button = $( this ); | var button = $(this); | ||
var card = button.closest( | var card = button.closest( | ||
| خط ۳۲۳: | خط ۵۶۶: | ||
if (text.is(':visible')) { | |||
if ( | |||
text | text.stop(true, true) | ||
.slideUp(180); | |||
.slideUp( | |||
icon.text( | icon.text('+'); | ||
label.text( | label.text('مشاهده متن'); | ||
} | } | ||
else { | else { | ||
text | text.stop(true, true) | ||
.slideDown(220); | |||
.slideDown( | |||
icon.text( | icon.text('−'); | ||
label.text( | label.text('بستن متن'); | ||
} | } | ||
| خط ۳۸۲: | خط ۵۹۲: | ||
})(); | |||
/* ========================================================= | |||
WIKIDAD — Persian / Arabic / English digit normalization | |||
در جستجوی ویکیداد | |||
1 ↔ ١ ↔ ۱ | |||
========================================================= */ | |||
(function () { | |||
function toPersianDigits(value) { | |||
if (!value) { | |||
return value; | |||
} | |||
return value | |||
/* English digits → Persian */ | |||
.replace(/[0-9]/g, function (digit) { | |||
return '۰۱۲۳۴۵۶۷۸۹'[Number(digit)]; | |||
}) | |||
/* Arabic-Indic digits → Persian */ | |||
'. | .replace(/[٠-٩]/g, function (digit) { | ||
); | return '۰۱۲۳۴۵۶۷۸۹'[digit.charCodeAt(0) - 0x0660]; | ||
}); | |||
} | |||
function normalizeSearchInput(input) { | |||
if (!input || typeof input.value !== 'string') { | |||
return; | |||
} | |||
var normalized = toPersianDigits(input.value); | |||
if (normalized !== input.value) { | |||
input.value = normalized; | |||
/* | /* برای سیستمهای autocomplete */ | ||
input.dispatchEvent(new Event('input', { | |||
bubbles: true | |||
})); | |||
} | |||
} | |||
function attachSearchNormalization() { | |||
var inputs = document.querySelectorAll( | |||
'input[name="search"],' + | |||
'input[type="search"],' + | |||
'#searchInput,' + | |||
'#mw-searchInput' | |||
); | |||
inputs.forEach(function (input) { | |||
if (input.dataset.wikidadDigitNormalized === '1') { | |||
return; | |||
} | } | ||
input.dataset.wikidadDigitNormalized = '1'; | |||
/* | /* هنگام تایپ یا Paste */ | ||
input.addEventListener('input', function () { | |||
normalizeSearchInput(input); | |||
}); | |||
/* قبل از ارسال فرم */ | |||
input.addEventListener('blur', function () { | |||
normalizeSearchInput(input); | |||
}); | |||
}); | |||
} | |||
/* بارگذاری اولیه */ | |||
attachSearchNormalization(); | |||
/* برای Vector 2022 که بعضی عناصر را بعداً میسازد */ | |||
document.addEventListener('focusin', function (event) { | |||
var input = event.target; | |||
if ( | |||
input && | |||
input.matches && | |||
input.matches( | |||
'input[name="search"],' + | |||
'input[type="search"],' + | |||
'#searchInput,' + | |||
'#mw-searchInput' | |||
) | |||
) { | |||
normalizeSearchInput(input); | |||
} | } | ||
); | }); | ||
} ); | })(); | ||
نسخهٔ کنونی تا ۲۴ سپتامبر ۲۰۲۶، ساعت ۰۳:۵۸
(function () {
/* =========================================================
سیستم تستهای تعاملی ویکیداد
نسخه مرکزی — هماهنگ با Master ماده ۱۵
========================================================= */
'use strict';
/* =========================================================
ابزارهای کمکی
========================================================= */
function getTestOptions(test) {
return test.find('.wd-test-option').filter(function () {
return $(this).closest('.wd-test')[0] === test[0];
});
}
function getTestResult(test) {
return test.find('.wd-test-result').filter(function () {
return $(this).closest('.wd-test')[0] === test[0];
}).first();
}
function getTestAnswer(test) {
return test.find('.wd-test-answer').filter(function () {
return $(this).closest('.wd-test')[0] === test[0];
}).first();
}
function normalizeAnswer(value) {
value = $.trim(value || '');
/*
* پاسخ میتواند مستقیماً «الف» باشد
* یا در بعضی شرایط با فاصله/نشانه همراه باشد.
*/
var match = value.match(
/^(الف|ب|ج|د|ه|هـ|و)/
);
if (match) {
return match[1];
}
return value.charAt(0);
}
/* =========================================================
آمادهسازی تستها
========================================================= */
function initWikidadTests() {
$('.wd-test').each(function () {
var test = $(this);
if (test.hasClass('wd-test-ready')) {
return;
}
test.addClass('wd-test-ready');
var options = getTestOptions(test);
/*
* اگر تست قبلاً پاسخ داده شده باشد،
* وضعیت را حفظ میکنیم.
*/
if (test.hasClass('wd-test-finished')) {
options.prop('disabled', true);
return;
}
/*
* طراحی پایه گزینهها
*
* رنگها مطابق طراحی ماده ۱۵
*/
options.css({
'display': 'block',
'width': '100%',
'box-sizing': 'border-box',
'padding': '10px 13px',
'margin': '7px 0',
'border': '1px solid #d9dfdc',
'border-radius': '6px',
'background': '#ffffff',
'color': '#455a64',
'cursor': 'pointer',
'font-family': 'inherit',
'font-size': '13.5px',
'line-height': '1.9',
'text-align': 'right',
'direction': 'rtl',
'transition':
'background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease'
});
/*
* نتیجه در شروع مخفی باشد.
*/
var result = getTestResult(test);
result.css({
'display': 'none',
'visibility': 'hidden',
'opacity': '0'
});
/*
* پاسخ و تحلیل در شروع مخفی باشد.
*/
var answer = getTestAnswer(test);
answer.css({
'display': 'none',
'visibility': 'hidden',
'opacity': '0'
});
});
}
/* =========================================================
اجرای آمادهسازی
========================================================= */
$(document).ready(function () {
initWikidadTests();
});
/* =========================================================
افکت ساده هنگام قرار گرفتن موس روی گزینه
========================================================= */
$(document).on(
'mouseenter',
'.wd-test:not(.wd-test-finished) .wd-test-option',
function () {
var option = $(this);
if (option.prop('disabled')) {
return;
}
option.css({
'background': '#faf8fc',
'border-color': '#cfc4d9',
'box-shadow': '0 1px 3px rgba(80,60,90,.06)'
});
}
);
$(document).on(
'mouseleave',
'.wd-test:not(.wd-test-finished) .wd-test-option',
function () {
var option = $(this);
if (option.prop('disabled')) {
return;
}
option.css({
'background': '#ffffff',
'border-color': '#d9dfdc',
'box-shadow': 'none'
});
}
);
/* =========================================================
کلیک روی گزینه
========================================================= */
$(document).on(
'click',
'.wd-test-option',
function (event) {
event.preventDefault();
event.stopPropagation();
var option = $(this);
var test = option.closest('.wd-test');
/*
* تست معتبر نیست.
*/
if (!test.length) {
return;
}
/*
* اگر قبلاً پاسخ داده شده،
* دیگر امکان تغییر پاسخ وجود ندارد.
*/
if (test.hasClass('wd-test-finished')) {
return;
}
/*
* جلوگیری از چندبار کلیک سریع
*/
if (option.prop('disabled')) {
return;
}
/*
* گزینههای همین تست
*/
var options = getTestOptions(test);
/*
* پاسخ صحیح از data-answer الگوی تست
*/
var correctAnswer = normalizeAnswer(
test.attr('data-answer') || ''
);
/*
* اگر data-answer خالی بود،
* از data-correct خود گزینهها استفاده میکنیم.
*
* این fallback باعث میشود ساختار جدید
* Python نیز مستقیماً قابل استفاده باشد.
*/
if (!correctAnswer) {
var optionContainer =
option.closest('.wd-test-options');
correctAnswer = normalizeAnswer(
optionContainer.attr('data-correct') || ''
);
}
/*
* پاسخ انتخابشده
*/
var selectedAnswer = normalizeAnswer(
option.attr('data-option') || ''
);
/*
* اگر data-option وجود نداشت،
* از متن گزینه استخراج شود.
*/
if (!selectedAnswer) {
selectedAnswer = normalizeAnswer(
option.text()
);
}
/*
* تعیین درست / غلط
*/
var isCorrect =
selectedAnswer === correctAnswer;
/*
* نتیجه و پاسخ همین تست
*/
var result = getTestResult(test);
var resultMessage =
result.find('.wd-test-result-message').first();
var answer = getTestAnswer(test);
/* =================================================
پاک کردن وضعیت قبلی گزینهها
================================================= */
options.css({
'background': '#ffffff',
'border-color': '#d9dfdc',
'color': '#455a64',
'font-weight': 'normal',
'box-shadow': 'none'
});
/* =================================================
مشخص کردن گزینه انتخابشده
================================================= */
if (isCorrect) {
option.css({
'background': '#edf8f5',
'border-color': '#527d77',
'color': '#405b56',
'font-weight': 'bold',
'box-shadow': '0 1px 3px rgba(82,125,119,.10)'
});
}
else {
option.css({
'background': '#fff2f2',
'border-color': '#b44a4a',
'color': '#9b3838',
'font-weight': 'bold',
'box-shadow': '0 1px 3px rgba(180,74,74,.10)'
});
/*
* پاسخ صحیح را نیز پیدا و سبز میکنیم.
*/
options.each(function () {
var item = $(this);
var itemAnswer =
normalizeAnswer(
item.attr('data-option') || ''
);
if (!itemAnswer) {
itemAnswer =
normalizeAnswer(
item.text()
);
}
if (itemAnswer === correctAnswer) {
item.css({
'background': '#edf8f5',
'border-color': '#527d77',
'color': '#405b56',
'font-weight': 'bold',
'box-shadow':
'0 1px 3px rgba(82,125,119,.10)'
});
}
});
}
/* =================================================
نمایش پیام نتیجه
================================================= */
result.css({
'display': 'block',
'visibility': 'visible',
'opacity': '1',
'padding': '10px 13px',
'border-radius': '6px'
});
if (isCorrect) {
result.css({
'background': '#edf8f5',
'border-right': '3px solid #527d77'
});
resultMessage
.text('✓ پاسخ شما صحیح است.')
.css({
'display': 'block',
'visibility': 'visible',
'opacity': '1',
'color': '#527d77',
'font-weight': 'bold'
});
}
else {
result.css({
'background': '#fff5f5',
'border-right': '3px solid #b44a4a'
});
resultMessage
.text('✕ پاسخ شما نادرست است.')
.css({
'display': 'block',
'visibility': 'visible',
'opacity': '1',
'color': '#b44a4a',
'font-weight': 'bold'
});
}
/* =================================================
نمایش پاسخ صحیح و تحلیل
================================================= */
if (answer.length) {
answer.css({
'display': 'block',
'visibility': 'visible',
'opacity': '1'
});
}
/* =================================================
قفل کردن همه گزینههای همین تست
================================================= */
options.prop('disabled', true);
options.css({
'cursor': 'default'
});
/*
* علامت پایان تست
*/
test
.addClass('wd-test-finished')
.attr('data-answered', 'true');
/*
* ثبت وضعیت روی خود option container
*/
test.find('.wd-test-options').first()
.attr('data-answered', 'true');
}
);
/* =========================================================
مشاهده / بستن متن نسخه قانون
========================================================= */
$(document).on(
'click',
'.wd-version-toggle',
function () {
var button = $(this);
var card = button.closest(
'.wd-version-history-card'
);
var text = card.find(
'.wd-version-text'
);
var icon = button.find(
'.wd-version-toggle-icon'
);
var label = button.find(
'.wd-version-toggle-label'
);
if (text.is(':visible')) {
text.stop(true, true)
.slideUp(180);
icon.text('+');
label.text('مشاهده متن');
}
else {
text.stop(true, true)
.slideDown(220);
icon.text('−');
label.text('بستن متن');
}
}
);
})();
/* =========================================================
WIKIDAD — Persian / Arabic / English digit normalization
در جستجوی ویکیداد
1 ↔ ١ ↔ ۱
========================================================= */
(function () {
function toPersianDigits(value) {
if (!value) {
return value;
}
return value
/* English digits → Persian */
.replace(/[0-9]/g, function (digit) {
return '۰۱۲۳۴۵۶۷۸۹'[Number(digit)];
})
/* Arabic-Indic digits → Persian */
.replace(/[٠-٩]/g, function (digit) {
return '۰۱۲۳۴۵۶۷۸۹'[digit.charCodeAt(0) - 0x0660];
});
}
function normalizeSearchInput(input) {
if (!input || typeof input.value !== 'string') {
return;
}
var normalized = toPersianDigits(input.value);
if (normalized !== input.value) {
input.value = normalized;
/* برای سیستمهای autocomplete */
input.dispatchEvent(new Event('input', {
bubbles: true
}));
}
}
function attachSearchNormalization() {
var inputs = document.querySelectorAll(
'input[name="search"],' +
'input[type="search"],' +
'#searchInput,' +
'#mw-searchInput'
);
inputs.forEach(function (input) {
if (input.dataset.wikidadDigitNormalized === '1') {
return;
}
input.dataset.wikidadDigitNormalized = '1';
/* هنگام تایپ یا Paste */
input.addEventListener('input', function () {
normalizeSearchInput(input);
});
/* قبل از ارسال فرم */
input.addEventListener('blur', function () {
normalizeSearchInput(input);
});
});
}
/* بارگذاری اولیه */
attachSearchNormalization();
/* برای Vector 2022 که بعضی عناصر را بعداً میسازد */
document.addEventListener('focusin', function (event) {
var input = event.target;
if (
input &&
input.matches &&
input.matches(
'input[name="search"],' +
'input[type="search"],' +
'#searchInput,' +
'#mw-searchInput'
)
) {
normalizeSearchInput(input);
}
});
})();