diff --git a/assets/js/main.js b/assets/js/main.js index f038b6f706001e5ba0413ceceda35c049d148d22..cdc1ac5627e0fc0f5cdd99f5c75fc615d811c008 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -1,3 +1,4 @@ import './vendors/lightbox'; import './vendors/carousel'; -import './theme'; +import './theme/'; +import './theme/blocks/partners'; diff --git a/assets/js/theme/blocks/partners-map.js b/assets/js/theme/blocks/partners-map.js deleted file mode 100644 index 6d4d487a887866b5a54fdd036c278319c7c8037f..0000000000000000000000000000000000000000 --- a/assets/js/theme/blocks/partners-map.js +++ /dev/null @@ -1,48 +0,0 @@ -// const partnersMap = document.querySelectorAll('.block-partners--map'); - -// class BlockPartners { -// constructor (block) { -// this.block = block; -// this.content = this.block.querySelector('#map'); -// this.partnersList = this.content.querySelectorAll('.organization') - -// this.themeMarker = L.icon({ -// iconUrl: '/assets/images/map-marker.svg', -// iconSize: [26, 17], -// }); - -// this.listen(); -// } - -// listen () { -// console.log("lalala") -// this.map = L.map('map').setView([2.3246629, 48.8862136], 13); - -// L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { -// maxZoom: 19, -// attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' -// }).addTo(map); - -// this.partnersList.forEach((partner) => { -// let latitude = parseFloat(partner.getAttribute('data-latitude')), -// longitude = parseFloat(partner.getAttribute('data-longitude')); - -// if (!!latitude && !!longitude) { -// setLocation = [latitude, longitude]; -// console.log(setLocation) -// } -// newMarker(setLocation); -// }); -// } -// newMarker(setLocation) { -// var marker = new L.marker(setLocation, { -// draggable: false -// }); -// map.addLayer(marker); -// } - -// } - -// partnersMap.forEach((partners) => { -// new BlockPartners(partners); -// }); diff --git a/assets/js/theme/blocks/partners.js b/assets/js/theme/blocks/partners.js new file mode 100644 index 0000000000000000000000000000000000000000..63bac378d660af4ee772bcde6e8a1ba01181ea10 --- /dev/null +++ b/assets/js/theme/blocks/partners.js @@ -0,0 +1,57 @@ +const partnersMaps = document.querySelectorAll('.block-partners--map'); + +class BlockPartners { + constructor (dom) { + this.dom = dom; + this.init(); + } + init() { + this.content = this.dom.querySelector('#map'); + this.partnersList = this.content.querySelectorAll('.organization') + + this.classPartner = 'organization'; + + let map = L.map('map').setView([44.833328, -0.56667], 13); + this.themeMarker = L.icon({ + iconUrl: '/assets/images/map-marker.svg', + iconSize: [17, 26], + }); + + this.listen(map); + } + + listen (map) { + L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { + maxZoom: 19, + attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' + }).addTo(map); + + this.partnersList.forEach((partner) => { + this.setLocation(map, partner); + }); + } + + setLocation(map, partner) { + let latitude = parseFloat(partner.getAttribute('data-latitude')), + longitude = parseFloat(partner.getAttribute('data-longitude')); + + if (!!latitude && !!longitude) { + this.mapLocation = [latitude, longitude]; + } + this.newMarker(this.mapLocation, map, partner); + } + + newMarker(mapLocation, map, partner) { + let marker = new L.marker(mapLocation, { + draggable: false, + icon: this.themeMarker + }); + marker.bindPopup('<article class="' + this.classPartner + '">' + partner.innerHTML + '</article>').openPopup(); + map.addLayer(marker); + } + +} + +partnersMaps.forEach((dom) => { + new BlockPartners(dom); +}); \ No newline at end of file diff --git a/assets/sass/_theme/blocks/partners.sass b/assets/sass/_theme/blocks/partners.sass index 531f9cdc410e781a9ad23ae511161331c0d2da4d..ea9493e92e0df18dabccbf6d12ca208bb2044ea4 100644 --- a/assets/sass/_theme/blocks/partners.sass +++ b/assets/sass/_theme/blocks/partners.sass @@ -26,6 +26,8 @@ &-content-wrapper border-radius: 0 padding: 0 + width: 192px + overflow: hidden .media margin-bottom: 0 h3 a @@ -34,6 +36,7 @@ padding: half($spacing0) &-content margin: 0 + width: 100% z-index: 2 &-close-button z-index: 4 diff --git a/layouts/partials/blocks/templates/partners.html b/layouts/partials/blocks/templates/partners.html index bfd430c1f5983b5c11c98a718613e79f5c61efc3..163780b6e9e2ef2f08eddbf09071557d2d0e0c84 100644 --- a/layouts/partials/blocks/templates/partners.html +++ b/layouts/partials/blocks/templates/partners.html @@ -2,7 +2,8 @@ {{- $position := .block.position -}} {{- $title := .block.title -}} -{{- $layout_class := "block-pages--grid" -}} +{{- $class := "block block-partners" -}} +{{- $layout_class := "block-partners--grid" -}} {{ $logo_index := "logo" }} {{ $longitude := "longitude" }} {{ $latitude := "latitude" }} diff --git a/layouts/partials/blocks/templates/partners/map.html b/layouts/partials/blocks/templates/partners/map.html index f6160d6ee811297408564023ced48307bcbc3cb6..3850b49ead926ed6ee809b430ed42f697e8a8695 100644 --- a/layouts/partials/blocks/templates/partners/map.html +++ b/layouts/partials/blocks/templates/partners/map.html @@ -25,48 +25,4 @@ )}} {{ end }} {{ end -}} -</div> - -<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css" - integrity="sha256-kLaT2GOSpHechhsozzB+flnD+zUyjE2LlfWPgU04xyI=" - crossorigin=""/> -<script src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js" - integrity="sha256-WBkoXOwTeyKclOHuWtc+i2uENFpDZ9YPdf5Hf+D7ewM=" - crossorigin=""></script> - -<script> - var dom = document.querySelector('#map'), - map = L.map('map').setView([44.833328, -0.56667], 13); - let partners = dom.querySelectorAll('.organization') - - const themeMarker = L.icon({ - iconUrl: '/assets/images/map-marker.svg', - iconSize: [17, 26], - }); - - L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { - maxZoom: 19, - attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' - }).addTo(map); - - partners.forEach((partner) => { - let latitude = parseFloat(partner.getAttribute('data-latitude')), - longitude = parseFloat(partner.getAttribute('data-longitude')); - - if (!!latitude && !!longitude) { - setLocation = [latitude, longitude]; - - function newMarker (setLocation) { - var marker = new L.marker(setLocation, { - draggable: false, - icon: themeMarker - }); - marker.bindPopup('<article class="organization">' + partner.innerHTML + '</article>').openPopup(); - map.addLayer(marker); - } - newMarker(setLocation) - } - }); - - -</script> \ No newline at end of file +</div> \ No newline at end of file diff --git a/layouts/partials/footer/js.html b/layouts/partials/footer/js.html index ae6787b91ad30feaa6afeb725c323a0f1f01abc8..52b15937b15268fa52278f9d36d3bd51942d4517 100644 --- a/layouts/partials/footer/js.html +++ b/layouts/partials/footer/js.html @@ -1,2 +1,25 @@ +{{ $isLeafletNeeded := false }} + +{{ if .Params.blocks }} + {{ range .Params.blocks }} + {{ if eq .template "partners"}} + {{ with .data }} + {{ if eq .layout "map" }} + {{ $isLeafletNeeded := true }} + {{ end }} + {{ end }} + {{ end }} + {{ end }} +{{ end }} + +{{ if $isLeafletNeeded = true }} + <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css" + integrity="sha256-kLaT2GOSpHechhsozzB+flnD+zUyjE2LlfWPgU04xyI=" + crossorigin=""/> + <script src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js" + integrity="sha256-WBkoXOwTeyKclOHuWtc+i2uENFpDZ9YPdf5Hf+D7ewM=" + crossorigin=""></script> +{{ end }} + {{ $js := resources.Get "js/main.js" | js.Build (dict "minify" hugo.IsProduction) | fingerprint }} <script src="{{ $js.RelPermalink }}" integrity="{{ $js.Data.Integrity }}"></script>