@gouvfr-anct/mediation-numerique
Version:
📚 Bibliothèque pour la cartographie de l’offre de médiation numérique.
1,989 lines • 300 kB
JavaScript
import * as i0 from '@angular/core';
import { InjectionToken, Injectable, EventEmitter, Component, Inject, Input, Output, HostListener, NgModule, Optional } from '@angular/core';
import L, { divIcon, Marker, layerGroup, tileLayer, latLng, geoJSON } from 'leaflet';
import * as _ from 'lodash';
import * as i3 from '@angular/common';
import { CommonModule } from '@angular/common';
import * as i3$1 from '@asymmetrik/ngx-leaflet';
import { LeafletModule } from '@asymmetrik/ngx-leaflet';
import * as i1 from '@angular/router';
import * as i4 from '@angular/flex-layout';
import { FlexModule } from '@angular/flex-layout';
import * as i5 from '@gouvfr-anct/mediation-numerique/shared';
import { ButtonType, SvgIconModule, ButtonModule, ModalModule, DayModule, PhoneModule, DistanceModule, TextInputModalModule } from '@gouvfr-anct/mediation-numerique/shared';
import * as i1$1 from '@angular/forms';
import { ReactiveFormsModule } from '@angular/forms';
import { __awaiter } from 'tslib';
import { trigger, transition, style, animate, state, AUTO_STYLE } from '@angular/animations';
const GEOMETRY_POLYGON_TOKEN = new InjectionToken('geometry-polygon.configuration');
const INITIAL_POSITION_TOKEN = new InjectionToken('initial-position.configuration');
const MARKER_TYPE_TOKEN = new InjectionToken('marker-type.configuration');
const ZOOM_LEVEL_TOKEN = new InjectionToken('zoom-level.configuration');
const GEO_JSON_TOKEN = new InjectionToken('map.geo-json.repository');
var Layers;
(function (Layers) {
Layers["mdm"] = "mdm";
Layers["user"] = "user";
Layers["structure"] = "structure";
})(Layers || (Layers = {}));
var MarkerType;
(function (MarkerType) {
MarkerType[MarkerType["structure"] = 0] = "structure";
MarkerType[MarkerType["mdm"] = 1] = "mdm";
MarkerType[MarkerType["conseillerFrance"] = 2] = "conseillerFrance";
MarkerType[MarkerType["user"] = 3] = "user";
})(MarkerType || (MarkerType = {}));
const markerIcon = divIcon({
className: null,
html: '<svg width="48" height="48" fill="#4C4D53"><use xlink:href="assets/ico/sprite.svg#map-marker"></use></svg>',
iconSize: [48, 48],
iconAnchor: [24, 48],
popupAnchor: [0, -48]
});
const markerIconActive = divIcon({
className: 'on-top-marker',
html: '<svg width="48" height="48"><use xlink:href="assets/ico/sprite.svg#map-markerSelected"></use></svg>',
iconSize: [48, 48],
iconAnchor: [24, 48],
popupAnchor: [0, -48]
});
const markerIconHover = divIcon({
className: 'on-top-marker',
html: '<svg width="48" height="48"><use xlink:href="assets/ico/sprite.svg#map-markerHover"></use></svg>',
iconSize: [48, 48],
iconAnchor: [24, 48],
popupAnchor: [0, -48]
});
const markerIconAddedToList = divIcon({
className: null,
html: '<svg width="48" height="48"><use xlink:href="assets/ico/sprite.svg#map-marker-added"></use></svg>',
iconSize: [48, 48],
iconAnchor: [24, 48],
popupAnchor: [0, -48]
});
const userLocationIcon = divIcon({
className: null,
html: '<svg width="34" height="34"><use xlink:href="assets/ico/sprite.svg#user-location"></use></svg>',
iconSize: [34, 34],
iconAnchor: [17, 0]
});
const markerIconMdm = divIcon({
className: null,
html: '<svg width="19" height="24" fill="#D4C4A9" class="mdm"><use xlink:href="assets/ico/sprite.svg#mdm"></use></svg>',
iconSize: [19, 24],
iconAnchor: [9, 0]
});
const markerIconMdmActive = divIcon({
className: null,
html: '<svg width="19" height="24"><use xlink:href="assets/ico/sprite.svg#mdmActive"></use></svg>',
iconSize: [19, 24],
iconAnchor: [9, 0]
});
const markerIconFranceService = divIcon({
className: null,
html: '<svg width="48" height="48" fill="#ED3939" class="france-service"><use xlink:href="assets/ico/sprite.svg#conseillerFranceService"></use></svg>',
iconSize: [48, 48],
iconAnchor: [24, 48],
popupAnchor: [0, -48]
});
const markerIconFranceServiceActive = divIcon({
className: null,
html: '<svg width="48" height="48"><use xlink:href="assets/ico/sprite.svg#conseillerFranceServiceSelected"></use></svg>',
iconSize: [48, 48],
iconAnchor: [24, 48],
popupAnchor: [0, -48]
});
const markerIconFranceServiceHover = divIcon({
className: null,
html: '<svg width="48" height="48"><use xlink:href="assets/ico/sprite.svg#conseillerFranceServiceHover"></use></svg>',
iconSize: [48, 48],
iconAnchor: [24, 48],
popupAnchor: [0, -48]
});
const markerIconFranceServiceAddedToList = divIcon({
className: null,
html: '<svg width="48" height="48"><use xlink:href="assets/ico/sprite.svg#conseillerFranceServiceAdded"></use></svg>',
iconSize: [48, 48],
iconAnchor: [24, 48],
popupAnchor: [0, -48]
});
class MapService {
constructor() {
this.isMarkerActive = false;
}
createMarker(lat, lon, markerType, id, tooltip) {
const marker = new Marker([lat, lon], {
icon: this.getMarkerIcon(markerType),
attribution: this.getLayerAttributton(markerType)
});
marker.on('mouseclick', (evt) => {
evt.target.openPopup();
});
// handle icon change when select marker
marker.on('click', (evt) => {
evt.target.setIcon(this.getActiveMarkerIcon(markerType));
});
if (tooltip) {
marker.bindPopup(tooltip);
// handle icon change when unselect
marker.getPopup().on('remove', (evt) => {
marker.setIcon(this.getMarkerIcon(markerType));
});
}
if (id) {
MapService.markersList[id] = marker;
}
return marker;
}
getLayerAttributton(markerType) {
if (markerType === MarkerType.mdm) {
return Layers.mdm;
}
else if (markerType === MarkerType.user) {
return Layers.user;
}
else {
return Layers.structure;
}
}
// Note: Marke IconFranceService has been removed temporarly on order to rework on buisness needs.
// This comment is applied for the next 4 methods
getMarkerIcon(markerType) {
switch (markerType) {
case MarkerType.mdm:
return markerIconMdm;
case MarkerType.conseillerFrance:
return markerIcon;
case MarkerType.user:
return userLocationIcon;
default:
return markerIcon;
}
}
getActiveMarkerIcon(markerType) {
switch (markerType) {
case MarkerType.mdm:
return markerIconMdmActive;
case MarkerType.conseillerFrance:
// return markerIconFranceServiceActive;
return markerIconActive;
case MarkerType.user:
return userLocationIcon;
default:
return markerIconActive;
}
}
getAddedToListMarkerIcon(markerType) {
switch (markerType) {
case MarkerType.conseillerFrance:
// return markerIconFranceServiceAddedToList;
return markerIconAddedToList;
case MarkerType.user:
return userLocationIcon;
default:
return markerIconAddedToList;
}
}
getHoverMarkerIcon(markerType) {
switch (markerType) {
case MarkerType.conseillerFrance:
return markerIconHover;
case MarkerType.user:
return userLocationIcon;
default:
return markerIconHover;
}
}
/**
* @param id marker id
*/
setActiveMarker(id, type = MarkerType.structure) {
var _a;
(_a = this.getMarker(id)) === null || _a === void 0 ? void 0 : _a.setIcon(this.getHoverMarkerIcon(type));
}
setAddedToListMarker(id, type = MarkerType.structure) {
this.getMarker(id).setIcon(this.getAddedToListMarkerIcon(type));
}
setUnactiveMarker(id, type = MarkerType.structure) {
var _a;
// To skip mouseleave when user emit click on structure list
(_a = this.getMarker(id)) === null || _a === void 0 ? void 0 : _a.setIcon(this.getMarkerIcon(type));
this.isMarkerActive = false;
}
/**
* Set a tooltip
* @param id markerId
* @param html html to display
*/
setToolTip(id, html) {
this.getMarker(id).bindTooltip(html);
}
/**
* Set a marker as selected by changing icon color
* @param id markerId
* @param html html to display
*/
setSelectedMarker(id, type = MarkerType.structure) {
var _a;
if (id) {
(_a = this.getMarker(id)) === null || _a === void 0 ? void 0 : _a.setIcon(this.getActiveMarkerIcon(type));
this.isMarkerActive = true;
}
}
/**
* Set a marker as selected by changing icon color
* @param id markerId
* @param html html to display
*/
setDefaultMarker(id, type = MarkerType.structure) {
if (id) {
this.getMarker(id).setIcon(this.getMarkerIcon(type));
}
}
/**
* Get marker by id
*/
getMarker(id) {
return MapService.markersList[id] ? MapService.markersList[id] : null;
}
cleanMap(map) {
MapService.markersList = {};
if (map) {
map.eachLayer((layer) => {
if (layer instanceof Marker && layer.options.attribution == Layers.structure) {
map.removeLayer(layer);
}
});
}
return map;
}
}
MapService.markersList = {};
MapService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
MapService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MapService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MapService, decorators: [{
type: Injectable
}] });
class MapComponent {
constructor(metropole, markerType, zoomLevel, initialPosition, geoJsonService, mapService) {
this.metropole = metropole;
this.markerType = markerType;
this.zoomLevel = zoomLevel;
this.initialPosition = initialPosition;
this.geoJsonService = geoJsonService;
this.mapService = mapService;
this.isOrientationForm = false;
this.structures = [];
this.structuresToPrint = [];
this.selectedStructure = new EventEmitter();
this.orientationButtonClick = new EventEmitter();
this.zoomOptions = { animate: true, duration: 0.5 };
this.initializeMapOptions();
}
// Add listener on the popup button to show details of structure
clickout(event) {
if (event.target.classList.contains('btnShowDetails')) {
this.selectedStructure.emit(this.currentStructure);
}
if (event.target.classList.contains('add')) {
this.orientationButtonClick.emit(this.currentStructure);
this.getStructuresPositions(this.structures);
}
}
ngOnChanges(changes) {
var _a;
if (changes.searchedValue && !changes.searchedValue.firstChange) {
if (changes.searchedValue.currentValue) {
this.processTownCoordinate(changes.searchedValue.currentValue);
}
else {
this.map.setView(this.mapOptions.center, this.mapOptions.zoom);
}
}
if (changes.isMapPhone) {
if (this.isMapPhone) {
setTimeout(() => {
this.map.invalidateSize();
}, 0);
}
}
if (changes.structures && this.map) {
this.handleStructurePosition(changes.structures.previousValue);
}
// Handle map marker tooltip
if (changes.toogleToolTipId && changes.toogleToolTipId.currentValue !== changes.toogleToolTipId.previousValue) {
if (changes.toogleToolTipId.previousValue !== undefined) {
if (this.isToPrint(changes.toogleToolTipId.previousValue)) {
this.mapService.setAddedToListMarker(changes.toogleToolTipId.previousValue, this.getMarkerTypeByStructureId(changes.toogleToolTipId.previousValue));
}
else {
this.mapService.setUnactiveMarker(changes.toogleToolTipId.previousValue, this.getMarkerTypeByStructureId(changes.toogleToolTipId.previousValue));
}
}
if (changes.toogleToolTipId.currentValue !== undefined) {
this.mapService.setActiveMarker(changes.toogleToolTipId.currentValue, this.getMarkerTypeByStructureId(changes.toogleToolTipId.currentValue));
}
}
// Handle map marker if none selected
if (changes.selectedMarkerId && this.map) {
this.map.closePopup();
if (changes.selectedMarkerId.currentValue === undefined) {
this.mapService.setDefaultMarker(changes.selectedMarkerId.previousValue, this.getMarkerTypeByStructureId(changes.selectedMarkerId.previousValue));
this.map.setView(this.mapOptions.center, this.mapOptions.zoom);
}
}
// Handle map marker if one is set with url or selected
if (this.mapService.getMarker(this.selectedMarkerId)) {
this.mapService.setSelectedMarker(this.selectedMarkerId, this.getMarkerTypeByStructureId(this.selectedMarkerId));
this.centerLeafletMapOnMarker(this.selectedMarkerId);
}
this.closePreviousMarker(changes);
if (changes.structuresToPrint) {
if (changes.structuresToPrint.currentValue < changes.structuresToPrint.previousValue) {
(_a = this.mapService) === null || _a === void 0 ? void 0 : _a.setUnactiveMarker(this.toogleToolTipId, this.getMarkerTypeByStructureId(changes.structuresToPrint.previousValue));
}
this.structuresToPrint.forEach((structure) => {
this.mapService.setAddedToListMarker(structure._id, this.getMarkerTypeByStructureId(structure._id));
});
}
}
processTownCoordinate(queryString) {
this.geoJsonService.getTownshipCoord(queryString).subscribe((townData) => {
if (townData.length > 0) {
const bounds = new L.LatLngBounds(townData.map((dataArray) => dataArray.reverse()));
this.map.fitBounds(bounds);
}
}, (err) => {
this.map.flyTo(this.mapOptions.center, this.mapOptions.zoom, this.zoomOptions);
});
}
/**
* Create a user position marcker and center the map on it with a zoom level defined in ZoomLevel
* @param coords {[number, number]} Map center position
*/
centerOnCoordinates(coords) {
this.mapService.createMarker(coords[1], coords[0], this.markerType.user, 'userLocation').addTo(this.map);
this.map.flyTo(new L.LatLng(coords[1], coords[0]), this.zoomLevel.userPosition, this.zoomOptions);
}
/**
* Get structures positions and add marker corresponding to those positons on the map
*/
handleStructurePosition(previousStructuresValue) {
// If there is more structure than before, append them
if (previousStructuresValue &&
previousStructuresValue.length > 0 &&
previousStructuresValue.length < this.structures.length) {
this.getStructuresPositions(_.differenceWith(this.structures, previousStructuresValue, _.isEqual));
}
else if (this.structures) {
this.map = this.mapService.cleanMap(this.map);
this.getStructuresPositions(this.structures);
this.structuresToPrint.forEach((structure) => {
this.mapService.setAddedToListMarker(structure._id, this.getMarkerTypeByStructureId(structure._id));
});
}
}
isToPrint(id) {
return this.structuresToPrint.findIndex((elem) => elem._id == id) > -1 ? true : false;
}
/**
* Returns according marker type base on {MarkerType}
* @param {Structure} structure
* @returns {number}
*/
getMarkerType(structure) {
var _a;
return ((_a = structure === null || structure === void 0 ? void 0 : structure.labelsQualifications) === null || _a === void 0 ? void 0 : _a.includes('conseillerNumFranceServices'))
? this.markerType.conseillerFrance
: this.markerType.structure;
}
/**
* Return the map marker type given a structure id
* @param {string} id - Structure id
* @returns {number}
*/
getMarkerTypeByStructureId(id) {
return this.getMarkerType(this.structures.find((structure) => structure._id === id));
}
getStructuresPositions(structureList) {
for (const structure of structureList) {
this.mapService
.createMarker(structure.getLat(), structure.getLon(), this.getMarkerType(structure), structure._id, this.buildToolTip(structure))
.addTo(this.map)
// store structure before user click on button
.on('popupopen', () => {
this.currentStructure = structure;
});
}
}
/**
* Create tooltip for display
* @param structure Structure
*/
buildToolTip(structure) {
let cssAvailabilityClass = structure.isOpen ? 'available' : null;
if (cssAvailabilityClass === null) {
if (structure.openedOn.day) {
cssAvailabilityClass = 'unavailable';
}
else {
cssAvailabilityClass = 'unknown';
}
}
return ('<h1>' +
structure.structureName +
'</h1>' +
'<p>' +
structure.getLabelTypeStructure() +
'</p>' +
(this.isOrientationForm
? '<div class="pop-up orientation"><button type="button" class="orientationButton btnShowDetails"><span class="ico-gg-eye-alt eye"></span>Voir</button></div>'
: '<div class="pop-up"><button type="button" class="btnShowDetails">Voir</button></div>'));
}
buildMdmPopUp(mdmProperties) {
return `<h1>${mdmProperties.nom}</h1><p>${mdmProperties.adresse}</p>`;
}
/**
* Add marker when map is ready to be showned
* @param map map
*/
onMapReady(map) {
this.map = map;
if (this.searchedValue) {
if (Array.isArray(this.searchedValue)) {
this.centerOnCoordinates(this.searchedValue);
}
}
}
/**
* Init map options :
* - Metropole bounds based on a WMS service hosted by data.grandlyon.com
* - Map Layer based on open street maps
*/
initializeMapOptions() {
// Init mdm
this.initMDMLayer();
// Init WMS service with param from data.grandlyon.com
layerGroup();
const carteLayer = tileLayer('https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png', {
attribution: '© <a href="https://carto.com/attributions">CARTO</a>',
maxZoom: this.zoomLevel.max
});
// Center is set on townhall
// Zoom is blocked on 11 to prevent people to zoom out from metropole
this.mapOptions = {
center: latLng(this.initialPosition.latitude, this.initialPosition.longitude),
maxZoom: this.zoomLevel.max,
zoom: this.zoomLevel.regular,
minZoom: this.zoomLevel.min,
layers: [carteLayer]
};
}
initMDMLayer() {
this.geoJsonService.getMDMGeoJson().subscribe((res) => {
res.forEach((mdm) => {
this.mapService
.createMarker(mdm.geometry.getLat(), mdm.geometry.getLon(), this.markerType.mdm, null, this.buildMdmPopUp(mdm.properties))
.addTo(this.map);
});
this.initMetropoleLayer();
});
}
centerLeafletMapOnMarker(markerId) {
if (this.mapService.getMarker(markerId)) {
const marker = this.mapService.getMarker(markerId);
const latLngs = marker.getLatLng();
this.map.flyTo(new L.LatLng(latLngs.lat, latLngs.lng), this.zoomLevel.max, this.zoomOptions);
}
}
initMetropoleLayer() {
this.map.addLayer(geoJSON({
type: this.metropole.features[0].geometry.type,
coordinates: this.metropole.features[0].geometry.coordinates
}, { style: () => ({ color: '#a00000', fillOpacity: 0, weight: 1 }) }));
}
/**
* Close previous markers
* - if strucure is closed
* - if a new marker is selected
*/
closePreviousMarker(changes) {
var _a, _b, _c, _d;
if ((((_a = changes.selectedMarkerId) === null || _a === void 0 ? void 0 : _a.currentValue) === undefined && ((_b = changes.selectedMarkerId) === null || _b === void 0 ? void 0 : _b.previousValue)) ||
((_c = changes.selectedMarkerId) === null || _c === void 0 ? void 0 : _c.currentValue) !== ((_d = changes.selectedMarkerId) === null || _d === void 0 ? void 0 : _d.previousValue)) {
this.mapService.setUnactiveMarker(changes.selectedMarkerId.previousValue, this.getMarkerTypeByStructureId(changes.selectedMarkerId.previousValue));
}
}
}
MapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MapComponent, deps: [{ token: GEOMETRY_POLYGON_TOKEN }, { token: MARKER_TYPE_TOKEN }, { token: ZOOM_LEVEL_TOKEN }, { token: INITIAL_POSITION_TOKEN }, { token: GEO_JSON_TOKEN }, { token: MapService }], target: i0.ɵɵFactoryTarget.Component });
MapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MapComponent, selector: "app-map", inputs: { isOrientationForm: "isOrientationForm", structures: "structures", structuresToPrint: "structuresToPrint", toogleToolTipId: "toogleToolTipId", selectedMarkerId: "selectedMarkerId", isMapPhone: "isMapPhone", searchedValue: "searchedValue" }, outputs: { selectedStructure: "selectedStructure", orientationButtonClick: "orientationButtonClick" }, host: { listeners: { "document:click": "clickout($event)" } }, providers: [MapService], usesOnChanges: true, ngImport: i0, template: "<div\n id=\"map\"\n class=\"body-wrap\"\n [ngClass]=\"{ orientation: isOrientationForm }\"\n leaflet\n [leafletOptions]=\"mapOptions\"\n (leafletMapReady)=\"onMapReady($event)\"></div>\n", styles: [".ico-mglass{position:relative;display:inline-block;background:transparent;border-radius:30px;border:2px solid #333333;height:12px;width:12px;min-width:12px;max-width:12px}.ico-mglass:after{content:\"\";height:2px;width:8px;background:#333333;position:absolute;top:14px;left:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.ico-pin{width:20px;height:20px;max-width:20px;max-height:20px;border-radius:50% 50% 50% 0;background:transparent;transform:rotate(-45deg);left:50%;top:50%;margin:-4px 0 0}.ico-pin.after{content:\"\";width:14px;height:14px;margin:8px 0 0 8px;background:transparent;border-radius:50%}.ico-pin-search{width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background-color:#696969}.ico-pin-search:before{content:\"\";position:absolute;left:5px;top:6px;width:7px;height:7px;border-radius:4px;background-color:#fff}.ico-dot-available{height:12px;width:12px;background-color:#41c29c;border-radius:50%;margin-right:8px}.ico-dot-unavailable{height:12px;width:12px;background-color:#da3635;border-radius:50%;margin-right:8px}.ico-dot-unknown{height:12px;width:12px;background-color:#bdbdbd;border-radius:50%;margin-right:8px}.ico-marker-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;background:#da3635;position:absolute;transform:rotate(-45deg);left:50%;top:50%;margin:-15px 0 0 -15px}.ico-marker-pin.selected{background:#da3635}.ico-marker-pin:after{content:\"\";width:10px;height:10px;margin:10px 0 0 10px;background:#fff;position:absolute;border-radius:50%}.ico-marker-pin-sm{width:18px;height:18px;border-radius:50% 50% 50% 0;background:#696969;transform:rotate(-45deg);margin:0 4px}.ico-marker-pin-sm.absolute{position:absolute;margin:0}.ico-marker-pin-sm:after{content:\"\";width:7px;height:7px;margin:6px 0 0 5px;background:#f8f8f8;position:absolute;border-radius:50%}.ico-profile .head{width:12px;height:12px;border-radius:25px;border:2px solid #333333}.ico-profile .body{width:28px;height:10px;border-radius:20px 20px 0 0;border-top:2px solid #333333;border-right:2px solid #333333;border-left:2px solid #333333}.ico-close .mdiv{height:10px;width:2px;margin-left:5px;background-color:#696969;transform:rotate(45deg);z-index:1}.ico-close .md{height:10px;width:2px;background-color:#696969;transform:rotate(90deg);z-index:2}.ico-close-search{width:16px;height:16px;display:inline-block;vertical-align:middle}.ico-close-search:before{transform:rotate(45deg)}.ico-close-search:after{transform:rotate(-45deg)}.ico-close-search:before,.ico-close-search:after{position:absolute;content:\"\";height:16px;width:2px;background-color:#bdbdbd}.ic-arrow-left{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px}.ic-arrow-left:after,.ic-arrow-left:before{content:\"\";display:block;box-sizing:border-box;position:absolute;left:3px}.ic-arrow-left:after{width:8px;height:8px;border-bottom:2px solid;border-left:2px solid;transform:rotate(45deg);bottom:7px}.ic-arrow-left:before{width:16px;height:2px;bottom:10px;background:currentColor}.ic-print{width:.68em;height:1em;border-style:solid;border-color:currentcolor;background-color:transparent;border-width:.07em;border-radius:.05em;margin:0 .16em}.ic-print:before{width:1em;height:.4em;border-width:.07em .21em 0;border-style:solid;border-color:currentColor currentcolor transparent;border-radius:.05em .05em 0 0;top:.25em;left:50%;transform:translate(-50%);background-image:linear-gradient(transparent 20%,currentcolor 20%,currentcolor 60%,transparent 60%)}.ic-print:after{width:.45em;height:.065em;background-color:currentColor;left:50%;transform:translate(-50%);top:.6em;box-shadow:0 .12em,-.1em -.28em 0 .05em}.ic-mail,.ic-mail:after{display:block;box-sizing:border-box;height:14px;border:2px solid}.ic-mail{color:#4f4f4f;overflow:hidden;transform:scale(var(--ggs, 1));position:absolute;width:18px;border-radius:2px}.ic-mail:after{content:\"\";position:absolute;border-radius:3px;width:14px;transform:rotate(-45deg);bottom:3px;left:0}.ic-phone{color:#4f4f4f;box-sizing:border-box;position:absolute;display:block;width:22px;height:22px;transform:scale(var(--ggs, 1))}.ic-phone:after,.ic-phone:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-phone:after{width:18px;height:18px;border-top-left-radius:1px;border-bottom-right-radius:1px;border-bottom-left-radius:12px;border-left:4px solid;border-bottom:4px solid;left:2px;bottom:2px;background:linear-gradient(to left,currentColor 10px,transparent 0) no-repeat right 11px/6px 4px,linear-gradient(to left,currentColor 10px,transparent 0) no-repeat -1px 0/4px 6px}.ic-phone:before{width:20px;height:20px;border:6px double;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;border-radius:50%;transform:rotate(-45deg);bottom:2px;left:2px}.ic-mouse{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:16px;height:24px;border:2px solid;border-radius:10px}.ic-mouse:after{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:2px;height:6px;background:currentColor;top:3px;left:5px}.ic-wifi{color:#000;position:absolute;margin-left:7px;margin-top:13px;width:6px;height:6px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:before{content:\"\";position:absolute;left:-5px;top:-5px;width:14px;height:14px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:after{content:\"\";position:absolute;left:-9px;top:-9px;width:22px;height:22px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-screen{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:22px;height:14px;border:2px solid;border-radius:3px;margin-top:-4px}.ic-screen:after,.ic-screen:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:10px;height:2px;background:currentColor;top:14px;left:4px}.ic-screen:before{width:2px;height:6px;top:10px;left:8px}.ic-globe-alt,.ic-globe-alt:after,.ic-globe-alt:before{color:#4f4f4f;display:block;box-sizing:border-box;height:18px;border:2px solid}.ic-globe-alt{position:absolute;transform:scale(var(--ggs, 1));width:18px;border-radius:22px}.ic-globe-alt:after,.ic-globe-alt:before{content:\"\";position:absolute;width:8px;border-radius:100%;top:-2px;left:3px}.ic-globe-alt:after{width:24px;height:20px;border:2px solid transparent;border-bottom:2px solid;top:-11px;left:-5px}.ic-camera{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));border:2px solid;border-radius:3px;width:18px;height:12px;perspective:24px}.ic-camera:after,.ic-camera:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-camera:before{border:2px solid;border-left-color:transparent;transform:rotateY(-70deg);width:8px;height:8px;right:-7px;top:0}.ic-camera:after{width:10px;height:5px;border-top:2px solid;border-right:2px solid;top:-5px;right:2px;border-top-right-radius:2px}.ic-calendar-today{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:18px;height:18px;border:2px solid;border-top:4px solid;border-radius:3px}.ic-calendar-today:before{content:\"\";display:block;box-sizing:border-box;position:absolute;background:currentColor;height:4px;width:4px;border-radius:2px;right:2px;bottom:2px}.ic-user{display:block;position:absolute;transform:scale(var(--ggs, 1));box-sizing:border-box;width:12px;height:18px}.ic-user:after,.ic-user:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border:2px solid}.ic-user:before{width:8px;height:8px;border-radius:30px;top:0;left:2px}.ic-user:after{width:12px;height:9px;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;top:9px}.ico-close-details{width:44px;height:44px;border-radius:44px;display:flex;justify-content:center;align-items:center;opacity:.8;cursor:pointer}.ico-close-details:before,.ico-close-details:after{content:\"\";width:24px;height:2px;background-color:#333;position:absolute;border-radius:1px}.ico-close-details:hover{background-color:#f4f4f4}.ico-close-details:before{transform:rotate(45deg)}.ico-close-details:after{transform:rotate(-45deg)}.ico-menu,.ico-menu:before,.ico-menu:after{cursor:pointer;border-radius:1px;height:2px;width:23px;background:#000000;position:absolute;display:block;content:\"\"}.ico-menu:before{top:-6px}.ico-menu:after{bottom:-6px}.ico-gg-eye-alt{position:relative;display:block;transform:scale(var(--ggs, 1));width:24px;height:18px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.ico-gg-eye-alt:after,.ico-gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.ico-gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px #696969,inset 0 0 0 2px #696969;width:24px;height:24px}.ico-gg-eye-alt:before{width:8px;height:8px;border:2px solid #696969;bottom:4px;left:8px;background-color:#696969}.ico-gg-add{box-sizing:border-box;position:relative;display:block;color:#47c562;width:32px;height:32px}.ico-gg-add:after,.ico-gg-add:before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:14px;height:2px;background:currentColor;border-radius:5px;top:8px;left:0px}.ico-gg-add:after{width:2px;height:14px;top:2px;left:6px}.gg-eye-alt{position:relative;display:block;width:18px;height:12px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.gg-eye-alt:after,.gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px,inset 0 0 0 2px;width:18px;height:18px}.gg-eye-alt:before{width:2px;height:2px;border:2px solid black;bottom:3px;left:7px;background-color:#000}.ico-gg-check{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px;border:1px solid transparent;border-radius:100px;color:#fff}.ico-gg-check:after{content:\"\";display:block;box-sizing:border-box;position:absolute;left:5px;top:-3px;width:7px;height:12px;border-width:0 2px 2px 0;border-style:solid;transform-origin:bottom left;transform:rotate(45deg);color:#fff}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.btn-primary{background:#da3635;border-radius:4px;outline:none;cursor:pointer;color:#fff;height:40px;width:192px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;stroke:#fff;border:1px solid #333333}.btn-primary.small{width:149px}.btn-primary.invalid{opacity:.4}.btn-primary:focus{background:white;color:#da3635;border:1px solid #da3635;stroke:#da3635}.btn-grid{display:inline-flex;flex-wrap:wrap;gap:8px}.tags-cloud{font-style:normal;justify-content:center;align-items:center;height:28px;border-radius:20px;padding:5px 15px;color:#fff;border-style:none;margin-top:5px;background:#333333}.tags-cloud.unchecked{background:#bdbdbd}#map{height:100%}::ng-deep .leaflet-popup-close-button{display:none}::ng-deep .leaflet-left{right:0;left:unset}::ng-deep .leaflet-left .leaflet-control{margin-left:0;margin-right:10px;border:none;box-shadow:0 2px 8px #00000040}::ng-deep .leaflet-left .leaflet-control.leaflet-bar a:first-child{border-top-left-radius:8px;border-top-right-radius:8px}::ng-deep .leaflet-left .leaflet-control.leaflet-bar a:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}::ng-deep .leaflet-control-zoom a{color:#333;opacity:.55}::ng-deep .leaflet-control-zoom a:hover{opacity:1}::ng-deep .leaflet-marker-icon:hover{z-index:599!important}::ng-deep .leaflet-marker-icon:hover svg{fill:#b85959}::ng-deep .leaflet-marker-icon:hover svg.mdm{fill:#bd9e6a}::ng-deep .leaflet-marker-icon:hover svg.france-service{fill:#da3635}::ng-deep .leaflet-popup{border-radius:6px;bottom:-15px!important}::ng-deep .leaflet-popup h1{color:#333;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.25em;font-size:18px;margin:0}::ng-deep .leaflet-popup p{color:#696969;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;font-size:16px;margin:0 0 13px;font-style:italic}::ng-deep .leaflet-popup .pop-up{text-align:center;padding-top:20px}::ng-deep .leaflet-popup .pop-up.orientation{padding:0;text-align:-webkit-center}::ng-deep .leaflet-popup .pop-up button{background:#da3635;height:36px;color:#fff;padding:4px 37px;border-radius:4px;outline:none;border:1px solid transparent;cursor:pointer;font-weight:400;font-size:.813em;line-break:18px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:.875em;font-size:16px}::ng-deep .leaflet-popup .pop-up .orientationButton{display:flex;padding:10px 20px;border-radius:20px;margin:0 4px;color:#000;background-color:#fff;border:solid 1px #696969;min-width:120px}::ng-deep .leaflet-popup span{margin-right:4px}::ng-deep .leaflet-popup span.eye{margin-right:11px}::ng-deep .leaflet-popup-content-wrapper{border-radius:6px}::ng-deep .leaflet-popup-content{width:240px}::ng-deep .leaflet-popup-tip-container{display:none}@media print{.map-wrapper{display:none}}.body-wrap{height:400px}::ng-deep .on-top-marker{z-index:600!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.LeafletDirective, selector: "[leaflet]", inputs: ["leafletFitBoundsOptions", "leafletPanOptions", "leafletZoomOptions", "leafletZoomPanOptions", "leafletOptions", "leafletZoom", "leafletCenter", "leafletFitBounds", "leafletMaxBounds", "leafletMinZoom", "leafletMaxZoom"], outputs: ["leafletMapReady", "leafletZoomChange", "leafletCenterChange", "leafletClick", "leafletDoubleClick", "leafletMouseDown", "leafletMouseUp", "leafletMouseMove", "leafletMouseOver", "leafletMouseOut", "leafletMapMove", "leafletMapMoveStart", "leafletMapMoveEnd", "leafletMapZoom", "leafletMapZoomStart", "leafletMapZoomEnd"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MapComponent, decorators: [{
type: Component,
args: [{ selector: 'app-map', providers: [MapService], template: "<div\n id=\"map\"\n class=\"body-wrap\"\n [ngClass]=\"{ orientation: isOrientationForm }\"\n leaflet\n [leafletOptions]=\"mapOptions\"\n (leafletMapReady)=\"onMapReady($event)\"></div>\n", styles: [".ico-mglass{position:relative;display:inline-block;background:transparent;border-radius:30px;border:2px solid #333333;height:12px;width:12px;min-width:12px;max-width:12px}.ico-mglass:after{content:\"\";height:2px;width:8px;background:#333333;position:absolute;top:14px;left:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.ico-pin{width:20px;height:20px;max-width:20px;max-height:20px;border-radius:50% 50% 50% 0;background:transparent;transform:rotate(-45deg);left:50%;top:50%;margin:-4px 0 0}.ico-pin.after{content:\"\";width:14px;height:14px;margin:8px 0 0 8px;background:transparent;border-radius:50%}.ico-pin-search{width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background-color:#696969}.ico-pin-search:before{content:\"\";position:absolute;left:5px;top:6px;width:7px;height:7px;border-radius:4px;background-color:#fff}.ico-dot-available{height:12px;width:12px;background-color:#41c29c;border-radius:50%;margin-right:8px}.ico-dot-unavailable{height:12px;width:12px;background-color:#da3635;border-radius:50%;margin-right:8px}.ico-dot-unknown{height:12px;width:12px;background-color:#bdbdbd;border-radius:50%;margin-right:8px}.ico-marker-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;background:#da3635;position:absolute;transform:rotate(-45deg);left:50%;top:50%;margin:-15px 0 0 -15px}.ico-marker-pin.selected{background:#da3635}.ico-marker-pin:after{content:\"\";width:10px;height:10px;margin:10px 0 0 10px;background:#fff;position:absolute;border-radius:50%}.ico-marker-pin-sm{width:18px;height:18px;border-radius:50% 50% 50% 0;background:#696969;transform:rotate(-45deg);margin:0 4px}.ico-marker-pin-sm.absolute{position:absolute;margin:0}.ico-marker-pin-sm:after{content:\"\";width:7px;height:7px;margin:6px 0 0 5px;background:#f8f8f8;position:absolute;border-radius:50%}.ico-profile .head{width:12px;height:12px;border-radius:25px;border:2px solid #333333}.ico-profile .body{width:28px;height:10px;border-radius:20px 20px 0 0;border-top:2px solid #333333;border-right:2px solid #333333;border-left:2px solid #333333}.ico-close .mdiv{height:10px;width:2px;margin-left:5px;background-color:#696969;transform:rotate(45deg);z-index:1}.ico-close .md{height:10px;width:2px;background-color:#696969;transform:rotate(90deg);z-index:2}.ico-close-search{width:16px;height:16px;display:inline-block;vertical-align:middle}.ico-close-search:before{transform:rotate(45deg)}.ico-close-search:after{transform:rotate(-45deg)}.ico-close-search:before,.ico-close-search:after{position:absolute;content:\"\";height:16px;width:2px;background-color:#bdbdbd}.ic-arrow-left{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px}.ic-arrow-left:after,.ic-arrow-left:before{content:\"\";display:block;box-sizing:border-box;position:absolute;left:3px}.ic-arrow-left:after{width:8px;height:8px;border-bottom:2px solid;border-left:2px solid;transform:rotate(45deg);bottom:7px}.ic-arrow-left:before{width:16px;height:2px;bottom:10px;background:currentColor}.ic-print{width:.68em;height:1em;border-style:solid;border-color:currentcolor;background-color:transparent;border-width:.07em;border-radius:.05em;margin:0 .16em}.ic-print:before{width:1em;height:.4em;border-width:.07em .21em 0;border-style:solid;border-color:currentColor currentcolor transparent;border-radius:.05em .05em 0 0;top:.25em;left:50%;transform:translate(-50%);background-image:linear-gradient(transparent 20%,currentcolor 20%,currentcolor 60%,transparent 60%)}.ic-print:after{width:.45em;height:.065em;background-color:currentColor;left:50%;transform:translate(-50%);top:.6em;box-shadow:0 .12em,-.1em -.28em 0 .05em}.ic-mail,.ic-mail:after{display:block;box-sizing:border-box;height:14px;border:2px solid}.ic-mail{color:#4f4f4f;overflow:hidden;transform:scale(var(--ggs, 1));position:absolute;width:18px;border-radius:2px}.ic-mail:after{content:\"\";position:absolute;border-radius:3px;width:14px;transform:rotate(-45deg);bottom:3px;left:0}.ic-phone{color:#4f4f4f;box-sizing:border-box;position:absolute;display:block;width:22px;height:22px;transform:scale(var(--ggs, 1))}.ic-phone:after,.ic-phone:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-phone:after{width:18px;height:18px;border-top-left-radius:1px;border-bottom-right-radius:1px;border-bottom-left-radius:12px;border-left:4px solid;border-bottom:4px solid;left:2px;bottom:2px;background:linear-gradient(to left,currentColor 10px,transparent 0) no-repeat right 11px/6px 4px,linear-gradient(to left,currentColor 10px,transparent 0) no-repeat -1px 0/4px 6px}.ic-phone:before{width:20px;height:20px;border:6px double;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;border-radius:50%;transform:rotate(-45deg);bottom:2px;left:2px}.ic-mouse{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:16px;height:24px;border:2px solid;border-radius:10px}.ic-mouse:after{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:2px;height:6px;background:currentColor;top:3px;left:5px}.ic-wifi{color:#000;position:absolute;margin-left:7px;margin-top:13px;width:6px;height:6px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:before{content:\"\";position:absolute;left:-5px;top:-5px;width:14px;height:14px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:after{content:\"\";position:absolute;left:-9px;top:-9px;width:22px;height:22px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-screen{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:22px;height:14px;border:2px solid;border-radius:3px;margin-top:-4px}.ic-screen:after,.ic-screen:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:10px;height:2px;background:currentColor;top:14px;left:4px}.ic-screen:before{width:2px;height:6px;top:10px;left:8px}.ic-globe-alt,.ic-globe-alt:after,.ic-globe-alt:before{color:#4f4f4f;display:block;box-sizing:border-box;height:18px;border:2px solid}.ic-globe-alt{position:absolute;transform:scale(var(--ggs, 1));width:18px;border-radius:22px}.ic-globe-alt:after,.ic-globe-alt:before{content:\"\";position:absolute;width:8px;border-radius:100%;top:-2px;left:3px}.ic-globe-alt:after{width:24px;height:20px;border:2px solid transparent;border-bottom:2px solid;top:-11px;left:-5px}.ic-camera{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));border:2px solid;border-radius:3px;width:18px;height:12px;perspective:24px}.ic-camera:after,.ic-camera:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-camera:before{border:2px solid;border-left-color:transparent;transform:rotateY(-70deg);width:8px;height:8px;right:-7px;top:0}.ic-camera:after{width:10px;height:5px;border-top:2px solid;border-right:2px solid;top:-5px;right:2px;border-top-right-radius:2px}.ic-calendar-today{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:18px;height:18px;border:2px solid;border-top:4px solid;border-radius:3px}.ic-calendar-today:before{content:\"\";display:block;box-sizing:border-box;position:absolute;background:currentColor;height:4px;width:4px;border-radius:2px;right:2px;bottom:2px}.ic-user{display:block;position:absolute;transform:scale(var(--ggs, 1));box-sizing:border-box;width:12px;height:18px}.ic-user:after,.ic-user:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border:2px solid}.ic-user:before{width:8px;height:8px;border-radius:30px;top:0;left:2px}.ic-user:after{width:12px;height:9px;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;top:9px}.ico-close-details{width:44px;height:44px;border-radius:44px;display:flex;justify-content:center;align-items:center;opacity:.8;cursor:pointer}.ico-close-details:before,.ico-close-details:after{content:\"\";width:24px;height:2px;background-color:#333;position:absolute;border-radius:1px}.ico-close-details:hover{background-color:#f4f4f4}.ico-close-details:before{transform:rotate(45deg)}.ico-close-details:after{transform:rotate(-45deg)}.ico-menu,.ico-menu:before,.ico-menu:after{cursor:pointer;border-radius:1px;height:2px;width:23px;background:#000000;position:absolute;display:block;content:\"\"}.ico-menu:before{top:-6px}.ico-menu:after{bottom:-6px}.ico-gg-eye-alt{position:relative;display:block;transform:scale(var(--ggs, 1));width:24px;height:18px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.ico-gg-eye-alt:after,.ico-gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.ico-gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px #696969,inset 0 0 0 2px #696969;width:24px;height:24px}.ico-gg-eye-alt:before{width:8px;height:8px;border:2px solid #696969;bottom:4px;left:8px;background-color:#696969}.ico-gg-add{box-sizing:border-box;position:relative;display:block;color:#47c562;width:32px;height:32px}.ico-gg-add:after,.ico-gg-add:before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:14px;height:2px;background:currentColor;border-radius:5px;top:8px;left:0px}.ico-gg-add:after{width:2px;height:14px;top:2px;left:6px}.gg-eye-alt{position:relative;display:block;width:18px;height:12px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.gg-eye-alt:after,.gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px,inset 0 0 0 2px;width:18px;height:18px}.gg-eye-alt:before{width:2px;height:2px;border:2px solid black;bottom:3px;left:7px;background-color:#000}.ico-gg-check{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px;border:1px solid transparent;border-radius:100px;color:#fff}.ico-gg-check:after{content:\"\";display:block;box-sizing:border-box;position:absolute;left:5px;top:-3px;width:7px;height:12px;border-width:0 2px 2px 0;border-style:solid;transform-origin:bottom left;transform:rotate(45deg);color:#fff}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.btn-primary{background:#da3635;border-radius:4px;outline:none;cursor:pointer;color:#fff;height:40px;width:192px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;stroke:#fff;border:1px solid #333333}.btn-primary.small{width:149px}.btn-primary.invalid{opacity:.4}.btn-primary:focus{background:white;color:#da3635;border:1px solid #da3635;stroke:#da3635}.btn-grid{display:inline-flex;flex-wrap:wrap;gap:8px}.tags-cloud{font-style:normal;justify-content:center;align-items:center;height:28px;border-radius:20px;padding:5px 15px;color:#fff;border-style:none;margin-top:5px;background:#333333}.tags-cloud.unchecked{background:#bdbdbd}#map{height:100%}::ng-deep .leaflet-popup-close-button{display:none}::ng-deep .leaflet-left{right:0;left:unset}::ng-deep .leaflet-left .leaflet-control{margin-left:0;margin-right:10px;border:none;box-shadow:0 2px 8px #00000040}::ng-deep .leaflet-left .leaflet-control.leaflet-bar a:first-child{border-top-left-radius:8px;border-top-right-radius:8px}::ng-deep .leaflet-left .leaflet-control.leaflet-bar a:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}::ng-deep .leaflet-control-zoom a{color:#333;opacity:.55}::ng-deep .leaflet-control-zoom a:hover{opacity:1}::ng-deep .leaflet-marker-icon:hover{z-index:599!important}::ng-deep .leaflet-marker-icon:hover svg{fill:#b85959}::ng-deep .leaflet-marker-icon:hover svg.mdm{fill:#bd9e6a}::ng-deep .leaflet-marker-icon:hover svg.france-service{fill:#da3635}::ng-deep .leaflet-popup{border-radius:6px;bottom:-15px!important}::ng-deep .leaflet-popup h1{color:#333;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.25em;font-size:18px;margin:0}::ng-deep .leaflet-popup p{color:#696969;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;font-size:16px;margin:0 0 13px;font-style:italic}::ng-deep .leaflet-popup .pop-up{text-align:center;padding-top:20px}::ng-deep .leaflet-popup .pop-up.orientation{padding:0;text-align:-webkit-center}::ng-deep .leaflet-popup .pop-up button{background:#da3635;height:36px;color:#fff;padding:4px 37px;border-radius:4px;outline:none;border:1px solid transparent;cursor:pointer;font-weight:400;font-size:.813em;line-break:18px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:.875em;font-size:16px}::ng-deep .leaflet-popup .pop-up .orientationButton{display:flex;padding:10px 20px;border-radius:20px;margin:0 4px;color:#000;background-color:#fff;border:solid 1px #696969;min-width:120px}::ng-deep .leaflet-popup span{margin-right:4px}::ng-deep .leaflet-popup span.eye{margin-right:11px}::ng-deep .leaflet-popup-content-wrapper{border-radius:6px}::ng-deep .leaflet-popup-content{width:240px}::ng-deep .leaflet-popup-tip-container{display:none}@media print{.map-wrapper{display:none}}.body-wrap{height:400px}::ng-deep .on-top-marker{z-index:600!important}\n"] }]
}], ctorParameters: function () {
return [{ type: undefined, decorators: [{
type: Inject,
args: [GEOMETRY_POLYGON_TOKEN]
}] }, { type: undefined, decorators: [{
type: Inject,
args: [MARKER_TYPE_TOKEN]
}] }, { type: undefined, decorators: [{
type: Inject,
args: [ZOOM_LEVEL_TOKEN]
}] }, { type: undefined, decorators: [{
type: Inject,
args: [INITIAL_POSITION_TOKEN]
}] }, { type: undefined, decorators: [{
type: Inject,
args: [GEO_JSON_TOKEN]
}] }, { type: MapService }];
}, propDecorators: { isOrientationForm: [{
type: Input
}], structures: [{
type: Input
}], structuresToPrint: [{
type: Input
}], toogleToolTipId: [{
type: Input
}], selectedMarkerId: [{
type: Input
}], isMapPhone: [{
type: Input
}], searchedValue: [{
type: Input
}], selectedStructure: [{
type: Output
}], orientationButtonClick: [{
type: Output
}], clickout: [{
type: HostListener,
args: ['document:click', ['$event']]
}] } });
class MapModule {
constructor(geometryPolygonConfiguration, markerType, zoomLevel, initialPosition, geoJsonRepository) {
this.geometryPolygonConfiguration = geometryPolygonConfiguration;
this.markerType = markerType;
this.zoomLevel = zoomLevel;
this.initialPosition = initialPosition;
this.geoJsonRepository = geoJsonRepository;
if ([geometryPolygonConfiguration, markerType, zoomLevel, initialPosition, geoJsonRepository].includes(null)) {
throw new Error('Cannot import `MapModule` without calling `forRoot` with valid parameters: you must provide defined `geometryPolygonConfiguration`, `markerType`, `zoomLevel`, `initialPosition` and `geoJsonRepository`.');
}
}
static forRoot(geometryPolygonConfiguration, zoomLevelConfiguration, initialPositionConfiguration, markerTypeConfiguration, geoJsonRepository) {
return {
ngModule: MapModule,
providers: [
{ provide: GEO_JSON_TOKEN, useClass: geoJsonRepository },
{ provide: GEOMETRY_POLYGON_TOKEN, useValue: geometryPolygonConfiguration },
{ provide: MARKER_TYPE_TOKEN, useValue: markerTypeConfiguration },
{ provide: ZOOM_LEVEL_TOKEN, useValue: zoomLevelConfiguration },
{ provide: INITIAL_POSITION_TOKEN, useValue: initialPositionConfiguration }
]
};
}
}
MapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MapModule, deps: [{ token: GEOMETRY_POLYGON_TOKEN, optional: true }, { token: MARKER_TYPE_TOKEN, optional: true }, { token: ZOOM_LEVEL_TOKEN, optional: true }, { token: INITIAL_POSITION_TOKEN, optional: true }, { token: GEO_JSON_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
MapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: MapModule, declarations: [MapComponent], imports: [CommonModule, LeafletModule], exports: [MapComponent] });
MapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MapModule, imports: [CommonModule, LeafletModule] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MapModule, decorators: [{
type: NgModule,
args: [{
declarations: [MapComponent],
exports: [MapComponent],
imports: [CommonModule, LeafletModule]
}]
}], ctorParameters: function () {
return [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [GEOMETRY_POLYGON_TOKEN]
}] }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [MARKER_TYPE_TOKEN]
}] }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [ZOOM_LEVEL_TOKEN]
}] }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [INITIAL_POSITION_TOKEN]
}] }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [GEO_JSON_TOKEN]
}] }];
} });
var Equipment;
(function (Equipment) {
Equipment["wifi"] = "wifiEnAccesLibre";
Equipment["bornes"] = "bornesNumeriques";
Equipment["printer"] = "imprimantes";
Equipment["tablet"] = "tablettes";
Equipment["computer"] = "ordinateurs";
Equipment["scanner"] = "scanners";
})(Equipment || (Equipment = {}));
var typeStructureEnum;
(function (typeStructureEnum) {
typeStructureEnum["fablab"] = "Fablab";
// A supprimer ?
//A remplacer par Association ?
typeStructureEnum["associationQuartier"] = "Structure associative de quartier";
typeStructureEnum["associationCaritative"] = "Association caritative";
// En attente de suppression remplacer par CAF CARSAT, Pole Emploi et CCAS
typeStructureEnum["grandOrganismePublic"] = "Grand organisme public (CAF, CARSAT, P\u00F4le emploi...)";
typeStructureEnum["mdm"] = "Maison de la M\u00E9tropole";
typeStructureEnum["mairie"] = "Mairie";
typeStructureEnum["CAF"] = "CAF";
typeStructureEnum["CCAS"] = "CCAS";
typeStructureEnum["CARSAT"] = "CARSAT";
typeStructureEnum["poleEmploi"] = "Pole Emploi";
typeStructureEnum["mediatheque"] = "M\u00E9diath\u00E8que/Biblioth\u00E8que";
typeStructureEnum["prefecture"] = "Pr\u00E9fecture";
typeStructureEnum["bijPij"] = "BIJ/PIJ";
typeStructureEnum["logement"] = "Logement";
typeStructureEnum["MaisonFranceService"] = "Maison France Service";
typeStructureEnum["association"] = "Association";
typeStructureEnum["centreSocio"] = "Centre socio-culturel";
typeStructureEnum["mjc"] = "MJC / Cyberbase";
typeStructureEnum["pimms"] = "PIMMS";
typeStructureEnum["sij"] = "Structure information jeunesse (SIJ)";
typeStructureEnum["missionsLocales"] = "Missions locales";
typeStructureEnum["formation"] = "Structure de formation";
typeStructureEnum["insertion"] = "Structure d'insertion";
})(typeStructureEnum || (typeStructureEnum = {}));
var Weekday;
(function (Weekday) {
Weekday[Weekday["monday"] = 1] = "monday";
Weekday[Weekday["tuesday"] = 2] = "tuesday";
Weekday[Weekday["wednesday"] = 3] = "wednesday";
Weekday[Weekday["thursday"] = 4] = "thursday";
Weekday[Weekday["friday"] = 5] = "friday";
Weekday[Weekday["saturday"] = 6] = "saturday";
Weekday[Weekday["sunday"] = 7] = "sunday";
})(Weekday || (Weekday = {}));
class Address {
constructor() {
this.numero = null;
this.street = null;
this.commune = null;
this.postcode = null;
this.coordinates = [];
}
}
class Time {
constructor(obj) {
Object.assign(this, obj);
}
formatOpeningDate() {
return this.formatDate(this.opening);
}
formatClosingDate() {
return this.formatDate(this.closing);
}
formatDate(n) {
return n.replace(':', 'h');
}
}
class Day {
constructor(obj) {
this.open = false;
Object.assign(this, obj, {
time: obj && obj.time ? obj.time.map((time) => new Time(time)) : []
});
}
}
class AddressGeometry {
constructor(obj) {
Object.assign(this, obj);
}
getLat() {
return this.coordinates[1];
}
getLon() {
return this.coordinates[0];
}
}
class GeoJson {
constructor(obj) {
Object.assign(this, obj, {
geometry: obj && obj.geometry ? new AddressGeometry(obj.geometry) : null
});
}
}
class OpeningDay {
constructor(day, schedule) {
this.day = null;
this.schedule = null;
this.day = day;
this.schedule = schedule;
}
}
class PersonalOffer {
constructor() {
this.publicsAccompaniment = [];
this.proceduresAccompaniment = [];
this.baseSkills = [];
this.accessRight = [];
this.digitalCultureSecurity = [];
this.socialAndProfessional = [];
this.parentingHelp = [];
}
}
class Week {
constructor(obj) {
Object.assign(this, obj, {
monday: obj && obj.monday ? new Day(obj.monday) : new Day(),
tuesday: obj && obj.tuesday ? new Day(obj.tuesday) : new Day(),
wednesday: obj && obj.wednesday ? new Day(obj.wednesday) : new Day(),
thursday: obj && obj.thursday ? new Day(obj.thursday) : new Day(),
friday: obj && obj.friday ? new Day(obj.friday) : new Day(),
saturday: obj && obj.saturday ? new Day(obj.saturday) : new Day(),
sunday: obj && obj.sunday ? new Day(obj.sunday) : new Day()
});
}
getDayTranslation(day) {
switch (day) {
case 'monday':
return 'lundi';
case 'tuesday':
return 'mardi';
case 'thursday':
return 'jeudi';
case 'wednesday':
return 'mercredi';
case 'friday':
return 'vendredi';
case 'saturday':
return 'samedi';
case 'sunday':
return 'dimanche';
default:
return null;
}
}
hasData() {
if (this.monday.time.length === 0 &&
this.tuesday.time.length === 0 &&
this.wednesday.time.length === 0 &&
this.thursday.time.length === 0 &&
this.friday.time.length === 0 &&
this.saturday.time.length === 0 &&
this.sunday.time.length === 0) {
return false;
}
return true;
}
}
class Structure {
constructor(obj) {
this._id = null;
this.numero = null;
this.createdAt = null;
this.updatedAt = null;
this.structureName = null;
this.structureType = null;
this.description = null;
this.address = new Address();
this.contactPhone = null;
this.contactMail = null;
this.website = null;
this.facebook = null;
this.twitter = null;
this.instagram = null;
this.linkedin = null;
this.lockdownActivity = null;
this.pmrAccess = null;
this.placeOfReception = null;
this.choiceCompletion = null;
this.contactPersonFirstName = null;
this.contactPersonLastName = null;
this.contactPersonEmail = null;
this.publicsAccompaniment = [];
this.proceduresAccompaniment = [];
this.remoteAccompaniment = null;
this.accessModality = [];
this.labelsQualifications = [];
this.publics = [];
this.nbComputers = null;
this.nbPrinters = null;
this.nbTablets = null;
this.nbNumericTerminal = null;
this.nbScanners = null;
this.exceptionalClosures = null;
this.equipmentsAndServices = [];
this.freeWorkShop = null;
this.otherDescription = null;
this.isOpen = false;
this.openedOn = new OpeningDay();
this.baseSkills = [];
this.accessRight = [];
this.parentingHelp = [];
this.socialAndProfessional = [];
this.digitalCultureSecurity = [];
this.coord = [];
this.accountVerified = false;
this.personalOffers = [];
this.alreadySelected = false;
this.isClaimed = null;
Object.assign(this, obj, {
hours: obj && obj.hours ? new Week(obj.hours) : new Week()
});
}
getDayhours(day) {
switch (day) {
case Weekday.monday:
return this.hours.monday;
case Weekday.tuesday:
return this.hours.tuesday;
case Weekday.thursday:
return this.hours.thursday;
case Weekday.wednesday:
return this.hours.wednesday;
case Weekday.friday:
return this.hours.friday;
case Weekday.saturday:
return this.hours.saturday;
case Weekday.sunday:
return this.hours.sunday;
default:
return null;
}
}
/**
* Check if a structure has equipments
*/
hasEquipments() {
if (this.equipmentsAndServices.length && this.hasNotOnlyEmptyEquipments()) {
return true;
}
return false;
}
/**
* Verify that a structure as not only equipments with 0 as value. This is mostly use for display.
* @returns {Boolean} validation
*/
hasNotOnlyEmptyEquipments() {
if (this.nbComputers + this.nbPrinters + this.nbTablets + this.nbNumericTerminal + this.nbScanners > 0)
return true;
return false;
}
/**
* Check if a structure has pass Numeric label
*/
hasPassNumeric() {
return this.labelsQualifications.includes('passNumerique');
}
/**
* Return a range, according to the distance, between [1,3] to get a distance reference.
* - [0,5km] => 1
* - [5km,10km] => 2
* - [10km, [ => 3
*/
getDistanceRange() {
if (!this.distance) {
return 3;
}
else {
// If it's in km
if (this.distance > 10000) {
return 3;
}
else if (this.distance < 5000) {
// If it's between 0 and 500 m
return 1;
}
else {
return 2;
}
}
}
getLat() {
return this.coord[1];
}
getLon() {
return this.coord[0];
}
getEquipmentsIcon(equipment) {
switch (equipment) {
case Equipment.wifi:
return 'wifi';
case Equipment.bornes:
return 'borne';
case Equipment.printer:
return 'print';
case Equipment.tablet:
return 'tablet';
case Equipment.computer:
return 'computer';
case Equipment.scanner:
return 'scan';
default:
return null;
}
}
getEquipmentsTitle(equipment) {
switch (equipment) {
case Equipment.wifi:
return 'Wifi en accès libre';
case Equipment.bornes:
return this.nbNumericTerminal > 1 ? 'Bornes numériques' : 'Borne numérique';
case Equipment.printer:
return this.nbPrinters > 1 ? 'Imprimantes' : 'Imprimante';
case Equipment.tablet:
return this.nbTablets > 1 ? 'Tablettes' : 'Tablette';
case Equipment.computer:
return this.nbComputers > 1 ? 'Ordinateurs' : 'Ordinateur';
case Equipment.scanner:
return this.nbScanners > 1 ? 'Scanners' : 'Scanner';
default:
return null;
}
}
getLabelTypeStructure() {
return typeStructureEnum[this.structureType] ? typeStructureEnum[this.structureType] : '';
}
hasSocialNetwork() {
return ((this.facebook !== null && this.facebook !== '') ||
(this.instagram !== null && this.instagram !== '') ||
(this.linkedin !== null && this.linkedin !== '') ||
(this.twitter !== null && this.twitter !== ''));
}
}
class CardComponent {
constructor(route, router) {
this.route = route;
this.router = router;
this.isClaimed = true;
this.showDetails = new EventEmitter();
this.addToList = new EventEmitter();
this.hover = new EventEmitter();
}
cardClicked() {
this.showDetails.emit(this.structure);
if (!this.isOrientation) {
const queryString = this.route.snapshot.queryParamMap.get('search');
this.router.navigate([], {
relativeTo: this.route,
queryParams: queryString
? {
id: this.structure._id,
search: queryString
}
: {
id: this.structure._id
}
});
}
}
cardHover() {
this.hover.emit(this.structure);
}
cardAddToList() {
this.addToList.emit(this.structure);
}
}
CardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: CardComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: CardComponent, selector: "app-card", inputs: { structure: "structure", isSelected: "isSelected", isOrientation: "isOrientation", isClaimed: "isClaimed" }, outputs: { showDetails: "showDetails", addToList: "addToList", hover: "hover" }, ngImport: i0, template: "<div\n class=\"structure\"\n fxLayout=\"column\"\n (click)=\"cardClicked()\"\n (mouseenter)=\"cardHover()\"\n [ngClass]=\"{ orientation: isOrientation }\">\n <div class=\"left\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between baseline\" fxLayoutGap=\"16px\">\n <div fxLayout=\"column\" fxLayoutAlign=\"end\">\n <span class=\"structure-name\" [ngClass]=\"{ notClaimed: !isClaimed }\">{{ structure.structureName }}</span>\n <span class=\"typeStructure\">{{ structure.getLabelTypeStructure() }}</span>\n </div>\n <div *ngIf=\"!isOrientation\" fxLayout=\"column\" fxLayoutAlign=\"none end\">\n <div class=\"distanceStructure\">\n {{ this.structure.address.commune }}\n </div>\n <div class=\"distance\" *ngIf=\"structure.distance\">\n {{ structure.distance | distance }}\n </div>\n </div>\n </div>\n <div class=\"distance\" *ngIf=\"isOrientation && structure.distance\">\n {{ structure.distance | distance }}\n </div>\n </div>\n <div class=\"actions right\" *ngIf=\"isOrientation\">\n <div\n fxLayout=\"row\"\n *ngIf=\"!isSelected\"\n class=\"selection-button selected\"\n (click)=\"cardAddToList(); $event.stopPropagation()\">\n <app-svg-icon class=\"add-icon\" [type]=\"'ico'\" [icon]=\"'add'\" [iconColor]=\"'green'\"></app-svg-icon>\n Ajouter\n </div>\n <div\n fxLayout=\"row\"\n *ngIf=\"isSelected\"\n class=\"selection-button to-select\"\n (click)=\"cardAddToList(); $event.stopPropagation()\">\n <app-svg-icon class=\"add-icon\" [type]=\"'ico'\" [icon]=\"'validate'\" [iconColor]=\"'white'\"></app-svg-icon>\n Ajout\u00E9\n </div>\n </div>\n</div>\n", styles: [".ico-mglass{position:relative;display:inline-block;background:transparent;border-radius:30px;border:2px solid #333333;height:12px;width:12px;min-width:12px;max-width:12px}.ico-mglass:after{content:\"\";height:2px;width:8px;background:#333333;position:absolute;top:14px;left:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.ico-pin{width:20px;height:20px;max-width:20px;max-height:20px;border-radius:50% 50% 50% 0;background:transparent;transform:rotate(-45deg);left:50%;top:50%;margin:-4px 0 0}.ico-pin.after{content:\"\";width:14px;height:14px;margin:8px 0 0 8px;background:transparent;border-radius:50%}.ico-pin-search{width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background-color:#696969}.ico-pin-search:before{content:\"\";position:absolute;left:5px;top:6px;width:7px;height:7px;border-radius:4px;background-color:#fff}.ico-dot-available{height:12px;width:12px;background-color:#41c29c;border-radius:50%;margin-right:8px}.ico-dot-unavailable{height:12px;width:12px;background-color:#da3635;border-radius:50%;margin-right:8px}.ico-dot-unknown{height:12px;width:12px;background-color:#bdbdbd;border-radius:50%;margin-right:8px}.ico-marker-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;background:#da3635;position:absolute;transform:rotate(-45deg);left:50%;top:50%;margin:-15px 0 0 -15px}.ico-marker-pin.selected{background:#da3635}.ico-marker-pin:after{content:\"\";width:10px;height:10px;margin:10px 0 0 10px;background:#fff;position:absolute;border-radius:50%}.ico-marker-pin-sm{width:18px;height:18px;border-radius:50% 50% 50% 0;background:#696969;transform:rotate(-45deg);margin:0 4px}.ico-marker-pin-sm.absolute{position:absolute;margin:0}.ico-marker-pin-sm:after{content:\"\";width:7px;height:7px;margin:6px 0 0 5px;background:#f8f8f8;position:absolute;border-radius:50%}.ico-profile .head{width:12px;height:12px;border-radius:25px;border:2px solid #333333}.ico-profile .body{width:28px;height:10px;border-radius:20px 20px 0 0;border-top:2px solid #333333;border-right:2px solid #333333;border-left:2px solid #333333}.ico-close .mdiv{height:10px;width:2px;margin-left:5px;background-color:#696969;transform:rotate(45deg);z-index:1}.ico-close .md{height:10px;width:2px;background-color:#696969;transform:rotate(90deg);z-index:2}.ico-close-search{width:16px;height:16px;display:inline-block;vertical-align:middle}.ico-close-search:before{transform:rotate(45deg)}.ico-close-search:after{transform:rotate(-45deg)}.ico-close-search:before,.ico-close-search:after{position:absolute;content:\"\";height:16px;width:2px;background-color:#bdbdbd}.ic-arrow-left{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px}.ic-arrow-left:after,.ic-arrow-left:before{content:\"\";display:block;box-sizing:border-box;position:absolute;left:3px}.ic-arrow-left:after{width:8px;height:8px;border-bottom:2px solid;border-left:2px solid;transform:rotate(45deg);bottom:7px}.ic-arrow-left:before{width:16px;height:2px;bottom:10px;background:currentColor}.ic-print{width:.68em;height:1em;border-style:solid;border-color:currentcolor;background-color:transparent;border-width:.07em;border-radius:.05em;margin:0 .16em}.ic-print:before{width:1em;height:.4em;border-width:.07em .21em 0;border-style:solid;border-color:currentColor currentcolor transparent;border-radius:.05em .05em 0 0;top:.25em;left:50%;transform:translate(-50%);background-image:linear-gradient(transparent 20%,currentcolor 20%,currentcolor 60%,transparent 60%)}.ic-print:after{width:.45em;height:.065em;background-color:currentColor;left:50%;transform:translate(-50%);top:.6em;box-shadow:0 .12em,-.1em -.28em 0 .05em}.ic-mail,.ic-mail:after{display:block;box-sizing:border-box;height:14px;border:2px solid}.ic-mail{color:#4f4f4f;overflow:hidden;transform:scale(var(--ggs, 1));position:absolute;width:18px;border-radius:2px}.ic-mail:after{content:\"\";position:absolute;border-radius:3px;width:14px;transform:rotate(-45deg);bottom:3px;left:0}.ic-phone{color:#4f4f4f;box-sizing:border-box;position:absolute;display:block;width:22px;height:22px;transform:scale(var(--ggs, 1))}.ic-phone:after,.ic-phone:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-phone:after{width:18px;height:18px;border-top-left-radius:1px;border-bottom-right-radius:1px;border-bottom-left-radius:12px;border-left:4px solid;border-bottom:4px solid;left:2px;bottom:2px;background:linear-gradient(to left,currentColor 10px,transparent 0) no-repeat right 11px/6px 4px,linear-gradient(to left,currentColor 10px,transparent 0) no-repeat -1px 0/4px 6px}.ic-phone:before{width:20px;height:20px;border:6px double;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;border-radius:50%;transform:rotate(-45deg);bottom:2px;left:2px}.ic-mouse{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:16px;height:24px;border:2px solid;border-radius:10px}.ic-mouse:after{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:2px;height:6px;background:currentColor;top:3px;left:5px}.ic-wifi{color:#000;position:absolute;margin-left:7px;margin-top:13px;width:6px;height:6px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:before{content:\"\";position:absolute;left:-5px;top:-5px;width:14px;height:14px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:after{content:\"\";position:absolute;left:-9px;top:-9px;width:22px;height:22px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-screen{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:22px;height:14px;border:2px solid;border-radius:3px;margin-top:-4px}.ic-screen:after,.ic-screen:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:10px;height:2px;background:currentColor;top:14px;left:4px}.ic-screen:before{width:2px;height:6px;top:10px;left:8px}.ic-globe-alt,.ic-globe-alt:after,.ic-globe-alt:before{color:#4f4f4f;display:block;box-sizing:border-box;height:18px;border:2px solid}.ic-globe-alt{position:absolute;transform:scale(var(--ggs, 1));width:18px;border-radius:22px}.ic-globe-alt:after,.ic-globe-alt:before{content:\"\";position:absolute;width:8px;border-radius:100%;top:-2px;left:3px}.ic-globe-alt:after{width:24px;height:20px;border:2px solid transparent;border-bottom:2px solid;top:-11px;left:-5px}.ic-camera{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));border:2px solid;border-radius:3px;width:18px;height:12px;perspective:24px}.ic-camera:after,.ic-camera:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-camera:before{border:2px solid;border-left-color:transparent;transform:rotateY(-70deg);width:8px;height:8px;right:-7px;top:0}.ic-camera:after{width:10px;height:5px;border-top:2px solid;border-right:2px solid;top:-5px;right:2px;border-top-right-radius:2px}.ic-calendar-today{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:18px;height:18px;border:2px solid;border-top:4px solid;border-radius:3px}.ic-calendar-today:before{content:\"\";display:block;box-sizing:border-box;position:absolute;background:currentColor;height:4px;width:4px;border-radius:2px;right:2px;bottom:2px}.ic-user{display:block;position:absolute;transform:scale(var(--ggs, 1));box-sizing:border-box;width:12px;height:18px}.ic-user:after,.ic-user:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border:2px solid}.ic-user:before{width:8px;height:8px;border-radius:30px;top:0;left:2px}.ic-user:after{width:12px;height:9px;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;top:9px}.ico-close-details{width:44px;height:44px;border-radius:44px;display:flex;justify-content:center;align-items:center;opacity:.8;cursor:pointer}.ico-close-details:before,.ico-close-details:after{content:\"\";width:24px;height:2px;background-color:#333;position:absolute;border-radius:1px}.ico-close-details:hover{background-color:#f4f4f4}.ico-close-details:before{transform:rotate(45deg)}.ico-close-details:after{transform:rotate(-45deg)}.ico-menu,.ico-menu:before,.ico-menu:after{cursor:pointer;border-radius:1px;height:2px;width:23px;background:#000000;position:absolute;display:block;content:\"\"}.ico-menu:before{top:-6px}.ico-menu:after{bottom:-6px}.ico-gg-eye-alt{position:relative;display:block;transform:scale(var(--ggs, 1));width:24px;height:18px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.ico-gg-eye-alt:after,.ico-gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.ico-gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px #696969,inset 0 0 0 2px #696969;width:24px;height:24px}.ico-gg-eye-alt:before{width:8px;height:8px;border:2px solid #696969;bottom:4px;left:8px;background-color:#696969}.ico-gg-add{box-sizing:border-box;position:relative;display:block;color:#47c562;width:32px;height:32px}.ico-gg-add:after,.ico-gg-add:before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:14px;height:2px;background:currentColor;border-radius:5px;top:8px;left:0px}.ico-gg-add:after{width:2px;height:14px;top:2px;left:6px}.gg-eye-alt{position:relative;display:block;width:18px;height:12px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.gg-eye-alt:after,.gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px,inset 0 0 0 2px;width:18px;height:18px}.gg-eye-alt:before{width:2px;height:2px;border:2px solid black;bottom:3px;left:7px;background-color:#000}.ico-gg-check{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px;border:1px solid transparent;border-radius:100px;color:#fff}.ico-gg-check:after{content:\"\";display:block;box-sizing:border-box;position:absolute;left:5px;top:-3px;width:7px;height:12px;border-width:0 2px 2px 0;border-style:solid;transform-origin:bottom left;transform:rotate(45deg);color:#fff}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.structure{padding:12px 24px;border-bottom:1px solid #f8f8f8!important;min-height:110px;display:flex;justify-content:center;cursor:pointer}@media only screen and (max-width : 600px){.structure{height:unset}}.structure .typeStructure{color:#696969;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;font-style:italic}.structure:hover .structure-name{text-decoration:underline}.structure .structure-name{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.125em;color:#333;padding-bottom:5px;width:100%}.structure .structure-name.notClaimed{color:#da3635}.structure .distanceStructure{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;color:#696969;text-align:right}.selection-button{font-style:normal;font-weight:700;justify-content:center;align-items:center;min-width:120px;height:40px;border-radius:20px}.selected{border:solid 1px #696969;background-color:#fff;color:#000}.to-select{color:#fff;border-style:none;background:#47c562}.distance{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em;color:#696969}.add-icon{color:#47c562}.orientation{flex-direction:row!important}.orientation .left{display:flex;flex-direction:column;justify-content:space-between;width:70%}.orientation .right{margin-top:6%}@media only screen and (max-width : 600px){.orientation .right{margin-left:unset}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i5.SvgIconComponent, selector: "app-svg-icon", inputs: ["icon", "iconClass", "type", "iconColor", "title"] }, { kind: "pipe", type: i5.DistancePipe, name: "distance" }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: CardComponent, decorators: [{
type: Component,
args: [{ selector: 'app-card', template: "<div\n class=\"structure\"\n fxLayout=\"column\"\n (click)=\"cardClicked()\"\n (mouseenter)=\"cardHover()\"\n [ngClass]=\"{ orientation: isOrientation }\">\n <div class=\"left\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between baseline\" fxLayoutGap=\"16px\">\n <div fxLayout=\"column\" fxLayoutAlign=\"end\">\n <span class=\"structure-name\" [ngClass]=\"{ notClaimed: !isClaimed }\">{{ structure.structureName }}</span>\n <span class=\"typeStructure\">{{ structure.getLabelTypeStructure() }}</span>\n </div>\n <div *ngIf=\"!isOrientation\" fxLayout=\"column\" fxLayoutAlign=\"none end\">\n <div class=\"distanceStructure\">\n {{ this.structure.address.commune }}\n </div>\n <div class=\"distance\" *ngIf=\"structure.distance\">\n {{ structure.distance | distance }}\n </div>\n </div>\n </div>\n <div class=\"distance\" *ngIf=\"isOrientation && structure.distance\">\n {{ structure.distance | distance }}\n </div>\n </div>\n <div class=\"actions right\" *ngIf=\"isOrientation\">\n <div\n fxLayout=\"row\"\n *ngIf=\"!isSelected\"\n class=\"selection-button selected\"\n (click)=\"cardAddToList(); $event.stopPropagation()\">\n <app-svg-icon class=\"add-icon\" [type]=\"'ico'\" [icon]=\"'add'\" [iconColor]=\"'green'\"></app-svg-icon>\n Ajouter\n </div>\n <div\n fxLayout=\"row\"\n *ngIf=\"isSelected\"\n class=\"selection-button to-select\"\n (click)=\"cardAddToList(); $event.stopPropagation()\">\n <app-svg-icon class=\"add-icon\" [type]=\"'ico'\" [icon]=\"'validate'\" [iconColor]=\"'white'\"></app-svg-icon>\n Ajout\u00E9\n </div>\n </div>\n</div>\n", styles: [".ico-mglass{position:relative;display:inline-block;background:transparent;border-radius:30px;border:2px solid #333333;height:12px;width:12px;min-width:12px;max-width:12px}.ico-mglass:after{content:\"\";height:2px;width:8px;background:#333333;position:absolute;top:14px;left:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.ico-pin{width:20px;height:20px;max-width:20px;max-height:20px;border-radius:50% 50% 50% 0;background:transparent;transform:rotate(-45deg);left:50%;top:50%;margin:-4px 0 0}.ico-pin.after{content:\"\";width:14px;height:14px;margin:8px 0 0 8px;background:transparent;border-radius:50%}.ico-pin-search{width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background-color:#696969}.ico-pin-search:before{content:\"\";position:absolute;left:5px;top:6px;width:7px;height:7px;border-radius:4px;background-color:#fff}.ico-dot-available{height:12px;width:12px;background-color:#41c29c;border-radius:50%;margin-right:8px}.ico-dot-unavailable{height:12px;width:12px;background-color:#da3635;border-radius:50%;margin-right:8px}.ico-dot-unknown{height:12px;width:12px;background-color:#bdbdbd;border-radius:50%;margin-right:8px}.ico-marker-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;background:#da3635;position:absolute;transform:rotate(-45deg);left:50%;top:50%;margin:-15px 0 0 -15px}.ico-marker-pin.selected{background:#da3635}.ico-marker-pin:after{content:\"\";width:10px;height:10px;margin:10px 0 0 10px;background:#fff;position:absolute;border-radius:50%}.ico-marker-pin-sm{width:18px;height:18px;border-radius:50% 50% 50% 0;background:#696969;transform:rotate(-45deg);margin:0 4px}.ico-marker-pin-sm.absolute{position:absolute;margin:0}.ico-marker-pin-sm:after{content:\"\";width:7px;height:7px;margin:6px 0 0 5px;background:#f8f8f8;position:absolute;border-radius:50%}.ico-profile .head{width:12px;height:12px;border-radius:25px;border:2px solid #333333}.ico-profile .body{width:28px;height:10px;border-radius:20px 20px 0 0;border-top:2px solid #333333;border-right:2px solid #333333;border-left:2px solid #333333}.ico-close .mdiv{height:10px;width:2px;margin-left:5px;background-color:#696969;transform:rotate(45deg);z-index:1}.ico-close .md{height:10px;width:2px;background-color:#696969;transform:rotate(90deg);z-index:2}.ico-close-search{width:16px;height:16px;display:inline-block;vertical-align:middle}.ico-close-search:before{transform:rotate(45deg)}.ico-close-search:after{transform:rotate(-45deg)}.ico-close-search:before,.ico-close-search:after{position:absolute;content:\"\";height:16px;width:2px;background-color:#bdbdbd}.ic-arrow-left{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px}.ic-arrow-left:after,.ic-arrow-left:before{content:\"\";display:block;box-sizing:border-box;position:absolute;left:3px}.ic-arrow-left:after{width:8px;height:8px;border-bottom:2px solid;border-left:2px solid;transform:rotate(45deg);bottom:7px}.ic-arrow-left:before{width:16px;height:2px;bottom:10px;background:currentColor}.ic-print{width:.68em;height:1em;border-style:solid;border-color:currentcolor;background-color:transparent;border-width:.07em;border-radius:.05em;margin:0 .16em}.ic-print:before{width:1em;height:.4em;border-width:.07em .21em 0;border-style:solid;border-color:currentColor currentcolor transparent;border-radius:.05em .05em 0 0;top:.25em;left:50%;transform:translate(-50%);background-image:linear-gradient(transparent 20%,currentcolor 20%,currentcolor 60%,transparent 60%)}.ic-print:after{width:.45em;height:.065em;background-color:currentColor;left:50%;transform:translate(-50%);top:.6em;box-shadow:0 .12em,-.1em -.28em 0 .05em}.ic-mail,.ic-mail:after{display:block;box-sizing:border-box;height:14px;border:2px solid}.ic-mail{color:#4f4f4f;overflow:hidden;transform:scale(var(--ggs, 1));position:absolute;width:18px;border-radius:2px}.ic-mail:after{content:\"\";position:absolute;border-radius:3px;width:14px;transform:rotate(-45deg);bottom:3px;left:0}.ic-phone{color:#4f4f4f;box-sizing:border-box;position:absolute;display:block;width:22px;height:22px;transform:scale(var(--ggs, 1))}.ic-phone:after,.ic-phone:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-phone:after{width:18px;height:18px;border-top-left-radius:1px;border-bottom-right-radius:1px;border-bottom-left-radius:12px;border-left:4px solid;border-bottom:4px solid;left:2px;bottom:2px;background:linear-gradient(to left,currentColor 10px,transparent 0) no-repeat right 11px/6px 4px,linear-gradient(to left,currentColor 10px,transparent 0) no-repeat -1px 0/4px 6px}.ic-phone:before{width:20px;height:20px;border:6px double;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;border-radius:50%;transform:rotate(-45deg);bottom:2px;left:2px}.ic-mouse{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:16px;height:24px;border:2px solid;border-radius:10px}.ic-mouse:after{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:2px;height:6px;background:currentColor;top:3px;left:5px}.ic-wifi{color:#000;position:absolute;margin-left:7px;margin-top:13px;width:6px;height:6px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:before{content:\"\";position:absolute;left:-5px;top:-5px;width:14px;height:14px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:after{content:\"\";position:absolute;left:-9px;top:-9px;width:22px;height:22px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-screen{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:22px;height:14px;border:2px solid;border-radius:3px;margin-top:-4px}.ic-screen:after,.ic-screen:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:10px;height:2px;background:currentColor;top:14px;left:4px}.ic-screen:before{width:2px;height:6px;top:10px;left:8px}.ic-globe-alt,.ic-globe-alt:after,.ic-globe-alt:before{color:#4f4f4f;display:block;box-sizing:border-box;height:18px;border:2px solid}.ic-globe-alt{position:absolute;transform:scale(var(--ggs, 1));width:18px;border-radius:22px}.ic-globe-alt:after,.ic-globe-alt:before{content:\"\";position:absolute;width:8px;border-radius:100%;top:-2px;left:3px}.ic-globe-alt:after{width:24px;height:20px;border:2px solid transparent;border-bottom:2px solid;top:-11px;left:-5px}.ic-camera{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));border:2px solid;border-radius:3px;width:18px;height:12px;perspective:24px}.ic-camera:after,.ic-camera:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-camera:before{border:2px solid;border-left-color:transparent;transform:rotateY(-70deg);width:8px;height:8px;right:-7px;top:0}.ic-camera:after{width:10px;height:5px;border-top:2px solid;border-right:2px solid;top:-5px;right:2px;border-top-right-radius:2px}.ic-calendar-today{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:18px;height:18px;border:2px solid;border-top:4px solid;border-radius:3px}.ic-calendar-today:before{content:\"\";display:block;box-sizing:border-box;position:absolute;background:currentColor;height:4px;width:4px;border-radius:2px;right:2px;bottom:2px}.ic-user{display:block;position:absolute;transform:scale(var(--ggs, 1));box-sizing:border-box;width:12px;height:18px}.ic-user:after,.ic-user:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border:2px solid}.ic-user:before{width:8px;height:8px;border-radius:30px;top:0;left:2px}.ic-user:after{width:12px;height:9px;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;top:9px}.ico-close-details{width:44px;height:44px;border-radius:44px;display:flex;justify-content:center;align-items:center;opacity:.8;cursor:pointer}.ico-close-details:before,.ico-close-details:after{content:\"\";width:24px;height:2px;background-color:#333;position:absolute;border-radius:1px}.ico-close-details:hover{background-color:#f4f4f4}.ico-close-details:before{transform:rotate(45deg)}.ico-close-details:after{transform:rotate(-45deg)}.ico-menu,.ico-menu:before,.ico-menu:after{cursor:pointer;border-radius:1px;height:2px;width:23px;background:#000000;position:absolute;display:block;content:\"\"}.ico-menu:before{top:-6px}.ico-menu:after{bottom:-6px}.ico-gg-eye-alt{position:relative;display:block;transform:scale(var(--ggs, 1));width:24px;height:18px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.ico-gg-eye-alt:after,.ico-gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.ico-gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px #696969,inset 0 0 0 2px #696969;width:24px;height:24px}.ico-gg-eye-alt:before{width:8px;height:8px;border:2px solid #696969;bottom:4px;left:8px;background-color:#696969}.ico-gg-add{box-sizing:border-box;position:relative;display:block;color:#47c562;width:32px;height:32px}.ico-gg-add:after,.ico-gg-add:before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:14px;height:2px;background:currentColor;border-radius:5px;top:8px;left:0px}.ico-gg-add:after{width:2px;height:14px;top:2px;left:6px}.gg-eye-alt{position:relative;display:block;width:18px;height:12px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.gg-eye-alt:after,.gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px,inset 0 0 0 2px;width:18px;height:18px}.gg-eye-alt:before{width:2px;height:2px;border:2px solid black;bottom:3px;left:7px;background-color:#000}.ico-gg-check{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px;border:1px solid transparent;border-radius:100px;color:#fff}.ico-gg-check:after{content:\"\";display:block;box-sizing:border-box;position:absolute;left:5px;top:-3px;width:7px;height:12px;border-width:0 2px 2px 0;border-style:solid;transform-origin:bottom left;transform:rotate(45deg);color:#fff}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.structure{padding:12px 24px;border-bottom:1px solid #f8f8f8!important;min-height:110px;display:flex;justify-content:center;cursor:pointer}@media only screen and (max-width : 600px){.structure{height:unset}}.structure .typeStructure{color:#696969;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;font-style:italic}.structure:hover .structure-name{text-decoration:underline}.structure .structure-name{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.125em;color:#333;padding-bottom:5px;width:100%}.structure .structure-name.notClaimed{color:#da3635}.structure .distanceStructure{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;color:#696969;text-align:right}.selection-button{font-style:normal;font-weight:700;justify-content:center;align-items:center;min-width:120px;height:40px;border-radius:20px}.selected{border:solid 1px #696969;background-color:#fff;color:#000}.to-select{color:#fff;border-style:none;background:#47c562}.distance{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em;color:#696969}.add-icon{color:#47c562}.orientation{flex-direction:row!important}.orientation .left{display:flex;flex-direction:column;justify-content:space-between;width:70%}.orientation .right{margin-top:6%}@media only screen and (max-width : 600px){.orientation .right{margin-left:unset}}\n"] }]
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }]; }, propDecorators: { structure: [{
type: Input
}], isSelected: [{
type: Input
}], isOrientation: [{
type: Input
}], isClaimed: [{
type: Input
}], showDetails: [{
type: Output
}], addToList: [{
type: Output
}], hover: [{
type: Output
}] } });
var TypeModal;
(function (TypeModal) {
TypeModal[TypeModal["accompaniment"] = 1] = "accompaniment";
TypeModal[TypeModal["training"] = 2] = "training";
TypeModal[TypeModal["public"] = 3] = "public";
TypeModal[TypeModal["equipments"] = 4] = "equipments";
TypeModal[TypeModal["moreFilters"] = 5] = "moreFilters";
})(TypeModal || (TypeModal = {}));
class Filter {
constructor(name, value, text) {
this.name = name;
this.value = value.toString();
this.text = text;
this.checked = true;
}
}
class Module {
constructor(id, text, displayText) {
this.id = id;
this.text = text;
this.displayText = displayText;
}
}
const SEARCH_TOKEN = new InjectionToken('structure-list.search.repository');
class ModalFilterComponent {
constructor(searchService) {
this.searchService = searchService;
//checked modules filter list
this.modules = [];
this.searchEvent = new EventEmitter();
this.closeEvent = new EventEmitter();
this.buttonTypeEnum = ButtonType;
// Checkbox variable
this.checkedModules = [];
this.toggledCategories = [];
}
ngOnInit() {
// Manage checkbox
this.checkedModules = this.modules.slice();
}
ngOnChanges(changes) {
if (changes.modalType) {
this.checkedModules = this.modules.slice();
}
}
// Management of the checkbox event (Check / Uncheck)
onCheckboxChange(event, categ, text) {
const checkValue = event.target.value;
if (event.target.checked) {
this.checkedModules.push(new Module(checkValue, categ, text ? text : checkValue));
}
else {
// Check if the module is present in the list and remove it
if (this.searchService.getIndex(this.checkedModules, checkValue, categ) > -1) {
this.checkedModules.splice(this.searchService.getIndex(this.checkedModules, checkValue, categ), 1);
}
}
}
// Clear only filters in the current modal
clearFilters() {
this.categories.forEach((categ) => {
categ.modules.forEach((module) => {
const index = this.searchService.getIndex(this.checkedModules, module.id, categ.id);
if (index > -1) {
this.checkedModules.splice(index, 1);
}
});
});
this.emitModules(this.checkedModules);
}
// Sends an array containing all modules
emitModules(m) {
this.searchEvent.emit(m);
}
getModalType() {
switch (this.modalType) {
case TypeModal.accompaniment:
return 'accompaniment';
case TypeModal.training:
return 'training';
case TypeModal.public:
return 'public';
case TypeModal.equipments:
return 'equipments';
case TypeModal.moreFilters:
return 'moreFilters';
default:
return '';
}
}
closeModal() {
this.closeEvent.emit();
}
handleCategoryCheckBox(event, category) {
const modules = this.categories.filter((c) => c.id === category.id)[0].modules;
if (event.target.checked) {
for (const module of modules) {
if (this.searchService.getIndex(this.checkedModules, module.id, category.id) === -1) {
this.checkedModules.push(new Module(module.id, category.id, module.displayText));
}
}
}
else {
for (const module of modules) {
if (this.searchService.getIndex(this.checkedModules, module.id, category.id) > -1) {
this.checkedModules.splice(this.searchService.getIndex(this.checkedModules, module.id, category.id), 1);
}
}
}
}
toggleShowCategory(categoryId) {
if (this.toggledCategories.includes(categoryId)) {
const index = this.toggledCategories.indexOf(categoryId);
this.toggledCategories.splice(index);
}
else {
this.toggledCategories.push(categoryId);
}
}
getCategoryCheckboxStatus(c) {
const selectedModule = this.checkedModules.filter((m) => m.text === c.id);
if (selectedModule.length === c.modules.length) {
return 'checked';
}
else if (selectedModule.length === 0) {
return 'unchecked';
}
else if (selectedModule.length && selectedModule.length > 0) {
return 'halfChecked';
}
}
}
ModalFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModalFilterComponent, deps: [{ token: SEARCH_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
ModalFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ModalFilterComponent, selector: "app-modal-filter", inputs: { modalType: "modalType", categories: "categories", modules: "modules" }, outputs: { searchEvent: "searchEvent", closeEvent: "closeEvent" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"modalType\" fxLayout=\"column\" fxLayoutAlign=\"center center\" [ngClass]=\"['modal', 'modal' + getModalType()]\">\n <div class=\"body-wrap\" fxLayout=\"column\" fxLayoutAlign=\"space-between\">\n <div class=\"titleFilter\" fxLayout=\"row\" fxLayoutAlign=\"space-between\">\n <span>Filtres</span>\n <div (click)=\"closeModal()\" class=\"ico-close-details\"></div>\n </div>\n <!-- Filter with single category -->\n <div class=\"contentModal\" fxLayout=\"row wrap\" fxLayoutAlign=\"flex-start\" *ngIf=\"categories.length === 1\">\n <div class=\"blockFiltre\" *ngFor=\"let c of categories\">\n <ul class=\"blockLigne\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"ligneFiltre\" *ngFor=\"let module of c.modules\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem\">\n <label fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <input\n type=\"checkbox\"\n [checked]=\"searchService.getIndex(checkedModules, module.id, c.id) > -1\"\n [value]=\"module.id\"\n (change)=\"onCheckboxChange($event, c.id, module.text)\" />\n <span class=\"customCheck customCheckPrimary\"></span>\n <div class=\"label\">{{ module.text }}</div>\n </label>\n </div>\n </li>\n </div>\n </ul>\n </div>\n </div>\n <!-- \"Other filters\" backdrop fullwidth modal -->\n <div\n class=\"contentModal maxModal\"\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"flex-start\"\n *ngIf=\"categories.length > 1 && getModalType() === 'moreFilters'\">\n <div\n class=\"blockLigne\"\n (clickOutside)=\"getModalType() === 'moreFilters' ? closeModal() : ''\"\n [ngClass]=\"{ backDropModal: getModalType() === 'moreFilters' }\">\n <div class=\"headerMoreFilters\" *ngIf=\"getModalType() === 'moreFilters'\">\n Plus de filtres\n <div class=\"iconClose\" (click)=\"closeModal()\">\n <app-svg-icon [iconClass]=\"'icon-28'\" [iconColor]=\"'grey-1'\" [icon]=\"'closeModal'\" [type]=\"'ico'\"></app-svg-icon>\n </div>\n </div>\n <div class=\"scroll-container\">\n <div class=\"blockFiltre\" *ngFor=\"let c of categories\">\n <p>{{ c.name }}</p>\n <ul class=\"blockLigne smallList\" [ngClass]=\"{ show: this.toggledCategories.includes(c.id) }\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"ligneFiltre\" *ngFor=\"let module of c.modules\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem\">\n <label fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <input\n type=\"checkbox\"\n [checked]=\"searchService.getIndex(checkedModules, module.id, c.id) > -1\"\n [value]=\"module.id\"\n (change)=\"onCheckboxChange($event, c.id, module.displayText)\" />\n <span class=\"customCheck customCheckPrimary\"></span>\n <div class=\"label\">{{ module.text }}</div>\n </label>\n </div>\n </li>\n </div>\n </ul>\n </div>\n </div>\n <div\n class=\"footer\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n [ngClass]=\"{ backDropModalFooter: getModalType() === 'moreFilters' }\">\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalSecondary\"\n [text]=\"'Effacer'\"\n (click)=\"clearFilters()\"\n tabindex=\"0\"></app-button>\n </div>\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalPrimary\"\n [text]=\"'Appliquer'\"\n (click)=\"emitModules(checkedModules)\"></app-button>\n </div>\n </div>\n </div>\n </div>\n <!-- Filter with multiple categories -->\n <div\n class=\"contentModal maxModal max-height\"\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"flex-start\"\n *ngIf=\"categories.length > 1 && getModalType() !== 'moreFilters'\">\n <ul class=\"blockLigne\">\n <div class=\"blockFiltre\" *ngFor=\"let c of categories\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem categoryCheckBox\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <label>\n <input\n type=\"checkbox\"\n class=\"multiCheck\"\n [checked]=\"getCategoryCheckboxStatus(c) === 'checked'\"\n (change)=\"handleCategoryCheckBox($event, c)\" />\n <span\n class=\"customCheck customCheckPrimary\"\n [ngClass]=\"{ halfCheck: getCategoryCheckboxStatus(c) === 'halfChecked' }\"></span>\n </label>\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n class=\"w-100 clickable\"\n (click)=\"toggleShowCategory(c.id)\">\n <div class=\"label\">{{ c.name }}</div>\n <div class=\"arrow\" [ngClass]=\"{ toggled: this.toggledCategories.includes(c.id) }\"></div>\n </div>\n </div>\n <ul class=\"blockLigne smallList\" [ngClass]=\"{ show: this.toggledCategories.includes(c.id) }\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"ligneFiltre\" *ngFor=\"let module of c.modules\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem\">\n <label fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <input\n type=\"checkbox\"\n [checked]=\"searchService.getIndex(checkedModules, module.id, c.id) > -1\"\n [value]=\"module.id\"\n (change)=\"onCheckboxChange($event, c.id, module.text)\" />\n <span class=\"customCheck customCheckPrimary\"></span>\n <div class=\"label\">{{ module.text }}</div>\n </label>\n </div>\n </li>\n </div>\n </ul>\n </div>\n </li>\n </div>\n </ul>\n </div>\n <div\n class=\"footer\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n [ngClass]=\"{ backDropModalFooter: getModalType() === 'moreFilters' }\"\n *ngIf=\"getModalType() !== 'moreFilters'\">\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalSecondary\"\n [text]=\"'Effacer'\"\n (click)=\"clearFilters()\"\n tabindex=\"0\"></app-button>\n </div>\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalPrimary\"\n [text]=\"'Appliquer'\"\n (click)=\"emitModules(checkedModules)\"></app-button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".ico-mglass{position:relative;display:inline-block;background:transparent;border-radius:30px;border:2px solid #333333;height:12px;width:12px;min-width:12px;max-width:12px}.ico-mglass:after{content:\"\";height:2px;width:8px;background:#333333;position:absolute;top:14px;left:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.ico-pin{width:20px;height:20px;max-width:20px;max-height:20px;border-radius:50% 50% 50% 0;background:transparent;transform:rotate(-45deg);left:50%;top:50%;margin:-4px 0 0}.ico-pin.after{content:\"\";width:14px;height:14px;margin:8px 0 0 8px;background:transparent;border-radius:50%}.ico-pin-search{width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background-color:#696969}.ico-pin-search:before{content:\"\";position:absolute;left:5px;top:6px;width:7px;height:7px;border-radius:4px;background-color:#fff}.ico-dot-available{height:12px;width:12px;background-color:#41c29c;border-radius:50%;margin-right:8px}.ico-dot-unavailable{height:12px;width:12px;background-color:#da3635;border-radius:50%;margin-right:8px}.ico-dot-unknown{height:12px;width:12px;background-color:#bdbdbd;border-radius:50%;margin-right:8px}.ico-marker-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;background:#da3635;position:absolute;transform:rotate(-45deg);left:50%;top:50%;margin:-15px 0 0 -15px}.ico-marker-pin.selected{background:#da3635}.ico-marker-pin:after{content:\"\";width:10px;height:10px;margin:10px 0 0 10px;background:#fff;position:absolute;border-radius:50%}.ico-marker-pin-sm{width:18px;height:18px;border-radius:50% 50% 50% 0;background:#696969;transform:rotate(-45deg);margin:0 4px}.ico-marker-pin-sm.absolute{position:absolute;margin:0}.ico-marker-pin-sm:after{content:\"\";width:7px;height:7px;margin:6px 0 0 5px;background:#f8f8f8;position:absolute;border-radius:50%}.ico-profile .head{width:12px;height:12px;border-radius:25px;border:2px solid #333333}.ico-profile .body{width:28px;height:10px;border-radius:20px 20px 0 0;border-top:2px solid #333333;border-right:2px solid #333333;border-left:2px solid #333333}.ico-close .mdiv{height:10px;width:2px;margin-left:5px;background-color:#696969;transform:rotate(45deg);z-index:1}.ico-close .md{height:10px;width:2px;background-color:#696969;transform:rotate(90deg);z-index:2}.ico-close-search{width:16px;height:16px;display:inline-block;vertical-align:middle}.ico-close-search:before{transform:rotate(45deg)}.ico-close-search:after{transform:rotate(-45deg)}.ico-close-search:before,.ico-close-search:after{position:absolute;content:\"\";height:16px;width:2px;background-color:#bdbdbd}.ic-arrow-left{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px}.ic-arrow-left:after,.ic-arrow-left:before{content:\"\";display:block;box-sizing:border-box;position:absolute;left:3px}.ic-arrow-left:after{width:8px;height:8px;border-bottom:2px solid;border-left:2px solid;transform:rotate(45deg);bottom:7px}.ic-arrow-left:before{width:16px;height:2px;bottom:10px;background:currentColor}.ic-print{width:.68em;height:1em;border-style:solid;border-color:currentcolor;background-color:transparent;border-width:.07em;border-radius:.05em;margin:0 .16em}.ic-print:before{width:1em;height:.4em;border-width:.07em .21em 0;border-style:solid;border-color:currentColor currentcolor transparent;border-radius:.05em .05em 0 0;top:.25em;left:50%;transform:translate(-50%);background-image:linear-gradient(transparent 20%,currentcolor 20%,currentcolor 60%,transparent 60%)}.ic-print:after{width:.45em;height:.065em;background-color:currentColor;left:50%;transform:translate(-50%);top:.6em;box-shadow:0 .12em,-.1em -.28em 0 .05em}.ic-mail,.ic-mail:after{display:block;box-sizing:border-box;height:14px;border:2px solid}.ic-mail{color:#4f4f4f;overflow:hidden;transform:scale(var(--ggs, 1));position:absolute;width:18px;border-radius:2px}.ic-mail:after{content:\"\";position:absolute;border-radius:3px;width:14px;transform:rotate(-45deg);bottom:3px;left:0}.ic-phone{color:#4f4f4f;box-sizing:border-box;position:absolute;display:block;width:22px;height:22px;transform:scale(var(--ggs, 1))}.ic-phone:after,.ic-phone:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-phone:after{width:18px;height:18px;border-top-left-radius:1px;border-bottom-right-radius:1px;border-bottom-left-radius:12px;border-left:4px solid;border-bottom:4px solid;left:2px;bottom:2px;background:linear-gradient(to left,currentColor 10px,transparent 0) no-repeat right 11px/6px 4px,linear-gradient(to left,currentColor 10px,transparent 0) no-repeat -1px 0/4px 6px}.ic-phone:before{width:20px;height:20px;border:6px double;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;border-radius:50%;transform:rotate(-45deg);bottom:2px;left:2px}.ic-mouse{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:16px;height:24px;border:2px solid;border-radius:10px}.ic-mouse:after{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:2px;height:6px;background:currentColor;top:3px;left:5px}.ic-wifi{color:#000;position:absolute;margin-left:7px;margin-top:13px;width:6px;height:6px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:before{content:\"\";position:absolute;left:-5px;top:-5px;width:14px;height:14px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:after{content:\"\";position:absolute;left:-9px;top:-9px;width:22px;height:22px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-screen{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:22px;height:14px;border:2px solid;border-radius:3px;margin-top:-4px}.ic-screen:after,.ic-screen:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:10px;height:2px;background:currentColor;top:14px;left:4px}.ic-screen:before{width:2px;height:6px;top:10px;left:8px}.ic-globe-alt,.ic-globe-alt:after,.ic-globe-alt:before{color:#4f4f4f;display:block;box-sizing:border-box;height:18px;border:2px solid}.ic-globe-alt{position:absolute;transform:scale(var(--ggs, 1));width:18px;border-radius:22px}.ic-globe-alt:after,.ic-globe-alt:before{content:\"\";position:absolute;width:8px;border-radius:100%;top:-2px;left:3px}.ic-globe-alt:after{width:24px;height:20px;border:2px solid transparent;border-bottom:2px solid;top:-11px;left:-5px}.ic-camera{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));border:2px solid;border-radius:3px;width:18px;height:12px;perspective:24px}.ic-camera:after,.ic-camera:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-camera:before{border:2px solid;border-left-color:transparent;transform:rotateY(-70deg);width:8px;height:8px;right:-7px;top:0}.ic-camera:after{width:10px;height:5px;border-top:2px solid;border-right:2px solid;top:-5px;right:2px;border-top-right-radius:2px}.ic-calendar-today{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:18px;height:18px;border:2px solid;border-top:4px solid;border-radius:3px}.ic-calendar-today:before{content:\"\";display:block;box-sizing:border-box;position:absolute;background:currentColor;height:4px;width:4px;border-radius:2px;right:2px;bottom:2px}.ic-user{display:block;position:absolute;transform:scale(var(--ggs, 1));box-sizing:border-box;width:12px;height:18px}.ic-user:after,.ic-user:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border:2px solid}.ic-user:before{width:8px;height:8px;border-radius:30px;top:0;left:2px}.ic-user:after{width:12px;height:9px;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;top:9px}.ico-close-details{width:44px;height:44px;border-radius:44px;display:flex;justify-content:center;align-items:center;opacity:.8;cursor:pointer}.ico-close-details:before,.ico-close-details:after{content:\"\";width:24px;height:2px;background-color:#333;position:absolute;border-radius:1px}.ico-close-details:hover{background-color:#f4f4f4}.ico-close-details:before{transform:rotate(45deg)}.ico-close-details:after{transform:rotate(-45deg)}.ico-menu,.ico-menu:before,.ico-menu:after{cursor:pointer;border-radius:1px;height:2px;width:23px;background:#000000;position:absolute;display:block;content:\"\"}.ico-menu:before{top:-6px}.ico-menu:after{bottom:-6px}.ico-gg-eye-alt{position:relative;display:block;transform:scale(var(--ggs, 1));width:24px;height:18px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.ico-gg-eye-alt:after,.ico-gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.ico-gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px #696969,inset 0 0 0 2px #696969;width:24px;height:24px}.ico-gg-eye-alt:before{width:8px;height:8px;border:2px solid #696969;bottom:4px;left:8px;background-color:#696969}.ico-gg-add{box-sizing:border-box;position:relative;display:block;color:#47c562;width:32px;height:32px}.ico-gg-add:after,.ico-gg-add:before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:14px;height:2px;background:currentColor;border-radius:5px;top:8px;left:0px}.ico-gg-add:after{width:2px;height:14px;top:2px;left:6px}.gg-eye-alt{position:relative;display:block;width:18px;height:12px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.gg-eye-alt:after,.gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px,inset 0 0 0 2px;width:18px;height:18px}.gg-eye-alt:before{width:2px;height:2px;border:2px solid black;bottom:3px;left:7px;background-color:#000}.ico-gg-check{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px;border:1px solid transparent;border-radius:100px;color:#fff}.ico-gg-check:after{content:\"\";display:block;box-sizing:border-box;position:absolute;left:5px;top:-3px;width:7px;height:12px;border-width:0 2px 2px 0;border-style:solid;transform-origin:bottom left;transform:rotate(45deg);color:#fff}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.modalaccompaniment{left:212px}@media only screen and (min-width : 1201px){.modalaccompaniment{left:273px}}.modaltraining{left:331px}@media only screen and (min-width : 1201px){.modaltraining{left:417px}}.modalpublic{left:431px}@media only screen and (min-width : 1201px){.modalpublic{left:513px}}.modalequipments{left:519px}@media only screen and (min-width : 1201px){.modalequipments{left:603px}}.maxModal .blockLigne{box-sizing:border-box;width:360px}.maxModal .blockLigne .smallList{display:block;box-sizing:border-box;background:#f8f8f8;max-width:300px;padding:.5rem!important;margin-top:1rem!important}.modal{max-width:360px;width:auto;z-index:1004!important;position:fixed;box-shadow:0 4px 16px #00000040;border-radius:8px;margin-top:25px;background:white}@media only screen and (max-width : 600px){.modal{height:100%;max-height:auto;max-width:auto;width:100%;position:fixed;top:0;left:0;border:none;padding:0}}@media only screen and (max-width : 600px){.modal .body-wrap{height:100vh;height:-webkit-fill-available}}.modal .body-wrap .titleFilter{display:none!important;margin:27px 25px 0;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.625em}@media only screen and (max-width : 600px){.modal .body-wrap .titleFilter{display:flex!important}}.modal .contentModal{overflow-y:auto;max-width:1100px;border-bottom:1px solid #b4bbbf}@media only screen and (max-width : 600px){.modal .contentModal{max-height:none;height:100%}}.modal .contentModal .blockFiltre{width:auto;margin:25px 20px;margin-bottom:calc(25px - 1rem);min-width:200px}@media only screen and (max-width : 600px){.modal .contentModal .blockFiltre{margin:0 18px;padding:25px 0;min-width:0}}.modal .contentModal .blockFiltre .categoryCheckBox .halfCheck{position:relative}.modal .contentModal .blockFiltre .categoryCheckBox .halfCheck:before{content:\"\";position:absolute;display:block;width:10px;left:4px;top:8px;transform:rotate(0);border-bottom:solid 2px #4f4f4f;border-radius:0}.modal .contentModal .blockFiltre .categoryCheckBox ul{display:none}.modal .contentModal .blockFiltre .categoryCheckBox .show{display:block!important}.modal .contentModal .blockLigne{padding-left:0;margin:0}.modal .contentModal .blockLigne li{margin-bottom:1rem}.modal .contentModal label{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;color:#333}.modal .contentModal .arrow{cursor:pointer;margin-left:auto;background-color:transparent;border-bottom:1px solid black;border-right:1px solid black;transform:translateY(-25%) rotate(45deg);height:7px;width:7px;transition:all .3s ease;margin-top:-5px}.modal .contentModal .toggled{transform:translateY(25%) rotate(-135deg)}.modal .contentModal.max-height{max-height:50vh;overflow-y:overlay}.modal .footer{box-sizing:border-box;padding:.5rem}.modal .footer .reset{width:45%;text-align:center;color:#bdbdbd}.modal .footer .half-width{width:50%;padding:0 4px}.modalmoreFilters{width:100%;min-width:100%;height:100vh;min-height:100vh;top:0;left:0;display:flex;flex-direction:column;background:rgba(0,0,0,.8)!important;margin:0;border-radius:0}.modalmoreFilters .scroll-container{max-height:390px;overflow-y:scroll}.modalmoreFilters .maxModal{max-width:360px;margin:10% auto auto;background:white;border-radius:8px}.modalmoreFilters .backDropModal{background:white;width:360px;min-height:40vh}.modalmoreFilters .backDropModalFooter{background:white;width:360px;margin:auto;border-radius:0 0 8px 8px}.modalmoreFilters .headerMoreFilters{position:relative;text-align:center;color:#333;background:white;padding:1rem;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.125em;align-items:center;justify-content:center;border-bottom:solid 1px #e9e9e9;border-radius:8px 8px 0 0}.modalmoreFilters .headerMoreFilters .iconClose{cursor:pointer;position:absolute;right:14px;top:7px}a{border:1px solid transparent;padding:8px 8px 6px;color:#da3635;outline:none;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;text-decoration:underline}a:hover{color:#b85959}a:focus{color:#da3635;border-color:#da3635;border-radius:4px}a:active{border:none;color:#c9ecf3}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i5.SvgIconComponent, selector: "app-svg-icon", inputs: ["icon", "iconClass", "type", "iconColor", "title"] }, { kind: "component", type: i5.ButtonComponent, selector: "app-button", inputs: ["style", "text", "type", "iconType", "iconBtn", "iconPos", "extraClass", "disabled", "active"], outputs: ["action"] }, { kind: "directive", type: i5.ModalOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ModalFilterComponent, decorators: [{
type: Component,
args: [{ selector: 'app-modal-filter', template: "<div *ngIf=\"modalType\" fxLayout=\"column\" fxLayoutAlign=\"center center\" [ngClass]=\"['modal', 'modal' + getModalType()]\">\n <div class=\"body-wrap\" fxLayout=\"column\" fxLayoutAlign=\"space-between\">\n <div class=\"titleFilter\" fxLayout=\"row\" fxLayoutAlign=\"space-between\">\n <span>Filtres</span>\n <div (click)=\"closeModal()\" class=\"ico-close-details\"></div>\n </div>\n <!-- Filter with single category -->\n <div class=\"contentModal\" fxLayout=\"row wrap\" fxLayoutAlign=\"flex-start\" *ngIf=\"categories.length === 1\">\n <div class=\"blockFiltre\" *ngFor=\"let c of categories\">\n <ul class=\"blockLigne\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"ligneFiltre\" *ngFor=\"let module of c.modules\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem\">\n <label fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <input\n type=\"checkbox\"\n [checked]=\"searchService.getIndex(checkedModules, module.id, c.id) > -1\"\n [value]=\"module.id\"\n (change)=\"onCheckboxChange($event, c.id, module.text)\" />\n <span class=\"customCheck customCheckPrimary\"></span>\n <div class=\"label\">{{ module.text }}</div>\n </label>\n </div>\n </li>\n </div>\n </ul>\n </div>\n </div>\n <!-- \"Other filters\" backdrop fullwidth modal -->\n <div\n class=\"contentModal maxModal\"\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"flex-start\"\n *ngIf=\"categories.length > 1 && getModalType() === 'moreFilters'\">\n <div\n class=\"blockLigne\"\n (clickOutside)=\"getModalType() === 'moreFilters' ? closeModal() : ''\"\n [ngClass]=\"{ backDropModal: getModalType() === 'moreFilters' }\">\n <div class=\"headerMoreFilters\" *ngIf=\"getModalType() === 'moreFilters'\">\n Plus de filtres\n <div class=\"iconClose\" (click)=\"closeModal()\">\n <app-svg-icon [iconClass]=\"'icon-28'\" [iconColor]=\"'grey-1'\" [icon]=\"'closeModal'\" [type]=\"'ico'\"></app-svg-icon>\n </div>\n </div>\n <div class=\"scroll-container\">\n <div class=\"blockFiltre\" *ngFor=\"let c of categories\">\n <p>{{ c.name }}</p>\n <ul class=\"blockLigne smallList\" [ngClass]=\"{ show: this.toggledCategories.includes(c.id) }\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"ligneFiltre\" *ngFor=\"let module of c.modules\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem\">\n <label fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <input\n type=\"checkbox\"\n [checked]=\"searchService.getIndex(checkedModules, module.id, c.id) > -1\"\n [value]=\"module.id\"\n (change)=\"onCheckboxChange($event, c.id, module.displayText)\" />\n <span class=\"customCheck customCheckPrimary\"></span>\n <div class=\"label\">{{ module.text }}</div>\n </label>\n </div>\n </li>\n </div>\n </ul>\n </div>\n </div>\n <div\n class=\"footer\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n [ngClass]=\"{ backDropModalFooter: getModalType() === 'moreFilters' }\">\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalSecondary\"\n [text]=\"'Effacer'\"\n (click)=\"clearFilters()\"\n tabindex=\"0\"></app-button>\n </div>\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalPrimary\"\n [text]=\"'Appliquer'\"\n (click)=\"emitModules(checkedModules)\"></app-button>\n </div>\n </div>\n </div>\n </div>\n <!-- Filter with multiple categories -->\n <div\n class=\"contentModal maxModal max-height\"\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"flex-start\"\n *ngIf=\"categories.length > 1 && getModalType() !== 'moreFilters'\">\n <ul class=\"blockLigne\">\n <div class=\"blockFiltre\" *ngFor=\"let c of categories\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem categoryCheckBox\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <label>\n <input\n type=\"checkbox\"\n class=\"multiCheck\"\n [checked]=\"getCategoryCheckboxStatus(c) === 'checked'\"\n (change)=\"handleCategoryCheckBox($event, c)\" />\n <span\n class=\"customCheck customCheckPrimary\"\n [ngClass]=\"{ halfCheck: getCategoryCheckboxStatus(c) === 'halfChecked' }\"></span>\n </label>\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n class=\"w-100 clickable\"\n (click)=\"toggleShowCategory(c.id)\">\n <div class=\"label\">{{ c.name }}</div>\n <div class=\"arrow\" [ngClass]=\"{ toggled: this.toggledCategories.includes(c.id) }\"></div>\n </div>\n </div>\n <ul class=\"blockLigne smallList\" [ngClass]=\"{ show: this.toggledCategories.includes(c.id) }\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"ligneFiltre\" *ngFor=\"let module of c.modules\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem\">\n <label fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <input\n type=\"checkbox\"\n [checked]=\"searchService.getIndex(checkedModules, module.id, c.id) > -1\"\n [value]=\"module.id\"\n (change)=\"onCheckboxChange($event, c.id, module.text)\" />\n <span class=\"customCheck customCheckPrimary\"></span>\n <div class=\"label\">{{ module.text }}</div>\n </label>\n </div>\n </li>\n </div>\n </ul>\n </div>\n </li>\n </div>\n </ul>\n </div>\n <div\n class=\"footer\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n [ngClass]=\"{ backDropModalFooter: getModalType() === 'moreFilters' }\"\n *ngIf=\"getModalType() !== 'moreFilters'\">\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalSecondary\"\n [text]=\"'Effacer'\"\n (click)=\"clearFilters()\"\n tabindex=\"0\"></app-button>\n </div>\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalPrimary\"\n [text]=\"'Appliquer'\"\n (click)=\"emitModules(checkedModules)\"></app-button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".ico-mglass{position:relative;display:inline-block;background:transparent;border-radius:30px;border:2px solid #333333;height:12px;width:12px;min-width:12px;max-width:12px}.ico-mglass:after{content:\"\";height:2px;width:8px;background:#333333;position:absolute;top:14px;left:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.ico-pin{width:20px;height:20px;max-width:20px;max-height:20px;border-radius:50% 50% 50% 0;background:transparent;transform:rotate(-45deg);left:50%;top:50%;margin:-4px 0 0}.ico-pin.after{content:\"\";width:14px;height:14px;margin:8px 0 0 8px;background:transparent;border-radius:50%}.ico-pin-search{width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background-color:#696969}.ico-pin-search:before{content:\"\";position:absolute;left:5px;top:6px;width:7px;height:7px;border-radius:4px;background-color:#fff}.ico-dot-available{height:12px;width:12px;background-color:#41c29c;border-radius:50%;margin-right:8px}.ico-dot-unavailable{height:12px;width:12px;background-color:#da3635;border-radius:50%;margin-right:8px}.ico-dot-unknown{height:12px;width:12px;background-color:#bdbdbd;border-radius:50%;margin-right:8px}.ico-marker-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;background:#da3635;position:absolute;transform:rotate(-45deg);left:50%;top:50%;margin:-15px 0 0 -15px}.ico-marker-pin.selected{background:#da3635}.ico-marker-pin:after{content:\"\";width:10px;height:10px;margin:10px 0 0 10px;background:#fff;position:absolute;border-radius:50%}.ico-marker-pin-sm{width:18px;height:18px;border-radius:50% 50% 50% 0;background:#696969;transform:rotate(-45deg);margin:0 4px}.ico-marker-pin-sm.absolute{position:absolute;margin:0}.ico-marker-pin-sm:after{content:\"\";width:7px;height:7px;margin:6px 0 0 5px;background:#f8f8f8;position:absolute;border-radius:50%}.ico-profile .head{width:12px;height:12px;border-radius:25px;border:2px solid #333333}.ico-profile .body{width:28px;height:10px;border-radius:20px 20px 0 0;border-top:2px solid #333333;border-right:2px solid #333333;border-left:2px solid #333333}.ico-close .mdiv{height:10px;width:2px;margin-left:5px;background-color:#696969;transform:rotate(45deg);z-index:1}.ico-close .md{height:10px;width:2px;background-color:#696969;transform:rotate(90deg);z-index:2}.ico-close-search{width:16px;height:16px;display:inline-block;vertical-align:middle}.ico-close-search:before{transform:rotate(45deg)}.ico-close-search:after{transform:rotate(-45deg)}.ico-close-search:before,.ico-close-search:after{position:absolute;content:\"\";height:16px;width:2px;background-color:#bdbdbd}.ic-arrow-left{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px}.ic-arrow-left:after,.ic-arrow-left:before{content:\"\";display:block;box-sizing:border-box;position:absolute;left:3px}.ic-arrow-left:after{width:8px;height:8px;border-bottom:2px solid;border-left:2px solid;transform:rotate(45deg);bottom:7px}.ic-arrow-left:before{width:16px;height:2px;bottom:10px;background:currentColor}.ic-print{width:.68em;height:1em;border-style:solid;border-color:currentcolor;background-color:transparent;border-width:.07em;border-radius:.05em;margin:0 .16em}.ic-print:before{width:1em;height:.4em;border-width:.07em .21em 0;border-style:solid;border-color:currentColor currentcolor transparent;border-radius:.05em .05em 0 0;top:.25em;left:50%;transform:translate(-50%);background-image:linear-gradient(transparent 20%,currentcolor 20%,currentcolor 60%,transparent 60%)}.ic-print:after{width:.45em;height:.065em;background-color:currentColor;left:50%;transform:translate(-50%);top:.6em;box-shadow:0 .12em,-.1em -.28em 0 .05em}.ic-mail,.ic-mail:after{display:block;box-sizing:border-box;height:14px;border:2px solid}.ic-mail{color:#4f4f4f;overflow:hidden;transform:scale(var(--ggs, 1));position:absolute;width:18px;border-radius:2px}.ic-mail:after{content:\"\";position:absolute;border-radius:3px;width:14px;transform:rotate(-45deg);bottom:3px;left:0}.ic-phone{color:#4f4f4f;box-sizing:border-box;position:absolute;display:block;width:22px;height:22px;transform:scale(var(--ggs, 1))}.ic-phone:after,.ic-phone:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-phone:after{width:18px;height:18px;border-top-left-radius:1px;border-bottom-right-radius:1px;border-bottom-left-radius:12px;border-left:4px solid;border-bottom:4px solid;left:2px;bottom:2px;background:linear-gradient(to left,currentColor 10px,transparent 0) no-repeat right 11px/6px 4px,linear-gradient(to left,currentColor 10px,transparent 0) no-repeat -1px 0/4px 6px}.ic-phone:before{width:20px;height:20px;border:6px double;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;border-radius:50%;transform:rotate(-45deg);bottom:2px;left:2px}.ic-mouse{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:16px;height:24px;border:2px solid;border-radius:10px}.ic-mouse:after{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:2px;height:6px;background:currentColor;top:3px;left:5px}.ic-wifi{color:#000;position:absolute;margin-left:7px;margin-top:13px;width:6px;height:6px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:before{content:\"\";position:absolute;left:-5px;top:-5px;width:14px;height:14px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:after{content:\"\";position:absolute;left:-9px;top:-9px;width:22px;height:22px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-screen{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:22px;height:14px;border:2px solid;border-radius:3px;margin-top:-4px}.ic-screen:after,.ic-screen:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:10px;height:2px;background:currentColor;top:14px;left:4px}.ic-screen:before{width:2px;height:6px;top:10px;left:8px}.ic-globe-alt,.ic-globe-alt:after,.ic-globe-alt:before{color:#4f4f4f;display:block;box-sizing:border-box;height:18px;border:2px solid}.ic-globe-alt{position:absolute;transform:scale(var(--ggs, 1));width:18px;border-radius:22px}.ic-globe-alt:after,.ic-globe-alt:before{content:\"\";position:absolute;width:8px;border-radius:100%;top:-2px;left:3px}.ic-globe-alt:after{width:24px;height:20px;border:2px solid transparent;border-bottom:2px solid;top:-11px;left:-5px}.ic-camera{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));border:2px solid;border-radius:3px;width:18px;height:12px;perspective:24px}.ic-camera:after,.ic-camera:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-camera:before{border:2px solid;border-left-color:transparent;transform:rotateY(-70deg);width:8px;height:8px;right:-7px;top:0}.ic-camera:after{width:10px;height:5px;border-top:2px solid;border-right:2px solid;top:-5px;right:2px;border-top-right-radius:2px}.ic-calendar-today{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:18px;height:18px;border:2px solid;border-top:4px solid;border-radius:3px}.ic-calendar-today:before{content:\"\";display:block;box-sizing:border-box;position:absolute;background:currentColor;height:4px;width:4px;border-radius:2px;right:2px;bottom:2px}.ic-user{display:block;position:absolute;transform:scale(var(--ggs, 1));box-sizing:border-box;width:12px;height:18px}.ic-user:after,.ic-user:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border:2px solid}.ic-user:before{width:8px;height:8px;border-radius:30px;top:0;left:2px}.ic-user:after{width:12px;height:9px;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;top:9px}.ico-close-details{width:44px;height:44px;border-radius:44px;display:flex;justify-content:center;align-items:center;opacity:.8;cursor:pointer}.ico-close-details:before,.ico-close-details:after{content:\"\";width:24px;height:2px;background-color:#333;position:absolute;border-radius:1px}.ico-close-details:hover{background-color:#f4f4f4}.ico-close-details:before{transform:rotate(45deg)}.ico-close-details:after{transform:rotate(-45deg)}.ico-menu,.ico-menu:before,.ico-menu:after{cursor:pointer;border-radius:1px;height:2px;width:23px;background:#000000;position:absolute;display:block;content:\"\"}.ico-menu:before{top:-6px}.ico-menu:after{bottom:-6px}.ico-gg-eye-alt{position:relative;display:block;transform:scale(var(--ggs, 1));width:24px;height:18px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.ico-gg-eye-alt:after,.ico-gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.ico-gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px #696969,inset 0 0 0 2px #696969;width:24px;height:24px}.ico-gg-eye-alt:before{width:8px;height:8px;border:2px solid #696969;bottom:4px;left:8px;background-color:#696969}.ico-gg-add{box-sizing:border-box;position:relative;display:block;color:#47c562;width:32px;height:32px}.ico-gg-add:after,.ico-gg-add:before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:14px;height:2px;background:currentColor;border-radius:5px;top:8px;left:0px}.ico-gg-add:after{width:2px;height:14px;top:2px;left:6px}.gg-eye-alt{position:relative;display:block;width:18px;height:12px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.gg-eye-alt:after,.gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px,inset 0 0 0 2px;width:18px;height:18px}.gg-eye-alt:before{width:2px;height:2px;border:2px solid black;bottom:3px;left:7px;background-color:#000}.ico-gg-check{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px;border:1px solid transparent;border-radius:100px;color:#fff}.ico-gg-check:after{content:\"\";display:block;box-sizing:border-box;position:absolute;left:5px;top:-3px;width:7px;height:12px;border-width:0 2px 2px 0;border-style:solid;transform-origin:bottom left;transform:rotate(45deg);color:#fff}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.modalaccompaniment{left:212px}@media only screen and (min-width : 1201px){.modalaccompaniment{left:273px}}.modaltraining{left:331px}@media only screen and (min-width : 1201px){.modaltraining{left:417px}}.modalpublic{left:431px}@media only screen and (min-width : 1201px){.modalpublic{left:513px}}.modalequipments{left:519px}@media only screen and (min-width : 1201px){.modalequipments{left:603px}}.maxModal .blockLigne{box-sizing:border-box;width:360px}.maxModal .blockLigne .smallList{display:block;box-sizing:border-box;background:#f8f8f8;max-width:300px;padding:.5rem!important;margin-top:1rem!important}.modal{max-width:360px;width:auto;z-index:1004!important;position:fixed;box-shadow:0 4px 16px #00000040;border-radius:8px;margin-top:25px;background:white}@media only screen and (max-width : 600px){.modal{height:100%;max-height:auto;max-width:auto;width:100%;position:fixed;top:0;left:0;border:none;padding:0}}@media only screen and (max-width : 600px){.modal .body-wrap{height:100vh;height:-webkit-fill-available}}.modal .body-wrap .titleFilter{display:none!important;margin:27px 25px 0;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.625em}@media only screen and (max-width : 600px){.modal .body-wrap .titleFilter{display:flex!important}}.modal .contentModal{overflow-y:auto;max-width:1100px;border-bottom:1px solid #b4bbbf}@media only screen and (max-width : 600px){.modal .contentModal{max-height:none;height:100%}}.modal .contentModal .blockFiltre{width:auto;margin:25px 20px;margin-bottom:calc(25px - 1rem);min-width:200px}@media only screen and (max-width : 600px){.modal .contentModal .blockFiltre{margin:0 18px;padding:25px 0;min-width:0}}.modal .contentModal .blockFiltre .categoryCheckBox .halfCheck{position:relative}.modal .contentModal .blockFiltre .categoryCheckBox .halfCheck:before{content:\"\";position:absolute;display:block;width:10px;left:4px;top:8px;transform:rotate(0);border-bottom:solid 2px #4f4f4f;border-radius:0}.modal .contentModal .blockFiltre .categoryCheckBox ul{display:none}.modal .contentModal .blockFiltre .categoryCheckBox .show{display:block!important}.modal .contentModal .blockLigne{padding-left:0;margin:0}.modal .contentModal .blockLigne li{margin-bottom:1rem}.modal .contentModal label{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;color:#333}.modal .contentModal .arrow{cursor:pointer;margin-left:auto;background-color:transparent;border-bottom:1px solid black;border-right:1px solid black;transform:translateY(-25%) rotate(45deg);height:7px;width:7px;transition:all .3s ease;margin-top:-5px}.modal .contentModal .toggled{transform:translateY(25%) rotate(-135deg)}.modal .contentModal.max-height{max-height:50vh;overflow-y:overlay}.modal .footer{box-sizing:border-box;padding:.5rem}.modal .footer .reset{width:45%;text-align:center;color:#bdbdbd}.modal .footer .half-width{width:50%;padding:0 4px}.modalmoreFilters{width:100%;min-width:100%;height:100vh;min-height:100vh;top:0;left:0;display:flex;flex-direction:column;background:rgba(0,0,0,.8)!important;margin:0;border-radius:0}.modalmoreFilters .scroll-container{max-height:390px;overflow-y:scroll}.modalmoreFilters .maxModal{max-width:360px;margin:10% auto auto;background:white;border-radius:8px}.modalmoreFilters .backDropModal{background:white;width:360px;min-height:40vh}.modalmoreFilters .backDropModalFooter{background:white;width:360px;margin:auto;border-radius:0 0 8px 8px}.modalmoreFilters .headerMoreFilters{position:relative;text-align:center;color:#333;background:white;padding:1rem;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.125em;align-items:center;justify-content:center;border-bottom:solid 1px #e9e9e9;border-radius:8px 8px 0 0}.modalmoreFilters .headerMoreFilters .iconClose{cursor:pointer;position:absolute;right:14px;top:7px}a{border:1px solid transparent;padding:8px 8px 6px;color:#da3635;outline:none;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;text-decoration:underline}a:hover{color:#b85959}a:focus{color:#da3635;border-color:#da3635;border-radius:4px}a:active{border:none;color:#c9ecf3}\n"] }]
}], ctorParameters: function () {
return [{ type: undefined, decorators: [{
type: Inject,
args: [SEARCH_TOKEN]
}] }];
}, propDecorators: { modalType: [{
type: Input
}], categories: [{
type: Input
}], modules: [{
type: Input
}], searchEvent: [{
type: Output
}], closeEvent: [{
type: Output
}] } });
class StructureListSearchComponent {
constructor(searchService, fb, activatedRoute, route, router) {
this.searchService = searchService;
this.fb = fb;
this.activatedRoute = activatedRoute;
this.route = route;
this.router = router;
this.searchEvent = new EventEmitter();
this.locate = false;
// Show/hide form createStructure
this.addStructureFormModal = false;
this.buttonTypeEnum = ButtonType;
this.numberTrainingChecked = 0;
this.numberAccompanimentChecked = 0;
this.numberPublicChecked = 0;
this.numberEquipmentChecked = 0;
this.numberMoreFiltersChecked = 0;
// Modal categories
this.categoriesTraining = [];
this.categoriesAccompaniment = [];
this.categoriesPublic = [];
this.categoriesEquipment = [];
this.categoriesMoreFilters = [];
// Modal confirmation variable
this.isConfirmationModalOpen = false;
this.confirmationModalContent = 'Afin d’ajouter votre structure,vous allez être redirigé vers le formulaire Grand Lyon à remplir.';
this.searchForm = this.fb.group({
searchTerm: this.activatedRoute.snapshot.queryParamMap.get('search')
? this.activatedRoute.snapshot.queryParamMap.get('search')
: ''
});
}
ngOnInit() {
// Will store the different categories
this.getData();
this.queryString = this.activatedRoute.snapshot.queryParamMap.get('search');
this.checkedModulesFilter = new Array();
if (this.queryString) {
const filters = [];
filters.push(new Filter('query', this.queryString));
this.searchEvent.emit(filters);
}
}
convertModulesTofilters(modules, term) {
const filters = [];
if (term) {
filters.push(new Filter('query', term));
}
// Add checked box filter
modules.forEach((cm) => {
filters.push(new Filter(cm.text, cm.id, cm.displayText));
});
return filters;
}
// Accessor to template angular.
get TypeModal() {
return TypeModal;
}
// Clear input search
clearInput() {
this.searchForm.reset();
this.applyFilter(null);
}
// Sends an array containing all filters
applyFilter(term) {
// Add search input filter
if (term) {
this.router.navigate(['/acteurs'], {
relativeTo: this.route,
queryParams: {
search: term
},
queryParamsHandling: 'merge'
});
}
else if (!term) {
this.router.navigate(['/acteurs'], {
relativeTo: this.route
});
}
const filters = this.convertModulesTofilters(this.checkedModulesFilter, term);
// Send filters
this.searchEvent.emit(filters);
}
fetchResults(checkedModules) {
const inputTerm = this.searchForm.get('searchTerm').value;
// Check if some modules is checked in filters
if (this.checkedModulesFilter !== checkedModules) {
this.countCheckFiltersOnModules(checkedModules);
}
// Store checked modules
this.checkedModulesFilter = checkedModules;
// Close modal after receive filters from her.
this.closeModal();
this.applyFilter(inputTerm);
}
// Check if some modules is checked on filter and store number of modules checked
countCheckFiltersOnModules(checkedModules) {
this.numberAccompanimentChecked = checkedModules.filter((module) => module.text === 'proceduresAccompaniment').length;
this.numberTrainingChecked = checkedModules.filter((module) => module.text === 'baseSkills' ||
module.text === 'socialAndProfessional' ||
module.text === 'parentingHelp' ||
module.text === 'accessRight' ||
module.text === 'digitalCultureSecurity').length;
this.numberPublicChecked = checkedModules.filter((module) => module.text === 'publicsAccompaniment').length;
this.numberEquipmentChecked = checkedModules.filter((module) => module.text === 'equipmentsAndServices').length;
this.numberMoreFiltersChecked = checkedModules.filter((module) => module.text === 'labelsQualifications' || module.text === 'accessModality').length;
}
getModalCategory() {
switch (this.modalTypeOpened) {
case TypeModal.accompaniment:
return this.categoriesAccompaniment;
case TypeModal.training:
return this.categoriesTraining;
case TypeModal.public:
return this.categoriesPublic;
case TypeModal.equipments:
return this.categoriesEquipment;
case TypeModal.moreFilters:
return this.categoriesMoreFilters;
default:
throw new Error('Modal type not handle');
}
}
// Open the modal and display the list according to the right filter button
openModal(modalType) {
// if modal already opened, reset type
if (this.modalTypeOpened === modalType) {
this.closeModal();
}
else if (this.modalTypeOpened !== modalType) {
this.modalTypeOpened = modalType;
}
}
closeModal() {
this.modalTypeOpened = undefined;
}
// Management of the checkbox event (Check / Uncheck)
externalCheckboxCheck(event, categ, displayName) {
const checkValue = event.target.value;
const inputTerm = this.searchForm.get('searchTerm').value;
if (event.target.checked) {
this.checkedModulesFilter.push(new Module(checkValue, categ, displayName));
this.numberMoreFiltersChecked++;
}
else {
// Check if the module is present in the list and remove it
const index = this.checkedModulesFilter.findIndex((m) => m.id === checkValue && m.text === categ);
if (index > -1) {
this.checkedModulesFilter.splice(index, 1);
this.countCheckFiltersOnModules(this.checkedModulesFilter);
}
}
this.applyFilter(inputTerm);
}
// Get the categories for each modal type
getData() {
this.searchService.getCategoriesAccompaniment().subscribe((res) => {
const categories = res;
categories.forEach((category) => {
this.categoriesAccompaniment.push(category);
});
});
this.searchService.getCategoriesTraining().subscribe((res) => {
const categories = res;
categories.forEach((category) => {
this.categoriesTraining.push(category);
});
});
this.searchService.getCategoriesOthers().subscribe((res) => {
const categories = res;
categories.forEach((category) => {
if (category.id === 'publicsAccompaniment') {
this.categoriesPublic.push(category);
}
else if (category.id === 'equipmentsAndServices') {
this.categoriesEquipment.push(category);
}
else if (category.id === 'labelsQualifications' || category.id === 'accessModality') {
this.categoriesMoreFilters.push(category);
}
});
});
}
resetFilters() {
this.checkedModulesFilter = [];
this.numberTrainingChecked = 0;
this.numberAccompanimentChecked = 0;
this.numberPublicChecked = 0;
this.numberEquipmentChecked = 0;
this.numberMoreFiltersChecked = 0;
const inputTerm = this.searchForm.get('searchTerm').value;
const filters = this.convertModulesTofilters(this.checkedModulesFilter, inputTerm);
this.searchEvent.emit(filters);
}
removeFilter(module) {
const index = this.checkedModulesFilter.findIndex((m) => m.id === module.id);
this.checkedModulesFilter.splice(index, 1);
const inputTerm = this.searchForm.get('searchTerm').value;
const filters = this.convertModulesTofilters(this.checkedModulesFilter, inputTerm);
this.countCheckFiltersOnModules(this.checkedModulesFilter);
this.searchEvent.emit(filters);
}
}
StructureListSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: StructureListSearchComponent, deps: [{ token: SEARCH_TOKEN }, { token: i1$1.FormBuilder }, { token: i1.ActivatedRoute }, { token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
StructureListSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: StructureListSearchComponent, selector: "app-structure-list-search", outputs: { searchEvent: "searchEvent" }, ngImport: i0, template: "<div class=\"block\">\n <div class=\"content\">\n <form\n class=\"inputSearch\"\n [formGroup]=\"searchForm\"\n fxLayout=\"row\"\n fxLayoutGap=\"4px\"\n fxLayoutAlign=\" center\"\n (ngSubmit)=\"applyFilter(searchForm.value.searchTerm)\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"container\">\n <input type=\"text\" formControlName=\"searchTerm\" placeholder=\"Rechercher une association, une commune...\" />\n <button\n *ngIf=\"this.searchForm.get('searchTerm').value?.length > 0\"\n (click)=\"clearInput()\"\n class=\"icon close\"\n type=\"button\">\n <div class=\"ico-close-search\"></div>\n </button>\n <span *ngIf=\"this.searchForm.get('searchTerm').value?.length > 0\" class=\"separation\"></span>\n <app-button [style]=\"buttonTypeEnum.searchIcon\" [iconBtn]=\"'search'\" [type]=\"'submit'\"></app-button>\n </div>\n </form>\n <div (clickOutside)=\"closeModal()\" class=\"btn-container\">\n <div class=\"btnSection\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"4px\">\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.accompaniment,\n containCheckedFilters: numberAccompanimentChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.accompaniment)\">\n <span>Aide num\u00E9rique</span>\n <div class=\"arrow\"></div>\n </button>\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.training,\n containCheckedFilters: numberTrainingChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.training)\">\n <span>Ateliers</span>\n <div class=\"arrow\"></div>\n </button>\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.public,\n containCheckedFilters: numberPublicChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.public)\">\n <span>Public</span>\n <div class=\"arrow\"></div>\n </button>\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.equipments,\n containCheckedFilters: numberEquipmentChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.equipments)\">\n <span>Mat\u00E9riel et wifi</span>\n <div class=\"arrow\"></div>\n </button>\n <div\n class=\"checkboxButton\"\n [ngClass]=\"{\n checked: searchService.getIndex(checkedModulesFilter, 'passNumerique', 'labelsQualifications') > -1\n }\">\n <label fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <input\n type=\"checkbox\"\n value=\"passNumerique\"\n [checked]=\"searchService.getIndex(checkedModulesFilter, 'passNumerique', 'labelsQualifications') > -1\"\n (change)=\"externalCheckboxCheck($event, 'labelsQualifications', 'Pass num\u00E9rique')\" />\n <div class=\"label pass\">Pass num\u00E9rique</div>\n </label>\n </div>\n <div\n class=\"checkboxButton\"\n [ngClass]=\"{\n checked: searchService.getIndex(checkedModulesFilter, 'conseillerNumFranceServices', 'labelsQualifications') > -1\n }\">\n <label fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <input\n type=\"checkbox\"\n value=\"conseillerNumFranceServices\"\n [checked]=\"\n searchService.getIndex(checkedModulesFilter, 'conseillerNumFranceServices', 'labelsQualifications') > -1\n \"\n (change)=\"externalCheckboxCheck($event, 'labelsQualifications', 'Conseillers num\u00E9riques')\" />\n <div class=\"label pass\">Conseillers num\u00E9riques</div>\n </label>\n </div>\n <div\n class=\"checkboxButton isntPhoneContent\"\n [ngClass]=\"{\n checked: searchService.getIndex(checkedModulesFilter, 'accesLibre', 'accessModality') > -1\n }\">\n <label fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <input\n type=\"checkbox\"\n value=\"accesLibre\"\n [checked]=\"searchService.getIndex(checkedModulesFilter, 'accesLibre', 'accessModality') > -1\"\n (change)=\"externalCheckboxCheck($event, 'accessModality', 'Acc\u00E8s libre')\" />\n <div class=\"label pass\">Acc\u00E8s libre</div>\n </label>\n </div>\n <app-button\n class=\"isntPhoneContent last-button\"\n [style]=\"buttonTypeEnum.Tertiary\"\n [text]=\"'Plus de filtres'\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n (action)=\"openModal(TypeModal.moreFilters)\"></app-button>\n <div *ngIf=\"modalTypeOpened\">\n <app-modal-filter\n [modalType]=\"modalTypeOpened\"\n [categories]=\"getModalCategory()\"\n [modules]=\"checkedModulesFilter\"\n (searchEvent)=\"fetchResults($event)\"\n (closeEvent)=\"closeModal()\"></app-modal-filter>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"checkedModulesFilter.length\" fxLayout=\"row wrap\" fxLayoutGap=\"4px\" class=\"filterTags isntPhoneContent\">\n <div class=\"title\">Filtres :</div>\n <app-button\n *ngFor=\"let filter of checkedModulesFilter\"\n [style]=\"buttonTypeEnum.TagCloudButton\"\n [text]=\"filter.displayText ? filter.displayText : filter.id\"\n (action)=\"removeFilter(filter)\"></app-button>\n <div class=\"reset-icon\" (click)=\"resetFilters()\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'tagReset'\" [iconColor]=\"'black'\"></app-svg-icon>\n </div>\n </div>\n</div>\n", styles: ["html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.form-input{width:296px;background:#f8f8f8;border:1px solid #dedede;box-sizing:border-box;border-radius:4px;height:36px;padding:8px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em}.form-input:focus{border:1px solid #696969;outline:none!important}.switch{position:relative;display:inline-block;margin-left:-55px;height:34px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;top:10px;background-color:#fff;border-radius:7px;width:34px;height:14px;border:1px solid #bdbdbd}.slider:before{position:absolute;content:\"\";height:20px;width:20px;left:-6px;bottom:-3px;background-color:#bdbdbd;transition:.4s;border-radius:50%}input:checked+.slider{border:1px solid #da3635}input:checked+.slider:before{transform:translate(26px);background-color:#da3635}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.btn-primary{background:#da3635;border-radius:4px;outline:none;cursor:pointer;color:#fff;height:40px;width:192px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;stroke:#fff;border:1px solid #333333}.btn-primary.small{width:149px}.btn-primary.invalid{opacity:.4}.btn-primary:focus{background:white;color:#da3635;border:1px solid #da3635;stroke:#da3635}.btn-grid{display:inline-flex;flex-wrap:wrap;gap:8px}.tags-cloud{font-style:normal;justify-content:center;align-items:center;height:28px;border-radius:20px;padding:5px 15px;color:#fff;border-style:none;margin-top:5px;background:#333333}.tags-cloud.unchecked{background:#bdbdbd}.block{padding:0 .5rem;border-bottom:solid 1px #bdbdbd}@media only screen and (max-width : 1024px){.block{padding:0 10px}}.content{margin-bottom:.5rem;display:flex;align-items:center}.content input{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.813em;width:100%;border:none;padding-left:10px;text-overflow:ellipsis;background-color:#f8f8f8;color:#696969;outline:none;font-style:italic;margin-top:unset}.content .inputSearch{padding:6px 10px 6px 6px;width:200px;min-width:200px;background-color:#f8f8f8;color:#696969;height:36px;border-radius:50px;margin-right:.25rem}@media only screen and (min-width : 1201px){.content .inputSearch{width:300px;min-width:250px}}@media only screen and (max-width : 1024px){.content .inputSearch{width:100%;margin-bottom:.5rem;margin-right:0}}.content .inputSearch .container{width:100%;height:40px}.content .inputSearch .container .separation{border-right:solid 1px #bdbdbd;width:5px;height:23px;margin-right:5px}@media only screen and (max-width : 1024px){.content{flex-direction:column!important}}.btn-container{width:100%;display:flex}.btnSection{width:100%}@media only screen and (max-width : 1024px){.btnSection{display:contents!important}}.btnSection button{background:white;height:36px;border:1px solid #bdbdbd;padding:10px 12px;outline:none;border-radius:50px;cursor:pointer;text-align:left;transition:all .3s ease;line-height:110%;font-size:1em;line-height:19px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.813em}.btnSection button:hover:not(.selected){background:#f4f4f4}.btnSection button .arrow{background-color:transparent;border-bottom:1px solid black;border-right:1px solid black;transform:translateY(-25%) rotate(45deg);margin:0 5px 0 10px;height:7px;width:7px;transition:all .3s ease}.btnSection button:focus{border-color:#333}.btnSection .selected{background-color:#da3635;border-color:#da3635!important;color:#fff}.btnSection .selected .arrow{background-color:transparent;border-bottom:1px solid white;border-right:1px solid white;transform:translateY(25%) rotate(-135deg);margin:0 5px 0 10px;height:7px;width:7px}.btnSection .btn-filter{height:40px}.btnSection .btn-filter span{line-height:110%}.btnSection .containCheckedFilters{border-color:#da3635}.btnSection .checkboxButton{box-sizing:border-box;background:white;height:40px;width:190px;border:1px solid #bdbdbd;outline:none;cursor:pointer;font-size:1em;line-height:19px;width:auto;border-radius:50px;padding:0 10px;display:flex;align-items:center;justify-content:center;transition:all .3s ease;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.813em;line-height:110%}.btnSection .checkboxButton>*{transition:all .3s ease}@media only screen and (max-width : 1024px){.btnSection .checkboxButton{width:max-content}}.btnSection .checkboxButton.checked{border-color:#da3635;background:#fef0f0}.btnSection .checkboxButton:hover:not(.checked){background:#f8f8f8}.btnSection .checkboxButton label{cursor:pointer;font-size:inherit;font-weight:inherit}.btnSection .checkboxButton input[type=checkbox]{-webkit-appearance:none;appearance:none;border-radius:50%;width:20px;min-width:20px;height:20px;border:solid 1px #bdbdbd;background:white;margin:0 5px 0 0;transition:all .3s ease;position:relative}.btnSection .checkboxButton input[type=checkbox]:checked{background:#da3635;border:none}.btnSection .checkboxButton input[type=checkbox]:checked:after{border-bottom:2px solid white;border-left:2px solid white;content:\"\";height:4px;left:4px;opacity:1;position:absolute;top:6px;transform:rotate(-45deg);width:10px}::ng-deep .btn-regular.tertiary{height:40px!important}::ng-deep .btn-regular.tertiary div{line-height:normal}.last-button{margin-left:auto}.footerSearchSection{margin:8px 0;height:40px}.icon{background-color:transparent;border:1px solid transparent;outline:none;cursor:pointer}.icon.pin{padding:4px 6px 8px}.icon.pin:hover .ico-pin-search{background-color:#da3635}.icon.pin:focus{border-color:#da3635}.icon.pin:focus .ico-pin-search{background-color:#da3635}.icon.pin:active{border-color:transparent}.icon.pin:active .ico-pin-search{background-color:#c9ecf3}.icon.close:focus{border-color:#da3635}.icon.close:active{border-color:transparent}a{border:1px solid transparent;padding:8px 8px 6px;color:#da3635;outline:none;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;text-decoration:underline;text-align:right}a:hover{color:#b85959}a:focus{color:#da3635;border-color:#da3635;border-radius:4px}a:active{border:none;color:#c9ecf3}.phoneSection{margin:9px 0 18px;display:none}.phoneSection .btnSection{padding:0}@media only screen and (max-width : 1024px){.isntPhoneContent{display:none!important}.phoneSection{display:block}}.filterTags{margin:.5rem 0 0}.filterTags .title{margin-top:5px;color:#696969}.filterTags .reset-icon{padding-top:.2rem;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.SvgIconComponent, selector: "app-svg-icon", inputs: ["icon", "iconClass", "type", "iconColor", "title"] }, { kind: "component", type: i5.ButtonComponent, selector: "app-button", inputs: ["style", "text", "type", "iconType", "iconBtn", "iconPos", "extraClass", "disabled", "active"], outputs: ["action"] }, { kind: "directive", type: i5.ModalOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: ModalFilterComponent, selector: "app-modal-filter", inputs: ["modalType", "categories", "modules"], outputs: ["searchEvent", "closeEvent"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: StructureListSearchComponent, decorators: [{
type: Component,
args: [{ selector: 'app-structure-list-search', template: "<div class=\"block\">\n <div class=\"content\">\n <form\n class=\"inputSearch\"\n [formGroup]=\"searchForm\"\n fxLayout=\"row\"\n fxLayoutGap=\"4px\"\n fxLayoutAlign=\" center\"\n (ngSubmit)=\"applyFilter(searchForm.value.searchTerm)\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"container\">\n <input type=\"text\" formControlName=\"searchTerm\" placeholder=\"Rechercher une association, une commune...\" />\n <button\n *ngIf=\"this.searchForm.get('searchTerm').value?.length > 0\"\n (click)=\"clearInput()\"\n class=\"icon close\"\n type=\"button\">\n <div class=\"ico-close-search\"></div>\n </button>\n <span *ngIf=\"this.searchForm.get('searchTerm').value?.length > 0\" class=\"separation\"></span>\n <app-button [style]=\"buttonTypeEnum.searchIcon\" [iconBtn]=\"'search'\" [type]=\"'submit'\"></app-button>\n </div>\n </form>\n <div (clickOutside)=\"closeModal()\" class=\"btn-container\">\n <div class=\"btnSection\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"4px\">\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.accompaniment,\n containCheckedFilters: numberAccompanimentChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.accompaniment)\">\n <span>Aide num\u00E9rique</span>\n <div class=\"arrow\"></div>\n </button>\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.training,\n containCheckedFilters: numberTrainingChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.training)\">\n <span>Ateliers</span>\n <div class=\"arrow\"></div>\n </button>\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.public,\n containCheckedFilters: numberPublicChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.public)\">\n <span>Public</span>\n <div class=\"arrow\"></div>\n </button>\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.equipments,\n containCheckedFilters: numberEquipmentChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.equipments)\">\n <span>Mat\u00E9riel et wifi</span>\n <div class=\"arrow\"></div>\n </button>\n <div\n class=\"checkboxButton\"\n [ngClass]=\"{\n checked: searchService.getIndex(checkedModulesFilter, 'passNumerique', 'labelsQualifications') > -1\n }\">\n <label fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <input\n type=\"checkbox\"\n value=\"passNumerique\"\n [checked]=\"searchService.getIndex(checkedModulesFilter, 'passNumerique', 'labelsQualifications') > -1\"\n (change)=\"externalCheckboxCheck($event, 'labelsQualifications', 'Pass num\u00E9rique')\" />\n <div class=\"label pass\">Pass num\u00E9rique</div>\n </label>\n </div>\n <div\n class=\"checkboxButton\"\n [ngClass]=\"{\n checked: searchService.getIndex(checkedModulesFilter, 'conseillerNumFranceServices', 'labelsQualifications') > -1\n }\">\n <label fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <input\n type=\"checkbox\"\n value=\"conseillerNumFranceServices\"\n [checked]=\"\n searchService.getIndex(checkedModulesFilter, 'conseillerNumFranceServices', 'labelsQualifications') > -1\n \"\n (change)=\"externalCheckboxCheck($event, 'labelsQualifications', 'Conseillers num\u00E9riques')\" />\n <div class=\"label pass\">Conseillers num\u00E9riques</div>\n </label>\n </div>\n <div\n class=\"checkboxButton isntPhoneContent\"\n [ngClass]=\"{\n checked: searchService.getIndex(checkedModulesFilter, 'accesLibre', 'accessModality') > -1\n }\">\n <label fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <input\n type=\"checkbox\"\n value=\"accesLibre\"\n [checked]=\"searchService.getIndex(checkedModulesFilter, 'accesLibre', 'accessModality') > -1\"\n (change)=\"externalCheckboxCheck($event, 'accessModality', 'Acc\u00E8s libre')\" />\n <div class=\"label pass\">Acc\u00E8s libre</div>\n </label>\n </div>\n <app-button\n class=\"isntPhoneContent last-button\"\n [style]=\"buttonTypeEnum.Tertiary\"\n [text]=\"'Plus de filtres'\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n (action)=\"openModal(TypeModal.moreFilters)\"></app-button>\n <div *ngIf=\"modalTypeOpened\">\n <app-modal-filter\n [modalType]=\"modalTypeOpened\"\n [categories]=\"getModalCategory()\"\n [modules]=\"checkedModulesFilter\"\n (searchEvent)=\"fetchResults($event)\"\n (closeEvent)=\"closeModal()\"></app-modal-filter>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"checkedModulesFilter.length\" fxLayout=\"row wrap\" fxLayoutGap=\"4px\" class=\"filterTags isntPhoneContent\">\n <div class=\"title\">Filtres :</div>\n <app-button\n *ngFor=\"let filter of checkedModulesFilter\"\n [style]=\"buttonTypeEnum.TagCloudButton\"\n [text]=\"filter.displayText ? filter.displayText : filter.id\"\n (action)=\"removeFilter(filter)\"></app-button>\n <div class=\"reset-icon\" (click)=\"resetFilters()\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'tagReset'\" [iconColor]=\"'black'\"></app-svg-icon>\n </div>\n </div>\n</div>\n", styles: ["html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.form-input{width:296px;background:#f8f8f8;border:1px solid #dedede;box-sizing:border-box;border-radius:4px;height:36px;padding:8px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em}.form-input:focus{border:1px solid #696969;outline:none!important}.switch{position:relative;display:inline-block;margin-left:-55px;height:34px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;top:10px;background-color:#fff;border-radius:7px;width:34px;height:14px;border:1px solid #bdbdbd}.slider:before{position:absolute;content:\"\";height:20px;width:20px;left:-6px;bottom:-3px;background-color:#bdbdbd;transition:.4s;border-radius:50%}input:checked+.slider{border:1px solid #da3635}input:checked+.slider:before{transform:translate(26px);background-color:#da3635}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.btn-primary{background:#da3635;border-radius:4px;outline:none;cursor:pointer;color:#fff;height:40px;width:192px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;stroke:#fff;border:1px solid #333333}.btn-primary.small{width:149px}.btn-primary.invalid{opacity:.4}.btn-primary:focus{background:white;color:#da3635;border:1px solid #da3635;stroke:#da3635}.btn-grid{display:inline-flex;flex-wrap:wrap;gap:8px}.tags-cloud{font-style:normal;justify-content:center;align-items:center;height:28px;border-radius:20px;padding:5px 15px;color:#fff;border-style:none;margin-top:5px;background:#333333}.tags-cloud.unchecked{background:#bdbdbd}.block{padding:0 .5rem;border-bottom:solid 1px #bdbdbd}@media only screen and (max-width : 1024px){.block{padding:0 10px}}.content{margin-bottom:.5rem;display:flex;align-items:center}.content input{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.813em;width:100%;border:none;padding-left:10px;text-overflow:ellipsis;background-color:#f8f8f8;color:#696969;outline:none;font-style:italic;margin-top:unset}.content .inputSearch{padding:6px 10px 6px 6px;width:200px;min-width:200px;background-color:#f8f8f8;color:#696969;height:36px;border-radius:50px;margin-right:.25rem}@media only screen and (min-width : 1201px){.content .inputSearch{width:300px;min-width:250px}}@media only screen and (max-width : 1024px){.content .inputSearch{width:100%;margin-bottom:.5rem;margin-right:0}}.content .inputSearch .container{width:100%;height:40px}.content .inputSearch .container .separation{border-right:solid 1px #bdbdbd;width:5px;height:23px;margin-right:5px}@media only screen and (max-width : 1024px){.content{flex-direction:column!important}}.btn-container{width:100%;display:flex}.btnSection{width:100%}@media only screen and (max-width : 1024px){.btnSection{display:contents!important}}.btnSection button{background:white;height:36px;border:1px solid #bdbdbd;padding:10px 12px;outline:none;border-radius:50px;cursor:pointer;text-align:left;transition:all .3s ease;line-height:110%;font-size:1em;line-height:19px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.813em}.btnSection button:hover:not(.selected){background:#f4f4f4}.btnSection button .arrow{background-color:transparent;border-bottom:1px solid black;border-right:1px solid black;transform:translateY(-25%) rotate(45deg);margin:0 5px 0 10px;height:7px;width:7px;transition:all .3s ease}.btnSection button:focus{border-color:#333}.btnSection .selected{background-color:#da3635;border-color:#da3635!important;color:#fff}.btnSection .selected .arrow{background-color:transparent;border-bottom:1px solid white;border-right:1px solid white;transform:translateY(25%) rotate(-135deg);margin:0 5px 0 10px;height:7px;width:7px}.btnSection .btn-filter{height:40px}.btnSection .btn-filter span{line-height:110%}.btnSection .containCheckedFilters{border-color:#da3635}.btnSection .checkboxButton{box-sizing:border-box;background:white;height:40px;width:190px;border:1px solid #bdbdbd;outline:none;cursor:pointer;font-size:1em;line-height:19px;width:auto;border-radius:50px;padding:0 10px;display:flex;align-items:center;justify-content:center;transition:all .3s ease;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.813em;line-height:110%}.btnSection .checkboxButton>*{transition:all .3s ease}@media only screen and (max-width : 1024px){.btnSection .checkboxButton{width:max-content}}.btnSection .checkboxButton.checked{border-color:#da3635;background:#fef0f0}.btnSection .checkboxButton:hover:not(.checked){background:#f8f8f8}.btnSection .checkboxButton label{cursor:pointer;font-size:inherit;font-weight:inherit}.btnSection .checkboxButton input[type=checkbox]{-webkit-appearance:none;appearance:none;border-radius:50%;width:20px;min-width:20px;height:20px;border:solid 1px #bdbdbd;background:white;margin:0 5px 0 0;transition:all .3s ease;position:relative}.btnSection .checkboxButton input[type=checkbox]:checked{background:#da3635;border:none}.btnSection .checkboxButton input[type=checkbox]:checked:after{border-bottom:2px solid white;border-left:2px solid white;content:\"\";height:4px;left:4px;opacity:1;position:absolute;top:6px;transform:rotate(-45deg);width:10px}::ng-deep .btn-regular.tertiary{height:40px!important}::ng-deep .btn-regular.tertiary div{line-height:normal}.last-button{margin-left:auto}.footerSearchSection{margin:8px 0;height:40px}.icon{background-color:transparent;border:1px solid transparent;outline:none;cursor:pointer}.icon.pin{padding:4px 6px 8px}.icon.pin:hover .ico-pin-search{background-color:#da3635}.icon.pin:focus{border-color:#da3635}.icon.pin:focus .ico-pin-search{background-color:#da3635}.icon.pin:active{border-color:transparent}.icon.pin:active .ico-pin-search{background-color:#c9ecf3}.icon.close:focus{border-color:#da3635}.icon.close:active{border-color:transparent}a{border:1px solid transparent;padding:8px 8px 6px;color:#da3635;outline:none;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;text-decoration:underline;text-align:right}a:hover{color:#b85959}a:focus{color:#da3635;border-color:#da3635;border-radius:4px}a:active{border:none;color:#c9ecf3}.phoneSection{margin:9px 0 18px;display:none}.phoneSection .btnSection{padding:0}@media only screen and (max-width : 1024px){.isntPhoneContent{display:none!important}.phoneSection{display:block}}.filterTags{margin:.5rem 0 0}.filterTags .title{margin-top:5px;color:#696969}.filterTags .reset-icon{padding-top:.2rem;cursor:pointer}\n"] }]
}], ctorParameters: function () {
return [{ type: undefined, decorators: [{
type: Inject,
args: [SEARCH_TOKEN]
}] }, { type: i1$1.FormBuilder }, { type: i1.ActivatedRoute }, { type: i1.ActivatedRoute }, { type: i1.Router }];
}, propDecorators: { searchEvent: [{
type: Output
}] } });
const STRUCTURE_TOKEN = new InjectionToken('structure-list.structure.repository');
class StructureListComponent {
constructor(route, router, structureService) {
this.route = route;
this.router = router;
this.structureService = structureService;
this.selectedStructure = new Structure();
this.displayMapMarkerId = new EventEmitter();
this.selectedMarkerId = new EventEmitter();
this.buttonTypeEnum = ButtonType;
this.showStructureDetails = false;
this.route.queryParams.subscribe((queryParams) => {
if (queryParams.id) {
if (!this.structure) {
this.structureService.getStructure(queryParams.id).subscribe((s) => {
this.showDetails(new Structure(s));
});
}
}
else {
this.closeDetails();
}
});
}
ngOnChanges(changes) {
if (changes.selectedStructure && this.selectedStructure) {
this.showDetails(this.selectedStructure);
this.router.navigate([], {
relativeTo: this.route,
queryParams: {
id: this.selectedStructure._id
}
});
}
if (changes.structureList) {
document.getElementById('listCard').scrollTo(0, 0);
}
}
showDetails(event) {
this.showStructureDetails = true;
this.structure = event;
this.selectedMarkerId.emit(this.structure._id);
}
closeDetails() {
this.selectedMarkerId.emit();
this.showStructureDetails = false;
}
handleCardHover(structure) {
this.displayMapMarkerId.emit(structure._id);
}
mouseLeave() {
this.displayMapMarkerId.emit(undefined);
}
}
StructureListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: StructureListComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: STRUCTURE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
StructureListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: StructureListComponent, selector: "app-structure-list", inputs: { structureList: "structureList", location: "location", selectedStructure: "selectedStructure" }, outputs: { displayMapMarkerId: "displayMapMarkerId", selectedMarkerId: "selectedMarkerId" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"structureList-container\">\n <div class=\"structureListHeader hide-on-print\">\n <div class=\"nbStructuresLabel\" [ngPlural]=\"structureList.length\">\n <ng-template ngPluralCase=\"0\">0 structure</ng-template>\n <ng-template ngPluralCase=\"1\">1 structure</ng-template>\n <ng-template ngPluralCase=\"other\">{{ structureList.length }} structures</ng-template>\n </div>\n <ng-content select=\"[slot=structure-list-actions]\"></ng-content>\n </div>\n\n <div id=\"listCard\" class=\"listCard\" (mouseleave)=\"mouseLeave()\">\n <ng-content select=\"[slot=structure-list-elements]\"></ng-content>\n <p *ngIf=\"structureList && structureList.length <= 0\">Il n'y a aucune r\u00E9ponse correspondant \u00E0 votre recherche</p>\n </div>\n</div>\n<ng-content></ng-content>\n", styles: [".ico-mglass{position:relative;display:inline-block;background:transparent;border-radius:30px;border:2px solid #333333;height:12px;width:12px;min-width:12px;max-width:12px}.ico-mglass:after{content:\"\";height:2px;width:8px;background:#333333;position:absolute;top:14px;left:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.ico-pin{width:20px;height:20px;max-width:20px;max-height:20px;border-radius:50% 50% 50% 0;background:transparent;transform:rotate(-45deg);left:50%;top:50%;margin:-4px 0 0}.ico-pin.after{content:\"\";width:14px;height:14px;margin:8px 0 0 8px;background:transparent;border-radius:50%}.ico-pin-search{width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background-color:#696969}.ico-pin-search:before{content:\"\";position:absolute;left:5px;top:6px;width:7px;height:7px;border-radius:4px;background-color:#fff}.ico-dot-available{height:12px;width:12px;background-color:#41c29c;border-radius:50%;margin-right:8px}.ico-dot-unavailable{height:12px;width:12px;background-color:#da3635;border-radius:50%;margin-right:8px}.ico-dot-unknown{height:12px;width:12px;background-color:#bdbdbd;border-radius:50%;margin-right:8px}.ico-marker-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;background:#da3635;position:absolute;transform:rotate(-45deg);left:50%;top:50%;margin:-15px 0 0 -15px}.ico-marker-pin.selected{background:#da3635}.ico-marker-pin:after{content:\"\";width:10px;height:10px;margin:10px 0 0 10px;background:#fff;position:absolute;border-radius:50%}.ico-marker-pin-sm{width:18px;height:18px;border-radius:50% 50% 50% 0;background:#696969;transform:rotate(-45deg);margin:0 4px}.ico-marker-pin-sm.absolute{position:absolute;margin:0}.ico-marker-pin-sm:after{content:\"\";width:7px;height:7px;margin:6px 0 0 5px;background:#f8f8f8;position:absolute;border-radius:50%}.ico-profile .head{width:12px;height:12px;border-radius:25px;border:2px solid #333333}.ico-profile .body{width:28px;height:10px;border-radius:20px 20px 0 0;border-top:2px solid #333333;border-right:2px solid #333333;border-left:2px solid #333333}.ico-close .mdiv{height:10px;width:2px;margin-left:5px;background-color:#696969;transform:rotate(45deg);z-index:1}.ico-close .md{height:10px;width:2px;background-color:#696969;transform:rotate(90deg);z-index:2}.ico-close-search{width:16px;height:16px;display:inline-block;vertical-align:middle}.ico-close-search:before{transform:rotate(45deg)}.ico-close-search:after{transform:rotate(-45deg)}.ico-close-search:before,.ico-close-search:after{position:absolute;content:\"\";height:16px;width:2px;background-color:#bdbdbd}.ic-arrow-left{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px}.ic-arrow-left:after,.ic-arrow-left:before{content:\"\";display:block;box-sizing:border-box;position:absolute;left:3px}.ic-arrow-left:after{width:8px;height:8px;border-bottom:2px solid;border-left:2px solid;transform:rotate(45deg);bottom:7px}.ic-arrow-left:before{width:16px;height:2px;bottom:10px;background:currentColor}.ic-print{width:.68em;height:1em;border-style:solid;border-color:currentcolor;background-color:transparent;border-width:.07em;border-radius:.05em;margin:0 .16em}.ic-print:before{width:1em;height:.4em;border-width:.07em .21em 0;border-style:solid;border-color:currentColor currentcolor transparent;border-radius:.05em .05em 0 0;top:.25em;left:50%;transform:translate(-50%);background-image:linear-gradient(transparent 20%,currentcolor 20%,currentcolor 60%,transparent 60%)}.ic-print:after{width:.45em;height:.065em;background-color:currentColor;left:50%;transform:translate(-50%);top:.6em;box-shadow:0 .12em,-.1em -.28em 0 .05em}.ic-mail,.ic-mail:after{display:block;box-sizing:border-box;height:14px;border:2px solid}.ic-mail{color:#4f4f4f;overflow:hidden;transform:scale(var(--ggs, 1));position:absolute;width:18px;border-radius:2px}.ic-mail:after{content:\"\";position:absolute;border-radius:3px;width:14px;transform:rotate(-45deg);bottom:3px;left:0}.ic-phone{color:#4f4f4f;box-sizing:border-box;position:absolute;display:block;width:22px;height:22px;transform:scale(var(--ggs, 1))}.ic-phone:after,.ic-phone:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-phone:after{width:18px;height:18px;border-top-left-radius:1px;border-bottom-right-radius:1px;border-bottom-left-radius:12px;border-left:4px solid;border-bottom:4px solid;left:2px;bottom:2px;background:linear-gradient(to left,currentColor 10px,transparent 0) no-repeat right 11px/6px 4px,linear-gradient(to left,currentColor 10px,transparent 0) no-repeat -1px 0/4px 6px}.ic-phone:before{width:20px;height:20px;border:6px double;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;border-radius:50%;transform:rotate(-45deg);bottom:2px;left:2px}.ic-mouse{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:16px;height:24px;border:2px solid;border-radius:10px}.ic-mouse:after{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:2px;height:6px;background:currentColor;top:3px;left:5px}.ic-wifi{color:#000;position:absolute;margin-left:7px;margin-top:13px;width:6px;height:6px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:before{content:\"\";position:absolute;left:-5px;top:-5px;width:14px;height:14px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:after{content:\"\";position:absolute;left:-9px;top:-9px;width:22px;height:22px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-screen{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:22px;height:14px;border:2px solid;border-radius:3px;margin-top:-4px}.ic-screen:after,.ic-screen:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:10px;height:2px;background:currentColor;top:14px;left:4px}.ic-screen:before{width:2px;height:6px;top:10px;left:8px}.ic-globe-alt,.ic-globe-alt:after,.ic-globe-alt:before{color:#4f4f4f;display:block;box-sizing:border-box;height:18px;border:2px solid}.ic-globe-alt{position:absolute;transform:scale(var(--ggs, 1));width:18px;border-radius:22px}.ic-globe-alt:after,.ic-globe-alt:before{content:\"\";position:absolute;width:8px;border-radius:100%;top:-2px;left:3px}.ic-globe-alt:after{width:24px;height:20px;border:2px solid transparent;border-bottom:2px solid;top:-11px;left:-5px}.ic-camera{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));border:2px solid;border-radius:3px;width:18px;height:12px;perspective:24px}.ic-camera:after,.ic-camera:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-camera:before{border:2px solid;border-left-color:transparent;transform:rotateY(-70deg);width:8px;height:8px;right:-7px;top:0}.ic-camera:after{width:10px;height:5px;border-top:2px solid;border-right:2px solid;top:-5px;right:2px;border-top-right-radius:2px}.ic-calendar-today{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:18px;height:18px;border:2px solid;border-top:4px solid;border-radius:3px}.ic-calendar-today:before{content:\"\";display:block;box-sizing:border-box;position:absolute;background:currentColor;height:4px;width:4px;border-radius:2px;right:2px;bottom:2px}.ic-user{display:block;position:absolute;transform:scale(var(--ggs, 1));box-sizing:border-box;width:12px;height:18px}.ic-user:after,.ic-user:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border:2px solid}.ic-user:before{width:8px;height:8px;border-radius:30px;top:0;left:2px}.ic-user:after{width:12px;height:9px;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;top:9px}.ico-close-details{width:44px;height:44px;border-radius:44px;display:flex;justify-content:center;align-items:center;opacity:.8;cursor:pointer}.ico-close-details:before,.ico-close-details:after{content:\"\";width:24px;height:2px;background-color:#333;position:absolute;border-radius:1px}.ico-close-details:hover{background-color:#f4f4f4}.ico-close-details:before{transform:rotate(45deg)}.ico-close-details:after{transform:rotate(-45deg)}.ico-menu,.ico-menu:before,.ico-menu:after{cursor:pointer;border-radius:1px;height:2px;width:23px;background:#000000;position:absolute;display:block;content:\"\"}.ico-menu:before{top:-6px}.ico-menu:after{bottom:-6px}.ico-gg-eye-alt{position:relative;display:block;transform:scale(var(--ggs, 1));width:24px;height:18px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.ico-gg-eye-alt:after,.ico-gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.ico-gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px #696969,inset 0 0 0 2px #696969;width:24px;height:24px}.ico-gg-eye-alt:before{width:8px;height:8px;border:2px solid #696969;bottom:4px;left:8px;background-color:#696969}.ico-gg-add{box-sizing:border-box;position:relative;display:block;color:#47c562;width:32px;height:32px}.ico-gg-add:after,.ico-gg-add:before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:14px;height:2px;background:currentColor;border-radius:5px;top:8px;left:0px}.ico-gg-add:after{width:2px;height:14px;top:2px;left:6px}.gg-eye-alt{position:relative;display:block;width:18px;height:12px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.gg-eye-alt:after,.gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px,inset 0 0 0 2px;width:18px;height:18px}.gg-eye-alt:before{width:2px;height:2px;border:2px solid black;bottom:3px;left:7px;background-color:#000}.ico-gg-check{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px;border:1px solid transparent;border-radius:100px;color:#fff}.ico-gg-check:after{content:\"\";display:block;box-sizing:border-box;position:absolute;left:5px;top:-3px;width:7px;height:12px;border-width:0 2px 2px 0;border-style:solid;transform-origin:bottom left;transform:rotate(45deg);color:#fff}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.btn-primary{background:#da3635;border-radius:4px;outline:none;cursor:pointer;color:#fff;height:40px;width:192px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;stroke:#fff;border:1px solid #333333}.btn-primary.small{width:149px}.btn-primary.invalid{opacity:.4}.btn-primary:focus{background:white;color:#da3635;border:1px solid #da3635;stroke:#da3635}.btn-grid{display:inline-flex;flex-wrap:wrap;gap:8px}.tags-cloud{font-style:normal;justify-content:center;align-items:center;height:28px;border-radius:20px;padding:5px 15px;color:#fff;border-style:none;margin-top:5px;background:#333333}.tags-cloud.unchecked{background:#bdbdbd}.structureList-container{overflow-y:auto;scrollbar-gutter:stable}.listCard>p{margin-left:1rem}.structureListHeader{height:50px;display:flex;flex-direction:row;align-items:center;margin:8px 16px}.structureListHeader .nbStructuresLabel{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em;color:#696969;flex:1}::ng-deep .structure-card:last-child .structure{border-bottom:unset!important}@media print{.listCard{display:none}.hide-on-print{display:none!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i3.NgPluralCase, selector: "[ngPluralCase]" }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: StructureListComponent, decorators: [{
type: Component,
args: [{ selector: 'app-structure-list', template: "<div class=\"structureList-container\">\n <div class=\"structureListHeader hide-on-print\">\n <div class=\"nbStructuresLabel\" [ngPlural]=\"structureList.length\">\n <ng-template ngPluralCase=\"0\">0 structure</ng-template>\n <ng-template ngPluralCase=\"1\">1 structure</ng-template>\n <ng-template ngPluralCase=\"other\">{{ structureList.length }} structures</ng-template>\n </div>\n <ng-content select=\"[slot=structure-list-actions]\"></ng-content>\n </div>\n\n <div id=\"listCard\" class=\"listCard\" (mouseleave)=\"mouseLeave()\">\n <ng-content select=\"[slot=structure-list-elements]\"></ng-content>\n <p *ngIf=\"structureList && structureList.length <= 0\">Il n'y a aucune r\u00E9ponse correspondant \u00E0 votre recherche</p>\n </div>\n</div>\n<ng-content></ng-content>\n", styles: [".ico-mglass{position:relative;display:inline-block;background:transparent;border-radius:30px;border:2px solid #333333;height:12px;width:12px;min-width:12px;max-width:12px}.ico-mglass:after{content:\"\";height:2px;width:8px;background:#333333;position:absolute;top:14px;left:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.ico-pin{width:20px;height:20px;max-width:20px;max-height:20px;border-radius:50% 50% 50% 0;background:transparent;transform:rotate(-45deg);left:50%;top:50%;margin:-4px 0 0}.ico-pin.after{content:\"\";width:14px;height:14px;margin:8px 0 0 8px;background:transparent;border-radius:50%}.ico-pin-search{width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background-color:#696969}.ico-pin-search:before{content:\"\";position:absolute;left:5px;top:6px;width:7px;height:7px;border-radius:4px;background-color:#fff}.ico-dot-available{height:12px;width:12px;background-color:#41c29c;border-radius:50%;margin-right:8px}.ico-dot-unavailable{height:12px;width:12px;background-color:#da3635;border-radius:50%;margin-right:8px}.ico-dot-unknown{height:12px;width:12px;background-color:#bdbdbd;border-radius:50%;margin-right:8px}.ico-marker-pin{width:30px;height:30px;border-radius:50% 50% 50% 0;background:#da3635;position:absolute;transform:rotate(-45deg);left:50%;top:50%;margin:-15px 0 0 -15px}.ico-marker-pin.selected{background:#da3635}.ico-marker-pin:after{content:\"\";width:10px;height:10px;margin:10px 0 0 10px;background:#fff;position:absolute;border-radius:50%}.ico-marker-pin-sm{width:18px;height:18px;border-radius:50% 50% 50% 0;background:#696969;transform:rotate(-45deg);margin:0 4px}.ico-marker-pin-sm.absolute{position:absolute;margin:0}.ico-marker-pin-sm:after{content:\"\";width:7px;height:7px;margin:6px 0 0 5px;background:#f8f8f8;position:absolute;border-radius:50%}.ico-profile .head{width:12px;height:12px;border-radius:25px;border:2px solid #333333}.ico-profile .body{width:28px;height:10px;border-radius:20px 20px 0 0;border-top:2px solid #333333;border-right:2px solid #333333;border-left:2px solid #333333}.ico-close .mdiv{height:10px;width:2px;margin-left:5px;background-color:#696969;transform:rotate(45deg);z-index:1}.ico-close .md{height:10px;width:2px;background-color:#696969;transform:rotate(90deg);z-index:2}.ico-close-search{width:16px;height:16px;display:inline-block;vertical-align:middle}.ico-close-search:before{transform:rotate(45deg)}.ico-close-search:after{transform:rotate(-45deg)}.ico-close-search:before,.ico-close-search:after{position:absolute;content:\"\";height:16px;width:2px;background-color:#bdbdbd}.ic-arrow-left{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px}.ic-arrow-left:after,.ic-arrow-left:before{content:\"\";display:block;box-sizing:border-box;position:absolute;left:3px}.ic-arrow-left:after{width:8px;height:8px;border-bottom:2px solid;border-left:2px solid;transform:rotate(45deg);bottom:7px}.ic-arrow-left:before{width:16px;height:2px;bottom:10px;background:currentColor}.ic-print{width:.68em;height:1em;border-style:solid;border-color:currentcolor;background-color:transparent;border-width:.07em;border-radius:.05em;margin:0 .16em}.ic-print:before{width:1em;height:.4em;border-width:.07em .21em 0;border-style:solid;border-color:currentColor currentcolor transparent;border-radius:.05em .05em 0 0;top:.25em;left:50%;transform:translate(-50%);background-image:linear-gradient(transparent 20%,currentcolor 20%,currentcolor 60%,transparent 60%)}.ic-print:after{width:.45em;height:.065em;background-color:currentColor;left:50%;transform:translate(-50%);top:.6em;box-shadow:0 .12em,-.1em -.28em 0 .05em}.ic-mail,.ic-mail:after{display:block;box-sizing:border-box;height:14px;border:2px solid}.ic-mail{color:#4f4f4f;overflow:hidden;transform:scale(var(--ggs, 1));position:absolute;width:18px;border-radius:2px}.ic-mail:after{content:\"\";position:absolute;border-radius:3px;width:14px;transform:rotate(-45deg);bottom:3px;left:0}.ic-phone{color:#4f4f4f;box-sizing:border-box;position:absolute;display:block;width:22px;height:22px;transform:scale(var(--ggs, 1))}.ic-phone:after,.ic-phone:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-phone:after{width:18px;height:18px;border-top-left-radius:1px;border-bottom-right-radius:1px;border-bottom-left-radius:12px;border-left:4px solid;border-bottom:4px solid;left:2px;bottom:2px;background:linear-gradient(to left,currentColor 10px,transparent 0) no-repeat right 11px/6px 4px,linear-gradient(to left,currentColor 10px,transparent 0) no-repeat -1px 0/4px 6px}.ic-phone:before{width:20px;height:20px;border:6px double;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;border-radius:50%;transform:rotate(-45deg);bottom:2px;left:2px}.ic-mouse{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:16px;height:24px;border:2px solid;border-radius:10px}.ic-mouse:after{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:2px;height:6px;background:currentColor;top:3px;left:5px}.ic-wifi{color:#000;position:absolute;margin-left:7px;margin-top:13px;width:6px;height:6px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:before{content:\"\";position:absolute;left:-5px;top:-5px;width:14px;height:14px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-wifi:after{content:\"\";position:absolute;left:-9px;top:-9px;width:22px;height:22px;border-radius:50%;border-top:solid 1px currentColor;border-right:solid 1px transparent;border-bottom:solid 1px transparent;border-left:solid 1px transparent}.ic-screen{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:22px;height:14px;border:2px solid;border-radius:3px;margin-top:-4px}.ic-screen:after,.ic-screen:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border-radius:3px;width:10px;height:2px;background:currentColor;top:14px;left:4px}.ic-screen:before{width:2px;height:6px;top:10px;left:8px}.ic-globe-alt,.ic-globe-alt:after,.ic-globe-alt:before{color:#4f4f4f;display:block;box-sizing:border-box;height:18px;border:2px solid}.ic-globe-alt{position:absolute;transform:scale(var(--ggs, 1));width:18px;border-radius:22px}.ic-globe-alt:after,.ic-globe-alt:before{content:\"\";position:absolute;width:8px;border-radius:100%;top:-2px;left:3px}.ic-globe-alt:after{width:24px;height:20px;border:2px solid transparent;border-bottom:2px solid;top:-11px;left:-5px}.ic-camera{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));border:2px solid;border-radius:3px;width:18px;height:12px;perspective:24px}.ic-camera:after,.ic-camera:before{content:\"\";display:block;box-sizing:border-box;position:absolute}.ic-camera:before{border:2px solid;border-left-color:transparent;transform:rotateY(-70deg);width:8px;height:8px;right:-7px;top:0}.ic-camera:after{width:10px;height:5px;border-top:2px solid;border-right:2px solid;top:-5px;right:2px;border-top-right-radius:2px}.ic-calendar-today{box-sizing:border-box;position:absolute;display:block;transform:scale(var(--ggs, 1));width:18px;height:18px;border:2px solid;border-top:4px solid;border-radius:3px}.ic-calendar-today:before{content:\"\";display:block;box-sizing:border-box;position:absolute;background:currentColor;height:4px;width:4px;border-radius:2px;right:2px;bottom:2px}.ic-user{display:block;position:absolute;transform:scale(var(--ggs, 1));box-sizing:border-box;width:12px;height:18px}.ic-user:after,.ic-user:before{content:\"\";display:block;box-sizing:border-box;position:absolute;border:2px solid}.ic-user:before{width:8px;height:8px;border-radius:30px;top:0;left:2px}.ic-user:after{width:12px;height:9px;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;top:9px}.ico-close-details{width:44px;height:44px;border-radius:44px;display:flex;justify-content:center;align-items:center;opacity:.8;cursor:pointer}.ico-close-details:before,.ico-close-details:after{content:\"\";width:24px;height:2px;background-color:#333;position:absolute;border-radius:1px}.ico-close-details:hover{background-color:#f4f4f4}.ico-close-details:before{transform:rotate(45deg)}.ico-close-details:after{transform:rotate(-45deg)}.ico-menu,.ico-menu:before,.ico-menu:after{cursor:pointer;border-radius:1px;height:2px;width:23px;background:#000000;position:absolute;display:block;content:\"\"}.ico-menu:before{top:-6px}.ico-menu:after{bottom:-6px}.ico-gg-eye-alt{position:relative;display:block;transform:scale(var(--ggs, 1));width:24px;height:18px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.ico-gg-eye-alt:after,.ico-gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.ico-gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px #696969,inset 0 0 0 2px #696969;width:24px;height:24px}.ico-gg-eye-alt:before{width:8px;height:8px;border:2px solid #696969;bottom:4px;left:8px;background-color:#696969}.ico-gg-add{box-sizing:border-box;position:relative;display:block;color:#47c562;width:32px;height:32px}.ico-gg-add:after,.ico-gg-add:before{content:\"\";display:block;box-sizing:border-box;position:absolute;width:14px;height:2px;background:currentColor;border-radius:5px;top:8px;left:0px}.ico-gg-add:after{width:2px;height:14px;top:2px;left:6px}.gg-eye-alt{position:relative;display:block;width:18px;height:12px;border-bottom-right-radius:100px;border-bottom-left-radius:100px;overflow:hidden;box-sizing:border-box}.gg-eye-alt:after,.gg-eye-alt:before{content:\"\";display:block;border-radius:100px;position:absolute;box-sizing:border-box}.gg-eye-alt:after{top:2px;box-shadow:inset 0 -8px 0 2px,inset 0 0 0 2px;width:18px;height:18px}.gg-eye-alt:before{width:2px;height:2px;border:2px solid black;bottom:3px;left:7px;background-color:#000}.ico-gg-check{box-sizing:border-box;position:relative;display:block;transform:scale(var(--ggs, 1));width:22px;height:22px;border:1px solid transparent;border-radius:100px;color:#fff}.ico-gg-check:after{content:\"\";display:block;box-sizing:border-box;position:absolute;left:5px;top:-3px;width:7px;height:12px;border-width:0 2px 2px 0;border-style:solid;transform-origin:bottom left;transform:rotate(45deg);color:#fff}html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}.btn-primary{background:#da3635;border-radius:4px;outline:none;cursor:pointer;color:#fff;height:40px;width:192px;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em;line-height:18px;stroke:#fff;border:1px solid #333333}.btn-primary.small{width:149px}.btn-primary.invalid{opacity:.4}.btn-primary:focus{background:white;color:#da3635;border:1px solid #da3635;stroke:#da3635}.btn-grid{display:inline-flex;flex-wrap:wrap;gap:8px}.tags-cloud{font-style:normal;justify-content:center;align-items:center;height:28px;border-radius:20px;padding:5px 15px;color:#fff;border-style:none;margin-top:5px;background:#333333}.tags-cloud.unchecked{background:#bdbdbd}.structureList-container{overflow-y:auto;scrollbar-gutter:stable}.listCard>p{margin-left:1rem}.structureListHeader{height:50px;display:flex;flex-direction:row;align-items:center;margin:8px 16px}.structureListHeader .nbStructuresLabel{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em;color:#696969;flex:1}::ng-deep .structure-card:last-child .structure{border-bottom:unset!important}@media print{.listCard{display:none}.hide-on-print{display:none!important}}\n"] }]
}], ctorParameters: function () {
return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: undefined, decorators: [{
type: Inject,
args: [STRUCTURE_TOKEN]
}] }];
}, propDecorators: { structureList: [{
type: Input
}], location: [{
type: Input
}], selectedStructure: [{
type: Input
}], displayMapMarkerId: [{
type: Output
}], selectedMarkerId: [{
type: Output
}] } });
var AccessModality;
(function (AccessModality) {
AccessModality["free"] = "accesLibre";
AccessModality["numeric"] = "telephoneVisio";
AccessModality["meetingOnly"] = "uniquementSurRdv";
AccessModality["meeting"] = "surRdv";
})(AccessModality || (AccessModality = {}));
var PublicCategorie;
(function (PublicCategorie) {
PublicCategorie["under16Years"] = "moinsDe16Ans";
PublicCategorie["young"] = "jeunes1625Ans";
PublicCategorie["adult"] = "adultes";
PublicCategorie["elderly"] = "seniorsPlusDe65Ans";
PublicCategorie["all"] = "toutPublic";
PublicCategorie["women"] = "uniquementFemmes";
})(PublicCategorie || (PublicCategorie = {}));
class PrintService {
constructor(router) {
this.router = router;
this.isPrinting = false;
}
printDocument(documentName, structure) {
this.isPrinting = true;
this.structure = structure;
this.router.navigate([
'/',
{
outlets: {
print: ['print', documentName]
}
}
]);
}
printDocuments(documentName, structures) {
this.isPrinting = true;
this.structures = structures;
this.router.navigate([
'/',
{
outlets: {
print: ['print', documentName]
}
}
]);
}
onDataReady() {
setTimeout(() => {
window.print();
this.isPrinting = false;
this.router.navigate([{ outlets: { print: null } }]);
}, 1500);
}
}
PrintService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: PrintService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
PrintService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: PrintService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: PrintService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
var Demarches;
(function (Demarches) {
Demarches["accompagnantCaf"] = "CAF";
Demarches["carsat"] = "CARSAT";
Demarches["cpam"] = "CPAM";
Demarches["espacePublicNumeriqueepn"] = "Espace public Num\u00E9rique";
Demarches["impots"] = "Imp\u00F4ts";
Demarches["logement"] = "Logements";
Demarches["poleEmploi"] = "P\u00F4le Emploi";
Demarches["autres"] = "Autres";
})(Demarches || (Demarches = {}));
var Labels;
(function (Labels) {
Labels["passNumerique"] = "Pass num\u00E9rique";
Labels["maisonFranceService"] = "Maison france service";
Labels["aidantsConnect"] = "Aidants connect";
Labels["fabriqueDeTerritoire"] = "Fabrique de territoire";
Labels["demarcheMetropolitaine"] = "D\u00E9marches M\u00E9tropolitaines";
Labels["pix"] = "\u00C9valuation des comp\u00E9tences num\u00E9riques";
Labels["conseillerNumFranceServices"] = "Conseiller num\u00E9rique";
})(Labels || (Labels = {}));
class LogoCardComponent {
getName(key) {
if (Labels[key]) {
return Labels[key];
}
else {
return Demarches[key];
}
}
}
LogoCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LogoCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
LogoCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: LogoCardComponent, selector: "app-logo-card", inputs: { logoPath: "logoPath", name: "name" }, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" *ngIf=\"name\">\n <img [src]=\"'assets/logos/' + name + '.svg'\" [alt]=\"'logo ' + name\" />\n <p>{{ getName(name) }}</p>\n</div>\n", styles: ["html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}img{margin-right:16px;width:40px}p{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;margin:0}div{width:250px;min-height:40px;margin-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LogoCardComponent, decorators: [{
type: Component,
args: [{ selector: 'app-logo-card', template: "<div fxLayout=\"row\" fxLayoutAlign=\"start center\" *ngIf=\"name\">\n <img [src]=\"'assets/logos/' + name + '.svg'\" [alt]=\"'logo ' + name\" />\n <p>{{ getName(name) }}</p>\n</div>\n", styles: ["html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}img{margin-right:16px;width:40px}p{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;margin:0}div{width:250px;min-height:40px;margin-bottom:5px}\n"] }]
}], propDecorators: { logoPath: [{
type: Input
}], name: [{
type: Input
}] } });
class StructureDetailsComponent {
constructor(searchService, structureService, printService, route, router, location) {
this.searchService = searchService;
this.structureService = structureService;
this.printService = printService;
this.route = route;
this.router = router;
this.location = location;
this.closeDetails = new EventEmitter();
this.accessModality = AccessModality;
this.showBaseSkills = false;
this.showAccessRights = false;
this.showParentingHelp = false;
this.showSocialAndProfessional = false;
this.showDigitalSecurity = false;
this.printMode = false;
this.isLoading = true;
this.lockdownInfoDisplay = false;
this.structureErrorModalOpenned = false;
this.fullScreen = false;
this.keepOriginalOrder = (a, b) => a.key;
route.url.subscribe((url) => {
var _a;
if (((_a = url[0]) === null || _a === void 0 ? void 0 : _a.path) === 'structure') {
this.structure = new Structure(this.printService.structure);
this.printMode = true;
// Display formations for printing
this.toggleAccessRights();
this.toggleBaseSkills();
this.toggleDigitalSecurity();
this.toggleParentingHelp();
this.toggleSocialAndProfessional();
this.initForm();
}
});
}
ngOnInit() {
this.isLoading = true;
this.route.queryParams.subscribe((queryParams) => {
if (queryParams.id) {
this.initForm();
}
else if (!this.printMode) {
this.structure = null;
}
});
this.route.data.subscribe((data) => {
if (data.fullScreen) {
this.fullScreen = true;
}
});
}
initForm() {
return __awaiter(this, void 0, void 0, function* () {
this.searchService.getCategoriesTraining().subscribe((referentiels) => {
referentiels.forEach((referentiel) => {
if (referentiel.isBaseSkills()) {
this.baseSkillssReferentiel = referentiel;
}
else if (referentiel.isRigthtsAccess()) {
this.accessRightsReferentiel = referentiel;
}
else if (referentiel.isDigitalCultureSecurity()) {
this.digitalCultureSecuritysReferentiel = referentiel;
}
else if (referentiel.isParentingHelp()) {
this.parentingHelpsReferentiel = referentiel;
}
else if (referentiel.isSocialAndProfessional()) {
this.socialAndProfessionalsReferentiel = referentiel;
}
});
this.setServiceCategories();
if (this.printMode) {
this.printService.onDataReady();
}
this.isLoading = false;
});
const index = this.structure.proceduresAccompaniment.indexOf('autres');
if (index > -1) {
this.structure.proceduresAccompaniment.splice(index, 1);
}
});
}
getEquipmentsLabel(equipment) {
switch (equipment) {
case Equipment.wifi:
return 'Wifi en accès libre';
case Equipment.bornes:
return this.structure.nbNumericTerminal > 1 ? 'Bornes numériques' : 'Borne numérique';
case Equipment.printer:
return this.structure.nbPrinters > 1 ? 'Imprimantes' : 'Imprimante';
case Equipment.tablet:
return this.structure.nbTablets > 1 ? 'Tablettes' : 'Tablette';
case Equipment.computer:
return this.structure.nbComputers > 1 ? 'Ordinateurs' : 'Ordinateur';
case Equipment.scanner:
return this.structure.nbScanners > 1 ? 'Scanners' : 'Scanner';
default:
return null;
}
}
close() {
this.route.url.subscribe((urls) => {
if (urls.length > 0 && urls[0].path !== 'orientation') {
this.router.navigate(['/acteurs'], {
relativeTo: this.route,
queryParams: {
id: null
},
queryParamsHandling: 'merge'
});
}
else {
this.isLoading = true;
this.location.back();
}
});
}
print() {
this.printService.printDocument('structure', this.structure);
}
getAccessLabel(accessModality) {
switch (accessModality) {
case AccessModality.free:
return 'Accès libre';
case AccessModality.meeting:
return 'Sur rendez-vous';
case AccessModality.meetingOnly:
return 'Uniquement sur RDV';
case AccessModality.numeric:
return 'Téléphone / Visio';
default:
return null;
}
}
getPublicLabel(tagetPublic) {
switch (tagetPublic) {
case PublicCategorie.young:
return 'Jeunes (16 - 25 ans)';
case PublicCategorie.adult:
return 'Adultes';
case PublicCategorie.elderly:
return 'Séniors (+ de 65 ans)';
case PublicCategorie.all:
return 'Tout public';
case PublicCategorie.under16Years:
return 'Moins de 16 ans';
case PublicCategorie.women:
return 'Uniquement femmes';
default:
return null;
}
}
setServiceCategories() {
this.baseSkills = this.structure.baseSkills.map((skill) => _.find(this.baseSkillssReferentiel.modules, { id: skill }));
this.accessRights = this.structure.accessRight.map((rights) => _.find(this.accessRightsReferentiel.modules, { id: rights }));
this.parentingHelp = this.structure.parentingHelp.map((help) => _.find(this.parentingHelpsReferentiel.modules, { id: help }));
this.socialAndProfessional = this.structure.socialAndProfessional.map((skill) => _.find(this.socialAndProfessionalsReferentiel.modules, { id: skill }));
this.digitalCultureSecurity = this.structure.digitalCultureSecurity.map((skill) => _.find(this.digitalCultureSecuritysReferentiel.modules, { id: skill }));
}
isBaseSkills() {
return this.baseSkills && this.baseSkills[0] !== undefined;
}
isAccessRights() {
return this.accessRights && this.accessRights[0] !== undefined;
}
isParentingHelp() {
return this.parentingHelp && this.parentingHelp[0] !== undefined;
}
isSocialAndProfessional() {
return this.socialAndProfessional && this.socialAndProfessional[0] !== undefined;
}
isDigitalSecurity() {
return this.digitalCultureSecurity && this.digitalCultureSecurity[0] !== undefined;
}
filterOnlyEquipments(equipmentsAndServices) {
return equipmentsAndServices.filter((eqpt) => ['ordinateurs', 'tablettes', 'bornesNumeriques', 'imprimantes', 'scanners', 'wifiEnAccesLibre'].includes(eqpt));
}
displayModalError() {
this.structureErrorModalOpenned = !this.structureErrorModalOpenned;
}
sendErrorEmail(modalValue) {
this.displayModalError();
if (modalValue.shouldSend) {
this.structureService.sendMailOnStructureError(this.structure._id, modalValue.content).subscribe(() => { });
}
}
multipleWorkshop() {
if (this.structure.baseSkills.length +
this.structure.accessRight.length +
this.structure.parentingHelp.length +
this.structure.socialAndProfessional.length +
this.structure.digitalCultureSecurity.length >
1) {
return true;
}
return false;
}
toggleBaseSkills() {
this.showBaseSkills = !this.showBaseSkills;
}
toggleAccessRights() {
this.showAccessRights = !this.showAccessRights;
}
toggleParentingHelp() {
this.showParentingHelp = !this.showParentingHelp;
}
toggleSocialAndProfessional() {
this.showSocialAndProfessional = !this.showSocialAndProfessional;
}
toggleDigitalSecurity() {
this.showDigitalSecurity = !this.showDigitalSecurity;
}
goToWebsite() {
window.open(this.structure.website, '_blank');
}
}
StructureDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: StructureDetailsComponent, deps: [{ token: SEARCH_TOKEN }, { token: STRUCTURE_TOKEN }, { token: PrintService }, { token: i1.ActivatedRoute }, { token: i1.Router }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component });
StructureDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: StructureDetailsComponent, selector: "app-structure-details", inputs: { structure: "structure" }, outputs: { closeDetails: "closeDetails" }, providers: [PrintService], ngImport: i0, template: "<div class=\"structure-details\" [ngClass]=\"{ fullScreen: fullScreen === true }\" [@slideInOut] *ngIf=\"structure\">\n <div class=\"structure-details-container\">\n <!-- Header info -->\n <div class=\"structure-details-title\" fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"space-evenly center\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'structureAvatar'\" [iconClass]=\"'icon-52'\"></app-svg-icon>\n <h1 class=\"bold\">{{ structure.structureName }}</h1>\n <div class=\"ico-close\">\n <div (click)=\"close()\" class=\"ico-close-details\"></div>\n </div>\n </div>\n <div class=\"structure-details-content\" fxLayout=\"row\" fxLayoutAlign=\"center center\" *ngIf=\"isLoading\">\n <img class=\"loader-gif\" src=\"/assets/gif/loader_circle.gif\" alt />\n </div>\n <div class=\"structure-details-content\" *ngIf=\"!isLoading\">\n <div class=\"structure-buttons hide-on-print\" fxLayout=\"row\" fxLayoutAlign=\"space-evenly\">\n <div *ngIf=\"structure.website\" class=\"clickableDiv\" role=\"button\" (click)=\"goToWebsite()\" tabindex=\"0\">\n <app-svg-icon class=\"icon\" [type]=\"'ico'\" [icon]=\"'web'\" [iconClass]=\"'icon-32'\"></app-svg-icon>\n <div class=\"iconTitle\">Voir le site</div>\n </div>\n <div role=\"button\" class=\"printButton clickableDiv\" (click)=\"print()\" tabindex=\"0\">\n <app-svg-icon class=\"icon\" [type]=\"'ico'\" [icon]=\"'printStructure'\" [iconClass]=\"'icon-32'\"></app-svg-icon>\n <div class=\"iconTitle\">Imprimer</div>\n </div>\n <div class=\"clickableDiv\" role=\"button\" (click)=\"displayModalError()\" tabindex=\"0\">\n <app-svg-icon class=\"icon\" [type]=\"'ico'\" [icon]=\"'watch'\" [iconClass]=\"'icon-32'\"></app-svg-icon>\n <div class=\"iconTitle\">Signaler une erreur</div>\n </div>\n <ng-content select=\"[slot=structure-details-actions]\"></ng-content>\n </div>\n\n <ng-content select=\"[slot=structure-admin-actions]\"></ng-content>\n\n <div class=\"structure-details-block\">\n <div fxLayout=\"column\" fxLayoutGap=\"10px\">\n <!-- Informations-->\n <div fxLayout=\"column\">\n <h2>Informations</h2>\n <div class=\"info-block\">\n <div>\n {{ structure.getLabelTypeStructure() }}\n </div>\n <div *ngIf=\"structure.address\">\n {{ structure.address.numero }} {{ structure.address.street }},\n {{ structure.address.commune }}\n </div>\n <div *ngIf=\"structure.contactPhone\">\n {{ structure.contactPhone | phone }}\n </div>\n <div *ngIf=\"structure.contactMail && structure.contactMail !== 'unknown@unknown.com'\">\n <a href=\"mailto:{{ structure.contactMail }}\">{{ structure.contactMail }}</a>\n </div>\n </div>\n <!-- Social networks-->\n <div *ngIf=\"structure.hasSocialNetwork()\" fxLayout=\"row\" fxLayoutAlign=\"none baseline\" fxLayoutGap=\"4px\">\n <a\n *ngIf=\"structure.facebook\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.facebook\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'facebook'\" [title]=\"'Facebook'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n <a\n *ngIf=\"structure.twitter\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.twitter\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'twitter'\" [title]=\"'Twitter'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n <a\n *ngIf=\"structure.instagram\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.instagram\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'instagram'\" [title]=\"'Instagram'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n <a\n *ngIf=\"structure.linkedin\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.linkedin\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'linkedin'\" [title]=\"'Linkedin'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n </div>\n </div>\n </div>\n <div *ngIf=\"structure.description\" class=\"description\">\n {{ structure.description }}\n </div>\n <div *ngIf=\"structure.lockdownActivity && lockdownInfoDisplay\" class=\"info\">\n {{ structure.lockdownActivity }}\n </div>\n </div>\n\n <div\n *ngIf=\"structure.accessModality.length > 0 || structure.hours.hasData() || structure.remoteAccompaniment\"\n class=\"structure-details-block\"\n fxLayout=\"column\">\n <div class=\"hours-services-block\">\n <!-- Opening Hours -->\n <div *ngIf=\"structure.hours.hasData()\" fxLayout=\"column\">\n <h2>Horaires</h2>\n <div fxLayout=\"column\" class=\"opening-hours\">\n <div *ngFor=\"let day of structure.hours | keyvalue: keepOriginalOrder\">\n <div *ngIf=\"day.value.open\" class=\"opening-hour\" fxLayout=\"row\" fxLayoutAlign=\"flex-start flex-start\">\n <h4 class=\"day\">{{ day.key | day }}</h4>\n <div class=\"opening-time\" fxLayout=\"column\" fxLayoutAlign=\"none flex-start\">\n <div *ngFor=\"let timeRange of day.value.time\" class=\"daily-opening-time\">\n <p *ngIf=\"timeRange.opening\">\n {{ timeRange.formatOpeningDate() }} -\n {{ timeRange.formatClosingDate() }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- services -->\n <div *ngIf=\"structure.accessModality.length > 0\" fxLayout=\"column\">\n <h2>Services</h2>\n <div fxLayout=\"column\" fxLayoutGap=\"10px\" class=\"services-block\">\n <div fxLayout=\"column\" fxLayoutGap=\"8px\">\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"none flex-end\"\n fxLayoutGap=\"8px\"\n *ngFor=\"let acces of structure.accessModality\">\n <p>{{ getAccessLabel(acces) }}</p>\n </div>\n <p *ngIf=\"structure.pmrAccess\">Accessible aux personnes \u00E0 mobilit\u00E9 r\u00E9duite</p>\n </div>\n <div *ngFor=\"let public of structure.publics\" fxLayout=\"row\" fxLayoutAlign=\"none flex-end\" fxLayoutGap=\"8px\">\n <p>{{ getPublicLabel(public) }}</p>\n </div>\n <div\n *ngFor=\"let accompaniment of structure.publicsAccompaniment\"\n fxLayout=\"row\"\n fxLayoutAlign=\"none flex-end\"\n fxLayoutGap=\"8px\">\n <p>{{ accompaniment }}</p>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"structure.exceptionalClosures\" class=\"bold-info\">\n <p class=\"description\">{{ structure.exceptionalClosures }}</p>\n </div>\n <div *ngIf=\"structure.remoteAccompaniment\" class=\"bold-info\">\n <h3>Cette structure propose un accompagnement \u00E0 distance.</h3>\n </div>\n </div>\n\n <div\n *ngIf=\"structure.labelsQualifications.length\"\n fxLayout=\"column\"\n class=\"structure-details-block\"\n fxLayoutAlign=\"baseline baseline\"\n fxLayoutGap=\"8px\">\n <h2>Labellisations</h2>\n <div class=\"wrapper\">\n <div *ngFor=\"let labels of structure.labelsQualifications\">\n <app-logo-card [name]=\"labels\"></app-logo-card>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[slot=structure-members]\"></ng-content>\n\n <div\n *ngIf=\"structure.proceduresAccompaniment.length || structure.otherDescription\"\n fxLayout=\"column\"\n class=\"structure-details-block\"\n fxLayoutAlign=\"baseline baseline\"\n fxLayoutGap=\"12px\">\n <h2>Aides num\u00E9rique</h2>\n <div fxLayout=\"column\">\n <div class=\"wrapper\">\n <div *ngFor=\"let accompagnement of structure.proceduresAccompaniment.sort()\">\n <app-logo-card *ngIf=\"accompagnement !== 'autres'\" [name]=\"accompagnement\"></app-logo-card>\n </div>\n </div>\n <p *ngIf=\"structure.otherDescription\" fxLayout=\"column\">\n {{ structure.otherDescription }}\n </p>\n </div>\n </div>\n\n <div\n *ngIf=\"isBaseSkills() || isAccessRights() || isParentingHelp() || isSocialAndProfessional() || isDigitalSecurity()\"\n fxLayout=\"column\"\n class=\"structure-details-block noSeparator\"\n fxLayoutAlign=\"baseline baseline\">\n <h2>Formations</h2>\n <div *ngIf=\"structure.freeWorkShop\">\n <span *ngIf=\"multipleWorkshop()\" class=\"bold-info\">L'acc\u00E8s \u00E0 ces formations est gratuit</span>\n <span *ngIf=\"!multipleWorkshop()\" class=\"bold-info\">L'acc\u00E8s \u00E0 cette formation est gratuit</span>\n </div>\n <div class=\"formationDetails\">\n <div *ngIf=\"isBaseSkills()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showBaseSkills }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleBaseSkills()\">\n <div class=\"titleCollapse\">Comp\u00E9tences de base</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showBaseSkills\">\n <div class=\"details\" *ngFor=\"let skill of baseSkills\">\n {{ skill.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isAccessRights()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showAccessRights }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleAccessRights()\">\n <div class=\"titleCollapse\">Acc\u00E8s aux droits</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showAccessRights\">\n <div class=\"details\" *ngFor=\"let rights of accessRights\">\n {{ rights.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isParentingHelp()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showParentingHelp }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleParentingHelp()\">\n <div class=\"titleCollapse\">Aide \u00E0 la parentalit\u00E9</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showParentingHelp\">\n <div class=\"details\" *ngFor=\"let help of parentingHelp\">\n {{ help.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isSocialAndProfessional()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showSocialAndProfessional }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleSocialAndProfessional()\">\n <div class=\"titleCollapse\">Insertion sociale et professionnelle</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showSocialAndProfessional\">\n <div class=\"details\" *ngFor=\"let skill of socialAndProfessional\">\n {{ skill.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isDigitalSecurity()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showDigitalSecurity }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleDigitalSecurity()\">\n <div class=\"titleCollapse\">Culture et s\u00E9curit\u00E9 num\u00E9rique</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showDigitalSecurity\">\n <div class=\"details\" *ngFor=\"let skill of digitalCultureSecurity\">\n {{ skill.text }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"structure.hasEquipments()\"\n fxLayout=\"column\"\n class=\"structure-details-block\"\n fxLayoutAlign=\"baseline baseline\">\n <h2>Mat\u00E9riel et wifi</h2>\n <div fxLayout=\"column\">\n <div *ngIf=\"filterOnlyEquipments(structure.equipmentsAndServices).includes('wifiEnAccesLibre')\">\n {{ getEquipmentsLabel('wifiEnAccesLibre') }}\n </div>\n <p *ngFor=\"let equipement of filterOnlyEquipments(structure.equipmentsAndServices)\" class=\"no-margin-bottom\">\n <span *ngIf=\"equipement === 'ordinateurs' && structure.nbComputers\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbComputers }}\n </span>\n <span *ngIf=\"equipement === 'tablettes' && structure.nbTablets\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbTablets }}\n </span>\n <span *ngIf=\"equipement === 'bornesNumeriques' && structure.nbNumericTerminal\">\n {{ getEquipmentsLabel(equipement) }} :\n {{ structure.nbNumericTerminal }}\n </span>\n <span *ngIf=\"equipement === 'imprimantes' && structure.nbPrinters\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbPrinters }}\n </span>\n <span *ngIf=\"equipement === 'scanners' && structure.nbScanners\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbScanners }}\n </span>\n </p>\n </div>\n </div>\n <ng-content select=\"[slot=structure-details-access]\"></ng-content>\n <div fxLayout=\"column\" class=\"structure-details-block\" fxLayoutAlign=\"baseline baseline\" fxLayoutGap=\"20px\">\n <div fxLayout=\"row\" fxLayoutAlign=\"none flex-start\" fxLayoutGap=\"13px\">\n <p class=\"updated\">Mise \u00E0 jour le {{ structure.updatedAt | date: 'mediumDate' }}</p>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[slot=structure-details-modals]\"></ng-content>\n <app-text-input-modal\n [openned]=\"structureErrorModalOpenned\"\n [placeholder]=\"'D\u00E9crivez l\\'erreur ici. Ex: Horaires faux...'\"\n [content]=\"\n 'Voulez-vous notifier res\\'in d\\'une erreur sur la fiche de cet acteur ? Votre commentaire sera envoy\u00E9 \u00E0 l\\'acteur en question ainsi qu\\'aux administrateurs.'\n \"\n (closed)=\"sendErrorEmail($event)\"\n (newContent)=\"sendErrorEmail($event)\"></app-text-input-modal>\n </div>\n</div>\n", styles: ["html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}a{padding:unset;text-decoration:underline;font-size:inherit;font-weight:inherit}p:empty{margin:0}h1{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.25em;color:#333}h2{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:.875em;color:#696969;text-transform:uppercase;margin-top:0;margin-bottom:12px}h3{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;margin:0 0 8px}.structure-details-container{position:absolute;z-index:1001;height:calc(100vh - 56px);width:100%;background-color:#fff;overflow:hidden;border-bottom:1px solid #dedede;border-right:1px solid #dedede}.structure-details-title{height:65px;border-bottom:1px solid #dedede;padding:2px 16px 2px 24px}.structure-details-title .ico-close{margin-left:auto}.structure-details-content{height:calc(100% - 65px);padding:0 8px;overflow-y:auto;scrollbar-gutter:stable;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em}.structure-buttons{width:100%;margin:0 0 16px;position:relative}.structure-buttons .clickableDiv{text-align:center;height:90px;width:115.2px;display:flex;flex-direction:column;cursor:pointer}.structure-buttons .clickableDiv .icon{margin-top:20px;flex:1;display:flex;justify-content:center;align-items:center}.structure-buttons .clickableDiv .iconTitle{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.813em;height:36px;display:flex;justify-content:center;align-items:center}.structure-buttons .clickableDiv:hover{text-decoration:underline}@media only screen and (max-width : 980px){.structure-buttons .printButton{display:none!important}}.structure-details-block{margin:0 20px;padding:24px 0;border-bottom:2px solid #f8f8f8}.structure-details-block.noSeparator{border-bottom:none;padding-bottom:0}.structure-details-block .info-block>div{margin-top:4px}.structure-details-block .info-block>div:first-of-type{margin-top:0}.structure-details-block .description{white-space:pre-wrap;margin-top:8px}.structure-details-block .info{color:#f35453;margin-top:8px}.structure-details-block .hours-services-block{display:flex;flex-direction:row}.structure-details-block .hours-services-block>div{flex:1}@media only screen and (max-width : 600px){.structure-details-block .hours-services-block{flex-direction:column}}.structure-details-block .hours-services-block .opening-hours,.structure-details-block .hours-services-block .opening-hours .opening-hour{margin-bottom:8px}.structure-details-block .hours-services-block .opening-hours .opening-hour .day{min-width:70px;margin-top:0;margin-left:0;margin-bottom:0;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em;color:#696969;text-transform:capitalize}.structure-details-block .hours-services-block .opening-hours .opening-hour .daily-opening-time p{margin:0 0 4px}.structure-details-block .services-block{margin-bottom:8px}.structure-details-block .services-block p{display:list-item;margin:0 0 0 25px}.structure-details-block .wrapper{display:grid;grid-template-columns:1fr 1fr}@media only screen and (max-width : 600px){.structure-details-block .wrapper{grid-template-columns:1fr}}.structure-details-block .formationDetails{width:100%}.structure-details-block .formationDetails .collapse{margin-bottom:13px}@media only screen and (max-width : 320px){.structure-details-block .formationDetails .collapse{width:95%!important}}.structure-details-block .formationDetails .collapse.notCollapsed{border-bottom:2px solid #f8f8f8}.structure-details-block .formationDetails .collapse.notCollapsed .logo .hide{display:none}.structure-details-block .formationDetails .collapse.notCollapsed .logo .show{display:block}.structure-details-block .formationDetails .collapse .titleCollapse{width:100%;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em}.structure-details-block .formationDetails .collapse .collapseHeader{cursor:pointer}.structure-details-block .formationDetails .collapse .logo{height:24px;width:24px}.structure-details-block .formationDetails .collapse .logo svg{width:100%;height:100%;fill:#333}.structure-details-block .formationDetails .collapse .logo .hide,.structure-details-block .formationDetails .collapse .titleCollapse .hide{display:block}.structure-details-block .formationDetails .collapse .logo .show,.structure-details-block .formationDetails .collapse .titleCollapse .show{display:none}.structure-details-block .formationDetails .collapse .detailsContainer{margin:8px 0;padding:8px 0;background-color:#f8f8f8;overflow:hidden}.structure-details-block .formationDetails .collapse .details{padding:8px 16px}.structure-details-block .updated{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em;color:#696969;font-style:italic}p,.custom-link{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;margin-top:9px;margin-bottom:9px}p.no-margin,.custom-link.no-margin{margin-top:unset;margin-bottom:unset}p.no-margin-bottom,.custom-link.no-margin-bottom{margin-bottom:unset}.custom-link ::ng-deep svg{border:1px solid white;border-radius:20px}.custom-link ::ng-deep svg:hover{border-color:#bdbdbd}.bold-info{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em}@media print{.structure-details{height:unset!important;overflow:hidden;z-index:unset;width:unset;position:unset!important}.structure-details-container,.structure-details-content{background-color:unset;z-index:unset;position:unset;top:unset;left:unset;max-width:unset;width:unset;height:unset;padding:unset;overflow:hidden;border-right:0}.hide-on-print{display:none!important}}@keyframes fadeBackground{0%{background-color:#3330}to{background-color:#33333340}}.fullScreen{width:calc(100% + 600px)!important;background-color:#33333340;animation:fadeBackground .5s;max-width:unset!important}@media only screen and (max-width : 980px){.fullScreen{width:100%!important}}.structure-details{position:fixed;z-index:1001;height:calc(100vh - 55px);width:100%;max-width:600px}.structure-details .structure-details-container{max-width:600px;opacity:1!important}@media only screen and (max-width : 980px){.structure-details .structure-details-container{max-width:unset}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i5.SvgIconComponent, selector: "app-svg-icon", inputs: ["icon", "iconClass", "type", "iconColor", "title"] }, { kind: "component", type: i5.TextInputModalComponent, selector: "app-text-input-modal", inputs: ["openned", "content", "placeholder"], outputs: ["closed", "newContent"] }, { kind: "component", type: LogoCardComponent, selector: "app-logo-card", inputs: ["logoPath", "name"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i5.DayPipe, name: "day" }, { kind: "pipe", type: i5.PhonePipe, name: "phone" }], animations: [
trigger('slideInOut', [
transition(':enter', [style({ left: '-600px' }), animate('200ms ease-in', style({ left: '0' }))]),
transition(':leave', [animate('200ms ease-in', style({ left: '-600px' }))])
]),
trigger('fadeInOut', [
transition(':enter', [
style({ backgroundColor: 'rgb(00, 00, 00, 0)' }),
animate('200ms ease-in', style({ backgroundColor: 'rgb(00, 00, 00, 0.6)' }))
]),
transition(':leave', [animate('200ms ease-in', style({ backgroundColor: 'rgb(00, 00, 00, 0)' }))])
]),
trigger('show', [
state('true', style({ height: AUTO_STYLE, visibility: AUTO_STYLE, margin: '8px 0' })),
state('false', style({ height: '0px', visibility: 'hidden', margin: '0' })),
transition('true => false', animate('300ms ease-out')),
transition('false => true', animate('300ms ease-out'))
])
] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: StructureDetailsComponent, decorators: [{
type: Component,
args: [{ selector: 'app-structure-details', animations: [
trigger('slideInOut', [
transition(':enter', [style({ left: '-600px' }), animate('200ms ease-in', style({ left: '0' }))]),
transition(':leave', [animate('200ms ease-in', style({ left: '-600px' }))])
]),
trigger('fadeInOut', [
transition(':enter', [
style({ backgroundColor: 'rgb(00, 00, 00, 0)' }),
animate('200ms ease-in', style({ backgroundColor: 'rgb(00, 00, 00, 0.6)' }))
]),
transition(':leave', [animate('200ms ease-in', style({ backgroundColor: 'rgb(00, 00, 00, 0)' }))])
]),
trigger('show', [
state('true', style({ height: AUTO_STYLE, visibility: AUTO_STYLE, margin: '8px 0' })),
state('false', style({ height: '0px', visibility: 'hidden', margin: '0' })),
transition('true => false', animate('300ms ease-out')),
transition('false => true', animate('300ms ease-out'))
])
], providers: [PrintService], template: "<div class=\"structure-details\" [ngClass]=\"{ fullScreen: fullScreen === true }\" [@slideInOut] *ngIf=\"structure\">\n <div class=\"structure-details-container\">\n <!-- Header info -->\n <div class=\"structure-details-title\" fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"space-evenly center\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'structureAvatar'\" [iconClass]=\"'icon-52'\"></app-svg-icon>\n <h1 class=\"bold\">{{ structure.structureName }}</h1>\n <div class=\"ico-close\">\n <div (click)=\"close()\" class=\"ico-close-details\"></div>\n </div>\n </div>\n <div class=\"structure-details-content\" fxLayout=\"row\" fxLayoutAlign=\"center center\" *ngIf=\"isLoading\">\n <img class=\"loader-gif\" src=\"/assets/gif/loader_circle.gif\" alt />\n </div>\n <div class=\"structure-details-content\" *ngIf=\"!isLoading\">\n <div class=\"structure-buttons hide-on-print\" fxLayout=\"row\" fxLayoutAlign=\"space-evenly\">\n <div *ngIf=\"structure.website\" class=\"clickableDiv\" role=\"button\" (click)=\"goToWebsite()\" tabindex=\"0\">\n <app-svg-icon class=\"icon\" [type]=\"'ico'\" [icon]=\"'web'\" [iconClass]=\"'icon-32'\"></app-svg-icon>\n <div class=\"iconTitle\">Voir le site</div>\n </div>\n <div role=\"button\" class=\"printButton clickableDiv\" (click)=\"print()\" tabindex=\"0\">\n <app-svg-icon class=\"icon\" [type]=\"'ico'\" [icon]=\"'printStructure'\" [iconClass]=\"'icon-32'\"></app-svg-icon>\n <div class=\"iconTitle\">Imprimer</div>\n </div>\n <div class=\"clickableDiv\" role=\"button\" (click)=\"displayModalError()\" tabindex=\"0\">\n <app-svg-icon class=\"icon\" [type]=\"'ico'\" [icon]=\"'watch'\" [iconClass]=\"'icon-32'\"></app-svg-icon>\n <div class=\"iconTitle\">Signaler une erreur</div>\n </div>\n <ng-content select=\"[slot=structure-details-actions]\"></ng-content>\n </div>\n\n <ng-content select=\"[slot=structure-admin-actions]\"></ng-content>\n\n <div class=\"structure-details-block\">\n <div fxLayout=\"column\" fxLayoutGap=\"10px\">\n <!-- Informations-->\n <div fxLayout=\"column\">\n <h2>Informations</h2>\n <div class=\"info-block\">\n <div>\n {{ structure.getLabelTypeStructure() }}\n </div>\n <div *ngIf=\"structure.address\">\n {{ structure.address.numero }} {{ structure.address.street }},\n {{ structure.address.commune }}\n </div>\n <div *ngIf=\"structure.contactPhone\">\n {{ structure.contactPhone | phone }}\n </div>\n <div *ngIf=\"structure.contactMail && structure.contactMail !== 'unknown@unknown.com'\">\n <a href=\"mailto:{{ structure.contactMail }}\">{{ structure.contactMail }}</a>\n </div>\n </div>\n <!-- Social networks-->\n <div *ngIf=\"structure.hasSocialNetwork()\" fxLayout=\"row\" fxLayoutAlign=\"none baseline\" fxLayoutGap=\"4px\">\n <a\n *ngIf=\"structure.facebook\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.facebook\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'facebook'\" [title]=\"'Facebook'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n <a\n *ngIf=\"structure.twitter\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.twitter\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'twitter'\" [title]=\"'Twitter'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n <a\n *ngIf=\"structure.instagram\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.instagram\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'instagram'\" [title]=\"'Instagram'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n <a\n *ngIf=\"structure.linkedin\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.linkedin\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'linkedin'\" [title]=\"'Linkedin'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n </div>\n </div>\n </div>\n <div *ngIf=\"structure.description\" class=\"description\">\n {{ structure.description }}\n </div>\n <div *ngIf=\"structure.lockdownActivity && lockdownInfoDisplay\" class=\"info\">\n {{ structure.lockdownActivity }}\n </div>\n </div>\n\n <div\n *ngIf=\"structure.accessModality.length > 0 || structure.hours.hasData() || structure.remoteAccompaniment\"\n class=\"structure-details-block\"\n fxLayout=\"column\">\n <div class=\"hours-services-block\">\n <!-- Opening Hours -->\n <div *ngIf=\"structure.hours.hasData()\" fxLayout=\"column\">\n <h2>Horaires</h2>\n <div fxLayout=\"column\" class=\"opening-hours\">\n <div *ngFor=\"let day of structure.hours | keyvalue: keepOriginalOrder\">\n <div *ngIf=\"day.value.open\" class=\"opening-hour\" fxLayout=\"row\" fxLayoutAlign=\"flex-start flex-start\">\n <h4 class=\"day\">{{ day.key | day }}</h4>\n <div class=\"opening-time\" fxLayout=\"column\" fxLayoutAlign=\"none flex-start\">\n <div *ngFor=\"let timeRange of day.value.time\" class=\"daily-opening-time\">\n <p *ngIf=\"timeRange.opening\">\n {{ timeRange.formatOpeningDate() }} -\n {{ timeRange.formatClosingDate() }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- services -->\n <div *ngIf=\"structure.accessModality.length > 0\" fxLayout=\"column\">\n <h2>Services</h2>\n <div fxLayout=\"column\" fxLayoutGap=\"10px\" class=\"services-block\">\n <div fxLayout=\"column\" fxLayoutGap=\"8px\">\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"none flex-end\"\n fxLayoutGap=\"8px\"\n *ngFor=\"let acces of structure.accessModality\">\n <p>{{ getAccessLabel(acces) }}</p>\n </div>\n <p *ngIf=\"structure.pmrAccess\">Accessible aux personnes \u00E0 mobilit\u00E9 r\u00E9duite</p>\n </div>\n <div *ngFor=\"let public of structure.publics\" fxLayout=\"row\" fxLayoutAlign=\"none flex-end\" fxLayoutGap=\"8px\">\n <p>{{ getPublicLabel(public) }}</p>\n </div>\n <div\n *ngFor=\"let accompaniment of structure.publicsAccompaniment\"\n fxLayout=\"row\"\n fxLayoutAlign=\"none flex-end\"\n fxLayoutGap=\"8px\">\n <p>{{ accompaniment }}</p>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"structure.exceptionalClosures\" class=\"bold-info\">\n <p class=\"description\">{{ structure.exceptionalClosures }}</p>\n </div>\n <div *ngIf=\"structure.remoteAccompaniment\" class=\"bold-info\">\n <h3>Cette structure propose un accompagnement \u00E0 distance.</h3>\n </div>\n </div>\n\n <div\n *ngIf=\"structure.labelsQualifications.length\"\n fxLayout=\"column\"\n class=\"structure-details-block\"\n fxLayoutAlign=\"baseline baseline\"\n fxLayoutGap=\"8px\">\n <h2>Labellisations</h2>\n <div class=\"wrapper\">\n <div *ngFor=\"let labels of structure.labelsQualifications\">\n <app-logo-card [name]=\"labels\"></app-logo-card>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[slot=structure-members]\"></ng-content>\n\n <div\n *ngIf=\"structure.proceduresAccompaniment.length || structure.otherDescription\"\n fxLayout=\"column\"\n class=\"structure-details-block\"\n fxLayoutAlign=\"baseline baseline\"\n fxLayoutGap=\"12px\">\n <h2>Aides num\u00E9rique</h2>\n <div fxLayout=\"column\">\n <div class=\"wrapper\">\n <div *ngFor=\"let accompagnement of structure.proceduresAccompaniment.sort()\">\n <app-logo-card *ngIf=\"accompagnement !== 'autres'\" [name]=\"accompagnement\"></app-logo-card>\n </div>\n </div>\n <p *ngIf=\"structure.otherDescription\" fxLayout=\"column\">\n {{ structure.otherDescription }}\n </p>\n </div>\n </div>\n\n <div\n *ngIf=\"isBaseSkills() || isAccessRights() || isParentingHelp() || isSocialAndProfessional() || isDigitalSecurity()\"\n fxLayout=\"column\"\n class=\"structure-details-block noSeparator\"\n fxLayoutAlign=\"baseline baseline\">\n <h2>Formations</h2>\n <div *ngIf=\"structure.freeWorkShop\">\n <span *ngIf=\"multipleWorkshop()\" class=\"bold-info\">L'acc\u00E8s \u00E0 ces formations est gratuit</span>\n <span *ngIf=\"!multipleWorkshop()\" class=\"bold-info\">L'acc\u00E8s \u00E0 cette formation est gratuit</span>\n </div>\n <div class=\"formationDetails\">\n <div *ngIf=\"isBaseSkills()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showBaseSkills }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleBaseSkills()\">\n <div class=\"titleCollapse\">Comp\u00E9tences de base</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showBaseSkills\">\n <div class=\"details\" *ngFor=\"let skill of baseSkills\">\n {{ skill.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isAccessRights()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showAccessRights }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleAccessRights()\">\n <div class=\"titleCollapse\">Acc\u00E8s aux droits</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showAccessRights\">\n <div class=\"details\" *ngFor=\"let rights of accessRights\">\n {{ rights.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isParentingHelp()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showParentingHelp }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleParentingHelp()\">\n <div class=\"titleCollapse\">Aide \u00E0 la parentalit\u00E9</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showParentingHelp\">\n <div class=\"details\" *ngFor=\"let help of parentingHelp\">\n {{ help.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isSocialAndProfessional()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showSocialAndProfessional }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleSocialAndProfessional()\">\n <div class=\"titleCollapse\">Insertion sociale et professionnelle</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showSocialAndProfessional\">\n <div class=\"details\" *ngFor=\"let skill of socialAndProfessional\">\n {{ skill.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isDigitalSecurity()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showDigitalSecurity }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleDigitalSecurity()\">\n <div class=\"titleCollapse\">Culture et s\u00E9curit\u00E9 num\u00E9rique</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showDigitalSecurity\">\n <div class=\"details\" *ngFor=\"let skill of digitalCultureSecurity\">\n {{ skill.text }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"structure.hasEquipments()\"\n fxLayout=\"column\"\n class=\"structure-details-block\"\n fxLayoutAlign=\"baseline baseline\">\n <h2>Mat\u00E9riel et wifi</h2>\n <div fxLayout=\"column\">\n <div *ngIf=\"filterOnlyEquipments(structure.equipmentsAndServices).includes('wifiEnAccesLibre')\">\n {{ getEquipmentsLabel('wifiEnAccesLibre') }}\n </div>\n <p *ngFor=\"let equipement of filterOnlyEquipments(structure.equipmentsAndServices)\" class=\"no-margin-bottom\">\n <span *ngIf=\"equipement === 'ordinateurs' && structure.nbComputers\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbComputers }}\n </span>\n <span *ngIf=\"equipement === 'tablettes' && structure.nbTablets\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbTablets }}\n </span>\n <span *ngIf=\"equipement === 'bornesNumeriques' && structure.nbNumericTerminal\">\n {{ getEquipmentsLabel(equipement) }} :\n {{ structure.nbNumericTerminal }}\n </span>\n <span *ngIf=\"equipement === 'imprimantes' && structure.nbPrinters\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbPrinters }}\n </span>\n <span *ngIf=\"equipement === 'scanners' && structure.nbScanners\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbScanners }}\n </span>\n </p>\n </div>\n </div>\n <ng-content select=\"[slot=structure-details-access]\"></ng-content>\n <div fxLayout=\"column\" class=\"structure-details-block\" fxLayoutAlign=\"baseline baseline\" fxLayoutGap=\"20px\">\n <div fxLayout=\"row\" fxLayoutAlign=\"none flex-start\" fxLayoutGap=\"13px\">\n <p class=\"updated\">Mise \u00E0 jour le {{ structure.updatedAt | date: 'mediumDate' }}</p>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[slot=structure-details-modals]\"></ng-content>\n <app-text-input-modal\n [openned]=\"structureErrorModalOpenned\"\n [placeholder]=\"'D\u00E9crivez l\\'erreur ici. Ex: Horaires faux...'\"\n [content]=\"\n 'Voulez-vous notifier res\\'in d\\'une erreur sur la fiche de cet acteur ? Votre commentaire sera envoy\u00E9 \u00E0 l\\'acteur en question ainsi qu\\'aux administrateurs.'\n \"\n (closed)=\"sendErrorEmail($event)\"\n (newContent)=\"sendErrorEmail($event)\"></app-text-input-modal>\n </div>\n</div>\n", styles: ["html,body,p,span,label,h1,h2,h3,h4,h5,h6,.card-header-text,.welcome-message,.user-name,.profile-user-name,.project-name,.annuaire-label,.event_title,.objective_title{font-family:Lato,Helvetica,sans-serif}a{padding:unset;text-decoration:underline;font-size:inherit;font-weight:inherit}p:empty{margin:0}h1{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1.25em;color:#333}h2{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:.875em;color:#696969;text-transform:uppercase;margin-top:0;margin-bottom:12px}h3{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;margin:0 0 8px}.structure-details-container{position:absolute;z-index:1001;height:calc(100vh - 56px);width:100%;background-color:#fff;overflow:hidden;border-bottom:1px solid #dedede;border-right:1px solid #dedede}.structure-details-title{height:65px;border-bottom:1px solid #dedede;padding:2px 16px 2px 24px}.structure-details-title .ico-close{margin-left:auto}.structure-details-content{height:calc(100% - 65px);padding:0 8px;overflow-y:auto;scrollbar-gutter:stable;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em}.structure-buttons{width:100%;margin:0 0 16px;position:relative}.structure-buttons .clickableDiv{text-align:center;height:90px;width:115.2px;display:flex;flex-direction:column;cursor:pointer}.structure-buttons .clickableDiv .icon{margin-top:20px;flex:1;display:flex;justify-content:center;align-items:center}.structure-buttons .clickableDiv .iconTitle{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.813em;height:36px;display:flex;justify-content:center;align-items:center}.structure-buttons .clickableDiv:hover{text-decoration:underline}@media only screen and (max-width : 980px){.structure-buttons .printButton{display:none!important}}.structure-details-block{margin:0 20px;padding:24px 0;border-bottom:2px solid #f8f8f8}.structure-details-block.noSeparator{border-bottom:none;padding-bottom:0}.structure-details-block .info-block>div{margin-top:4px}.structure-details-block .info-block>div:first-of-type{margin-top:0}.structure-details-block .description{white-space:pre-wrap;margin-top:8px}.structure-details-block .info{color:#f35453;margin-top:8px}.structure-details-block .hours-services-block{display:flex;flex-direction:row}.structure-details-block .hours-services-block>div{flex:1}@media only screen and (max-width : 600px){.structure-details-block .hours-services-block{flex-direction:column}}.structure-details-block .hours-services-block .opening-hours,.structure-details-block .hours-services-block .opening-hours .opening-hour{margin-bottom:8px}.structure-details-block .hours-services-block .opening-hours .opening-hour .day{min-width:70px;margin-top:0;margin-left:0;margin-bottom:0;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em;color:#696969;text-transform:capitalize}.structure-details-block .hours-services-block .opening-hours .opening-hour .daily-opening-time p{margin:0 0 4px}.structure-details-block .services-block{margin-bottom:8px}.structure-details-block .services-block p{display:list-item;margin:0 0 0 25px}.structure-details-block .wrapper{display:grid;grid-template-columns:1fr 1fr}@media only screen and (max-width : 600px){.structure-details-block .wrapper{grid-template-columns:1fr}}.structure-details-block .formationDetails{width:100%}.structure-details-block .formationDetails .collapse{margin-bottom:13px}@media only screen and (max-width : 320px){.structure-details-block .formationDetails .collapse{width:95%!important}}.structure-details-block .formationDetails .collapse.notCollapsed{border-bottom:2px solid #f8f8f8}.structure-details-block .formationDetails .collapse.notCollapsed .logo .hide{display:none}.structure-details-block .formationDetails .collapse.notCollapsed .logo .show{display:block}.structure-details-block .formationDetails .collapse .titleCollapse{width:100%;font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em}.structure-details-block .formationDetails .collapse .collapseHeader{cursor:pointer}.structure-details-block .formationDetails .collapse .logo{height:24px;width:24px}.structure-details-block .formationDetails .collapse .logo svg{width:100%;height:100%;fill:#333}.structure-details-block .formationDetails .collapse .logo .hide,.structure-details-block .formationDetails .collapse .titleCollapse .hide{display:block}.structure-details-block .formationDetails .collapse .logo .show,.structure-details-block .formationDetails .collapse .titleCollapse .show{display:none}.structure-details-block .formationDetails .collapse .detailsContainer{margin:8px 0;padding:8px 0;background-color:#f8f8f8;overflow:hidden}.structure-details-block .formationDetails .collapse .details{padding:8px 16px}.structure-details-block .updated{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:.875em;color:#696969;font-style:italic}p,.custom-link{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:400;font-size:1em;margin-top:9px;margin-bottom:9px}p.no-margin,.custom-link.no-margin{margin-top:unset;margin-bottom:unset}p.no-margin-bottom,.custom-link.no-margin-bottom{margin-bottom:unset}.custom-link ::ng-deep svg{border:1px solid white;border-radius:20px}.custom-link ::ng-deep svg:hover{border-color:#bdbdbd}.bold-info{font-family:Lato,Helvetica,sans-serif;font-style:normal;font-weight:700;font-size:1em}@media print{.structure-details{height:unset!important;overflow:hidden;z-index:unset;width:unset;position:unset!important}.structure-details-container,.structure-details-content{background-color:unset;z-index:unset;position:unset;top:unset;left:unset;max-width:unset;width:unset;height:unset;padding:unset;overflow:hidden;border-right:0}.hide-on-print{display:none!important}}@keyframes fadeBackground{0%{background-color:#3330}to{background-color:#33333340}}.fullScreen{width:calc(100% + 600px)!important;background-color:#33333340;animation:fadeBackground .5s;max-width:unset!important}@media only screen and (max-width : 980px){.fullScreen{width:100%!important}}.structure-details{position:fixed;z-index:1001;height:calc(100vh - 55px);width:100%;max-width:600px}.structure-details .structure-details-container{max-width:600px;opacity:1!important}@media only screen and (max-width : 980px){.structure-details .structure-details-container{max-width:unset}}\n"] }]
}], ctorParameters: function () {
return [{ type: undefined, decorators: [{
type: Inject,
args: [SEARCH_TOKEN]
}] }, { type: undefined, decorators: [{
type: Inject,
args: [STRUCTURE_TOKEN]
}] }, { type: PrintService }, { type: i1.ActivatedRoute }, { type: i1.Router }, { type: i3.Location }];
}, propDecorators: { structure: [{
type: Input
}], closeDetails: [{
type: Output
}] } });
class StructureModule {
constructor(searchRepository, structureRepository) {
this.searchRepository = searchRepository;
this.structureRepository = structureRepository;
if ([searchRepository].includes(null)) {
throw new Error('Cannot import `StructureListModule` without calling `forRoot` with valid parameters: you must provide defined `searchRepository` and `structureRepository`.');
}
}
static forRoot(searchRepository, structureRepository) {
return {
ngModule: StructureModule,
providers: [
{
provide: SEARCH_TOKEN,
useClass: searchRepository
},
{
provide: STRUCTURE_TOKEN,
useClass: structureRepository
}
]
};
}
}
StructureModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: StructureModule, deps: [{ token: SEARCH_TOKEN, optional: true }, { token: STRUCTURE_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
StructureModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: StructureModule, declarations: [ModalFilterComponent,
StructureListSearchComponent,
CardComponent,
StructureDetailsComponent,
LogoCardComponent,
StructureListComponent], imports: [CommonModule,
FlexModule,
ReactiveFormsModule,
SvgIconModule,
ButtonModule,
ModalModule,
DayModule,
PhoneModule,
DistanceModule,
TextInputModalModule], exports: [StructureListSearchComponent, StructureListComponent, StructureDetailsComponent, CardComponent] });
StructureModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: StructureModule, imports: [CommonModule,
FlexModule,
ReactiveFormsModule,
SvgIconModule,
ButtonModule,
ModalModule,
DayModule,
PhoneModule,
DistanceModule,
TextInputModalModule] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: StructureModule, decorators: [{
type: NgModule,
args: [{
declarations: [
ModalFilterComponent,
StructureListSearchComponent,
CardComponent,
StructureDetailsComponent,
LogoCardComponent,
StructureListComponent
],
exports: [StructureListSearchComponent, StructureListComponent, StructureDetailsComponent, CardComponent],
imports: [
CommonModule,
FlexModule,
ReactiveFormsModule,
SvgIconModule,
ButtonModule,
ModalModule,
DayModule,
PhoneModule,
DistanceModule,
TextInputModalModule
]
}]
}], ctorParameters: function () {
return [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [SEARCH_TOKEN]
}] }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [STRUCTURE_TOKEN]
}] }];
} });
class Category {
constructor(obj) {
Object.assign(this, obj, {
modules: obj && obj.modules
? obj.modules.map((module) => new Module(module.display_id ? module.display_id : module.id, module.text, module.text))
: null
});
}
isBaseSkills() {
return this.id === 'baseSkills';
}
isRigthtsAccess() {
return this.id === 'accessRight';
}
isParentingHelp() {
return this.id === 'parentingHelp';
}
isDigitalCultureSecurity() {
return this.id === 'digitalCultureSecurity';
}
isSocialAndProfessional() {
return this.id === 'socialAndProfessional';
}
}
/**
* Generated bundle index. Do not edit.
*/
export { AccessModality, Address, CardComponent, Category, Day, Demarches, Equipment, Filter, GEOMETRY_POLYGON_TOKEN, GeoJson, INITIAL_POSITION_TOKEN, Labels, MARKER_TYPE_TOKEN, MapComponent, MapModule, Module, OpeningDay, PersonalOffer, PublicCategorie, SEARCH_TOKEN, STRUCTURE_TOKEN, Structure, StructureDetailsComponent, StructureListComponent, StructureListSearchComponent, StructureModule, Time, TypeModal, Week, Weekday, ZOOM_LEVEL_TOKEN, typeStructureEnum };
//# sourceMappingURL=gouvfr-anct-mediation-numerique.mjs.map