diff --git a/assets/src/js/public/search-form.js b/assets/src/js/public/search-form.js index 536917867e..561a071995 100644 --- a/assets/src/js/public/search-form.js +++ b/assets/src/js/public/search-form.js @@ -933,28 +933,53 @@ document.addEventListener('DOMContentLoaded', () => { }, 300); // Reset search form values - if (this.closest('.directorist-contents-wrap')) { - let searchForm = this.closest( - '.directorist-contents-wrap' - ).querySelector('.directorist-search-form'); + const resetTargets = new Set(); + const searchModal = this.closest('.directorist-search-modal'); + + if (searchModal) { + resetTargets.add(searchModal); + searchModal + .querySelectorAll("input[type='checkbox'], input[type='radio']") + .forEach((input) => { + input.checked = false; + input + .closest('.directorist-search-field') + ?.classList.remove('input-has-value', 'input-is-focused'); + }); + searchModal.querySelectorAll('select').forEach((select) => { + select.selectedIndex = 0; + select + .closest('.directorist-search-field') + ?.classList.remove('input-has-value', 'input-is-focused'); + $(select).trigger('change'); + }); + } + + const contentsWrap = this.closest('.directorist-contents-wrap'); + if (contentsWrap) { + let searchForm = contentsWrap.querySelector( + '.directorist-search-form' + ); if (searchForm) { - adsFormReset(searchForm); + resetTargets.add(searchForm); } - let advanceSearchForm = this.closest( - '.directorist-contents-wrap' - ).querySelector('.directorist-advanced-filter__form'); + let advanceSearchForm = contentsWrap.querySelector( + '.directorist-advanced-filter__form' + ); if (advanceSearchForm) { - adsFormReset(advanceSearchForm); + resetTargets.add(advanceSearchForm); } - let advanceSearchFilter = this.closest( - '.directorist-contents-wrap' - ).querySelector('.directorist-advanced-filter__advanced'); + let advanceSearchFilter = contentsWrap.querySelector( + '.directorist-advanced-filter__advanced' + ); if (advanceSearchFilter) { - adsFormReset(advanceSearchFilter); + resetTargets.add(advanceSearchFilter); } } + + resetTargets.forEach(adsFormReset); }); } diff --git a/includes/model/Listings.php b/includes/model/Listings.php index 17a3ac4636..11ba76a450 100644 --- a/includes/model/Listings.php +++ b/includes/model/Listings.php @@ -1499,6 +1499,10 @@ public function get_current_listing_type() { if ( is_singular( ATBDP_POST_TYPE ) ) { $directory = get_post_meta( get_the_ID(), '_directory_type', true ); + } else if ( 'listing' === $this->type && ! empty( $this->default_directory_type ) ) { + // An archive instance with an explicitly configured default directory + // must not inherit a directory value from another request context. + $directory = $this->default_directory_type; } else if ( ! empty( $_REQUEST['directory_type'] ) ) { $directory = sanitize_text_field( wp_unslash( $_REQUEST['directory_type'] ) ); } else if ( ! empty( $this->default_directory_type ) ) {