MediaWiki: Tweeki.js: Perbedaan antara revisi
Dari GBI Danau Bogor Raya
Perbaiki parse error baris 40 ("/ /" -> "//"); jaga #myAccordion dan msnry yang tidak ada |
Setiap blok dijaga (elemen/library tidak ada -> dilewati); kategori dipindah utuh; Masonry tunggu library async |
||
| Baris 1: | Baris 1: | ||
/* Any JavaScript here will be loaded for users using the Tweeki skin */ | /* Any JavaScript here will be loaded for users using the Tweeki skin */ | ||
/* Setiap blok dijaga: kalau elemen/library yang dicari tidak ada di halaman ini, | |||
blok itu dilewati. Dulu satu error menghentikan seluruh file. */ | |||
$(function () { | $(function () { | ||
$('[data-toggle="tooltip"]').tooltip() | $('[data-toggle="tooltip"]').tooltip(); | ||
}) | }); | ||
// Header tabel #table-1 menempel saat digulir (butuh #header-fixed di halaman) | |||
var $ | (function () { | ||
var $fixedHeader = $( | var $table = $('#table-1'); | ||
var $fixedHeader = $('#header-fixed'); | |||
if (!$table.length || !$fixedHeader.length) { | |||
return; | |||
} | |||
var tableOffset = $table.offset().top; | |||
$fixedHeader.append($table.children('thead').clone()); | |||
$(window). | $(window).on('scroll', function () { | ||
var offset = $(this).scrollTop(); | |||
if (offset >= tableOffset && $fixedHeader.is(':hidden')) { | |||
$fixedHeader.show(); | |||
} else if (offset < tableOffset) { | |||
$fixedHeader.hide(); | |||
} | |||
}); | |||
}()); | |||
// Pindahkan kategori ke sidebar kanan | |||
(function () { | |||
var one = document.querySelector('#sidebar-right'); | |||
var catlinks = document.querySelector('.catlinks'); | |||
if (!one || !catlinks) { | |||
return; | |||
} | } | ||
// salin ke array dulu: .children ikut berubah saat elemen dipindah (dulu yang terpindah hanya selang-seling) | |||
Array.prototype.slice.call(catlinks.children).forEach(function (child) { | |||
one.appendChild(child); | one.appendChild(child); | ||
}); | }); | ||
}()); | |||
// Bootstrap 5 | // Bootstrap 5 | ||
if (window.bootstrap) { | |||
document.querySelectorAll('.alert').forEach(function (alert) { | |||
new bootstrap.Alert(alert); | |||
}); | }); | ||
document.querySelectorAll('[data-bs-toggle="popover"]').forEach(function (popoverTriggerEl) { | |||
new bootstrap.Popover(popoverTriggerEl); | |||
}); | |||
} | |||
// MASONRY: .grid > .grid-item. Library dimuat async dari CDN (hook BeforePageDisplay di | |||
// LocalSettings), jadi bisa belum tersedia saat file ini jalan -> coba lagi saat window load. | |||
var msnry = null; | |||
function initMasonry() { | |||
var grid = document.querySelector('.grid'); | |||
if (msnry || !grid || typeof Masonry === 'undefined') { | |||
if ( | return; | ||
} | |||
msnry = new Masonry(grid, { | |||
itemSelector: '.grid-item', | |||
percentPosition: true | |||
}); | }); | ||
} | } | ||
initMasonry(); | |||
window.addEventListener('load', initMasonry); | |||
// bootstrap 5.3 accordion/collapse: isi yang tadinya tersembunyi menumpuk -> susun ulang setelah terbuka | |||
// | ['myAccordion', 'collapseMasonry'].forEach(function (id) { | ||
var el = document.getElementById(id); | |||
/ | if (el) { | ||
el.addEventListener('shown.bs.collapse', function () { | |||
if (msnry) { | |||
msnry.layout(); | |||
} | |||
}); | |||
} | |||
}); | }); | ||
Revisi per 30 Oktober 2026 17.08
/* Any JavaScript here will be loaded for users using the Tweeki skin */
/* Setiap blok dijaga: kalau elemen/library yang dicari tidak ada di halaman ini,
blok itu dilewati. Dulu satu error menghentikan seluruh file. */
$(function () {
$('[data-toggle="tooltip"]').tooltip();
});
// Header tabel #table-1 menempel saat digulir (butuh #header-fixed di halaman)
(function () {
var $table = $('#table-1');
var $fixedHeader = $('#header-fixed');
if (!$table.length || !$fixedHeader.length) {
return;
}
var tableOffset = $table.offset().top;
$fixedHeader.append($table.children('thead').clone());
$(window).on('scroll', function () {
var offset = $(this).scrollTop();
if (offset >= tableOffset && $fixedHeader.is(':hidden')) {
$fixedHeader.show();
} else if (offset < tableOffset) {
$fixedHeader.hide();
}
});
}());
// Pindahkan kategori ke sidebar kanan
(function () {
var one = document.querySelector('#sidebar-right');
var catlinks = document.querySelector('.catlinks');
if (!one || !catlinks) {
return;
}
// salin ke array dulu: .children ikut berubah saat elemen dipindah (dulu yang terpindah hanya selang-seling)
Array.prototype.slice.call(catlinks.children).forEach(function (child) {
one.appendChild(child);
});
}());
// Bootstrap 5
if (window.bootstrap) {
document.querySelectorAll('.alert').forEach(function (alert) {
new bootstrap.Alert(alert);
});
document.querySelectorAll('[data-bs-toggle="popover"]').forEach(function (popoverTriggerEl) {
new bootstrap.Popover(popoverTriggerEl);
});
}
// MASONRY: .grid > .grid-item. Library dimuat async dari CDN (hook BeforePageDisplay di
// LocalSettings), jadi bisa belum tersedia saat file ini jalan -> coba lagi saat window load.
var msnry = null;
function initMasonry() {
var grid = document.querySelector('.grid');
if (msnry || !grid || typeof Masonry === 'undefined') {
return;
}
msnry = new Masonry(grid, {
itemSelector: '.grid-item',
percentPosition: true
});
}
initMasonry();
window.addEventListener('load', initMasonry);
// bootstrap 5.3 accordion/collapse: isi yang tadinya tersembunyi menumpuk -> susun ulang setelah terbuka
['myAccordion', 'collapseMasonry'].forEach(function (id) {
var el = document.getElementById(id);
if (el) {
el.addEventListener('shown.bs.collapse', function () {
if (msnry) {
msnry.layout();
}
});
}
});