- Drupal.behaviors.ViewsAjaxView.attach = function () {
- if (drupalSettings && drupalSettings.views && drupalSettings.views.ajaxViews) {
- const ajaxViews = drupalSettings.views.ajaxViews;
- for (const i in ajaxViews) {
- if (ajaxViews.hasOwnProperty(i)) {
- Drupal.views.instances[i] = new Drupal.views.ajaxView(ajaxViews[i]);
- }
+ Drupal.behaviors.ViewsAjaxView.attach = function(context, settings) {
+ if (settings && settings.views && settings.views.ajaxViews) {
+ const {
+ views: { ajaxViews },
+ } = settings;
+ Object.keys(ajaxViews || {}).forEach(i => {
+ Drupal.views.instances[i] = new Drupal.views.ajaxView(ajaxViews[i]);
+ });
+ }
+ };
+ Drupal.behaviors.ViewsAjaxView.detach = (context, settings, trigger) => {
+ if (trigger === 'unload') {
+ if (settings && settings.views && settings.views.ajaxViews) {
+ const {
+ views: { ajaxViews },
+ } = settings;
+ Object.keys(ajaxViews || {}).forEach(i => {
+ const selector = `.js-view-dom-id-${ajaxViews[i].view_dom_id}`;
+ if ($(selector, context).length) {
+ delete Drupal.views.instances[i];
+ delete settings.views.ajaxViews[i];
+ }
+ });