MediaWiki: Tweeki.js: Perbedaan antara revisi

Dari GBI Danau Bogor Raya
Lompat ke: navigasi, cari
Leo (bicara | kontrib)
k Alert/popover lewat jembatan jQuery Bootstrap (global bootstrap tidak ada di Tweeki)
Leo (bicara | kontrib)
k Tooltip/alert/popover dalam satu blok ready, dicek dulu (plugin jQuery Bootstrap bisa belum terdaftar)
Baris 3: Baris 3:
   blok itu dilewati. Dulu satu error menghentikan seluruh file. */
   blok itu dilewati. Dulu satu error menghentikan seluruh file. */


// Bootstrap 5: Tweeki tidak membuka global `bootstrap`, pakai jembatan jQuery-nya.
// Plugin jQuery-nya bisa belum terdaftar (urutan muat), jadi dicek dulu.
$(function () {
$(function () {
   $('[data-toggle="tooltip"]').tooltip();
   if ($.fn.tooltip) {
    $('[data-toggle="tooltip"]').tooltip();
  }
  if ($.fn.alert) {
    $('.alert').alert();
  }
  if ($.fn.popover) {
    $('[data-bs-toggle="popover"]').popover();
  }
});
});


Baris 40: Baris 50:
   });
   });
}());
}());
// Bootstrap 5: Tweeki tidak membuka global `bootstrap`, pakai jembatan jQuery-nya
if ($.fn.alert) {
  $('.alert').alert();
}
if ($.fn.popover) {
  $('[data-bs-toggle="popover"]').popover();
}





Revisi per 30 Oktober 2026 17.10

/* 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. */

// Bootstrap 5: Tweeki tidak membuka global `bootstrap`, pakai jembatan jQuery-nya.
// Plugin jQuery-nya bisa belum terdaftar (urutan muat), jadi dicek dulu.
$(function () {
  if ($.fn.tooltip) {
    $('[data-toggle="tooltip"]').tooltip();
  }
  if ($.fn.alert) {
    $('.alert').alert();
  }
  if ($.fn.popover) {
    $('[data-bs-toggle="popover"]').popover();
  }
});

// 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);
  });
}());


// 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();
      }
    });
  }
});