Sha256: 18da8a7d19f52f982a4f905d8278550856b1385469be243339a2dacd9bda9a28

Contents?: true

Size: 1.65 KB

Versions: 22

Compression:

Stored size: 1.65 KB

Contents

import * as L from "leaflet";
import "src/decidim/map/icon"
import MapControllerRegistry from "src/decidim/map/controller_registry"

export default class MapController {
  constructor(mapId, config) {
    // Remove the old map if there is already one with the same ID.
    const old = MapControllerRegistry.getController(mapId);
    if (old) {
      old.remove();
    }

    this.mapId = mapId;
    this.config = $.extend({
      popupTemplateId: "marker-popup",
      markerColor: "#ef604d"
    }, config);

    this.map = null;
    this.eventHandlers = {};

    MapControllerRegistry.setController(mapId, this);
  }

  getConfig() {
    return this.config;
  }

  getMap() {
    return this.map;
  }

  load() {
    this.map = L.map(this.mapId);

    this.map.scrollWheelZoom.disable();

    // Fix the keyboard navigation on the map
    this.map.on("popupopen", (ev) => {
      const $popup = $(ev.popup.getElement());
      $popup.attr("tabindex", 0).focus();
    });
    this.map.on("popupclose", (ev) => {
      $(ev.popup._source._icon).focus();
    });

    return this.map;
  }

  // Override this in the specific map controllers.
  start() {}

  remove() {
    if (this.map) {
      this.map.remove();
      this.map = null;
    }
  }

  createIcon() {
    return new L.DivIcon.SVGIcon.DecidimIcon({
      fillColor: this.config.markerColor,
      iconSize: L.point(28, 36)
    });
  }

  setEventHandler(name, callback) {
    this.eventHandlers[name] = callback;
  }

  triggerEvent(eventName, payload) {
    const handler = this.eventHandlers[eventName];
    if (typeof handler === "function") {
      return Reflect.apply(handler, this, payload);
    }
    return null;
  }
}

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
decidim-core-0.27.3 app/packs/src/decidim/map/controller.js
decidim-core-0.26.7 app/packs/src/decidim/map/controller.js
decidim-core-0.26.5 app/packs/src/decidim/map/controller.js
decidim-core-0.27.2 app/packs/src/decidim/map/controller.js
decidim-core-0.27.1 app/packs/src/decidim/map/controller.js
decidim-core-0.26.4 app/packs/src/decidim/map/controller.js
decidim-core-0.27.0 app/packs/src/decidim/map/controller.js
decidim-core-0.26.3 app/packs/src/decidim/map/controller.js
decidim-core-0.27.0.rc2 app/packs/src/decidim/map/controller.js
decidim-core-0.27.0.rc1 app/packs/src/decidim/map/controller.js
decidim-core-0.26.2 app/packs/src/decidim/map/controller.js
decidim-core-0.26.1 app/packs/src/decidim/map/controller.js
decidim-core-0.26.0 app/packs/src/decidim/map/controller.js
decidim-core-0.26.0.rc2 app/packs/src/decidim/map/controller.js
decidim-core-0.26.0.rc1 app/packs/src/decidim/map/controller.js
decidim-core-0.25.2 app/packs/src/decidim/map/controller.js
decidim-core-0.25.1 app/packs/src/decidim/map/controller.js
decidim-core-0.25.0 app/packs/src/decidim/map/controller.js
decidim-core-0.25.0.rc4 app/packs/src/decidim/map/controller.js
decidim-core-0.25.0.rc3 app/packs/src/decidim/map/controller.js