diff --git a/src/app/shared/components/modal/modal-type.enum.ts b/src/app/shared/components/modal/modal-type.enum.ts new file mode 100644 index 0000000000000000000000000000000000000000..2dedc045ed2b8cad19c0c2f74c62a9794c310cbe --- /dev/null +++ b/src/app/shared/components/modal/modal-type.enum.ts @@ -0,0 +1,4 @@ +export enum AppModalType { + information = 1, + confirmation = 2, +} diff --git a/src/app/shared/components/modal/modal.component.html b/src/app/shared/components/modal/modal.component.html index 44094a5b8ae11d23fda1f3e476ac33543a2b7ed0..c482f44e9af9d181d130cbaf190be0f446c3c7f1 100644 --- a/src/app/shared/components/modal/modal.component.html +++ b/src/app/shared/components/modal/modal.component.html @@ -1,15 +1,25 @@ <div class="cModal" [ngClass]="openned ? 'oModal' : ''"> - <div (clickOutside)="closeModal()"> + <div (clickOutside)="closeModal(false)"> <p>{{ content }}</p> - <footer class="footer"> + <div *ngIf="modalType && modalType === modalTypeEnum.information" class="footer"> <a - (click)="closeModal()" + (click)="closeModal(false)" href="https://services.formulaireextranet.grandlyon.com/saisie-fiche-structure/" tabindex="0" target="_blank" rel="noreferrer noopener" >Continuer vers le formulaire</a > - </footer> + </div> + <div + *ngIf="this.modalType && this.modalType === modalTypeEnum.confirmation" + fxLayout="row" + fxLayoutAlign="center" + fxLayoutGap="20px" + class="footer" + > + <a (click)="closeModal(false)" tabindex="0">Annuler</a> + <button (click)="closeModal(true)">Confirmer</button> + </div> </div> </div> diff --git a/src/app/shared/components/modal/modal.component.scss b/src/app/shared/components/modal/modal.component.scss index 5d12fa7647408b644a3339d0dbd7ec6b085d915a..412a482e456972c34da72e14821a458fdafeb057 100644 --- a/src/app/shared/components/modal/modal.component.scss +++ b/src/app/shared/components/modal/modal.component.scss @@ -36,3 +36,6 @@ } padding: 28px; } +button { + @include btn-search-filter; +} diff --git a/src/app/shared/components/modal/modal.component.ts b/src/app/shared/components/modal/modal.component.ts index b4a3566e38eea410d444a0b1a3518ec19c620b7a..539f775a7a38e7a7031672cd49bccaa8ab535272 100644 --- a/src/app/shared/components/modal/modal.component.ts +++ b/src/app/shared/components/modal/modal.component.ts @@ -1,4 +1,5 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { AppModalType } from './modal-type.enum'; @Component({ selector: 'app-modal', @@ -10,10 +11,12 @@ export class ModalComponent implements OnInit { @Input() public openned: boolean; @Input() public content: string; - @Output() closed = new EventEmitter(); + @Input() public modalType: AppModalType; + @Output() closed = new EventEmitter<boolean>(); + public modalTypeEnum = AppModalType; ngOnInit(): void {} - public closeModal(): void { - this.closed.emit(); + public closeModal(value: boolean): void { + this.closed.emit(value); } } diff --git a/src/app/structure-list/components/search/search.component.html b/src/app/structure-list/components/search/search.component.html index fe3bc0e488aa489017e3bab7d9d413ee4c77cae0..565f49826919f7f643e3e49c060ed0c9431d4bf4 100644 --- a/src/app/structure-list/components/search/search.component.html +++ b/src/app/structure-list/components/search/search.component.html @@ -109,6 +109,8 @@ <a (click)="openConfirmationModal()" class="primary right" tabindex="0">Ajouter une structure</a> </div> <app-modal + *ngIf="isConfirmationModalOpen" + [modalType]="modalType.information" [openned]="isConfirmationModalOpen" [content]="confirmationModalContent" (closed)="closeConfirmationModal()" diff --git a/src/app/structure-list/components/search/search.component.ts b/src/app/structure-list/components/search/search.component.ts index d54028a50845dbe74dc8431d7e48c2c49d023d7c..ea832db99e3b0520b6b942b05055387b946c791c 100644 --- a/src/app/structure-list/components/search/search.component.ts +++ b/src/app/structure-list/components/search/search.component.ts @@ -3,6 +3,7 @@ import { FormBuilder, FormGroup } from '@angular/forms'; import { forkJoin } from 'rxjs'; import { GeoJson } from '../../../map/models/geojson.model'; import { GeojsonService } from '../../../services/geojson.service'; +import { AppModalType } from '../../../shared/components/modal/modal-type.enum'; import { TypeModal } from '../../enum/typeModal.enum'; import { Category } from '../../models/category.model'; import { Filter } from '../../models/filter.model'; @@ -23,6 +24,7 @@ export class SearchComponent implements OnInit { } @Output() searchEvent = new EventEmitter(); + public modalType = AppModalType; // Form search input public searchForm: FormGroup; diff --git a/src/app/structure-list/components/structure-details/structure-details.component.html b/src/app/structure-list/components/structure-details/structure-details.component.html index 4a5fabdf3f32be9b0555401c2022677de7475081..30a0aef4d6d12305578c30f984ab4ceb4bb09e82 100644 --- a/src/app/structure-list/components/structure-details/structure-details.component.html +++ b/src/app/structure-list/components/structure-details/structure-details.component.html @@ -92,7 +92,7 @@ > Modifier cette structure </a> - <a *ngIf="profileService.isAdmin()" (click)="deleteStructure()" class="primary" tabindex="0"> + <a *ngIf="profileService.isAdmin()" (click)="toggleDeleteModal()" class="primary" tabindex="0"> Supprimer cette structure </a> </div> @@ -278,3 +278,10 @@ </div> </div> </div> +<app-modal + *ngIf="deleteModalOpenned" + [modalType]="modalType.confirmation" + [openned]="deleteModalOpenned" + [content]="'Voulez-vous vraiment supprimer cette structure ?'" + (closed)="deleteStructure($event)" +></app-modal> diff --git a/src/app/structure-list/components/structure-details/structure-details.component.ts b/src/app/structure-list/components/structure-details/structure-details.component.ts index e714b327bd631a425599019e79a813c56745a539..750e813b618baddbe5d95b1828cb5ddd1edbcd6a 100644 --- a/src/app/structure-list/components/structure-details/structure-details.component.ts +++ b/src/app/structure-list/components/structure-details/structure-details.component.ts @@ -16,6 +16,7 @@ import { ProfileService } from '../../../profile/services/profile.service'; import { User } from '../../../models/user.model'; import { AuthService } from '../../../services/auth.service'; import { PublicCategorie } from '../../enum/public.enum'; +import { AppModalType } from '../../../shared/components/modal/modal-type.enum'; @Component({ selector: 'app-structure-details', templateUrl: './structure-details.component.html', @@ -39,6 +40,8 @@ export class StructureDetailsComponent implements OnInit { public isLoading: boolean = false; public isEditMode: boolean = false; public currentProfile: User = null; + public deleteModalOpenned = false; + public modalType = AppModalType; constructor( private printService: PrintService, @@ -117,10 +120,18 @@ export class StructureDetailsComponent implements OnInit { this.displayForm(); } - public deleteStructure(): void { - this.structureService.delete(this.structure._id).subscribe((res) => { - this.reload(); - }); + public toggleDeleteModal(): void { + this.deleteModalOpenned = !this.deleteModalOpenned; + } + + public deleteStructure(shouldDelete: boolean): void { + console.log('DELETE', shouldDelete); + this.toggleDeleteModal(); + if (shouldDelete) { + this.structureService.delete(this.structure._id).subscribe((res) => { + this.reload(); + }); + } } private reload(): void {