Lompat ke isi

MediaWiki:Common.js: Perbedaan antara revisi

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


Baris 8: Baris 9:


     'use strict';
     'use strict';


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


        /* 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;
         }
         }


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


         var navigation = document.createElement('nav');
         var navigation =
            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 39: Baris 51:
             <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 47: Baris 62:
                         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 82: Baris 103:




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


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 90: Baris 113:
                         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 113: Baris 142:




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


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 121: Baris 152:
                         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 156: Baris 193:




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


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 164: Baris 203:
                         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 191: Baris 236:




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


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 199: Baris 246:
                         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 218: Baris 271:




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


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 226: Baris 281:
                         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 249: Baris 310:




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


                 <div class="maliki-nav-item has-dropdown">
                 <div class="maliki-nav-item has-dropdown">
Baris 257: Baris 320:
                         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 278: Baris 347:


                 </div>
                 </div>


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


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


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




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


         var dropdownButtons =
         var dropdownButtons =
             navigation.querySelectorAll('.maliki-nav-button');
             navigation.querySelectorAll(
                '.maliki-nav-button'
            );
 
 
        dropdownButtons.forEach(
            function (button) {
 
                button.addEventListener(
                    'click',
                    function (event) {
 
                        event.stopPropagation();
 


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


        dropdownButtons.forEach(function (button) {


            button.addEventListener('click', function (event) {
                        var isOpen =
                            parent.classList.contains(
                                'is-open'
                            );


                event.stopPropagation();


                var parent =
                        /*
                    button.closest('.maliki-nav-item');
                        * Tutup semua menu
                        */


                var isOpen =
                        navigation
                    parent.classList.contains('is-open');
                            .querySelectorAll(
                                '.maliki-nav-item'
                            )
                            .forEach(
                                function (item) {


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


                /* Tutup semua dropdown */


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


                        item.classList.remove('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
                        */


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


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


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


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


                }
                        }


            });
                    }
                );


         });
            }
         );




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


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


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


                    item.classList.remove('is-open');
                            var button =
                                item.querySelector(
                                    '.maliki-nav-button'
                                );


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


                    if (button) {
                            if (button) {


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


                    }
                            }


                });
                        }
                    );


         });
            }
         );




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


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


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


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


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


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


         });
                        }
                    );
 
            }
         );


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


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


         document.addEventListener(
         document.addEventListener(

Revisi per 27 September 2026 07.00

/* =========================================================
   MALIKI ENCYCLOPEDIA
   HEADER NAVIGATION — PHASE 1B.1
   Vector 2022
   Navigation positioned after Vector header
   ========================================================= */

(function () {

    'use strict';


    function createMalikiNavigation() {

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


        /* =====================================================
           CARI HEADER VECTOR 2022
           ===================================================== */

        var headerContainer =
            document.querySelector('.vector-header-container');

        if (!headerContainer) {
            return;
        }


        /* =====================================================
           BUAT 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 MALIKI
                     ========================= -->

                <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>

        `;


        /* =====================================================
           LETAKKAN NAVIGASI
           SETELAH VECTOR HEADER
           ===================================================== */

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


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

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

                        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 menu 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'
                                );

                            }

                        }
                    );

            }
        );


        /* =====================================================
           RESPONSIVE
           ===================================================== */

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

    }

})();