diff --git a/src/app/shared/components/create-account-form/create-account-form.component.html b/src/app/shared/components/create-account-form/create-account-form.component.html index 06831aa70c7e05b461d2c0a42e017d035ca29040..6b547d7fdbb4ded4c7e829cf8e53341366c0c387 100644 --- a/src/app/shared/components/create-account-form/create-account-form.component.html +++ b/src/app/shared/components/create-account-form/create-account-form.component.html @@ -1,44 +1,90 @@ <form [formGroup]="accountForm" *ngIf="accountForm" (ngSubmit)="onSubmit(accountForm)"> - <div class="form-group"> - <label for="email">Email</label> - <input type="email" autocomplete="on" formControlName="email" class="form-control" /> - <app-validator-form *ngIf="submitted" [control]="getAccountControl('email')"></app-validator-form> + <div class="form-group" fxLayout="column"> + <label for="email">Courriel personnel</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input type="text" autocomplete="on" formControlName="email" class="form-input" /> + <img *ngIf="f.email.invalid && f.email.value" src="../../assets/form/notvalidate.svg" alt="logo invalid" /> + </div> </div> - <div class="form-group"> + <div class="form-group" fxLayout="column"> <label for="surname">Nom</label> - <input type="text" formControlName="surname" class="form-control" /> - <app-validator-form *ngIf="submitted" [control]="getAccountControl('surname')"></app-validator-form> + <div fxLayout="row" fxLayoutGap="13px"> + <input type="text" autocomplete="on" formControlName="surname" class="form-input" /> + <img *ngIf="f.surname.invalid && f.surname.value" src="../../assets/form/notvalidate.svg" alt="logo invalid" /> + </div> </div> - <div class="form-group"> + <div class="form-group" fxLayout="column"> <label for="name">Prénom</label> - <input type="text" formControlName="name" class="form-control" /> - <app-validator-form *ngIf="submitted" [control]="getAccountControl('name')"></app-validator-form> + <div fxLayout="row" fxLayoutGap="13px"> + <input type="text" autocomplete="on" formControlName="name" class="form-input" /> + <img *ngIf="f.name.invalid && f.name.value" src="../../assets/form/notvalidate.svg" alt="logo invalid" /> + </div> </div> - <div class="form-group"> + <div class="form-group" fxLayout="column"> <label for="phone">Téléphone</label> - <input type="text" formControlName="phone" class="form-control" (input)="modifyPhoneInput($event.target.value)" /> - <app-validator-form *ngIf="submitted" [control]="getAccountControl('phone')"></app-validator-form> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + autocomplete="on" + (input)="modifyPhoneInput($event.target.value)" + formControlName="phone" + class="form-input" + /> + <img *ngIf="f.phone.invalid && f.phone.value" src="../../assets/form/notvalidate.svg" alt="logo invalid" /> + </div> </div> - <div class="form-group"> + <div class="form-group password" fxLayout="column"> <label for="password">Mot de passe</label> - <input type="password" autocomplete="on" formControlName="password" class="form-control" /> - <app-validator-form - *ngIf="submitted" - [nameControl]="'password'" - [control]="getAccountControl('password')" - ></app-validator-form> + <p [ngClass]="{ invalid: f.password.invalid && f.password.value }"> + Le mot de passe doit contenir au minimum : 8 caractères dont un caractère spécial, un caractère en majuscule et un + chiffre. + </p> + <div fxLayout="row" fxLayoutGap="13px"> + <input + [type]="isShowPassword ? 'text' : 'password'" + autocomplete="on" + formControlName="password" + class="form-input" + /> + <img + (click)="toggleShowPassword()" + class="eyePassword" + src="../../assets/form/eyePassword.svg" + alt="logo eyePassword" + /> + <img *ngIf="f.password.invalid && f.password.value" src="../../assets/form/notvalidate.svg" alt="logo invalid" /> + </div> </div> - <div class="form-group"> + <div class="form-group password" fxLayout="column"> <label for="confirmPassword">Confirmation du mot de passe</label> - <input type="password" autocomplete="on" formControlName="confirmPassword" class="form-control" /> - <app-validator-form - *ngIf="submitted" - [nameControl]="'password'" - [control]="getAccountControl('confirmPassword')" - ></app-validator-form> + <div fxLayout="row" fxLayoutGap="13px"> + <input + [type]="isShowConfirmPassword ? 'text' : 'password'" + autocomplete="on" + formControlName="confirmPassword" + class="form-input" + /> + <img + (click)="toggleShowConfirmPassword()" + class="eyePassword" + src="../../assets/form/eyePassword.svg" + alt="logo eyePassword" + /> + <img + *ngIf="f.confirmPassword.invalid && f.confirmPassword.value" + src="../../assets/form/notvalidate.svg" + alt="logo invalid" + /> + </div> </div> - - <div class="form-group"> - <button class="btn btn-primary" type="submit">Valider</button> + <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center"> + <button + type="submit" + class="btn" + [disabled]="accountForm.invalid || loading" + [ngClass]="{ invalid: accountForm.invalid || loading }" + > + Valider + </button> </div> </form> diff --git a/src/app/shared/components/create-account-form/create-account-form.component.scss b/src/app/shared/components/create-account-form/create-account-form.component.scss index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0beea76df130b6b1bd58a9a22950f302b63ac1df 100644 --- a/src/app/shared/components/create-account-form/create-account-form.component.scss +++ b/src/app/shared/components/create-account-form/create-account-form.component.scss @@ -0,0 +1,35 @@ +@import '../../../../assets/scss/typography'; +@import '../../../../assets/scss/color'; +.form-group { + margin-bottom: 26px; + label { + margin-bottom: 4px; + @include cn-regular-14; + color: $grey-2; + } + input { + width: 100%; + margin-right: 39px; + } + &.password { + p { + @include cn-regular-14; + color: $grey-3; + margin-top: 0; + margin-bottom: 4px; + padding-right: 39px; + &.invalid { + color: $orange-warning; + } + } + .eyePassword { + cursor: pointer; + margin-right: 39px; + } + } +} +button { + &.invalid { + opacity: 0.4; + } +} diff --git a/src/app/shared/components/create-account-form/create-account-form.component.ts b/src/app/shared/components/create-account-form/create-account-form.component.ts index 4363e6774c5705d84b8a9091a448cb04b24a15dd..702924838d04cc8c4fb06b91dfaf88d291e8cb70 100644 --- a/src/app/shared/components/create-account-form/create-account-form.component.ts +++ b/src/app/shared/components/create-account-form/create-account-form.component.ts @@ -1,5 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms'; +import { Regex } from '../../enum/regex.enum'; import { MustMatch } from '../../validator/form'; @Component({ @@ -11,14 +12,16 @@ export class CreateAccountFormComponent implements OnInit { constructor() {} public accountForm: FormGroup; public submitted: boolean = false; + public isShowConfirmPassword = false; + public isShowPassword = false; @Output() public submitForm = new EventEmitter<FormGroup>(); ngOnInit(): void { this.accountForm = new FormGroup( { - email: new FormControl('', Validators.required), - name: new FormControl('', Validators.required), - surname: new FormControl('', Validators.required), + email: new FormControl('', [Validators.required, Validators.pattern(Regex.email)]), + name: new FormControl('', [Validators.required, Validators.pattern(Regex.textWithoutNumber)]), + surname: new FormControl('', [Validators.required, Validators.pattern(Regex.textWithoutNumber)]), phone: new FormControl('', [Validators.required, Validators.pattern('([0-9]{2} ){4}[0-9]{2}')]), //NOSONAR password: new FormControl('', [ Validators.required, @@ -30,6 +33,11 @@ export class CreateAccountFormComponent implements OnInit { ); } + // getter for form fields + get f(): { [key: string]: AbstractControl } { + return this.accountForm.controls; + } + public onSubmit(accountForm: FormGroup) { this.submitted = true; if (accountForm.valid) { @@ -50,4 +58,10 @@ export class CreateAccountFormComponent implements OnInit { this.accountForm.get('phone').setValue(phoneNoSpace.replace(/(?!^)(?=(?:\d{2})+$)/g, ' ')); //NOSONAR } } + public toggleShowConfirmPassword(): void { + this.isShowConfirmPassword = !this.isShowConfirmPassword; + } + public toggleShowPassword(): void { + this.isShowPassword = !this.isShowPassword; + } } diff --git a/src/app/shared/components/modal-confirmation/modal-confirmation.component.html b/src/app/shared/components/modal-confirmation/modal-confirmation.component.html index fe2cf5816fa77d06b2bc2b360e1338ee3f766c0f..d2bc29320a9ffd3cafaf17d0b5d1bc5597795618 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.html +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.html @@ -1,10 +1,10 @@ -<div *ngIf="openned" class="modalExitContainer"> +<div *ngIf="openned" class="modalBackground"> <div class="modal"> <div class="contentModal" fxLayout="column" fxLayoutAlign="space-around center"> <h3>ATTENTION</h3> <p>{{ content }}</p> <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center"> - <button class="btn leave" (click)="closeModal(true)">Confirmer</button> + <button class="btn confirm" (click)="closeModal(true)">Confirmer</button> <button class="btn" (click)="closeModal(false)">Annuler</button> </div> </div> diff --git a/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss b/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss index 5411fa4841b56477a124bdf89333d329d2a31dfc..5f111d0b57f48fb94e8b7d3c564436bf76760667 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss @@ -3,56 +3,12 @@ @import '../../../../assets/scss/shapes'; @import '../../../../assets/scss/z-index'; -.modalExitContainer { - width: 100%; - height: 100%; - z-index: $modal-confirmation-z-index; - position: absolute; - content: ''; - top: 0; - background-color: $modal-background; - .modal { - .contentModal { - width: 100%; - background: $white; - padding: 35px 20px 18px 20px; - h3 { - @include cn-bold-18; - color: $orange-warning; - } - p { - @include cn-bold-16; - color: $grey-1; - text-align: center; - } - .footerModal { - width: 100%; - margin-top: 14px; - @include cn-bold-16; - .btn { - background: $secondary-color; - border-radius: 4px; - outline: none; - cursor: pointer; - border: 0; - color: $white; - height: 40px; - @include btn-bold; - width: 149px; - &.leave { - background: none; - color: $grey-1; - text-decoration: underline; - } - } - } - } - width: 350px; - margin: auto; - border-radius: 6px; - @include background-hash; - border: 1px solid $grey-4; - margin-top: 50vh; - transform: translateY(-50%); - } +h3 { + @include cn-bold-18; + color: $orange-warning; +} +p { + @include cn-bold-16; + color: $grey-1; + text-align: center; } diff --git a/src/app/shared/components/signin-modal/signin-modal.component.html b/src/app/shared/components/signin-modal/signin-modal.component.html index d8d32764aff38dc22474a6c36b8ab0cc1b452541..a0d11538c3a377ca38f6499c943291fa6a55cf53 100644 --- a/src/app/shared/components/signin-modal/signin-modal.component.html +++ b/src/app/shared/components/signin-modal/signin-modal.component.html @@ -1,17 +1,25 @@ -<div class="cModal" [ngClass]="openned ? 'oModal' : ''"> - <div (clickOutside)="closeModal()" fxLayout="column" fxLayoutAlign="center center"> - <div class="ico-close-wrapper"> - <div (click)="closeModal()" class="ico-close-details"></div> - </div> - <h4>Inscription</h4> - <div *ngIf="!success"> - <app-create-account-form (submitForm)="onSubmit($event)"></app-create-account-form> - </div> - <div *ngIf="userAlreadyExist">Cette addresse mail est déjà utilisée</div> - <div *ngIf="success"> - <p> - Un mail de confirmation vous a été envoyé. Merci de valider votre addresse mail avant de pouvoir vous connecter. - </p> +<div *ngIf="openned" class="modalBackground"> + <div class="modal"> + <div (clickOutside)="closeModal(false)" class="contentModal" fxLayout="column" fxLayoutAlign="space-around start"> + <div class="ico-close" fxLayout="row" fxLayoutAlign="end center"> + <div class="ico-close-wrapper"> + <div (click)="closeModal()" class="ico-close-details"></div> + </div> + </div> + + <div class="form"> + <h3 *ngIf="!success">S'inscrire</h3> + <div class="emailAlreadyUse" *ngIf="userAlreadyExist && !success">Cette addresse mail est déjà utilisée</div> + <div *ngIf="!success"> + <app-create-account-form (submitForm)="onSubmit($event)"></app-create-account-form> + </div> + <div *ngIf="success"> + <p> + Un mail de confirmation vous a été envoyé. Merci de valider votre addresse mail avant de pouvoir vous + connecter. + </p> + </div> + </div> </div> </div> </div> diff --git a/src/app/shared/components/signin-modal/signin-modal.component.scss b/src/app/shared/components/signin-modal/signin-modal.component.scss index a73c0f1c2f0d29c8bf9352db5c3251ee1cdfde02..529354b01162d978a359f67b07f344afaee3ddd9 100644 --- a/src/app/shared/components/signin-modal/signin-modal.component.scss +++ b/src/app/shared/components/signin-modal/signin-modal.component.scss @@ -1,40 +1,21 @@ @import '../../../../assets/scss/typography'; @import '../../../../assets/scss/color'; -@import '../../../../assets/scss/buttons'; -@import '../../../../assets/scss/z-index'; -@import '../../../../assets/scss/hyperlink'; -.cModal { - position: fixed; - z-index: $modal-z-index; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: $modal-background; - display: none; + +.ico-close { + width: 100%; } -.cModal > div { - max-width: 450px; - position: relative; - top: 40%; - left: 50%; - transform: translate(-50%, -50%); - background: $white; - text-align: center; - border-radius: 4px; - @include cn-bold-16; - p { - padding: 30px 48px 0 40px; - } -} -.oModal { - display: block; +h3 { + @include cn-bold-24; + color: $black; + margin-top: 0; } -.ico-close-wrapper { - position: absolute; - top: -10px; - right: -10px; +.form { + max-width: 391px; + margin: auto; + width: 100%; } -.ico-close-details { - opacity: 1; +.emailAlreadyUse { + color: $orange-warning; + text-align: center; + margin-bottom: 10px; } diff --git a/src/app/shared/components/signup-modal/signup-modal.component.html b/src/app/shared/components/signup-modal/signup-modal.component.html index 537ae6c49902a679f7c79a6b2e33130f103f27ec..91900cf36312f7a593f372e86e14eb75217f1e3d 100644 --- a/src/app/shared/components/signup-modal/signup-modal.component.html +++ b/src/app/shared/components/signup-modal/signup-modal.component.html @@ -1,47 +1,62 @@ -<div class="cModal" [ngClass]="openned ? 'oModal' : ''"> - <div (clickOutside)="closeModal()" fxLayout="column" fxLayoutAlign="center center"> - <div class="ico-close-wrapper"> - <div (click)="closeModal()" class="ico-close-details"></div> - </div> - <h4 class="card-header">Connexion</h4> - <div class="card-body"> - <form [formGroup]="loginForm" (ngSubmit)="onSubmit()"> - <div class="form-group"> - <label for="username">Email</label> - <input - type="text" - formControlName="username" - autocomplete="on" - class="form-control" - [ngClass]="{ 'is-invalid': submitted && f.username.errors }" - /> - <div *ngIf="submitted && f.username.errors" class="invalid-feedback"> - <div *ngIf="f.username.errors.required">Identifiant requis</div> - </div> +<div *ngIf="openned" class="modalBackground"> + <div class="modal"> + <div (clickOutside)="closeModal(false)" class="contentModal" fxLayout="column" fxLayoutAlign="space-around start"> + <div class="ico-close" fxLayout="row" fxLayoutAlign="end center"> + <div class="ico-close-wrapper"> + <div (click)="closeModal()" class="ico-close-details"></div> </div> - <div class="form-group"> - <label for="password">Mot de passe</label> - <input - type="password" - formControlName="password" - autocomplete="on" - class="form-control" - [ngClass]="{ 'is-invalid': submitted && f.password.errors }" - /> - <div *ngIf="submitted && f.password.errors"> - <div *ngIf="f.password.errors.required">Mot de passe requis</div> + </div> + + <div class="form"> + <h3>Se connecter</h3> + <form [formGroup]="loginForm" (ngSubmit)="onSubmit()"> + <div class="form-group" fxLayout="column"> + <label for="email">Courriel personnel</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input type="text" autocomplete="on" formControlName="email" class="form-input" /> + <svg *ngIf="f.email.invalid && f.email.value" class="notValidate" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#notValidate'"></use> + </svg> + </div> </div> - </div> - <div *ngIf="authFailed">Identifiant ou mot de passe invalide</div> - <div> - <button [disabled]="loading"> - <span *ngIf="loading"></span> - Login - </button> - <button (click)="sendSwitchToSignIn()">Inscription</button> - </div> - <a (click)="swithToResetPassword()">Mot de passe oublié</a> - </form> + <div class="form-group password" fxLayout="column"> + <label for="password">Mot de passe</label> + <p [ngClass]="{ invalid: f.password.invalid && f.password.value }"> + Le mot de passe doit contenir au minimum : 8 caractères dont un caractère spécial, un caractère en + majuscule et un chiffre. + </p> + <div fxLayout="row" fxLayoutGap="13px"> + <input + [type]="isShowPassword ? 'text' : 'password'" + autocomplete="on" + formControlName="password" + class="form-input" + /> + <svg (click)="toggleShowPassword()" class="eyePassword" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#eyePassword'"></use> + </svg> + <svg *ngIf="f.password.invalid && f.password.value" class="notValidate" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#notValidate'"></use> + </svg> + </div> + <div class="invalid" *ngIf="authFailed">Identifiant ou mot de passe invalide</div> + </div> + <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center"> + <button class="btn confirm" (click)="swithToResetPassword()">Mot de passe oublié</button> + <button + type="submit" + class="btn" + [disabled]="loginForm.invalid || loading" + [ngClass]="{ invalid: loginForm.invalid || loading }" + > + Connexion + </button> + </div> + <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center"> + <button class="btn register" (click)="sendSwitchToSignIn()">Je n’ai pas encore de compte</button> + </div> + </form> + </div> </div> </div> </div> diff --git a/src/app/shared/components/signup-modal/signup-modal.component.scss b/src/app/shared/components/signup-modal/signup-modal.component.scss index a73c0f1c2f0d29c8bf9352db5c3251ee1cdfde02..e5ae20ec96de3a93f39dd838a9960550b74b7892 100644 --- a/src/app/shared/components/signup-modal/signup-modal.component.scss +++ b/src/app/shared/components/signup-modal/signup-modal.component.scss @@ -3,38 +3,76 @@ @import '../../../../assets/scss/buttons'; @import '../../../../assets/scss/z-index'; @import '../../../../assets/scss/hyperlink'; -.cModal { - position: fixed; - z-index: $modal-z-index; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: $modal-background; - display: none; + +.ico-close { + width: 100%; } -.cModal > div { - max-width: 450px; - position: relative; - top: 40%; - left: 50%; - transform: translate(-50%, -50%); - background: $white; - text-align: center; - border-radius: 4px; - @include cn-bold-16; - p { - padding: 30px 48px 0 40px; - } +.invalid { + color: $orange-warning; } -.oModal { - display: block; +h3 { + @include cn-bold-24; + color: $black; + margin-top: 0; } -.ico-close-wrapper { - position: absolute; - top: -10px; - right: -10px; +.form { + max-width: 391px; + margin: auto; } -.ico-close-details { - opacity: 1; + +.form-group { + margin-top: 26px; + .notValidate { + min-width: 26px; + width: 26px; + height: 40px; + } + label { + margin-bottom: 4px; + @include cn-regular-14; + color: $grey-2; + } + input { + width: 100%; + margin-right: 39px; + } + &.password { + margin-bottom: 39px; + p { + @include cn-regular-14; + color: $grey-3; + margin-top: 0; + margin-bottom: 4px; + padding-right: 39px; + &.invalid { + color: $orange-warning; + } + } + .eyePassword { + cursor: pointer; + margin-right: 39px; + width: 24px; + height: 40px; + stroke: $grey-3; + fill: $grey-3; + } + } +} +.footerModal { + padding-right: 39px; + button { + width: 100% !important; + &.invalid { + opacity: 0.4; + } + &.confirm { + font-size: 14px; + } + &.register { + background: $white; + border: 1px solid $grey-4; + color: $secondary-color; + height: 38px; + } + } } diff --git a/src/app/shared/components/signup-modal/signup-modal.component.ts b/src/app/shared/components/signup-modal/signup-modal.component.ts index 3d70b98aeb373a6b83cd9679c00cec138305f346..eb03ae8924c1ad037628ecdb7a4cbfe776bb0a59 100644 --- a/src/app/shared/components/signup-modal/signup-modal.component.ts +++ b/src/app/shared/components/signup-modal/signup-modal.component.ts @@ -3,6 +3,7 @@ import { FormGroup, FormBuilder, Validators, AbstractControl } from '@angular/fo import { ActivatedRoute, Router } from '@angular/router'; import { first } from 'rxjs/operators'; import { AuthService } from '../../../services/auth.service'; +import { Regex } from '../../enum/regex.enum'; @Component({ selector: 'app-signup-modal', @@ -15,7 +16,7 @@ export class SignUpModalComponent implements OnInit { public submitted = false; public authFailed = false; public returnUrl: string; - + public isShowPassword = false; constructor( private formBuilder: FormBuilder, private route: ActivatedRoute, @@ -28,8 +29,14 @@ export class SignUpModalComponent implements OnInit { ngOnInit(): void { this.loginForm = this.formBuilder.group({ - username: ['', Validators.required], - password: ['', Validators.required], + email: ['', [Validators.required, Validators.pattern(Regex.email)]], + password: [ + '', + [ + Validators.required, + Validators.pattern(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})/), //NOSONAR + ], + ], }); // get return url from route parameters or default to '/' this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/'; @@ -60,10 +67,9 @@ export class SignUpModalComponent implements OnInit { if (this.loginForm.invalid) { return; } - this.loading = true; this.authService - .login(this.f.username.value, this.f.password.value) + .login(this.f.email.value, this.f.password.value) .pipe(first()) .subscribe( () => { @@ -76,4 +82,8 @@ export class SignUpModalComponent implements OnInit { } ); } + + public toggleShowPassword(): void { + this.isShowPassword = !this.isShowPassword; + } } diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 4b583444aee071e61035d2d63fdc558c69f37ed0..e81f41f7b908f8a64cd22c6b33c646fd3144bc84 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -324,4 +324,16 @@ <path d="M16 6L8 12.5L16 19" fill="none" stroke-linecap="round" stroke-linejoin="round"/> </symbol> +<symbol id="eyePassword" viewBox="0 0 22 16" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M7.99519 3.00001C8.83101 2.37183 9.87111 2 11 2C13.7667 2 16 4.23333 16 7C16 9.76667 13.7667 12 11 12C8.23333 12 6 9.76667 6 7C6 6.5747 6.05278 6.162 6.15215 5.76809C6.45257 6.49223 7.16566 7 8 7C9.10667 7 10 6.10667 10 5C10 3.89333 9.10667 3 8 3C7.9984 3 7.9968 3 7.99519 3.00001Z" stroke="none"/> +<path d="M1 8C2.57273 3.90267 6.45455 1 11 1C15.5455 1 19.4273 3.90267 21 8" fill="none" stroke-width="1.5" stroke-linecap="round"/> +<path d="M1 8C2.57273 12.0973 6.45455 15 11 15C15.5455 15 19.4273 12.0973 21 8" fill="none" stroke-width="1.5" stroke-linecap="round"/> +</symbol> + +<symbol id="notValidate" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="13" cy="13" r="13" fill="#DA6C2E"/> +<path d="M13.25 14.5L13.25 6.00001" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M13.25 20.6066L13.25 20" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> +</symbol> + </svg> \ No newline at end of file diff --git a/src/assets/scss/_z-index.scss b/src/assets/scss/_z-index.scss index 18c12fc2c0511495842353125e55957dbf5b2e49..fc1ca81b6c627868b3859b58b1ae03543000d7b1 100644 --- a/src/assets/scss/_z-index.scss +++ b/src/assets/scss/_z-index.scss @@ -6,5 +6,4 @@ $menu-phone-z-index: 1003; $structure-details-z-index: 1001; // Modals (filters/confirmationPopup/authen/...) -$modal-z-index: 1002; -$modal-confirmation-z-index: 1004; +$modal-z-index: 1004; diff --git a/src/styles.scss b/src/styles.scss index 25c9dd89ed29725762f2fcff2a38ea94fe8b6225..40a51cd1c231fe665e337bcefd1174a2c4678e6d 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -1,6 +1,7 @@ /* You can add global styles to this file, and also import other style files */ @import 'assets/scss/typography'; +@import 'assets/scss/z-index'; @import 'assets/scss/color'; @import 'assets/scss/breakpoint'; @import 'assets/scss/icons'; @@ -182,3 +183,54 @@ button { display: none !important; } } + +// Modal + +.modalBackground { + width: 100%; + height: 100%; + z-index: $modal-z-index; + position: absolute; + content: ''; + top: 0; + background-color: $modal-background; + .modal { + max-height: 90%; + overflow: auto; + .contentModal { + width: 100%; + background: $white; + padding: 35px 20px 18px 20px; + } + .footerModal { + width: 100%; + margin-top: 14px; + @include cn-bold-16; + .btn { + background: $secondary-color; + border-radius: 4px; + outline: none; + cursor: pointer; + border: 0; + color: $white; + height: 40px; + @include btn-bold; + width: 149px; + &.confirm { + background: none; + color: $grey-1; + text-decoration: underline; + } + } + } + min-width: 350px; + width: 80%; + max-width: 560px; + margin: auto; + border-radius: 6px; + @include background-hash; + border: 1px solid $grey-4; + margin-top: 50vh; + transform: translateY(-50%); + } +}