Lompat ke isi

MediaWiki:Common.js: Perbedaan antara revisi

Dari Maliki Encyclopedia
Tidak ada ringkasan suntingan
Tanda: Dikembalikan
Tidak ada ringkasan suntingan
Tanda: Pengembalian manual Dikembalikan
Baris 1: Baris 1:
/* =========================================================
/* =========================================================
   MALIKI ENCYCLOPEDIA
   MALIKI ENCYCLOPEDIA
   HEADER NAVIGATION — PHASE 1B.1
   HEADER NAVIGATION — PHASE 1A
   Vector 2022
   Vector 2022
  Navigation positioned after Vector header
   ========================================================= */
   ========================================================= */


Baris 9: Baris 8:


     'use strict';
     'use strict';


     function createMalikiNavigation() {
     function createMalikiNavigation() {
Baris 18: Baris 16:
         }
         }


        /* Pastikan halaman sudah memiliki header Vector */
        var header = document.querySelector('.vector-header-container');


        /* =====================================================
         if (!header) {
          CARI HEADER VECTOR 2022
          ===================================================== */
 
        var headerContainer =
            document.querySelector('.vector-header-container');
 
         if (!headerContainer) {
             return;
             return;
         }
         }


         /* =====================================================
         /* =====================================================
           BUAT NAVIGASI
           CONTAINER NAVIGASI
           ===================================================== */
           ===================================================== */


         var navigation =
         var navigation = document.createElement('nav');
            document.createElement('nav');
 
        navigation.id =
            'maliki-top-navigation';


        navigation.id = 'maliki-top-navigation';
         navigation.setAttribute(
         navigation.setAttribute(
             'aria-label',
             'aria-label',
             'Navigasi utama Maliki Encyclopedia'
             'Navigasi utama Maliki Encyclopedia'
         );
         );


         navigation.innerHTML = `
         navigation.innerHTML = `
Baris 51: Baris 39:
             <div class="maliki-nav-inner">
             <div class="maliki-nav-inner">


 
                 <!-- ENSIKLOPEDIA -->
                 <!-- =========================
                    ENSIKLOPEDIA
                    ========================= -->


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 62: Baris 47:
                         class="maliki-nav-button"
                         class="maliki-nav-button"
                         aria-expanded="false">
                         aria-expanded="false">
                         Ensiklopedia
                         Ensiklopedia
 
                         <span class="maliki-nav-arrow">⌄</span>
                         <span class="maliki-nav-arrow">
                            ⌄
                        </span>
 
                     </button>
                     </button>


                     <div class="maliki-nav-dropdown">
                     <div class="maliki-nav-dropdown">
Baris 103: Baris 82:




                 <!-- =========================
                 <!-- JELAJAH -->
                    JELAJAH
                    ========================= -->


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 113: Baris 90:
                         class="maliki-nav-button"
                         class="maliki-nav-button"
                         aria-expanded="false">
                         aria-expanded="false">
                         Jelajah
                         Jelajah
 
                         <span class="maliki-nav-arrow">⌄</span>
                         <span class="maliki-nav-arrow">
                            ⌄
                        </span>
 
                     </button>
                     </button>


                     <div class="maliki-nav-dropdown">
                     <div class="maliki-nav-dropdown">
Baris 142: Baris 113:




                 <!-- =========================
                 <!-- BIDANG ILMU -->
                    BIDANG ILMU
                    ========================= -->


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 152: Baris 121:
                         class="maliki-nav-button"
                         class="maliki-nav-button"
                         aria-expanded="false">
                         aria-expanded="false">
                         Bidang Ilmu
                         Bidang Ilmu
 
                         <span class="maliki-nav-arrow">⌄</span>
                         <span class="maliki-nav-arrow">
                            ⌄
                        </span>
 
                     </button>
                     </button>


                     <div class="maliki-nav-dropdown">
                     <div class="maliki-nav-dropdown">
Baris 193: Baris 156:




                 <!-- =========================
                 <!-- ISLAM SAINS -->
                    ISLAM–SAINS
                    ========================= -->


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 203: Baris 164:
                         class="maliki-nav-button"
                         class="maliki-nav-button"
                         aria-expanded="false">
                         aria-expanded="false">
                         Islam–Sains
                         Islam–Sains
 
                         <span class="maliki-nav-arrow">⌄</span>
                         <span class="maliki-nav-arrow">
                            ⌄
                        </span>
 
                     </button>
                     </button>


                     <div class="maliki-nav-dropdown">
                     <div class="maliki-nav-dropdown">
Baris 236: Baris 191:




                 <!-- =========================
                 <!-- KONTRIBUSI -->
                    KONTRIBUSI
                    ========================= -->


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 246: Baris 199:
                         class="maliki-nav-button"
                         class="maliki-nav-button"
                         aria-expanded="false">
                         aria-expanded="false">
                         Kontribusi
                         Kontribusi
 
                         <span class="maliki-nav-arrow">⌄</span>
                         <span class="maliki-nav-arrow">
                            ⌄
                        </span>
 
                     </button>
                     </button>


                     <div class="maliki-nav-dropdown">
                     <div class="maliki-nav-dropdown">
Baris 271: Baris 218:




                 <!-- =========================
                 <!-- MEDIA -->
                    MEDIA
                    ========================= -->


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 281: Baris 226:
                         class="maliki-nav-button"
                         class="maliki-nav-button"
                         aria-expanded="false">
                         aria-expanded="false">
                         Media
                         Media
 
                         <span class="maliki-nav-arrow">⌄</span>
                         <span class="maliki-nav-arrow">
                            ⌄
                        </span>
 
                     </button>
                     </button>


                     <div class="maliki-nav-dropdown">
                     <div class="maliki-nav-dropdown">
Baris 310: Baris 249:




                 <!-- =========================
                 <!-- TENTANG -->
                    TENTANG MALIKI
                    ========================= -->


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 320: Baris 257:
                         class="maliki-nav-button"
                         class="maliki-nav-button"
                         aria-expanded="false">
                         aria-expanded="false">
                         Tentang Maliki
                         Tentang Maliki
 
                         <span class="maliki-nav-arrow">⌄</span>
                         <span class="maliki-nav-arrow">
                            ⌄
                        </span>
 
                     </button>
                     </button>


                     <div class="maliki-nav-dropdown">
                     <div class="maliki-nav-dropdown">
Baris 347: Baris 278:


                 </div>
                 </div>


             </div>
             </div>
Baris 355: Baris 285:


         /* =====================================================
         /* =====================================================
           LETAKKAN NAVIGASI
           MASUKKAN NAVIGASI KE DALAM HEADER
          SETELAH VECTOR HEADER
           ===================================================== */
           ===================================================== */


         headerContainer.parentNode.insertBefore(
         header.appendChild(navigation);
            navigation,
            headerContainer.nextSibling
        );




         /* =====================================================
         /* =====================================================
           DROPDOWN INTERACTION
           INTERAKSI DROPDOWN
           ===================================================== */
           ===================================================== */


         var dropdownButtons =
         var dropdownButtons =
             navigation.querySelectorAll(
             navigation.querySelectorAll('.maliki-nav-button');
                '.maliki-nav-button'
            );




         dropdownButtons.forEach(
         dropdownButtons.forEach(function (button) {
            function (button) {


                button.addEventListener(
            button.addEventListener('click', function (event) {
                    'click',
                    function (event) {


                        event.stopPropagation();
                event.stopPropagation();


                var parent =
                    button.closest('.maliki-nav-item');


                        var parent =
                var isOpen =
                            button.closest(
                    parent.classList.contains('is-open');
                                '.maliki-nav-item'
                            );




                        var isOpen =
                /* Tutup semua dropdown */
                            parent.classList.contains(
                                'is-open'
                            );


                navigation
                    .querySelectorAll('.maliki-nav-item')
                    .forEach(function (item) {


                         /*
                         item.classList.remove('is-open');
                        * Tutup semua menu
                        */


                         navigation
                         var itemButton =
                             .querySelectorAll(
                             item.querySelector('.maliki-nav-button');
                                '.maliki-nav-item'
                            )
                            .forEach(
                                function (item) {


                                    item.classList.remove(
                        if (itemButton) {
                                        'is-open'
                            itemButton.setAttribute(
                                    );
                                'aria-expanded',
 
                                'false'
 
                                    var itemButton =
                                        item.querySelector(
                                            '.maliki-nav-button'
                                        );
 
 
                                    if (itemButton) {
 
                                        itemButton.setAttribute(
                                            'aria-expanded',
                                            'false'
                                        );
 
                                    }
 
                                }
                             );
                             );
                        }


                    });


                        /*
                        * Buka menu yang dipilih
                        */


                        if (!isOpen) {
                /* Buka dropdown yang dipilih */


                            parent.classList.add(
                if (!isOpen) {
                                'is-open'
                            );


                    parent.classList.add('is-open');


                            button.setAttribute(
                    button.setAttribute(
                                'aria-expanded',
                        'aria-expanded',
                                'true'
                        'true'
                            );
                    );


                        }
                }


                    }
            });
                );


            }
        });
        );




Baris 461: Baris 355:
           ===================================================== */
           ===================================================== */


         document.addEventListener(
         document.addEventListener('click', function () {
            'click',
            function () {


                navigation
            navigation
                    .querySelectorAll(
                .querySelectorAll('.maliki-nav-item')
                        '.maliki-nav-item'
                .forEach(function (item) {
                    )
                    .forEach(
                        function (item) {


                            item.classList.remove(
                    item.classList.remove('is-open');
                                'is-open'
                            );


                    var button =
                        item.querySelector('.maliki-nav-button');


                            var button =
                    if (button) {
                                item.querySelector(
                                    '.maliki-nav-button'
                                );


                        button.setAttribute(
                            'aria-expanded',
                            'false'
                        );


                            if (button) {
                    }
 
                                button.setAttribute(
                                    'aria-expanded',
                                    'false'
                                );


                            }
                });


                        }
        });
                    );
 
            }
        );




         /* =====================================================
         /* =====================================================
           RESPONSIVE
           MOBILE / LAYAR KECIL
           ===================================================== */
           ===================================================== */


         window.addEventListener(
         window.addEventListener('resize', function () {
            'resize',
            function () {


                if (window.innerWidth > 800) {
            if (window.innerWidth > 800) {
                    return;
                return;
                }
            }


            navigation
                .querySelectorAll('.maliki-nav-item')
                .forEach(function (item) {


                navigation
                     item.classList.remove('is-open');
                     .querySelectorAll(
                        '.maliki-nav-item'
                    )
                    .forEach(
                        function (item) {


                            item.classList.remove(
                });
                                'is-open'
                            );


                        }
        });
                    );
 
            }
        );


     }
     }
Baris 536: Baris 407:
       ========================================================= */
       ========================================================= */


     if (
     if (document.readyState === 'loading') {
        document.readyState ===
        'loading'
    ) {


         document.addEventListener(
         document.addEventListener(

Revisi per 27 September 2026 06.59

/* =========================================================
   MALIKI ENCYCLOPEDIA
   HEADER NAVIGATION — PHASE 1A
   Vector 2022
   ========================================================= */

(function () {

    'use strict';

    function createMalikiNavigation() {

        /* Jangan membuat menu dua kali */
        if (document.getElementById('maliki-top-navigation')) {
            return;
        }

        /* Pastikan halaman sudah memiliki header Vector */
        var header = document.querySelector('.vector-header-container');

        if (!header) {
            return;
        }

        /* =====================================================
           CONTAINER NAVIGASI
           ===================================================== */

        var navigation = document.createElement('nav');

        navigation.id = 'maliki-top-navigation';
        navigation.setAttribute(
            'aria-label',
            'Navigasi utama Maliki Encyclopedia'
        );

        navigation.innerHTML = `

            <div class="maliki-nav-inner">

                <!-- ENSIKLOPEDIA -->

                <div class="maliki-nav-item has-dropdown">

                    <button
                        type="button"
                        class="maliki-nav-button"
                        aria-expanded="false">
                        Ensiklopedia
                        <span class="maliki-nav-arrow">⌄</span>
                    </button>

                    <div class="maliki-nav-dropdown">

                        <a href="/index.php/Tokoh">
                            Tokoh
                        </a>

                        <a href="/index.php/Konsep">
                            Konsep
                        </a>

                        <a href="/index.php/Karya_Intelektual">
                            Karya Intelektual
                        </a>

                        <a href="/index.php/Lembaga">
                            Lembaga
                        </a>

                        <a href="/index.php/Peristiwa">
                            Peristiwa
                        </a>

                        <a href="/index.php/Tempat">
                            Tempat
                        </a>

                    </div>

                </div>


                <!-- JELAJAH -->

                <div class="maliki-nav-item has-dropdown">

                    <button
                        type="button"
                        class="maliki-nav-button"
                        aria-expanded="false">
                        Jelajah
                        <span class="maliki-nav-arrow">⌄</span>
                    </button>

                    <div class="maliki-nav-dropdown">

                        <a href="/index.php/Maliki:Jelajah_Pengetahuan">
                            Jelajah Pengetahuan
                        </a>

                        <a href="/index.php/Spesial:Halaman_Baru">
                            Pengetahuan Terbaru
                        </a>

                        <a href="/index.php/Kategori:Unggulan">
                            Artikel Unggulan
                        </a>

                    </div>

                </div>


                <!-- BIDANG ILMU -->

                <div class="maliki-nav-item has-dropdown">

                    <button
                        type="button"
                        class="maliki-nav-button"
                        aria-expanded="false">
                        Bidang Ilmu
                        <span class="maliki-nav-arrow">⌄</span>
                    </button>

                    <div class="maliki-nav-dropdown">

                        <a href="/index.php/Kategori:Studi_Islam">
                            Studi Islam
                        </a>

                        <a href="/index.php/Kategori:Pendidikan">
                            Pendidikan
                        </a>

                        <a href="/index.php/Kategori:Sains">
                            Sains
                        </a>

                        <a href="/index.php/Kategori:Kesehatan">
                            Kesehatan
                        </a>

                        <a href="/index.php/Kategori:Humaniora">
                            Humaniora
                        </a>

                        <a href="/index.php/Kategori:Sosial">
                            Sosial
                        </a>

                    </div>

                </div>


                <!-- ISLAM SAINS -->

                <div class="maliki-nav-item has-dropdown">

                    <button
                        type="button"
                        class="maliki-nav-button"
                        aria-expanded="false">
                        Islam–Sains
                        <span class="maliki-nav-arrow">⌄</span>
                    </button>

                    <div class="maliki-nav-dropdown">

                        <a href="/index.php/Kategori:Nilai_dan_Etika">
                            Nilai &amp; Etika
                        </a>

                        <a href="/index.php/Kategori:Perspektif">
                            Perspektif
                        </a>

                        <a href="/index.php/Kategori:Dialog_Keilmuan">
                            Dialog Keilmuan
                        </a>

                        <a href="/index.php/Kategori:Integrasi_Substantif">
                            Integrasi Substantif
                        </a>

                    </div>

                </div>


                <!-- KONTRIBUSI -->

                <div class="maliki-nav-item has-dropdown">

                    <button
                        type="button"
                        class="maliki-nav-button"
                        aria-expanded="false">
                        Kontribusi
                        <span class="maliki-nav-arrow">⌄</span>
                    </button>

                    <div class="maliki-nav-dropdown">

                        <a href="/index.php/Maliki:Pengajuan_Artikel">
                            Mulai Membuat Artikel
                        </a>

                        <a href="/index.php/Maliki:Panduan_Kontributor">
                            Panduan Kontributor
                        </a>

                    </div>

                </div>


                <!-- MEDIA -->

                <div class="maliki-nav-item has-dropdown">

                    <button
                        type="button"
                        class="maliki-nav-button"
                        aria-expanded="false">
                        Media
                        <span class="maliki-nav-arrow">⌄</span>
                    </button>

                    <div class="maliki-nav-dropdown">

                        <a href="/index.php/Kategori:Gambar">
                            Gambar
                        </a>

                        <a href="/index.php/Kategori:Video">
                            Video
                        </a>

                        <a href="/index.php/Maliki:Sumber_Pengetahuan">
                            Sumber Pengetahuan
                        </a>

                    </div>

                </div>


                <!-- TENTANG -->

                <div class="maliki-nav-item has-dropdown">

                    <button
                        type="button"
                        class="maliki-nav-button"
                        aria-expanded="false">
                        Tentang Maliki
                        <span class="maliki-nav-arrow">⌄</span>
                    </button>

                    <div class="maliki-nav-dropdown">

                        <a href="/index.php/Maliki:Tentang">
                            Tentang Maliki Encyclopedia
                        </a>

                        <a href="/index.php/Maliki:UIN_Malang">
                            UIN Maulana Malik Ibrahim Malang
                        </a>

                        <a href="/index.php/Maliki:Tim_Editorial">
                            Tim Editorial
                        </a>

                    </div>

                </div>

            </div>

        `;


        /* =====================================================
           MASUKKAN NAVIGASI KE DALAM HEADER
           ===================================================== */

        header.appendChild(navigation);


        /* =====================================================
           INTERAKSI DROPDOWN
           ===================================================== */

        var dropdownButtons =
            navigation.querySelectorAll('.maliki-nav-button');


        dropdownButtons.forEach(function (button) {

            button.addEventListener('click', function (event) {

                event.stopPropagation();

                var parent =
                    button.closest('.maliki-nav-item');

                var isOpen =
                    parent.classList.contains('is-open');


                /* Tutup semua dropdown */

                navigation
                    .querySelectorAll('.maliki-nav-item')
                    .forEach(function (item) {

                        item.classList.remove('is-open');

                        var itemButton =
                            item.querySelector('.maliki-nav-button');

                        if (itemButton) {
                            itemButton.setAttribute(
                                'aria-expanded',
                                'false'
                            );
                        }

                    });


                /* Buka dropdown yang dipilih */

                if (!isOpen) {

                    parent.classList.add('is-open');

                    button.setAttribute(
                        'aria-expanded',
                        'true'
                    );

                }

            });

        });


        /* =====================================================
           KLIK DI LUAR MENU
           ===================================================== */

        document.addEventListener('click', function () {

            navigation
                .querySelectorAll('.maliki-nav-item')
                .forEach(function (item) {

                    item.classList.remove('is-open');

                    var button =
                        item.querySelector('.maliki-nav-button');

                    if (button) {

                        button.setAttribute(
                            'aria-expanded',
                            'false'
                        );

                    }

                });

        });


        /* =====================================================
           MOBILE / LAYAR KECIL
           ===================================================== */

        window.addEventListener('resize', function () {

            if (window.innerWidth > 800) {
                return;
            }

            navigation
                .querySelectorAll('.maliki-nav-item')
                .forEach(function (item) {

                    item.classList.remove('is-open');

                });

        });

    }


    /* =========================================================
       JALANKAN SETELAH HALAMAN SIAP
       ========================================================= */

    if (document.readyState === 'loading') {

        document.addEventListener(
            'DOMContentLoaded',
            createMalikiNavigation
        );

    } else {

        createMalikiNavigation();

    }

})();