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