diff --git a/core/modules/views/js/ajax_view.js b/core/modules/views/js/ajax_view.js index 67601a1..47034eb 100644 --- a/core/modules/views/js/ajax_view.js +++ b/core/modules/views/js/ajax_view.js @@ -51,8 +51,21 @@ this.settings = settings; - this.$exposed_form = $('form#views-exposed-form-' + settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-')); - this.$exposed_form.once('exposed-form').each($.proxy(this.attachExposedFormAjax, this)); + // Check if views form is exposed as a block. + var exposedFormBlocks = drupalSettings.views_exposed_form_blocks; + if (exposedFormBlocks) { + for(var prop in exposedFormBlocks){ + var blockSelector = $('#block-' + exposedFormBlocks[prop].replace(/_/g, '-')); + // Add the ajax to exposed forms. + this.$exposed_form = $('form#views-exposed-form-' + settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-'), blockSelector); + this.$exposed_form.once('exposed-form').each($.proxy(this.attachExposedFormAjax, this)); + } + } + else { + // Add the ajax to exposed forms. + this.$exposed_form = $('form#views-exposed-form-' + settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-')); + this.$exposed_form.once('exposed-form').each($.proxy(this.attachExposedFormAjax, this)); + } this.$view.filter($.proxy(this.filterNestedViews, this)).once('ajax-pager').each($.proxy(this.attachPagerAjax, this)); diff --git a/core/modules/views/views.module b/core/modules/views/views.module index 8b70764..98e812b 100644 --- a/core/modules/views/views.module +++ b/core/modules/views/views.module @@ -861,3 +861,12 @@ function views_view_delete(EntityInterface $entity) { } } } + +/** + * Implements hook_block_view_alter(). + */ +function views_block_view_alter(array &$build, $block) { + if ($build['#base_plugin_id'] == 'views_exposed_filter_block') { + $build['#attached']['drupalSettings']['views_exposed_form_blocks'][$build['#id']] = $build['#id']; + } +} \ No newline at end of file