// استبدل الجزء الخاص بـ setupSearchableDropdown في الكود بهذا الإصدار المحسن function setupSearchableDropdown(inputId, dropdownId, hiddenId) { var $input = $('#' + inputId); var $dropdown = $('#' + dropdownId); var $hidden = $('#' + hiddenId); var $options = $dropdown.find('.dropdown-option'); var $overlay = $('#dropdown-overlay'); var isMobile = window.innerWidth <= 768; // متغيرات للتحكم في اللمس var touchStartY = 0; var touchEndY = 0; var isScrolling = false; var touchTimer = null; // إظهار/إخفاء القائمة $input.on('click touchstart', function(e) { e.preventDefault(); e.stopPropagation(); // إغلاق القوائم الأخرى $('.searchable-dropdown').not($dropdown).removeClass('show'); $overlay.removeClass('show'); // فتح/إغلاق القائمة الحالية var isShowing = $dropdown.hasClass('show'); if (!isShowing) { // فتح القائمة if (isMobile) { // على الموبايل: وضع القائمة في وسط الشاشة var windowHeight = $(window).height(); var dropdownHeight = Math.min(250, $options.length * 56); var topPosition = (windowHeight - dropdownHeight) / 2; $dropdown.css({ 'position': 'fixed', 'top': topPosition + 'px', 'left': '10px', 'right': '10px', 'max-height': '250px' }); $overlay.addClass('show'); // منع scroll للصفحة $('body').css('overflow', 'hidden'); } $dropdown.addClass('show'); $input.removeAttr('readonly'); // تركيز على المدخل للبحث (فقط على سطح المكتب) if (!isMobile) { $input.focus(); } } else { // إغلاق القائمة closeDropdown(); } }); // البحث في القائمة $input.on('input', function() { var searchTerm = $(this).val().toLowerCase(); var visibleCount = 0; $options.each(function() { var text = $(this).text().toLowerCase(); if (text.includes(searchTerm) || searchTerm === '') { $(this).show(); visibleCount++; } else { $(this).hide(); } }); // على الموبايل: تعديل حجم القائمة حسب النتائج if (isMobile && $dropdown.hasClass('show')) { var newHeight = Math.min(250, visibleCount * 56); var windowHeight = $(window).height(); var topPosition = (windowHeight - newHeight) / 2; $dropdown.css({ 'top': topPosition + 'px', 'max-height': newHeight + 'px' }); } }); // التعامل مع اللمس بشكل منفصل للموبايل if (isMobile) { // بداية اللمس $options.on('touchstart', function(e) { e.stopPropagation(); touchStartY = e.originalEvent.touches[0].clientY; isScrolling = false; // إضافة تأثير بصري للمس $(this).addClass('touching'); // إزالة التأثير البصري بعد وقت قصير touchTimer = setTimeout(function() { $options.removeClass('touching'); }, 150); }); // حركة اللمس (للكشف عن السكرول) $options.on('touchmove', function(e) { touchEndY = e.originalEvent.touches[0].clientY; var touchDiff = Math.abs(touchEndY - touchStartY); // إذا كانت الحركة أكثر من 10px فهي سكرول if (touchDiff > 10) { isScrolling = true; $(this).removeClass('touching'); if (touchTimer) { clearTimeout(touchTimer); } } }); // نهاية اللمس $options.on('touchend', function(e) { e.preventDefault(); e.stopPropagation(); // إزالة التأثير البصري $(this).removeClass('touching'); if (touchTimer) { clearTimeout(touchTimer); } // فقط إذا لم يكن هناك سكرول if (!isScrolling) { var value = $(this).data('value'); var text = $(this).text(); $hidden.val(value); $input.val(text).attr('readonly', true); // إزالة التحديد السابق وإضافة الجديد $options.removeClass('selected'); $(this).addClass('selected'); // إغلاق القائمة closeDropdown(); // البحث التلقائي عند تغيير الاختيار setTimeout(function() { if (!isSearching) searchJobs(1); }, 100); } // إعادة تعيين متغيرات اللمس touchStartY = 0; touchEndY = 0; isScrolling = false; }); } else { // للسطح المكتب: استخدام click فقط $options.on('click', function(e) { e.preventDefault(); e.stopPropagation(); var value = $(this).data('value'); var text = $(this).text(); $hidden.val(value); $input.val(text).attr('readonly', true); // إزالة التحديد السابق وإضافة الجديد $options.removeClass('selected'); $(this).addClass('selected'); // إغلاق القائمة closeDropdown(); // البحث التلقائي عند تغيير الاختيار setTimeout(function() { if (!isSearching) searchJobs(1); }, 100); }); } // إغلاق القائمة عند النقر على overlay $overlay.on('click touchstart', function(e) { e.preventDefault(); closeDropdown(); }); // إغلاق القائمة عند النقر خارجها (فقط على سطح المكتب) $(document).on('click touchstart', function(e) { if (!isMobile && !$(e.target).closest('.searchable-select').length) { closeDropdown(); } }); // مراقبة تغيير حجم الشاشة $(window).on('resize', function() { var newIsMobile = window.innerWidth <= 768; if (newIsMobile !== isMobile) { isMobile = newIsMobile; closeDropdown(); // إعادة تعيين مستمعات الأحداث $options.off('click touchstart touchmove touchend'); if (isMobile) { // إعادة تعيين مستمعات الموبايل setupMobileListeners(); } else { // إعادة تعيين مستمعات سطح المكتب setupDesktopListeners(); } } }); // دالة إغلاق القائمة function closeDropdown() { $dropdown.removeClass('show'); $overlay.removeClass('show'); $input.attr('readonly', true); $('body').css('overflow', ''); // إعادة scroll للصفحة $options.removeClass('touching'); // إزالة أي تأثيرات بصرية // إعادة تعيين موضع القائمة على سطح المكتب if (!isMobile) { $dropdown.css({ 'position': 'absolute', 'top': '100%', 'left': '0', 'right': '0', 'max-height': '200px' }); } } // تعيين القيمة الأولية var selectedOption = $options.filter('.selected'); if (selectedOption.length) { $input.val(selectedOption.text()); } // منع الزoom على iOS عند التركيز if (/iPad|iPhone|iPod/.test(navigator.userAgent)) { $input.attr('autocomplete', 'off'); $input.attr('autocorrect', 'off'); $input.attr('autocapitalize', 'off'); $input.attr('spellcheck', 'false'); } }