# king-addons/51.1.78/includes/extensions/Theme_Builder/script.js

King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder, version 51.1.78. 135 lines.

- Page: https://pluginprobe.com/plugins/king-addons/51.1.78/code/includes/extensions/Theme_Builder/script.js
- Raw: https://pluginprobe.com/plugins/king-addons/51.1.78/raw/includes/extensions/Theme_Builder/script.js
- Modified: 2026-08-25T03:27:10+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/king-addons/51.1.78/code/includes/extensions/Theme_Builder/script.js#L10-L20`.

```javascript
document.addEventListener('DOMContentLoaded', () => {
    const addNewButton = document.getElementById('ka-theme-builder-add-new');
    const addNewEmptyButton = document.getElementById('ka-theme-builder-add-new-empty');
    const addNewModal = document.getElementById('ka-theme-builder-modal');
    const quickModal = document.getElementById('ka-theme-builder-quick-modal');
    const closeButtons = document.querySelectorAll('.ka-tb-modal-close');

    const isOpenClass = 'is-open';

    const openModal = (modal) => {
        if (!modal) return;
        modal.classList.add(isOpenClass);
        modal.setAttribute('aria-hidden', 'false');
    };

    const closeModal = (modal) => {
        if (!modal) return;
        modal.classList.remove(isOpenClass);
        modal.setAttribute('aria-hidden', 'true');
    };

    if (addNewButton) {
        addNewButton.addEventListener('click', (event) => {
            event.preventDefault();
            openModal(addNewModal);
        });
    }

    if (addNewEmptyButton) {
        addNewEmptyButton.addEventListener('click', (event) => {
            event.preventDefault();
            openModal(addNewModal);
        });
    }

    // Type cards: preselect type/location and open create modal
    const typeButtons = document.querySelectorAll('.ka-tb-type');
    const typeSelect = document.getElementById('ka-tb-type');
    const locationSelect = document.getElementById('ka-tb-location');
    typeButtons.forEach((btn) => {
        btn.addEventListener('click', (event) => {
            event.preventDefault();
            const type = btn.getAttribute('data-ka-tb-type');
            const location = btn.getAttribute('data-ka-tb-location');

            if (typeSelect && type) {
                typeSelect.value = type;
            }
            if (locationSelect && location) {
                locationSelect.value = location;
            }
            openModal(addNewModal);
        });
    });

    closeButtons.forEach((button) => {
        button.addEventListener('click', () => {
            closeModal(addNewModal);
            closeModal(quickModal);
        });
    });

    const quickLinks = document.querySelectorAll('.ka-tb-quick-edit');
    const quickPriority = document.getElementById('ka-tb-quick-priority');
    const quickTemplateId = document.getElementById('ka-tb-quick-template-id');
    const quickEnabled = document.getElementById('ka-tb-quick-enabled');

    quickLinks.forEach((link) => {
        link.addEventListener('click', (event) => {
            event.preventDefault();
            const templateId = link.getAttribute('data-template-id');
            const priority = link.getAttribute('data-priority');
            const enabled = link.getAttribute('data-enabled') === '1';

            if (quickTemplateId) {
                quickTemplateId.value = templateId || '';
            }
            if (quickPriority) {
                quickPriority.value = priority || '10';
            }
            if (quickEnabled) {
                quickEnabled.value = enabled ? '1' : '0';
            }

            openModal(quickModal);
        });
    });

    // Backdrop click closes (clicking inside modal does not)
    [addNewModal, quickModal].forEach((modal) => {
        if (!modal) return;
        modal.addEventListener('click', (event) => {
            if (event.target === modal) {
                closeModal(modal);
            }
        });
    });

    // ESC closes any open modal
    document.addEventListener('keydown', (event) => {
        if (event.key !== 'Escape') return;
        closeModal(addNewModal);
        closeModal(quickModal);
    });

    // Dropdown actions
    const closeAllDropdowns = () => {
        document.querySelectorAll('[data-ka-dropdown].is-open').forEach((dd) => dd.classList.remove('is-open'));
    };

    document.addEventListener('click', (event) => {
        const trigger = event.target.closest('.ka-tb-dropdown-trigger');
        if (trigger) {
            const dropdown = trigger.closest('[data-ka-dropdown]');
            if (!dropdown) return;

            const isOpen = dropdown.classList.contains('is-open');
            closeAllDropdowns();
            dropdown.classList.toggle('is-open', !isOpen);
            return;
        }

        // Click inside menu should not close immediately (links will navigate)
        if (event.target.closest('.ka-tb-dropdown-menu')) {
            return;
        }

        closeAllDropdowns();
    });
});





```
