UNPKG

@gouvfr-anct/mediation-numerique

Version:

📚 Bibliothèque pour la cartographie de l’offre de médiation numérique.

1 lines • 187 kB
{"version":3,"file":"gouvfr-anct-mediation-numerique.mjs","sources":["../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/configurations/geometry-polygon.configuration.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/configurations/initial-position.configuration.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/configurations/marker-type.configuration.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/configurations/zoom-level.configuration.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/repositories/geo-json.repository.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/layers.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/markerType.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/marker.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/map.service.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/map.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/map.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/map.module.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/equipment.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/typeStructure.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/weekday.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/address.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/time.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/day.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/addressGeometry.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/geojson.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/openingDay.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/personalOffer.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/week.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/structure.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/card/card.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/card/card.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/typeModal.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/filter.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/module.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/repositories/search.repository.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/modal-filter/modal-filter.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/modal-filter/modal-filter.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/search/structure-list-search.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/search/structure-list-search.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/repositories/structure.repository.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/structure-list/structure-list.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/structure-list/structure-list.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/access-modality.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/public.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/services/print.service.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/demarches.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/labels.emum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/logo-card/logo-card.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/logo-card/logo-card.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/structure-details/structure-details.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/structure-details/structure-details.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/modules/structure.module.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/category.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/gouvfr-anct-mediation-numerique.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { FeatureCollection, Polygon } from 'geojson';\n\nexport type GeometryPolygonConfiguration = FeatureCollection<Polygon>;\n\nexport const GEOMETRY_POLYGON_TOKEN: InjectionToken<GeometryPolygonConfiguration> =\n  new InjectionToken<GeometryPolygonConfiguration>('geometry-polygon.configuration');\n","import { InjectionToken } from '@angular/core';\n\nexport type InitialPositionConfiguration = {\n  latitude: number;\n  longitude: number;\n};\n\nexport const INITIAL_POSITION_TOKEN: InjectionToken<InitialPositionConfiguration> =\n  new InjectionToken<InitialPositionConfiguration>('initial-position.configuration');\n","import { InjectionToken } from '@angular/core';\n\nexport type MarkerTypeConfiguration = {\n  structure: number;\n  mdm: number;\n  conseillerFrance: number;\n  user: number;\n};\n\nexport const MARKER_TYPE_TOKEN: InjectionToken<MarkerTypeConfiguration> = new InjectionToken<MarkerTypeConfiguration>(\n  'marker-type.configuration'\n);\n","import { InjectionToken } from '@angular/core';\n\nexport type ZoomLevelConfiguration = {\n  min: number;\n  regular: number;\n  userPosition: number;\n  max: number;\n};\n\nexport const ZOOM_LEVEL_TOKEN: InjectionToken<ZoomLevelConfiguration> = new InjectionToken<ZoomLevelConfiguration>(\n  'zoom-level.configuration'\n);\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GeoJson } from '../models/geojson.model';\n\nexport interface GeoJsonRepository {\n  getMDMGeoJson(): Observable<GeoJson[]>;\n  getTownshipCoord(town: string): Observable<Array<any>>;\n}\n\nexport const GEO_JSON_TOKEN: InjectionToken<GeoJsonRepository> = new InjectionToken<GeoJsonRepository>(\n  'map.geo-json.repository'\n);\n","export enum Layers {\n  mdm = 'mdm',\n  user = 'user',\n  structure = 'structure'\n}\n","export enum MarkerType {\n  structure = 0,\n  mdm = 1,\n  conseillerFrance = 2,\n  user = 3\n}\n","import { divIcon } from 'leaflet';\n\nexport const markerIcon = divIcon({\n  className: null,\n  html: '<svg width=\"48\" height=\"48\" fill=\"#4C4D53\"><use xlink:href=\"assets/ico/sprite.svg#map-marker\"></use></svg>',\n  iconSize: [48, 48],\n  iconAnchor: [24, 48],\n  popupAnchor: [0, -48]\n});\nexport const markerIconActive = divIcon({\n  className: 'on-top-marker',\n  html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#map-markerSelected\"></use></svg>',\n  iconSize: [48, 48],\n  iconAnchor: [24, 48],\n  popupAnchor: [0, -48]\n});\nexport const markerIconHover = divIcon({\n  className: 'on-top-marker',\n  html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#map-markerHover\"></use></svg>',\n  iconSize: [48, 48],\n  iconAnchor: [24, 48],\n  popupAnchor: [0, -48]\n});\nexport const markerIconAddedToList = divIcon({\n  className: null,\n  html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#map-marker-added\"></use></svg>',\n  iconSize: [48, 48],\n  iconAnchor: [24, 48],\n  popupAnchor: [0, -48]\n});\nexport const userLocationIcon = divIcon({\n  className: null,\n  html: '<svg width=\"34\" height=\"34\"><use xlink:href=\"assets/ico/sprite.svg#user-location\"></use></svg>',\n  iconSize: [34, 34],\n  iconAnchor: [17, 0]\n});\nexport const markerIconMdm = divIcon({\n  className: null,\n  html: '<svg width=\"19\" height=\"24\" fill=\"#D4C4A9\" class=\"mdm\"><use xlink:href=\"assets/ico/sprite.svg#mdm\"></use></svg>',\n  iconSize: [19, 24],\n  iconAnchor: [9, 0]\n});\nexport const markerIconMdmActive = divIcon({\n  className: null,\n  html: '<svg width=\"19\" height=\"24\"><use xlink:href=\"assets/ico/sprite.svg#mdmActive\"></use></svg>',\n  iconSize: [19, 24],\n  iconAnchor: [9, 0]\n});\nexport const markerIconFranceService = divIcon({\n  className: null,\n  html: '<svg width=\"48\" height=\"48\" fill=\"#ED3939\" class=\"france-service\"><use xlink:href=\"assets/ico/sprite.svg#conseillerFranceService\"></use></svg>',\n  iconSize: [48, 48],\n  iconAnchor: [24, 48],\n  popupAnchor: [0, -48]\n});\nexport const markerIconFranceServiceActive = divIcon({\n  className: null,\n  html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#conseillerFranceServiceSelected\"></use></svg>',\n  iconSize: [48, 48],\n  iconAnchor: [24, 48],\n  popupAnchor: [0, -48]\n});\nexport const markerIconFranceServiceHover = divIcon({\n  className: null,\n  html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#conseillerFranceServiceHover\"></use></svg>',\n  iconSize: [48, 48],\n  iconAnchor: [24, 48],\n  popupAnchor: [0, -48]\n});\nexport const markerIconFranceServiceAddedToList = divIcon({\n  className: null,\n  html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#conseillerFranceServiceAdded\"></use></svg>',\n  iconSize: [48, 48],\n  iconAnchor: [24, 48],\n  popupAnchor: [0, -48]\n});\n","import { Injectable } from '@angular/core';\nimport { DivIcon, Map, Marker } from 'leaflet';\nimport { Layers } from '../models/enum/layers.enum';\nimport { MarkerType } from '../models/enum/markerType.enum';\nimport {\n  markerIcon,\n  markerIconActive,\n  markerIconAddedToList,\n  markerIconHover,\n  markerIconMdm,\n  markerIconMdmActive,\n  userLocationIcon\n} from './marker';\n\n@Injectable()\nexport class MapService {\n  private static markersList = {};\n  private isMarkerActive = false;\n\n  public createMarker(lat: number, lon: number, markerType: MarkerType, id?: string, tooltip?: string): Marker {\n    const marker = new Marker([lat, lon], {\n      icon: this.getMarkerIcon(markerType),\n      attribution: this.getLayerAttributton(markerType)\n    });\n    marker.on('mouseclick', (evt) => {\n      evt.target.openPopup();\n    });\n\n    // handle icon change when select marker\n    marker.on('click', (evt) => {\n      evt.target.setIcon(this.getActiveMarkerIcon(markerType));\n    });\n\n    if (tooltip) {\n      marker.bindPopup(tooltip);\n\n      // handle icon change when unselect\n      marker.getPopup().on('remove', (evt) => {\n        marker.setIcon(this.getMarkerIcon(markerType));\n      });\n    }\n\n    if (id) {\n      MapService.markersList[id] = marker;\n    }\n    return marker;\n  }\n\n  private getLayerAttributton(markerType: MarkerType): string {\n    if (markerType === MarkerType.mdm) {\n      return Layers.mdm;\n    } else if (markerType === MarkerType.user) {\n      return Layers.user;\n    } else {\n      return Layers.structure;\n    }\n  }\n\n  // Note: Marke IconFranceService has been removed temporarly on order to rework on buisness needs.\n  // This comment is applied for the next 4 methods\n  private getMarkerIcon(markerType: MarkerType): DivIcon {\n    switch (markerType) {\n      case MarkerType.mdm:\n        return markerIconMdm;\n      case MarkerType.conseillerFrance:\n        return markerIcon;\n      case MarkerType.user:\n        return userLocationIcon;\n      default:\n        return markerIcon;\n    }\n  }\n\n  private getActiveMarkerIcon(markerType: MarkerType): DivIcon {\n    switch (markerType) {\n      case MarkerType.mdm:\n        return markerIconMdmActive;\n      case MarkerType.conseillerFrance:\n        // return markerIconFranceServiceActive;\n        return markerIconActive;\n      case MarkerType.user:\n        return userLocationIcon;\n      default:\n        return markerIconActive;\n    }\n  }\n\n  private getAddedToListMarkerIcon(markerType: MarkerType): DivIcon {\n    switch (markerType) {\n      case MarkerType.conseillerFrance:\n        // return markerIconFranceServiceAddedToList;\n        return markerIconAddedToList;\n      case MarkerType.user:\n        return userLocationIcon;\n      default:\n        return markerIconAddedToList;\n    }\n  }\n\n  private getHoverMarkerIcon(markerType: MarkerType): DivIcon {\n    switch (markerType) {\n      case MarkerType.conseillerFrance:\n        return markerIconHover;\n      case MarkerType.user:\n        return userLocationIcon;\n      default:\n        return markerIconHover;\n    }\n  }\n\n  /**\n   * @param id marker id\n   */\n  public setActiveMarker(id: string, type: MarkerType = MarkerType.structure): void {\n    this.getMarker(id)?.setIcon(this.getHoverMarkerIcon(type));\n  }\n\n  public setAddedToListMarker(id: string, type: MarkerType = MarkerType.structure): void {\n    this.getMarker(id).setIcon(this.getAddedToListMarkerIcon(type));\n  }\n\n  public setUnactiveMarker(id: string, type: MarkerType = MarkerType.structure): void {\n    // To skip mouseleave when user emit click on structure list\n    this.getMarker(id)?.setIcon(this.getMarkerIcon(type));\n    this.isMarkerActive = false;\n  }\n\n  /**\n   * Set a tooltip\n   * @param id markerId\n   * @param html html to display\n   */\n  public setToolTip(id: string, html: string): void {\n    this.getMarker(id).bindTooltip(html);\n  }\n\n  /**\n   * Set a marker as selected by changing icon color\n   * @param id markerId\n   * @param html html to display\n   */\n  public setSelectedMarker(id: string, type: MarkerType = MarkerType.structure): void {\n    if (id) {\n      this.getMarker(id)?.setIcon(this.getActiveMarkerIcon(type));\n      this.isMarkerActive = true;\n    }\n  }\n\n  /**\n   * Set a marker as selected by changing icon color\n   * @param id markerId\n   * @param html html to display\n   */\n  public setDefaultMarker(id: string, type: MarkerType = MarkerType.structure): void {\n    if (id) {\n      this.getMarker(id).setIcon(this.getMarkerIcon(type));\n    }\n  }\n\n  /**\n   * Get marker by id\n   */\n  public getMarker(id: string): Marker {\n    return MapService.markersList[id] ? MapService.markersList[id] : null;\n  }\n\n  public cleanMap(map: Map): Map {\n    MapService.markersList = {};\n    if (map) {\n      map.eachLayer((layer) => {\n        if (layer instanceof Marker && layer.options.attribution == Layers.structure) {\n          map.removeLayer(layer);\n        }\n      });\n    }\n    return map;\n  }\n}\n","import { Component, EventEmitter, HostListener, Inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport L, { geoJSON, latLng, layerGroup, Map, MapOptions, tileLayer } from 'leaflet';\nimport * as _ from 'lodash';\nimport { GeometryPolygonConfiguration, GEOMETRY_POLYGON_TOKEN } from '../../configurations/geometry-polygon.configuration';\nimport { InitialPositionConfiguration, INITIAL_POSITION_TOKEN } from '../../configurations/initial-position.configuration';\nimport { MarkerTypeConfiguration, MARKER_TYPE_TOKEN } from '../../configurations/marker-type.configuration';\nimport { ZoomLevelConfiguration, ZOOM_LEVEL_TOKEN } from '../../configurations/zoom-level.configuration';\nimport { GeoJsonProperties } from '../models/geoJsonProperties.model';\nimport { Structure } from '../models/structure.model';\nimport { GeoJsonRepository, GEO_JSON_TOKEN } from '../repositories/geo-json.repository';\nimport { MapService } from './map.service';\n\n@Component({\n  selector: 'app-map',\n  providers: [MapService],\n  templateUrl: './map.component.html',\n  styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements OnChanges {\n  @Input() public isOrientationForm = false;\n  @Input() public structures: Structure[] = [];\n  @Input() public structuresToPrint: Structure[] = [];\n  @Input() public toogleToolTipId: string;\n  @Input() public selectedMarkerId: string;\n  @Input() public isMapPhone: boolean;\n  @Input() public searchedValue: string | [number, number];\n  @Output() public selectedStructure: EventEmitter<Structure> = new EventEmitter<Structure>();\n  @Output() public orientationButtonClick: EventEmitter<Structure> = new EventEmitter<Structure>();\n  private currentStructure: Structure;\n\n  public map: Map;\n  public mapOptions: MapOptions;\n  public zoomOptions = { animate: true, duration: 0.5 };\n\n  // Add listener on the popup button to show details of structure\n  @HostListener('document:click', ['$event'])\n  public clickout(event): void {\n    if (event.target.classList.contains('btnShowDetails')) {\n      this.selectedStructure.emit(this.currentStructure);\n    }\n    if (event.target.classList.contains('add')) {\n      this.orientationButtonClick.emit(this.currentStructure);\n      this.getStructuresPositions(this.structures);\n    }\n  }\n\n  constructor(\n    @Inject(GEOMETRY_POLYGON_TOKEN)\n    private readonly metropole: GeometryPolygonConfiguration,\n    @Inject(MARKER_TYPE_TOKEN)\n    private readonly markerType: MarkerTypeConfiguration,\n    @Inject(ZOOM_LEVEL_TOKEN)\n    private readonly zoomLevel: ZoomLevelConfiguration,\n    @Inject(INITIAL_POSITION_TOKEN)\n    private readonly initialPosition: InitialPositionConfiguration,\n    @Inject(GEO_JSON_TOKEN) private readonly geoJsonService: GeoJsonRepository,\n    private readonly mapService: MapService\n  ) {\n    this.initializeMapOptions();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.searchedValue && !changes.searchedValue.firstChange) {\n      if (changes.searchedValue.currentValue) {\n        this.processTownCoordinate(changes.searchedValue.currentValue);\n      } else {\n        this.map.setView(this.mapOptions.center, this.mapOptions.zoom);\n      }\n    }\n    if (changes.isMapPhone) {\n      if (this.isMapPhone) {\n        setTimeout(() => {\n          this.map.invalidateSize();\n        }, 0);\n      }\n    }\n    if (changes.structures && this.map) {\n      this.handleStructurePosition(changes.structures.previousValue);\n    }\n    // Handle map marker tooltip\n    if (changes.toogleToolTipId && changes.toogleToolTipId.currentValue !== changes.toogleToolTipId.previousValue) {\n      if (changes.toogleToolTipId.previousValue !== undefined) {\n        if (this.isToPrint(changes.toogleToolTipId.previousValue)) {\n          this.mapService.setAddedToListMarker(\n            changes.toogleToolTipId.previousValue,\n            this.getMarkerTypeByStructureId(changes.toogleToolTipId.previousValue)\n          );\n        } else {\n          this.mapService.setUnactiveMarker(\n            changes.toogleToolTipId.previousValue,\n            this.getMarkerTypeByStructureId(changes.toogleToolTipId.previousValue)\n          );\n        }\n      }\n      if (changes.toogleToolTipId.currentValue !== undefined) {\n        this.mapService.setActiveMarker(\n          changes.toogleToolTipId.currentValue,\n          this.getMarkerTypeByStructureId(changes.toogleToolTipId.currentValue)\n        );\n      }\n    }\n    // Handle map marker if none selected\n    if (changes.selectedMarkerId && this.map) {\n      this.map.closePopup();\n      if (changes.selectedMarkerId.currentValue === undefined) {\n        this.mapService.setDefaultMarker(\n          changes.selectedMarkerId.previousValue,\n          this.getMarkerTypeByStructureId(changes.selectedMarkerId.previousValue)\n        );\n        this.map.setView(this.mapOptions.center, this.mapOptions.zoom);\n      }\n    }\n    // Handle map marker if one is set with url or selected\n    if (this.mapService.getMarker(this.selectedMarkerId)) {\n      this.mapService.setSelectedMarker(this.selectedMarkerId, this.getMarkerTypeByStructureId(this.selectedMarkerId));\n      this.centerLeafletMapOnMarker(this.selectedMarkerId);\n    }\n\n    this.closePreviousMarker(changes);\n\n    if (changes.structuresToPrint) {\n      if (changes.structuresToPrint.currentValue < changes.structuresToPrint.previousValue) {\n        this.mapService?.setUnactiveMarker(\n          this.toogleToolTipId,\n          this.getMarkerTypeByStructureId(changes.structuresToPrint.previousValue)\n        );\n      }\n      this.structuresToPrint.forEach((structure: Structure) => {\n        this.mapService.setAddedToListMarker(structure._id, this.getMarkerTypeByStructureId(structure._id));\n      });\n    }\n  }\n\n  public processTownCoordinate(queryString: string): void {\n    this.geoJsonService.getTownshipCoord(queryString).subscribe(\n      (townData) => {\n        if (townData.length > 0) {\n          const bounds = new L.LatLngBounds(townData.map((dataArray) => dataArray.reverse()));\n          this.map.fitBounds(bounds);\n        }\n      },\n      (err) => {\n        this.map.flyTo(this.mapOptions.center, this.mapOptions.zoom, this.zoomOptions);\n      }\n    );\n  }\n\n  /**\n   * Create a user position marcker and center the map on it with a zoom level defined in ZoomLevel\n   * @param coords {[number, number]} Map center position\n   */\n  public centerOnCoordinates(coords: [number, number]): void {\n    this.mapService.createMarker(coords[1], coords[0], this.markerType.user, 'userLocation').addTo(this.map);\n    this.map.flyTo(new L.LatLng(coords[1], coords[0]), this.zoomLevel.userPosition, this.zoomOptions);\n  }\n\n  /**\n   * Get structures positions and add marker corresponding to those positons on the map\n   */\n  private handleStructurePosition(previousStructuresValue: Structure[]): void {\n    // If there is more structure than before, append them\n    if (\n      previousStructuresValue &&\n      previousStructuresValue.length > 0 &&\n      previousStructuresValue.length < this.structures.length\n    ) {\n      this.getStructuresPositions(_.differenceWith(this.structures, previousStructuresValue, _.isEqual));\n    } else if (this.structures) {\n      this.map = this.mapService.cleanMap(this.map);\n      this.getStructuresPositions(this.structures);\n      this.structuresToPrint.forEach((structure: Structure) => {\n        this.mapService.setAddedToListMarker(structure._id, this.getMarkerTypeByStructureId(structure._id));\n      });\n    }\n  }\n\n  private isToPrint(id: string): boolean {\n    return this.structuresToPrint.findIndex((elem) => elem._id == id) > -1 ? true : false;\n  }\n\n  /**\n   * Returns according marker type base on {MarkerType}\n   * @param {Structure} structure\n   * @returns {number}\n   */\n  private getMarkerType(structure: Structure): number {\n    return structure?.labelsQualifications?.includes('conseillerNumFranceServices')\n      ? this.markerType.conseillerFrance\n      : this.markerType.structure;\n  }\n\n  /**\n   * Return the map marker type given a structure id\n   * @param {string} id - Structure id\n   * @returns {number}\n   */\n  private getMarkerTypeByStructureId(id: string): number {\n    return this.getMarkerType(this.structures.find((structure) => structure._id === id));\n  }\n\n  private getStructuresPositions(structureList: Structure[]): void {\n    for (const structure of structureList) {\n      this.mapService\n        .createMarker(\n          structure.getLat(),\n          structure.getLon(),\n          this.getMarkerType(structure),\n          structure._id,\n          this.buildToolTip(structure)\n        )\n        .addTo(this.map)\n        // store structure before user click on button\n        .on('popupopen', () => {\n          this.currentStructure = structure;\n        });\n    }\n  }\n\n  /**\n   * Create tooltip for display\n   * @param structure Structure\n   */\n  private buildToolTip(structure: Structure): string {\n    let cssAvailabilityClass = structure.isOpen ? 'available' : null;\n    if (cssAvailabilityClass === null) {\n      if (structure.openedOn.day) {\n        cssAvailabilityClass = 'unavailable';\n      } else {\n        cssAvailabilityClass = 'unknown';\n      }\n    }\n    return (\n      '<h1>' +\n      structure.structureName +\n      '</h1>' +\n      '<p>' +\n      structure.getLabelTypeStructure() +\n      '</p>' +\n      (this.isOrientationForm\n        ? '<div class=\"pop-up orientation\"><button type=\"button\" class=\"orientationButton btnShowDetails\"><span class=\"ico-gg-eye-alt eye\"></span>Voir</button></div>'\n        : '<div class=\"pop-up\"><button type=\"button\" class=\"btnShowDetails\">Voir</button></div>')\n    );\n  }\n\n  private buildMdmPopUp(mdmProperties: GeoJsonProperties): string {\n    return `<h1>${mdmProperties.nom}</h1><p>${mdmProperties.adresse}</p>`;\n  }\n\n  /**\n   * Add marker when map is ready to be showned\n   * @param map map\n   */\n  public onMapReady(map: Map): void {\n    this.map = map;\n    if (this.searchedValue) {\n      if (Array.isArray(this.searchedValue)) {\n        this.centerOnCoordinates(this.searchedValue);\n      }\n    }\n  }\n\n  /**\n   * Init map options :\n   * - Metropole bounds based on a WMS service hosted by data.grandlyon.com\n   * - Map Layer based on open street maps\n   */\n  private initializeMapOptions(): void {\n    // Init mdm\n    this.initMDMLayer();\n    // Init WMS service with param from data.grandlyon.com\n    layerGroup();\n    const carteLayer = tileLayer('https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png', {\n      attribution: '&copy; <a href=\"https://carto.com/attributions\">CARTO</a>',\n      maxZoom: this.zoomLevel.max\n    });\n    // Center is set on townhall\n    // Zoom is blocked on 11 to prevent people to zoom out from metropole\n    this.mapOptions = {\n      center: latLng(this.initialPosition.latitude, this.initialPosition.longitude),\n      maxZoom: this.zoomLevel.max,\n      zoom: this.zoomLevel.regular,\n      minZoom: this.zoomLevel.min,\n      layers: [carteLayer]\n    };\n  }\n\n  private initMDMLayer(): void {\n    this.geoJsonService.getMDMGeoJson().subscribe((res) => {\n      res.forEach((mdm) => {\n        this.mapService\n          .createMarker(\n            mdm.geometry.getLat(),\n            mdm.geometry.getLon(),\n            this.markerType.mdm,\n            null,\n            this.buildMdmPopUp(mdm.properties)\n          )\n          .addTo(this.map);\n      });\n      this.initMetropoleLayer();\n    });\n  }\n\n  private centerLeafletMapOnMarker(markerId: string): void {\n    if (this.mapService.getMarker(markerId)) {\n      const marker = this.mapService.getMarker(markerId);\n      const latLngs = marker.getLatLng();\n      this.map.flyTo(new L.LatLng(latLngs.lat, latLngs.lng), this.zoomLevel.max, this.zoomOptions);\n    }\n  }\n\n  private initMetropoleLayer(): void {\n    this.map.addLayer(\n      geoJSON(\n        {\n          type: this.metropole.features[0].geometry.type,\n          coordinates: this.metropole.features[0].geometry.coordinates\n        } as any,\n        { style: () => ({ color: '#a00000', fillOpacity: 0, weight: 1 }) }\n      )\n    );\n  }\n\n  /**\n   * Close previous markers\n   * - if strucure is closed\n   * - if a new marker is selected\n   */\n  private closePreviousMarker(changes: SimpleChanges): void {\n    if (\n      (changes.selectedMarkerId?.currentValue === undefined && changes.selectedMarkerId?.previousValue) ||\n      changes.selectedMarkerId?.currentValue !== changes.selectedMarkerId?.previousValue\n    ) {\n      this.mapService.setUnactiveMarker(\n        changes.selectedMarkerId.previousValue,\n        this.getMarkerTypeByStructureId(changes.selectedMarkerId.previousValue)\n      );\n    }\n  }\n}\n","<div\n  id=\"map\"\n  class=\"body-wrap\"\n  [ngClass]=\"{ orientation: isOrientationForm }\"\n  leaflet\n  [leafletOptions]=\"mapOptions\"\n  (leafletMapReady)=\"onMapReady($event)\"></div>\n","import { CommonModule } from '@angular/common';\nimport { Inject, ModuleWithProviders, NgModule, Optional, Type } from '@angular/core';\nimport { LeafletModule } from '@asymmetrik/ngx-leaflet';\nimport { MapComponent } from './map.component';\nimport {\n  ZOOM_LEVEL_TOKEN,\n  ZoomLevelConfiguration,\n  MARKER_TYPE_TOKEN,\n  MarkerTypeConfiguration,\n  GEOMETRY_POLYGON_TOKEN,\n  GeometryPolygonConfiguration,\n  INITIAL_POSITION_TOKEN,\n  InitialPositionConfiguration\n} from '../../configurations';\nimport { GEO_JSON_TOKEN, GeoJsonRepository } from '../repositories';\n\n@NgModule({\n  declarations: [MapComponent],\n  exports: [MapComponent],\n  imports: [CommonModule, LeafletModule]\n})\nexport class MapModule {\n  public static forRoot(\n    geometryPolygonConfiguration: GeometryPolygonConfiguration,\n    zoomLevelConfiguration: ZoomLevelConfiguration,\n    initialPositionConfiguration: InitialPositionConfiguration,\n    markerTypeConfiguration: MarkerTypeConfiguration,\n    geoJsonRepository: Type<GeoJsonRepository>\n  ): ModuleWithProviders<MapModule> {\n    return {\n      ngModule: MapModule,\n      providers: [\n        { provide: GEO_JSON_TOKEN, useClass: geoJsonRepository },\n        { provide: GEOMETRY_POLYGON_TOKEN, useValue: geometryPolygonConfiguration },\n        { provide: MARKER_TYPE_TOKEN, useValue: markerTypeConfiguration },\n        { provide: ZOOM_LEVEL_TOKEN, useValue: zoomLevelConfiguration },\n        { provide: INITIAL_POSITION_TOKEN, useValue: initialPositionConfiguration }\n      ]\n    };\n  }\n\n  public constructor(\n    @Optional() @Inject(GEOMETRY_POLYGON_TOKEN) private readonly geometryPolygonConfiguration: GeometryPolygonConfiguration,\n    @Optional() @Inject(MARKER_TYPE_TOKEN) private readonly markerType: MarkerTypeConfiguration,\n    @Optional() @Inject(ZOOM_LEVEL_TOKEN) private readonly zoomLevel: ZoomLevelConfiguration,\n    @Optional() @Inject(INITIAL_POSITION_TOKEN) private readonly initialPosition: InitialPositionConfiguration,\n    @Optional() @Inject(GEO_JSON_TOKEN) private readonly geoJsonRepository: GeoJsonRepository\n  ) {\n    if ([geometryPolygonConfiguration, markerType, zoomLevel, initialPosition, geoJsonRepository].includes(null)) {\n      throw new Error(\n        'Cannot import `MapModule` without calling `forRoot` with valid parameters: you must provide defined `geometryPolygonConfiguration`, `markerType`, `zoomLevel`, `initialPosition` and `geoJsonRepository`.'\n      );\n    }\n  }\n}\n","export enum Equipment {\n  wifi = 'wifiEnAccesLibre',\n  bornes = 'bornesNumeriques',\n  printer = 'imprimantes',\n  tablet = 'tablettes',\n  computer = 'ordinateurs',\n  scanner = 'scanners'\n}\n","export enum typeStructureEnum {\n  fablab = 'Fablab',\n  // A supprimer ?\n\n  //A remplacer par Association ?\n  associationQuartier = 'Structure associative de quartier',\n  associationCaritative = 'Association caritative',\n\n  // En attente de suppression remplacer par CAF CARSAT, Pole Emploi et CCAS\n  grandOrganismePublic = 'Grand organisme public (CAF, CARSAT, Pôle emploi...)',\n\n  mdm = 'Maison de la Métropole',\n  mairie = 'Mairie',\n  CAF = 'CAF',\n  CCAS = 'CCAS',\n  CARSAT = 'CARSAT',\n  poleEmploi = 'Pole Emploi',\n  mediatheque = 'Médiathèque/Bibliothèque',\n  prefecture = 'Préfecture',\n  bijPij = 'BIJ/PIJ',\n  logement = 'Logement',\n  MaisonFranceService = 'Maison France Service',\n\n  association = 'Association',\n  centreSocio = 'Centre socio-culturel',\n  mjc = 'MJC / Cyberbase',\n  pimms = 'PIMMS',\n  sij = 'Structure information jeunesse (SIJ)',\n  missionsLocales = 'Missions locales',\n\n  formation = 'Structure de formation',\n  insertion = \"Structure d'insertion\"\n}\n","export enum Weekday {\n  monday = 1,\n  tuesday,\n  wednesday,\n  thursday,\n  friday,\n  saturday,\n  sunday\n}\n","export class Address {\n  numero: string = null;\n  street: string = null;\n  commune: string = null;\n  postcode?: number = null;\n  coordinates? = [];\n}\n","export class Time {\n  opening: string;\n  closing: string;\n\n  constructor(obj?: any) {\n    Object.assign(this, obj);\n  }\n\n  public formatOpeningDate(): string {\n    return this.formatDate(this.opening);\n  }\n\n  public formatClosingDate(): string {\n    return this.formatDate(this.closing);\n  }\n\n  private formatDate(n: string): string {\n    return n.replace(':', 'h');\n  }\n}\n","import { Time } from './time.model';\n\nexport class Day {\n  open: boolean = false;\n  time: Time[];\n\n  constructor(obj?: any) {\n    Object.assign(this, obj, {\n      time: obj && obj.time ? obj.time.map((time) => new Time(time)) : []\n    });\n  }\n}\n","export class AddressGeometry {\n  public coordinates: Array<number>;\n  public type: string;\n\n  constructor(obj?: any) {\n    Object.assign(this, obj);\n  }\n\n  public getLat(): number {\n    return this.coordinates[1];\n  }\n\n  public getLon(): number {\n    return this.coordinates[0];\n  }\n}\n","import { AddressGeometry } from './addressGeometry.model';\nimport { GeoJsonProperties } from './geoJsonProperties.model';\n\nexport class GeoJson {\n  public geometry: AddressGeometry;\n  public type: string;\n  public properties: GeoJsonProperties;\n\n  constructor(obj?: any) {\n    Object.assign(this, obj, {\n      geometry: obj && obj.geometry ? new AddressGeometry(obj.geometry) : null\n    });\n  }\n}\n","export class OpeningDay {\n  day: string = null;\n  schedule: string = null;\n\n  constructor(day?: string, schedule?: string) {\n    this.day = day;\n    this.schedule = schedule;\n  }\n}\n","export class PersonalOffer {\n  public publicsAccompaniment: string[] = [];\n  public proceduresAccompaniment: string[] = [];\n  public baseSkills: string[] = [];\n  public accessRight: string[] = [];\n  public digitalCultureSecurity: string[] = [];\n  public socialAndProfessional: string[] = [];\n  public parentingHelp: string[] = [];\n}\n","import { Day } from './day.model';\n\nexport class Week {\n  monday: Day;\n  tuesday: Day;\n  wednesday: Day;\n  thursday: Day;\n  friday: Day;\n  saturday: Day;\n  sunday: Day;\n\n  constructor(obj?: any) {\n    Object.assign(this, obj, {\n      monday: obj && obj.monday ? new Day(obj.monday) : new Day(),\n      tuesday: obj && obj.tuesday ? new Day(obj.tuesday) : new Day(),\n      wednesday: obj && obj.wednesday ? new Day(obj.wednesday) : new Day(),\n      thursday: obj && obj.thursday ? new Day(obj.thursday) : new Day(),\n      friday: obj && obj.friday ? new Day(obj.friday) : new Day(),\n      saturday: obj && obj.saturday ? new Day(obj.saturday) : new Day(),\n      sunday: obj && obj.sunday ? new Day(obj.sunday) : new Day()\n    });\n  }\n\n  public getDayTranslation(day: string): string {\n    switch (day) {\n      case 'monday':\n        return 'lundi';\n      case 'tuesday':\n        return 'mardi';\n      case 'thursday':\n        return 'jeudi';\n      case 'wednesday':\n        return 'mercredi';\n      case 'friday':\n        return 'vendredi';\n      case 'saturday':\n        return 'samedi';\n      case 'sunday':\n        return 'dimanche';\n      default:\n        return null;\n    }\n  }\n\n  public hasData() {\n    if (\n      this.monday.time.length === 0 &&\n      this.tuesday.time.length === 0 &&\n      this.wednesday.time.length === 0 &&\n      this.thursday.time.length === 0 &&\n      this.friday.time.length === 0 &&\n      this.saturday.time.length === 0 &&\n      this.sunday.time.length === 0\n    ) {\n      return false;\n    }\n    return true;\n  }\n}\n","import { Address } from './address.model';\nimport { Day } from './day.model';\nimport { Equipment } from './enum/equipment.enum';\nimport { typeStructureEnum } from './enum/typeStructure.enum';\nimport { Weekday } from './enum/weekday.enum';\nimport { OpeningDay } from './openingDay.model';\nimport { PersonalOffer } from './personalOffer.model';\nimport { Week } from './week.model';\n\nexport class Structure {\n  public _id: string = null;\n  public numero: string = null;\n  public createdAt: string = null;\n  public updatedAt: string = null;\n  public structureName: string = null;\n  public structureType: string = null;\n  public description: string = null;\n  public address: Address = new Address();\n  public contactPhone: string = null;\n  public contactMail: string = null;\n  public website: string = null;\n  public facebook: string = null;\n  public twitter: string = null;\n  public instagram: string = null;\n  public linkedin: string = null;\n  public lockdownActivity: string = null;\n  public pmrAccess: boolean = null;\n  public placeOfReception: boolean = null;\n  public choiceCompletion: boolean = null;\n  public contactPersonFirstName: string = null;\n  public contactPersonLastName: string = null;\n  public contactPersonEmail: string = null;\n  public publicsAccompaniment: string[] = [];\n  public proceduresAccompaniment: string[] = [];\n  public remoteAccompaniment: boolean = null;\n  public accessModality: string[] = [];\n  public labelsQualifications: string[] = [];\n  public publics: string[] = [];\n  public nbComputers: number = null;\n  public nbPrinters: number = null;\n  public nbTablets: number = null;\n  public nbNumericTerminal: number = null;\n  public nbScanners: number = null;\n  public exceptionalClosures: string = null;\n  public equipmentsAndServices: string[] = [];\n  public hours: Week;\n  public freeWorkShop: boolean = null;\n  public otherDescription: string = null;\n\n  public isOpen: boolean = false;\n  public openedOn: OpeningDay = new OpeningDay();\n  public baseSkills: string[] = [];\n  public accessRight: string[] = [];\n  public parentingHelp: string[] = [];\n  public socialAndProfessional: string[] = [];\n  public digitalCultureSecurity: string[] = [];\n\n  public distance?: number;\n  public coord?: number[] = [];\n  public dataShareConsentDate?: string;\n\n  public accountVerified: boolean = false;\n\n  public personalOffers: PersonalOffer[] = [];\n\n  public alreadySelected? = false;\n  public isClaimed?: boolean = null;\n\n  constructor(obj?: any) {\n    Object.assign(this, obj, {\n      hours: obj && obj.hours ? new Week(obj.hours) : new Week()\n    });\n  }\n\n  public getDayhours(day: Weekday): Day {\n    switch (day) {\n      case Weekday.monday:\n        return this.hours.monday;\n      case Weekday.tuesday:\n        return this.hours.tuesday;\n      case Weekday.thursday:\n        return this.hours.thursday;\n      case Weekday.wednesday:\n        return this.hours.wednesday;\n      case Weekday.friday:\n        return this.hours.friday;\n      case Weekday.saturday:\n        return this.hours.saturday;\n      case Weekday.sunday:\n        return this.hours.sunday;\n      default:\n        return null;\n    }\n  }\n\n  /**\n   * Check if a structure has equipments\n   */\n  public hasEquipments(): boolean {\n    if (this.equipmentsAndServices.length && this.hasNotOnlyEmptyEquipments()) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Verify that a structure as not only equipments with 0 as value. This is mostly use for display.\n   * @returns {Boolean} validation\n   */\n  public hasNotOnlyEmptyEquipments(): boolean {\n    if (this.nbComputers + this.nbPrinters + this.nbTablets + this.nbNumericTerminal + this.nbScanners > 0) return true;\n    return false;\n  }\n\n  /**\n   * Check if a structure has pass Numeric label\n   */\n  public hasPassNumeric(): boolean {\n    return this.labelsQualifications.includes('passNumerique');\n  }\n\n  /**\n   * Return a range, according to the distance, between [1,3] to get a distance reference.\n   * - [0,5km] => 1\n   * - [5km,10km] => 2\n   * - [10km, [ => 3\n   */\n  public getDistanceRange(): number {\n    if (!this.distance) {\n      return 3;\n    } else {\n      // If it's in km\n      if (this.distance > 10000) {\n        return 3;\n      } else if (this.distance < 5000) {\n        // If it's between 0 and 500 m\n        return 1;\n      } else {\n        return 2;\n      }\n    }\n  }\n\n  public getLat(): number {\n    return this.coord[1];\n  }\n\n  public getLon(): number {\n    return this.coord[0];\n  }\n\n  public getEquipmentsIcon(equipment: Equipment): string {\n    switch (equipment) {\n      case Equipment.wifi:\n        return 'wifi';\n      case Equipment.bornes:\n        return 'borne';\n      case Equipment.printer:\n        return 'print';\n      case Equipment.tablet:\n        return 'tablet';\n      case Equipment.computer:\n        return 'computer';\n      case Equipment.scanner:\n        return 'scan';\n      default:\n        return null;\n    }\n  }\n\n  public getEquipmentsTitle(equipment: Equipment): string {\n    switch (equipment) {\n      case Equipment.wifi:\n        return 'Wifi en accès libre';\n      case Equipment.bornes:\n        return this.nbNumericTerminal > 1 ? 'Bornes numériques' : 'Borne numérique';\n      case Equipment.printer:\n        return this.nbPrinters > 1 ? 'Imprimantes' : 'Imprimante';\n      case Equipment.tablet:\n        return this.nbTablets > 1 ? 'Tablettes' : 'Tablette';\n      case Equipment.computer:\n        return this.nbComputers > 1 ? 'Ordinateurs' : 'Ordinateur';\n      case Equipment.scanner:\n        return this.nbScanners > 1 ? 'Scanners' : 'Scanner';\n      default:\n        return null;\n    }\n  }\n\n  public getLabelTypeStructure(): string {\n    return typeStructureEnum[this.structureType] ? typeStructureEnum[this.structureType] : '';\n  }\n\n  public hasSocialNetwork(): boolean {\n    return (\n      (this.facebook !== null && this.facebook !== '') ||\n      (this.instagram !== null && this.instagram !== '') ||\n      (this.linkedin !== null && this.linkedin !== '') ||\n      (this.twitter !== null && this.twitter !== '')\n    );\n  }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Structure } from '../../../map/models/structure.model';\n\n@Component({\n  selector: 'app-card',\n  templateUrl: './card.component.html',\n  styleUrls: ['./card.component.scss']\n})\nexport class CardComponent {\n  @Input() public structure: Structure;\n  @Input() public isSelected: boolean;\n  @Input() public isOrientation: boolean;\n  @Input() public isClaimed = true;\n  @Output() public showDetails: EventEmitter<Structure> = new EventEmitter<Structure>();\n  @Output() public addToList: EventEmitter<Structure> = new EventEmitter<Structure>();\n  @Output() public hover: EventEmitter<Structure> = new EventEmitter<Structure>();\n\n  constructor(private route: ActivatedRoute, private router: Router) {}\n\n  public cardClicked(): void {\n    this.showDetails.emit(this.structure);\n    if (!this.isOrientation) {\n      const queryString = this.route.snapshot.queryParamMap.get('search');\n      this.router.navigate([], {\n        relativeTo: this.route,\n        queryParams: queryString\n          ? {\n              id: this.structure._id,\n              search: queryString\n            }\n          : {\n              id: this.structure._id\n            }\n      });\n    }\n  }\n\n  public cardHover(): void {\n    this.hover.emit(this.structure);\n  }\n\n  public cardAddToList(): void {\n    this.addToList.emit(this.structure);\n  }\n}\n","<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é\n    </div>\n  </div>\n</div>\n","export enum TypeModal {\n  accompaniment = 1,\n  training,\n  public,\n  equipments,\n  moreFilters\n}\n","export class Filter {\n  name: string;\n  value: string;\n  text?: string;\n  checked: boolean;\n\n  constructor(name: string, value: any, text?: string) {\n    this.name = name;\n    this.value = value.toString();\n    this.text = text;\n    this.checked = true;\n  }\n}\n","export class Module {\n  id: string;\n  text: string;\n  count: number;\n  displayText?: string;\n\n  constructor(id: string, text: string, displayText?: string) {\n    this.id = id;\n    this.text = text;\n    this.displayText = displayText;\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Module } from '../models/module.model';\nimport { Observable } from 'rxjs';\nimport { Category } from '../models/category.model';\n\nexport interface SearchRepository {\n  getCategoriesAccompaniment(): Observable<Category[]>;\n\n  getCategoriesOthers(): Observable<Category[]>;\n\n  getCategoriesTraining(): Observable<Category[]>;\n\n  getIndex(array: Module[], id: string, categ: string): number;\n}\n\nexport const SEARCH_TOKEN: InjectionToken<SearchRepository> = new InjectionToken<SearchRepository>(\n  'structure-list.search.repository'\n);\n","import { Component, EventEmitter, Inject, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { ButtonType } from '@gouvfr-anct/mediation-numerique/shared';\nimport { TypeModal } from '../../models/enum/typeModal.enum';\nimport { Category } from '../../models/category.model';\nimport { Module } from '../../models/module.model';\nimport { SEARCH_TOKEN, SearchRepository } from '../../repositories/search.repository';\n\n@Component({\n  selector: 'app-modal-filter',\n  templateUrl: './modal-filter.component.html',\n  styleUrls: ['./modal-filter.component.scss']\n})\nexport class ModalFilterComponent implements OnInit, OnChanges {\n  constructor(@Inject(SEARCH_TOKEN) readonly searchService: SearchRepository) {}\n\n  @Input() public modalType: TypeModal;\n  @Input() public categories: Category[];\n  //checked modules filter list\n  @Input() public modules: Module[] = [];\n  @Output() searchEvent = new EventEmitter();\n  @Output() closeEvent = new EventEmitter();\n  public buttonTypeEnum = ButtonType;\n\n  // Checkbox variable\n  public checkedModules: Module[] = [];\n  public toggledCategories: string[] = [];\n  ngOnInit(): void {\n    // Manage checkbox\n    this.checkedModules = this.modules.slice();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.modalType) {\n      this.checkedModules = this.modules.slice();\n    }\n  }\n\n  // Management of the checkbox event (Check / Uncheck)\n  public onCheckboxChange(event, categ: string, text?: string): void {\n    const checkValue: string = event.target.value;\n    if (event.target.checked) {\n      this.checkedModules.push(new Module(checkValue, categ, text ? text : checkValue));\n    } else {\n      // Check if the module is present in the list and remove it\n      if (this.searchService.getIndex(this.checkedModules, checkValue, categ) > -1) {\n        this.checkedModules.splice(this.searchService.getIndex(this.checkedModules, checkValue, categ), 1);\n      }\n    }\n  }\n  // Clear only filters in the current modal\n  public clearFilters(): void {\n    this.categories.forEach((categ: Category) => {\n      categ.modules.forEach((module: Module) => {\n        const index = this.searchService.getIndex(this.checkedModules, module.id, categ.id);\n        if (index > -1) {\n          this.checkedModules.splice(index, 1);\n        }\n      });\n    });\n    this.emitModules(this.checkedModules);\n  }\n\n  // Sends an array containing all modules\n  public emitModules(m: Module[]): void {\n    this.searchEvent.emit(m);\n  }\n\n  public getModalType(): string {\n    switch (this.modalType) {\n      case TypeModal.accompaniment:\n        return 'accompaniment';\n      case TypeModal.training:\n        return 'training';\n      case TypeModal.public:\n        return 'public';\n      case TypeModal.equipments:\n        return 'equipments';\n      case TypeModal.moreFilters:\n        return 'moreFilters';\n      default:\n        return '';\n    }\n  }\n\n  public closeModal(): void {\n    this.closeEvent.emit();\n  }\n\n  public handleCategoryCheckBox(event, category: Category): void {\n    const modules = this.categories.filter((c: Category) => c.id === category.id)[0].modules;\n    if (event.target.checked) {\n      for (const module of modules) {\n        if (this.searchService.getIndex(this.checkedModules, module.id, category.id) === -1) {\n          this.checkedModules.push(new Module(module.id, category.id, module.displayText));\n        }\n      }\n    } else {\n      for (const module of modules) {\n        if (this.searchService.getIndex(this.checkedModules, module.id, category.id) > -1) {\n          this.checkedModules.splice(this.searchService.getIndex(this.checkedModules, module.id, category.id), 1);\n        }\n      }\n    }\n  }\n\n  public toggleShowCategory(categoryId: string): void {\n    if (this.toggledCategories.includes(categoryId)) {\n      const index = this.toggledCategories.indexOf(categoryId);\n      this.toggledCategories.splice(index);\n    } else {\n      this.toggledCategories.push(categoryId);\n    }\n  }\n\n  public getCategoryCheckboxStatus(c: Category): string {\n    const selectedModule: Module[] = this.checkedModules.filter((m) => m.text === c.id);\n    if (selectedModule.length === c.modules.length) {\n      return 'checked';\n    } else if (selectedModule.length === 0) {\n      return 'unchecked';\n    } else if (selectedModule.length && selectedModule.length > 0) {\n      return 'halfChecked';\n    }\n  }\n}\n","<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","import { Component, EventEmitter, Inject, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ButtonType } from '@gouvfr-anct/mediation-numerique/shared';\nimport { TypeModal } from '../../models/enum/typeModal.enum';\nimport { Category } from '../../models/category.model';\nimport { Filter } from '../../models/filter.model';\nimport { Module } from '../../models/module.model';\nimport { SEARCH_TOKEN, SearchRepository } from '../../repositories/search.repository';\n\n@Component({\n  selector: 'app-structure-list-search',\n  templateUrl: './structure-list-search.component.html',\n  styleUrls: ['./structure-list-search.component.scss']\n})\nexport class StructureListSearchComponent implements OnInit {\n  @Output() searchEvent = new EventEmitter();\n  public locate = false;\n  // Show/hide form createStructure\n  public addStructureFormModal = false;\n  public buttonTypeEnum = ButtonType;\n\n  // Form search input\n  public searchForm: FormGroup;\n  public modalTypeOpened: TypeModal;\n  // Checkbox variable\n  public checkedModulesFilter: Module[];\n\n  public numberTrainingChecked = 0;\n  public numberAccompanimentChecked = 0;\n  public numberPublicChecked = 0;\n  public numberEquipmentChecked = 0;\n  public numberMoreFiltersChecked = 0;\n\n  // Modal categories\n  public categoriesTraining: Category[] = [];\n  public categoriesAccompaniment: Category[] = [];\n  public categoriesPublic: Category[] = [];\n  public categoriesEquipment: Category[] = [];\n  public categoriesMoreFilters: Category[] = [];\n\n  public queryString: string;\n  // Modal confirmation variable\n  public isConfirmationModalOpen = false;\n  public confirmationModalContent =\n    'Afin d’ajouter votre structure,vous allez être redirigé vers le formulaire Grand Lyon à remplir.';\n\n  constructor(\n    @Inject(SEARCH_TOKEN) readonly searchService: SearchRepository,\n    private fb: FormBuilder,\n    private activatedRoute: ActivatedRoute,\n    private route: ActivatedRoute,\n    private router: Router\n  ) {\n    this.searchForm = this.fb.group({\n      searchTerm: this.activatedRoute.snapshot.queryParamMap.get('search')\n        ? this.activatedRoute.snapshot.queryParamMap.get('search')\n        : ''\n    });\n  }\n  ngOnInit(): void {\n    // Will store the different categories\n    this.getData();\n    this.queryString = this.activatedRoute.snapshot.queryParamMap.get('search');\n    this.checkedModulesFilter = new Array();\n    if (this.queryString) {\n      const filters: Filter[] = [];\n      filters.push(new Filter('query', this.queryString));\n      this.searchEvent.emit(filters);\n    }\n  }\n\n  public convertModulesTofilters(modules: Module[], term?: string): Filter[] {\n    const filters: Filter[] = [];\n    if (term) {\n      filters.push(new Filter('query', term));\n    }\n    // Add checked box filter\n    modules.forEach((cm) => {\n      filters.push(new Filter(cm.text, cm.id, cm.displayText));\n    });\n    return filters;\n  }\n\n  // Accessor to template angular.\n  public get TypeModal(): typeof TypeModal {\n    return TypeModal;\n  }\n\n  // Clear input search\n  public clearInput(): void {\n    this.searchForm.reset();\n    this.applyFilter(null);\n  }\n\n  // Sends an array containing all filters\n  public applyFilter(term: string): void {\n    // Add search input filter\n    if (term) {\n      this.router.navigate(['/acteurs'], {\n        relativeTo: this.route,\n        queryParams: {\n          search: term\n        },\n        queryParamsHandling: 'merge'\n      });\n    } else if (!term) {\n      this.router.navigate(['/acteurs'], {\n        relativeTo: this.route\n      });\n    }\n    const filters = this.convertModulesTofilters(this.checkedModulesFilter, term);\n    // Send filters\n    this.searchEvent.emit(filters);\n  }\n\n  public fetchResults(checkedModules: Module[]): void {\n    const inputTerm = this.searchForm.get('searchTerm').value;\n    // Check if some modules is checked in filters\n    if (this.checkedModulesFilter !== checkedModules) {\n      this.countCheckFiltersOnModules(checkedModules);\n    }\n    // Store checked modules\n    this.checkedModulesFilter = checkedModules;\n    // Close modal after receive filters from her.\n    this.closeModal();\n    this.applyFilter(inputTerm);\n  }\n\n  // Check if some modules is checked on filter and store number of modules checked\n  public countCheckFiltersOnModules(checkedModules: Module[]): void {\n    this.numberAccompanimentChecked = checkedModules.filter((module) => module.text === 'proceduresAccompaniment').length;\n    this.numberTrainingChecked = checkedModules.filter(\n      (module) =>\n        module.text === 'baseSkills' ||\n        module.text === 'socialAndProfessional' ||\n        module.text === 'parentingHelp' ||\n        module.text === 'accessRight' ||\n        module.text === 'digitalCultureSecurity'\n    ).length;\n    this.numberPublicChecked = checkedModules.filter((module) => module.text === 'publicsAccompaniment').length;\n    this.numberEquipmentChecked = checkedModules.filter((module) => module.text === 'equipmentsAndServices').length;\n    this.numberMoreFiltersChecked = checkedModules.filter(\n      (module) => module.text === 'labelsQualifications' || module.text === 'accessModality'\n    ).length;\n  }\n\n  public getModalCategory(): Category[] {\n    switch (this.modalTypeOpened) {\n      case TypeModal.accompaniment:\n        return this.categoriesAccompaniment;\n      case TypeModal.training:\n        return this.categoriesTraining;\n\n      case TypeModal.public:\n        return this.categoriesPublic;\n\n      case TypeModal.equipments:\n        return this.categoriesEquipment;\n\n      case TypeModal.moreFilters:\n        return this.categoriesMoreFilters;\n      default:\n        throw new Error('Modal type not handle');\n    }\n  }\n\n  // Open the modal and display the list according to the right filter button\n  public openModal(modalType: TypeModal): void {\n    // if modal already opened, reset type\n    if (this.modalTypeOpened === modalType) {\n      this.closeModal();\n    } else if (this.modalTypeOpened !== modalType) {\n      this.modalTypeOpened = modalType;\n    }\n  }\n\n  public closeModal(): void {\n    this.modalTypeOpened = undefined;\n  }\n\n  // Management of the checkbox event (Check / Uncheck)\n  public externalCheckboxCheck(event, categ, displayName): void {\n    const checkValue: string = event.target.value;\n    const inputTerm = this.searchForm.get('searchTerm').value;\n    if (event.target.checked) {\n      this.checkedModulesFilter.push(new Module(checkValue, categ, displayName));\n      this.numberMoreFiltersChecked++;\n    } else {\n      // Check if the module is present in the list and remove it\n      const index = this.checkedModulesFilter.findIndex((m: Module) => m.id === checkValue && m.text === categ);\n      if (index > -1) {\n        this.checkedModulesFilter.splice(index, 1);\n        this.countCheckFiltersOnModules(this.checkedModulesFilter);\n      }\n    }\n    this.applyFilter(inputTerm);\n  }\n\n  // Get the categories for each modal type\n  private getData(): void {\n    this.searchService.getCategoriesAccompaniment().subscribe((res) => {\n      const categories: Category[] = res;\n      categories.forEach((category) => {\n        this.categoriesAccompaniment.push(category);\n      });\n    });\n    this.searchService.getCategoriesTraining().subscribe((res) => {\n      const categories: Category[] = res;\n      categories.forEach((category) => {\n        this.categoriesTraining.push(category);\n      });\n    });\n    this.searchService.getCategoriesOthers().subscribe((res) => {\n      const categories: Category[] = res;\n      categories.forEach((category) => {\n        if (category.id === 'publicsAccompaniment') {\n          this.categoriesPublic.push(category);\n        } else if (category.id === 'equipmentsAndServices') {\n          this.categoriesEquipment.push(category);\n        } else if (category.id === 'labelsQualifications' || category.id === 'accessModality') {\n          this.categoriesMoreFilters.push(category);\n        }\n      });\n    });\n  }\n\n  public resetFilters(): void {\n    this.checkedModulesFilter = [];\n    this.numberTrainingChecked = 0;\n    this.numberAccompanimentChecked = 0;\n    this.numberPublicChecked = 0;\n    this.numberEquipmentChecked = 0;\n    this.numberMoreFiltersChecked = 0;\n    const inputTerm = this.searchForm.get('searchTerm').value;\n    const filters = this.convertModulesTofilters(this.checkedModulesFilter, inputTerm);\n    this.searchEvent.emit(filters);\n  }\n  public removeFilter(module: Module): void {\n    const index = this.checkedModulesFilter.findIndex((m: Module) => m.id === module.id);\n    this.checkedModulesFilter.splice(index, 1);\n    const inputTerm = this.searchForm.get('searchTerm').value;\n    const filters = this.convertModulesTofilters(this.checkedModulesFilter, inputTerm);\n    this.countCheckFiltersOnModules(this.checkedModulesFilter);\n    this.searchEvent.emit(filters);\n  }\n}\n","<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érique</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ériel 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érique')\" />\n            <div class=\"label pass\">Pass numérique</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ériques')\" />\n            <div class=\"label pass\">Conseillers numériques</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ès libre')\" />\n            <div class=\"label pass\">Accès 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","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Structure } from '../../map/models/structure.model';\n\nexport interface StructureRepository {\n  getStructure(id: string): Observable<Structure>;\n  sendMailOnStructureError: (structureId: string, content: string) => Observable<any>;\n}\n\nexport const STRUCTURE_TOKEN: InjectionToken<StructureRepository> = new InjectionToken<StructureRepository>(\n  'structure-list.structure.repository'\n);\n","import { Component, EventEmitter, Inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ButtonType } from '@gouvfr-anct/mediation-numerique/shared';\nimport { GeoJson } from '../../../map/models/geojson.model';\nimport { Structure } from '../../../map/models/structure.model';\nimport { StructureRepository, STRUCTURE_TOKEN } from '../../repositories/structure.repository';\n\n@Component({\n  selector: 'app-structure-list',\n  templateUrl: './structure-list.component.html',\n  styleUrls: ['./structure-list.component.scss']\n})\nexport class StructureListComponent implements OnChanges {\n  @Input() public structureList: Structure[];\n  @Input() public location: GeoJson;\n  @Input() public selectedStructure: Structure = new Structure();\n  @Output() public displayMapMarkerId: EventEmitter<string> = new EventEmitter<string>();\n  @Output() public selectedMarkerId: EventEmitter<string> = new EventEmitter<string>();\n\n  public buttonTypeEnum = ButtonType;\n  public showStructureDetails = false;\n  public structure: Structure;\n\n  constructor(\n    private route: ActivatedRoute,\n    private router: Router,\n    @Inject(STRUCTURE_TOKEN) readonly structureService: StructureRepository\n  ) {\n    this.route.queryParams.subscribe((queryParams) => {\n      if (queryParams.id) {\n        if (!this.structure) {\n          this.structureService.getStructure(queryParams.id).subscribe((s) => {\n            this.showDetails(new Structure(s));\n          });\n        }\n      } else {\n        this.closeDetails();\n      }\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.selectedStructure && this.selectedStructure) {\n      this.showDetails(this.selectedStructure);\n      this.router.navigate([], {\n        relativeTo: this.route,\n        queryParams: {\n          id: this.selectedStructure._id\n        }\n      });\n    }\n    if (changes.structureList) {\n      document.getElementById('listCard').scrollTo(0, 0);\n    }\n  }\n\n  public showDetails(event: Structure): void {\n    this.showStructureDetails = true;\n    this.structure = event;\n    this.selectedMarkerId.emit(this.structure._id);\n  }\n\n  public closeDetails(): void {\n    this.selectedMarkerId.emit();\n    this.showStructureDetails = false;\n  }\n\n  public handleCardHover(structure: Structure): void {\n    this.displayMapMarkerId.emit(structure._id);\n  }\n\n  public mouseLeave(): void {\n    this.displayMapMarkerId.emit(undefined);\n  }\n}\n","<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éponse correspondant à votre recherche</p>\n  </div>\n</div>\n<ng-content></ng-content>\n","export enum AccessModality {\n  free = 'accesLibre',\n  numeric = 'telephoneVisio',\n  meetingOnly = 'uniquementSurRdv',\n  meeting = 'surRdv'\n}\n","export enum PublicCategorie {\n  under16Years = 'moinsDe16Ans',\n  young = 'jeunes1625Ans',\n  adult = 'adultes',\n  elderly = 'seniorsPlusDe65Ans',\n  all = 'toutPublic',\n  women = 'uniquementFemmes'\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Structure } from '../../map/models/structure.model';\n\n@Injectable()\nexport class PrintService {\n  public isPrinting = false;\n  public structure: Structure;\n  public structures: Structure[];\n\n  constructor(private router: Router) {}\n\n  public printDocument(documentName: string, structure: Structure): void {\n    this.isPrinting = true;\n    this.structure = structure;\n    this.router.navigate([\n      '/',\n      {\n        outlets: {\n          print: ['print', documentName]\n        }\n      }\n    ]);\n  }\n\n  public printDocuments(documentName: string, structures: Structure[]): void {\n    this.isPrinting = true;\n    this.structures = structures;\n    this.router.navigate([\n      '/',\n      {\n        outlets: {\n          print: ['print', documentName]\n        }\n      }\n    ]);\n  }\n\n  public onDataReady(): void {\n    setTimeout(() => {\n      window.print();\n      this.isPrinting = false;\n      this.router.navigate([{ outlets: { print: null } }]);\n    }, 1500);\n  }\n}\n","export enum Demarches {\n  accompagnantCaf = 'CAF',\n  carsat = 'CARSAT',\n  cpam = 'CPAM',\n  espacePublicNumeriqueepn = 'Espace public Numérique',\n  impots = 'Impôts',\n  logement = 'Logements',\n  poleEmploi = 'Pôle Emploi',\n  autres = 'Autres'\n}\n","export enum Labels {\n  passNumerique = 'Pass numérique',\n  maisonFranceService = 'Maison france service',\n  aidantsConnect = 'Aidants connect',\n  fabriqueDeTerritoire = 'Fabrique de territoire',\n  demarcheMetropolitaine = 'Démarches Métropolitaines',\n  pix = 'Évaluation des compétences numériques',\n  conseillerNumFranceServices = 'Conseiller numérique'\n}\n","import { Component, Input } from '@angular/core';\nimport { Demarches } from '../../models/enum/demarches.enum';\nimport { Labels } from '../../models/enum/labels.emum';\n\n@Component({\n  selector: 'app-logo-card',\n  templateUrl: './logo-card.component.html',\n  styleUrls: ['./logo-card.component.scss']\n})\nexport class LogoCardComponent {\n  @Input() public logoPath: string;\n  @Input() public name: string;\n\n  public getName(key: string): string {\n    if (Labels[key]) {\n      return Labels[key];\n    } else {\n      return Demarches[key];\n    }\n  }\n}\n","<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","import { animate, AUTO_STYLE, state, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport * as _ from 'lodash';\nimport { Equipment } from '../../../map/models/enum/equipment.enum';\nimport { Structure } from '../../../map/models/structure.model';\nimport { Category } from '../../models/category.model';\nimport { AccessModality } from '../../models/enum/access-modality.enum';\nimport { PublicCategorie } from '../../models/enum/public.enum';\nimport { Module } from '../../models/module.model';\nimport { SearchRepository, SEARCH_TOKEN } from '../../repositories/search.repository';\nimport { StructureRepository, STRUCTURE_TOKEN } from '../../repositories/structure.repository';\nimport { PrintService } from '../../services/print.service';\n\n@Component({\n  selector: 'app-structure-details',\n  templateUrl: './structure-details.component.html',\n  styleUrls: ['./structure-details.component.scss'],\n  animations: [\n    trigger('slideInOut', [\n      transition(':enter', [style({ left: '-600px' }), animate('200ms ease-in', style({ left: '0' }))]),\n      transition(':leave', [animate('200ms ease-in', style({ left: '-600px' }))])\n    ]),\n    trigger('fadeInOut', [\n      transition(':enter', [\n        style({ backgroundColor: 'rgb(00, 00, 00, 0)' }),\n        animate('200ms ease-in', style({ backgroundColor: 'rgb(00, 00, 00, 0.6)' }))\n      ]),\n      transition(':leave', [animate('200ms ease-in', style({ backgroundColor: 'rgb(00, 00, 00, 0)' }))])\n    ]),\n    trigger('show', [\n      state('true', style({ height: AUTO_STYLE, visibility: AUTO_STYLE, margin: '8px 0' })),\n      state('false', style({ height: '0px', visibility: 'hidden', margin: '0' })),\n      transition('true => false', animate('300ms ease-out')),\n      transition('false => true', animate('300ms ease-out'))\n    ])\n  ],\n  providers: [PrintService]\n})\nexport class StructureDetailsComponent implements OnInit {\n  @Input() public structure: Structure;\n  @Output() public closeDetails: EventEmitter<boolean> = new EventEmitter<boolean>();\n  public accessModality = AccessModality;\n\n  public baseSkillssReferentiel: Category;\n  public accessRightsReferentiel: Category;\n  public digitalCultureSecuritysReferentiel: Category;\n  public socialAndProfessionalsReferentiel: Category;\n  public parentingHelpsReferentiel: Category;\n  public baseSkills: Module[];\n  public accessRights: Module[];\n  public parentingHelp: Module[];\n  public socialAndProfessional: Module[];\n  public digitalCultureSecurity: Module[];\n  public showBaseSkills = false;\n  public showAccessRights = false;\n  public showParentingHelp = false;\n  public showSocialAndProfessional = false;\n  public showDigitalSecurity = false;\n  public printMode = false;\n  public isLoading = true;\n  public lockdownInfoDisplay = false;\n  public structureErrorModalOpenned = false;\n  public fullScreen = false;\n\n  constructor(\n    @Inject(SEARCH_TOKEN) readonly searchService: SearchRepository,\n    @Inject(STRUCTURE_TOKEN) readonly structureService: StructureRepository,\n    private readonly printService: PrintService,\n    private route: ActivatedRoute,\n    private router: Router,\n    private location: Location\n  ) {\n    route.url.subscribe((url) => {\n      if (url[0]?.path === 'structure') {\n        this.structure = new Structure(this.printService.structure);\n        this.printMode = true;\n        // Display formations for printing\n        this.toggleAccessRights();\n        this.toggleBaseSkills();\n        this.toggleDigitalSecurity();\n        this.toggleParentingHelp();\n        this.toggleSocialAndProfessional();\n        this.initForm();\n      }\n    });\n  }\n\n  ngOnInit(): void {\n    this.isLoading = true;\n    this.route.queryParams.subscribe((queryParams) => {\n      if (queryParams.id) {\n        this.initForm();\n      } else if (!this.printMode) {\n        this.structure = null;\n      }\n    });\n    this.route.data.subscribe((data) => {\n      if (data.fullScreen) {\n        this.fullScreen = true;\n      }\n    });\n  }\n  private async initForm(): Promise<void> {\n    this.searchService.getCategoriesTraining().subscribe((referentiels) => {\n      referentiels.forEach((referentiel) => {\n        if (referentiel.isBaseSkills()) {\n          this.baseSkillssReferentiel = referentiel;\n        } else if (referentiel.isRigthtsAccess()) {\n          this.accessRightsReferentiel = referentiel;\n        } else if (referentiel.isDigitalCultureSecurity()) {\n          this.digitalCultureSecuritysReferentiel = referentiel;\n        } else if (referentiel.isParentingHelp()) {\n          this.parentingHelpsReferentiel = referentiel;\n        } else if (referentiel.isSocialAndProfessional()) {\n          this.socialAndProfessionalsReferentiel = referentiel;\n        }\n      });\n      this.setServiceCategories();\n      if (this.printMode) {\n        this.printService.onDataReady();\n      }\n      this.isLoading = false;\n    });\n    const index = this.structure.proceduresAccompaniment.indexOf('autres');\n    if (index > -1) {\n      this.structure.proceduresAccompaniment.splice(index, 1);\n    }\n  }\n\n  public getEquipmentsLabel(equipment: Equipment): string {\n    switch (equipment) {\n      case Equipment.wifi:\n        return 'Wifi en accès libre';\n      case Equipment.bornes:\n        return this.structure.nbNumericTerminal > 1 ? 'Bornes numériques' : 'Borne numérique';\n      case Equipment.printer:\n        return this.structure.nbPrinters > 1 ? 'Imprimantes' : 'Imprimante';\n      case Equipment.tablet:\n        return this.structure.nbTablets > 1 ? 'Tablettes' : 'Tablette';\n      case Equipment.computer:\n        return this.structure.nbComputers > 1 ? 'Ordinateurs' : 'Ordinateur';\n      case Equipment.scanner:\n        return this.structure.nbScanners > 1 ? 'Scanners' : 'Scanner';\n      default:\n        return null;\n    }\n  }\n\n  public close(): void {\n    this.route.url.subscribe((urls) => {\n      if (urls.length > 0 && urls[0].path !== 'orientation') {\n        this.router.navigate(['/acteurs'], {\n          relativeTo: this.route,\n          queryParams: {\n            id: null\n          },\n          queryParamsHandling: 'merge'\n        });\n      } else {\n        this.isLoading = true;\n        this.location.back();\n      }\n    });\n  }\n\n  public print(): void {\n    this.printService.printDocument('structure', this.structure);\n  }\n\n  public getAccessLabel(accessModality: AccessModality): string {\n    switch (accessModality) {\n      case AccessModality.free:\n        return 'Accès libre';\n      case AccessModality.meeting:\n        return 'Sur rendez-vous';\n      case AccessModality.meetingOnly:\n        return 'Uniquement sur RDV';\n      case AccessModality.numeric:\n        return 'Téléphone / Visio';\n      default:\n        return null;\n    }\n  }\n\n  public getPublicLabel(tagetPublic: PublicCategorie): string {\n    switch (tagetPublic) {\n      case PublicCategorie.young:\n        return 'Jeunes (16 - 25 ans)';\n      case PublicCategorie.adult:\n        return 'Adultes';\n      case PublicCategorie.elderly:\n        return 'Séniors (+ de 65 ans)';\n      case PublicCategorie.all:\n        return 'Tout public';\n      case PublicCategorie.under16Years:\n        return 'Moins de 16 ans';\n      case PublicCategorie.women:\n        return 'Uniquement femmes';\n      default:\n        return null;\n    }\n  }\n\n  public setServiceCategories(): void {\n    this.baseSkills = this.structure.baseSkills.map((skill) => _.find(this.baseSkillssReferentiel.modules, { id: skill }));\n    this.accessRights = this.structure.accessRight.map((rights) =>\n      _.find(this.accessRightsReferentiel.modules, { id: rights })\n    );\n    this.parentingHelp = this.structure.parentingHelp.map((help) =>\n      _.find(this.parentingHelpsReferentiel.modules, { id: help })\n    );\n    this.socialAndProfessional = this.structure.socialAndProfessional.map((skill) =>\n      _.find(this.socialAndProfessionalsReferentiel.modules, { id: skill })\n    );\n    this.digitalCultureSecurity = this.structure.digitalCultureSecurity.map((skill) =>\n      _.find(this.digitalCultureSecuritysReferentiel.modules, { id: skill })\n    );\n  }\n\n  public keepOriginalOrder = (a, b) => a.key;\n\n  public isBaseSkills(): boolean {\n    return this.baseSkills && this.baseSkills[0] !== undefined;\n  }\n  public isAccessRights(): boolean {\n    return this.accessRights && this.accessRights[0] !== undefined;\n  }\n  public isParentingHelp(): boolean {\n    return this.parentingHelp && this.parentingHelp[0] !== undefined;\n  }\n  public isSocialAndProfessional(): boolean {\n    return this.socialAndProfessional && this.socialAndProfessional[0] !== undefined;\n  }\n  public isDigitalSecurity(): boolean {\n    return this.digitalCultureSecurity && this.digitalCultureSecurity[0] !== undefined;\n  }\n\n  public filterOnlyEquipments(equipmentsAndServices: string[]): string[] {\n    return equipmentsAndServices.filter((eqpt) =>\n      ['ordinateurs', 'tablettes', 'bornesNumeriques', 'imprimantes', 'scanners', 'wifiEnAccesLibre'].includes(eqpt)\n    );\n  }\n\n  public displayModalError(): void {\n    this.structureErrorModalOpenned = !this.structureErrorModalOpenned;\n  }\n\n  public sendErrorEmail(modalValue: any): void {\n    this.displayModalError();\n    if (modalValue.shouldSend) {\n      this.structureService.sendMailOnStructureError(this.structure._id, modalValue.content).subscribe(() => {});\n    }\n  }\n\n  public multipleWorkshop(): boolean {\n    if (\n      this.structure.baseSkills.length +\n        this.structure.accessRight.length +\n        this.structure.parentingHelp.length +\n        this.structure.socialAndProfessional.length +\n        this.structure.digitalCultureSecurity.length >\n      1\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  public toggleBaseSkills(): void {\n    this.showBaseSkills = !this.showBaseSkills;\n  }\n  public toggleAccessRights(): void {\n    this.showAccessRights = !this.showAccessRights;\n  }\n  public toggleParentingHelp(): void {\n    this.showParentingHelp = !this.showParentingHelp;\n  }\n  public toggleSocialAndProfessional(): void {\n    this.showSocialAndProfessional = !this.showSocialAndProfessional;\n  }\n  public toggleDigitalSecurity(): void {\n    this.showDigitalSecurity = !this.showDigitalSecurity;\n  }\n\n  public goToWebsite(): void {\n    window.open(this.structure.website, '_blank');\n  }\n}\n","<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 à mobilité réduite</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 à 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érique</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ès à ces formations est gratuit</span>\n          <span *ngIf=\"!multipleWorkshop()\" class=\"bold-info\">L'accès à 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étences 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ès 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 à la parentalité</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écurité numérique</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ériel 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 à 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écrivez l\\'erreur ici. Ex: Horaires faux...'\"\n      [content]=\"\n        'Voulez-vous notifier res\\'in d\\'une erreur sur la fiche de cet acteur &nbsp;? Votre commentaire sera envoyé à 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","import { Inject, ModuleWithProviders, NgModule, Optional, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlexModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n  ModalModule,\n  DayModule,\n  PhoneModule,\n  TextInputModalModule,\n  DistanceModule,\n  ButtonModule,\n  SvgIconModule\n} from '@gouvfr-anct/mediation-numerique/shared';\nimport { ModalFilterComponent } from '../components/modal-filter/modal-filter.component';\nimport { StructureListSearchComponent } from '../components/search/structure-list-search.component';\nimport { CardComponent } from '../components/card/card.component';\nimport { StructureDetailsComponent } from '../components/structure-details/structure-details.component';\nimport { LogoCardComponent } from '../components/logo-card/logo-card.component';\nimport { StructureListComponent } from '../components/structure-list/structure-list.component';\n\nimport { SEARCH_TOKEN, SearchRepository } from '../repositories/search.repository';\nimport { STRUCTURE_TOKEN, StructureRepository } from '../repositories/structure.repository';\n\n@NgModule({\n  declarations: [\n    ModalFilterComponent,\n    StructureListSearchComponent,\n    CardComponent,\n    StructureDetailsComponent,\n    LogoCardComponent,\n    StructureListComponent\n  ],\n  exports: [StructureListSearchComponent, StructureListComponent, StructureDetailsComponent, CardComponent],\n  imports: [\n    CommonModule,\n    FlexModule,\n    ReactiveFormsModule,\n    SvgIconModule,\n    ButtonModule,\n    ModalModule,\n    DayModule,\n    PhoneModule,\n    DistanceModule,\n    TextInputModalModule\n  ]\n})\nexport class StructureModule {\n  public static forRoot(\n    searchRepository: Type<SearchRepository>,\n    structureRepository: Type<StructureRepository>\n  ): ModuleWithProviders<StructureModule> {\n    return {\n      ngModule: StructureModule,\n      providers: [\n        {\n          provide: SEARCH_TOKEN,\n          useClass: searchRepository\n        },\n        {\n          provide: STRUCTURE_TOKEN,\n          useClass: structureRepository\n        }\n      ]\n    };\n  }\n\n  public constructor(\n    @Optional() @Inject(SEARCH_TOKEN) private readonly searchRepository: SearchRepository,\n    @Optional() @Inject(STRUCTURE_TOKEN) private readonly structureRepository: StructureRepository\n  ) {\n    if ([searchRepository].includes(null)) {\n      throw new Error(\n        'Cannot import `StructureListModule` without calling `forRoot` with valid parameters: you must provide defined `searchRepository` and `structureRepository`.'\n      );\n    }\n  }\n}\n","import { Module } from './module.model';\n\nexport class Category {\n  name: string;\n  surname: string;\n  id: string;\n  modules: Module[];\n\n  constructor(obj?: any) {\n    Object.assign(this, obj, {\n      modules:\n        obj && obj.modules\n          ? obj.modules.map((module) => new Module(module.display_id ? module.display_id : module.id, module.text, module.text))\n          : null\n    });\n  }\n\n  public isBaseSkills(): boolean {\n    return this.id === 'baseSkills';\n  }\n\n  public isRigthtsAccess(): boolean {\n    return this.id === 'accessRight';\n  }\n\n  public isParentingHelp(): boolean {\n    return this.id === 'parentingHelp';\n  }\n\n  public isDigitalCultureSecurity(): boolean {\n    return this.id === 'digitalCultureSecurity';\n  }\n\n  public isSocialAndProfessional(): boolean {\n    return this.id === 'socialAndProfessional';\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MapService","i2","i3","i4","i1","i6.ModalFilterComponent","i1.PrintService","i6.LogoCardComponent"],"mappings":"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"}