Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / views / js / ajax_view.js
index a10eb837eb9701425512aa126fb8f9272efaac88..95a803d7fec8ab22d42b8a87704f6a5f557318f2 100644 (file)
@@ -7,14 +7,30 @@
 
 (function ($, Drupal, drupalSettings) {
   Drupal.behaviors.ViewsAjaxView = {};
-  Drupal.behaviors.ViewsAjaxView.attach = function () {
-    if (drupalSettings && drupalSettings.views && drupalSettings.views.ajaxViews) {
-      var ajaxViews = drupalSettings.views.ajaxViews;
+  Drupal.behaviors.ViewsAjaxView.attach = function (context, settings) {
+    if (settings && settings.views && settings.views.ajaxViews) {
+      var ajaxViews = settings.views.ajaxViews;
+
       Object.keys(ajaxViews || {}).forEach(function (i) {
         Drupal.views.instances[i] = new Drupal.views.ajaxView(ajaxViews[i]);
       });
     }
   };
+  Drupal.behaviors.ViewsAjaxView.detach = function (context, settings, trigger) {
+    if (trigger === 'unload') {
+      if (settings && settings.views && settings.views.ajaxViews) {
+        var ajaxViews = settings.views.ajaxViews;
+
+        Object.keys(ajaxViews || {}).forEach(function (i) {
+          var selector = '.js-view-dom-id-' + ajaxViews[i].view_dom_id;
+          if ($(selector, context).length) {
+            delete Drupal.views.instances[i];
+            delete settings.views.ajaxViews[i];
+          }
+        });
+      }
+    }
+  };
 
   Drupal.views = {};