HEX
Server: LiteSpeed
System: Linux mail.aatilis.ir 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: www (1000)
PHP: 8.3.30
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/soqatland.com/wp-content/themes/woodmart/js/scripts/wc/filterDropdowns.js
/* global woodmart_settings */
(function($) {
	woodmartThemeModule.$document.on('wdShopPageInit', function () {
		woodmartThemeModule.filterDropdowns();
	});

	woodmartThemeModule.filterDropdowns = function() {
		function init() {
			$('.wd-widget-layered-nav-dropdown-form, .wd-product-category-filter-form').each(function() {
				var $form = $(this);
				var $select = $form.find('select');
				var slug = $select.data('slug');

				// Destroy existing select2 instance if it exists.
				if ($select.hasClass('select2-hidden-accessible')) {
					// Remove select2 wrapper and restore original select.
					$select.next('.select2-container').remove();
					$select.removeClass('select2-hidden-accessible');
					$select.removeAttr('data-select2-id aria-hidden tabindex');
					$select.removeData('select2');
					$select.find('option').removeAttr('data-select2-id');
				}

				$select.on( 'change', function() {
					var val = $(this).val();
					$('input[name=filter_' + slug + ']').val(val);
				});

				if ($().selectWoo) {
					$select.selectWoo({
						placeholder            : $select.data('placeholder'),
						minimumResultsForSearch: 5,
						width                  : '100%',
						allowClear             : !$select.attr('multiple'),
						language               : {
							noResults: function() {
								return $select.data('noResults');
							}
						}
					}).on('select2:unselecting', function() {
						$(this).data('unselecting', true);
					}).on('select2:opening', function(e) {
						var $this = $(this);

						if ($this.data('unselecting')) {
							$this.removeData('unselecting');
							e.preventDefault();
						}
					});

					$select.on('select2:selecting', handleSingleLevelCatSelecting);
				}
			});

			$('.wd-widget-layered-nav-dropdown__submit, .wd-product-category-filter-submit').on('click', function() {
				var $this = $(this);

				if (!$this.siblings('select').attr('multiple') || !woodmartThemeModule.$body.hasClass('woodmart-ajax-shop-on')) {
					return;
				}

				ajaxAction($this);

				$this.prop('disabled', true);
			});

			$('.wd-widget-layered-nav-dropdown-form select, .wd-product-category-filter-form select').on('change', function() {
				var $this = $(this);

				if (!woodmartThemeModule.$body.hasClass('woodmart-ajax-shop-on')) {
					$this.parent().submit();
					return;
				}

				if ($this.attr('multiple')) {
					return;
				}

				ajaxAction($this);
			});
		}

		function ajaxAction($element) {
			var $form = $element.parent('.wd-widget-layered-nav-dropdown-form, .wd-product-category-filter-form');

			if (!woodmartThemeModule.$body.hasClass('woodmart-ajax-shop-on') || typeof ($.fn.pjax) === 'undefined') {
				return;
			}

			$.pjax({
				container: '.wd-page-content',
				timeout  : woodmart_settings.pjax_timeout,
				url      : $form.attr('action'),
				data     : $form.serialize(),
				scrollTo : false,
				renderCallback: function(context, html, afterRender) {
					woodmartThemeModule.removeDuplicatedStylesFromHTML(html, function(html) {
						context.html(html);
						afterRender();
						woodmartThemeModule.$document.trigger('wdShopPageInit');
						woodmartThemeModule.$document.trigger('wood-images-loaded');
					});
				}
			});
		}

		function handleSingleLevelCatSelecting(e) {
			var selectedData = e.params.args.data;
			var $select = $(this);
			var $option = $select.find('option[value="' + selectedData.id + '"]');
			var optionClass = $option.attr('class') || '';
			var levelMatch = optionClass.match(/level-(\d+)/);
			if (!levelMatch) return;
			var currentLevel = parseInt(levelMatch[1]);

			var $nextSiblings = $option.nextAll('option');
			$nextSiblings.each(function() {
				var cls = $(this).attr('class') || '';
				var m = cls.match(/level-(\d+)/);
				if (m) {
					var lvl = parseInt(m[1]);
					if (lvl > currentLevel) {
						$(this).prop('selected', false);
					} else if (lvl <= currentLevel) {
						return false;
					}
				}
			});

			if (currentLevel > 0) {
				var ancestors = [];
				var $prevSiblings = $option.prevAll('option');
				var searchLevel = currentLevel - 1;
				
				while (searchLevel >= 0) {
					var foundAncestor = false;
					$prevSiblings.each(function() {
						var cls = $(this).attr('class') || '';
						var m = cls.match(/level-(\d+)/);
						if (m) {
							var lvl = parseInt(m[1]);
							if (lvl === searchLevel) {
								ancestors.unshift($(this));
								foundAncestor = true;
								return false;
							}
						}
					});
					
					if (!foundAncestor) {
						break;
					}
					searchLevel--;
				}

				var hasDirectParentSelected = false;
				if (ancestors.length > 0) {
					var directParent = ancestors[ancestors.length - 1];
					hasDirectParentSelected = directParent.prop('selected');
				}

				ancestors.forEach(function(ancestor) {
					if (hasDirectParentSelected) {
						if (ancestor === ancestors[ancestors.length - 1]) {
							ancestor.prop('selected', false);
						}
					} else {
						ancestor.prop('selected', false);
					}
				});
			}
		}

		init();
	};

	$(document).ready(function() {
		woodmartThemeModule.filterDropdowns();
	});
})(jQuery);