From 0e1f97eaaa4c4e6b7691208e9986b8a1eeab1d03 Mon Sep 17 00:00:00 2001 From: Zan1456 <62830223+Zan1456@users.noreply.github.com> Date: Wed, 4 Jun 2025 16:43:32 +0200 Subject: [PATCH] search --- search/search.js | 124 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 search/search.js diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..fa3340c --- /dev/null +++ b/search/search.js @@ -0,0 +1,124 @@ +function initializeTransformation() { + const form = document.querySelector('form'); + const autocomplete = document.querySelector('.autocomplete'); + + if (form && autocomplete) { + applyFirkaStyling(); + } else { + setTimeout(initializeTransformation, 500); + } +} + +document.addEventListener('DOMContentLoaded', () => { + setTimeout(initializeTransformation, 1000); +}); + +if (document.readyState === 'complete' || document.readyState === 'interactive') { + setTimeout(initializeTransformation, 1000); +} + +function applyFirkaStyling() { + try { + const theme = cookieManager.get('themePreference') || localStorage.getItem('themePreference') || 'light-blue'; + document.documentElement.setAttribute('data-theme', theme); + if (typeof loadingScreen !== 'undefined') { + loadingScreen.hide(); + } + const originalForm = document.querySelector('form'); + const instituteInput = document.querySelector('.autocomplete'); + const redirectButton = document.getElementById('redirectToInstitute'); + const instituteCodeInput = document.querySelector('.autocomplete-value'); + const requestToken = document.querySelector('input[name="__RequestVerificationToken"]'); + const searchWrapper = document.createElement('div'); + searchWrapper.className = 'firka-search-wrapper'; + const firkaHeader = document.createElement('div'); + firkaHeader.className = 'firka-header'; + firkaHeader.innerHTML = ` +

+ + Firka +

+

Válassz iskolát

+ `; + const formContainer = document.createElement('div'); + formContainer.className = 'firka-form-container'; + const firkaFooter = document.createElement('div'); + firkaFooter.className = 'firka-footer'; + firkaFooter.innerHTML = ` + Adatkezelési tájékoztató + `; + const existingWrapper = document.querySelector('.firka-search-wrapper'); + if (existingWrapper) { + existingWrapper.remove(); + } + searchWrapper.appendChild(firkaHeader); + if (originalForm) { + formContainer.appendChild(originalForm); + searchWrapper.appendChild(formContainer); + } + searchWrapper.appendChild(firkaFooter); + document.body.appendChild(searchWrapper); + setupAutocompleteListeners(); + if (redirectButton) { + redirectButton.addEventListener('click', function(event) { + if (!instituteCodeInput.value) { + event.preventDefault(); + alert('Kérjük, válasszon egy intézményt a folytatáshoz!'); + } + }); + } + observeAutocompleteValue(instituteCodeInput, redirectButton); + } catch (error) { + console.error('Error applying Firka styling:', error); + } +} + +function setupAutocompleteListeners() { + const autocompleteInput = document.querySelector('.autocomplete'); + const autocompleteValue = document.querySelector('.autocomplete-value'); + const redirectButton = document.getElementById('redirectToInstitute'); + + if (autocompleteInput && autocompleteValue) { + const observer = new MutationObserver((mutations) => { + const dropdown = document.querySelector('.autocomplete-dropdown'); + if (dropdown) { + dropdown.classList.add('dropdown-menu'); + const items = dropdown.querySelectorAll('li'); + items.forEach(item => { + item.classList.add('dropdown-item'); + item.addEventListener('click', () => { + if (redirectButton) { + redirectButton.disabled = false; + } + }); + }); + } + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); + } +} + +function observeAutocompleteValue(valueInput, button) { + if (!valueInput || !button) return; + + const observer = new MutationObserver((mutations) => { + button.disabled = !valueInput.value; + }); + + observer.observe(valueInput, { + attributes: true, + attributeFilter: ['value'] + }); + + const checkInterval = setInterval(() => { + if (valueInput.value) { + button.disabled = false; + clearInterval(checkInterval); + } + }, 500); +} \ No newline at end of file