Skip to content
Snippets Groups Projects

Fixes the button duplication error in the map load action javascript.

Merged Jason Murray requested to merge fix-map-load-action into 1.0.x
1 file
+ 16
12
Compare changes
  • Side-by-side
  • Inline
+ 16
12
// Store an array of Backlinks globally and prevent clobbering existing ones.
window.simBackLinks = window.simBackLinks || [];
Drupal.simple_interactive_maps.ajax_load_map = function (elem, config, region) {
const backLinks = [];
// locate the parent map element (with class .interactive_map__wrapper)
const map = jQuery(elem).closest('.interactive_map__wrapper');
@@ -13,23 +15,26 @@ Drupal.simple_interactive_maps.ajax_load_map = function (elem, config, region) {
const targetUrl = '/simple-interactive-maps/ajax';
function buildBackLinks() {
if (backLinks.length > 0) {
let backLink = document.querySelector('.interactive_map__back-link');
if (!backLink && window.simBackLinks.length > 0) {
// Insert a link to load the previous map and insert it above the new map.
const backLink = document.createElement('a');
backLink = document.createElement('a');
backLink.classList.add('interactive_map__back-link');
backLink.classList.add('button');
backLink.href = '#';
backLink.innerHTML = 'Back to previous map';
mapParent.prepend(backLink);
backLink.addEventListener('click', function (e) {
e.preventDefault();
const linkConfig = backLinks.pop();
const linkConfig = window.simBackLinks.pop();
if (window.simBackLinks.length === 0) {
backLink.remove();
}
const backLinkElems = document.querySelectorAll('.interactive_map__back-link');
backLinkElems.forEach((backLinkElem) => {
backLinkElem.remove();
});
const ajaxSettings = {
url: targetUrl,
@@ -40,9 +45,8 @@ Drupal.simple_interactive_maps.ajax_load_map = function (elem, config, region) {
buildBackLinks();
});
});
mapParent.prepend(backLink);
}
}
elem.addEventListener('click', function (e) {
@@ -56,7 +60,7 @@ Drupal.simple_interactive_maps.ajax_load_map = function (elem, config, region) {
},
};
backLinks.push({
window.simBackLinks.push({
map_to_load: map_id,
target_element: config['target_map_id'],
});
Loading